From 9724fc70bcc57ddd7223331acdb1b929efd9b195 Mon Sep 17 00:00:00 2001 From: "xiaohan.yuan" Date: Wed, 21 Oct 2026 14:36:26 +0800 Subject: [PATCH] docs(acceptance): verify B04 native frames and record probe timeout --- docs/协作/B03-验收-01.md | 2 + docs/协作/B04-验收-01.md | 99 + .../app-expanded-after-switch.png | Bin 0 -> 71274 bytes .../evidence/B04-review-01/app-expanded.png | Bin 0 -> 71274 bytes .../evidence/B04-review-01/app-frames.cjs | 22 + .../evidence/B04-review-01/app-preview.png | Bin 0 -> 67449 bytes .../evidence/B04-review-01/app-report.json | 1779 +++++++++++++++++ .../evidence/B04-review-01/build-negative.mjs | 1 + docs/协作/evidence/B04-review-01/build.txt | 660 ++++++ .../evidence/B04-review-01/check-tokens.txt | 29 + .../evidence/B04-review-01/dom-lifecycle.txt | 5 + .../evidence/B04-review-01/dom-report.json | 762 +++++++ docs/协作/evidence/B04-review-01/media.txt | 7 + .../B04-review-01/native-diagnostic.cjs | 32 + .../B04-review-01/native-diagnostic.txt | 13 + .../B04-review-01/native-negative.txt | 17 + .../B04-review-01/native-original.txt | 2 + .../evidence/B04-review-01/native-report.json | 883 ++++++++ .../B04-review-01/native-unthrottled.txt | 13 + .../B04-review-01/regression-results.json | 14 + docs/协作/evidence/B04-review-01/results.json | 14 + .../B04-review-01/test-alignment-dom.txt | 48 + docs/协作/evidence/B04-review-01/test.txt | 37 + 23 files changed, 4439 insertions(+) create mode 100644 docs/协作/B04-验收-01.md create mode 100644 docs/协作/evidence/B04-review-01/app-expanded-after-switch.png create mode 100644 docs/协作/evidence/B04-review-01/app-expanded.png create mode 100644 docs/协作/evidence/B04-review-01/app-frames.cjs create mode 100644 docs/协作/evidence/B04-review-01/app-preview.png create mode 100644 docs/协作/evidence/B04-review-01/app-report.json create mode 100644 docs/协作/evidence/B04-review-01/build-negative.mjs create mode 100644 docs/协作/evidence/B04-review-01/build.txt create mode 100644 docs/协作/evidence/B04-review-01/check-tokens.txt create mode 100644 docs/协作/evidence/B04-review-01/dom-lifecycle.txt create mode 100644 docs/协作/evidence/B04-review-01/dom-report.json create mode 100644 docs/协作/evidence/B04-review-01/media.txt create mode 100644 docs/协作/evidence/B04-review-01/native-diagnostic.cjs create mode 100644 docs/协作/evidence/B04-review-01/native-diagnostic.txt create mode 100644 docs/协作/evidence/B04-review-01/native-negative.txt create mode 100644 docs/协作/evidence/B04-review-01/native-original.txt create mode 100644 docs/协作/evidence/B04-review-01/native-report.json create mode 100644 docs/协作/evidence/B04-review-01/native-unthrottled.txt create mode 100644 docs/协作/evidence/B04-review-01/regression-results.json create mode 100644 docs/协作/evidence/B04-review-01/results.json create mode 100644 docs/协作/evidence/B04-review-01/test-alignment-dom.txt create mode 100644 docs/协作/evidence/B04-review-01/test.txt diff --git a/docs/协作/B03-验收-01.md b/docs/协作/B03-验收-01.md index 5f33f07..f02858d 100644 --- a/docs/协作/B03-验收-01.md +++ b/docs/协作/B03-验收-01.md @@ -107,6 +107,8 @@ PowerShell 夹具使用独立目录,实际新增目录和文件、删除文件 本轮没有确认新的阻塞性产品缺陷;尚缺证据的项目保持“未验证”,不以测试绿灯替代完整验收。建议开发端把 Windows 回环、真实会话授权与完整应用重启探针整理为可维护的正式回归,并继续完成交付记录中的剩余范围。验收探针随报告提供,验收端未将其写入正式 scripts 或产品源码。 +并行复审按用户指定的 `minimax-m3.1-flash-free / max` 启动,但后端子任务以 `max_output_tokens` 错误结束,另外两个没有交付完整报告并已停止。本轮没有把这些未完成的子代理复审算作通过证据;上述运行、截图检查和最终判定均由主对话独立完成。 + ## 7. 证据复跑 在受测 SHA 的隔离检出独立安装并构建。证据中的三个脚本是验收临时探针,读取的都是自身生成的夹具,不依赖本机真实用户数据: diff --git a/docs/协作/B04-验收-01.md b/docs/协作/B04-验收-01.md new file mode 100644 index 0000000..e240a5a --- /dev/null +++ b/docs/协作/B04-验收-01.md @@ -0,0 +1,99 @@ +# B04 验收 01:展开图片的 Windows 连续帧 + +日期:2026-10-21,Asia/Shanghai。受测代码 **`342820690f644fb1cb3b0a76b143dbcd41aac8c4`**,交付记录:[B04-交付-01](B04-交付-01.md),任务 YC-008。 + +**结论:图片地址首帧闪现的核心修复通过本轮 Windows 组件与完整生产应用验证。没有再出现完整 Base64 文本或数千像素瞬间增高。交付的原生验收命令在本机超时,记为测试可移植性问题 T03,不能直接登记原命令通过。** + +这是验收,不是产品开发:未修改产品源码、正式测试脚本、依赖清单或构建配置。所有探针在固定 SHA 的新工作树和 `.tmp` 中运行;只提交本报告及可复核证据。 + +## 1. 环境与基本检查 + +- 新建 `b04-accept-01` 工作树固定检出完整受测 SHA,独立 `npm ci --legacy-peer-deps`,没有复用其他实例的 node_modules 链接。 +- Windows,Node `24.21.0`,npm `11.19.0`,Electron `37.10.3`;显式确认 Electron 运行时可用。 +- `npm run build`、`npm test`、指定 jsdom 后 `npm run test:alignment:dom`、`npm run test:image-lifecycle`、`npm run test:media` 均退出 0。 +- 生命周期回归实际 **159 项断言、85 个 DOM 样本**;alignment offline 11 套、DOM 7 套;媒体回归含图片/URL/下载失败与路径检查。 +- `check:tokens` 仍退出 1,相同六项既存失败,没有改 baseline。B04 没有 CSS 改动。 +- 验证后受测工作树 `git status --short` 为空。未重启用户 dev,未加载或改写用户真实历史消息/图片。 + +结果:[基础命令](evidence/B04-review-01/results.json)、[回归命令](evidence/B04-review-01/regression-results.json)、[生命周期日志](evidence/B04-review-01/dom-lifecycle.txt)、[媒体日志](evidence/B04-review-01/media.txt)、[构建日志](evidence/B04-review-01/build.txt)。 + +## 2. 原生组件夹具:136 项检查、105 个样本 + +按交付命令构建同一个实际 `MessageBubble` / `CompletedFold` / `MarkdownImage` 夹具,在 Electron Chromium 运行。图片为合成的有效 320×180 PNG,附约 18KB 二进制填充,生成约 25KB 的长 Base64,alt 为空。 + +- 覆盖合成会话 A→B→A,每次三个开关循环,真实图片重挂载。 +- 在 layout effect、同步提交、开关前后、连续 requestAnimationFrame 中采样;不是只截稳定图片。 +- 105 个样本最大区域高度 **232px**,最大文字长度 **35 字符**;图片实际解码,naturalWidth=320,存在非零图片高度。 +- 未插入 URI/Base64 文本,没有捕获 renderer error。 +- 组件 wrapper 保留 sandbox:true、contextIsolation:true、网络请求阻断。仅对 QA BrowserWindow 设置 `backgroundThrottling:false`,没有修改产品 CSS、动画或采样断言。 + +结果:[原生报告](evidence/B04-review-01/native-report.json)、[通过日志](evidence/B04-review-01/native-unthrottled.txt)。 + +### T03:原生交付脚本在本机超时 + +原命令: + +```powershell +node node_modules/electron/cli.js scripts/verify-b04-image-native.cjs +``` + +实际退出 1,20 秒截止,报 `Bounded native probe timed out after 20s`。诊断确认夹具已加载,`window.__b04` 存在,没有即时脚本错误,但连续帧未完成。仅添加 console 诊断的副本仍超时;在同一副本增加 `backgroundThrottling:false` 后约 1 秒完成,保留原 20 秒截止与全部断言。 + +[原命令日志](evidence/B04-review-01/native-original.txt)、[诊断日志](evidence/B04-review-01/native-diagnostic.txt)、[验收 wrapper](evidence/B04-review-01/native-diagnostic.cjs)。此处是后台帧节流条件下的脚本可移植性问题,没有证据表明图片仍闪现;也不能把临时 wrapper 通过写成原脚本通过。 + +**开发端后续**:为原生连续帧测试显式约定 QA 窗口帧调度/可见性和截止策略,确保目标平台运行稳定,同时保留真实 rAF 与布局、文字断言。不要靠去掉检查、改成 jsdom 或延长到无限等待来消除失败。 + +### 旧组件负对照 + +在同一新夹具中,仅用 esbuild 临时替换成基线 `0b613e5` 的 `MarkdownImage.tsx`;未改产品文件。相同原生 wrapper 退出 1,首先捕获: + +```text +synthetic-A: layout-before-passive-effects: no URI text +``` + +该 layout 断言抛错后 React 卸载树,后续又报 CompletedFold header 不存在;原始首因在 [负对照日志](evidence/B04-review-01/native-negative.txt) 中保留。这证明探针能抓到修复前的 URI 首帧,退出 1 是期望的旧版失败,不是修复版失败。构建器:[build-negative.mjs](evidence/B04-review-01/build-negative.mjs)。 + +## 3. 完整生产应用:43 项检查、168 个连续样本 + +在新的专用 userData 中保存两条合成历史,启动未修改的生产 main/preload/renderer。图片和消息由探针生成,模型配置指向不可用本地端口,整个测试不发送模型请求。 + +- 选择会话 A→B→A,各进行四次展开/收起,共 **12 次**。 +- 每次记录点击前、点击同步点和之后 12 个真实 rAF,共 **168 个样本**。 +- 样本所在的实际 assistant 区域高度保持 **322.75~357px**,文字最长 **56 字符**。全部无 `data:image/` / `base64,` 文本,无数千像素增高,图片实际解码。 +- 附加 MutationObserver 检查新增文字节点,没有检测到 URI 文本;没有捕获到的 renderer error。 +- 点击实际图片,生产预览打开、解码;点击实际下载按钮,经真实 preload/IPC/下载解码/文件写入通路,下载字节与完整合成 PNG(含填充)逐字节相同。 +- 为避免弹出交互式系统保存框,仅由 QA 启动器替换 `dialog.showSaveDialog` 返回专用测试路径;因此验证了保存通路,**未验证 Windows 原生文件选择框的人工交互**。 +- 预览关闭检查通过;未为截图修改产品样式。 + +实际应用 QA 窗口同样关闭后台节流以保证连续采样。该设置属于测试启动器,不是本次产品改动。 + +证据:[应用报告及全部帧数据](evidence/B04-review-01/app-report.json)、[应用探针](evidence/B04-review-01/app-frames.cjs)、[展开截图](evidence/B04-review-01/app-expanded.png)、[跨会话后展开](evidence/B04-review-01/app-expanded-after-switch.png)、[预览截图](evidence/B04-review-01/app-preview.png)。已人工查看截图,判断主要依据连续样本和 DOM 记录,截图不替代首帧验证。 + +## 4. AC 状态与限制 + +| AC | 判定与层级 | +| --- | --- | +| 1 长 Base64/空 alt 冷挂载 | 实际组件 layout-before-passive-effects、同步提交到原生帧通过;基线负对照能捕获旧行为。 | +| 2 多次开关、切换会话 | 组件夹具与真实生产应用历史夹具均通过。 | +| 3 连续帧、无数千像素尖峰 | Windows 实际布局通过,105+168 样本,不用 jsdom 的 height=0 代替。 | +| 4 失败/非法地址短占位 | 159 项生命周期回归覆盖,媒体/URL 检查通过;所有失败源的真实 Chromium 网络/图片事件矩阵未穷举。 | +| 5 快速切换、过期请求/取消 | DOM 夹具覆盖 src、resolver、host 偏好、A→B→A、迟到成功/失败、卸载、立即 error;真实应用开关/会话切换通过。真实异步宿主故障与全部快速切源排列仍未全测。 | +| 6 预览、下载、安全策略 | 实际预览解码/关闭、实际 IPC 保存字节通过;URL/下载失败回归通过。网络图片真实下载、系统文件框人工交互和全部预览缩放/旋转手势未另行全测。 | + +本轮确认核心 bug 修复有效,T03 留给开发端修正式测试。不能据此声明 WorkBuddy 全界面 1:1,或所有图片源/平台/网络异常场景已验证。未采集原版 WorkBuddy,本轮没有新的 REA Evidence ID。 + +## 5. 复跑 + +固定受测 SHA 独立安装构建后,按交付命令运行 DOM/媒体/夹具构建。验收临时脚本放置位置如下;不要将用户 dev、真实 userData 或正式历史当作夹具: + +```powershell +New-Item -ItemType Directory -Force .tmp/b04-acceptance | Out-Null +Copy-Item docs/协作/evidence/B04-review-01/native-diagnostic.cjs .tmp/b04-acceptance/native-diagnostic.cjs +Copy-Item docs/协作/evidence/B04-review-01/app-frames.cjs .tmp/b04-acceptance/app-frames.cjs +node scripts/test-image-lifecycle.mjs --build-only +# 将上一条实际输出目录传给 wrapper;必须保留 sandbox:true。 +node node_modules/electron/cli.js .tmp/b04-acceptance/native-diagnostic.cjs +node .tmp/b04-acceptance/app-frames.cjs +``` + +原生 wrapper 内部 20 秒截止;完整应用探针内部 60 秒、启动器 70 秒上限,只结束自己创建的进程。本报告推送并核对 SHA 后,将协作窗口交回开发端,后续处理 T03 和未覆盖项;不撤销 B01/B02/B03 的历史边界。 diff --git a/docs/协作/evidence/B04-review-01/app-expanded-after-switch.png b/docs/协作/evidence/B04-review-01/app-expanded-after-switch.png new file mode 100644 index 0000000000000000000000000000000000000000..ad424b63124e61cabdd76a4bcb2c0fefd85b16a3 GIT binary patch literal 71274 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 literal 0 HcmV?d00001 diff --git a/docs/协作/evidence/B04-review-01/app-expanded.png b/docs/协作/evidence/B04-review-01/app-expanded.png new file mode 100644 index 0000000000000000000000000000000000000000..ad424b63124e61cabdd76a4bcb2c0fefd85b16a3 GIT binary patch literal 71274 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 literal 0 HcmV?d00001 diff --git a/docs/协作/evidence/B04-review-01/app-frames.cjs b/docs/协作/evidence/B04-review-01/app-frames.cjs new file mode 100644 index 0000000..33489a0 --- /dev/null +++ b/docs/协作/evidence/B04-review-01/app-frames.cjs @@ -0,0 +1,22 @@ +const fs=require('node:fs/promises'),path=require('node:path'),assert=require('node:assert/strict'); +if(!process.versions.electron){(async()=>{ + const dir=await fs.mkdtemp(path.resolve('.tmp/b04-app-'));for(const n of ['data','home','workspace'])await fs.mkdir(path.join(dir,n));const now=Date.now();const fixture=await fs.readFile('scripts/b04-image-lifecycle-fixture.tsx','utf8');const pixel=fixture.match(/const pixel = '([^']+)'/)[1];const source='data:image/png;base64,'+Buffer.concat([Buffer.from(pixel,'base64'),Buffer.alloc(18000)]).toString('base64'); + const model={id:'b04-model',name:'B04 Offline',providerId:'custom',model:'fixture',protocol:'anthropic',authMode:'none',baseUrl:'http://127.0.0.1:1'};await fs.writeFile(path.join(dir,'data/models.json'),JSON.stringify({version:1,models:[model],selectedModelId:model.id}));await fs.writeFile(path.join(dir,'data/workspaces.json'),JSON.stringify({selectedWorkspaceId:'qa',workspaces:[{id:'qa',name:'QA Workspace',root:path.join(dir,'workspace'),createdAt:now}]})); + const sessions=['a','b'].map((x,i)=>({id:'b04-'+x,title:'Synthetic image '+x,cwd:path.join(dir,'workspace'),workspaceId:'qa',modelId:model.id,agentMode:'craft',permissionMode:'default-sandbox',createdAt:now-i,updatedAt:now-i,messages:[{id:x+'-u',role:'user',content:'Inspect synthetic image '+x,status:'done',createdAt:now-5000},{id:x+'-a',role:'assistant',status:'done',content:'![]('+source+')',createdAt:now-4000,turnDurationMs:2000,parts:[{type:'reasoning',id:x+'-r',text:'Synthetic reasoning before image'},{type:'text',text:'![]('+source+')'}]}]})); + await fs.writeFile(path.join(dir,'data/sessions.json'),JSON.stringify({sessions}));const env={...process.env,YCODE_USER_DATA_DIR:path.join(dir,'data'),YCODE_QA_DIRECTORY:dir,YCODE_SKIP_KERNEL_DATA_RESET:'1',YCODE_DISABLE_GPU:'1',YCODE_DISABLE_SYSTEM_INTEGRATION:'1',B04_APP_DIR:dir,HOME:path.join(dir,'home'),USERPROFILE:path.join(dir,'home')};delete env.ELECTRON_RUN_AS_NODE;delete env.ELECTRON_RENDERER_URL; + const child=require('node:child_process').spawn(require('electron'),[__filename],{env,windowsHide:true,stdio:['ignore','pipe','pipe']});let log='';child.stdout.on('data',x=>log+=x);child.stderr.on('data',x=>log+=x);const timer=setTimeout(()=>child.kill(),70000);const exit=await new Promise(r=>child.on('exit',r));clearTimeout(timer);await fs.writeFile(path.join(dir,'process.txt'),log);console.log(JSON.stringify({directory:dir,exitCode:exit}));if(exit!==0){console.error(log.slice(-6000));process.exitCode=1} +})().catch(e=>{console.error(e);process.exitCode=1})}else{ + const {app,BrowserWindow,dialog}=require('electron'),{pathToFileURL}=require('node:url');const dir=process.env.B04_APP_DIR;app.disableHardwareAcceleration();app.setPath('home',path.join(dir,'home'));app.setPath('downloads',dir);let saveDialogs=0;dialog.showSaveDialog=async()=>{saveDialogs++;return {canceled:false,filePath:path.join(dir,'downloaded.png')}};let win,stage='boot';const errors=[],checks=[],traces=[];const pause=ms=>new Promise(r=>setTimeout(r,ms));const read=s=>win.webContents.executeJavaScript(s);async function wait(s){for(let i=0;i<300;i++){const x=await read(s);if(x)return x;await pause(30)}throw Error('Timeout '+s)}function check(name,value){checks.push({name,pass:!!value});assert.ok(value,name)}async function shot(n){await pause(100);await fs.writeFile(path.join(dir,n+'.png'),(await win.webContents.capturePage()).toPNG())} + const timer=setTimeout(()=>{console.error('Watchdog',stage);app.exit(1)},60000); + ;(async()=>{await import(pathToFileURL(path.resolve('out/main/index.mjs')).href);await app.whenReady();win=BrowserWindow.getAllWindows()[0];win.webContents.setBackgroundThrottling(false);win.setSize(1336,902);win.showInactive();win.webContents.on('console-message',(_e,l,m)=>{if(l>=3)errors.push(m)});await wait('!!document.querySelector(".cr-collapse--completed > .cr-collapse__header")');await read(`window.__b04Mutations=[];window.__b04Error=[];window.addEventListener('error',e=>window.__b04Error.push(e.message));window.__b04Obs=new MutationObserver(records=>{for(const r of records){for(const n of r.addedNodes){const t=n.textContent||'';if(t.includes('base64,')||t.includes('data:image/'))window.__b04Mutations.push({textLength:t.length})}}});window.__b04Obs.observe(document.querySelector('.chat-thread'),{childList:true,subtree:true,characterData:true});true`); + for(const [index,id]of ['b04-a','b04-b','b04-a'].entries()){ + stage=id;const selector=JSON.stringify('[data-session-id="'+id+'"]');await read('document.querySelector('+selector+').click()');await wait('!document.querySelector(".yc-session-skeleton") && !!document.querySelector(".cr-collapse--completed > .cr-collapse__header")');await wait('[...document.querySelectorAll("img.markdown-content__image")].some(x=>x.complete&&x.naturalWidth===320)'); + for(let cycle=0;cycle<4;cycle++){ + const trace=await read(`new Promise(resolve=>{const samples=[];const take=label=>{const region=document.querySelector('.msg--assistant')||document.querySelector('.chat-thread');const text=region.textContent||'';const img=region.querySelector('img.markdown-content__image');samples.push({label,time:performance.now(),height:region.getBoundingClientRect().height,textLength:text.length,uriText:text.includes('base64,')||text.includes('data:image/'),imageHeight:img?.getBoundingClientRect().height||0,decoded:!!img?.complete&&img.naturalWidth===320})};take('before');document.querySelector('.cr-collapse--completed > .cr-collapse__header').click();take('click');let left=12;const frame=()=>{take('frame-'+(12-left));if(--left)requestAnimationFrame(frame);else resolve(samples)};requestAnimationFrame(frame)})`);traces.push({id,index,cycle,samples:trace});check(id+' cycle'+cycle+' no URI text',trace.every(x=>!x.uriText&&x.textLength<1000));check(id+' cycle'+cycle+' no giant height',trace.every(x=>x.height>0&&x.height<2000));check(id+' cycle'+cycle+' decoded image in frames',trace.some(x=>x.decoded&&x.imageHeight>0));if(cycle===0)await shot('session-'+index+'-expanded'); + } + } + check('MutationObserver saw no URI text nodes',!(await read('window.__b04Mutations.length')));check('zero captured renderer errors',errors.length===0&&!(await read('window.__b04Error.length'))); + stage='preview';await read('document.querySelector("img.markdown-content__image").click()');await wait('!!document.querySelector(".wb-image-preview")');check('production image preview opens',true);await wait('document.querySelector(".wb-image-preview img")?.naturalWidth===320');check('preview image decodes',true);await shot('image-preview');await read('document.querySelector(".wb-image-preview [aria-label=下载图片]").click()');let downloaded;for(let i=0;i<200;i++){try{downloaded=await fs.readFile(path.join(dir,'downloaded.png'));if(downloaded.length)break}catch{}await pause(20)}const fixtureText=await fs.readFile('scripts/b04-image-lifecycle-fixture.tsx','utf8');const pixel=fixtureText.match(/const pixel = '([^']+)'/)[1];const expected=Buffer.concat([Buffer.from(pixel,'base64'),Buffer.alloc(18000)]);check('actual image download bytes preserved',downloaded?.equals(expected));check('download traverses native save dialog adapter',saveDialogs===1);await read('document.querySelector(".wb-image-preview [aria-label=关闭预览]").click()');await wait('!document.querySelector(".wb-image-preview")');check('image preview closes',true); + const heights=traces.flatMap(t=>t.samples.map(x=>x.height));await fs.writeFile(path.join(dir,'report.json'),JSON.stringify({codeSha:'342820690f644fb1cb3b0a76b143dbcd41aac8c4',scope:'Unmodified built production main/preload/renderer with synthetic persisted history; 3 session selections, 12 toggles, consecutive real rAF frames; background throttling disabled only for QA window; no model requests',checks,traces,minHeight:Math.min(...heights),maxHeight:Math.max(...heights),errors},null,2));clearTimeout(timer);app.exit(0) + })().catch(async e=>{console.error(stage,e);if(win)await shot('failure').catch(()=>{});await fs.writeFile(path.join(dir,'failure.json'),JSON.stringify({stage,message:String(e),checks,errors},null,2));app.exit(1)}) +} diff --git a/docs/协作/evidence/B04-review-01/app-preview.png b/docs/协作/evidence/B04-review-01/app-preview.png new file mode 100644 index 0000000000000000000000000000000000000000..74f6f19d045141c4cb9b298c3bf123baadc25684 GIT binary patch literal 67449 zcmZsD1yodB*e;*g2#U0nBGRECT?#{Y3|-PPgftALAYH-`(n`+|L-!0I(hNv9Bi-G7 z5Bh!oy?5Pv7K?ReIOois{l5E+=Xo|EDoWD$_n+Ly!NI|ol>w>Y;N0TJ!NCo@djoh! zI@t<_gYys5dkF~@b;$d7I5*l7YpWpAN1fqWY{PK_KZ-rQ%cvBHfdJ@R6;t1Tj-TcyO z*k!DIe0TEBjkjzQ6lZ4gjYp6e@3C{ngzS?dA=i(}Pai1c<7eQpdEQHxo|HWnoGttH z@a?1|6%{Z3qlb-we9fs8uIEoX8*tD3FMrBjVKRh-t^Z*tmP;jkE__-|Y~|2-kN1|d z1`Bx}xm6x9{Ck=7y<51cTrUu@eWME>ZC^VRTklN0jXG3FtFH-IC6Q5vk5qqz-(0hY zR~_Cxxi@K)V^~{af5+8k0S7+fk7Q=k`QjTGFo%7|UEAqf+xeP&wm3k6@P+j@?n_3w z<0ud2n>aX6ab!VnHQZCyr{3F8u6T=WW4pJ>r>mGk9~U;4vSCNYAwp~GP*n215&!#s zvWX1Ey$s|o!<$dee9K)oyrawSj`Q8prN0$gE(5zUWdmCrZSFW7Kd_arWa}uklgpBc zCPqFJ7`bYZd0p5Q3rfB8Ddt?B>E06-&Khz{3#)P8q5B80A8<4dH`=-4{yoR}O>xuZ z@99VOn{TQAo*Lu5Rk`!`bX5G&;J^1(KKkF6f~v;w^C-Yzd6M9El~3=!V(gy&y}mK5 z@M&J|z={noYiI_&Yz#efs5pqNYt>mWRVjC5txz+6$_|Nsqe}cdx_xjkmaR*-$hAfv zA0Hoz^2z2jb#&ySB47>uu~*+=#`Pou6pOLA^_GeFK3f+rFYoZk2(n!J@8^8P*R)lk zrKL^(`t@a^g5Z=>0#j(lfw6qdYf({}2eZ@9|GXfP3H^es0B zJv`c+f^a1weDPaM9Bgd5tt&RCQ4_{5yFDv4SQM3&qaq_~r#1t6ubmw@Y?#5f4!lIg z1O&#$#@?5W#S5^*I`$6_fosTG*VW+r^BqLUkvhl-$40Ork}pw#BLQM#Q_#?G^}ETR zO>g7e17&FclDu?mJySX=Mak0qN!7##Z?Ym7?BDcqi&R3f8`LbRUTkMa{+2;B+I;QC zW@l*ZPf+a6>*{a>i@E8*E%VKLn)XO1`{fASS3*3Am9KfVD~~&GBIx8p<>(pcbevFO zj3z@roJ|f3P03+(JsFIW?ThmF2?-^ju&F%8&KC@hwZ^FiQ`-!zD{!kmjjb|FPq9kq zzzq44y>pLuBZ9s|{&m=l^CamN=+9TKO!^+ZW1eO^HdOtNT{fqmV`)~RE5XCs18hD5 zqI<`cXu~_v*oZ^8F^%%<8?fP}?A;3i%?6~d&U_fPdL1bKJwTazl05#Fbc3RxGh< zlF~wOg*Kdi?@|!WPb8nOo0#3L5MQBlKyPk&U$9P9nZ9c^18Wu6p%{TzKVlg-*OyY$ zWXVDsrPyBd(I8m*X3v~kVMfW5;Z@#j#>ajbQ#!gB^?_T{eJVREq?S2lPU&zpme7>G zb`0;2--s$o*3Ou{f#^g_`_wO?FK(Kiq_0%)l3W|gI7pi%f-`*v(z8(hFe04OraR+K zz6Mx@GfocNLpic`FfMM_CC>oEU@-FR+kh#WXFeRfO$`RT(7<5o=g*&?aPP1rv&gEs zxmEQpIq_2sC1_@gvvlct*Lo?vWMMJAC%h)gt`Jbh65X`^;Z+ConCj9@2)QQaOA5_H z%iv&{7gJ7i1oK{%?E+5<5ON^1{hJ00xg-y1BYJ~}hdvv|4~w!js2frUFkxUNapIP& zP*F4I5t6X3i84@^S?pMMCI<^NxJU4&E0Xu#=NP$fp)aidHPS*-Ed&-5ef&TI!9x0? z^-Fr>eCM;2qvMm^6ZM&bp)DRxL)}+#ngw=2X%_Z=^LT0Al%+P&jZh1b!h1)H_4 zA5#fucM7J>^v9A5=I@(TCIyp=w8>-)OX_!r6!d)~zUgon5M1A(03t0zKV^#!PiR^0 z=7<`YDTG;6l5%Bm_iH#bI@Y(iId z#AvS>*Bt_?ypwNkbTN*8Su6vDZ-I>bK|Dz>OFAj<3rRR{RZNmSs+lktnNhX+F*yi|5E4RWYRuk#i(`8r0|Eskf`nP& z^zvMB84iK%R>Q4<+!j#+Jh2^~A{KOX=%Nlt&JPWKNI6trQ%+F{!I3@?8xekYp`Tcl z2|kIp6rkOGx=a3vq+f5bRWL6+Niol&&SjdKOfrVWf;10-=#0^DVEr`ItEj}Z2$DKl zr_p@H_(XwYI70&sgIKX#dt+nL-2jvCD*F4(X?#iUa~aAg`c5714et5;`>P9$`Y@`Z zku`zHuBE+k25Y>9J&&{{t>~f%smy^Dh1>yMl@S^?aMzO+TNlMvkbCG+wM$lBXi_p2 zh7iuu{6+3T$zkp7JISn_0Y9|gsxm#cSo5NSvEK6&2O;PPEi1cSsu3?#-_?XZ%;cwz zd_)MBQqJrGnY}D_RO)YyN8W9Abd-H9NSPAo>^1&-2cwxNuh7lZeLrD@HC}>0S``Tk z@apJE_?*#W_wuEn&STkk0WsF)lwdj&jnv4lgwSrevki|RJ}bhUjC<2l-`IO|VjmOT zViu+7k!9Q3?`|<>PVWh&$3(<%5}TtUv_gpEJPs`o83n6pQ_(7N+;cODp+}aL#Wk;P zmz$bF0&v;HRksYcOyNFnIdA z8Zb94+ZeIcT)rlTg~davZ}SloP=k@0ONIx?TLc+0XG^uJ>D~*sn?qv}h;7$oewca$ z6g(>;%8khy*3RKA6^VnDe;?Q7v$uBjJ5A!1G1b;fRVPoE?YJQi$^ao!7-dOz>El89 z$fg#^LIN2~zN?gF;TBiz14x1ALO4Ud1FvWoyn`aO1Jn}JGh0z`LZiyTDLQh6EV7{a zThZEl?EHZKU|SQ1V98rMIMwIS!u&c?gPT?88tLaNjZ9BZPfR3ZEY?<6-P4x%IT96~ zL`bpgT5=^yo=s@cr}qk__VAFF68Eg%+b;d0EX_C|h%$S*9cuHMOEQp;DQ3Ez_=PQY zmtwe`sF_^kpQ^WV^ACEyr6&-B3DwmHTJ-y}B77_#KsA}!xyw-+YVoVGMYkpD`@WI7 z#FCK&{`68x!lvf4^!6qJ3DIofWZ`xMG?gs`B*hYC!%5n{4&{ZQ=p7boM!s>y(64o~ zQXLuQ@CmM=Zqvz0w#r)|D}|seTyPRb`IrJ?qCTs7diYN{xQ3=mq04PLwXh8FTF1J4 zDkf3;&*z=8aI4oZ^q$;M>Qs_s$VvRzR==yPfSkKo0?N`#Oi}T&GnN#jk!6&G$u}(K z{3(pzu(O9RK)P4KFYeV%i3$h^aC4Up609a^uz;C}*AEegPJGE2AXb0<`jwo5qR-XY zRHqUS@7Ox3DldQV;6ZssMa|SE!l>PA=7V-jRz>bbHZgZ!d$@IFt=B(t3R#LY;Pw)# z=9g5j*t%YYgR-iI0}9F{u(Aq)xi=#ITH#u+C2&{rEq#JG7=kb0b z(N)@UE&I;875tN$kj77w_o*H@zRRg9HuNS&W?O4zIvN{J(Q z(UA*DRfBSU@r*SX@sz0d5#d6NPGA*(p#`k3u|$pKF=kIR=o64v%p}_qCN6#?KTVok zZM(sAvcJEt5Yi{)A3-WYsIzvi!1kDcvYVr7!fbvKJFRO$5wvS^6AvpArjwpX2aw6g_>)a?(U3rswguED}Dvtf* zJV)T6$2I|#VAbr$kXbNXJ9d#EBu4jgn_}3QYlj1SPGAh~Y=!l*3pCbsuY@YrD=HZk zo3#5)=^34jA)lQ-hLj8K_hO&FOd>~F^Xlyj#s#mVEnV)x-6I`FJn`k;L4`F{LMlAi z7N8VECROtlXse#}_j%;_zxe_3cLR*k9l7s zAtCXg`KJHdz<1W8U-4B_BIzk0jke%?A+*3}4K`-ouC)?&$sT2Ci+z`W&NRut7jo6W z9X=hMQpr!Q%d|bev9!ZkH*y-Nb6Gf{rg-bx;2#f){l1}hxDvxL7J7XzxVgE-k{XNGSeR+5F-&4K2eu95b8%h1X{R!28GX*@& z`?s67dG^0AZI7Q$!#AE#C6>%>j`~|`70^Kcf4%(wzwIwx{d-emtqRyBRnCIkB2_N1 z5a(Zr;2ZBSXCkK&q2n2W|Gxt%W}uAkH5$dCKTQ4S->Zz{cttXLGb`>mc-Kk%izsN9 zEIdDLy?LB{LtysQHR!*ax%M30<>kA^$}EA_{Uv$%m<{FRR|N(lf}rM^?Fz_9U|=8% zWk>;9@f8`T;p93m&N@|S#D*xQSF?3yj?6jshs*FXB#evM(6usUG<0^g-vw=j7mqeZ81 zIE;)F068>iK$=*?|3DYb_3lJ&;a>Y_^uFAK=567t(>0{MtAz2ve-{`U8%C8Q5Z_g- zx{Bxu23Br-YW%@#Zy085Ub#$$_s3a`A^nd52tr?8MVSHSwmG@7vT`q|83uz95fOm~ zfBkxN_oiRdZ?yNBp~nJAP;*J`4;MiLpjCIZnm|7qoVld|9`YfIqg@w%&}`Mv(E0Gs zLpw+ct;*@?zYW(ZO@Mt+AdhIFwIre)p1n% z)%j9@`1elv(?5sLE-c+^17dVmCU#a9*Xn}*a`C^8_LUHrc&_*v^H8A*KVO@K8 zQ!y6%8DsZnY1x!^Hr(rq%D<8*(O|h)mKHljUY#O`viG^zi>|sF&gJ16h}{@Ty)ZF{ zs(_?}yoWxAea4X`gVaLa?TR24?t|ZRMb&cbLDP2m>cKJ!!pHk|1ztV|XEhRa4~F8{ zANaVsyljgN^E*)ARGwZBwBgzy2w>}?YD0Z?W4#{sHwHEMpwZQV5zqmRAR3RbzP`rB zzqhU~xB8IivLUu89+yEvRnc)W5^}oENU_L#v)8V?L(HHbzb$Ej^)OmWEcsTB(^N-O z^@IK0>j!E|5Vvf3EeY``tR!u2ZXQj0DigPilj7;gVdxU4QMp4I2n7y7F#Thb%olXl z%T`>E%zyCRae6>lK?Obg5r9X=q3=Fd;fmHIk=S?|%W>cSkAD@IOrAaT+4c{5NLwT= zPb2KU?N59DEs0y}m8S36>c+;#+S&v~)l2K@uPJbNrrow3+w>8=Mci$t@Zr=VE_G#3 zN!tQXkKclplNFW;haX(E>kgwjceWF^bNOh(K=V^hgO~b}y&Ui28h5IWkdF3m-P0;t zg=z#k{A4e zEi@=?I{9r_Fqv9J{JB6b+5;1S za`Qvc28-sWP}<8--_e#uM|g`E9yux6l~JMfT3IJj+2 zQBkoiidM{VUPfMC{=3TZ<|gUQcd0CegJWYWM`xZ;C<7xS1iUyps;#W7EKJk8w3n?0 zr@|+eWR8Bx$m8DMDZ1xjlx&nM)5rLHF_Jeq)?@tO>x5_Nm;wkCGL!7T zGp2{D86};P#-XWS#9c|nznpkJ3Y_3yh3@19bw6M*F+kz3m{&1*YkE?kKU*=ikTYRHi_ z=i1g*sk*6YEH+&!H#s>uqVnM+3?X<3ss=Z!i zTs&V*p9m&B$a+NBm0a+Ego!Mbe-X7+vm{)`=#R zh*00XxoGghOh?&2GMM;Tei<}a#u6d~wO(8)q}lrJt%O^XtX!*W5m=k`>+M5U$+ObK zo*J_vE^Y~fej5Qiad*U;>q$xeicGSR*2y<7qmRMCKRa}tr>xKN?cG(#+O{rFd%ku) zsc&K+lFy1&i>W?EU+Ax2rfxc1p^?smNb`?xo}F)7Y<<}{Zpj>%%Z&V$Y=mF<`!p`? zI)xOYJ~z(*o^EWqdV139dl_Nx)x36Kr{K~>NlVN3Bw``f5Dtek!#Y5jeL&!UGOW!; zdgu0S{>Z%(uTO72E?H`cmrZQkc}PP=PQJXdBH+CIsI3qkWd%%$4KF9GKV8^E90Wuk z2H1O`O)V*L7;*t498`>gRoBk{5fE)s6sb8Md|lU&q)+AXg7_HsCQ*U_om3*k=?5AV?efmJ!Qv5qqz1YM1z&g}^`H0(<|NrjWBF+j z9iM4l2_<&7yFge$=JN_{iCWeIOV^9un9^gWddK&y%6FnT1O~V%kbC+(w@_8DhS)iy zW!RGXd3+kgs0c=0=HdBm1J3#8X|WYA?~@21)v&z#%TMR+K79NPC3lm&Xl522x8#d+&3b%a2u=Q}8F9W0!M`y(H$g>-&eU zE$Ih&NGmZ{?f%`VmJBA%=>Q-sdU>V1`+9l`&FpJ;NU2o$>2xbJK;L2ga%1<74`iB( z(AMls&ffOD$i{bn8tQ0ZSqp*Pj4PK?VoZzWX8FW}VZ?1^4*i-?6&rDM7A&abU8pDx%2IpA>yF%=uW1sL6Lee}P7NslJ%CJC z9K~I1C`m0}%{RB*AnY5>r426`+#lD9>idNh+hB1?IUS#d1_To`@62ybF~S5AgJ*2+ zC^wAFdTbWTgHt$L#YUb?YS(&uKFxhJ@ym5{`JcI;D9A&pvil{Mi)D-ibro3klNH9P zDeq{C#Nd6e-@jSgk}T2*o1;Wgd|zN8-9;kOy8R=Zw^JNH6BHBSZY>gm_yo z)!r_iSf{vI@mk+pM*#>_P-b`4H&^I-ZU{uJk6^e(wp%jB^>lwlS@Z-HzaXjnn|~9- zhpqRyfbu3Ap!4e7wm5u$w1z*3qn9OaF^~TMAkcnK2a8`Rr;8Tm=j$Qv=&jiR{8XH} zo7VT!xcc(9)ev}ozZ4ryYo3erbbWEdObzl|%TI3Wsc635O5HTn*LVqg2wbRmOaH`u zZ)T)3ilSn3J3zuP+znY_j#g_id6lY^jOn%TI6620z%PK$5*9AFXgB9dG%0cP6DSe9 zY9eA(O5t}nk8`amS!fSAiKN;O-YF8QN}~^zII_pmD03WvH4+m)={0-MN%16C%T$7N zrBPjHHs+FA12!+(B43Z`Q#&0{5onV#zl@W^oW&(zEMOh;YWR5@$_8=T4CT2IMDpGV zKHk~BbXsUuNS^&JS1c9&5dpA@XO}_dpJ45gn#69`djwX0W+Fl2qH=X4z_p0e0Q11kzvn!EEm1jZ?amE^js81gkOn=_>pVUJmvFYF4_4UT*qM1+!czAm0m+rCmh zOywsm4fploQ{&KyrsET<-!&T_bC{iHMV9Xb^!19>ChLCi*E3f$y=bY8)KW?lt`WMAPAhq*SrC94FiDJiU{ zGwrNJE;LyQ`_3C2anI1iqgozsJTA{W{qZ8t(&FGPm%4nE@v$=WlXg|SSc!OZRbspV z@t5R-@qBDs)n8=jNtM(YGsJD^RoPyoxfH5|N>BB7sOJPs4cH+`$jkSREc zo}O0-8~e_er*IOj+E+*_(%oK$vM=E3s>ZKr3Xb6^=J``g>SsSs9LImkTM861! z>f)3|y;2gDf(NaRZpU_eKVb}Nc&37U1UHEfZZ{rx+dTM^me*J4wL3GXL9Z)3nxQ4_ zS$j)s0Aj?y$Us-|skenA=qzY&!xM$S?#$V8pVas1?-Z<|`T9)r>y^V4Xjz$|G>G^v z$2qw8(e2Tb+W)iwTm0LrAyU*EyX3nKs6^uXO?=a%5V~E;(uP`6#h(^=9dAJq(w84L zecm@dRWRHN%TWuT5a|~KNnJLQVXe6dRbMVwp07f&>uH4WPj%`UXY&b4BYP~WjTm|# zPbX(#ufef>eO&U2%Q(*7$RGWN>)LE-nT?Kkfk2AEVO!i?=mMu*N0c(lUNq1QV9%zH zSk8t7B7sbE)RQ9Mba8r+uZ7gq8Rs(X;R~!()e%iMvfioG=V;sWDy$vI?90P$jhxoD zwYKh_ctIeL?<$WZ9jvXbO-wT2@b`W0r9Rd|Ht(JXqML`Sx~mY{Y}U`U&2%<5Hf*h| z0MZ^nK}=0eeHx5}+N>)U_fA@hNYzz6^K@Q~>Q%UmgDrqErPw?Kd9ctqGS5M3?z+I7J{bnGVELW}tXf~&(lcE7e#<)YK4 zg#W^DEeI3NPoYsUD@)J9Ja>O zhp#PF{>CtIh*kZx9;e}ftw@>Tl4~7+l&GPMfUaIN9jWOOC-^lOf3&kKvI&Xwx*L-Mkpd6C2ZOI&kGq(^Ka%x<>7%$%s-zTKvGmQm&oAK zq^G`DGjlg+M}2=6V^&odkY2-DPw5^@1_Z;u@@HvYZYeyAzmbdfs@}E0&rSDD;N#if z$u;mR+x(4g*36gSbDry5K3^cbo>)YT3_U{F>76EH1~|*v)_j-eb&ZAicNI6cqvPY_ zA0Bf%?)BPi@niO>;NF)CbMZ&dwS&=XyN+kwh&Eb@>*| zp=!-gK9fj68wdkT_R&pSvY%d}=?VijBFm7|A~Caret33MgQ11 zLHQ048V_u!-AlgaI~98AxU=VL!TR|E*dB;ckanidgs1V9WOZ-$w%$qFh=xnB8 zEK%oQaUpB5;lrrPMWq!UXZWR&Vrb<+4gQi`cIYxkiedM)botqKK6}&0k#`&mcx8$e z)rz2y5_pYKx(Pj1DkQ39;YC2k4!_n3mve8!gSZaKz+3T21nG9RcL&GVUOZFZTLeJK z#xC(>D%}_C`9=*s7XXrlz1VbXIGfrkqRX~V{Z<6@gMxw?eO5+BMl5mtw=<+O`w|l= z{F}ZZR)3%}G=t{&1K)vEsc31dwAt*c^n}nraXX&l%zhK27Xe`gI@myPrZlz88iyva zd7qML)kLAKr*YMU0f!bFDUfpFaCJjlOt=y!8+?5iz%1O{?!L7<+oEN>lNU|evOLM% zHG@{ZofXP!s>%ik`{kw}R21r;hLCJ=I;t*a;z_dpVSDa76T)s=2Vzt+ zc@;%Ph=5-AX>koG^oqbYSo_f3cqQGZr#RnM>nJrkC_z+iV`8MSEa15P5!UNF%J7{A ztWQA>T5wirnP6B+YgbtCZsf9c8XM*2eVT05HEkf8?KL!x#Y;_NWWhgh9n*+g?9F;=OB-+=GC>$hV|?T`=n{T%ll)|E`EZ9 ziI_!+AcBDAnd`n2>qs>+IH+M{gdH9}1Q5{5O5UipvQ}O4z*otbYouK%VFaefND%a# zilDcvKq=r(ngCv$C+zCo*S7^lp#k`HXRZyD=O``?o?L|Gkuo1nr<;a^@=q}I6 z<`N2~yoELMZh|23Wj)klJ8TzeO3b(Am-b+#|Z?s*LB6 zJp;&b8bcqy?^}R9i&-kB6g-9c*A4(h5FT08p1UvtLGa)~9-=lr0@IZ(Nf&KWl84bS z5_7FX0lha88MWk*YPWODCad;c)2rN@!Bp>1PXQ*mU9(R{4~22Y^`E zV$x^B3yB7U!M3VxIXO8`rUl3S%FUl49;}9DupQv)I}uIMPSQB1pZC|CK2cV|POC}K z`i#GbJ#x8jd9}kj1AdmbEj$O{%_~D1XM@8Yp)HLv5j`D`gX&(!G z$gU3}GBLzaZFm8G^s?g*Jm^exH1*cfmOPLndK1Jd&823~^ak}XwM$pB0rdrZl$LE| zUD;mIJjp;7lL7sFq9}C{pF(r~*n~XLd@MUY_8NU4p!z~Dn~W@am8d{TD#sVbyX;M* z6{8o5kdl&apSRk1nysahINz@R=~>l4NYyp8&HJfs4lbJ4t2c+L|2p|YWWrE;>K8|L)AbY7JB9SHo%CsxqiiydVbG7ls7WaM3$*`)L&2)p8%Tbd=i8AfEQg>V~hpT&R2|2V>6VAHfS zO(|8Ur+P8CAMrEsu>N95BzY>7{U;IhqVSgm-!;PxfL%SQLPxz<=e?Z58xefd{7#GA z01t(}y4dQaoGmgx04SoP^|3Ph`kmG`T3>y|YzTzMMu3N=)~0erjiMz>*?}OPA447- z%%7jCI8TzS+D>BY;>3NoH00hZ_IrL-4nYNXSM}}zBzGI2AF~~;yaijW1$c<$1oVru z{_Cp5SRP_$Hw}C!UM?J4?JyT4c0R-DvlAxCn9)^wezE0y#cFiY89~Wss6AI?P)Ev9 zLNH+v;V)=eS{7pF=N$PoA$6i#*}g)4PN##ONz<}MG{3G1(v&w1GGfHX*5MN}s4-^>o_R_Ds5{b-oe6B8z^5FziD?(}*GF)z*6B!M} z5uy1K!K(sHHztx#O-vmr~tGHx~$m-e4?dxDeUjB`L>xNpEFbp<)rO^Kb2 z^`Z|ekVA+=q}Ku~z^Gl>mW?4AZtC&dN>^ah@c)b#=QS{az*+=&#j7CS<2#b7ng#@2 zr9j6vt<`WklvGJj$@H&G`{TjE0n+#4cxUeFB>n1S&FD&(xP`Vy@s57W@y})44F-DgQMwiC`Jl?|Tqsm5V&n_;ni6-nxk6UeBo!H4d44^Q8I-tX>bc~Hq2T*|z ztpY$bwcvg$rTsd#!Pf<&3Fe8DV?SWCD75$fZ}M1qg@q>pKw@M~%k8Ae9{_uWwb!ID z01D~u?w)!-2>&A(``3&B8$(zqLQYK`XYNr(S;4OpFD)%iR!LEb_upiY)OnpaawOHkG9&t8%N#%t`FT^-5~ z&G;<-EZ)3A>=vKsJ=Rb<*%+qK73Wic0XiP>z0i_WeKc6bbFEoOp1S=pRYH|Gl^~h< z+Vty8dxG6vS8QTdwzfczX7iHV#>VCkPhPLUzzwM034)LYb-euidDQyW6aqI7Z2t-Q zD`Gbmkl)BL6cy#aKB~7<4k#ZtytLOEu#JpG8~l&y-MKgvUmj zp%tI~t1YN+tbc@7&@^I!A=NDmEzE>&qwJ0TvlFEBWh>+%uj8^%#<9|W!h~&;u$-NR zvwl7{frjEeDheOZ|27rmb!L?P;;ZKLHryDZ0?A=r|MMe6#bBrd=eoSnNXvY@z(361 zLgN3a20lr;LG&yrYC4IAk+PIV%muXn88%MG!qR17 z2N4B&Rd#>?9>%D=IaN2Z;i|_*3W#@klYtP_Hg_*ToF>ZB$_k(=YT@t|$$)#$-ReSn zzJbNIs#BDu`(K2ORUeb7nma1nPqNo0*@R8qS4mvStulo+477{7>9d&0Bi^=Qgar2H z4@H_LjhA+^gRJ2Q#8mp9#Fg-9ubx_k&?Xe1qyb2;b#4d1cYy5***!Z@6hIOJo!Iqk z021)WmL1uCd5=sTvSDKrm*|}ejtpk{`3G3k`D;R9CJD-&HmuXg9%k$2UgR zzI2Gb0zAp>I^S$@gpWL7xp)~?-X$TYG~50e)rK8R4pfo`>~h+fYidk0PIk4m=HJ!e>Xl!~c!c)7 zutV0evZ)R&n<;>W@1@iGAFa8;<<6dP7oEb;-QV zqfXt?MJ?~uLYQb994uvc&JH+JM7miN=K93$R=b1}uhi})WA|*|o(=vkE?rwDGlIN) zxBKdPVr=eL{IICH#e3J{dqcT3=^#a*DslF?GSHAS0h+`9+FwiT$cpYGg`|}lFCjV5 zYQ;lIt|$8;T?x#;_slZVFJ{Sll_1MrYua_fUT1GLEYupVeys|XVE2xt>?4DJnnc%J ztl&gzWL17kdyyTxc5zM&hi&*srkmuSw)o;3>`g zW@|GSs85rX$Mq0Dx_oDnTQC~m-p#A$1U6ievio=pvgIW!-d(q2@CkL#(G-SUcXw(JUjh(EOo- zbc##&H(WyEmRN%5&iPZ$sp3?xvZf60?<90Fr8>$>WJdyZNc?`YUSw^XrBMY-D4oIO zhYyvjr&CLZcbc_C*V!p-m5`i|Ca+d$V6hm=bpqUwL^ENUWGad+d4`RkUfR9Ck+@M% z0u;ox(e<(VGA2()1;C!7Wz4QFFXHal@=pBVejY8uM68RTdbRW0O*iUPKh#2_ZBr!7 zhfE&c6zuiw1^4sO^Tm!dBkOzmY@~^h25&&XK72}KNl=5iBnrBqZw(3d+F0tX=rK&E zK?~ET3f52LU8v_S2^4J{gxN0K*I*d)K0~h!?J4r2rYMU&ar2?}*RzYGsSs}-?il1j zEU5~PoBL&3-8{sWcgMd8P)Y$pE6u=dAZ2w6*}A(|t1#X4Z+byFKkBxrUq`R%bH4h; zdG!rZbYC}Sl3Hh8p9ty6#bu|J;evlgVt;Xkx2`vuiT>s#f=r%BMm4eucC_z#E!->J zp6_o%#W^iY`&=~~Ezxk#^SfS#$&>skI8}&bR*H$iU~?TQP3#!pkJJRxfVd1OARKG- z_4M=>emFkSiNAB_j;E(504dp4=q9iP&Fps$Mx-6jxF-LQUETk!_-g+J@=Hk#S1$ zv8ULt6wH4%)D07<39>!Z@ovjsFf_gH8O=S6uaDpRD+2(|@g$>>hNuHVqpOGo)zEhPxctJz>ixIfI9hg;@2` z9Dpw)yA*s}eX~xwX_LC7=bh;+o!JFYG}p#4#(e4j{-k|XNH2o#mYCP^2WjcH<>kB% zvs&nZHCLi@jXqmf5@r$i4#Dw-Pi9}W*S!Z_TcQq=w%>@Oha0?4_uC5};(8LWmxf9? z9*+k*9=k6MVxlgi+^PbTM3jPtD(Vb+?=A#vEEfJMVo7v=%}Pk9%JJ4iKu`ega=AwB zV#qBGa(qR$1=pCHzx%Eby^0nXKTfEpnG{C`C_pL#y|&VrdPyJPv2r^@0kST z8zMfU^IV^&&r83`MnpvhW;TbINijf$^^#Uaoi|AuR>nAmz}<{=(dX*}KKUGkAy$^- z;Y#Tp{1?Ar5LNHuvc0ggi?X_$un4&=o&m~ozYsaxyKtleQ@DH!4Ke#c_R;VBP zA`~bIiqt#uTR%Xbi~rGb+JFIHy}zu1jo$uSuGxqxC6D*hht(Qi<+I5Sqk9XIF z|E;%@AL`&~;v1!<-ubJuG~Rm#X+q3&mF@jk%;Ef>O3?pTG+J!ip550gx+!b#%FQd~ zI=efRPc&=InINAz!eOvVQ;7Ju{&NBAy?dhZNypX}rvlK|{V~(fW0(QtUT>Fr;;6qo zM6PQrq>HZ>Hg4MUNYL~0yy*)%39k@;Y1(~nNRTGKv?>1MzxM$e)n(qgzlB!u6O+=l zaq6iVr{T1GTuC}jxR~p^bni_#>(T7^d(0iI%>f*E?$I4L+9|RI2Qj7I^!nwK@i|~b z$tbmxYJtmlz4X$=4UX`USt01^H;ADp3*OiQd5wdM$x-6Kg57HST$D-t$isCx7lYMG zn)4e%AIzD0V<3qC2q4+2rS=wB~K#0<$#&y!qFCUb%6OMIif?_}n}8}`h!>JQUO^a)b- z`WM~MMQ3WH1tSM`b0@93SXqcB`TJ>4mGFT9AB_j=jlF_^ILE-+k0-Lu2o17+Nb`6m ztg?~9-}Q3YzwWHpkRLg;`#bvRhiKi}FG~B?T2YTDU%L*+LV5EQ3f9!zw(_=&Wsuop zHqAAA&rtDKTdv7U)Xo+4r#besyO}Hgx)z%0_R~vRcW#s&J-t6ua=vT7?(7R7Nq9>h zJiEu4K_gBTFl&smoW2X6o@%8=E_oxx#Tl2OAAte z)%#HN<)Zkf63#x|xDd(bDH|VWP7DvN7A+JZWsOKI!+e zxs?H_|HR$3-S`p65kr}*BH-U>yj_&hRE+y?+*yC=)s=70%Ux0=ujO;}6IdH7WE>WT z0-OfV8QMtkJ6I91+@E!Ey~iGSjKXDji?1ZTcZWQE(6tt0Kfq-}n)#iwcvl7qwRqD+ zOTBd#x!7KjgGrI#CH7aG7m2{KhBm*oed70Zy>=%r-Zs$oro`Xw-}R}~0kzNEIcsY6 zcgDRoE!c2$T9vkKnZeq4@rGPMOGmsEjCGRP_FZ-w)R!&h(QI>pm`c7&UpPaqhRi)y zt2m5Zk7Vv*LuWNX`RlKscgCYr}vmx5!f+z_!zYPB-2RcZ#@0*J% zhyM<@p7wPe(U(EHo~fBl6IjZFJM%<+e_uB4U*@p1q9F1GQ|p&zzst_Z}_lRm-4xY0;#FoP1|#T z4V`&*qi@tNR6F}}yJqU7Yi#!gV^mJjWU_a{pFHq#OJqi(ZCtDYy3mhPB6so0bb30i zqT+ES`!yKD!wG0DPfrilzN-W;dC+w(I7Z9N4`~^>)aBQORXz)Cp=)#CX>fZg8^hKm zm01$%^zM!tv3dT~m+K0^_H9g-3%k*TwD(MAx`d)l>NzLisgcKrz z&|RfoYr}z`mF@{iEi77xapXQ!iO{`$U{b=* z#pO8j<5p&$)$1ol9t&{*<_BmktEQo0OTfO>C@KNRmHup?qacfX@X$F$2%W5z*r9ht zsZ+WV>AlqB0;2Jb&G)Rsw5c5yVXivY7*Rl@AXT;2EsJCmu7R3gg2&Bvm!AJG;@&%| z$*lbvW^~jUQJ4sbQfHzRsY-8wQE5`8O9?1dTIdOc5*wA#~n@&pdy8>;30j@A`i4$8xz?@%CQ#Ip@xGu4`X=?^7XUdm%9-WKr9GdQI#% zYen-E{Jl?G#^vvN;{*`QcjaPUFB_UN|J?snve%y*s3EY1U^R~sXN@YlPda6U`_mKd z>-1MiCPz@2hbwFQzx9Vp=}emL6g^z-HR19NwUi%vEc^-$jh^+hH2*U)gh(Xzq`^AN z3Zx8DLxiq}e}1Zd``XJtKO9(>mo{c>)(iB0*KnaV+*WH5Xq;|m7fwlA-jR#*MlwPhRpXZanaNX6d@hq+oh$>W zbgNpb*!MlZyygF>GU6mvmh#ALuGZRKh$DuR>Q8jp#+);agFiXLB30$0y?L+u!s+y#)LLDqbn{hR^>+zIHuf4SzKEJEQ};|Bx3I*Z>!KZ|xBX z4{V4Gh1Ie!MM)PGMdNUu9M!WWpBL%JuHL5q_E`C!uV1f4JMCT|rZ;doyc&MA`c+muE~6mMN0Hd10Zeu78i; zOkN-15<9zOj@c;Fd?RVQ5KJo42KSDxYOti64Jx(*KZI`}Dn!IRJ zSe{^3c~&h2hFE|5FS!>+-B*atUaMPMTU}jUCRTxVrX!3>M}32XOqX92gSoqO-Ebdj!9H>Lqo%HtYsr|#Cr1a%~2MwEEhm&@iz+{Tiedaa}Hr^B9rDyATgXzoGG!NM~vD7PCnm05BB?c*$F*vBg8TdONF{fd6`)+wrRa)riTB}y6>SeZ zfCb6I!U7kiH_+#^}v z8Sgk8Z(H3>%lKMuQp_TjBT86tGjXwuk}pN<;2o2Yhom~jvuy!2%sXT9Q@vVJ;_ZhS zk3l{Wt5H`(0SY*u8h;5kPA;yZVJ9Gb(#Hb4L|C9dTyvZLAYf}5Gn1c$6J?`Z@pEDf zN?#>xTSc5Wl_!YR2PUZtOG|n#2SM*JoO&)7eO@p6OrBI$-uWKOUEHpCSchrWBLV9f zz4w4+k(9~OIa%&cJFwo}__V%}bYAdRg+5v4-yjf^=TCpHKpTgU)!J4gus-f(?Ka>tHt-O=aWYV2%b%K|nJrLR2*Vq0(y{cq#I#@?CwP_U!^-hVCHD;v*@`G z$c$l`Yg4seuKI%*d#6HEWPWmAi8s*!CWT{66J4yPIz|bIe~>(^=i0 zxu?xQyb827prh4eUmnqS?U$cjq|6n#C=`m@LFLI6_$a$(qvRXx>72@haHp7d`KFbM zo`kkDQgd_UEKh!sBd#5jJzFZ-_*bKiWoNP1WR)xUGWM(}m(a`dTG6gP_sQzz+aJ6CpY;E> zZ2BJj3l~)US9K`-Zyox^-wSvIyy>%{aF^Ug2bQhRyV;g0x=yzqM|bm{?e&BfRKE;NRq$} zj*8wq)S=<630s!b}&^)DY~#TVHw3G}T0<4+a7F^CGPY>h$%kLv1|yr17&gisoz7A#2} z(MLOluRrxY{aV_XSQ&O=`_C()yJJ{}iH{An0`4_FtTbVL_RN18NQ&nj1~hus0+}h$ zU)C99JO-9kK1k%rMl)kzVBqJc?wv_#7dwgbhQ{Pdf!J?@<+$eTab@LiUW^ps@3F&7 ztzSIXiHo-19d#-b`#;};5ljMZ#U+k*J1{23nzaTLeNYTsj=Xt-lRE62-kM{)2(vcE zT`*7<$|{qQl&UfP8$`Q2YNnB0PVPIC-@z-fZ%j&<(@)+`&`gs`#>PFUS>wrc_WMC>ScqjI z1J|JvUOpZ3qn-Xj`a{S4KnkHj>3C;QV;Fg;bh_VLd7<9Y4e0IW=jTW6PwU4~(wb_Y zKf0xAwmUDX6jhXF6p@y7I>p3X$}FxFQ{g86n+NRI=G0VY(miK!RFKsa@_Q6xl~vll zt5XLr)Skyg;O%tHy#}eH`0GVc%QVbZMrX#FQB#x5&3&A?a`lp%RicH~@GaQGhnsa@ z^L>o`q3udjhsP25+iJ+gYoYp*;s%~RLvc)@d>35ohfZ(j6@L?%N;DI@I#@IzS1%Sw z)0wUquauO&Be6_~YFtP0w_Z}RaIA0PmPZ~mhh#HzAMG`BpX{HlEL~DjM|j88D_4Nd z|GTFw#6wQ{2HpDhzDD-ING!i`dq#2Nb%r8DRsQMVP}84V7@9!El1x}Topz@%Q8$tX zMGgkOYS}(v22$wdu}eXR+?Kjcg{R*)8FELNl!l_Y_k(J;$JAg|?ODIlis1dj0cnXx zyGJ1+(5>bst`y8J*ql#uuy0xW21!EPH2BBis5>rNBHZ1Tr`z z7#pTu>D0l^mG?u?`@D|#5*6@S6@!k(NYwS2rWpzi6czpb{kCG`K+v)=d*8^2jP$Ry zAY@)Fue*yx6+sre%{=uyCR7nxO6K<2x|5!*H15aK9r#m6? zxwmY&_$F#Uk6v)-QMcck+&oyl^-2U1{UIczNIQbnX4Ch(qn`gvJ0?od%;vYoCmJ5I z&&oUBPG4t$Jz6cVZoJcWIs@k{mUAGGsUacnmk~U0f7;(dg0f1|Hz#Wa>&&1-KrHOw zzxkQb_6DEk>`RI@kjss$+)_hN4 zbbAEXfs@4W-znjIE!Wg=Fivi`18 zad-kwd<0Sz{&ju~bxT|q^Fp5C_||t1!Afj2yQ7hEOBYXo{3WY7V*c?yyxEGAU|Nq6 zgbx)T_ew{^ggZ3dbWAa;eYNqo9#>O9Q2m&%=Xya%h_*;-s+)wPTCk&68xr%Ib4qXT ziMLN#O+zuI@1&|@ax_OQFj$wok^i4A`*RjBA+;7gXSv$l8=!!R7lAviedC1!8CrU8 zlNL`{H+RG#`vM`iSmk1*Py1AI+gEFQ>-m!*E!=goqWfAnJiIATT57tX*kr&UzW4-j zHEm^P!)QN|L|g8JR&(pLGBP6S@%|0(tWqp+W2~xfLcVhN`rSX(KE$ct_UuTUjch{w zt)l!E*AF{djLhSKhRV+vY3rpnw?~OCk*ZXq(3IU*5XwQDn+H|$ct7(A`BLLi`+e>5 z(3K8BCCjM5U7yo!6sJaOww+pUM=>fSM33umk##cIiu|PfK_fO7aqR2*j9P11Xto>8 z-4iL1#&)ohefqXo^`JYb=j^3;(WE8*3T=0Fj+18$QlJYz;m*pXI5ub+(3~D=Du>++MQXwVkGCRXm0d@~Rp90(rz0j-YSTxT zjDQ{8baH|KGa1!>sjj&^>M~Tnvp3EqHA@;%aNU_SF~}{yM;(Pi_xCm9G4WZsr-UaV zib|N(Ey~2)V6Y9L4SqrYN5i7xZ?Hv!HQD;!0dhWI&~?VKRF3436;o8S-dgRTh(@R~aFQ&qep}yNcSj(<5474!)-Ct(rC;)_KJof| zU8&!oCK@a7M|<17vGwWweGHX7b3C1W%QYqmCQ~s=HUAP+cJIrSxcBVb>C}@IMTpmE zPSK3#RZJz)4*z^+BZiBb*mlt=?ndmFFAJAwZA;F9&3rTlUsusUYGs-TYqhoA3Le_n zY!%RNEG&;lBIDOl9EW*>X_o5y0`#bL_DP1d&@p8vtbbO=*h~1ccr~VIGmmvbM0BnG z+D2%`2V-D15<2H{IGfc>D?Ztnu}M9A6O5ibX(9e+cjR>f22OLJmW#mQCRU_CbJl-% z%@l^OuTRm)K4Uw*tGxLp0~bN=emk^R+i4RW)g&`im6INDvQCQ%!y_q&TOVdXWT@Xb z{y2}SaVBKIimZYHnGefm8Xk3r;avAXCyKI5ewQeb-RRk3PdS`j8S0J4PJLPsrdpm_etl)VF)AF(NuY#daDF^=R z`A5k7de>8T)D+@Q>m|nUhV%aO9xBQL*nB0pSwZ5ww+NxGVhrp!_Q`wuhru}pEV<<= zHGz)L(3DW!s^HKc-Xt4KlCpW>>TYh7#m;!pS7qNGHUT<7@P4cVjA?qa`^NCAk(RaV$s@W19zd_q** ze74rx^w7k+?eueBV;%3B=kvH~^^=&>|x#gyVPAydDB$(^?^E zKRdC1k}-UqAzpL%MRRQuT3B2>XuGF*{Jp$X&1v)LWq;SWcWEi&NB#;>d)l0?b9_(w z@yzZ+zDS?_)2CJ*4et`Uny61RuTOf-Cj{;+(Hxemx!Kqv(L=H4klkd@M5uN3BWi8D zi8x~nAvHB4z9Gd_*W&mDH{ex}A4EQ+-16V0tp9>Tc4y1Xr+WAo>X(A|ujWC9Ly$)p z&hOzS=lRwFa=XzjLwKXdG41%$F0wAIVtYSuNO)K84AFWKH+1wt1bRrLpzza!gM+tj z3Fe0bDFzU4O5|XhuHl!W+?1}*AZ)Lp5XT1(*FVjmP(>dRt=EYYrNy+Teb_L)z<_=H z;kel_r(8h&ATy+Oi!oq_7TH>HAaG||f~o0vnU)>7JC{gXqi#~XG2tQ5Xd6tqYlHQaS!GuR z}OEE?nQ45wZBf>F2=0iUnt-c$ROazIu>#p6EPNMUmj$KKDrZ7J6s zR&&cXj8gQ4vt(eNtL^1j-A2NKiHb5YHdIhaH$230n9culd_3ahs9XSwHcFd(@T23o z(Z=sEQaCmON`D|T{QH6EbncNcmc&w8yGGPx4s5;xXVo^SR`_e_uJ#}TBTQ>L+bHV! zEZs6oCdm{h4OR%gYLjcNaCtw1P&Ib&gTlGNTiPdmb{*aS*Y#Lw)9OXKKf}eYh$nYD zlB!fwV{2WRj!DU}_q4q{{;)F*o1qvpFBZH0 z4u(Pq+{rutDa@%7Nm>f*M0-3+pJBRkK>s?d`5CH~1EaD4uGt`bATiP@D_XIBJ)+V#bgIG}|iXkOp-oe~)x{FV6Hx)t3KaF(Uk{|soD z>T;=)Z?*Zdi*- z(s$flh<0K7^=VJdKP}S=Z9vGh@so!!DE+O!id~o#iRIuUf%_z+7fDr-8u-ucXnL8Mf3lxX(oswK2WA<9^ ziHM4lriIaM@C}pN=!1*!7Cq$iu!hOHb3dhP`<=uXm{!M6Zp+a)BLwudrp)ssu7?$C zMTmrat-5vTFDNv2GyD{vG@$a)tl@C`bgJhh19hh8tu_<)9|H2QRQ216``?*V^h7M{ z6LfOf57_}7&0VG*{1Z@ye+S{Vu88sK)dt(tIQ@VCYFyo+ZSm=F&I=;e{NLg?Ag5|^ zGynD2rOBh--JoH?*L6fM*yIJfJHYG#rSOV-_wR(?>FPV*b?jVsaFsGI5WjZ$!U(68 zjxg&MkX(J>*O1|0s19y+HIKNVUl19nCKps+C4;t;J2KVvSsL)Yzu6kefJ}huC)7$< zJ~sC67q;768c)_FPJREru1c%X^Y@;cdZGe&N660N_Z7;LbqoP}T`ctCN|yEc;UU(3 zi~+lkx>}XdXM=t?_}2jdY(b{2lPU-3#UT4;ifY$Qm1FtkXSQP^jWVMI9E|`_4J01O zlcW8|{J`;~*3`(Sq0Am)XXKTwib;1=8favTXEE|}!m0bM&o#V0`o`Pl3im&-an`Rj z#aWuK0AW z;i-Q05E%Id>f5}v6ScH`0kIR$?qe`Y3e#RClP&Px7Pm5Wb+t|MD~E55yA+ufA~=Us zl<67C8^Ui{*A+GD!f4*ZD--y4)q?Z}lC4`;IVr;}X4+Jf+`}~8RjB@xn%zO&2z9H( z8h4uxedU(N%ZQ`h9kcv94Ib^=yHU4__|C7LVM6msakA%Megea1OFRO)t2uXHGS;R& zk|(A^(4>e%F~Aqd3AuU?Zl>i6Wy=K31#c#KX?Jo!Q9=8DRIErDt-SbL!-;xt-2I@5p*PI`DynUZo%`y7WD3Gw0o1>46@0nNa&YIP1Jfj3M1*)S*A7kZKC^Un5wouyS88af`pX5 zozG%l_98TM#|*qgnP3g4g>p%CiZED1#rvtXO5B0Im#ty@ZnHnHC}9}H6#uk{ZmNFH zZCJ0>jQ({dFXZqF(drI`$Q~A9WiAwlGx9f6hU%Wf+$Qjphv#?9JYFtJNi{FbP3R7H z*_gWmz8S`YT|>ZhaRHe7`1_|TRaR6mN2mgS6rh&77TWU0&KS!Tr7jCgFLH6$-@ag2 z?e5o$1B+_f%%d zm&n|6L>$hR8^96v`R6HIm`}-OJpi#c32B#46TK^a_EU{Gm5T2io}QKz7dJ07R%uzB z@cz&zr=y$vHS_vbL7R8$<)7<~#nKB6-_OSA_`rO&=heTrIKYxve(^0FO1CuD>3#40 z>tHsBtbGRnUItugfG2IY7h5%@=>P_yVj<263{x(Z0L>GOLv8G-fsBen(^d!)Z5AYD zgGByp1kn>}60g{9W{Oj{;c{@CU#DKc4{iDQ$0tx*ru~=tPKtaeIAe~6fIBRtu%!s? zqPjQ4h{}94Lbmju1Raz28nE&_R?>V|m$sJavvkoFuZguJQf>bh9l@AP{;c{~`igi= zMnm&n#8qG8F&vKwH~Ve`|L53wtMRV#{w!m!e@ysykq*rwbV)2 zvSCryyu+VXeth_sZe%gTfFwJ zqL~&Q=i-!k=yW<-1s@CWwOK7p{2i(-tGsUxYr2BYP2tyi@e)}5(o|b{?hR{ z6h^@xMV%!&d2z}I!^>^x8G{rKKX|Bm$kAL#cO@MQbgJcA;C@>Js#_TQmBUXN7zyJ9 zkfZ(??ri^fRHD$>-1K5?Ztn88Siw2>8htD<&=?>ir6WxQSaJtz?IfYlI5EueWJhCD zYDldx1Z#qe-LAvPTMV!TyI0um?5F-NArU( zV;5>W(z%DDxH&8wqu^dxV&tF$vcORl{e7alDyngX>ikk&;kVG!Rqksq;ZH~#^7lpPn|ntKPv7GYaHZsuxthiX-ZoApF{75Yw#7pM}fp2X^Xz5f0~d&7WVv${`Bbw{W~*tl4WRjd;2QO zVo_mX>W=rFurj??_P#H{jVI^@gUyChmKpr!o#E2s!QyHqOnvl*Njkz@y!h+r_WmeL zbe#VzZvO*DRa8_ogE7Lq90IQ=Mq`jd0Rwws*-4Pni?57xjM}0Nt-QI_=yJEvunyP&+F)mTW4iq=SW${zA`l0 z#F~5(PwqiK0x*g+H;poW>doVDD_%fua>~5%@+WiRY(^~n)({{5p>KokDXQ4md3$>s zI=~fL;6GPt6KvTif5sU0&ER#r4D>wOg9U~Hm1aOfjaJ}-Jjxve`Hq#DnUfGN?Tdz3 zRFG!fZqNif#mC}sA9Fgn#BAk&-CDDBMRwbnxV~JU?oWe1qg{kg#r;v%fAy!%E@>}Lm&jL^ksm;GAb&Hz3m(86!576d~0ApX)ERj)N;eEbLl4CgrmiGetY4~t_%=J zd0Jw6T95+FBu{}{qAzsXsH@W=&Gr}KPG@zGWlB+qwbw2K2JJq(`oa(9xA>(cQkRj< z2DO}K)nZzD6xb|3nbHZMq-Xa@TwGl1p@nNnMY)KShPyUld1gmnu{QVKG}?IOI8KnY z8&6+1y|Xi=r^mKwt3nh4|Nk0%|9dBKt-BC7WQ&N3hKKxc zJ!K4ThQ8Ctj*E}i9%PPIzYTIN!c_RVPwa-Gx%zfiYGa!N#dqlw|6U~S@~b@DmZ`A< z?aLPqSkQw&7{d(=41k}gxOTZd_Pb|oX=y2FS(lXD6%)%Op)1XRj0yxlt|-16R}gwp zb~oa>a}@l{dKK#B-NGws-$z_#U)*#yp^qla)|oS)i6gQ1)ZDrn=6IZHLzA19C-4uo z8}(k&((Fv7*guoV20h(82Cs!fuDc_4{W88Y8JMd1_m$2C4_zeIzV>V89PY}l#kS(+ zw`+#u1J9&*g!A23aA&0ldgr+Umz#nx^JUNvi^=3q$DGvmE<1CiBqxJmSOPd~Y4}Fx zAS(uM5b1jO^tlYNVwroY-sB3mX@aQIou_7RnzHylF!L2fp&8fjbzT^JH{Tpid!@#R zkEs?f%1A4LcWD$_7a2Pli_>F=*;@38i!BX!#+1|`XX*#hp+%JWx!L0d_lrl#gs1n) z!ncS2jK?fu(~|sCM2fXX?BVz9+uO;`P9=wRRj!^{?y-ZDm4UfwNpPW|y7Rr%_GIeN z_vY55kdWsuUFGX6AG4p0?WQ(85$Lt`u?1uS+I~Q4YAP^_$?=B#dhr#g{w#|p$;oiD zh@JF%!OA3PA>t0+m z``G)3hQIe_yc<)gfxlcjcIfL&lgH#+HH&<;dKg?kMVC1}E)j1SavF z8PXpU#od#GLUG2zV$f$wBbPftAmS%exHsQ5rg_^T1oS3Hd{dGDa=jl&5*-#l~S z0u>tb@FZ$w`^h?OrihV4ewtFC8*$3p^Ca&Uf`z*s#raEEh;?PFTyeJeeaIa?dw8H4 z2Xy{z;6`Sdy&H{T3!6}=#$~Mg_S-(^Im(6-ea*R$)xr?y( zqVeWXY3EM(cIHIAJgSWYj4}^Lq)g9^#xSuDr6jZ6w7Pz;oL*&6+>6wHS?+AI zv&j1D+(zTTxqeFz)BVNJ)~SmIoq^;@x%yNOS`Oz9bl$yo$LZD*X?6dj_%+&dQUCo) z_>MVaD8LS*)&DL4Dg4HWV{PjY$SGcXZO_5+3~37AtCp83$7r{*G1P2+1|rwxa6)=} zQrE$)vK7flo?PmI@9z#+FBml)35D%lq^WVuJVMBOTj%*N6o17@D=JLs!5fiGZ-dV+BLZr%B5UQM$?;{r556v#AgxEp6E0G6C%Z_TUR%;-Er^w&*s2V2LT8I!gE?v#^) zNw?6iMQJVF=|M>wU^}9G48zHiUth|K1)I~fgy@%QU;td<3uAt36CcHzhq8$m> zqJJ=B3Y&z_`?l{-;-%8E5J@?%i#2v5-}VDs7d9HFz!!$-NyMA=#%nI=PmEUj=l9N8%&!N?O({+7e_wdCeIYewkT%fM zL!Pu!uxl_B5Ed03Og(#%kd9_&hWI$#lBaCc^6Edm%Xp8n@q%f@44S9*B4+K$t$&u6 zMW=ho@^zD<(8LZmHxWf)gM`{#lkxM6jD_f;?Zz)MURe>EJ?BzkaF{%n)C%7+9BYqPnaDv-7zUfu`Kc$x9f z_iHHbNZupPSLQ+&tVH7flgMY;GXw%)=CIJbnwQtu*kk+f7=+g7Nm0xCF`0zUMbK2X z${z8wwwA3B=Pzq4CKU7%@QdWbmhIpFXe?@e7^X-iNu%OZMBMI95FnRj^uN9ARSc7C zJa4k4V)Ye>rXI)hRp`Hp{>NI)Bn4Q%SQdyW#cd!+R(M~$kuY1@?1=QfP=f`^Z#cHS z&Te~5S=lg|7dL*Bep2OQigx~qRC{?SEdECR0g60!JNS|uZ4ZiVx9M=I@oFyp6WEHy zcm9x{5>!Eb+T7d>HuqQ!$+R4Ba)wx~>!cLK(ap`xy9BUA@SDEQVcit>apl`e7_Xc% zx4eMOQBoozi=Q zKpr{vno;UcehPbPPpEo{ID$#MNuo5tfLYM$-b2OYmBsx`SUqy6!Bkf`w;A3{Qpyz0uDR<> zTJw}f{4``c=%@^!+(pmheQEFtzG$+HVT}n_&FWtn^!Y~=UN_`h0%&h0IKDAje@5Sz zud!~+TMg|>WJcUHSMSg<`;5raxyd)pJP#FcHS&?%k0tLk)kqCmBv}#10*5$d1MOYq z)6BIZ-!s%#O9T&^Y4E~F+MJEv4}|-ma+e?RR}%p>Jh80h@F9EAV9qE`!zOw+U}QrL zh8u-R3=JoYG~R{96;@Fx!~$W(1Wd|!RX1D+T|Y-FYcU=eJ&k6yeZ( z;ksK~XgQ1NrOUnr

>Z3e;k@?N`}i-x5H!dT1$z(U+vTPPcV-Mvu~UL#jMn!~N5 z@YvA7VQ2jK4_81ze7sj{{{(7gJL&$hmU5Qp3aiQj$CYG6Gy2URqGl{7iSu@B;$dydYxeN&f{ zE+phhT`+{|c5ja1rF+^{UU@=$MBdirw3-x`%YA*k8Hn4Z{U z%Lu>?{Unb~Jgra6aV&?CGr^f@Z=TtTC2lYGN=F6&hZm?PaR~dEzrvIU=f7;?fGmQ& z1I($V`TjxfB6g`$iEI-w#^PhSxphTPTQ!@;q*@6-SRtx3^VmQ8U2>x4NSgc_abH6YB55e$(!8Tsf7F?^_D$ekT+wJ(zC&-3caVUw`wSm< zYeQVf%HsH>iJQ;}`pp}ZY(3{@30&EV1D4KD+5cXCBhI~0dQiNrBuY0sJ=Aq~5|rnljs+Z+ z{#9?|d?WbimXp+` zzxc{IN>o(Tq1;qO&$23Nddr(UHn>=-d|Mhw{&pA{tAU5->iwmqmAz@GT#qr<^?tKN1)zPFumK; z=M!&WsuO=}vn19`NNyoW%}#+lL0B#ty*k{({p(pk8tFUon_BKo2dCbF<2`)#Y0=Tq z9UYI-dr@H3UcP(@_}7g!*Rw6Vat4h6_lL)zIA>tBEmUK16(NMvc9}bAey9c*);n8k z5$SG*=MJN|;Gxd@E=zq*>3 zo}QkVxPP?W8>k5Kox{a=E8y=4fa~kA{BhkggHp0ea1=;05=LCjB%{?OdgP#iMSRiU z*r(T7`orlN*Q4Hw?g#H;u7$r*ND5Jx6&I7E%=n}6F?!vUV6%Is9_^DVZ}qVs%_Sci z`roTvd+SoI+=5$a+(mYCj`fSi=?See40}_l__y-|TV>+Rx6Wcb-E$Ve*#_o8W0lVF z?F-|;QS11S1`b8g$kyj)2Hv$$z~TPu^Hat28M(ah8u>$;sC8{*%8Af=TJ1p-HjOcA z=Wuk1oEs&~bGkyP8K7>?F#3mY#|Q0O*-#v~{RUV?XUfQmewmZH8W^kRkv%n|BAL0Y z-{y**+AA)vc%XLt*fH}`4r2zow)Bw}J;RfWI8olWyNG!8ZhrG3Db|HEe2A{%tv&KK zumZU8rZn&n3AuUW2H?CSkt567fJ)<8D+C3O+sWM*&-J=yQUl7@06(u1CPO=pQi2z^ zGwiyiRkL(9kyb)e;g-oEN+)v}b404w={6~ArK1TW_M82yDq2XUqv{=baaq?Y+Ur2q z{@txEWoS&Xl+=}quA_m>X|mJNAJ~_X47pHM4-wb4im8B?cCY^PWW2=(mW9Sm`%B5g zw-D9x91OJG-83Z(VR?ITd!Ia64d^1Q!?r^juUlMjyg8lg>fJLn=t4dMCotq1H|oY> zN%SV)5{JGV?d)_}6PUPU&`u}?Wo1m$jm6ii`(=F0q&4p6N9&TP0?a3VyFss*?VjgW zE!mZ{Jx=7bU^x?0#D+-Nd=yPK^+e=9as)czhaf@FV#*f;ZDD=v<{0p3RS@)l0=~S` z#tHs&I0~SWw3at54?Ue(pW{5%ixP;_dnDT3)5R0_uC>mx5b$c)6@%Iyz9w!cwcE3|J?0|B0Hb4BvEO`Y&XA}r{nICIi80n75a8)P>;u)#sdd~let~`t zK;bx%g65rf6FrOgsXItfq_)NnnOMCIVf{by_fPU~{`1TKJn#O0hvojSL4=mFdFF9c zwAr}|j+2SAm*$8HJ`xPu`hR?M;{YVppr7-9CQ>*|M$i!yi=wBsXf%E*zrVX6m$yAWr5|_?uu6QW zkx0|4cGcGc7D<}kYAw!^H272JRqr~p!i%o})p;~k?8>d=Znig&Q00--f&9g~+WW3y z+Fr8h`^O`fL(5=X-mVAE!r81X+}mTV60P?BW&{as#BXO$;yVf0aPb4-b{=c;DlyvbetWk*rQ??qc{qb!SQCMK1{Lmh(r1R9}=8p&Mln|dw zq7FSMTW6rQG^_IP>r@L%iks4Cg{zFC<)MknRlLxQvB(fB2qY^Fo?wO>`@#vK)m;`` zT}*;~_X14p_}sWH`@0ilskm$OQ4-5VC6k^PCx>itj}i2>tA?lH2{~B)uxCI$>|(5{ z_kQ`Wx^6O~tn|u8kq{p--^WDLs5j=rIs>xym2NnX!#8m3r`NbOym*A=mXX(C{kj(R zntNDCh~+oImkdAHr!T7EOt0zyggFG9#&K}30|`jKQS^bhokY|OE92{FV^6eG{Xd(s z*@gv4T$tWS5sKHtII8vi(Evp}*iK@KCL3U>&x*78_lLB2;g|8#QuxV*C*N2F{-`eZ zbNksGNQ*#tOVo0j$jJaac*U6+#K-`>AEthK)1e4qkcz0*7d7JisamsKKJ{fiVI@Zz z$KvpNL4C=^v-y1P0l?GRmOamGNX(UH->pAe#EjDfaJZFh>sm{k4qtwqNao6LnPZrG zZOvWTXI^!wTtMm6bZtyH+ZfBAR-)Nb*5%awTYUQ+XxO5AZGlFm8EZ9sN~GE-Z$#x6 zB8IbgG@pb9yXhMT=gJBDtoc?6ZLetsAFuGz-<&TOGaIbw#Ors5>0$GN3R8N9m7Pqd z@4kQAEK+IM!M)q}LoYO2I8yOp-PxH@j!bP;$x1>W-KE)zl|f@Wg6}{eR^DnRc)czo zmTJDKIWN3x<%8*U4|x~+N{hnxTa|UAB+Nu1Vs$tvq>~qFotRVl$eabDIZ7(9I(;J~ zA~NDs**3JJ>J3gM0%xGDPR)*ln)cd>k%IK7b-q#s<2cs1_$^&k+k~7-{jNM>98NY? zt7wGlvSg0t-)u&UahJ;;xt>kqM%8n(`bycXdnO)8Jwt~Y|C0Vu9G?TPPw%epSmQtz zVt*34@6yk|T%PSx`6SON?Gy2@8C-kqc;53?d-JCHJtl_uhu^x)O@$EOTWBs zCSf{q?vU(Z32|UTl%vqbcTuXAuYOmqD*e)VGAS*qZBsUb4xIklq*o+F@d zGF+MLdvn;c7BJ>BNI7F#4W-v=z%RWw;pUwa?nPrM3`QE+xWCB}e{4#fYJ4g-aw?t^ zp1mOCJP0Ah+1>djsQf%x`>ok~T^9d&Y|4|?8gbS4ZmkZ!|Li}mrWQ74^=+wH}E{?uil?4QJ5X}zVs2*7f?eC5X z&VO$^8L<|_TgZ$WBC!@Caux><^jygIqe6HxM{(9(ayMxwCi+G`;XE@}n|*^Y)Iy{1 z@H)KcN?D72dBKC)b;p_S(%=NS7i#^31AFwp{yoZ2QtZI$S?mozTa4%Ti+Sdj;@jf4 zA`o7!IBjiPW##(0#wY67*vr_(MVCjk;6wQbaiD}sHr&!=>15w6ASwI!2af1t1)kwU z_A<|thc~}>{T<@_An;jnW!-Fw=$dKr#%A3(8L2&}k2SREm(d;sEwND&G?P@i%*;3bmomAumEU%K8PnH; zlwOdN3+#O@?^fbE=TRkOSsfB`ef6f3^c77b6R$K=^;jVcKK=cP2>^f=J;%!moGQ)0 z5voxj_JTrkPLo;kw_g{xURyXG-}L`|WMt)Lu}Pfs?vt^skg->sFx_gscnx%8-MSrv zu76kM?w_!9+gbqEf>u6k5tyO7)m=63W98BwdL>`i%uaZGS6|#lWqFst?_Zu_l#o-q zy6*klh%r~+t?pO4lMkO8H$VYLN7p?%ANqi_GH(AoSyJCMobn6SCHV)h)E89&PGwT@ za_v`E86L~{aW>nANNI!ek5Esy!TSF~7wEV60bx2qa{RT=bI<{`;-f*4No(`$QJD*4owATXi;- z`chUFR*9BrsY!n8XDk9Rr7ZsC0%G6jqn5qu5V#~M$!KN>UYe^cXYkF;@-{xjHTuO! zjo{-BEd|Ry>3p?q+Ewpb6X)(6`l6=}g@$>?n)~`#3mjW!?bPS0lG0s~SNo^ssB~9X zi@+w@sd$zi>$Pj|R)(e8gb}M9<3-N#hl-K)FOJuOP@{rlhg1IPwVrXze5D2)tW%$I zE*t$!OhPLChP>M*)pq0JUJ%#!KgFHnPTslqxs4=A+B-gL#JwJNu|FPHRk_+a2q!e4 zU(>k{@n^W-zOL&Z_>OzJV(dz z0(NMYb7A0>qhR?6?7fp+cw?jYpUMJ)XjGY-rtxlj8=nok(xknkN2|2LjftvWq^sZX zI_Fj#@NJU0u^uU?Dla8=eNw-o|7%Zg{Hu;oLqos1?xLk-&5@Bfx)%)E+aC{94}x`& zeEM}W6zV?g@@Z$w98=T<#=5^@_TzE=h?|9~mHPa)T*XVQLfhHR>~t@(oO&DMWHs#U zO08GA`L^Spsb}Rl64FX?E9+#;f9t%fJX-k#4dp_wx0KjOXi1g?1|xZ@EuwZA{R4H} zG?ZJUl0~KRS-2gX;pZ0~E@tolC6^NE$5CEZUz7Rw8#Q#G#b1ncqL<%fzRKdeq^bh| zQx=u+&k(xZ&>W{Er4`zxX87h~8OW7(&rb2~3Au+PI`@J#)5j($UpKygFTcO_Qn5)G zX(u}*FUGtzBv!8KB(wxkYbh(3i4wb_))It>0p$_y26)xpJUa@=L{u*7sms<>u;nzWuaeI9j*4ELHSFZ+SSfk279TgRxDrN3 zcj(ajSKYKgw`i;@1k!m8Bf|QN$}n1fEE_i3<;1)sRyo7X_C~l;jm2mb>rLji%m^`$vCY>#+9>9G5MNm0-S3g%xF%Jz>qXn{+ZFyFz*Sje9G; z_2QY0@9B4_7bYrSt6G1$H6P+Db^RTa@IPGK800^CzGc79eL~AuIsOC`j~u5fAvu+u zPz`*o<*Jq+YOTsqGkf0q;IhDd4F3)CE~&1_5eh{L%E$j2brpH(%d}&3PttZ$o0TNp z*zBe+`cm7%X5%Z7pFiom#-r!48R%?Vu{;L4_BJk2PQ#Ag?}B0Ke#olwxek{{%F5fj z^IWU5Q_;}uY9pagPvS);Nw#Z8FIRM{n>CWVBB z>V02%WmV{3$=30^y)C7icL2p2E{_Ox$C?VlCfFx#)JtEc7v#-ar7H=|ag2U`^dX;a z!~WdMJe=4T9bNlZu1h{@X0@&3Uq-s)3U61tm|7(kuiknH8Fo~t&N59Co@hS5naY~u zXqMZ|BQG^T-7!O{0e)Un6duszdBbq~f2om?#-E~d4_{pd;BsUPjDZ-ocP+44G%`?d@Om z&uNi63lWgEOASht3pDE+l<-iRv)J&l4CVAm6e$>eOM!bRPr<7 zd8%>za-1+mOwxUz3GyvsVE#d^Fx07_*kmy$>ns$%cxV>|gmM&Yk%`n}*ydb}xk%I% zZ`xHKx6v_fc3SwYYZQ8yYIBb0zE67{%hJTn&zpOcA6pomj8+2O8TLi@BK%(v-W>u8 z>$4w`f8qI0AQArYLCwFYJl%gcwpr-Ec)i8HW$^#~oA@n!SeNO+V}Ew%44OPEg4dd) z!NO+NCu`7+&Q+iFBtD(k{LA0@KN?Xz{sUs1QsDe!3L*u1@hd}m0`#=Fh`!mDrz`ug zk%_GsBXL=o0u!;tCHhNmY>uN}l>2E4D;bQaUYwsCab!*tQuoZ{`|eWBdUlT&&1Z3H z_-l`yQDEN8ph6S2h_-Fc8*d6xR5dAA&o$4CkILzYePy%IGX zcEb5s|YNksTBI!Nd&*tujqY?m%5li=)0?d~i7a zEMw1I?8w?pwa{s0&OKLI`0iabmsl(}x!Ds;P z>ypCyShq&2UMs?Ue!57${duLzQL%ZPCB)-OGw_Z3U+leSR8w8sHHwv65fK4Fsy8Sg zRizV(B?3~VcTjroy+uW73J3^D7Z8vVdJjdUNeAhK5PAh3-G_nJ&-nHNQljUh#2Nv zUeR>Gz2>^I--U&7&;1sqq#a!u{XY8W?jpe9={qLt^k_hP?W*kj&i~uYX;x{Ng%9ZU z|7-d&Q~D>kuoUWa!(~}e)hUkc<%kh9VL9dl#m^5(#z#tY^{0@zumTzH=YDr+ zy>|8!+N9Yv1O=_eXsM}lbo2_=V&-sXkF8tkT%?Y=FRhR|OC~NnGxV}@oyr^2P-U*0 zu+me_#p-wFwVG+;?d1gjH}fYpZau?XSILtrHth3%D3Imb(l2>Fr?`iIT4GPfmhq`s z91s6d7PBHh0jYf4&?9EZlXL;+xKTN#WB;~oLa8M9Zx3cmU60#Qes(Txe@u10kD3KrbQ7WZqljf9#k;?ZQ0C2Px8OcDcMh%|1zZi5B8fF@YY9F>~ zYNj#;X~c!*NIVp3v35WVG9%7aC=E6G&Ha7&W~Ma7dYW?aMtvBGa-`0k>(&{Js8N^`1$*r4ry1o5KauICe?@;xY|6SN*Mx1*2yTEFgM(kw`4H+VYDSY ze6%iS>UcPFg(~{MqiU;2n*o<+} zUbGxDbr~in$6g_Q7{!z2M&Jkq$yQyLOk3|W* zb7x<9=EK4q6Re!o2A1raeh)5w=(13tqejH1rD>9PRvnwdOp4Qww$-vzAkOh@sFY#3 z+zvAn+XQQ@vaEp4m#rpE&A8y#C0{posk+PJy1G%OSW8|%HDbQ|iXUW`%%MVxxV;tk zp&fR0!;?eM9hj$ zoLsD}t{!u$0g`p5(>dIVl4%DggaOXh=HE`Y+~`C^7?2I>6p@s2>p2eDyQT4I&h4Qz z27IV-1ARU8pWrdNXr2#MBA|x(L%`jbsLsk!kaN@9$ngx9XO9Zgi%bIL`bawa?fFo) zsJ4jlX8gcp7CU=X5^fax*b(BG1Dg6MU86%uSQyIb#e-RNx%Q}J@ND@*Y@_vq%m{E$^{6fL7$R1q zo?{HE?)~9jLE_S17ID?3->-%;ZWP)TaRCmJx+H|x>AJkG+|8lY!4Ye0Mx|9yioJKl zm#VEH*)*mN6=%jCuP@!L_T&3BFe%gqH8mpEFwujk@Ec2YsAeoZgm`#{#VH5uVCl)@ zGHrII<=L+3JQBL6Ny{aCJPAX%Rm-wo=aidCQ6Agv5uwiSHO{yn9SE)tjUDpA)=|ma zrU=toc3PIkHo`1Rc~_(NO{B$i^o;Bpj{oZb_;Mig10)qeXuG^IUa{RZwYV5%de5oq z7Jd1U-iWPeiWN6&LY)z=?wob|mG*i|k>)M#_NPImkU1Ni$B%gUR}E8Rs`mN@_9zW~ zeuaTo^OGY)J=5-@TL1}{)jc~q=cq z8UO1xa<2jZhz<7?}#QgaDjDbXT97*6Tb2XP@p3`3k{6vpDunVv@Wk9ju-vQPFZoUX^Y?a zd8@;V#w1gHU%%YPFY^3Mn^k4r81MQ@?=L%Tv0s^eJcAhNtf6`ZyD{?inIZ=u>5BRx zeL|5}V8;y1_UB_=DY2I_zYvw_y>NerkqsqK}37H<>}PKbk%}Jx|+j zQ6r7;m}NWcNI3k^0>&fln~UTP*t4g8C{$Flh zOLJ-MFYy+SX2V`5Y1r31hfY;Zc1}h*(Qt6+tks-Q!22_Elr#DN2)R!66a8TM!*vY% zb|>*zdQi_pXZ7c*%MqaE+T9}b0YAbexbc)iOhUpJ$i2b{8>X2re-svOOoEEl@1u64 zLXM&%UHDzFG7V-Itzkn!XIrMQK)wQ=Y7ARCzQNtqhaWP$9myry7oj`)wq>vH!|^;*m{S;2l&G9Ap<;i4kx1wRH zL|k)}o!szERGz&dV{a6q_Gb1ZZ z)6ga4gp#B*agy3bD z`?+zXFHeX;DA%z~H-C;E>5_i`yKk_}{WXl=5CChx*L&DsAM2pgX)F6WnY>~4P${2% zkDSUdpocrBO)BR%C&eh5-I-VBT0{5!0+Ee?3eU}L$5;xxv*T8#2h3a!4vwH^A_n5Y zY#kWb2nz3#uHAHE0I#IBb~C!90Mdvfc`^sXuGiKRUQcAL*B^)mYAMn=OD!YS7p&?m zJ}hJ|9GP4QRRL;S;~Rh|5y<}-dQ~AY0Hy;didPoafds7{U(}~hAe1=J-=7ZP6#Nhe zVMb70YFmSBdG%8LOCN$Zx*6qUn4k^U(aaw)lpzh?%%$;=&Sg6ppq|uF)}&Pq`GM7M zj?$>zMPbV0oAwg(e>*|)1&Bw(!3nZ%2kY^R_UM+)M&~@;N(KCSeEzmm#*LpcWqeBN zU+6XK!+aWnil-Vr00MbZV-DBhjqAEbN$Kh73DhW`W^N~}oCnerNl8~iTSggk_elHR=^8p5hzjug$v>G5m2L({pg9;613hswn5RbMRq7`s}Gt`qiz2$ugQgH!pbA zn(Lj|&8r3M8hw2dWiergRg~Ai*)U%q6q37|R`Y`T@EbgmHcR}W+HjW~=zRbfrms8Oj-`GX-y0Cs{b;jsH z`H5hgT#rxBJLYy9rh!28K2#O9J*i4Xl{0e^ww8lUMR{ednKXxq%N3$b_^TXB%3co3 z2SOal9IB|s3#}_Ay%5qeGH08w@7%DdK?3S2h6?W=25^8`cBBGlv+HIJFDV6tP2G4` zpIsEs8!>;;Uw%Fa6|sP&Z3x+Usn3%^=nw-u;_3Q^ zbQ(JMqqaOWaz9nVyI9^)5Y-@4VHNgc(zNOR!h_GuJgn(M4 zt?sQ{Sc<*~v~5@xHxr)udv^mWva1wrWqp;>5IW+6_Fv)5mbd-)zPv5m$}q;GQiprP z7-381fLq@f1+aF*lJVdcv2?zQ>S|!{B==dZ%&o4jRvfSV%@G2|YMW#rT*n+K=dJG5 zXoAIHP+p0S$Q1g|=1}0z|4cJV9HHf6jGl}FGDpK|YC3kySpPkrZfm`b9wnx@d8Okb zTg6Jq9W$ofy7ao^R*d$u{U7XB_O4dB`+rt$l#Ol@kc9~=bsg17$4gTvGi@LYFKw(? z=W@~?jDfhOfKrM^HV*F0y4cqr zCx|{dGes+xRC}t>A$j_xc*4TM;$Z>amfGQY;I7G*OV~4?W}zQ72S*6RM@napqu#o= zrDn;w@8@x!<$JqPSXlD?n&5E2hA*689psl9xYa6Rze~k>OBu!W55<>Asl z>ddCPmFfnj&XTXuUKE#_s?U|S7nbPi(&h+h5>)sF1VWx>g6PBdVcY0Vnvd=27)jXK zDd1KEMG;>Wb8g+b<)sTcCYU1S%y5~WgzBr!plB{zBLL1|*jE#gv5aZN+2Tyc?`rwG zgOI5}=lb$g$5iHB-VY8syFPe-b|#Le5j0YSxzM$5=CrWmgE52bawkQ%)l>52=<((C z?(L+3PCw?DNL;ofQ;AHIu50C7zFNny-AeslPOsa>$i#<3I9qdy$mU+ofM~Hg`V=*7 zCB8jq-WbreRGJb8tGK-+9GT3OxpF zkvn8Bpii_+zGQ!QA}n~lmXM86mGak6TOEFmnW!7CwCVN&Iw4h4jI>`$5n zEg<_|h4RMg29NJo0}!gXH&jD0EgTkISB~y zb2MDFoB`>(w#d!!zln(HuE-~i9MhmCMNO@m_b>==n^PsDYnQ7Ll!t&lHZ zDZthB-Yb8pM(LLETo08)2@M!wzANG=@L$7q#k;;``hgfw-Dv`>sn@s`Bx(aay&t52GF=(r$|v`s9|lZzuIdS~wwXVqwf1Z?5N z0QN}lzCeha4Ep9i`pZ1UMyx$tuz$&s%Nyo293JvVv0vwW!d&?Cc2V99PiNhibXTHM zBdna@()GA!fo^=cVimg^gq48~7_6**%N^PqU-xOILgw(>k?2yL4tLs)9sAqjZyF_{ zP^c!l^xR;bJieOV2m6}XXC-vwpKI5zH`R{2rUGtixDHxI3t5dy`iZuydX&_AbR_PM z0z-2B()cA$wbi{P_in;T(!SqAU3%&(9jfWl838&r-@JwWoc&POb2Vntdi|r-Qq>ln z=r?-2xA>@336}FqnljRvn!17#%`?4=x13jQJ#Q2G{6kUryZ8{z%FUdV_R&pDmGXRJ zb1J$4A2$!plSwa!H5nGs)8C3qA(g;Ro1SB+%k^=IqNtmqC&@X~bNAp#Yl0A$V zq0UFjhQh|^N6WS;O0t2wgV$6WiBJ4i@^16Bx@e&)Dq8OLJaAC=H1>Dh{kSh>y8Tfe zlWu-H!6AQAuic-YwdsCdY* zcD6l0G*`oumu3VVoxnzT3xPjL_9~-ROr3jbtk*uJJ-*IORLqpd(V}5|m$T=$t@BR% z;RoxWrR7BW(*#--^bStE+aSLvLSU+c-nXaBky=f6@38AqNl=dSo(vgi1n>}m>cM2O zt-+nr6Ycv_tOGKiob8iEg@yO{vcS1KTk7Kc5*DLv98~&}c1UA^?bH4y#ta)8JnxaG zX?Oo*bxM|18nuj(4fGWEV@6ZHf;FhzA-OVMujN6CU~q6h3r-sKyPwyGy6Jwd>aV3cpRr5&wfzZKeyHbi3PqRJ%$ zF&R_|UK-J59vfI$HC?Y0E&rd~sHOvy#t9iOsmWxU5i8#)CPGHPBF-?a$u}d~zjRMI zN5wWBtsOgInGP4Y+Yv-Pg+Q14w_Uun6&AWm(7exJw_kW%KU^&knCic-?HN5##q}iW zdxu@_^z@$iM0`|;7Il7+l-Inu@yxiW_?s-!*vvk6y0*?Mba>ZuX@K5O@xan55CD*`(hib$YzvY(*hWqsevJ*9oeJkbPKd z%wpSO*U#=oHntT>wkHd?0oiy=rVvn!3{nmZI5}xgW@oRi^H|t`q|fwZ1h_q%v$$%n z$WAx(+`)YfuPa;Ps~Wi770Q8YXEIe8H}PRJgs(A)UBwOcBo4IOsRbS5YW^UO8>U<7 zBS){=+f(NClsNg9wF1it{QPWjfBiD?_fP9YRdPW2cCy|BJM$7m>r<<^;xCi;Zkp8% z=V}}1#03w8JRe@jFsd8OP|OKY`{W=0v?`N3UEvY+XgibAcg=h!v>cbQCR>oO1aMhG zxHuc&zx+TxC?a}mtV6)$w#wxO0KfX68JlG4{S>G5t3*LOMm0y{38C()qkE8Fy>!rV zoMv#D0=Km9nug?F!K~PW`^Pjvmh_684(iHc_{bo&6?5Gd|Bf zFLvmg>=^6-nq|@}3jLlC=-`pYf~8vZb6NdW=hB$t9V*5CLEbxchL@g`<{SzwdmVa#Yh5VrlunpAlt(x1*xd~y3-(Q`Q%P$C9 zP0z#D7eFvNnidO5MRNB|dzakWpT3~9@uY5E9>OF{`o=`P*2}Upas4tiRWKi2lt- zlXxKV`JWy?x6RYp-QjW5n32YoH>2FzeXr51jWDaFenL(YFVV7~Vji{J3+I*&-x}po zOFbG~$%~VrR!?=|vr2gz?w&`0Y@&JSdAuC>d@4hSBi)KwHmHt}7`q-?YM4VCuPVHJ z_kZjlVp$;D7Id_e5;_@)EYOGN96uLHm{wSNd!`NxI-B`rP$0WMRjk!K&V{ks@a&Vi z@Qe^Snc}X-WDsd(y(%#~+AdsuJ7lcB!!P)lyoMq-EUa?8Vgn=Q7jGyLVh-US-jpKz zdg^6P>0R+P-zP5cLSBDb%BGr(VU`J&=|v*FlT|vvH1WCGKVBJ5P{?kL-HthTMnnappt^=jkL?@dh&I=lBYSdn~!{fQ3uX0Ryr zzi*_=g{6;zP2#JJ)hl`-wuSXg`)9L&9U)+%7C%>)*ttcIFM}RBc&Fg#^+I0T*PjK< zRx2y{PtH02Io@cTFtl7tS({HPq@Ry^J;9FI_m?FYWt?tid;Ij(Da&puc+&{KQDTX# z?p&zfHT@~nqHq`rJ7WWO9N<(^A~#6U?0la zCZV`h15>3(%B?Tv1(!6~9#d!Kg=CEfos2nTtR6tT{4JMT>~=QE<B@(c1f$e&yQiADQ{wMUctb z9@wP-?I|ke~1CWfG$FKR1nFk2J8fJ}BRdbY1}8{c})k!|w6lPpdAXI-3@8EIhJSDiws4j8|w0n3Z_(deb?=}QxGh)KJ# zF&&|#y0zYE`#*j@Etwyonc|lMliS@oIeW-y1&)ilSYc-S|0ew zA$LPEc)j>JXyKlILVL~{Xo%s1A6o_i?w4HlCaYCmg1$^V)z(H zv`&hWlD$FLBzJ_>LrAxCt#*tf0nDr0zx~$-&O+G6vZgVwbmX6+TZMhkyyho;@i#ZE zUfbr39cwx;btELdu1QWAi*sePw}-3ne==}|<4%G)ZJd0qp>1Vjk9Kp$hOGl%6E7F0 zCxJ>g(`pcW*yK+uQE8r#3HP`h!015~AxCx417B^_TRSU_ZA zCt6(RKfmX=FaMAHw`gJ8l);UmAVd6WuxZm>sa5K$-!EOwsf;GiG3Bnj@$KHA@cSDI z%Br1pG@UhkhGTWSn81GNW?4Cd5?x+f&&l#Vzq1@b?wMqa=?^g3ti=_Nty(j?vZD5{n3=s zbh#P)9dg;nX2-Fwm*ZOVqS6`E?sMAWDmwe+=-40an+c@U{0R{7%7Q)c-^v#AbTr^h z(t0u5&;Qs0Oi1n5TgH0t;)A;)$X-PX0dhf(;c!<<7N(`QZ!@3xkIM-vE!tn_itc=* zm^dKk#-sBp1;Nz)Bn>CLzjx{8GwTqcD3ul~SQhLq&E}4>tRo|?>mt+o!9(Hwt;*@a z@VT3v?$`7a({aNW#tQ0N-t)*l1dFfsGegLem!>36u~(6XMlZ!8_n@h^6ATt3Mnf); z=a0VNVq7^!CO5RzGFTbC_vPAd8&X0U=Lu`6BU(}De4AfmgG`kv&_8;_#~uG1nuyXV zR&6G|2>;#0?ChqK(-j`uNQ&cOy+a8G`JP6Yl%+ zC)ipu!nRy_uQ!}KCe!|M*99)lG|DtgW|J!^y6od%XxQvG}4bJ84#~L_010x1V9nWEl5D4<11ehsjm` zl3ssEimheI$NDe5_rG%uq$;QiMx-fp_RCty7!?m%>A~#DsnvfpBCnzhoQ`_mo10^` zep-od6l8Xn--*yP9Q=N*E;&%EchMs5q1)Og)F|^ejTdw*bam5%vDV~|Mu}H6#l8+I zHh6>9|LB}&Wc{T`a;`+2sKvsorYB?Gw?H^m(-=lYbd?e%N7(ppdnHOfbkHU~y56Ed z$(%SS4^t_fr$%1xHVCeCaQ$JVo^0fQ&DObd zI#MjoZU*$t2Mi@d#ZzCW@iU2Cycn{$d1RB?4WAM!(+g2H9=?!X@MY+KU;*IgLW$ES zmd7s-KLrba!Mzm{ktNaC)joci-E@^?5onpSG`;%GA=%rjr)*=p8=*gmo?O@cxFW}6 z&BCu*^}Wt|?^X@ZsF3X>oAQ^!VagYee44EjwpMipyb515bbaq<-jaQ$so%JBpWlDE z?ZJXWsma~QeX8H-={>o+5Fr~Z{6}#{=2yiH&ZW-Kk4w+5*;5FM*70Oja9Z!?jzv(T#| z>!1&0yQEUTA00bqxt!7uJv6Fns>t<1P9v$=*^$SDuIJtuO`AJ^K8xRG(J0sPl%(#8 z?G2|C=~SxVL8jEFTznKB_V5A=X6+1D$!NRS4~sbTl9LLpfI`1pb_&V)412WulfIoK z@OfOM2NJ7U_DNB+vyRbMGtqrAbvCm0Vq6$h%^eYXm8O&HnwdDFQ)quoF-fX5f;HM7 zAOB9|o^0vzu!&n?aXBXJ%q3BfUgI$#U_89Bs~47h zlz*dh(Y+iwd}F)z$Bh!@WrG7{;*pVIDbhFBLa@_gNFcf3`;F0S2cKSLI5t&Dq!)PR zeX|<&la_d-Gylstr2+T$?a&YVXHelq98R2O>nhGY(kjn7JKL9Yx=P}+g#UW)o4QPh zp6`QPYBosR6)(q|VR|!|!;JC0MseSnubvGxyX8H(CW)+&m_Z~2Y3$&u#7TX*{O@K% zB2Ic4Sy8j+=m=-NplvvH+1I(kl=*8Ik5JxYFkU(kXF0KFu^ug!g}5(wd#+8|%q*Hd z8IV)!+^JTuj*IMF?jLK3v%c(^nA|nVSkGjqa>@DO{`AqHg3f{0p72!IFDAdQnPp3ms%3@kH2^X$d<}+2wi(ZU}61!R)d}9)% zh0?9`4BdZcxAk{uv9mu)8X0sMLXX_NQC9t?Gq)pKGq9P0COCg>VYaa^=%JWoqe$Ef zN^J*UyG;F0X%Z5#7943Q@2!CY3hNlwMskZEk_CWTBB%wVedn2kw9JdvZ7lP6HKl6SPX64Gs^zXdPY8uw*{jl~MNPOYnmFZ9<{Bxi*Z?po_MjK4&hut!1rNidFfj zQg-IN{ElBHt-hc2ZPRW&{PZUbWMkJ`AM|IqFbc@Lh~4z^XW>mZUr$z@9%-9}YNq|^ ztnCOJFL*Wf5f`57UEQ*%!vudYBKy@G>dieeJzJxX?SAPVw@_wb!r3uCgtX$sFZgwK zSjB|V-lt|#S+pGeO5Lj8KUrSZ!+WdaatE`cv`)(DuQuF}nXg}U{v_)5@Z{9^8cmq8 zi0L5838L=m@rs*cjn2^WqQ8x~cXp(59K)Ul$%^8>r4Fnp@XnN`-Wbu%T&g?xTAy1X zH82uXJC&5%)f*eEV$2m~IK}i(q)*)2v~^I#%=bX!*nzYkNMGF7{wMrA*|+Q0yk}Ux z7K9d}9PX!uF+_n>o^O*G2cP%-Kw)qpS>cV#aisMQe)OLISK^wCOo#fvYOl%OXkYvf zTPnas(*Z2>e_#6l*a)1Nk+3R8X3E126QN`-;jbB%&DcPU+enc#Pp?=NmdTW~_Boz9 zk(0ftBiRU#9e=No@qXXw{6MNC7W(^<2-M>ZMF+m_Ux0>xe2+A%;?`SXQDju5wC>+s z+raNXNai1zmeBi@Tz#H+QiZ41AKjuvRfUL{ofZFqsbLH|6KHW<5$q;X*});fFBN`J-Y#bkMV>MU-DE3EF99q zfAmij6aXl5fQ;!tH`z9bK0M8|BT)DNf4Fp=)TAO)p^ZOWoSYW=#RlX_ z=U&x~oIY8rmmyWhDvl=89}NEQi@4liE-E^j{$qRhhp?+;yqQ)yY^dw*q&U+AqdB`|4W z;V-IrpbSXNd8WaByqMpxI$)85?YI+m+L;J$Z^m}NNb(00`I}_rVIxJwn$`OBffZ?1 zs(ztFNz!1v`7jA?8F+}wYnufhvdgw*v=T_t1yu-nefOqnT^F##GeD(^ZLC2DonUIvXVo>0DmUI&(GL8Y z+a?^M1^@ZgcsPRq@Y_9x7v*Xo8Uzl9Z6pH`#$Z2im*2 zxmj4W`Av+CjSUUOsOHgopK4b-q40GBfdZiJ~4R&Lq9|sAxK(( zNx%|sy!H|c3yVp~A-HTdD<7qNX-t&~kl^dN!u^BoW`W{-ff(_481 z5h(zRH5#yu-v;&d^$0|u4Elpah@X+?sJ1uCa~yq!K{tW<9*ZTB0EoNJCt0T-Bby0G z*`r|DqeR$oVvYlmfQ1pUr~O#&2($K)6sP*N1va9OzdxdQ1F(Y!&b}q@PnU)uchGn^ zx_-AG0!sGTV~#q+nsBSx(Km;{%+~nsE;r)~o6Ak~qNAdsNF2tv4kk6}eXXS(Fl^?a zyn>B*1S(~HeCMKr_OeOOs75;ZZ48FmE1)nf0mNVv7t^RFJB)HtE)_Y7BJ?~b~6 z8r`_4P78msP|&0Anj?pebwUR zd;4c`K0zu76GpbKBQdB|<05g6?W~2WiO8n&&Qfp4Nk}o)&a)nIIOE^E4|f)MpF$J2 z@bQTG0E6@%H}>8?IM|VbErUu+ASXM{M#QlpjEYHnRbHO;$pHqo!v)*PR|_my-hmMh zVZ`6^G9+$wa#o*N?AaF934y7WXA9g*!v?Hq>l*LR22+h?{DBj04!I9V>kf2BWS!#2 zo6ly+Wotn|UDq_wliImq6KoyCB|%t{!rh`!h}Y&nmxHy%C~m#CoOBQ^9sBeJH!P6n;C9nQ53zd?E*O^zQhU$3dD!6Iw08>U2jo-AQ)I8RM5ke*&6 zjsN8`D}s70knobWy?c?l)0NpeEr_ypkYsqM3}0*2D_$#6%J~DD#}zR@s%wfG8PPIf z{n#GGCffuyM6h`{)iGMY)p9h}e!jf`D)n}k`*eI~!T*64gs~ZGabElF)(1&wYMUJ=fE{?Jj#7rC!>B^HSZ|O5x zVqI8tR!xl<^L4P#yaHU}W3gaG%g|oMpqq)jrpMi21PDn30l76b-e6UWBpO~CeinKi zNb<4C1_gk6NOmD=K z(0sPhTtrudyh=$)NfFosC~ScQfDY5Xcf$fp^KnY^@p@s2!4m@54G$scW7QY2>3-|^ zJ9ZT950vZP>+;=#^Dt5j?CuK}6m^0H0CYgDIX}0wv}oq35{6|7n!=2PMK0N6*x3M4 zzuQD+CnlO1bSogBAvF^8EoES(hnTx0f*rY{bKW$3?dA=v;B%ep)(mnt-gkGb=wy3G zEof^e2zI(F#0EV2Y;PR)wu zk?WC0{tM}!_r3AG=4xyjVLv=K`Vjv89}hV-#mk7{0fzfKNhy~3gnGl0JvCWN$GDt> zKsE;%+_uugxbsYmLe}jYPK|%)WRE_sIL7mqJO#WTP7V&!O@WC0(wv;7!OUm!QOx&E z({BM?Lce|n(G>V8otgfaRYf0Cr$<=DL#Ekd4t<%dR1wgE7v9W$l%rdY#DKSHADl9U z;o;$o!HDEvZL2D zV8bSW8N=3TR;FzBeWTm>;|X^YSmv-3B)SQZh46R-QD|^ zLSBDS%mI>I%gf7sDPq=-l1OLI!Epfbbb#0}$WeAizZ5kH@!lexxCTK7V}{OEb`QFr zpbXrppAf3XP5d!c<3(HZU?~;`6d(|Qj+}~$O1HTBDq$_-Y)wTB37QCj)w%|%PMOZ#GJM) zz+cMVgs9NR*(QT325@G^Q$Qpo6U1p&8X_m)nu^+*{~%Ds+}#aax3#sYM+DW6YR-`r zX}BBJQMM}NXy}{*2Th2awZ`X?>LZ&+b2j!`yY=in^_)t%nRZsYbp9&+caob#u;F_O z72b5Bi)}8Iuh#3I{Mml6a1F|AHuf#QI4UHUF{?GG7@e*EI|D5YxO4?<+W>V zKxHI~1=U0U^fahB*A@u%jkWqnIf?8P)dc`j8!*<#oiYbyq*FdSJ3AUEfq=PrYkIbm z2-ds)Y7l&#;>p)~dE9b}vjH(T@Z_MXrbhO3yHzLB&o{78_o+;V=^g}w#Wn*A>I|Gd ziDAXH^AS`5vlkB0Fj(fx)%A6QJyF3o2?+@#<6!_SD!Aw+Ary>AU?Z%`Hy`&o1Bv8& z{r~Qf?7dvuptIeK#JjdYZZJj6IS80A2@~UFuk`h-F95eoVV19FN2aa&@76Z@8Jx-QC_bmSK zRyrxem1%5vEY)>EquFj6r!&H3Vn#+he+|;;(gIu{>x3J7^{_=zEj>yd3qqXmwwp;&%^Tm7IGrgM^8m7Q+$JI?2?SsXdzzVLm6f>?&j?xE*C{CjG4`eqpY2(PlL8CWc^hZvnu2aB7DIjnH;&gh z0KzzFs@9eid@94>{C83b`@P$M#DLB?H{e2wH-Ia`aIJqjtP3hH_v6?x5-KN?qxWPg zR%tmr_Z@zVvKc7;p8(lY2M97 z--==3aOJEtF;wNVL{(|RCuQNZVUg#VS$q$@PU`Icx5~cyE6OkG9u!eQKpGK20qK%% z3_7J7q`SKXKGGrGAPqw|LyB~RbPhc*bTfp!mv_D2Kj8cPqO3J*);!OB?z!jeea_zP zQb_L@*=z!eVeUFFu_PyUO*SExph@en%UTC8sV_|v*Wi0JEs+U>jU`9*Y=#8CsMDY$ znf~o%x8SsNe{udtpyz5v{$jJ024A?-m_@*8b31x`d<^VG2a2~mJv||| z87MlEY5}P{MXZC3=un-JO-B>R;bn7_?SC2S?d#Ph9DPo9l;pck;@sUC@H<+mO+uNSvb?Vfibrw z)NtT&yh?m$cQdvX5+i&%+Yy&$*8+`;oZ-D2$ep`z^Et9i;yan|v=egUcXld_3~jqD zF?!=AT+3%zbR5|3zNR{ZYy}$H%?2dEgAJ6k1r|WcVJOj#co^|sPt^kis3{}w@wALf zeJ}=TwTxC;sO0m$XYf1bV}Q?otK*P61?DW+Xpfp*_ZbS$9Cvr;Sq*5g_x+enV`&EC z7yV+*ClU^qCe6)}DpKp1coaw4^ z4yqZCW0_w9U9q;aeAc_U-updS)3uG5M-+_a%3sEll;W;w|E*n6-Q^bd*I;M6`qx3B z9sok{_FhC3EG#YxUYg;7q51v!I)hGhD{9w@nY6*ppx|ILZQEAM&LFHqpF=MkGTs$O zs79iY=h-$$DlmTp!1NEt#O&ITrtB##I|XUJ;QWq%J&Qm7fJsP@d*m_TgZ~`b*x2}N z#7Gc*;9f{j*Yg1BxXO7>mS(P=Q=LqJMXF5tl%`@lgz^esK~S+S3ZMtuUGCvEOjA2W zk-_9LR}Vl{NHl3{2G^|c%xu0>p+g+nhPZeYmO(FOS-{`j`7-$n}$aK{y9 zf4B^FrArNjlR!xKZTAC7Z1v`!*;$RZFEyYr*1>A0McYbGNbbD1+yh0L+&ct00p&wr zh$;4LO^Zfi9ZTzrP90F)j*8shg1xeKii9Y64x<*4)EtMU`2~gq>D?sMA785_^*=|) zHCgN4B7$}0y~=DoqfC;PuTUS^z{+y-Y|dBtd=@lp93^UJ1ti`=&bgAu-F4^~+K7_s z=3}TN+Q13=Zy0{Rm7*_nG66hCSuzez+BM79GHPVk9+s7x zTTMZ_A(i8y0BQ%-zN+f}?k;dziWa(YrFxG6+y%4>;iprY zLbk{mzq=V=n03hdZ;cgH$eAa9R##U~_EExNhwY#;3)wakxzW6P&5DWkD2>~OLFBdr z$M* z?F0taP_FMLnz}Psoyj-wuV&phi!FMGpul%KShRTJ(!A6L%A1p&v$LIv6xppX#_}W2 zR&elgi_;r5H8t>@i-^P*d^K^p^tOZuG;t%R8?E4`Go^L4rHtla_dvjp;AKgK-j)YPZ4&iiI`n>gqHLdrcH}rpLa68ke>8ObIA@SX)!)fNUOQ zvqD}M8b0UI5wC%%5V4>FcgXcY9KYYF z$PDQ>;yLhu7ydg4&xkzHm}gBcE^Ki2yE_!=Mflw{k%JUB&TR#nit#NoohvyH@4X3ky~a3!omFGI<^*a@B#uK#_R! zjTJP^0rbqY#^)%I;&v8fqDP%LNm+=)Lpuu##3Qxi#pitFwFaGT*3@{W@di=+N=H2t4hQA2aSa`CH0ZZpKFQTCSf;? zYFjPlV{OnsM=iDH0gRG>iPKWE8xJR^hKzeA4%#ET*7Io~?s$r9VH!N=q=Hx<=-HxE zybd$Tt#YD`$c=`NRQQ@@lYL@nY z@Wj;YEHDK=I~ z99HL?6&%j&4aR%3gasdvZQ^Hl4)T_JQ%b}*8}Kg5iE~z*#xau{=gY~5rBVQ_c+{X&lVeo9B~WT?gSqN zfNcBiL)@595V7e7Xx4=s2o12dJ5U{FVN(c`g?GCGRQum$yB}@>0v{hAXr2K$W}`o@ zrpyTF=^QQ#@!i2Wz6G_$B``a4L>6l>xdKDM`w@VIg7|+9FrOMB z4GFjl=fw&_Cw)}?#?^v1sa!(ZW@hjkfExQ<1^a1qB@O~HK!B6^KY)Ev0tZFV zKY*#yzdzS!H6eB?x-B0WKk%U!GbX5*K`Ge`Dc>dQ9ZsBjfT}VKNTSm6p^854nRd3e z^}h2Eh}O&xU;}5&?g2LVlSlp!cuEf4!=i(1pk{y27~`>B_hO9Iov3G?wt%yF?a|0H zueI4qv)yJgQPYKlhI(Bor=i@DO{$LAV4#&FPy_wgwElAmcO~@ z>iZtc)_OSs?^~1xJ|(J*@-e$YAQ1=PuZotF0q_pPj-%WNFrEY%fcvMG0?(+LX)ru9 zB5=KN&NftSDP)Fom^APs09^PU0rtE~Bi&{_T!5i*`vLw`qi5o0>>N6iaUDd$+&YIIZP(#@^h;M@t0>;**C6c z`+kzz+8sG^$cP7N4N+Gk1z}_4@)>Vh;2c@^2;#&0Ju?w6u*emC60WE|Z~+*f*Tvog zy15KMYz|nIYI5`azZ(j$k|MXAA{)Hr)dNlB4_i77q#^*vob$X&07OD@VJ3sf4M0G( z?$2atP64WBirXs!)S5ySy#D~#MeJ6!L`mwl>#2%|QnmrOAAW8B&Mu}Xd^0!d3!+)$ z#k`eO`4Paz8cq&=ueE?b0e|DAuMZn~_xc2RyRx!^*ML(g`l9nlumS?EfVV?Kh#&(E zsMStfk@mWrFmfZVSOtMjUs8S!G3rma*fh@J*ta=JOpVLkF4 zob;zFqY^v0C9J+JNX7JInx6Dajbb@v> zE;&F}Y?6PeW&#pu_PnJTTI+7p)*>R8A>5Uz9~wa4MYk~e_qtBDh7 z>RxX3s%Sz$B&l;Ov?yap-n{YohlCFfFM&YacJzbw>h9kIxd6DNv2I}v4d$&PUz{JG z)pX50G6oV9hkfZ8qR+b>bfA_?5XlC|8NA*X6)Fq~nIKRYRyCRoCW6AlF(prhq4i{d zF_s#TPot~$OoMIHWulb0k>X|3va9xuP$+au#|<;K-`KRrx};}0HP0ui{y2xOnn|09 z$jY_@q*P8QjG#;8y`e3@=fZtnpjZV@;qMtzJV}>GG)Wt-Z^_p#d1L3Xe3;;Rdvy$$ zAa}t`5VGufb?6AduvqT6`P-L`2uKN$$_9gecga6Vnm7R$q3Yn%)D8T+6;|Pw8jUB~h-F6{h*t>Jq2CqN) z*l-jiJmvaUSk`smtUC%nEmjFL(aai!AG@=h@2*&KeE0zPMP4$!#4^pY?W9Y~LAHpQ z-7+aj0yUf+~=)*%&=|-5OjI;n{>sVms5@rhqyr$91a4gUhmWO)ZW$lqkiX# zGDw~a`sRPVir3~Wx$_-{i!#))@5(AugPCYzB~Qfh+A838{vmPV12tIcFwI#{d_$*J z;i&7GVfEk|2LYboB=xWR07jQ*c!lq9Gp(iT_YE z(y#qA=~y0@nlTM}3TBE$%MP91etwEQ>GGy9W9qpNXm;K=(j;;Vhnr$W=qpg5GAjNW zW;*2fd?-mT&VWSq z@~J@rXv+BR(lLNY-t?`1IpUB`7pC@Af1B-4k^m)K?feuM4b{dE<@X=9h|bkY@j!I~ zu^AV@@|AFOvc2fECj;M{s8p}0N(fI^wQ5b$T#YqCH0d!pVn3}pz$a#UHhTIHyMk3T z)#TR!gJd)c*2$4kK(-&f@-IYQ;zcJ=Ll1Z31^E22U^^ZcR)Ga+kU`y=zv?r^r!2TZ z+2Xx*q0g15DV0J=mV2%q*GFMfyB6V(o~9OL`^;E_gLGzBu5e=WeIEja(QHfZOY_pf zDUu-zVoB&{fb$Y%nzxoyXY;7tU*@|aU0`FY-0^6wd)U>pi9@LdTm8PAaLe054U;0%dUiA#c>zP`H zd0xlA8zjE1T!}TVnd6kxhWFQ)zR5Tbe)|k$!m4E}rBU|8w`{1>1*sx*i6$VtjV(V# zVR&2Q-J*EdWcf_*I1KC z43{=h)s`b!O@1=TA*3~09QwrXti&- zPJ0MEK^go^YYNKMj&GIT!Ni-UC>j=OxX;YertDq?G#UJz&EsZ=6g#@m%T3E_vY%>F z@fSR&oLC;<3HBg@VHBmklQJgV3?3-v2@M%)$>!#eZ#}`ZCcu1#_)42-;*klU=cQ%& z%rdx#iTNecn>?B}X^=2nOiYneuI97ABfj5crZ@ia3S1AYCGE3-iJdcdLBY`(LCmsI zWqg!Ux`#fR`Z;U!e;!gAKwU&G?EQJRqAJUXzOAy!>6wKKC&b1apY$;q%g3)cxf;pP zpXaXZ0eQV6CD>Cyh3}m+Dh?Kl4bxy)P7xi(=qZU*K6`_@sY}#4Fl6R>;qoeg|91}P z+d8kclQ4h!J%7SQccRusTg-u8>+e#0XuL0?R!KpcH7Sl5u#wWTr`JxQ>BP zCrYYQY%ikLOAVYIf}sB~Rf`Mhv)w!;iu+rbJSp;P17o)w1CuDMYEAuYP+y51 zRP#gEZovvR?qVy{94ON6!tzn5bda#uVY-L`9Ip-OtQQWtoT}&UT#P6Vkxw=L<3mjC z`aMJWN?X$Li)nD0q)ClcBwY#IS+OFI9KWm9ha|OlE*E|Wt+_h6E@Je7p5ETjB5;5^ zW>;1z3&+!diIttQ$6R2V$L?)J7^;j>w+v^}BZVmM!Xx}k&N3J5{u~E($XXrE@cTDdM1lJ6_ zH|uz(IWfFyU;}j(5zG-I<<0E8G}Q$O;N!=S0nT%H8Qi(5!IUUV0~)I`Mv86W_4Te( ztCQ%XKYjJ0T?|Ru>U7O*Q@m~pEU>Y$f&44b%N5q2qJyOt6hnae=2LWZZkzf4kPOq= zsZI%1OxmMK2E)cPsdjmpZVjfwsNWOV?D|QZYEVCBBs!Y@*4$L8UHK)P!p`Y37iN-b zC|?k~Zg+cKJRw>k4zStmV;phf<}NRj^yO*MEeRgC_v`0v%<5u`E+$ zanEEWzyRbpz$DV>!lo@he|da(j@YTyV@l4)V+@NJ?Dp^}T@pTIIe94Wfs;l??w`fO zOMpu=WsQ2ZUfGsP)C@D~jbf^=*s}zrW_=uXJ>;4}{r=;Ru{Dal!AhxPsFwXE5S3ET zb?czggZ9>$H4jUVVx^JI=6efd>#1lBj`(2dofiWew}#3KwzQ}#P3v!SrOs=_N4!6|f=jp!TeocXE?F@v( zt$8W6z#>(x+(JLhb3_?Xk9yZpD@wtow#9|x0w_$F@p-7<-mfe=7Hiv2xT&TUE}F6r z>_`Q=U}$%i#ww5GZO#2E7^?Yn7&Q1<++bxmj?ZXqa`nX_!UCsSR9rDpH84anRnXi0 zqf<~PY9Tk@#ozG>3|zu>R^ii=xzZiXAA57#*@2_ji3L2#(QW^Fl2=?(f86eLO0bI> zo3BggQ%wFS_}a$;57HNLS9?dvj^Vhv-EmiVs@L$AmR4_9M0?IO6O-Fr2C*_*DJAOZ z$jMN=D%r=+CRUyLeEZ}K#)ae9rd#Tx_M*sxybAFf%jne>ak7Bjc9Sq0oBcK@0)nyM z2z&D;q#iP2TD@VhHZecOu5>)QdGtLY&}opgl2SQ$Q$DSmW_p;EDo`fPIwK^6q{d+P zK=SOzKjJJ$$)>}BL2Y+_J3KeD)3(d@ELq(If{L@Qac4m*SAn2tx#YED*V>YXl#sqxEhpDj+I*%P`4W1gvIWK`q29f1+WaBTVzEL4akRASVu+)cVAyPZ z-^=Z~HsEyT<|eL+$>v$YrIp=|?dsY%Fs-`SGIkEg9kI{-l%I0=>*ABr%w)mVY?uj8>?ED$-joHm|&#g>t~O1{6pBNE)v|E}ZjzRfwJ^Kee&LZ8fFJrB5sWuDU$a8$ z(h$zPwT0kb{M*?qDdM9gL!vV>%H#UXEY>NK7VbQv9B0j592cCEb3Y&?fd4d8*z2rp z#H!**RnV#k4>zWq&?xurd0e_^#4B?<;-KqMG9RkHGYLW$YKi$gok z*BnO`6el>g*YDW7y~zNSY235CRry@*XIC-nWG>v?$)a8SOL{?Tae;yBj~rc=Z4q4{}i`nb5XD0Nn((*o&_WwrC|y{R0z4iC$7 z5w|*pnJA8el6+Rqqk-*kg{Y=4`=89jfp5yn)~=iM zXgeR6N?~)T@5z|aBVV(qSE?^WR*xO?pf9@{j!lz151l*KoG$4YpC;tbjPP2R7gFw> zXsHTMBO&qIO*kIwVdO5VpfwYboCUCcU!Np^NM64#@f-lXzJi(HzD(v~KpE~X2r_~J zEeHg(^w`Z-fc5gNqjoULDbMW ze6USOeXQJ4@9H1w6!HCA*mEkkjYm9c(qpc8~QNE z>obep!y20%=ROhdYzbi^r?g#Pu!o}BH1;I7PEGDA>`VUP2*;M$|8&m(3U4HY@Y*{18SmWdrR zdBz|y(eS-@`p{Ww6C()oTGfo;DhX00)n5lLc4%&EEvxF^iziKHPy?QVOuk2`UHM;b`FnFkBN}5Ijv5ZNd62X){(w5J*6RC0v%pT(@1kChX^p2E2>WZHNrNzVBvLIWXxia=p2+goN>C85p>=K z03`1=el;CmSFcE-mtcJ5^W+w5*LYY_t7XuC# zRa$?zB(vNAusbuKGj3Y!I&9g0Id}K&a!4skYf|*-CPvSq=J+J$6ICANW6GFv4wW#O z3ID`8WT4)1Q^HUBylB5s)@y%CjE-DHN%N@%tbtsnDJuk zIht71#;viuVJWk@L;s{p;D&oT6=etE5g#uld!)70=~aXwO+})9RvM|lggr8SLc;Vi z*gGL#h)+bbN&-xkOi^lQdg;h2H0*EmcXNL?D=J*r%4`iK0FkiNp!{PW1dr$ZGy5

yGiz+5BYdojBZNmd$V2-P=QB~{&*8t-3?p8B@)2rd;Yuz5tQ&RKy+l$wDJ&v%wB ztJAKdZWjDRl@X6Mqk~l?GuN_2d@{>N$zYn>^zvd7@{YAVd?yvT@_9E*PB&JS5^s+T z*X$CxCu%9K>QOk#bw~50>K%3B->O&+f?8Z$hi>ELH)nHvO4L)NdcD+9MkGO#It-oA zKelP{@-_bGPi4B;xD!nZ8aQ;{DdZ8HMgU9b(AGuNv2Tn1KQojk;!=4w-ZEzlHGlD4 z9{c-hjsdt}JNIv-x4iXSnm*1ls##zZexw_dH$apeG{RKB_Z+3Njp?899Kpt{@It?G zSk-S&7w{^jS-<1-1Y<-Rm$Gu~eY!?aEm@PW9M%ndN#^&lnmxoA{DJR2$y4LWGX~({ zeo^jz9<)jlmk|{rs2KUn*8IuD&L*$2u~OJUvJIG)_iW*K^Q1t0Yg4_~uxrDr$X;|7X- z1YwAQkVa%nMii44D8^EEs9+g}hD<7H<#?jQ-cx=_*c@=oDc*gsi9Of&+s{t6vZuY@ zi*5|n@RMLNm1)@ir284loIJo)` z61h-(agC1S+VKA5#Kn1Zt)lJ5?m{0oz)}8v^c{&-$FKPsM6%YqxR?-0WtaNoDq(s# z5p}j2=wgAi=%Z279hr3#6qF~W4;}&3sX!AFJ5)% zjc@56U3n*%$kpXBO>})iL9tp?I<)lE89La%IF_<;S5e-Ct~I@7w<+_MNjAfM&_DSO zUJmMMinC)&`WWf2zgAnUE#50QUI+SShInUx{lJkz7iybTNcLo~Y679G3+6_r>t4Ml zQ%*9TFp13QSxD~@EQ3vbF5o3JR1K@8P@j)7(St)Mm>kX~<|vNcdd_(yO3h2!5-(ZEC%`e)!k;xnfMw{ML2t?+E;xZT zO_y)@L_3fx=k=gh8H2Vmt2xH*vF4n%oJ>AM$WmI7Bcfl!)f1IRV%LqbgG;EbIG)+U z6*g3`7u0h~h8vT;+l3p`X&O#QU>8`(9)ds`4>+R>p39?_Sj8GIy=5z~f^J%OY`sWM z@$MeR)c+Frt#8MA+`{Mk)H-6P%RUY+KAlFc6}@@4x+5jYnA(>0S|tHDT{vrsL>T`3 zM`^CwrYQfRwRw?)ey*kczX4RFT*h9<&mu(nZ$b`-&JR;r`Z3f-mUQk9!PfBtAH#F* z7cs3Kxc}s*osIzt|`swJQ8Dq`zG{rMJ?QSN4 zM!kXeSa^~%gQ~Ly<=RipoSukAorrE)I#I^Tgj%cNFDgG_O}q^Hth^9=8plVqg3sa6 zzv>`>4AVxNplVX~n7ll>i#Q265T%As-1~XCHRRH~d}4q5;zjkZ0Lrey`Afeb8Uo~3 zQDLul3|0;GJHxRT_sz<&{og}VIMSU8Vt+UklP)OT71Nzv5C{J%>3B|4*bIAp65hu* z=v>J%F&$1e10#3OzD!+bsS!Ue1==_1yb_1c9*2is!m2}I44 zNx7lrcYjoccEwau`8fX>k*X43LmrC7$T`=xY61O8<8gieX(_jk$h@`*5iQbPCq1NA z&SNOdw+d5;xq4x{pl?l_y!+7wL$%%csRqFtf&6us$_7W#ZjFssR4 z_Vd-hv%3yCU)=ar!{xRuW4fn@u^kGh7pgiIc79^%9a%!ToGl6WY-DJfUoL&%Q)%6~ zjpzSLbKI?A_vhHBb~o5GW@?Q!uRpGoW9i)052rA}!s8RKv#M{4Mq63t;b5%ewS8Is zA*oGffeUMpg=YEg;hjTiJ$ma>D?t&0r*O;#3{U(D7Z{`Bx ze`4}zD7X5Pz-?506!psO%%_6u=0V~M literal 0 HcmV?d00001 diff --git a/docs/协作/evidence/B04-review-01/app-report.json b/docs/协作/evidence/B04-review-01/app-report.json new file mode 100644 index 0000000..fc52edc --- /dev/null +++ b/docs/协作/evidence/B04-review-01/app-report.json @@ -0,0 +1,1779 @@ +{ + "codeSha": "342820690f644fb1cb3b0a76b143dbcd41aac8c4", + "scope": "Unmodified built production main/preload/renderer with synthetic persisted history; 3 session selections, 12 toggles, consecutive real rAF frames; background throttling disabled only for QA window; no model requests", + "checks": [ + { + "name": "b04-a cycle0 no URI text", + "pass": true + }, + { + "name": "b04-a cycle0 no giant height", + "pass": true + }, + { + "name": "b04-a cycle0 decoded image in frames", + "pass": true + }, + { + "name": "b04-a cycle1 no URI text", + "pass": true + }, + { + "name": "b04-a cycle1 no giant height", + "pass": true + }, + { + "name": "b04-a cycle1 decoded image in frames", + "pass": true + }, + { + "name": "b04-a cycle2 no URI text", + "pass": true + }, + { + "name": "b04-a cycle2 no giant height", + "pass": true + }, + { + "name": "b04-a cycle2 decoded image in frames", + "pass": true + }, + { + "name": "b04-a cycle3 no URI text", + "pass": true + }, + { + "name": "b04-a cycle3 no giant height", + "pass": true + }, + { + "name": "b04-a cycle3 decoded image in frames", + "pass": true + }, + { + "name": "b04-b cycle0 no URI text", + "pass": true + }, + { + "name": "b04-b cycle0 no giant height", + "pass": true + }, + { + "name": "b04-b cycle0 decoded image in frames", + "pass": true + }, + { + "name": "b04-b cycle1 no URI text", + "pass": true + }, + { + "name": "b04-b cycle1 no giant height", + "pass": true + }, + { + "name": "b04-b cycle1 decoded image in frames", + "pass": true + }, + { + "name": "b04-b cycle2 no URI text", + "pass": true + }, + { + "name": "b04-b cycle2 no giant height", + "pass": true + }, + { + "name": "b04-b cycle2 decoded image in frames", + "pass": true + }, + { + "name": "b04-b cycle3 no URI text", + "pass": true + }, + { + "name": "b04-b cycle3 no giant height", + "pass": true + }, + { + "name": "b04-b cycle3 decoded image in frames", + "pass": true + }, + { + "name": "b04-a cycle0 no URI text", + "pass": true + }, + { + "name": "b04-a cycle0 no giant height", + "pass": true + }, + { + "name": "b04-a cycle0 decoded image in frames", + "pass": true + }, + { + "name": "b04-a cycle1 no URI text", + "pass": true + }, + { + "name": "b04-a cycle1 no giant height", + "pass": true + }, + { + "name": "b04-a cycle1 decoded image in frames", + "pass": true + }, + { + "name": "b04-a cycle2 no URI text", + "pass": true + }, + { + "name": "b04-a cycle2 no giant height", + "pass": true + }, + { + "name": "b04-a cycle2 decoded image in frames", + "pass": true + }, + { + "name": "b04-a cycle3 no URI text", + "pass": true + }, + { + "name": "b04-a cycle3 no giant height", + "pass": true + }, + { + "name": "b04-a cycle3 decoded image in frames", + "pass": true + }, + { + "name": "MutationObserver saw no URI text nodes", + "pass": true + }, + { + "name": "zero captured renderer errors", + "pass": true + }, + { + "name": "production image preview opens", + "pass": true + }, + { + "name": "preview image decodes", + "pass": true + }, + { + "name": "actual image download bytes preserved", + "pass": true + }, + { + "name": "download traverses native save dialog adapter", + "pass": true + }, + { + "name": "image preview closes", + "pass": true + } + ], + "traces": [ + { + "id": "b04-a", + "index": 0, + "cycle": 0, + "samples": [ + { + "label": "before", + "time": 790.0999999996275, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "click", + "time": 790.3999999985099, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-0", + "time": 796.6999999992549, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-1", + "time": 799.0999999996275, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-2", + "time": 799.3999999985099, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-3", + "time": 803.8999999985099, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-4", + "time": 808.5, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-5", + "time": 812.1999999992549, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-6", + "time": 816.7999999988824, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-7", + "time": 819.8999999985099, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-8", + "time": 824.5999999996275, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-9", + "time": 829.3999999985099, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-10", + "time": 832.5999999996275, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-11", + "time": 837.0999999996275, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + } + ] + }, + { + "id": "b04-a", + "index": 0, + "cycle": 1, + "samples": [ + { + "label": "before", + "time": 988.5999999996275, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "click", + "time": 988.7999999988824, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-0", + "time": 992.8999999985099, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-1", + "time": 994.3999999985099, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-2", + "time": 995.6999999992549, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-3", + "time": 999.3999999985099, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-4", + "time": 1003.5, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-5", + "time": 1007.8999999985099, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-6", + "time": 1012.5, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-7", + "time": 1016, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-8", + "time": 1020.0999999996275, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-9", + "time": 1025.199999999255, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-10", + "time": 1028.199999999255, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-11", + "time": 1032.5999999996275, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + } + ] + }, + { + "id": "b04-a", + "index": 0, + "cycle": 2, + "samples": [ + { + "label": "before", + "time": 1034.199999999255, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "click", + "time": 1034.2999999988824, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-0", + "time": 1039.7999999988824, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-1", + "time": 1041.8999999985099, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-2", + "time": 1045.3999999985099, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-3", + "time": 1049.3999999985099, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-4", + "time": 1053.8999999985099, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-5", + "time": 1058.3999999985099, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-6", + "time": 1062.2999999988824, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-7", + "time": 1067.2999999988824, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-8", + "time": 1070.2999999988824, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-9", + "time": 1074.3999999985099, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-10", + "time": 1078.7999999988824, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-11", + "time": 1082.7999999988824, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + } + ] + }, + { + "id": "b04-a", + "index": 0, + "cycle": 3, + "samples": [ + { + "label": "before", + "time": 1083.2999999988824, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "click", + "time": 1083.5, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-0", + "time": 1087.2999999988824, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-1", + "time": 1091.3999999985099, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-2", + "time": 1096.3999999985099, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-3", + "time": 1099.3999999985099, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-4", + "time": 1103.5, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-5", + "time": 1107.699999999255, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-6", + "time": 1112.699999999255, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-7", + "time": 1116.5999999996275, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-8", + "time": 1121.699999999255, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-9", + "time": 1125.5999999996275, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-10", + "time": 1128.5999999996275, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-11", + "time": 1133.5, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + } + ] + }, + { + "id": "b04-b", + "index": 1, + "cycle": 0, + "samples": [ + { + "label": "before", + "time": 1459.2999999988824, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "click", + "time": 1459.5, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-0", + "time": 1465.3999999985099, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-1", + "time": 1468.0999999996275, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-2", + "time": 1470.199999999255, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-3", + "time": 1475, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-4", + "time": 1478.3999999985099, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-5", + "time": 1483.2999999988824, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-6", + "time": 1487.2999999988824, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-7", + "time": 1491.699999999255, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-8", + "time": 1496.0999999996275, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-9", + "time": 1499.2999999988824, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-10", + "time": 1504.199999999255, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-11", + "time": 1508.2999999988824, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + } + ] + }, + { + "id": "b04-b", + "index": 1, + "cycle": 1, + "samples": [ + { + "label": "before", + "time": 1657.8999999985099, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "click", + "time": 1658.0999999996275, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-0", + "time": 1660.8999999985099, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-1", + "time": 1662.5, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-2", + "time": 1666.3999999985099, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-3", + "time": 1670.7999999988824, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-4", + "time": 1674.699999999255, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-5", + "time": 1679.2999999988824, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-6", + "time": 1682.7999999988824, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-7", + "time": 1687.2999999988824, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-8", + "time": 1691.3999999985099, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-9", + "time": 1695.2999999988824, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-10", + "time": 1699.2999999988824, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-11", + "time": 1704.2999999988824, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + } + ] + }, + { + "id": "b04-b", + "index": 1, + "cycle": 2, + "samples": [ + { + "label": "before", + "time": 1704.7999999988824, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "click", + "time": 1704.8999999985099, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-0", + "time": 1707.699999999255, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-1", + "time": 1711.7999999988824, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-2", + "time": 1716.0999999996275, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-3", + "time": 1720.699999999255, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-4", + "time": 1724.5999999996275, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-5", + "time": 1729.699999999255, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-6", + "time": 1733.5999999996275, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-7", + "time": 1737.3999999985099, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-8", + "time": 1742, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-9", + "time": 1745.0999999996275, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-10", + "time": 1749.5, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-11", + "time": 1753.8999999985099, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + } + ] + }, + { + "id": "b04-b", + "index": 1, + "cycle": 3, + "samples": [ + { + "label": "before", + "time": 1754.5, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "click", + "time": 1754.699999999255, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-0", + "time": 1758.8999999985099, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-1", + "time": 1762, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-2", + "time": 1766.3999999985099, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-3", + "time": 1771.5999999996275, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-4", + "time": 1774.699999999255, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-5", + "time": 1779.199999999255, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-6", + "time": 1783.0999999996275, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-7", + "time": 1788.0999999996275, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-8", + "time": 1791.0999999996275, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-9", + "time": 1796.0999999996275, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-10", + "time": 1800.0999999996275, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-11", + "time": 1804.5999999996275, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + } + ] + }, + { + "id": "b04-a", + "index": 2, + "cycle": 0, + "samples": [ + { + "label": "before", + "time": 1836.7999999988824, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "click", + "time": 1837, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-0", + "time": 1841.7999999988824, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-1", + "time": 1846.5999999996275, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-2", + "time": 1850.5, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-3", + "time": 1854.0999999996275, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-4", + "time": 1859.199999999255, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-5", + "time": 1862.699999999255, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-6", + "time": 1866.5999999996275, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-7", + "time": 1870.7999999988824, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-8", + "time": 1876, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-9", + "time": 1878.5999999996275, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-10", + "time": 1883.7999999988824, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-11", + "time": 1888.3999999985099, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + } + ] + }, + { + "id": "b04-a", + "index": 2, + "cycle": 1, + "samples": [ + { + "label": "before", + "time": 2052.89999999851, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "click", + "time": 2053.0999999996275, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-0", + "time": 2057.5, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-1", + "time": 2059.5999999996275, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-2", + "time": 2062.699999999255, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-3", + "time": 2065.89999999851, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-4", + "time": 2070.5, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-5", + "time": 2074.5, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-6", + "time": 2079.5, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-7", + "time": 2083, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-8", + "time": 2087.199999999255, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-9", + "time": 2091.7999999988824, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-10", + "time": 2095.89999999851, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-11", + "time": 2100, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + } + ] + }, + { + "id": "b04-a", + "index": 2, + "cycle": 2, + "samples": [ + { + "label": "before", + "time": 2100.89999999851, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "click", + "time": 2101.0999999996275, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-0", + "time": 2105.0999999996275, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-1", + "time": 2108.0999999996275, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-2", + "time": 2112.39999999851, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-3", + "time": 2116.89999999851, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-4", + "time": 2120.39999999851, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-5", + "time": 2124.5, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-6", + "time": 2128.5999999996275, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-7", + "time": 2133.5999999996275, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-8", + "time": 2137.5999999996275, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-9", + "time": 2140.7999999988824, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-10", + "time": 2145.5999999996275, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-11", + "time": 2149.7999999988824, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + } + ] + }, + { + "id": "b04-a", + "index": 2, + "cycle": 3, + "samples": [ + { + "label": "before", + "time": 2151.2999999988824, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "click", + "time": 2151.5, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-0", + "time": 2156.39999999851, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-1", + "time": 2158.5999999996275, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-2", + "time": 2161.89999999851, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-3", + "time": 2166.89999999851, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-4", + "time": 2169.89999999851, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-5", + "time": 2175, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-6", + "time": 2178.5, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-7", + "time": 2183.0999999996275, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-8", + "time": 2187.5, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-9", + "time": 2191, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-10", + "time": 2195, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-11", + "time": 2199, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + } + ] + } + ], + "minHeight": 322.75, + "maxHeight": 357, + "errors": [] +} \ No newline at end of file diff --git a/docs/协作/evidence/B04-review-01/build-negative.mjs b/docs/协作/evidence/B04-review-01/build-negative.mjs new file mode 100644 index 0000000..8da6f65 --- /dev/null +++ b/docs/协作/evidence/B04-review-01/build-negative.mjs @@ -0,0 +1 @@ +import fs from 'node:fs';import path from 'node:path';import {execFileSync} from 'node:child_process';import{build}from'esbuild';const out=fs.mkdtempSync(path.resolve('.tmp/b04-baseline-'));const code=execFileSync('git',['show','0b613e5:src/renderer/src/workbuddy/images/MarkdownImage.tsx'],{encoding:'utf8'});await build({entryPoints:['scripts/b04-image-lifecycle-fixture.tsx'],outfile:path.join(out,'fixture.js'),bundle:true,platform:'browser',format:'iife',jsx:'automatic',loader:{'.woff2':'dataurl','.woff':'dataurl','.ttf':'dataurl','.svg':'dataurl','.png':'dataurl'},plugins:[{name:'baseline-negative-control',setup(b){b.onLoad({filter:/[\\/]images[\\/]MarkdownImage\.tsx$/},args=>({contents:code,loader:'tsx',resolveDir:path.dirname(args.path)}))}}],logLevel:'error'});fs.copyFileSync('.tmp/b04-image-pmmWZx/index.html',path.join(out,'index.html'));console.log(out); diff --git a/docs/协作/evidence/B04-review-01/build.txt b/docs/协作/evidence/B04-review-01/build.txt new file mode 100644 index 0000000..c6ac0fb --- /dev/null +++ b/docs/协作/evidence/B04-review-01/build.txt @@ -0,0 +1,660 @@ + +> ycode@0.0.7 build +> npm run typecheck && electron-vite build + + +> ycode@0.0.7 typecheck +> tsc --noEmit -p tsconfig.node.json && tsc --noEmit -p tsconfig.web.json + +vite v8.3.4 building ssr environment for production... +transforming... +✓ 444 modules transformed. +rendering chunks... +out/main/index.mjs 1,599.48 kB + +✓ built in 251ms +vite v8.3.4 building ssr environment for production... +transforming... +✓ 2 modules transformed. +rendering chunks... +out/preload/index.cjs 15.89 kB + +✓ built in 12ms +vite v8.3.4 building client environment for production... +transforming... +✓ 3039 modules transformed. +rendering chunks... +out/renderer/settings.html 1.57 kB +out/renderer/index.html 1.75 kB +out/renderer/assets/KaTeX_Size3-Regular-CTq5MqoE.woff 4.42 kB +out/renderer/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 4.92 kB +out/renderer/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 5.20 kB +out/renderer/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 5.46 kB +out/renderer/assets/KaTeX_Size4-Regular-BF-4gkZK.woff 5.98 kB +out/renderer/assets/KaTeX_Size2-Regular-oD1tc_U0.woff 6.18 kB +out/renderer/assets/KaTeX_Size1-Regular-C195tn64.woff 6.49 kB +out/renderer/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 6.90 kB +out/renderer/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 6.91 kB +out/renderer/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf 7.58 kB +out/renderer/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff 7.65 kB +out/renderer/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff 7.71 kB +out/renderer/assets/archify-owner-avatar-BdE-HOjX.jpg 9.46 kB +out/renderer/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 9.64 kB +out/renderer/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 10.34 kB +out/renderer/assets/KaTeX_Size4-Regular-DWFBv043.ttf 10.36 kB +out/renderer/assets/KaTeX_Script-Regular-D5yQViql.woff 10.58 kB +out/renderer/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 11.31 kB +out/renderer/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 11.34 kB +out/renderer/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf 11.50 kB +out/renderer/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 12.02 kB +out/renderer/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 12.21 kB +out/renderer/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf 12.22 kB +out/renderer/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff 12.31 kB +out/renderer/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf 12.34 kB +out/renderer/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf 12.36 kB +out/renderer/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff 13.20 kB +out/renderer/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff 13.29 kB +out/renderer/assets/workbuddy-buddy-thumbnail-2713ed5b-CUhW0EYr.png 13.42 kB +out/renderer/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 13.56 kB +out/renderer/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff 14.11 kB +out/renderer/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff 14.40 kB +out/renderer/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff 16.02 kB +out/renderer/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 16.40 kB +out/renderer/assets/KaTeX_Math-Italic-t53AETM-.woff2 16.44 kB +out/renderer/assets/KaTeX_Script-Regular-C5JkGWo-.ttf 16.64 kB +out/renderer/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 16.78 kB +out/renderer/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 16.98 kB +out/renderer/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff 18.66 kB +out/renderer/assets/KaTeX_Math-Italic-DA0__PXp.woff 18.74 kB +out/renderer/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff 19.41 kB +out/renderer/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf 19.43 kB +out/renderer/assets/KaTeX_Fraktur-Regular-CB_wures.ttf 19.57 kB +out/renderer/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf 19.58 kB +out/renderer/assets/KaTeX_Main-Italic-BMLOBm91.woff 19.67 kB +out/renderer/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf 22.36 kB +out/renderer/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf 24.50 kB +out/renderer/assets/KaTeX_Main-Bold-Cx986IdX.woff2 25.32 kB +out/renderer/assets/KaTeX_Main-Regular-B22Nviop.woff2 26.27 kB +out/renderer/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf 27.55 kB +out/renderer/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 28.07 kB +out/renderer/assets/KaTeX_Main-Bold-Jm3AIy58.woff 29.91 kB +out/renderer/assets/KaTeX_Main-Regular-Dr94JaBh.woff 30.77 kB +out/renderer/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf 31.19 kB +out/renderer/assets/KaTeX_Math-Italic-flOr_0UB.ttf 31.30 kB +out/renderer/assets/design-case-3-DaIvrslH.png 32.76 kB +out/renderer/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf 32.96 kB +out/renderer/assets/KaTeX_AMS-Regular-DMm9YOAa.woff 33.51 kB +out/renderer/assets/KaTeX_Main-Italic-3WenGoN9.ttf 33.58 kB +out/renderer/assets/design-case-4-0hVdAJQR.png 45.16 kB +out/renderer/assets/design-case-2-BH_iQ5r3.png 45.56 kB +out/renderer/assets/KaTeX_Main-Bold-waoOVXN0.ttf 51.33 kB +out/renderer/assets/design-case-1-DOYiafVz.png 52.97 kB +out/renderer/assets/KaTeX_Main-Regular-ypZvNtVU.ttf 53.58 kB +out/renderer/assets/KaTeX_AMS-Regular-DRggAlZN.ttf 63.63 kB +out/renderer/assets/workbuddy-appearance-dark-CXQX3TZX.png 109.34 kB +out/renderer/assets/workbuddy-appearance-light-BbpPCukh.png 113.02 kB +out/renderer/assets/codicon-ngg6Pgfi-ngg6Pgfi.ttf 121.97 kB +out/renderer/assets/kimi-DiLyRSiJ.svg 129.22 kB +out/renderer/assets/json.worker-DEWrzUkU-FVRG9O7E.js 438.21 kB +out/renderer/assets/worker-portable-D1lwTqsk-Dg0RNmO0.js 456.22 kB +out/renderer/assets/landing-hero-B6659kdy.png 629.28 kB +out/renderer/assets/html.worker-BC4B-9NY-BDdNc3ca.js 756.63 kB +out/renderer/assets/css.worker-D7wyZb8r-YRw1jg-F.js 1,086.92 kB +out/renderer/assets/ts.worker-BsXRl7a--BbqraoNr.js 8,187.30 kB +out/renderer/assets/ArtifactPierreDiff-CNAfnhAF.css 1.16 kB +out/renderer/assets/GeneralSettingsPanel-CntDyB52.css 1.25 kB +out/renderer/assets/AgentsSettingsPanel-R0teGDyD.css 2.56 kB +out/renderer/assets/AboutHelpSettingsPanel-ksqGLObi.css 5.72 kB +out/renderer/assets/updates-ui-COSnOGKS.css 6.84 kB +out/renderer/assets/AppearanceSettingsPanel-DcaRECSa.css 8.03 kB +out/renderer/assets/ShortcutsSettingsPanel-Bu_5_488.css 18.05 kB +out/renderer/assets/MemorySettingsPanel-C3dtDAif.css 32.49 kB +out/renderer/assets/ModelSettingsPanel-BjNmxQAH.css 88.98 kB +out/renderer/assets/PersonalizationSettingsPanel-DnAyzaM6.css 98.77 kB +out/renderer/assets/app-DH7L1ZF2.css 259.93 kB +out/renderer/assets/index-Cj0yjvuz.css 2,685.07 kB +out/renderer/assets/pie-WAS4IAKB-1a9lbjhh.js 0.11 kB +out/renderer/assets/info-A6RAGUB7-Dsq8pPGK.js 0.11 kB +out/renderer/assets/radar-RG4KPBEZ-BwNT2qWb.js 0.11 kB +out/renderer/assets/packet-AYTQ26CC-C-iOIVQo.js 0.11 kB +out/renderer/assets/cynefin-OW5HDTMX-CTYbUR58.js 0.11 kB +out/renderer/assets/treemap-WGGIJYW6-CWek0LQD.js 0.11 kB +out/renderer/assets/wardley-WFR3VGLG-BnrEXTnU.js 0.11 kB +out/renderer/assets/gitGraph-4MIJSDKK-NHpEvzKf.js 0.12 kB +out/renderer/assets/railroad-74A4TZTK-CyYHr3KR.js 0.12 kB +out/renderer/assets/treeView-Q6P3EWNA-CzdWA6Mh.js 0.12 kB +out/renderer/assets/railroad-peg-WCYAUIDC-DyA9P8dX.js 0.12 kB +out/renderer/assets/architecture-7GRP2DOG-VyF0wzFW.js 0.12 kB +out/renderer/assets/railroad-abnf-HS5TGJTU-DWOH6PDU.js 0.12 kB +out/renderer/assets/railroad-ebnf-LZEXJU2U-B8jXqV-T.js 0.12 kB +out/renderer/assets/eventmodeling-NTZA5JFV-Dmu4IHsI.js 0.12 kB +out/renderer/assets/array-75Ih5Qg4.js 0.16 kB +out/renderer/assets/channel-BWYdHcz8.js 0.25 kB +out/renderer/assets/init-DHdG6DHP.js 0.27 kB +out/renderer/assets/chunk-Y2CYZVJY-CrOJDJJy.js 0.38 kB +out/renderer/assets/chunk-JWPE2WC7-BWmaSNkB.js 0.42 kB +out/renderer/assets/chunk-2Q5K7J3B-BBOGhvIe.js 0.44 kB +out/renderer/assets/prism-tsx-BJWEHjlk.js 0.48 kB +out/renderer/assets/chunk-5VM5RSS4-D50WUAUX.js 0.52 kB +out/renderer/assets/chunk-XXDRQBXY-BsO966Nz.js 0.58 kB +out/renderer/assets/flowDiagram-HODETNUW-B_Hn1JJX.js 0.59 kB +out/renderer/assets/prism-json-DxLGXN1o.js 0.62 kB +out/renderer/assets/codeowners-C7Y3CTAA-BmB2_gvY.js 0.75 kB +out/renderer/assets/prism-clike-BcH_eOfE.js 0.89 kB +out/renderer/assets/tsv-DVa1_Ovr-BeS2kE5e.js 0.94 kB +out/renderer/assets/shellsession-C0HwRpr0-B630Ulnl.js 0.96 kB +out/renderer/assets/javascript-DGySzfUB-CQaVVFGk.js 0.99 kB +out/renderer/assets/settings-CauUETdq.js 1.01 kB +out/renderer/assets/infoDiagram-27XIBGKW-DAu8ItxJ.js 1.09 kB +out/renderer/assets/swimlanesDiagram-VR7AAH4N-Ct7OYBFw.js 1.09 kB +out/renderer/assets/html-derivative-D3Jld805-D0QQ5MTi.js 1.10 kB +out/renderer/assets/prism-go-Cw8Jg9YT.js 1.11 kB +out/renderer/assets/classDiagram-ZZMXUADV-DAB1INnK.js 1.16 kB +out/renderer/assets/classDiagram-v2-VYDZK3BY-C1gps0gA.js 1.16 kB +out/renderer/assets/stateDiagram-v2-MP3YSRHH-DMDk3VHP.js 1.16 kB +out/renderer/assets/qmldir-DIq06gp2-CFVtueeV.js 1.20 kB +out/renderer/assets/git-rebase-CgwCWTNR-Cpss9r90.js 1.23 kB +out/renderer/assets/chunk-POPQ4Y6H-C0lMyeyY.js 1.23 kB +out/renderer/assets/azcli-Bsxmaz-H-Dgh56k5-.js 1.26 kB +out/renderer/assets/personalization-prefs-DASR3vwn.js 1.28 kB +out/renderer/assets/csv-BRhERoQG-DKrQczXm.js 1.36 kB +out/renderer/assets/prism-latex-CHSuA_Lo.js 1.38 kB +out/renderer/assets/jsx-runtime-C48wkPcG.js 1.41 kB +out/renderer/assets/git-commit-DGtBy1vY-s2uHofP2.js 1.47 kB +out/renderer/assets/AgentsSettingsPanel-CMYBwUKH.js 1.56 kB +out/renderer/assets/xsl-DV28r3Jw-B8bWzO_h.js 1.59 kB +out/renderer/assets/dotenv-DXc2fSbR-CUbEjgJq.js 1.62 kB +out/renderer/assets/general-settings-icons-DOmPIusw.js 1.64 kB +out/renderer/assets/prism-scala-CRTYzCpy.js 1.65 kB +out/renderer/assets/ini-D4-1Iswn-DaNDgFS8.js 1.65 kB +out/renderer/assets/prism-typescript-D-7ZUUQ-.js 1.65 kB +out/renderer/assets/sizeCapture-INFHLROL-CCEMv_MJ.js 1.68 kB +out/renderer/assets/csp-Bsbijh2H-033SDyRW.js 1.69 kB +out/renderer/assets/sparql-Mj-YIaDH-DAUou2oc.js 1.71 kB +out/renderer/assets/prism-css-Cmyw76Xa.js 1.73 kB +out/renderer/assets/ini-DMSv7OY2-xgSkktY4.js 1.74 kB +out/renderer/assets/rolldown-runtime-BJCASTsb-DKQFAHUF.js 1.78 kB +out/renderer/assets/line-C0E7FoJh.js 1.89 kB +out/renderer/assets/fortran-fixed-form-D91DiZLE-NxoUlVkB.js 1.91 kB +out/renderer/assets/docker-B7J3eHK7-C3FNXPS_.js 1.96 kB +out/renderer/assets/hxml-938TheZ7-pE5ojWPT.js 1.97 kB +out/renderer/assets/desktop-BwI-o01e-Da9rFJOd.js 2.03 kB +out/renderer/assets/ordinal-CmpyCcm_.js 2.22 kB +out/renderer/assets/prism-c-B7tsC1jE.js 2.23 kB +out/renderer/assets/rolldown-runtime-EITvVbkG.js 2.32 kB +out/renderer/assets/erb-BgMB3Uiw-CLkRQ9Hf.js 2.40 kB +out/renderer/assets/prism-kotlin-Bc2NQYRR.js 2.43 kB +out/renderer/assets/jssm-CIisorE2-ggX0kbSA.js 2.44 kB +out/renderer/assets/prism-python-CTkfasgb.js 2.48 kB +out/renderer/assets/reg-mzCtpvUf-BHC3bGU6.js 2.54 kB +out/renderer/assets/bat-2PwuskcT-BbFmQdFU.js 2.55 kB +out/renderer/assets/prism-mermaid-DSoNsh6-.js 2.56 kB +out/renderer/assets/pla-HAHcX3CH-DHyEyFew.js 2.57 kB +out/renderer/assets/sb-O6mPt74--_nMcDiF8.js 2.60 kB +out/renderer/assets/chunk-GVQU2GXP-7eKncF4J.js 2.61 kB +out/renderer/assets/edge-DcEd3r9D-ZJX3cnY_.js 2.62 kB +out/renderer/assets/scheme-C-yCXfo--BHhgh59u.js 2.66 kB +out/renderer/assets/flow9-z3HgHIql-qOic_Sv2.js 2.72 kB +out/renderer/assets/prism-yaml-cmjQ_1eD.js 2.77 kB +out/renderer/assets/gleam-DEEAoY6G-DgJJp7nh.js 2.78 kB +out/renderer/assets/railroadDiagram-O6MQD6OU-Cgcpj7Hd.js 2.78 kB +out/renderer/assets/diff-lAxbRYdS--5gtlmD4.js 2.79 kB +out/renderer/assets/hy-BKymZdC0-4uNvYh3y.js 2.86 kB +out/renderer/assets/dockerfile-CnkhFuxG-CfXHMZr-.js 3.01 kB +out/renderer/assets/openscad-BRTETpP_-BThzc9qL.js 3.03 kB +out/renderer/assets/pascaligo-DI1dd1Zd-D23AoFdQ.js 3.03 kB +out/renderer/assets/log-Cn1ZE6kb-BE4srnlV.js 3.05 kB +out/renderer/assets/objective-c-gNYZndaF-4hkcNMcE.js 3.06 kB +out/renderer/assets/sparql-DxWbGozt-B7qTmycl.js 3.08 kB +out/renderer/assets/prism-markup-templating-D4pSJIpH.js 3.11 kB +out/renderer/assets/prism-cpp-CEgmwlDT.js 3.11 kB +out/renderer/assets/cameligo-B6LDhzzR-DSNRk43W.js 3.12 kB +out/renderer/assets/wenyan-BVgiL1tD-C7ph_xMt.js 3.12 kB +out/renderer/assets/cairo-D_LzMZ4I-C21twps2.js 3.17 kB +out/renderer/assets/prism-rust-Du0Qa8GC.js 3.18 kB +out/renderer/assets/lua-CJt09SGy-3O0VAMVx.js 3.19 kB +out/renderer/assets/graphql-C0cKWTiE-BQOKksLE.js 3.20 kB +out/renderer/assets/berry-DTcSbIs7-DsDdtWdB.js 3.20 kB +out/renderer/assets/jsonl-Cn_fzNA8-cIG9lf61.js 3.21 kB +out/renderer/assets/json-CKKhFIOr-DuiQFrCF.js 3.29 kB +out/renderer/assets/mips-Df5bwPtM-DJn7b529.js 3.29 kB +out/renderer/assets/jsonc-Bf3Xcgeq-BGBJ2TDY.js 3.31 kB +out/renderer/assets/logo-BxqPaaID-DK9gUnx4.js 3.33 kB +out/renderer/assets/abnfDiagram-VCTEODGH-uONEdbnu.js 3.36 kB +out/renderer/assets/go-BejFoqvR-BnGoIlsY.js 3.42 kB +out/renderer/assets/po-DI6EG-tz-DIkePE8T.js 3.44 kB +out/renderer/assets/lexon-5NyrCfQ6-B1bdOCGH.js 3.45 kB +out/renderer/assets/prism-sql-BggiY1Ht.js 3.45 kB +out/renderer/assets/json5-BlijqrwT-Ci88mndw.js 3.45 kB +out/renderer/assets/mipsasm-U3SQfJCQ-kat_Vj1M.js 3.46 kB +out/renderer/assets/sophia-foSZ3xPI-DGYIHURw.js 3.47 kB +out/renderer/assets/tasl-C74Cvwdf-se1Ptgso.js 3.49 kB +out/renderer/assets/genie-CjS3m_gh-DHydh9_z.js 3.56 kB +out/renderer/assets/prism-swift-xplGsQ1n.js 3.56 kB +out/renderer/assets/vala-DMgevQbf-ByJQiTkp.js 3.57 kB +out/renderer/assets/pegDiagram-XKGWAZYB-QQD45E-l.js 3.59 kB +out/renderer/assets/rel-D6dNeDZv-CUAJzmkw.js 3.60 kB +out/renderer/assets/prism-java-6uFEGwWz.js 3.63 kB +out/renderer/assets/fsharp-Ba-cvOiG-BoxQhS9v.js 3.64 kB +out/renderer/assets/chunk-P2QGCYS3-BGwFmzs4.js 3.65 kB +out/renderer/assets/ebnfDiagram-PWID7BFC-DkiTnzd7.js 3.66 kB +out/renderer/assets/qsharp-78iLGMHs-Dbh3PRIx.js 3.68 kB +out/renderer/assets/m3-Bu81_nWr-4t51Qx0i.js 3.69 kB +out/renderer/assets/chunk-F27PBJKO-BEkPd1ND.js 3.70 kB +out/renderer/assets/pascal-DyPgZbsX-Ba58YM7a.js 3.71 kB +out/renderer/assets/path-CSWwviF2.js 3.79 kB +out/renderer/assets/fluent-BSSEgVQa-BCOQigl1.js 3.81 kB +out/renderer/assets/splunk-BdqSfgpd-BtOEh0Mo.js 3.81 kB +out/renderer/assets/jsonnet-Bn71vRY8-QjPNMWdY.js 3.82 kB +out/renderer/assets/ssh-config-BO51LXox-DkFt_ueS.js 3.82 kB +out/renderer/assets/bicep-DujF3y-4-DHww3ZLF.js 3.87 kB +out/renderer/assets/narrat-DdgkgBr0-CSyxDqta.js 3.87 kB +out/renderer/assets/redis-Bo427DT4-DBDF4ZWx.js 3.88 kB +out/renderer/assets/turtle-DAmmiOda-C48PN72o.js 3.92 kB +out/renderer/assets/dist-CE9GMTNb.js 3.97 kB +out/renderer/assets/prism-jsx-BO0yI1A3.js 3.97 kB +out/renderer/assets/xml-BBFzlEmT-CqLnJtYa.js 3.99 kB +out/renderer/assets/java-Z7anYNQ6-DdC7WVZS.js 4.01 kB +out/renderer/assets/r-Xh-gXEK4-DKEPC8dA.js 4.02 kB +out/renderer/assets/ron-CdysqNkW-BG7UwPdX.js 4.11 kB +out/renderer/assets/zenscript-XbBI4c9W-C-aTQo6e.js 4.12 kB +out/renderer/assets/glsl-CZF-bvQV-UaBdSZy0.js 4.14 kB +out/renderer/assets/shell-DGp7WuK3-X00pamiI.js 4.15 kB +out/renderer/assets/gn-DJxfXStl-BD_k0CWf.js 4.20 kB +out/renderer/assets/kotlin-C61BvWgT-B7MkJpdU.js 4.20 kB +out/renderer/assets/typespec-B704GmX3-f1l-QmOw.js 4.26 kB +out/renderer/assets/kdl-YTd72GVl-DLkP_pAB.js 4.27 kB +out/renderer/assets/AppearanceSettingsPanel-B_352Jrg.js 4.28 kB +out/renderer/assets/hurl-CDXCvJNd-Xd5k76nE.js 4.28 kB +out/renderer/assets/cypher-CjfQI0Y9-9gjOyi6P.js 4.33 kB +out/renderer/assets/pascal-CLPA94yO-C11lM2uy.js 4.35 kB +out/renderer/assets/powershell-CaPzBwIT-C9KgMPOP.js 4.50 kB +out/renderer/assets/tcl-D-NiFh9X-CYwv4uzi.js 4.63 kB +out/renderer/assets/apex-BE-040ts-wdfiR7V6.js 4.65 kB +out/renderer/assets/tcl-DowxIvU4-Bbhzqrsw.js 4.65 kB +out/renderer/assets/rosmsg-DDyuMVTo-DSHWRdSZ.js 4.72 kB +out/renderer/assets/nextflow-DVTlkzu9-Cis-JUmb.js 4.75 kB +out/renderer/assets/http-DhxVjYFh-CjwVOaui.js 4.76 kB +out/renderer/assets/hcl-CbjaVS9i-DCS43mBd.js 4.79 kB +out/renderer/assets/rust-Ij2gfGoT-DLzaBWYs.js 4.83 kB +out/renderer/assets/polar-CwTxzzWE-DygHL4ZA.js 4.87 kB +out/renderer/assets/prism-ruby-PgHh3fQm.js 4.91 kB +out/renderer/assets/fennel-COJTUo2O-DYh8-dep.js 4.97 kB +out/renderer/assets/bibtex-yEKRWsaj-xHthw1sC.js 5.00 kB +out/renderer/assets/coffee-CcgZJF1B-DkN4xoBX.js 5.04 kB +out/renderer/assets/llvm-DiFwU398-BQjCVu39.js 5.25 kB +out/renderer/assets/less-CXux59mP-BM7SkPLH.js 5.27 kB +out/renderer/assets/msdax-DEyWhkWP-CwdIr_-P.js 5.29 kB +out/renderer/assets/prism-javascript-B6zosBCV.js 5.31 kB +out/renderer/assets/wgsl-Ds7VVNHP-yP3bMkfO.js 5.34 kB +out/renderer/assets/markdown-CBag5COD-B_1rbk64.js 5.36 kB +out/renderer/assets/dart-DK8_VUW5-Bnb_Tn57.js 5.39 kB +out/renderer/assets/zig-BBWfbOQ5-B8x_JL1P.js 5.54 kB +out/renderer/assets/restructuredtext-D2p7PcFG-DDHAm_JI.js 5.55 kB +out/renderer/assets/dax-CmrIxjmL-CDTyHmZ_.js 5.56 kB +out/renderer/assets/gdresource-4lq4eh4q-CjhvlVte.js 5.56 kB +out/renderer/assets/qml-D6gd64uC-_ykXVPoZ.js 5.57 kB +out/renderer/assets/bicep-wTwvD1CI-C568hcwN.js 5.58 kB +out/renderer/assets/cssMode-Z-o80aSY-DKJev6nN.js 5.59 kB +out/renderer/assets/awk-DTjcVAOD-BmfaVU4m.js 5.66 kB +out/renderer/assets/liquid-Dv-zz5BA-D9ukCDuL.js 5.71 kB +out/renderer/assets/csharp-DpS7Vfy9-CbQzv1ql.js 5.76 kB +out/renderer/assets/coq-BFytDJOI-C5vNmx0q.js 5.81 kB +out/renderer/assets/swift-C3A42nmX-BBVToPkN.js 5.83 kB +out/renderer/assets/xml-bIkPj5aH-Bx1v5u6-.js 5.89 kB +out/renderer/assets/ecl-CYzojQ6a-C8m0_osY.js 5.91 kB +out/renderer/assets/jinja-Dl-Ji_JA-BBL5sTd0.js 5.92 kB +out/renderer/assets/lean-Cu10prRO-BUTVAAdc.js 6.03 kB +out/renderer/assets/yaml-GEMDST6R-D-0AGe4F.js 6.09 kB +out/renderer/assets/moonbit-B8-g2u5v-CGBFUznC.js 6.10 kB +out/renderer/assets/powerquery-tKWDTKOo-CejxekA_.js 6.11 kB +out/renderer/assets/SourceCodePreview-BOcQ0CWg.js 6.11 kB +out/renderer/assets/python-CHafhQyI-DmJIfgbV.js 6.14 kB +out/renderer/assets/shaderlab-Df7nOKvI-0G488FSx.js 6.16 kB +out/renderer/assets/css-sG8ozMHf-pZGexMoj.js 6.17 kB +out/renderer/assets/cpp-CipCPBaT-7uQRIwsC.js 6.17 kB +out/renderer/assets/vb-BKV3Sgm5-D5ytx6Ln.js 6.29 kB +out/renderer/assets/htmlMode-BDZbYlMj-BYkSXaZz.js 6.40 kB +out/renderer/assets/red-CYaKK_PD-iiAMl8iL.js 6.45 kB +out/renderer/assets/min-dark-DGPfDRqJ-gZu6HtcU.js 6.48 kB +out/renderer/assets/pug-EKWpNZSi-oQ708bsr.js 6.51 kB +out/renderer/assets/prisma-CdZyz3OC-ChFCtYaa.js 6.53 kB +out/renderer/assets/gdshader-ryZhEIxg-DpcQqwXn.js 6.55 kB +out/renderer/assets/ara-_lrJyEFe-qigo-wGx.js 6.56 kB +out/renderer/assets/clojure-WSq30mUj-Bswhoa1y.js 6.61 kB +out/renderer/assets/toml-DPP887_3-aOuHoLTy.js 6.62 kB +out/renderer/assets/postcss-CcIp2ENG-DpmxBCXW.js 6.64 kB +out/renderer/assets/verilog-bragEGMk-CemzLugw.js 6.64 kB +out/renderer/assets/solarized-light-BIMszn7B-vPMkTTwP.js 6.68 kB +out/renderer/assets/cypher-COYrq2Yy-BtVrfsLp.js 6.75 kB +out/renderer/assets/arc-LpCwTDer.js 6.75 kB +out/renderer/assets/proto-CQIfhs_g-Deqofbl3.js 6.77 kB +out/renderer/assets/smalltalk-BLGdLDJX-BKGgemER.js 6.79 kB +out/renderer/assets/vb-D1Cw85Ss-BSz-V9M4.js 6.86 kB +out/renderer/assets/talonscript-DA9pg7Tj-CPXKQ95R.js 6.96 kB +out/renderer/assets/r-Bb2Mu7Fo-Dq0URONw.js 7.00 kB +out/renderer/assets/solarized-dark-D_I-4EGa-BZbeAUhW.js 7.04 kB +out/renderer/assets/diagram-Z3DM3KII-BF3ekc2Y.js 7.08 kB +out/renderer/assets/riscv-CQHqXr1Z-BFlZFId-.js 7.11 kB +out/renderer/assets/soy-DybHqX1A-DOhErZPj.js 7.15 kB +out/renderer/assets/min-light-BF0EjVgr-DvViuJW_.js 7.16 kB +out/renderer/assets/scheme-Dn0tgEWN-BK64z0tZ.js 7.37 kB +out/renderer/assets/prism-bash-B2ETaHUm.js 7.43 kB +out/renderer/assets/typescript-sfPIqb8J-DtIl1kXb.js 7.44 kB +out/renderer/assets/hlsl-CAmjcFpk-B3FZWMVz.js 7.48 kB +out/renderer/assets/mdx-Bdu4uO-C-BrzgNjCw.js 7.58 kB +out/renderer/assets/qss-DkzwWM0J-04JPp7d-.js 7.67 kB +out/renderer/assets/html-DKbmsqz6-Cnkf6ew3.js 7.69 kB +out/renderer/assets/systemd-CS6mVasZ-HbzlQlDs.js 8.07 kB +out/renderer/assets/monokai-CYqILLdj-CEXuJ8HO.js 8.08 kB +out/renderer/assets/twig-r8vgPZrm-D2l24YwI.js 8.18 kB +out/renderer/assets/updates-ui-BoiWSsup.js 8.22 kB +out/renderer/assets/wgsl-D_5Qxf6T-D508aVGZ.js 8.27 kB +out/renderer/assets/sdbl-BXfz6d3_-C4Qk7OPN.js 8.42 kB +out/renderer/assets/regexp-Dv0OUts_-BqK6b4KR.js 8.46 kB +out/renderer/assets/prism-php-dzcOOH50.js 8.49 kB +out/renderer/assets/systemverilog-BreNGkRs-RIXr4hNf.js 8.65 kB +out/renderer/assets/plsql-C-xpsZfV-frBdohcC.js 8.71 kB +out/renderer/assets/vue-html-DvuHo2mm-b7I-opwf.js 8.71 kB +out/renderer/assets/haml-CIYwkycC-3fSMp7m2.js 8.81 kB +out/renderer/assets/scss-CLoW-2dr-BBC_GO_6.js 8.86 kB +out/renderer/assets/dart-CBkkDIWs-ezKLFP5s.js 8.94 kB +out/renderer/assets/horizon-CELVL8Ba-x0NmpRb6.js 8.97 kB +out/renderer/assets/horizon-bright-DBDyMeUQ-Bhh-QDk3.js 8.98 kB +out/renderer/assets/julia-DvNkK6LK-Bi3Rlfah.js 9.04 kB +out/renderer/assets/clojure-886L7m2N-BhGJsUM7.js 9.14 kB +out/renderer/assets/make-CsAfL-jc-DaQVAww0.js 9.18 kB +out/renderer/assets/andromeeda--j5Bq-48-DxyWS_fJ.js 9.21 kB +out/renderer/assets/dark-plus-FAPM6M6c-DKexDF--.js 9.29 kB +out/renderer/assets/sas-BQIEUTPQ-Bwx-ZPYU.js 9.31 kB +out/renderer/assets/slack-dark-nDxLkSCC-C5pzIEPN.js 9.31 kB +out/renderer/assets/perl-Bec3eWyr-CDmSu3_s.js 9.32 kB +out/renderer/assets/plastic-DY_h9Vzh-CZzPFkTC.js 9.49 kB +out/renderer/assets/sass-Ysv8HTNa-CHNQIGaT.js 9.49 kB +out/renderer/assets/st-BrgXZ-Ag-BUs-RRgp.js 9.58 kB +out/renderer/assets/typst-Co5rZla4-COemceoz.js 9.61 kB +out/renderer/assets/slack-ochin-7zJWY-K--C7KFpXik.js 9.63 kB +out/renderer/assets/defaultLocale-QNqK0iCN.js 9.84 kB +out/renderer/assets/handlebars-CIJAyfa9-6toBlNYk.js 9.94 kB +out/renderer/assets/jison-Cbw0l5It-BNek_9Kq.js 9.95 kB +out/renderer/assets/sql-DviNlDJO-CwV6bDIP.js 9.97 kB +out/renderer/assets/kotlin-DIw6ua6F-CdVnL0aF.js 10.01 kB +out/renderer/assets/cmake-CyNDuJo8-2Hk4zQCd.js 10.07 kB +out/renderer/assets/light-plus-DkScKIB5-e8Q5AKjf.js 10.14 kB +out/renderer/assets/hcl-DoJdlYjN-DdpM5wFm.js 10.25 kB +out/renderer/assets/scala-Dj45wWzI-CAMCqIXS.js 10.40 kB +out/renderer/assets/postiats-SaHD9Qcv-FPvOr1pn.js 10.45 kB +out/renderer/assets/beancount-CyZf3Huc-C4n-y8pc.js 10.58 kB +out/renderer/assets/tex-gcnXexI3-BUpeblVA.js 10.60 kB +out/renderer/assets/php-Bn8AF0uj-CBbpr2vs.js 10.62 kB +out/renderer/assets/nextflow-groovy-D4ZyOBoZ-C7jziUwg.js 10.63 kB +out/renderer/assets/dream-maker-5oXa1Z51-CLRrQkBL.js 10.67 kB +out/renderer/assets/ts-tags-xeTAUNHG-CG_gr3En.js 10.70 kB +out/renderer/assets/raku-Bfr41qeN-C7t9XlCj.js 10.72 kB +out/renderer/assets/mysql-CZJtil0v-CP4gK9vT.js 10.73 kB +out/renderer/assets/task-menu-icons-BRdNqJF0.js 10.78 kB +out/renderer/assets/prism-csharp-D9xOwbIN.js 10.91 kB +out/renderer/assets/yaml-CsitfczK-Cu7vbJZs.js 10.97 kB +out/renderer/assets/diagram-UQ7AKVKN-DafFOjxU.js 11.05 kB +out/renderer/assets/elm-Dl1XrIiD-CwXBAFKd.js 11.18 kB +out/renderer/assets/just-He7qscmV-Bkq-0zku.js 11.19 kB +out/renderer/assets/redshift-Djb4PK3z-9Ar4PFWD.js 11.35 kB +out/renderer/assets/github-light-B_J7N1HZ-DWSXFnsf.js 11.38 kB +out/renderer/assets/ruby-CxOCB7_P-BzsjPJ6Z.js 11.48 kB +out/renderer/assets/prolog-DAqMMM08-BFKdnH0S.js 11.56 kB +out/renderer/assets/terraform-BW8B2WXV-zeRjs0zr.js 11.59 kB +out/renderer/assets/github-dark-BgqEY2WG-C9QbkZU3.js 11.60 kB +out/renderer/assets/puppet-CaR8DEdW-Biai9WKX.js 11.65 kB +out/renderer/assets/pkl-DrXR3Dxy-Bno7kqPT.js 11.67 kB +out/renderer/assets/laserwave-Clkc4Pj8-DOjuqF9n.js 11.69 kB +out/renderer/assets/pieDiagram-E7YTZNPT-BmbU_x_c.js 11.95 kB +out/renderer/assets/rst-BJFdabDk-Cv-fSo2B.js 12.04 kB +out/renderer/assets/linear-WS155L0r.js 12.11 kB +out/renderer/assets/wasm-DYwNZ-r4-BrA6oOvM.js 12.21 kB +out/renderer/assets/hjson-CmvCiVhY-BdH9CbZ2.js 12.25 kB +out/renderer/assets/razor-D5kquflS-CWY5AfCS.js 12.39 kB +out/renderer/assets/abap-BJyKdrbp-hWIyERPx.js 12.52 kB +out/renderer/assets/handlebars-B1z64YSt-MC-VEvxc.js 12.52 kB +out/renderer/assets/apache-BUbWdjM2-2Zu7IlVl.js 12.66 kB +out/renderer/assets/vesper-B5lCMuIY-CXGQHRuW.js 12.88 kB +out/renderer/assets/pgsql-BYm17UA1-Cvj1smQI.js 12.93 kB +out/renderer/assets/protobuf-BOGxqb2m-yTWn-oM_.js 12.98 kB +out/renderer/assets/bat-D2y8Uewi-CEJzP2ue.js 13.09 kB +out/renderer/assets/fish-CaZR_ofm-BcO_q5kQ.js 13.24 kB +out/renderer/assets/elixir-Lipcswxh-DnZCznfr.js 13.27 kB +out/renderer/assets/v-wnWoBHkK-CzCOTyIp.js 13.41 kB +out/renderer/assets/AboutHelpSettingsPanel-Ui_VOvh7.js 13.48 kB +out/renderer/assets/vitesse-light-DQXFiRFx-Ct7fN8pJ.js 13.81 kB +out/renderer/assets/aurora-x-9vUYYjHV-CImifmUW.js 13.85 kB +out/renderer/assets/vitesse-black-cwK5rWgD-BGrq81WC.js 13.87 kB +out/renderer/assets/vitesse-dark-CsfgW0oH-Dx8cqxrm.js 13.96 kB +out/renderer/assets/ShortcutsSettingsPanel-KgJeI7QZ.js 14.15 kB +out/renderer/assets/pug-D0UckVoV-BTWU19Nk.js 14.16 kB +out/renderer/assets/synthwave-84-LX1B8mRG-yuUErnSx.js 14.23 kB +out/renderer/assets/github-light-default-BRmIzqWc-B3gMi7zW.js 14.36 kB +out/renderer/assets/clarity-AxkJPY5c-DfVHSVIk.js 14.48 kB +out/renderer/assets/github-light-high-contrast-BUKIZOxn-DL0r2b0z.js 14.49 kB +out/renderer/assets/github-dark-dimmed-DoIdqTey-CDc6YqEM.js 14.64 kB +out/renderer/assets/github-dark-default-CwWjzI40-_0bgyJYv.js 14.64 kB +out/renderer/assets/chunk-PWAF6VOD-CbIIvpNT.js 14.76 kB +out/renderer/assets/github-dark-high-contrast-bFLNMLvK-BUp3HmXY.js 14.80 kB +out/renderer/assets/diagram-S7CK7UJ4-7HVEyMQm.js 14.98 kB +out/renderer/assets/gnuplot-Dw3FRha5-D6o75ylb.js 14.98 kB +out/renderer/assets/rust-C0Ih6nmc-Bm01RMLz.js 15.27 kB +out/renderer/assets/actionscript-3-O8jnLcvn-C7OtofMN.js 15.41 kB +out/renderer/assets/luau-BzxGbjcn-aQpsBeQB.js 15.64 kB +out/renderer/assets/nix-zl191KBb-CxSq6jsB.js 15.85 kB +out/renderer/assets/lua-BwTLfNCK-IuSxl8fO.js 16.04 kB +out/renderer/assets/abap-FvPUHv8B-BVQp86jh.js 16.05 kB +out/renderer/assets/solidity-96fhzG-Q-CZEni-ZB.js 16.28 kB +out/renderer/assets/matlab-8ZQqHKQX-g_ODc8QU.js 16.29 kB +out/renderer/assets/cue-eHSfcyUV-BO0bCEDm.js 16.40 kB +out/renderer/assets/kusto-D8vBBISG-C0y2Wtyy.js 16.45 kB +out/renderer/assets/powerquery-B7BjLMcF-BkVSWPtX.js 16.49 kB +out/renderer/assets/elixir-B1NaQxrO-Ba6X-FuW.js 16.50 kB +out/renderer/assets/react-DrereneL.js 16.50 kB +out/renderer/assets/odin-B-YqhW9I-B-ZI05Ll.js 16.71 kB +out/renderer/assets/solidity-Dpt2BLAA-BD_YSA0r.js 16.98 kB +out/renderer/assets/bird2-BMkLvc4r-CyoW3El7.js 17.17 kB +out/renderer/assets/kanagawa-wave-CM_o6oKV-VzWuxPSA.js 17.32 kB +out/renderer/assets/kanagawa-lotus-Cj3XDpoG-cmeMwVaD.js 17.32 kB +out/renderer/assets/kanagawa-dragon-D_NPnIy_-Cyd8MANv.js 17.33 kB +out/renderer/assets/cynefinDiagram-5FMLGOSQ-D3ezBWsv.js 17.61 kB +out/renderer/assets/stateDiagram-D77RDMKH-B_QV3zjG.js 18.11 kB +out/renderer/assets/chunk-L3NEJ4N5-CBEIP9sT.js 18.16 kB +out/renderer/assets/liquid-D_7zu7XR-BZ3z6-Mj.js 18.46 kB +out/renderer/assets/svelte-DUGqPubT-CAfIEh4G.js 18.60 kB +out/renderer/assets/graphql-ObxcfEHH-9pUo2yjR.js 18.65 kB +out/renderer/assets/jsonMode-DdQpkp6D-C_NUMK6D.js 18.79 kB +out/renderer/assets/material-theme-q28j4V_0-s4HtqlFv.js 18.81 kB +out/renderer/assets/material-theme-ocean-DAvlEnSm-Cyw7qD-l.js 18.83 kB +out/renderer/assets/material-theme-darker-CHEuMVX9-D-hz3EEt.js 18.83 kB +out/renderer/assets/material-theme-lighter-DY4T1_JG-C0HwKluR.js 18.84 kB +out/renderer/assets/material-theme-palenight-CqDFvQ-v-RoTowTME.js 18.84 kB +out/renderer/assets/gherkin-BcjDDslM-BdnbjalD.js 19.20 kB +out/renderer/assets/gdscript-CekKc1U_-DVmAmHvE.js 19.21 kB +out/renderer/assets/groovy-DH3arekX-StnUgJL0.js 19.38 kB +out/renderer/assets/mdc-D-U85KZE-DPbAVRTg.js 19.85 kB +out/renderer/assets/diagram-VSXAHHWV-D4LYumbe.js 20.01 kB +out/renderer/assets/move-CmExnPjU-DPj_eIaE.js 20.22 kB +out/renderer/assets/ayu-dark-BeByMiYw-CS3MEELg.js 20.27 kB +out/renderer/assets/ayu-mirage-C1jJ6Jfs-CnA8kJ7r.js 20.28 kB +out/renderer/assets/ayu-light-DmTZeN54-CDULCKqM.js 20.35 kB +out/renderer/assets/glimmer-js-D9ZnrcNN-BS431Ogg.js 20.44 kB +out/renderer/assets/glimmer-ts-DuhFj6qR-CsFesiaT.js 20.44 kB +out/renderer/assets/viml-DPVJ_KYe-De3CdqgJ.js 20.56 kB +out/renderer/assets/nushell-Cd8Dwa1M-Dhf9XkYz.js 20.62 kB +out/renderer/assets/snazzy-light-B8znOqT6-B1FX3-IF.js 20.97 kB +out/renderer/assets/dagre-GXQ25YYZ-Bnmqites.js 21.01 kB +out/renderer/assets/dracula-DeMffiYO-Bl4juROY.js 21.26 kB +out/renderer/assets/dracula-soft-BnfvpcDv-CYsUeSum.js 21.27 kB +out/renderer/assets/twig-7zjsCqYg-CMujKsZl.js 21.44 kB +out/renderer/assets/freemarker2-enkimFXA-0bWMkoTL.js 21.73 kB +out/renderer/assets/PersonalizationSettingsPanel-B06BA6F_.js 21.87 kB +out/renderer/assets/rose-pine-CEVQiaW0-DaA_4NNK.js 21.94 kB +out/renderer/assets/rose-pine-moon-B9bum7Ik-B6_AhIsD.js 21.96 kB +out/renderer/assets/rose-pine-dawn-2Q5fMoJp-DxMkAwKM.js 21.96 kB +out/renderer/assets/powershell-ycAdP1r9-B7r4Hnhz.js 22.11 kB +out/renderer/assets/common-lisp-DcFHcTKh-CWH5diwh.js 22.81 kB +out/renderer/assets/gruvbox-dark-hard-gOzMLqif-DDlcfu4q.js 22.83 kB +out/renderer/assets/gruvbox-dark-soft-CKvURktN-C6MJezBg.js 22.83 kB +out/renderer/assets/gruvbox-light-hard-CMa_c48J-BUQ67Msp.js 22.84 kB +out/renderer/assets/gruvbox-light-soft-yfAGJYsX-DNM2qqWB.js 22.84 kB +out/renderer/assets/gruvbox-dark-medium-BQSVGwWb-qh8C4DPZ.js 22.84 kB +out/renderer/assets/gruvbox-light-medium-B9S5UNr1-DZxV_o-P.js 22.84 kB +out/renderer/assets/nim-CD961Jl3-CuyTrDpQ.js 22.91 kB +out/renderer/assets/cadence-C2JmJjDr-B-b63Epg.js 23.87 kB +out/renderer/assets/sql-C_oMiPb0-CRnSOxMo.js 23.87 kB +out/renderer/assets/wit-CXpQol8Q-D2NEDOhy.js 24.11 kB +out/renderer/assets/templ-gFcHJbF7-BqIwRUQe.js 24.38 kB +out/renderer/assets/astro-kV3HjkbP-CH6o6jKA.js 24.46 kB +out/renderer/assets/vhdl-Ci4REirV-D-qSzcJD.js 24.46 kB +out/renderer/assets/purescript-DCsDAdnX-DsynrkKe.js 24.97 kB +out/renderer/assets/vue-Cuk7Vimg-CFbFXIr8.js 25.25 kB +out/renderer/assets/surrealql-GFjNBdcm-Vm68TOTE.js 25.34 kB +out/renderer/assets/one-light-CMfGrl_P-B-1jUQM9.js 25.49 kB +out/renderer/assets/night-owl-light-CAEa42tO-TPCLv7z5.js 26.10 kB +out/renderer/assets/system-verilog-D_bVVpLE-C_dvOlr3.js 26.41 kB +out/renderer/assets/angular-html-BrLPO2Fv-DJgz5E5d.js 26.48 kB +out/renderer/assets/typespec-D5WYs8C4-AaOHagqW.js 26.72 kB +out/renderer/assets/nord-DlCAGdjr-Div2jUYm.js 26.91 kB +out/renderer/assets/codeql-DidIlXer-D6RBJOzg.js 27.08 kB +out/renderer/assets/scss-BhK8Ovpn-DfDLQi2C.js 27.52 kB +out/renderer/assets/coffee-DrMWXxy6-BoavQsuh.js 27.68 kB +out/renderer/assets/java-DaupjRFz-zQd9RZAc.js 27.69 kB +out/renderer/assets/razor-B2hRAVmz-Dj7TOgY5.js 27.72 kB +out/renderer/assets/apl-C42PBett-BNW4FTmO.js 27.87 kB +out/renderer/assets/chunk-SVP7TREG-DFW54PR4.js 28.38 kB +out/renderer/assets/fsharp-BHFgIxsY-CvR6tsY8.js 28.48 kB +out/renderer/assets/marko-DXKHPFnH-C0z2-ucz.js 28.74 kB +out/renderer/assets/GeneralSettingsPanel-CA6yOnsk.js 29.10 kB +out/renderer/assets/night-owl-DegwdXaM-6ZGfBB7K.js 29.11 kB +out/renderer/assets/c3-BOs4FlGA-BuhFXrRY.js 29.17 kB +out/renderer/assets/MemorySettingsPanel-cqwWfj-O.js 29.75 kB +out/renderer/assets/crystal-DlzoxO28-BWa_t1Io.js 29.84 kB +out/renderer/assets/applescript-ij24h7OO-_xHQcvud.js 29.87 kB +out/renderer/assets/tsMode-SiG-Sp2b-Dd5SQLv9.js 30.55 kB +out/renderer/assets/pierre-dark-Daa2n9wr-D7rla9B_.js 30.74 kB +out/renderer/assets/pierre-light-D_hZXvUj-DJnIOKLO.js 30.75 kB +out/renderer/assets/pierre-dark-soft-BhNM3pgh-Dp_VeHWv.js 30.76 kB +out/renderer/assets/pierre-light-soft-BVrSv6ZG-C6Na39F-.js 30.76 kB +out/renderer/assets/ishikawaDiagram-5VMMS53U-BYWiiHaK.js 30.78 kB +out/renderer/assets/pierre-dark-tritanopia-CGKuoAZi-C0HpbU3l.js 30.78 kB +out/renderer/assets/pierre-light-tritanopia-BiDEaWaH-wWduIsi3.js 30.78 kB +out/renderer/assets/pierre-dark-protanopia-deuteranopia-Cs1lz9lE-enlgPsHw.js 30.82 kB +out/renderer/assets/pierre-light-protanopia-deuteranopia-BM0RLBB_-Dz5iBHkO.js 30.82 kB +out/renderer/assets/stylus-ZCryC73G-urFW3_yk.js 31.29 kB +out/renderer/assets/diagram-VX7I27RA-CRPiXRnp.js 31.44 kB +out/renderer/assets/scala-BBsC3Oz3-VCjyobQG.js 31.48 kB +out/renderer/assets/mermaid-D6CQfUGU-C6DHNxVz.js 33.37 kB +out/renderer/assets/poimandres-EIt_jotH-DHKFQj5Q.js 33.69 kB +out/renderer/assets/kanban-definition-UXKFOSKX-D8FC-FOL.js 33.91 kB +out/renderer/assets/one-dark-pro-DR9QpZM3-BA4d4lw2.js 33.98 kB +out/renderer/assets/mermaid-parser.core-CstzWfPU.js 34.66 kB +out/renderer/assets/haxe-BWT5wSyZ-BuUsQb-h.js 35.38 kB +out/renderer/assets/nginx-DhtViCEk-C18zABFg.js 35.58 kB +out/renderer/assets/houston-BdS5A_yD-NUige_z1.js 35.61 kB +out/renderer/assets/tokyo-night-BS1_DFu7-CYsPn2J-.js 35.86 kB +out/renderer/assets/erlang-Dd62d0xZ-DHVWwcKa.js 37.71 kB +out/renderer/assets/rough.esm-BX5QqLti.js 38.33 kB +out/renderer/assets/mindmap-definition-YA3MSWOX-BiSXi3_z.js 38.59 kB +out/renderer/assets/cobol-D7RZfOK--CEk2iYO9.js 39.37 kB +out/renderer/assets/journeyDiagram-3NMN7TZE-BPgUjhkg.js 40.13 kB +out/renderer/assets/julia-ZzkUXm0W-BIm_zTAN.js 40.32 kB +out/renderer/assets/lspLanguageFeatures-DK9zifhE-DeEqLmGO.js 40.76 kB +out/renderer/assets/asm-DYVIzeEk-Byg5xzam.js 40.91 kB +out/renderer/assets/haskell-Ba6HbLj8-D0OYaIy8.js 41.78 kB +out/renderer/assets/sankeyDiagram-P5KCCOFB-CLvBxNVK.js 41.83 kB +out/renderer/assets/shellscript-B69gKcss-49Zm6IyC.js 41.97 kB +out/renderer/assets/wardleyDiagram-VM6X3IG4-Cm6u033J.js 42.40 kB +out/renderer/assets/perl-Dv6Cq_FS-DIORmO5G.js 43.55 kB +out/renderer/assets/pierre-dark-vibrant-BMsyYliQ-84Eeh-Uj.js 44.96 kB +out/renderer/assets/pierre-light-vibrant-CWzM4Pa_-QZvTkTJe.js 44.97 kB +out/renderer/assets/ruby-DWcdJvcx-q0K84ieK.js 46.50 kB +out/renderer/assets/go-BOpYl7fu-BiT4MB-v.js 47.02 kB +out/renderer/assets/apex-B48ZHHzN-BBt8sSNQ.js 47.18 kB +out/renderer/assets/catppuccin-mocha-cPsH7Lup-SVLZehhk.js 47.46 kB +out/renderer/assets/catppuccin-latte-DcEecI7n-jo2cPJyK.js 47.46 kB +out/renderer/assets/catppuccin-frappe-BdOW2tdI-BI0Hc9cS.js 47.46 kB +out/renderer/assets/catppuccin-macchiato-Bvz_yAZY-DWewRa4S.js 47.47 kB +out/renderer/assets/ada-BT0j8ine-CLTLBE8n.js 48.28 kB +out/renderer/assets/d-B1HbH29p-Bi6t8Ck6.js 49.10 kB +out/renderer/assets/css-NFwnoVns-BvwuZkcY.js 49.49 kB +out/renderer/assets/imba-C-oGt11l-CqKI0OVw.js 50.13 kB +out/renderer/assets/requirementDiagram-BXWQKSXE-BbeIAWH4.js 51.39 kB +out/renderer/assets/erDiagram-RLTQ6QDP-C4goYMox.js 52.41 kB +out/renderer/assets/browserify-C9uP_nIr.js 52.80 kB +out/renderer/assets/gitGraphDiagram-WWUBYQGX-CqcAyi5D.js 53.82 kB +out/renderer/assets/everforest-dark-gCM8XhEI-DzRrg06U.js 53.94 kB +out/renderer/assets/everforest-light-DhK35DkL-BEDtvHw1.js 53.95 kB +out/renderer/assets/timeline-definition-24CTP7MA-BX0PN7A5.js 54.31 kB +out/renderer/assets/wikitext-CQNrXTmv-DJ18wIlO.js 56.09 kB +out/renderer/assets/stata-BUONSdsT-BPnapjPC.js 57.23 kB +out/renderer/assets/quadrantDiagram-AXDQQJYC-OBfCarUt.js 58.21 kB +out/renderer/assets/html-Dq1ixqYb-okJOhOmu.js 58.25 kB +out/renderer/assets/chunk-OSK3NFVY-a-36JlKV.js 58.56 kB +out/renderer/assets/ocaml-CUdGm1iq-BKX30YEX.js 62.65 kB +out/renderer/assets/model-settings-source-JYisGYmM.js 63.03 kB +out/renderer/assets/ballerina-CpYcPBJI-D9ac3462.js 64.89 kB +out/renderer/assets/markdown-BSrOIEaF-BFwOzGIM.js 65.52 kB +out/renderer/assets/chunk-IMKFNOWR-DqteUQF-.js 67.22 kB +out/renderer/assets/mojo-BNaitZ-7-E_psDM2x.js 70.00 kB +out/renderer/assets/python-Cld0Iwtn-tcCJ5L_g.js 70.17 kB +out/renderer/assets/blockDiagram-I7D4REHJ-BdUm3LD5.js 71.01 kB +out/renderer/assets/bsl-CtP8370o-Pi14XlIU.js 71.07 kB +out/renderer/assets/c-B4augMcT-B5ncIjy5.js 72.57 kB +out/renderer/assets/chunk-75Z2AOVW-DxPqGlPz.js 72.67 kB +out/renderer/assets/latex-g2Pus_l2-CP0G7LTN.js 72.85 kB +out/renderer/assets/vyper-C1nscAY5-BTAKd5p2.js 74.85 kB +out/renderer/assets/ModelSettingsPanel-Bq69xf7M.js 76.64 kB +out/renderer/assets/xychartDiagram-S5SC5T6Z-DCyqfgK-.js 76.79 kB +out/renderer/assets/chunk-GMAD6QVW-B3EDLnje.js 77.76 kB +out/renderer/assets/hack-B1ag3l4X-CEYIfPfg.js 80.58 kB +out/renderer/assets/src-DsgKm1PY.js 83.16 kB +out/renderer/assets/chunk-TICWLB2K-BojKrHZn.js 83.88 kB +out/renderer/assets/fortran-free-form-CsgtTAg3-Dm0PhuY8.js 89.20 kB +out/renderer/assets/vennDiagram-4TSXK5OY-Bk8fkW8I.js 89.26 kB +out/renderer/assets/csharp-YOPVljXo-CBjcozlW.js 89.91 kB +out/renderer/assets/racket--xYIV9-n-NDM2V4Sc.js 92.62 kB +out/renderer/assets/swift-CgzYrGBX-CaMD6i-j.js 94.14 kB +out/renderer/assets/less-BGhX8xko-CbSvNyvq.js 99.00 kB +out/renderer/assets/chunk-SHT3W25Y-D9TLDHJf.js 104.10 kB +out/renderer/assets/objective-c-CmcWiAft-DY5tZuMk.js 105.62 kB +out/renderer/assets/blade-Bq8WPf0E-BehdttJf.js 105.98 kB +out/renderer/assets/c4Diagram-7LVT6UL2-b085GzNv.js 107.96 kB +out/renderer/assets/php-X15vsN4N-ChBJUzAp.js 111.49 kB +out/renderer/assets/dagre-CzI-C3sx.js 122.98 kB +out/renderer/assets/ganttDiagram-EL5Y4UJY-BkulWZYN.js 123.77 kB +out/renderer/assets/graphlib-CoAzpIqe.js 127.44 kB +out/renderer/assets/asciidoc-DJWalVNM-Daa-Gl9r.js 146.30 kB +out/renderer/assets/mdx-C_Ato9sK-CDV72_N0.js 146.49 kB +out/renderer/assets/editor.main-POO0Vbhx-DVBj41ME.js 161.32 kB +out/renderer/assets/cose-bilkent-JH36ORCC-CA60tZpq.js 165.63 kB +out/renderer/assets/objective-cpp-BggTCHV8-BRaaCyEF.js 172.18 kB +out/renderer/assets/javascript-AfZCJ9Uc-C_GZREFb.js 175.31 kB +out/renderer/assets/tsx-BOlKGefW-D7XVyutE.js 176.00 kB +out/renderer/assets/jsx-CPd9p36x-D5Ck2u9I.js 178.26 kB +out/renderer/assets/sequenceDiagram-WJ2MYXX4-Dq5Kw-WE.js 190.05 kB +out/renderer/assets/typescript-4sRsPriL-Ce01imBq.js 191.16 kB +out/renderer/assets/mermaid.core-CrVhoMxX.js 191.57 kB +out/renderer/assets/angular-ts-YduEkmVa-936ueej5.js 193.82 kB +out/renderer/assets/vue-vine-DXhYlaTf-C8MW7tnI.js 201.27 kB +out/renderer/assets/SourceSelect-Dd7kI5iL.js 203.20 kB +out/renderer/assets/chunk-4HAMMTFA-Bfpo5fqQ.js 210.32 kB +out/renderer/assets/swimlanes-42K2YHIH-dzBMea37.js 265.51 kB +out/renderer/assets/wolfram-BVoTES0L-W3A5YqXk.js 267.14 kB +out/renderer/assets/chunk-DU6HZSFF-BASGMKlI.js 271.07 kB +out/renderer/assets/architectureDiagram-5GKGNRK7-C9cYtBCC.js 318.23 kB +out/renderer/assets/katex-Y9ra-ykP.js 497.35 kB +out/renderer/assets/texmath-Bkeg3ZLn.js 594.25 kB +out/renderer/assets/wasm-CVjZL0jK-DcJkdGs4.js 622.62 kB +out/renderer/assets/cpp-9jHBA231-DB3feGjZ.js 626.73 kB +out/renderer/assets/app-4914IQSi.js 675.57 kB +out/renderer/assets/emacs-lisp-DjtOxg4j-CzQ0CKOn.js 780.06 kB +out/renderer/assets/cytoscape.esm-bVGYt-iW.js 869.69 kB +out/renderer/assets/ArtifactPierreDiff-DpqRTCz8.js 1,119.58 kB +out/renderer/assets/chunk-FOHPRMQF-BCllzKJD.js 1,154.18 kB +out/renderer/assets/index-CRCLGS8-.js 3,766.12 kB +out/renderer/assets/editor.api2-dPwET-7w-BYIQ9bT3.js 4,889.23 kB + +✓ built in 2.57s diff --git a/docs/协作/evidence/B04-review-01/check-tokens.txt b/docs/协作/evidence/B04-review-01/check-tokens.txt new file mode 100644 index 0000000..129f9ea --- /dev/null +++ b/docs/协作/evidence/B04-review-01/check-tokens.txt @@ -0,0 +1,29 @@ + +> ycode@0.0.7 check:tokens +> node scripts/check-design-tokens.mjs + +设计 token 漂移检查(静态) + 扫描:src/renderer/src 共 367 个文件(用时 64 ms) + baseline:scripts/design-token-baseline.json(334 个文件) + 门禁分类:adapter 8 | core 6 | local 279(合计 293 个文件) + 合计:裸 hex=611 裸 px=2680 !important=6 --wb-* 定义=525 var(--yc-*) 使用=1651 var(--wb-*) 使用=1209 + 非门禁分类:vendor 2 | recovered 22 | source 47 | tokenSource 3(合计 74 个文件,仅记录不阻塞) + 合计:裸 hex=10642 裸 px=13642 !important=920 --wb-* 定义=17966 var(--yc-*) 使用=77 var(--wb-*) 使用=19638 + 非门禁相对 baseline:文件 +0;裸 hex +78 裸 px +64 !important +0 --wb-* 定义 +0 var(--yc-*) 使用 +22 var(--wb-*) 使用 -120 + +结果:失败,共 6 项: + [新增门禁文件] src/renderer/src/capabilities/recommended-flow.css(local):裸 px=21 + [新增门禁文件] src/renderer/src/capabilities/skill-detail-shell.css(local):裸 px=21 + [回归] src/renderer/src/capabilities/skills-host.css(local):裸 px 25 → 45(+20) + [新增门禁文件] src/renderer/src/workbuddy/composer/capability-picker.css(local):裸 hex=26,裸 px=48 + [回归] src/renderer/src/workbuddy/composer/composer.css(local):裸 hex 23 → 38(+15);裸 px 83 → 139(+56) + [新增门禁文件] src/renderer/src/workbuddy/composer/prompt-queue.css(local):裸 hex=8,裸 px=35 + +提示:确认变更符合预期后运行 `node scripts/check-design-tokens.mjs --update-baseline` 刷新 baseline; + 否则请改用 --yc-* token、复用现有值,或去掉重复的 --wb-* 定义。 +提示(不失败,仅记录):3 个门禁文件 token 使用数上升: + src/renderer/src/capabilities/skills-host.css(local):var(--wb-*) 使用 12 → 19(+7) + src/renderer/src/workbuddy/composer/composer.css(local):var(--yc-*) 使用 35 → 48(+13);var(--wb-*) 使用 0 → 1(+1) + src/renderer/src/workbuddy/conversation/conversation.css(local):var(--yc-*) 使用 0 → 4(+4) +提示(不失败):baseline 中 8 个文件已不存在:src/renderer/src/components/ReportedRunUsage.tsx;src/renderer/src/workbuddy/subagents/SourceMemberIcon.tsx;src/renderer/src/workbuddy/subagents/SubagentCollaboration.tsx;src/renderer/src/workbuddy/subagents/SubagentDetailPanel.tsx;src/renderer/src/workbuddy/subagents/adapters.css;src/renderer/src/workbuddy/subagents/member-view.ts;src/renderer/src/workbuddy/subagents/source.css;src/renderer/src/workbuddy/subagents/theme.css +提示:新增门禁文件 36 个且无受控计数(允许):src/renderer/src/capabilities/CapabilityMaintenance.tsx(local);src/renderer/src/capabilities/RecommendedSkills.tsx(local);src/renderer/src/capabilities/SkillAvatar.tsx(local);src/renderer/src/capabilities/SkillDetailShell.tsx(local);src/renderer/src/capabilities/SkillModalPortal.tsx(local);src/renderer/src/capabilities/skill-modal-focus.ts(local);src/renderer/src/components/SessionLoading.tsx(local);src/renderer/src/components/TaskPopconfirm.tsx(local);src/renderer/src/components/session-loading.css(local);src/renderer/src/components/task-popconfirm.css(local);src/renderer/src/components/updates/UpdateSidebarCard.tsx(local);src/renderer/src/components/updates/update-ui-model.ts(local);src/renderer/src/components/updates/update-ui-store.ts(local);src/renderer/src/components/updates/updates-ui.css(local);src/renderer/src/ui/Button.tsx(local);src/renderer/src/ui/IconButton.tsx(local);src/renderer/src/ui/Input.tsx(local);src/renderer/src/ui/Popover.tsx(local);src/renderer/src/ui/Select.tsx(local);src/renderer/src/ui/Switch.tsx(local);…(还有 16 项,详见 --json) diff --git a/docs/协作/evidence/B04-review-01/dom-lifecycle.txt b/docs/协作/evidence/B04-review-01/dom-lifecycle.txt new file mode 100644 index 0000000..aab4712 --- /dev/null +++ b/docs/协作/evidence/B04-review-01/dom-lifecycle.txt @@ -0,0 +1,5 @@ + +> ycode@0.0.7 test:image-lifecycle +> node scripts/test-image-lifecycle.mjs + +{"result":"PASS","checks":159,"samples":85,"output":"C:\\Users\\Administrator\\.codex\\worktrees\\b04-accept-01\\YCode\\.tmp\\b04-image-aFmn4p","limits":"DOM lifecycle only; jsdom heights are not layout acceptance. Synthetic data only."} diff --git a/docs/协作/evidence/B04-review-01/dom-report.json b/docs/协作/evidence/B04-review-01/dom-report.json new file mode 100644 index 0000000..0c657e2 --- /dev/null +++ b/docs/协作/evidence/B04-review-01/dom-report.json @@ -0,0 +1,762 @@ +{ + "checks": [ + "cold: layout-before-passive-effects: no URI text", + "cold: sync-commit: no URI text", + "safe first commit image", + "layout probe sees image before passive effects", + "stable: no URI text", + "native image error: no image", + "native image error: concise", + "native image error: no URI text", + "error recovery new src: layout-before-passive-effects: no URI text", + "error recovery new src: sync-commit: no URI text", + "new safe src resets prior error synchronously", + "invalid/no-host: layout-before-passive-effects: no URI text", + "invalid/no-host: sync-commit: no URI text", + "invalid/no-host initial: no image", + "invalid/no-host initial: concise", + "invalid/no-host initial: no URI text", + "invalid/no-host settled: no image", + "invalid/no-host settled: concise", + "invalid/no-host settled: no URI text", + "invalid/no-host: layout-before-passive-effects: no URI text", + "invalid/no-host: sync-commit: no URI text", + "invalid/no-host initial: no image", + "invalid/no-host initial: concise", + "invalid/no-host initial: no URI text", + "invalid/no-host settled: no image", + "invalid/no-host settled: concise", + "invalid/no-host settled: no URI text", + "invalid/no-host: layout-before-passive-effects: no URI text", + "invalid/no-host: sync-commit: no URI text", + "invalid/no-host initial: no image", + "invalid/no-host initial: concise", + "invalid/no-host initial: no URI text", + "invalid/no-host settled: no image", + "invalid/no-host settled: concise", + "invalid/no-host settled: no URI text", + "same source first resolver: layout-before-passive-effects: no URI text", + "same source first resolver: sync-commit: no URI text", + "same source second resolver: layout-before-passive-effects: no URI text", + "same source second resolver: sync-commit: no URI text", + "old resolver identity ignored: no image", + "old resolver identity ignored: concise", + "old resolver identity ignored: no URI text", + "new resolver identity wins", + "local direct: layout-before-passive-effects: no URI text", + "local direct: sync-commit: no URI text", + "existing unpreferred local semantics", + "prefer host enabled: layout-before-passive-effects: no URI text", + "prefer host enabled: sync-commit: no URI text", + "host preference removes direct file before effects: no image", + "host preference removes direct file before effects: concise", + "host preference removes direct file before effects: no URI text", + "preferred host result", + "same direct first adapter: layout-before-passive-effects: no URI text", + "same direct first adapter: sync-commit: no URI text", + "direct failed before new adapter: no image", + "direct failed before new adapter: concise", + "direct failed before new adapter: no URI text", + "same direct new adapter: layout-before-passive-effects: no URI text", + "same direct new adapter: sync-commit: no URI text", + "immediate error after adapter reset retained: no image", + "immediate error after adapter reset retained: concise", + "immediate error after adapter reset retained: no URI text", + "A to B: layout-before-passive-effects: no URI text", + "A to B: sync-commit: no URI text", + "B to A retry: layout-before-passive-effects: no URI text", + "B to A retry: sync-commit: no URI text", + "A to B to A resets old failure", + "pending old: layout-before-passive-effects: no URI text", + "pending old: sync-commit: no URI text", + "pending new: layout-before-passive-effects: no URI text", + "pending new: sync-commit: no URI text", + "no old during new: no image", + "no old during new: concise", + "no old during new: no URI text", + "stale success ignored: no image", + "stale success ignored: concise", + "stale success ignored: no URI text", + "stale success has no onResolve", + "latest result wins", + "latest onResolve only", + "pending failure clears previous: layout-before-passive-effects: no URI text", + "pending failure clears previous: sync-commit: no URI text", + "old resolved image removed synchronously: no image", + "old resolved image removed synchronously: concise", + "old resolved image removed synchronously: no URI text", + "safe switch while rejection pending: layout-before-passive-effects: no URI text", + "safe switch while rejection pending: sync-commit: no URI text", + "stale rejection cannot fail new safe image", + "active rejection: layout-before-passive-effects: no URI text", + "active rejection: sync-commit: no URI text", + "active rejection: no image", + "active rejection: concise", + "active rejection: no URI text", + "failure not busy", + "unsafe resolver result: layout-before-passive-effects: no URI text", + "unsafe resolver result: sync-commit: no URI text", + "unsafe resolver rejected: no image", + "unsafe resolver rejected: concise", + "unsafe resolver rejected: no URI text", + "unmount pending: layout-before-passive-effects: no URI text", + "unmount pending: sync-commit: no URI text", + "unmounted: layout-before-passive-effects: no URI text", + "unmounted: sync-commit: no URI text", + "unmounted completion ignored", + "preview: layout-before-passive-effects: no URI text", + "preview: sync-commit: no URI text", + "safe image preview click retained", + "synthetic-A: layout-before-passive-effects: no URI text", + "synthetic-A: sync-commit: no URI text", + "actual CompletedFold header exists", + "synthetic-A: before-toggle-0: no URI text", + "synthetic-A: toggle-0: no URI text", + "actual MessageBubble preserves image", + "actual CompletedFold remounts image across toggle", + "actual CompletedFold header exists", + "synthetic-A: before-toggle-1: no URI text", + "synthetic-A: toggle-1: no URI text", + "actual MessageBubble preserves image", + "actual CompletedFold remounts image across toggle", + "actual CompletedFold header exists", + "synthetic-A: before-toggle-2: no URI text", + "synthetic-A: toggle-2: no URI text", + "actual MessageBubble preserves image", + "actual CompletedFold remounts image across toggle", + "synthetic-B: layout-before-passive-effects: no URI text", + "synthetic-B: sync-commit: no URI text", + "actual CompletedFold header exists", + "synthetic-B: before-toggle-0: no URI text", + "synthetic-B: toggle-0: no URI text", + "actual MessageBubble preserves image", + "actual CompletedFold remounts image across toggle", + "actual CompletedFold header exists", + "synthetic-B: before-toggle-1: no URI text", + "synthetic-B: toggle-1: no URI text", + "actual MessageBubble preserves image", + "actual CompletedFold remounts image across toggle", + "actual CompletedFold header exists", + "synthetic-B: before-toggle-2: no URI text", + "synthetic-B: toggle-2: no URI text", + "actual MessageBubble preserves image", + "actual CompletedFold remounts image across toggle", + "synthetic-A: layout-before-passive-effects: no URI text", + "synthetic-A: sync-commit: no URI text", + "actual CompletedFold header exists", + "synthetic-A: before-toggle-0: no URI text", + "synthetic-A: toggle-0: no URI text", + "actual MessageBubble preserves image", + "actual CompletedFold remounts image across toggle", + "actual CompletedFold header exists", + "synthetic-A: before-toggle-1: no URI text", + "synthetic-A: toggle-1: no URI text", + "actual MessageBubble preserves image", + "actual CompletedFold remounts image across toggle", + "actual CompletedFold header exists", + "synthetic-A: before-toggle-2: no URI text", + "synthetic-A: toggle-2: no URI text", + "actual MessageBubble preserves image", + "actual CompletedFold remounts image across toggle", + "no renderer errors" + ], + "samples": [ + { + "label": "cold: layout-before-passive-effects", + "textLength": 0, + "imageCount": 1, + "height": 0, + "imageHeight": 0 + }, + { + "label": "cold: sync-commit", + "textLength": 0, + "imageCount": 1, + "height": 0, + "imageHeight": 0 + }, + { + "label": "stable", + "textLength": 0, + "imageCount": 1, + "height": 0, + "imageHeight": 0 + }, + { + "label": "native image error", + "textLength": 6, + "imageCount": 0, + "height": 0, + "imageHeight": 0 + }, + { + "label": "error recovery new src: layout-before-passive-effects", + "textLength": 0, + "imageCount": 1, + "height": 0, + "imageHeight": 0 + }, + { + "label": "error recovery new src: sync-commit", + "textLength": 0, + "imageCount": 1, + "height": 0, + "imageHeight": 0 + }, + { + "label": "invalid/no-host: layout-before-passive-effects", + "textLength": 6, + "imageCount": 0, + "height": 0, + "imageHeight": 0 + }, + { + "label": "invalid/no-host: sync-commit", + "textLength": 6, + "imageCount": 0, + "height": 0, + "imageHeight": 0 + }, + { + "label": "invalid/no-host initial", + "textLength": 6, + "imageCount": 0, + "height": 0, + "imageHeight": 0 + }, + { + "label": "invalid/no-host settled", + "textLength": 6, + "imageCount": 0, + "height": 0, + "imageHeight": 0 + }, + { + "label": "invalid/no-host: layout-before-passive-effects", + "textLength": 6, + "imageCount": 0, + "height": 0, + "imageHeight": 0 + }, + { + "label": "invalid/no-host: sync-commit", + "textLength": 6, + "imageCount": 0, + "height": 0, + "imageHeight": 0 + }, + { + "label": "invalid/no-host initial", + "textLength": 6, + "imageCount": 0, + "height": 0, + "imageHeight": 0 + }, + { + "label": "invalid/no-host settled", + "textLength": 6, + "imageCount": 0, + "height": 0, + "imageHeight": 0 + }, + { + "label": "invalid/no-host: layout-before-passive-effects", + "textLength": 6, + "imageCount": 0, + "height": 0, + "imageHeight": 0 + }, + { + "label": "invalid/no-host: sync-commit", + "textLength": 6, + "imageCount": 0, + "height": 0, + "imageHeight": 0 + }, + { + "label": "invalid/no-host initial", + "textLength": 6, + "imageCount": 0, + "height": 0, + "imageHeight": 0 + }, + { + "label": "invalid/no-host settled", + "textLength": 6, + "imageCount": 0, + "height": 0, + "imageHeight": 0 + }, + { + "label": "same source first resolver: layout-before-passive-effects", + "textLength": 6, + "imageCount": 0, + "height": 0, + "imageHeight": 0 + }, + { + "label": "same source first resolver: sync-commit", + "textLength": 6, + "imageCount": 0, + "height": 0, + "imageHeight": 0 + }, + { + "label": "same source second resolver: layout-before-passive-effects", + "textLength": 6, + "imageCount": 0, + "height": 0, + "imageHeight": 0 + }, + { + "label": "same source second resolver: sync-commit", + "textLength": 6, + "imageCount": 0, + "height": 0, + "imageHeight": 0 + }, + { + "label": "old resolver identity ignored", + "textLength": 6, + "imageCount": 0, + "height": 0, + "imageHeight": 0 + }, + { + "label": "local direct: layout-before-passive-effects", + "textLength": 0, + "imageCount": 1, + "height": 0, + "imageHeight": 0 + }, + { + "label": "local direct: sync-commit", + "textLength": 0, + "imageCount": 1, + "height": 0, + "imageHeight": 0 + }, + { + "label": "prefer host enabled: layout-before-passive-effects", + "textLength": 6, + "imageCount": 0, + "height": 0, + "imageHeight": 0 + }, + { + "label": "prefer host enabled: sync-commit", + "textLength": 6, + "imageCount": 0, + "height": 0, + "imageHeight": 0 + }, + { + "label": "host preference removes direct file before effects", + "textLength": 6, + "imageCount": 0, + "height": 0, + "imageHeight": 0 + }, + { + "label": "same direct first adapter: layout-before-passive-effects", + "textLength": 0, + "imageCount": 1, + "height": 0, + "imageHeight": 0 + }, + { + "label": "same direct first adapter: sync-commit", + "textLength": 0, + "imageCount": 1, + "height": 0, + "imageHeight": 0 + }, + { + "label": "direct failed before new adapter", + "textLength": 6, + "imageCount": 0, + "height": 0, + "imageHeight": 0 + }, + { + "label": "same direct new adapter: layout-before-passive-effects", + "textLength": 0, + "imageCount": 1, + "height": 0, + "imageHeight": 0 + }, + { + "label": "same direct new adapter: sync-commit", + "textLength": 0, + "imageCount": 1, + "height": 0, + "imageHeight": 0 + }, + { + "label": "immediate error after adapter reset retained", + "textLength": 6, + "imageCount": 0, + "height": 0, + "imageHeight": 0 + }, + { + "label": "A to B: layout-before-passive-effects", + "textLength": 0, + "imageCount": 1, + "height": 0, + "imageHeight": 0 + }, + { + "label": "A to B: sync-commit", + "textLength": 0, + "imageCount": 1, + "height": 0, + "imageHeight": 0 + }, + { + "label": "B to A retry: layout-before-passive-effects", + "textLength": 0, + "imageCount": 1, + "height": 0, + "imageHeight": 0 + }, + { + "label": "B to A retry: sync-commit", + "textLength": 0, + "imageCount": 1, + "height": 0, + "imageHeight": 0 + }, + { + "label": "pending old: layout-before-passive-effects", + "textLength": 6, + "imageCount": 0, + "height": 0, + "imageHeight": 0 + }, + { + "label": "pending old: sync-commit", + "textLength": 6, + "imageCount": 0, + "height": 0, + "imageHeight": 0 + }, + { + "label": "pending new: layout-before-passive-effects", + "textLength": 6, + "imageCount": 0, + "height": 0, + "imageHeight": 0 + }, + { + "label": "pending new: sync-commit", + "textLength": 6, + "imageCount": 0, + "height": 0, + "imageHeight": 0 + }, + { + "label": "no old during new", + "textLength": 6, + "imageCount": 0, + "height": 0, + "imageHeight": 0 + }, + { + "label": "stale success ignored", + "textLength": 6, + "imageCount": 0, + "height": 0, + "imageHeight": 0 + }, + { + "label": "pending failure clears previous: layout-before-passive-effects", + "textLength": 6, + "imageCount": 0, + "height": 0, + "imageHeight": 0 + }, + { + "label": "pending failure clears previous: sync-commit", + "textLength": 6, + "imageCount": 0, + "height": 0, + "imageHeight": 0 + }, + { + "label": "old resolved image removed synchronously", + "textLength": 6, + "imageCount": 0, + "height": 0, + "imageHeight": 0 + }, + { + "label": "safe switch while rejection pending: layout-before-passive-effects", + "textLength": 0, + "imageCount": 1, + "height": 0, + "imageHeight": 0 + }, + { + "label": "safe switch while rejection pending: sync-commit", + "textLength": 0, + "imageCount": 1, + "height": 0, + "imageHeight": 0 + }, + { + "label": "active rejection: layout-before-passive-effects", + "textLength": 6, + "imageCount": 0, + "height": 0, + "imageHeight": 0 + }, + { + "label": "active rejection: sync-commit", + "textLength": 6, + "imageCount": 0, + "height": 0, + "imageHeight": 0 + }, + { + "label": "active rejection", + "textLength": 6, + "imageCount": 0, + "height": 0, + "imageHeight": 0 + }, + { + "label": "unsafe resolver result: layout-before-passive-effects", + "textLength": 6, + "imageCount": 0, + "height": 0, + "imageHeight": 0 + }, + { + "label": "unsafe resolver result: sync-commit", + "textLength": 6, + "imageCount": 0, + "height": 0, + "imageHeight": 0 + }, + { + "label": "unsafe resolver rejected", + "textLength": 6, + "imageCount": 0, + "height": 0, + "imageHeight": 0 + }, + { + "label": "unmount pending: layout-before-passive-effects", + "textLength": 6, + "imageCount": 0, + "height": 0, + "imageHeight": 0 + }, + { + "label": "unmount pending: sync-commit", + "textLength": 6, + "imageCount": 0, + "height": 0, + "imageHeight": 0 + }, + { + "label": "unmounted: layout-before-passive-effects", + "textLength": 5, + "imageCount": 0, + "height": 0, + "imageHeight": 0 + }, + { + "label": "unmounted: sync-commit", + "textLength": 5, + "imageCount": 0, + "height": 0, + "imageHeight": 0 + }, + { + "label": "preview: layout-before-passive-effects", + "textLength": 0, + "imageCount": 1, + "height": 0, + "imageHeight": 0 + }, + { + "label": "preview: sync-commit", + "textLength": 0, + "imageCount": 1, + "height": 0, + "imageHeight": 0 + }, + { + "label": "synthetic-A: layout-before-passive-effects", + "textLength": 35, + "imageCount": 1, + "height": 0, + "imageHeight": 0 + }, + { + "label": "synthetic-A: sync-commit", + "textLength": 35, + "imageCount": 1, + "height": 0, + "imageHeight": 0 + }, + { + "label": "synthetic-A: before-toggle-0", + "textLength": 35, + "imageCount": 1, + "height": 0, + "imageHeight": 0 + }, + { + "label": "synthetic-A: toggle-0", + "textLength": 35, + "imageCount": 1, + "height": 0, + "imageHeight": 0 + }, + { + "label": "synthetic-A: before-toggle-1", + "textLength": 35, + "imageCount": 1, + "height": 0, + "imageHeight": 0 + }, + { + "label": "synthetic-A: toggle-1", + "textLength": 35, + "imageCount": 1, + "height": 0, + "imageHeight": 0 + }, + { + "label": "synthetic-A: before-toggle-2", + "textLength": 35, + "imageCount": 1, + "height": 0, + "imageHeight": 0 + }, + { + "label": "synthetic-A: toggle-2", + "textLength": 35, + "imageCount": 1, + "height": 0, + "imageHeight": 0 + }, + { + "label": "synthetic-B: layout-before-passive-effects", + "textLength": 35, + "imageCount": 1, + "height": 0, + "imageHeight": 0 + }, + { + "label": "synthetic-B: sync-commit", + "textLength": 35, + "imageCount": 1, + "height": 0, + "imageHeight": 0 + }, + { + "label": "synthetic-B: before-toggle-0", + "textLength": 35, + "imageCount": 1, + "height": 0, + "imageHeight": 0 + }, + { + "label": "synthetic-B: toggle-0", + "textLength": 35, + "imageCount": 1, + "height": 0, + "imageHeight": 0 + }, + { + "label": "synthetic-B: before-toggle-1", + "textLength": 35, + "imageCount": 1, + "height": 0, + "imageHeight": 0 + }, + { + "label": "synthetic-B: toggle-1", + "textLength": 35, + "imageCount": 1, + "height": 0, + "imageHeight": 0 + }, + { + "label": "synthetic-B: before-toggle-2", + "textLength": 35, + "imageCount": 1, + "height": 0, + "imageHeight": 0 + }, + { + "label": "synthetic-B: toggle-2", + "textLength": 35, + "imageCount": 1, + "height": 0, + "imageHeight": 0 + }, + { + "label": "synthetic-A: layout-before-passive-effects", + "textLength": 35, + "imageCount": 1, + "height": 0, + "imageHeight": 0 + }, + { + "label": "synthetic-A: sync-commit", + "textLength": 35, + "imageCount": 1, + "height": 0, + "imageHeight": 0 + }, + { + "label": "synthetic-A: before-toggle-0", + "textLength": 35, + "imageCount": 1, + "height": 0, + "imageHeight": 0 + }, + { + "label": "synthetic-A: toggle-0", + "textLength": 35, + "imageCount": 1, + "height": 0, + "imageHeight": 0 + }, + { + "label": "synthetic-A: before-toggle-1", + "textLength": 35, + "imageCount": 1, + "height": 0, + "imageHeight": 0 + }, + { + "label": "synthetic-A: toggle-1", + "textLength": 35, + "imageCount": 1, + "height": 0, + "imageHeight": 0 + }, + { + "label": "synthetic-A: before-toggle-2", + "textLength": 35, + "imageCount": 1, + "height": 0, + "imageHeight": 0 + }, + { + "label": "synthetic-A: toggle-2", + "textLength": 35, + "imageCount": 1, + "height": 0, + "imageHeight": 0 + } + ], + "errors": [], + "limits": "DOM lifecycle only; jsdom heights are not layout acceptance. Synthetic data only." +} \ No newline at end of file diff --git a/docs/协作/evidence/B04-review-01/media.txt b/docs/协作/evidence/B04-review-01/media.txt new file mode 100644 index 0000000..0628e21 --- /dev/null +++ b/docs/协作/evidence/B04-review-01/media.txt @@ -0,0 +1,7 @@ + +> ycode@0.0.7 test:media +> esbuild scripts/mermaid-regression.ts --bundle --platform=node --format=esm --packages=external --jsx=automatic --loader:.css=empty --outfile=.tmp/media-tests/mermaid-regression.mjs --log-level=warning && node .tmp/media-tests/mermaid-regression.mjs && esbuild scripts/image-renderer-regression.tsx scripts/path-renderer-regression.tsx --bundle --platform=node --format=cjs --jsx=automatic --loader:.css=empty --out-extension:.js=.cjs --outdir=.tmp/media-tests --log-level=warning && node .tmp/media-tests/image-renderer-regression.cjs && node .tmp/media-tests/path-renderer-regression.cjs + +Mermaid cache, sanitizer, queue, and abort regression checks passed +image-renderer-regression: all checks passed +Path renderer regression checks passed (23). diff --git a/docs/协作/evidence/B04-review-01/native-diagnostic.cjs b/docs/协作/evidence/B04-review-01/native-diagnostic.cjs new file mode 100644 index 0000000..fa77c4e --- /dev/null +++ b/docs/协作/evidence/B04-review-01/native-diagnostic.cjs @@ -0,0 +1,32 @@ +/** Optional, isolated own-component Electron frame probe; never launches the user's app. + * Build first: node scripts/test-image-lifecycle.mjs --build-only + * Then: electron scripts/verify-b04-image-native.cjs + * Requires a permitted graphical environment. Never pass --no-sandbox. */ +const {app,BrowserWindow,session}=require('electron') +const fs=require('node:fs'),path=require('node:path'),os=require('node:os') +const fixture=path.resolve(process.argv[2]||'') +if(!process.argv[2]||!fs.existsSync(path.join(fixture,'index.html')))throw Error('Supply build-only fixture directory') +const profile=fs.mkdtempSync(path.join(os.tmpdir(),'ycode-b04-native-')) +app.setPath('userData',profile) +let timer,win,finished=false +function finish(error,report){ + if(finished)return;finished=true;clearTimeout(timer) + const result={result:error?'FAIL':'PASS',error:error?String(error):undefined,report,limits:'Synthetic own-component Electron fixture, not the installed application or original reference UI.'} + fs.writeFileSync(path.join(fixture,'native-report.json'),JSON.stringify(result,null,2)) + console.log(JSON.stringify({result:result.result,error:result.error,output:path.join(fixture,'native-report.json')})) + if(win&&!win.isDestroyed())win.destroy() + app.exit(error?1:0) +} +app.whenReady().then(async()=>{ + session.defaultSession.webRequest.onBeforeRequest((details,callback)=>callback({cancel:!['file:','data:','blob:','devtools:'].some(p=>details.url.startsWith(p))})) + win=new BrowserWindow({width:1000,height:800,show:true,webPreferences:{nodeIntegration:false,contextIsolation:true,sandbox:true,backgroundThrottling:false}}) + win.webContents.on('console-message',(_e,l,m)=>console.log('FRAME_CONSOLE',l,m));win.webContents.on('did-fail-load',(...args)=>console.log('FRAME_LOAD_FAIL',args.slice(1))); + win.webContents.on('render-process-gone',(_,details)=>finish(Error('Renderer gone: '+details.reason))) + timer=setTimeout(()=>finish(Error('Bounded native probe timed out after 20s')),20000) + await win.loadFile(path.join(fixture,'index.html')) + console.log('FRAME_STATE',await win.webContents.executeJavaScript('({fixture:typeof window.__b04,error:window.__b04Error,report:!!window.__b04Report,text:document.body.textContent.slice(-500)})')); + const report=await win.webContents.executeJavaScript(`new Promise((resolve,reject)=>{const check=()=>{if(window.__b04Error)return reject(Error(window.__b04Error));if(window.__b04Report)return resolve(window.__b04Report);setTimeout(check,25)};check()})`) + if(!report.samples.some(s=>s.height>0))throw Error('No nonzero native layout measured') + if(report.samples.some(s=>s.textLength>1000||s.height>2000))throw Error('Unexpected address-sized text/height spike') + finish(null,report) +}).catch(error=>finish(error)) diff --git a/docs/协作/evidence/B04-review-01/native-diagnostic.txt b/docs/协作/evidence/B04-review-01/native-diagnostic.txt new file mode 100644 index 0000000..942e3d4 --- /dev/null +++ b/docs/协作/evidence/B04-review-01/native-diagnostic.txt @@ -0,0 +1,13 @@ + +(electron) 'console-message' arguments are deprecated and will be removed. Please use Event object instead. +FRAME_CONSOLE 1 %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools +You might need to use a local HTTP server (instead of file://): https://react.dev/link/react-devtools-faq font-weight:bold +FRAME_STATE { + fixture: 'object', + error: undefined, + report: false, + text: 'YCode已完成 2s深度思考Synthetic detail\n' + + '\n' + + "复制Running synthetic own-component frame probe…window.__b04.probe().then(r=>{window.__b04Report=r;document.getElementById('report').textContent=JSON.stringify(r,null,2)}).catch(e=>{window.__b04Error=String(e);document.getElementById('report').textContent=String(e)})" +} +{"result":"FAIL","error":"Error: Bounded native probe timed out after 20s","output":"C:\\Users\\Administrator\\.codex\\worktrees\\b04-accept-01\\YCode\\.tmp\\b04-image-pmmWZx\\native-report.json"} diff --git a/docs/协作/evidence/B04-review-01/native-negative.txt b/docs/协作/evidence/B04-review-01/native-negative.txt new file mode 100644 index 0000000..53c39af --- /dev/null +++ b/docs/协作/evidence/B04-review-01/native-negative.txt @@ -0,0 +1,17 @@ + +(electron) 'console-message' arguments are deprecated and will be removed. Please use Event object instead. +FRAME_CONSOLE 1 %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools +You might need to use a local HTTP server (instead of file://): https://react.dev/link/react-devtools-faq font-weight:bold +FRAME_CONSOLE 3 Uncaught Error: synthetic-A: layout-before-passive-effects: no URI text +FRAME_CONSOLE 2 %s + +%s + An error occurred in the component. Consider adding an error boundary to your tree to customize error handling behavior. +Visit https://react.dev/link/error-boundaries to learn more about error boundaries. +FRAME_STATE { + fixture: 'object', + error: 'Error: actual CompletedFold header exists', + report: false, + text: "Error: actual CompletedFold header existswindow.__b04.probe().then(r=>{window.__b04Report=r;document.getElementById('report').textContent=JSON.stringify(r,null,2)}).catch(e=>{window.__b04Error=String(e);document.getElementById('report').textContent=String(e)})" +} +{"result":"FAIL","error":"Error: Error: actual CompletedFold header exists","output":"C:\\Users\\Administrator\\.codex\\worktrees\\b04-accept-01\\YCode\\.tmp\\b04-baseline-JAjxNk\\native-report.json"} diff --git a/docs/协作/evidence/B04-review-01/native-original.txt b/docs/协作/evidence/B04-review-01/native-original.txt new file mode 100644 index 0000000..8985028 --- /dev/null +++ b/docs/协作/evidence/B04-review-01/native-original.txt @@ -0,0 +1,2 @@ + +{"result":"FAIL","error":"Error: Bounded native probe timed out after 20s","output":"C:\\Users\\Administrator\\.codex\\worktrees\\b04-accept-01\\YCode\\.tmp\\b04-image-pmmWZx\\native-report.json"} diff --git a/docs/协作/evidence/B04-review-01/native-report.json b/docs/协作/evidence/B04-review-01/native-report.json new file mode 100644 index 0000000..e3eda85 --- /dev/null +++ b/docs/协作/evidence/B04-review-01/native-report.json @@ -0,0 +1,883 @@ +{ + "result": "PASS", + "report": { + "checks": [ + "synthetic-A: layout-before-passive-effects: no URI text", + "synthetic-A: sync-commit: no URI text", + "actual CompletedFold header exists", + "synthetic-A: before-toggle-0: no URI text", + "synthetic-A: toggle-0: no URI text", + "actual MessageBubble preserves image", + "actual CompletedFold remounts image across toggle", + "synthetic-A: toggle-0: before-rAF: no URI text", + "synthetic-A: toggle-0: frame-0: no URI text", + "synthetic-A: toggle-0: frame-1: no URI text", + "synthetic-A: toggle-0: frame-2: no URI text", + "synthetic-A: toggle-0: frame-3: no URI text", + "synthetic-A: toggle-0: frame-4: no URI text", + "synthetic-A: toggle-0: frame-5: no URI text", + "synthetic-A: toggle-0: frame-6: no URI text", + "synthetic-A: toggle-0: frame-7: no URI text", + "actual CompletedFold header exists", + "synthetic-A: before-toggle-1: no URI text", + "synthetic-A: toggle-1: no URI text", + "actual MessageBubble preserves image", + "actual CompletedFold remounts image across toggle", + "synthetic-A: toggle-1: before-rAF: no URI text", + "synthetic-A: toggle-1: frame-0: no URI text", + "synthetic-A: toggle-1: frame-1: no URI text", + "synthetic-A: toggle-1: frame-2: no URI text", + "synthetic-A: toggle-1: frame-3: no URI text", + "synthetic-A: toggle-1: frame-4: no URI text", + "synthetic-A: toggle-1: frame-5: no URI text", + "synthetic-A: toggle-1: frame-6: no URI text", + "synthetic-A: toggle-1: frame-7: no URI text", + "actual CompletedFold header exists", + "synthetic-A: before-toggle-2: no URI text", + "synthetic-A: toggle-2: no URI text", + "actual MessageBubble preserves image", + "actual CompletedFold remounts image across toggle", + "synthetic-A: toggle-2: before-rAF: no URI text", + "synthetic-A: toggle-2: frame-0: no URI text", + "synthetic-A: toggle-2: frame-1: no URI text", + "synthetic-A: toggle-2: frame-2: no URI text", + "synthetic-A: toggle-2: frame-3: no URI text", + "synthetic-A: toggle-2: frame-4: no URI text", + "synthetic-A: toggle-2: frame-5: no URI text", + "synthetic-A: toggle-2: frame-6: no URI text", + "synthetic-A: toggle-2: frame-7: no URI text", + "synthetic-B: layout-before-passive-effects: no URI text", + "synthetic-B: sync-commit: no URI text", + "actual CompletedFold header exists", + "synthetic-B: before-toggle-0: no URI text", + "synthetic-B: toggle-0: no URI text", + "actual MessageBubble preserves image", + "actual CompletedFold remounts image across toggle", + "synthetic-B: toggle-0: before-rAF: no URI text", + "synthetic-B: toggle-0: frame-0: no URI text", + "synthetic-B: toggle-0: frame-1: no URI text", + "synthetic-B: toggle-0: frame-2: no URI text", + "synthetic-B: toggle-0: frame-3: no URI text", + "synthetic-B: toggle-0: frame-4: no URI text", + "synthetic-B: toggle-0: frame-5: no URI text", + "synthetic-B: toggle-0: frame-6: no URI text", + "synthetic-B: toggle-0: frame-7: no URI text", + "actual CompletedFold header exists", + "synthetic-B: before-toggle-1: no URI text", + "synthetic-B: toggle-1: no URI text", + "actual MessageBubble preserves image", + "actual CompletedFold remounts image across toggle", + "synthetic-B: toggle-1: before-rAF: no URI text", + "synthetic-B: toggle-1: frame-0: no URI text", + "synthetic-B: toggle-1: frame-1: no URI text", + "synthetic-B: toggle-1: frame-2: no URI text", + "synthetic-B: toggle-1: frame-3: no URI text", + "synthetic-B: toggle-1: frame-4: no URI text", + "synthetic-B: toggle-1: frame-5: no URI text", + "synthetic-B: toggle-1: frame-6: no URI text", + "synthetic-B: toggle-1: frame-7: no URI text", + "actual CompletedFold header exists", + "synthetic-B: before-toggle-2: no URI text", + "synthetic-B: toggle-2: no URI text", + "actual MessageBubble preserves image", + "actual CompletedFold remounts image across toggle", + "synthetic-B: toggle-2: before-rAF: no URI text", + "synthetic-B: toggle-2: frame-0: no URI text", + "synthetic-B: toggle-2: frame-1: no URI text", + "synthetic-B: toggle-2: frame-2: no URI text", + "synthetic-B: toggle-2: frame-3: no URI text", + "synthetic-B: toggle-2: frame-4: no URI text", + "synthetic-B: toggle-2: frame-5: no URI text", + "synthetic-B: toggle-2: frame-6: no URI text", + "synthetic-B: toggle-2: frame-7: no URI text", + "synthetic-A: layout-before-passive-effects: no URI text", + "synthetic-A: sync-commit: no URI text", + "actual CompletedFold header exists", + "synthetic-A: before-toggle-0: no URI text", + "synthetic-A: toggle-0: no URI text", + "actual MessageBubble preserves image", + "actual CompletedFold remounts image across toggle", + "synthetic-A: toggle-0: before-rAF: no URI text", + "synthetic-A: toggle-0: frame-0: no URI text", + "synthetic-A: toggle-0: frame-1: no URI text", + "synthetic-A: toggle-0: frame-2: no URI text", + "synthetic-A: toggle-0: frame-3: no URI text", + "synthetic-A: toggle-0: frame-4: no URI text", + "synthetic-A: toggle-0: frame-5: no URI text", + "synthetic-A: toggle-0: frame-6: no URI text", + "synthetic-A: toggle-0: frame-7: no URI text", + "actual CompletedFold header exists", + "synthetic-A: before-toggle-1: no URI text", + "synthetic-A: toggle-1: no URI text", + "actual MessageBubble preserves image", + "actual CompletedFold remounts image across toggle", + "synthetic-A: toggle-1: before-rAF: no URI text", + "synthetic-A: toggle-1: frame-0: no URI text", + "synthetic-A: toggle-1: frame-1: no URI text", + "synthetic-A: toggle-1: frame-2: no URI text", + "synthetic-A: toggle-1: frame-3: no URI text", + "synthetic-A: toggle-1: frame-4: no URI text", + "synthetic-A: toggle-1: frame-5: no URI text", + "synthetic-A: toggle-1: frame-6: no URI text", + "synthetic-A: toggle-1: frame-7: no URI text", + "actual CompletedFold header exists", + "synthetic-A: before-toggle-2: no URI text", + "synthetic-A: toggle-2: no URI text", + "actual MessageBubble preserves image", + "actual CompletedFold remounts image across toggle", + "synthetic-A: toggle-2: before-rAF: no URI text", + "synthetic-A: toggle-2: frame-0: no URI text", + "synthetic-A: toggle-2: frame-1: no URI text", + "synthetic-A: toggle-2: frame-2: no URI text", + "synthetic-A: toggle-2: frame-3: no URI text", + "synthetic-A: toggle-2: frame-4: no URI text", + "synthetic-A: toggle-2: frame-5: no URI text", + "synthetic-A: toggle-2: frame-6: no URI text", + "synthetic-A: toggle-2: frame-7: no URI text", + "synthetic PNG decoded in real browser", + "native frames include nonzero image geometry", + "native region has no thousands-pixel address spike", + "no renderer errors" + ], + "samples": [ + { + "label": "synthetic-A: layout-before-passive-effects", + "textLength": 35, + "imageCount": 1, + "height": 48, + "imageHeight": 0 + }, + { + "label": "synthetic-A: sync-commit", + "textLength": 35, + "imageCount": 1, + "height": 48, + "imageHeight": 0 + }, + { + "label": "synthetic-A: before-toggle-0", + "textLength": 35, + "imageCount": 1, + "height": 48, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-0", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-0: before-rAF", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-0: frame-0", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-0: frame-1", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-0: frame-2", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-0: frame-3", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-0: frame-4", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-0: frame-5", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-0: frame-6", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-0: frame-7", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-A: before-toggle-1", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-1", + "textLength": 35, + "imageCount": 1, + "height": 48, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-1: before-rAF", + "textLength": 35, + "imageCount": 1, + "height": 48, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-1: frame-0", + "textLength": 35, + "imageCount": 1, + "height": 48, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-1: frame-1", + "textLength": 35, + "imageCount": 1, + "height": 48, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-1: frame-2", + "textLength": 35, + "imageCount": 1, + "height": 48, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-1: frame-3", + "textLength": 35, + "imageCount": 1, + "height": 48, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-1: frame-4", + "textLength": 35, + "imageCount": 1, + "height": 48, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-1: frame-5", + "textLength": 35, + "imageCount": 1, + "height": 48, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-1: frame-6", + "textLength": 35, + "imageCount": 1, + "height": 48, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-1: frame-7", + "textLength": 35, + "imageCount": 1, + "height": 48, + "imageHeight": 180 + }, + { + "label": "synthetic-A: before-toggle-2", + "textLength": 35, + "imageCount": 1, + "height": 48, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-2", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-2: before-rAF", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-2: frame-0", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-2: frame-1", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-2: frame-2", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-2: frame-3", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-2: frame-4", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-2: frame-5", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-2: frame-6", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-2: frame-7", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-B: layout-before-passive-effects", + "textLength": 35, + "imageCount": 1, + "height": 48, + "imageHeight": 180 + }, + { + "label": "synthetic-B: sync-commit", + "textLength": 35, + "imageCount": 1, + "height": 48, + "imageHeight": 180 + }, + { + "label": "synthetic-B: before-toggle-0", + "textLength": 35, + "imageCount": 1, + "height": 48, + "imageHeight": 180 + }, + { + "label": "synthetic-B: toggle-0", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-B: toggle-0: before-rAF", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-B: toggle-0: frame-0", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-B: toggle-0: frame-1", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-B: toggle-0: frame-2", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-B: toggle-0: frame-3", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-B: toggle-0: frame-4", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-B: toggle-0: frame-5", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-B: toggle-0: frame-6", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-B: toggle-0: frame-7", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-B: before-toggle-1", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-B: toggle-1", + "textLength": 35, + "imageCount": 1, + "height": 48, + "imageHeight": 180 + }, + { + "label": "synthetic-B: toggle-1: before-rAF", + "textLength": 35, + "imageCount": 1, + "height": 48, + "imageHeight": 180 + }, + { + "label": "synthetic-B: toggle-1: frame-0", + "textLength": 35, + "imageCount": 1, + "height": 48, + "imageHeight": 180 + }, + { + "label": "synthetic-B: toggle-1: frame-1", + "textLength": 35, + "imageCount": 1, + "height": 48, + "imageHeight": 180 + }, + { + "label": "synthetic-B: toggle-1: frame-2", + "textLength": 35, + "imageCount": 1, + "height": 48, + "imageHeight": 180 + }, + { + "label": "synthetic-B: toggle-1: frame-3", + "textLength": 35, + "imageCount": 1, + "height": 48, + "imageHeight": 180 + }, + { + "label": "synthetic-B: toggle-1: frame-4", + "textLength": 35, + "imageCount": 1, + "height": 48, + "imageHeight": 180 + }, + { + "label": "synthetic-B: toggle-1: frame-5", + "textLength": 35, + "imageCount": 1, + "height": 48, + "imageHeight": 180 + }, + { + "label": "synthetic-B: toggle-1: frame-6", + "textLength": 35, + "imageCount": 1, + "height": 48, + "imageHeight": 180 + }, + { + "label": "synthetic-B: toggle-1: frame-7", + "textLength": 35, + "imageCount": 1, + "height": 48, + "imageHeight": 180 + }, + { + "label": "synthetic-B: before-toggle-2", + "textLength": 35, + "imageCount": 1, + "height": 48, + "imageHeight": 180 + }, + { + "label": "synthetic-B: toggle-2", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-B: toggle-2: before-rAF", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-B: toggle-2: frame-0", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-B: toggle-2: frame-1", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-B: toggle-2: frame-2", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-B: toggle-2: frame-3", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-B: toggle-2: frame-4", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-B: toggle-2: frame-5", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-B: toggle-2: frame-6", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-B: toggle-2: frame-7", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-A: layout-before-passive-effects", + "textLength": 35, + "imageCount": 1, + "height": 48, + "imageHeight": 180 + }, + { + "label": "synthetic-A: sync-commit", + "textLength": 35, + "imageCount": 1, + "height": 48, + "imageHeight": 180 + }, + { + "label": "synthetic-A: before-toggle-0", + "textLength": 35, + "imageCount": 1, + "height": 48, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-0", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-0: before-rAF", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-0: frame-0", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-0: frame-1", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-0: frame-2", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-0: frame-3", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-0: frame-4", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-0: frame-5", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-0: frame-6", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-0: frame-7", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-A: before-toggle-1", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-1", + "textLength": 35, + "imageCount": 1, + "height": 48, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-1: before-rAF", + "textLength": 35, + "imageCount": 1, + "height": 48, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-1: frame-0", + "textLength": 35, + "imageCount": 1, + "height": 48, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-1: frame-1", + "textLength": 35, + "imageCount": 1, + "height": 48, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-1: frame-2", + "textLength": 35, + "imageCount": 1, + "height": 48, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-1: frame-3", + "textLength": 35, + "imageCount": 1, + "height": 48, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-1: frame-4", + "textLength": 35, + "imageCount": 1, + "height": 48, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-1: frame-5", + "textLength": 35, + "imageCount": 1, + "height": 48, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-1: frame-6", + "textLength": 35, + "imageCount": 1, + "height": 48, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-1: frame-7", + "textLength": 35, + "imageCount": 1, + "height": 48, + "imageHeight": 180 + }, + { + "label": "synthetic-A: before-toggle-2", + "textLength": 35, + "imageCount": 1, + "height": 48, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-2", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-2: before-rAF", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-2: frame-0", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-2: frame-1", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-2: frame-2", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-2: frame-3", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-2: frame-4", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-2: frame-5", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-2: frame-6", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-2: frame-7", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + } + ], + "errors": [], + "limits": "Real geometry only if executed in a real browser with fixture CSS. No user data." + }, + "limits": "Synthetic own-component Electron fixture, not the installed application or original reference UI." +} \ No newline at end of file diff --git a/docs/协作/evidence/B04-review-01/native-unthrottled.txt b/docs/协作/evidence/B04-review-01/native-unthrottled.txt new file mode 100644 index 0000000..319c8e7 --- /dev/null +++ b/docs/协作/evidence/B04-review-01/native-unthrottled.txt @@ -0,0 +1,13 @@ + +(electron) 'console-message' arguments are deprecated and will be removed. Please use Event object instead. +FRAME_CONSOLE 1 %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools +You might need to use a local HTTP server (instead of file://): https://react.dev/link/react-devtools-faq font-weight:bold +FRAME_STATE { + fixture: 'object', + error: undefined, + report: false, + text: 'YCode已完成 2s深度思考Synthetic detail\n' + + '\n' + + "复制Running synthetic own-component frame probe…window.__b04.probe().then(r=>{window.__b04Report=r;document.getElementById('report').textContent=JSON.stringify(r,null,2)}).catch(e=>{window.__b04Error=String(e);document.getElementById('report').textContent=String(e)})" +} +{"result":"PASS","output":"C:\\Users\\Administrator\\.codex\\worktrees\\b04-accept-01\\YCode\\.tmp\\b04-image-pmmWZx\\native-report.json"} diff --git a/docs/协作/evidence/B04-review-01/regression-results.json b/docs/协作/evidence/B04-review-01/regression-results.json new file mode 100644 index 0000000..05733b4 --- /dev/null +++ b/docs/协作/evidence/B04-review-01/regression-results.json @@ -0,0 +1,14 @@ +[ + { + "name": "test", + "exitCode": 0 + }, + { + "name": "test:alignment:dom", + "exitCode": 0 + }, + { + "name": "check:tokens", + "exitCode": 1 + } +] diff --git a/docs/协作/evidence/B04-review-01/results.json b/docs/协作/evidence/B04-review-01/results.json new file mode 100644 index 0000000..a5cb3c4 --- /dev/null +++ b/docs/协作/evidence/B04-review-01/results.json @@ -0,0 +1,14 @@ +[ + { + "name": "test:image-lifecycle", + "exitCode": 0 + }, + { + "name": "test:media", + "exitCode": 0 + }, + { + "name": "build-fixture", + "exitCode": 0 + } +] diff --git a/docs/协作/evidence/B04-review-01/test-alignment-dom.txt b/docs/协作/evidence/B04-review-01/test-alignment-dom.txt new file mode 100644 index 0000000..3a6362c --- /dev/null +++ b/docs/协作/evidence/B04-review-01/test-alignment-dom.txt @@ -0,0 +1,48 @@ + +> ycode@0.0.7 test:alignment:dom +> node scripts/run-alignment-regression.mjs --require-dom + +PASS model alignment: fresh/legacy migration, new/edit/default/delete/reload, valid selection (offline host fixtures) +PASS model settings: deferred owner switch, rename mapping, addition selection, empty deletion, immutable history +PASS session factory: first-send preference, mode preservation, invalid permission rejection (isolated ports) +{"historyMessages":10000,"bytes":747781,"parseMs":3.2580999999999847,"storeHydrationMs":0.12890000000001578,"note":"Node parsing/store benchmark only, not browser rendering or Windows IPC performance"} +session-composer-alignment: loading/cache/retry/races/model/permissions/modes/SSR passed +alignment-conversation: local groups, original expanded order, question projection and truthful status passed +A01 native MessageBubble identity aliases, immutable inputs and ordinary raw output passed +A01 imported native card, linked dedup and unknown-position compatibility passed +question-answer-shell: structural and recovered CSS contracts passed +question-answer-shell: DOM hierarchy, controls linkage, click, Enter, Space and inert contracts passed +Runtime progress, session-grant scope and approval lifecycle regressions passed +Permission intercept static rendering passed; interactive keyboard/focus remains UI acceptance +[claude-permission] {"permissionMode":"default-sandbox","agentMode":"craft","sdkMode":"unknown","sdkModeSource":"host-query-or-acknowledged-control","policyTransition":false,"source":"callback","toolCall":"e3b98a4da31a127d","decisionCategory":"unknown","decisionCode":"unknown","decisionCodePresent":false,"matchedAskRule":false,"branch":"permission-approval"} +[claude-permission] {"permissionMode":"default-sandbox","agentMode":"craft","sdkMode":"unknown","sdkModeSource":"host-query-or-acknowledged-control","policyTransition":false,"source":"callback","toolCall":"e3b98a4da31a127d","decisionCategory":"unknown","decisionCode":"unknown","decisionCodePresent":false,"matchedAskRule":false,"branch":"permission-approval"} +[claude-permission] {"permissionMode":"default-sandbox","agentMode":"craft","sdkMode":"unknown","sdkModeSource":"host-query-or-acknowledged-control","policyTransition":false,"source":"callback","toolCall":"e3b98a4da31a127d","decisionCategory":"unknown","decisionCode":"unknown","decisionCodePresent":false,"matchedAskRule":false,"branch":"permission-approval"} +[claude-permission] {"permissionMode":"full-access","agentMode":"ask","sdkMode":"unknown","sdkModeSource":"host-query-or-acknowledged-control","policyTransition":false,"source":"callback","toolCall":"e3b98a4da31a127d","decisionCategory":"unknown","decisionCode":"unknown","decisionCodePresent":false,"matchedAskRule":false,"branch":"mode-or-inactive-deny"} +[claude-permission] {"permissionMode":"full-access","agentMode":"plan","sdkMode":"unknown","sdkModeSource":"host-query-or-acknowledged-control","policyTransition":false,"source":"callback","toolCall":"e3b98a4da31a127d","decisionCategory":"unknown","decisionCode":"unknown","decisionCodePresent":false,"matchedAskRule":false,"branch":"mode-or-inactive-deny"} +[claude-permission] {"permissionMode":"full-access","agentMode":"craft","sdkMode":"unknown","sdkModeSource":"host-query-or-acknowledged-control","policyTransition":false,"source":"callback","toolCall":"e3b98a4da31a127d","decisionCategory":"unknown","decisionCode":"unknown","decisionCodePresent":false,"matchedAskRule":false,"branch":"full-access-preauthorized"} +[claude-permission] {"permissionMode":"full-access","agentMode":"craft","sdkMode":"unknown","sdkModeSource":"host-query-or-acknowledged-control","policyTransition":false,"source":"callback","toolCall":"e3b98a4da31a127d","decisionCategory":"unknown","decisionCode":"unknown","decisionCodePresent":false,"matchedAskRule":true,"branch":"full-access-preauthorized"} +[claude-permission] {"permissionMode":"full-access","agentMode":"craft","sdkMode":"unknown","sdkModeSource":"host-query-or-acknowledged-control","policyTransition":false,"source":"callback","toolCall":"e3b98a4da31a127d","decisionCategory":"unknown","decisionCode":"unknown","decisionCodePresent":false,"matchedAskRule":false,"branch":"full-access-preauthorized"} +[claude-permission] {"permissionMode":"full-access","agentMode":"craft","sdkMode":"unknown","sdkModeSource":"host-query-or-acknowledged-control","policyTransition":false,"source":"callback","toolCall":"e3b98a4da31a127d","decisionCategory":"subcommandResults","decisionCode":"unknown","decisionCodePresent":false,"matchedAskRule":false,"branch":"full-access-preauthorized"} +[claude-permission] {"permissionMode":"full-access","agentMode":"craft","sdkMode":"unknown","sdkModeSource":"host-query-or-acknowledged-control","policyTransition":false,"source":"callback","toolCall":"e3b98a4da31a127d","decisionCategory":"safetyCheck","decisionCode":"unknown","decisionCodePresent":false,"matchedAskRule":false,"branch":"full-access-preauthorized"} +[claude-permission] {"permissionMode":"full-access","agentMode":"craft","sdkMode":"unknown","sdkModeSource":"host-query-or-acknowledged-control","policyTransition":false,"source":"callback","toolCall":"e3b98a4da31a127d","decisionCategory":"unknown","decisionCode":"unknown","decisionCodePresent":true,"matchedAskRule":false,"branch":"full-access-preauthorized"} +[claude-permission] {"permissionMode":"full-access","agentMode":"craft","sdkMode":"unknown","sdkModeSource":"host-query-or-acknowledged-control","policyTransition":false,"source":"callback","toolCall":"e3b98a4da31a127d","decisionCategory":"unknown","decisionCode":"unknown","decisionCodePresent":false,"matchedAskRule":false,"branch":"full-access-preauthorized"} +[claude-permission] {"permissionMode":"full-access","agentMode":"craft","sdkMode":"unknown","sdkModeSource":"host-query-or-acknowledged-control","policyTransition":false,"source":"callback","toolCall":"e3b98a4da31a127d","decisionCategory":"unknown","decisionCode":"unknown","decisionCodePresent":false,"matchedAskRule":false,"branch":"full-access-preauthorized"} +[claude-permission] {"permissionMode":"default-sandbox","agentMode":"craft","sdkMode":"unknown","sdkModeSource":"host-query-or-acknowledged-control","policyTransition":false,"source":"callback","toolCall":"e3b98a4da31a127d","decisionCategory":"unknown","decisionCode":"unknown","decisionCodePresent":false,"matchedAskRule":true,"branch":"rule-approval"} +[claude-permission] {"permissionMode":"default-sandbox","agentMode":"craft","sdkMode":"unknown","sdkModeSource":"host-query-or-acknowledged-control","policyTransition":false,"source":"callback","toolCall":"e3b98a4da31a127d","decisionCategory":"unknown","decisionCode":"unknown","decisionCodePresent":false,"matchedAskRule":false,"branch":"permission-approval"} +[claude-permission] {"permissionMode":"default-sandbox","agentMode":"craft","sdkMode":"unknown","sdkModeSource":"host-query-or-acknowledged-control","policyTransition":false,"source":"callback","toolCall":"e3b98a4da31a127d","decisionCategory":"unknown","decisionCode":"unknown","decisionCodePresent":false,"matchedAskRule":false,"branch":"error-deny"} +[claude-permission] {"permissionMode":"default-sandbox","agentMode":"craft","sdkMode":"unknown","sdkModeSource":"host-query-or-acknowledged-control","policyTransition":false,"source":"callback","toolCall":"e3b98a4da31a127d","decisionCategory":"unknown","decisionCode":"unknown","decisionCodePresent":false,"matchedAskRule":false,"branch":"permission-approval"} +[claude-permission] {"permissionMode":"default-sandbox","agentMode":"craft","sdkMode":"unknown","sdkModeSource":"host-query-or-acknowledged-control","policyTransition":false,"source":"callback","toolCall":"85aafbf52a5144b5","decisionCategory":"unknown","decisionCode":"unknown","decisionCodePresent":false,"matchedAskRule":false,"branch":"business-question"} +[claude-permission] {"permissionMode":"default-sandbox","agentMode":"craft","sdkMode":"unknown","sdkModeSource":"host-query-or-acknowledged-control","policyTransition":false,"source":"callback","toolCall":"85aafbf52a5144b5","decisionCategory":"unknown","decisionCode":"unknown","decisionCodePresent":false,"matchedAskRule":false,"branch":"business-question"} +Claude host approval policy unit checks passed (no SDK process/application/matching verification) +[claude-permission] {"permissionMode":"full-access","agentMode":"plan","sdkMode":"plan","sdkModeSource":"host-query-or-acknowledged-control","policyTransition":false,"source":"hook","toolCall":"unknown","decisionCategory":"unknown","decisionCode":"unknown","decisionCodePresent":false,"matchedAskRule":"unknown","branch":"mode-or-inactive-deny"} +Mock SDK replay lifecycle passed: fail closed, retry, session isolation, independent mode guard +B03 offline host policy: 276 checks passed; no real SDK/CLI/model execution. +task popconfirm DOM regression: 34 checks passed (jsdom, not pixel validation) +question-interaction: 24 DOM behavioral checks passed +question-identity: 30 A01 DOM checks passed (not Electron/pixel/SDK acceptance) +completed-fold-nested: real question/tool/thinking/local-summary remount, event, keyboard and identity contracts passed +completed-fold-native-identity: real reducer done correction, native IDs, insertion/reorder, repeated outer toggles, message isolation and legacy fallback passed +Permission intercept DOM: 43 checks passed (not pixel/SDK verification) +{"checks":37,"passed":true,"scope":"Isolated React DOM and CSS contracts; no native keyboard/layout/pixel acceptance"} +{"result":"PASS","phase":"alignment-offline","suites":11} +{"result":"PASS","phase":"alignment-dom","suites":7} diff --git a/docs/协作/evidence/B04-review-01/test.txt b/docs/协作/evidence/B04-review-01/test.txt new file mode 100644 index 0000000..ef080f1 --- /dev/null +++ b/docs/协作/evidence/B04-review-01/test.txt @@ -0,0 +1,37 @@ + +> ycode@0.0.7 test +> npm run test:core + + +> ycode@0.0.7 test:core +> npm run typecheck && npm run test:chat && npm run test:sessions && npm run test:persistence && npm run test:conversation + + +> ycode@0.0.7 typecheck +> tsc --noEmit -p tsconfig.node.json && tsc --noEmit -p tsconfig.web.json + + +> ycode@0.0.7 test:chat +> esbuild scripts/message-order-regression.ts scripts/chat-store-regression.ts scripts/chat-stream-committer-regression.ts --bundle --platform=node --format=esm --out-extension:.js=.mjs --outdir=.tmp/chat-tests --log-level=warning && node .tmp/chat-tests/message-order-regression.mjs && node .tmp/chat-tests/chat-store-regression.mjs && node .tmp/chat-tests/chat-stream-committer-regression.mjs + +message-order-regression: all checks passed +chat-store-regression: all checks passed +chat-stream-committer-regression: all checks passed + +> ycode@0.0.7 test:sessions +> esbuild scripts/session-store-regression.ts --bundle --platform=node --format=esm --external:esbuild --outfile=.tmp/session-store-regression.mjs --log-level=warning && node .tmp/session-store-regression.mjs + +session-store-regression: all checks passed + +> ycode@0.0.7 test:persistence +> esbuild scripts/chat-persistence-regression.ts --bundle --platform=node --format=esm --external:esbuild --outfile=.tmp/chat-persistence-regression.mjs --log-level=warning && node .tmp/chat-persistence-regression.mjs + +chat-persistence-regression: all checks passed + +> ycode@0.0.7 test:conversation +> esbuild scripts/conversation-renderer-regression.tsx scripts/composer-regression.tsx scripts/completed-fold-regression.tsx scripts/streaming-footer-regression.tsx --bundle --platform=node --format=cjs --jsx=automatic --loader:.css=text --out-extension:.js=.cjs --outdir=.tmp/conversation-tests --log-level=error && node .tmp/conversation-tests/conversation-renderer-regression.cjs && node .tmp/conversation-tests/composer-regression.cjs && node .tmp/conversation-tests/streaming-footer-regression.cjs && node .tmp/conversation-tests/completed-fold-regression.cjs + +Conversation specialized renderer SSR regression checks passed +Composer/message action regression cases passed +streaming-footer-regression: persistent stream status, delayed/paused rotation, brand/locale mapping, source CSS, and completed model footer passed +Completed-fold model and SSR regression checks passed