From ddd9abfe4118c67e899032add70256ef4a317c9b Mon Sep 17 00:00:00 2001 From: art Date: Wed, 14 Oct 2026 10:02:28 +0900 Subject: [PATCH] =?UTF-8?q?feat(webgl):=20=EC=97=85=EB=A1=9C=EB=93=9C=20?= =?UTF-8?q?=EB=B9=8C=EB=93=9C=EB=B3=84=20=ED=99=94=EB=A9=B4=20=EB=B9=84?= =?UTF-8?q?=EC=9C=A8=20=EB=8C=80=EC=9D=91=20=EB=B0=8F=20=ED=99=95=EB=8C=80?= =?UTF-8?q?=20=EC=A7=80=EC=9B=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 게임별 기준 크기를 정적 감지·저장하고 작성자 직접 지정과 기존 게임 fallback을 제공한다. 비율을 유지한 양축 크기 조정 및 동일 iframe의 확대·전체화면을 지원한다. 검증: Java 377 실패 0, Node 11/11, 격리 PostgreSQL L2 통과. JSP 5경로 200, 빌드 3종 화면 12조합, 실제 Unity trusted touch 메뉴 전환 통과. Co-Authored-By: Claude Opus 4.8 (1M context) --- .../20261014-091658/.gitattributes | 4 + .../20261014-091658/artifacts/.gitignore | 3 + .../artifacts/acceptance-criteria.md | 13 + .../final-current-ssr-regression.log | 16 + .../artifacts/final-doc-ui-audit.md | 53 + .../artifacts/final-impeccable-detect.json | 22 + .../final-prechange-ssr-regression.log | 2725 +++++++++++++++++ .../artifacts/input-supplemental/cdp.mjs | 15 + .../expanded-landscape-before.png | Bin 0 -> 20754 bytes .../expanded-landscape-upgrades-after.png | Bin 0 -> 19644 bytes .../input-supplemental/normal-before.png | Bin 0 -> 54901 bytes .../input-supplemental/normal-shop-after.png | Bin 0 -> 39104 bytes .../portrait-home-before.png | Bin 0 -> 65504 bytes .../input-supplemental/portrait-input.json | 59 + .../portrait-shop-after.png | Bin 0 -> 43267 bytes .../artifacts/input-supplemental/server.py | 14 + .../artifacts/original-hashes.json | 6 + .../artifacts/runtime-app-maven.log | 85 + .../20261014-091658/artifacts/runtime-app.log | 1 + .../artifacts/runtime-desktop.png | Bin 0 -> 248921 bytes .../artifacts/runtime-dom-evidence.json | 178 ++ .../artifacts/runtime-file-server.log | 5 + .../artifacts/runtime-file-server.py | 8 + .../artifacts/runtime-hashes.json | 11 + .../artifacts/runtime-http-evidence.json | 8 + .../artifacts/runtime-mobile.png | Bin 0 -> 99215 bytes .../artifacts/runtime-prechange-geometry.json | 9 + .../artifacts/runtime-roundtrip-auto.txt | 7 + .../artifacts/runtime-roundtrip-manual.txt | 5 + .../artifacts/runtime-schema.log | 205 ++ .../artifacts/runtime-zip-replacement.txt | 5 + .../artifacts/verification-cases.json | 56 + .../verification-integrated-java21.log | 489 +++ .../artifacts/verification-integrated.log | 4 + .../20261014-091658/documentation.md | 22 + .../20261014-091658/implementation/design.md | 116 + .../implementation/lifecycle-events.jsonl | 12 + .../implementation/ownership-state.json | 169 + .../implementation/ownership.md | 185 ++ .../20261014-091658/implementation/report.md | 68 + .../implementation/wait-wakeup-events.jsonl | 2 + .../implementation/worker-invocations.json | 162 + .atp/work-session/20261014-091658/report.md | 414 +++ .../20261014-091658/research/research.md | 90 + .../supplemental-verification.md | 45 + .../20261014-091658/verification.md | 106 + .../20261014-091658/wait-wakeup-events.jsonl | 2 + .../20261014-game-display-metadata.sql | 47 + db/schema.sql | 40 + docs/changes/2026-10-14-webgl-display.md | 23 + docs/changes/index.md | 2 + docs/contracts/index.md | 2 +- docs/contracts/webgl-display-metadata.md | 47 + docs/development/verification-strategies.md | 35 + docs/usage/index.md | 2 + docs/usage/webgl-display.md | 66 + scripts/verify-webgl-display.sh | 84 + .../controller/api/GameController.java | 81 + .../controller/api/GameUploadController.java | 5 + .../pandoli365/bibimbap/data/GameData.java | 10 + .../bibimbap/mapper/GamesMapper.java | 28 + .../bibimbap/util/WebglDisplayMetadata.java | 131 + src/main/webapp/WEB-INF/views/game-detail.jsp | 28 +- .../webapp/WEB-INF/views/game-register.jsp | 93 +- src/main/webapp/css/webgl-player.css | 67 + src/main/webapp/js/webgl-player.js | 96 + .../api/GameDisplayMetadataTest.java | 146 + .../api/GameUploadControllerSecurityTest.java | 32 + .../WebglDisplayDatabaseContractTest.java | 86 + .../util/WebglDisplayMetadataTest.java | 77 + src/test/js/webgl-player.test.cjs | 194 ++ 71 files changed, 6807 insertions(+), 14 deletions(-) create mode 100644 .atp/work-session/20261014-091658/.gitattributes create mode 100644 .atp/work-session/20261014-091658/artifacts/.gitignore create mode 100644 .atp/work-session/20261014-091658/artifacts/acceptance-criteria.md create mode 100644 .atp/work-session/20261014-091658/artifacts/final-current-ssr-regression.log create mode 100644 .atp/work-session/20261014-091658/artifacts/final-doc-ui-audit.md create mode 100644 .atp/work-session/20261014-091658/artifacts/final-impeccable-detect.json create mode 100644 .atp/work-session/20261014-091658/artifacts/final-prechange-ssr-regression.log create mode 100644 .atp/work-session/20261014-091658/artifacts/input-supplemental/cdp.mjs create mode 100644 .atp/work-session/20261014-091658/artifacts/input-supplemental/expanded-landscape-before.png create mode 100644 .atp/work-session/20261014-091658/artifacts/input-supplemental/expanded-landscape-upgrades-after.png create mode 100644 .atp/work-session/20261014-091658/artifacts/input-supplemental/normal-before.png create mode 100644 .atp/work-session/20261014-091658/artifacts/input-supplemental/normal-shop-after.png create mode 100644 .atp/work-session/20261014-091658/artifacts/input-supplemental/portrait-home-before.png create mode 100644 .atp/work-session/20261014-091658/artifacts/input-supplemental/portrait-input.json create mode 100644 .atp/work-session/20261014-091658/artifacts/input-supplemental/portrait-shop-after.png create mode 100644 .atp/work-session/20261014-091658/artifacts/input-supplemental/server.py create mode 100644 .atp/work-session/20261014-091658/artifacts/original-hashes.json create mode 100644 .atp/work-session/20261014-091658/artifacts/runtime-app-maven.log create mode 100644 .atp/work-session/20261014-091658/artifacts/runtime-app.log create mode 100644 .atp/work-session/20261014-091658/artifacts/runtime-desktop.png create mode 100644 .atp/work-session/20261014-091658/artifacts/runtime-dom-evidence.json create mode 100644 .atp/work-session/20261014-091658/artifacts/runtime-file-server.log create mode 100644 .atp/work-session/20261014-091658/artifacts/runtime-file-server.py create mode 100644 .atp/work-session/20261014-091658/artifacts/runtime-hashes.json create mode 100644 .atp/work-session/20261014-091658/artifacts/runtime-http-evidence.json create mode 100644 .atp/work-session/20261014-091658/artifacts/runtime-mobile.png create mode 100644 .atp/work-session/20261014-091658/artifacts/runtime-prechange-geometry.json create mode 100644 .atp/work-session/20261014-091658/artifacts/runtime-roundtrip-auto.txt create mode 100644 .atp/work-session/20261014-091658/artifacts/runtime-roundtrip-manual.txt create mode 100644 .atp/work-session/20261014-091658/artifacts/runtime-schema.log create mode 100644 .atp/work-session/20261014-091658/artifacts/runtime-zip-replacement.txt create mode 100644 .atp/work-session/20261014-091658/artifacts/verification-cases.json create mode 100644 .atp/work-session/20261014-091658/artifacts/verification-integrated-java21.log create mode 100644 .atp/work-session/20261014-091658/artifacts/verification-integrated.log create mode 100644 .atp/work-session/20261014-091658/documentation.md create mode 100644 .atp/work-session/20261014-091658/implementation/design.md create mode 100644 .atp/work-session/20261014-091658/implementation/lifecycle-events.jsonl create mode 100644 .atp/work-session/20261014-091658/implementation/ownership-state.json create mode 100644 .atp/work-session/20261014-091658/implementation/ownership.md create mode 100644 .atp/work-session/20261014-091658/implementation/report.md create mode 100644 .atp/work-session/20261014-091658/implementation/wait-wakeup-events.jsonl create mode 100644 .atp/work-session/20261014-091658/implementation/worker-invocations.json create mode 100644 .atp/work-session/20261014-091658/report.md create mode 100644 .atp/work-session/20261014-091658/research/research.md create mode 100644 .atp/work-session/20261014-091658/supplemental-verification.md create mode 100644 .atp/work-session/20261014-091658/verification.md create mode 100644 .atp/work-session/20261014-091658/wait-wakeup-events.jsonl create mode 100644 db/migrations/20261014-game-display-metadata.sql create mode 100644 docs/changes/2026-10-14-webgl-display.md create mode 100644 docs/contracts/webgl-display-metadata.md create mode 100644 docs/usage/webgl-display.md create mode 100755 scripts/verify-webgl-display.sh create mode 100644 src/main/java/com/pandoli365/bibimbap/util/WebglDisplayMetadata.java create mode 100644 src/main/webapp/css/webgl-player.css create mode 100644 src/main/webapp/js/webgl-player.js create mode 100644 src/test/java/com/pandoli365/bibimbap/controller/api/GameDisplayMetadataTest.java create mode 100644 src/test/java/com/pandoli365/bibimbap/mapper/WebglDisplayDatabaseContractTest.java create mode 100644 src/test/java/com/pandoli365/bibimbap/util/WebglDisplayMetadataTest.java create mode 100644 src/test/js/webgl-player.test.cjs diff --git a/.atp/work-session/20261014-091658/.gitattributes b/.atp/work-session/20261014-091658/.gitattributes new file mode 100644 index 0000000..13c0958 --- /dev/null +++ b/.atp/work-session/20261014-091658/.gitattributes @@ -0,0 +1,4 @@ +# Preserve verbatim test/runtime stdout as evidence. +artifacts/*.log -whitespace +artifacts/**/*.log -whitespace +artifacts/runtime-*.txt -whitespace diff --git a/.atp/work-session/20261014-091658/artifacts/.gitignore b/.atp/work-session/20261014-091658/artifacts/.gitignore new file mode 100644 index 0000000..b0ad650 --- /dev/null +++ b/.atp/work-session/20261014-091658/artifacts/.gitignore @@ -0,0 +1,3 @@ +# Local input copies and transient browser fixtures are reproducible. +*.zip +runtime-login.html diff --git a/.atp/work-session/20261014-091658/artifacts/acceptance-criteria.md b/.atp/work-session/20261014-091658/artifacts/acceptance-criteria.md new file mode 100644 index 0000000..e94b684 --- /dev/null +++ b/.atp/work-session/20261014-091658/artifacts/acceptance-criteria.md @@ -0,0 +1,13 @@ +## 검증 포인트 + +AC self-audit: 기대값은 metadata/DOM/DB 행위 불변식에 고정하고 work-session 산출물 개수에 의존하지 않는다. 표현은 literal grep 대신 typed parser/HTTP/DB/DOM assertions; 파일 집합만 아래 명시 목록 전수 확인한다. + +- AC-1 parser fixture 집합 전수: portrait, landscape, square, nested index+adjacent info, HTML attrs, Unity literal CSS, conflicting precedence, no metadata, 300×150 default, malformed JSON, invalid pair/range, multiple ambiguous canvas, malicious script/nonliteral, oversize inputs. 각 named fixture 검증 및 product에서 JS 실행 0건; metadata 없는 정상 ZIP HTTP 200. +- AC-2 실제 uploaded game: 제공 ZIP은 390×844 반환; 다른 이름의 1280×720 및 800×800 ZIP도 자신의 값 반환. filename/게임명 상수 없이 동일 계약. +- AC-3 등록→DB→상세/수정 round trip; auto/custom/legacy path 전수 분기, manual 우선, 새 ZIP metadata 업데이트, 구 edit omission 보존, unknown nullable & fallback. 두 숫자 invalid는 400, CSRF/auth/owner unchanged. +- AC-4 isolated PostgreSQL mapper 계약: migration 기존 row 유지/NULL fallback, 재실행 가능; 모든 GameData SELECT 및 INSERT/UPDATE dimensions/source 정합. fresh schema와 migrated schema 동일. L2 remote/seed 미지정만 skip 가능; 알려진 healthy DB에서 가능한 isolated 검증을 우선한다. +- AC-5 stage viewport 집합 전수: 320×844, 1440×900, 844×390, 640×300에서 portrait/landscape/square 모두 iframe 양축 boundary 이내/ratio 오차 ≤1px. 현재 16:9/max520 구현에서 portrait 회귀는 실패하고 수정 후 통과함을 확보한다. +- AC-6 resize/overlay/fullscreen 진입·해제/실패 fallback에서 exact same iframe DOM, src, load count, 게임 state 유지; Esc/닫기/focus/scroll 복원. asset-origin 다른 origin에서도 parent canvas DOM access 없이 지원. +- AC-7 실제 ZIP runtime: 준비 후 CSS client size와 drawing buffer를 별도로 기록; 정상/expanded/fullscreen(지원 브라우저) resize, 상하단 UI 표시, 버튼 좌표/클릭, 모바일 터치 입력 점검. 원본 ZIP 및 served uploaded HTML hash 미변경. +- AC-8 full `./mvnw -o test` 및 WAR package 통과; isolated 최신 앱에서 detail/register/edit 변경 JSP 전수 HTTP 200(인증 포함). runtime stacktrace 및 console error scan. 새 constructor 의존이 생기면 contextLoads mocks 갱신. screenshot은 desktop/mobile 묶음 한 번+필요 fix 한 번; Impeccable detect changed UI 대상 한 번 실행. +- AC-9 파일 영향맵의 신규 산출물은 전수 존재하되 conditional 경로는 조건 성립시에만 변경; docs 계약/사용/변경 3개와 해당 index 링크 모두 확인. verification-advisor는 테스트를 작성하지 않고 실행만 수행. diff --git a/.atp/work-session/20261014-091658/artifacts/final-current-ssr-regression.log b/.atp/work-session/20261014-091658/artifacts/final-current-ssr-regression.log new file mode 100644 index 0000000..9c5d4ac --- /dev/null +++ b/.atp/work-session/20261014-091658/artifacts/final-current-ssr-regression.log @@ -0,0 +1,16 @@ +TAP version 13 +# Subtest: SSR player ships the stored ratio and responsive stage without the old hard limit +ok 1 - SSR player ships the stored ratio and responsive stage without the old hard limit + --- + duration_ms: 0.93375 + type: 'test' + ... +1..1 +# tests 1 +# suites 0 +# pass 1 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 44.434208 diff --git a/.atp/work-session/20261014-091658/artifacts/final-doc-ui-audit.md b/.atp/work-session/20261014-091658/artifacts/final-doc-ui-audit.md new file mode 100644 index 0000000..b1badf1 --- /dev/null +++ b/.atp/work-session/20261014-091658/artifacts/final-doc-ui-audit.md @@ -0,0 +1,53 @@ +--- +phase: documentation +agent: documentation-advisor +agent_version: 1 +report_invocation_id: inv-005 +generated_at: 2026-10-14T09:54:53.525775+09:00 +concerns_checked: true +concerns: + - Existing usage index setup-checklist.md and faq.md links have no target; unrelated to feature. + - Trusted touchscreen and named Unity button outcome remain unverified. + - Baseline failure evidence is SSR markup regression; previous browser geometry was not replayed. +--- +# Final documentation and scoped UI audit + +Implementation integrity verdict: PASS for the changed upload sizing/player surfaces within the evidence below. No new UI bug was observed. This is a bounded source/screenshot audit, not a full WCAG certification or performance benchmark. + +## Documentation + +- Corrected docs/usage/webgl-display.md: current WAR has no Main manifest. Replaced java -jar with the successful Java 21 Maven spring-boot:run command, parameterizing isolated DB port. Added explicit macOS Homebrew Java 21 environment for the test launcher that failed under default Java. +- Updated docs/changes/2026-10-14-webgl-display.md with actual 377 Java (0 failures/errors, ordinary opt-in L2 skip 1), Node 11/11, package pass, separately enabled actual L2 1/1, authenticated JSP 5-path HTTP 200, 3-build × 4-viewport boundary/ratio pass, ready Unity/CSS-buffer/state/fullscreen/hash evidence and explicit incomplete input verification. +- Read contract, usage, change documents, design and implementation reports, verification, document-category-classification, and documentation-advisor definition. documentation-guidelines.md is absent; category and advisor checklists were applied instead. +- AC9: all 21 unconditional paths from the complete design file impact map exist (including three index files). Conditional constructor-fixture changes were not triggered per implementation report. contracts/index.md, usage/index.md, changes/index.md contain their required links. All relative links in the three feature docs resolve, and all three new feature index links resolve. Full category-index scan also found pre-existing missing usage/setup-checklist.md and usage/faq.md targets (each linked twice). These unrelated index defects were reported without expanding edits. Cross-links connect contract, usage, change and verification strategy. + +## Single final UI detect + +Impeccable had already been announced and context loaded by root. Read SKILL.md plus audit/detection instructions; did not rerun context or edit UI. Ran exactly one final detect on game-detail.jsp, game-register.jsp, webgl-player.css and webgl-player.js. JSON: final-impeccable-detect.json. Exit 2 reflects two warnings, not a clean automated result: + +1. game-detail.jsp line 454 side-tab accent border: existing creator-note block outside changed player. Incumbent design preserved; no new drift. +2. game-register.jsp line 462 hidden preview img without src: verified false positive. Source sets object-URL src before unhiding, removes src only while hiding, and handles image errors with the fallback. No visible broken-image box. + +Inspected existing runtime-desktop.png and runtime-mobile.png together. Both show the complete portrait game, top information and bottom navigation inside the player, centered in available space. Outer controls wrap without clipping and have visible focus styling. Registration evidence covers auto/custom metadata and replacement behavior; there is no registration screenshot, so its audit is source/evidence based. + +| Dimension | Scoped finding | +|---|---| +| Accessibility | Player buttons have names, state attributes, 44px minima, focus-visible; size form has legend, radio labels, associated numeric labels and live status. Runtime recorded Esc/focus/scroll restoration. Contrast and iframe-internal keyboard traversal not independently certified. | +| Performance | Resize/visualViewport/observer events coalesce through RAF; parent only sizes iframe and does not access Unity DOM. No transforms or layout animation introduced. No timing benchmark claimed. | +| Responsive | Exact runtime 12/12 boundary and ratio checks, max error 0.006665px. Screenshot pair shows top/bottom game UI. Trusted mobile input remains open. | +| Theming | New outer controls and form use incumbent text/accent/border/background tokens; intentional dark WebGL stage retained. No new visual world. | +| Integrity | Same iframe/src/Unity instance and zero additional loads observed. Detector findings verified as pre-existing/out of scope or false positive. | + +No P0/P1/P2 defect identified in the changed surfaces from available evidence. No redesign or policy/settings/runtime/DB mutation performed. + +## Unused variables/imports + +Focused manual inspection covered changed Java/JSP/JS files and the new mapper/parser/controller tests. A supplemental Python symbol-reference scan checked each explicit Java import against its file body; no unused-import candidate was found. Reviewed player and added form variable declarations against their uses: all are referenced. Parser locals are used in bounded reading and dimension selection; model fields are exposed through accessors/MyBatis. This is a focused source audit, not an automated linter/LSP result; no lint capability was invoked or claimed. + +## Actual baseline markup regression + +At root's explicit request, copied current test/JS/CSS into a temporary tree outside repository, substituted ONLY game-detail.jsp with git show HEAD:src/main/webapp/WEB-INF/views/game-detail.jsp, and ran node --test --test-name-pattern='SSR player ships' src/test/js/webgl-player.test.cjs. Prechange test failed exit 1 due absent stored-ratio attributes; current identical named test passed exit 0. Logs: final-prechange-ssr-regression.log and final-current-ssr-regression.log. Temporary tree removed. This proves baseline SSR markup fails the changed contract; it does not claim old browser geometry or old full runtime execution. No new tests/source edits. + +## Limits and self verification + +Named Unity button outcome and trusted touchscreen input remain unverified: existing pointer delivery is trusted mouse only. Separate asset-origin support is Node harness evidence, not separate browser runtime. No complete-acceptance claim. No additional full test/build rerun needed for doc edits; baseline named test was explicitly requested. update_plan unavailable, root informed; ATP_POOL_BIND not fabricated. Child count 0, commit/push 0. Artifacts present; required frontmatter checked; concerns deliberately reviewed. Backport exclusion N/A. diff --git a/.atp/work-session/20261014-091658/artifacts/final-impeccable-detect.json b/.atp/work-session/20261014-091658/artifacts/final-impeccable-detect.json new file mode 100644 index 0000000..a5bf118 --- /dev/null +++ b/.atp/work-session/20261014-091658/artifacts/final-impeccable-detect.json @@ -0,0 +1,22 @@ +[ + { + "antipattern": "side-tab", + "name": "Side-tab accent border", + "description": "Thick colored border on one side of a card — the most recognizable tell of AI-generated UIs. Use a subtler accent or remove it entirely.", + "severity": "warning", + "category": "slop", + "file": "/Users/wemadeplay/workspace/stz/bibimbap/src/main/webapp/WEB-INF/views/game-detail.jsp", + "line": 454, + "snippet": "border-left: 3px solid var(--accent)" + }, + { + "antipattern": "broken-image", + "name": "Broken or placeholder image", + "description": " tags with empty src, missing src, or placeholder values ship as broken-image boxes. Use real images, generated assets, or remove the tag.", + "severity": "warning", + "category": "quality", + "file": "/Users/wemadeplay/workspace/stz/bibimbap/src/main/webapp/WEB-INF/views/game-register.jsp", + "line": 462, + "snippet": "" + } +] diff --git a/.atp/work-session/20261014-091658/artifacts/final-prechange-ssr-regression.log b/.atp/work-session/20261014-091658/artifacts/final-prechange-ssr-regression.log new file mode 100644 index 0000000..cd89454 --- /dev/null +++ b/.atp/work-session/20261014-091658/artifacts/final-prechange-ssr-regression.log @@ -0,0 +1,2725 @@ +TAP version 13 +# Subtest: SSR player ships the stored ratio and responsive stage without the old hard limit +not ok 1 - SSR player ships the stored ratio and responsive stage without the old hard limit + --- + duration_ms: 2.454666 + type: 'test' + location: '/private/var/folders/g5/hclggccx15qdjf89b6vn1fw80000gn/T/bibimbap-prechange-oo0st4cd/src/test/js/webgl-player.test.cjs:29:1' + failureType: 'testCodeFailure' + error: |- + The input did not match the regular expression /data-display-width="<%= displayWidth %>"/. Input: + + '<%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8" %>\n' + + '<%@ page import="org.springframework.web.util.HtmlUtils" %>\n' + + '<%\n' + + ' boolean owner = Boolean.TRUE.equals(request.getAttribute("owner"));\n' + + ' String ctx = request.getContextPath();\n' + + ' String gameIdValue = HtmlUtils.htmlEscape(String.valueOf(request.getAttribute("gameId")));\n' + + ' String gameNameValue = HtmlUtils.htmlEscape(String.valueOf(request.getAttribute("gameName")));\n' + + ' String creatorValue = HtmlUtils.htmlEscape(String.valueOf(request.getAttribute("creator")));\n' + + ' String likeCountFormattedValue = HtmlUtils.htmlEscape(String.valueOf(request.getAttribute("likeCountFormatted")));\n' + + ' String creatorNoteValue = HtmlUtils.htmlEscape(String.valueOf(request.getAttribute("creatorNote")));\n' + + ' String gitUrlValue = HtmlUtils.htmlEscape(String.valueOf(request.getAttribute("gitUrl")));\n' + + ' String webglFrameSrc = String.valueOf(request.getAttribute("webglFrameSrc"));\n' + + ' if (webglFrameSrc == null || webglFrameSrc.isBlank() || "null".equals(webglFrameSrc)) {\n' + + ' webglFrameSrc = String.valueOf(request.getAttribute("webglUrl"));\n' + + ' }\n' + + ' if (webglFrameSrc == null || webglFrameSrc.isBlank() || "null".equals(webglFrameSrc)) {\n' + + ' webglFrameSrc = "";\n' + + ' } else if (webglFrameSrc.startsWith("/")) {\n' + + ' webglFrameSrc = ctx + webglFrameSrc;\n' + + ' }\n' + + ' String webglFrameSrcValue = HtmlUtils.htmlEscape(webglFrameSrc);\n' + + '%>\n' + + '\n' + + '\n' + + '\n' + + ' \n' + + ' \n' + + ' \n' + + ' <%= gameNameValue %> — bibimbap\n' + + ' + + + +
+
+ + + 목록으로 + + <% if (owner) { %> +
+ 수정 + +
+ <% } %> +
+ +
+

<%= gameNameValue %>

+
+
+
+ + 번호 +
+ #<%= gameIdValue %> +
+
+
+ + 제작자 +
+ <%= creatorValue %> +
+ +
+
+ +
+
+ +

플레이

+ WebGL +
+
+
+ +
+
+
+ +
+
+
+ +
+

제작자의 한마디

+

이 게임을 만들며 전하고 싶었던 이야기예요.

+
+
+
<%= creatorNoteValue %>
+ +
+ +
+
+ +
+

리뷰

+

별점과 함께 플레이 평가를 남겨 주세요. 게임당 한 번 작성할 수 있어요.

+
+ +
+ + + + + +
    + +
    + +
    +
    + +
    +

    덧글

    +

    플레이 소감이나 버그 제보를 남겨 주세요.

    +
    +
    + + + + +
      + +
      +
      +
      + + + + + + + operator: 'match' + stack: |- + TestContext. (/private/var/folders/g5/hclggccx15qdjf89b6vn1fw80000gn/T/bibimbap-prechange-oo0st4cd/src/test/js/webgl-player.test.cjs:32:10) + Test.runInAsyncScope (node:async_hooks:214:14) + Test.run (node:internal/test_runner/test:1047:25) + Test.start (node:internal/test_runner/test:944:17) + startSubtestAfterBootstrap (node:internal/test_runner/harness:296:17) + ... +1..1 +# tests 1 +# suites 0 +# pass 0 +# fail 1 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 46.247958 diff --git a/.atp/work-session/20261014-091658/artifacts/input-supplemental/cdp.mjs b/.atp/work-session/20261014-091658/artifacts/input-supplemental/cdp.mjs new file mode 100644 index 0000000..8f30ac1 --- /dev/null +++ b/.atp/work-session/20261014-091658/artifacts/input-supplemental/cdp.mjs @@ -0,0 +1,15 @@ +import fs from 'node:fs'; +const tabs=await(await fetch('http://127.0.0.1:18087/json')).json(); +const ws=new WebSocket(tabs.find(x=>x.type==='page').webSocketDebuggerUrl);await new Promise(r=>ws.onopen=r);let id=0;const pending=new Map();ws.onmessage=e=>{const m=JSON.parse(e.data);if(m.id){const p=pending.get(m.id);pending.delete(m.id);m.error?p.reject(m.error):p.resolve(m.result)}}; +const send=(method,params={})=>new Promise((resolve,reject)=>{pending.set(++id,{resolve,reject});ws.send(JSON.stringify({id,method,params}))}); +const ev=async(expression)=>{const r=await send('Runtime.evaluate',{expression,returnByValue:true,awaitPromise:true});if(r.exceptionDetails)throw r.exceptionDetails;return r.result.value}; +const action=process.argv[2]; +if(action==='init'){await send('Emulation.setDeviceMetricsOverride',{width:390,height:844,deviceScaleFactor:1,mobile:true});await send('Emulation.setTouchEmulationEnabled',{enabled:true,maxTouchPoints:1});await send('Page.navigate',{url:'http://127.0.0.1:18086/'});} +if(action==='eval') console.log(JSON.stringify(await ev(process.argv[3]),null,2)); +if(action==='shot'){const r=await send('Page.captureScreenshot',{format:'png'});fs.writeFileSync(process.argv[3],Buffer.from(r.data,'base64'));} +if(action==='touch'){const x=+process.argv[3],y=+process.argv[4];await send('Input.dispatchTouchEvent',{type:'touchStart',touchPoints:[{x,y,id:1,radiusX:1,radiusY:1,force:1}]});await new Promise(r=>setTimeout(r,100));await send('Input.dispatchTouchEvent',{type:'touchEnd',touchPoints:[]});} +if(action==='resize'){await send('Emulation.setDeviceMetricsOverride',{width:+process.argv[3],height:+process.argv[4],deviceScaleFactor:1,mobile:true});} +if(action==='expanded'){await ev('document.querySelector("[data-player-expand]").click()');await send('Emulation.setDeviceMetricsOverride',{width:844,height:390,deviceScaleFactor:1,mobile:false});await new Promise(r=>setTimeout(r,1000));console.log(JSON.stringify(await ev('(()=>{let f=document.querySelector("iframe"),c=f.contentDocument.querySelector("canvas");return {view:[innerWidth,innerHeight],frame:f.getBoundingClientRect().toJSON(),canvas:c.getBoundingClientRect().toJSON(),buffer:[c.width,c.height],sameFrame:f===window.__originalFrame,sameUnity:f.contentWindow.unityInstance===window.__originalUnity}})()'),null,2));let r=await send('Page.captureScreenshot',{format:'png'});fs.writeFileSync(process.argv[3],Buffer.from(r.data,'base64'));} +if(action==='expandedtap'){await send('Emulation.setDeviceMetricsOverride',{width:844,height:390,deviceScaleFactor:1,mobile:false});await new Promise(r=>setTimeout(r,400));await ev('document.querySelector("iframe").contentWindow.__events=[]');await send('Input.dispatchTouchEvent',{type:'touchStart',touchPoints:[{x:466,y:345,id:2,radiusX:1,radiusY:1,force:1}]});await new Promise(r=>setTimeout(r,100));await send('Input.dispatchTouchEvent',{type:'touchEnd',touchPoints:[]});await new Promise(r=>setTimeout(r,400));console.log(JSON.stringify(await ev('document.querySelector("iframe").contentWindow.__events'),null,2));let r=await send('Page.captureScreenshot',{format:'png'});fs.writeFileSync(process.argv[3],Buffer.from(r.data,'base64'));} +if(action==='portrait'){await ev('document.querySelector("[data-player-expand]").click()');await send('Emulation.setDeviceMetricsOverride',{width:390,height:844,deviceScaleFactor:1,mobile:false});await new Promise(r=>setTimeout(r,500));let geo=await ev('(()=>{let f=document.querySelector("iframe"),c=f.contentDocument.querySelector("canvas");return {view:[innerWidth,innerHeight],frame:f.getBoundingClientRect().toJSON(),canvas:c.getBoundingClientRect().toJSON(),buffer:[c.width,c.height],sameFrame:f===window.__originalFrame,sameUnity:f.contentWindow.unityInstance===window.__originalUnity}})()');let coords=(portion)=>({x:geo.frame.x+geo.canvas.x+geo.canvas.width*portion,y:geo.frame.y+geo.canvas.y+geo.canvas.height*.96});let tap=async(p)=>{await send('Input.dispatchTouchEvent',{type:'touchStart',touchPoints:[{...p,id:3,radiusX:1,radiusY:1,force:1}]});await new Promise(r=>setTimeout(r,100));await send('Input.dispatchTouchEvent',{type:'touchEnd',touchPoints:[]});await new Promise(r=>setTimeout(r,300));};await tap(coords(.1));let r=await send('Page.captureScreenshot',{format:'png'});fs.writeFileSync(process.argv[3]+'/portrait-home-before.png',Buffer.from(r.data,'base64'));await ev('document.querySelector("iframe").contentWindow.__events=[]');await tap(coords(.3));r=await send('Page.captureScreenshot',{format:'png'});fs.writeFileSync(process.argv[3]+'/portrait-shop-after.png',Buffer.from(r.data,'base64'));let events=await ev('document.querySelector("iframe").contentWindow.__events');let result={geo,coordinates:coords(.3),events};fs.writeFileSync(process.argv[3]+'/portrait-input.json',JSON.stringify(result,null,2));console.log(JSON.stringify(result,null,2));} +ws.close(); diff --git a/.atp/work-session/20261014-091658/artifacts/input-supplemental/expanded-landscape-before.png b/.atp/work-session/20261014-091658/artifacts/input-supplemental/expanded-landscape-before.png new file mode 100644 index 0000000000000000000000000000000000000000..d3756a680e05344edaf9f438d8355acceedf8230 GIT binary patch literal 20754 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 IM6N<$f-;ktwg3PC literal 0 HcmV?d00001 diff --git a/.atp/work-session/20261014-091658/artifacts/input-supplemental/normal-before.png b/.atp/work-session/20261014-091658/artifacts/input-supplemental/normal-before.png new file mode 100644 index 0000000000000000000000000000000000000000..296fbdd47bc10ed694536400f70c30589f1c42c2 GIT binary patch literal 54901 zcmcG$Wl&sE)FldmU;!Ee!QBZ#g1fuBTX2HALx2FmEkJO04c2%=fZ*;l?%KFZPv_Nq zQ?F{?H*em&nIBZaIaT}aBX_U8*V>mzRb?3rG$J%OI5-SBSxI#`IQVNgxHmT_Z(t)` zaKXE9a9D71l46?PStr?VO-Zy~2iEVathRGzS64eVC)JC*UG_2CCE`MR0Z-cz0=Nvy z`NhnQ#Sne&^-o zH8-dJdv5IZg}1Alo8RpTpZmdNBo2L2GO~v{+5G0+lZoGH)7^Ry`CC#kterl%e9%sk zLQU%)5fH2t$U`r-BJ!}4EJGfEYx!^f4&i;!gwS19(Cfp_-GyKOiwX1*AMpecwnRQ3 zQ55KTFCcln=j{Dmrc>7g?1vKe?7^YE7>;r8%`p7INY|}GOA0F)OBpQ0hfuiSx9PO> z!>CaL_a_H`VQxO>e;W;1Ov2fcv?m0ui}>F=kLFRqhNnaWJubHT>DdDJB&qHejQucD z{yC!p*M~=wMj}H0zV+^838(+x*aUpYT`VzA()LaZ^&OwvUS2(Hho5b~?S!2F8|x1^ zoG$+7?E?-U{H743)lzxm2=3qCLRsI=$$%~RxVW&>g4y0d{C?NcPm1A%D3&0Sj)P^K zH373vgCynx^F2~bbp;!Cs93oFrU?-LJ^H^*>DRRohv!#(>_`?tQkpS^7Nx_JqY5wn zZk+WXB_j8L61hSQ*3clLe;kzW#8%y|nb-&DebS4&+d=+==}Q zZ}EJrYb{@2-vIh}@dHD??CZ_0;c-N9U-_A{EUPi_tM<5QOSO$+0HH6}G z9&T*)+Z1>QDi1N*vZ0e0`TC+-0BaAo%P$p^xlJ7_(^xEr`Aq+#LcA&nFn(kqnQPHdQO zxq=7zzv3sfQSj5!(&{4x1UJ=Dmc8e*g1LlgEGU_CByrE62F@SqUsXdccT?LK5#J!e z$H(XTiRl6sd)XwOd)HXNfN{jCnVOcyv|=wFE)@U;&y&qoaLg*`dnxJc|htTm29rBzf9nE z)^n3}`sUzq-;Z%^9WaWyin1U1=oFxtDkBVRAr$GA(FJn@ zqW1$mQL=ad&HG6C^UrS%`$F+I^QN9RH@h7Rb&zgKlj#uK3fAI7x5{LF$s=l<~pF3UK~*&2JG*-b(DiEzb68H&hHbb zv9wfpS!~E{)eBy|ui4+eaU10C7C7*m4H9|IC|T=_#Ju=!YFM+KU^T^k{?>>E|JrR< zQRH3|+2na6o1EQ{{x@c$C05bfDbB66UkF$!#FH0~L@0cP#vI;VdBPN)1MF7R6)`tY z-!1Gp(cyxUSfGK@37&V%x9AawJ*-Hi=2QRjJ&{pRZd@;xMC#Q`zc|2jEz z>`kR;;-kCL&}UmPs7U`+}B%<`ThPJ02s#1=QNxb^(rnY zNli_a?ma>Ry+!fT*C*l(SCTdQ2H^Ch3ndG6Lm~kV)tbYi@RtnH6)^##t1huW1)fT? zG?8&(B5MXzvHY0AB<0C}B>oP4Ym`bM?Zd{LQbZb>MIc8PKBv4y3wT4$<+}?{FOGF= zgW;d{^C#}P8<8S`sI_!M)r}Xo7=|IB2P7T}v=ciE?!_c^9h}N{2`zMiz02X8!7a!~ zyk9v6$wN$o;Ye#UL}z{OU&ZP$3F#5UJ`Ykg#$d8jGQ(qCJYJFTGM_)>yA`nD*|_-n z@^jjpx65!$-$)Mp?WP;xDkG1Rg&CxT84TTb{=|-*l7rJyjPeI+zJw->Ap3>Gi>y1# z_Ph_FKJbUFG7$)1`tocpfG{@ z&-iR%774dO}Zgx>K zw(S$jT^@5=c}ea?yr`5~b6vZtFkQsyAMBI!wT_ZZ9uNVa#aw6_TBpDziGss&_478y zVOcx>+AS;-NH^VC>m%WEt<|3|cb_umx(hi8G$-i#g$R`yST8^Pk{bS9j^e=1sQGAr z-kiST0V+@E@$>$r0okw=1IWQy{B^I)j!9>i_@+|(bz-J8Sr??MT`hD`a~9?__t(?I z`w7~$?dOszkF`U==ISKQmcLvTiL1zDq&mnpyC#$}V&&gqyGPRN5@eYp64X$pu{8|X ztIlore!3Oc05?2TQfadjfhQ!=BK<^^1>K4ee!iSHMd!pK6whP0Z7vV4eE8xds-j@w z)H%4ixP~Wmr|`s;=)?4<$>Y?ieNia^Pkj8tX%c-gsk!;YBw|RT=wzzx{OpN-1=D8M zNY1E*faA;F%qBJ(HD6W9T2x?8Jj*&<@@$?K*82$Ry>Rrul&5A1$^tu{#seAZ#T7R$lhP3-0d3ce@F< zx7tgI>b0BeOlMA+Fdf%lB7<$s^?!Sgx0n0(H~K`J)%AJ=$nWp#jI#(Fw=r{yZELfmPVdMvd|Kx7WIlfqa;HTot)+XW-k9c_&c8G$88iACIGV{HbOj+ggG@=id_&^~K?V#oOBz-8mLUQnggfP$TY%JKAVJsAb0(}Za6FstJ@ zr73Qu<%C0Ewu+VY(bTEYWnQYfe&R@#(~ie}`l78Xz?iTL($J?}JQjZH|ux&`_IAyLjBxGc#^1U7J!+!YakCl-NpEMTZ&E(W?dcaQ=(l(K0?d^Ta+E|5;WVFgb6RsoqMu$qO1nOS z5=K>c>$G`^EVnPDfW0oB@VlJPvd>h*zhV*hmbw~)*`nXZTmF!-s3X{(p_ zY}FYz7qfa3*`GBp085X-fHMb!X<5IW7Fi+c-nkx$-|mg*XU*=VciJ1-m#$;M*z#XR;csf!5hQmj&c5-L%*t0Ki|k-QZc&4UxFX1Xk8wtL)}Rg41D!XA zA1WPlm}r)}Gelb8_wiB<@5hFT_b*Y++Cd)FvR6p`oq97as^Tr;0PV8y7qckf5=UE1 zPFI0JM6(yD!)$?jcRQYyj?R+Eb>#s3L1_;$m_%fhRU~);bPW^+eZ1?a09YG*dHv?N zB{IHAY%@W^&~e-Ev+_bv_EGYJ9c=i+()XCaacWT zEvz8ch7xz1`Bua~Jrz9-IQ95@oXDzz4=j?vG zdX_X&6XNRnwQYoS|9dP>+~Hm=-ayDqm#+J*&PKwC_m{Ef&$%I;kab(BrI;~SRk5ZX zw%|7w+Sv|O3dMacjJJw96d=4|2gf7CGgTxLT7H7RbKJt}c>Lbb!_u9Kz~YUjRm4aS z*j=A@7Ytgz<7xBkx?K0%FCySKXuZ5$vliNTeee^LO=#Hu)8v#9HL% z0L65?XLrrgT+kQGErITNMo_OjscJ14^8|v0+a$R<Aii~Y_{4Y)-gI=zfR8wDfm4F+PZ8Vfl-?afVR?i$`;wr7%W%cmcRoinwciCI(U>zJr3`bCq zQG6+~W%k-y&hDD)Ld7gLUneMuBI_=YK`-mKda)Cf8j+`Le!zJ*pgfi!H- zu|5qv1{kAsQo@xowiVThCISpCM9;@vw8OcDDK8?eO;U;nCq%~O6y(N6hpNjf@@$Dn zGHph*6!2ry-P>?6lXdAkggArFM?>vWa|M9CBJE&y!za*k(;Y2Sr2hG%Jc8nb_1ht0}@5!ulQf6Jv**sck5PiONhjtS@SWL>Af*zd|y?lZIF@WOxq zpcXSz#MN+DJW#9pW3pY)$%qd34Byl z4OCM0-+THx=@J~wqy70)S10Ags7~j1N~CR?fq%ePk_+MA!JPA`9SGG;=64IXlzk!@ zG16-{B61J?uyyJ!^4lS`7z7Of-kO}r$~Xk^27$KMWO=WTMkbW`o;ubLkVK$;y=}r4glgCUOwmH49 z^Ta97`XeBsx5*7`#b(_-aO?w)}Be4Qdm39cbTT0(y~OPGGmM9XQ7fuMwmPtG0hB{UGnLF$!p=E zv>AahX8%9AL*)msf4+t{xK5F!UknvpEWs+g{OGG5n_%rE`oX^(e1%~F3Mj8>iw<(>Z|DjuaCO@-RTz7Fyr$cl|x00V1NS=lYYc8vW4aae+#7xV2 zD+g=i{EnZXlf6Rd?@Tv4GZP}#hwh@@!5EH2Zf$2<(6P&#L2^W2$QW)LBzW+Mn-%5* zdfypt1YiChEc^fez>CV|Eb{yL#y?8w)b3on@k@_3Ns4ZZ*VR2a|jb5tm&*w*4(;}_e*nE6DgQ6vJ6ThZS5V?l{1-XSNRUA zdvyXHdSY@qeSwFb6m|M+cFN*rW)nRxz-nWV)yT|!TV&(5XA_TS1O>8>Yrv*Y^oXiJe&lW&IwfP9Bmolzjr&cr1 zayy}87=?Hy8l7K*T3Wd8I@X#D0umA7Q(J+B4WG zrLLjza?%?wu^BQmakO~&ZP>4KEh8fX8R{}o@AEEo{KfX+In2x03ukuS_r@c7f7GPO zdFWldkk7gDGzUA3;Un|k2xfWl3$2&nP(81#>DUTCu05VF98gL#B6RQ^(%VNT5xnmT zS{3j;IjA~0d2)hUzmTo@-C*>xE#DkWHwB$x9M3DYPe#>GXO_NC+wpz1W!6zRAz@^xepK&}qhTpLvY` zj4Xw3&}l)tiQ65a2Jy6}KKNEua+V6A`g-ayJls1xxt^|&O=@Y;FT+0@c$@^WIG0X6 zQ!N>ycACF(okftN-JS~U3o0WpW2x?WS2Pr>nCriJFc zaZ(e*(+tO93Mqs_GC-uP!~Su1!O$x}OswYva0QM_$nQ=Y_pMy4xS#A8=ksv=>#LExwyh`I7RT5H>qWlyr z$11camgeT>Dk{kGmvUCy#f-^=b`lTMjNg>Pv+W-1ysW!TC{?-1ngS@gz(9wQ!9iY+ zonMUGbR{Jvrz@>E^%*)U?cS%$O<3C|fsn?)>^3VatG(Ubxw9_|HQ6u7=m*Oc825Wv zVZCy@mE=L+4qj`5*52C5+z~HUdYzGifyw*^d#_KgH>V3GcZW097P+tSYXRimFB==Z zOdEG1muJXFcMpHuCNPNDzf%NJsh5Mm2+2rY97^wo!O%{)uWf4rU1n1`M=4KwX$g}& z1{Ek+umfrkZ`Krso;2Va2R>}a3-h}+kn1obNALB>kfFj5+W0I!8gI5%zu9}JF`9*l z?kOPg)WT~GF1?R7D9~|*T66+lHeXCQ;rpYjUJ`VwF``sKxbh_G)B! zc<+;uWP&cT%m}B-KY$jIS;5|khoPNMNY4MH)VHCe$Q=2d*pEJEAr$Y|_VRGT&5;Vv zLRWn(#o$>VO-Xr1iE@G!0LFzO)!6xO%{mTLp1|2B@is9nEGc2_c!~E!S3d!!S71>0 zxy+!m>FSn&7G8rZE`Z4fJ#%(^L<9JQ8uCn5Rkun}a(i6lD$9Z7ke({JYd*q+3X|ui zU{N={AOhEW|A`g{(e^JJAEt)%yDq+vtu@8Slg5%`e)tGdu~)_KHF94qe^878vUsat zxV6PrQaHlLne2(W=}|n~_A!KF44r?5#Z$#f$ZP{FSSW5=hoMX|{~eaAe2$G25cSc0 zTC|6y85aZ~>M_j0xys$($^ECeNmvDp3iI47jsk)*Jq`O!eA4YdmDqYiCrYuskmB9A%rKb2JrEi&IoP5DI3*;Y~S#-D%YxPw21{pk^RHK?%k9hKH3zj}*a& zSZygWHH@$VW6#OO!ixrG1$Ie#_*e6vm0(&3QGREpZU=QOUvQ2eN2pm0oN{n%qab?F zhi6~ZY5VTM|GUEYUpZn}N{p-LIPt;!VFh=X<)5bcnO16uwKCvGYSnX;|Or^k9C|XsM5m)nG9E+GnrnxicYSqJs_+ zD(v8PTxJVtM1)yE-}oyV4TMp${6%2~_bZzJG1_208pp}JJpA(O%$D(gTFG9^kD`zf z;{^iN`J%V@rUltPXe}AjOc=^w6}iCHwZniSWS}t8oGBK`31BE?z&woEiX$O}>8yPG zV=_x}98YYr4R8BN`S{DrZBN_p)Gd8>x8Bw*dYwDZOfFO#BJGM%58&;c$}1{02pHB8 zocjPB4V~uV2@uXQN~-m4-CoRoeh`6jI`iy|qbcphlG~Qm=!j zw#+#wzU#%o)B3s>Kp^~4_1L4oe};2)V>2$w{0NJie(5gA#31)H=c*$6Z23Vkc<~LkKVgv0Ckzsv@{*32-G^Ht-=Onp4#L)IEiFoqt+g&cC#fXS zmDP(#3iY^_mMqU~7?dvsOr9UrzYjMTxPd@>6jXqa6{R>y%#(}#Tz!v|XSE?y2Te0S_|ahm++a`EW~t>w~LZaBWeMwdcW8;K)<_jI(>;9WTikF6YVzMIrkpo%(LZyn^j zWRTKLPlNzoU)SlcpZ7NDcFB0mb?K@65qmXmIouQ--j$p0TAc(_widhh74rZ3OqFd! zyvr9mpXrYT7?bGLP5C^ELPz_}YPr8#M^+qj!P|~G+K9HFy1%@<;J&S$?6|pATQ$r|Br`%GlW$%d=m&Iq*y>ym3D~Cnkr)x1y=cnOJDES$JU4}ID&R3hS5=QN}WGhzHej*;+tj7yd%Z!f?mHoa*HkmhDP5(Ubj{kthydt zCv^mDPQLd7Ubd@Pzu@pTc~=hS*Lf6LN~huO1YAIlcf;OJ&HSbGf7t|2Dc#yHIiGLF zp)K%5d;S=X6MxbR#Wbm`TEcmOsBVBQ5kZC}j?4J3wg~HtOv|FIHJB47XF0;kOBz(< zoERje`*rcBmgIAV!2vaEq>q73lb@si>#ca(KBJ|lkINi%`By<9Fl)wHAd3I0U_{^+ za#sB*Ub}m1cBE#C%VFWRx(O0K7^mL972Qh3b* z&$s?I=r7Y%8f%LQs9AXRIDACEc6J+N^*7hD{lMd#!9q2^_e7=+3p`kIp^2Kz$khka zn}Xt6omW$*C{RzO$Ax$$VcVyda}%pF?G^o_irNjasugu6$vd-&=DB$PDtv8PkTWTm z65;v!KFCDWeYFgObeg^1-C*TIspxkWce`CbuUASt#$XP>v|S5P9me6Cx3&Rf9e$3v zZ_Y0F0<<6E82uxvx=TfH5c$YdR}u?V>+Jl1@Dh@lq&w_<9Db);xuQ!w>f}Ltd%8P{fAdw4}xv`TqAh& z#g>hb*;5o5WSO${vWrgxp;9@it49N@A}q`wPdqooY?0*er@Tcol26*&7-R1W%|cRZo2PT{n4H{Ga;Nc%=S1(uc)T^}wp zOU_c3c*T+UjQ=ehu6#t6;n!SSc8Tqk@Kaq;3yLw8Sg92-3K5|p=#lb$@J+A{XXlrt zKgyktVWB;LganS8Uxt!@t#qzaoJ((Ts)AHx6XZP}=J-tf*)Qy=2{#^ zSB{RzA!zM{oCX&3mTMPZaDAiVBpSlxzrPl0cb$++p@axyE?jYUV*SDbPc!DO5zZ4) zLP)Uxff(B5s0VwG-%BDM5@wj>|4ErR>k{8~Nzm;rxRCU?KKX}u^Vu9ow`>d?_;Y_^ z#S3$$5@FkAD#;A8TnpU~sJ@lV6@FRlw_o6n>6H$n+MD-(fdDvRIUNG7S5fih^W4f( z;X_}GNv$xl=Wa=^^j@{*xVNgKbFvJJ*#zl`bt(G|m-%Djh%(pyCmk05%X`Gv-QyMx znM+iNNxX0%MXN>q#i`luBeWdG9}zWLCg2ST1nt)dD+uZ?9TSQqnB1FOocr<;u6X93 znp(!2;gm5Je&++A?)-W~=e@C@j40m3!}B7qas1>O8E~DP%Y48aFD#Thr-t)B~U^S_9V< zoqi>38q(0V$`petqw3{HyT-tIhD`_~j0dB8>p)nv>vCw3lh4R7ixeZXo@#tA7C&#o zt{HIY)XW?4p+4qxB2g#k!^&~#rLw>W<{&nMw#R;iO2_n~RSu&VH~q{k?yM&;v5c4I zIO(08>FY_1Z0E%5fz)y}{&K;t+u!r}076QXX?K_m&q-ZFEVIs*VXA(Gnwhy?iM{x9$e($zVC==O2 z?@`F##9znMqRq=2>N^p!9A61IsZb!kjWNa*ODI90_9|*UKajHLyu=u>+FI)Qo1v8J zzaevcL(BsT6fGI>EVxa{^f7jw(ijdJVRkFwwqY3(F>Mv(jctlXF7mv1lt6AYe9c0W zjv6$;kiN6beU_$=bz56Bfm(DK`P=-0f>?k4egX8|Xh_$u+jozCoVI|ag=24l+uvS8 zw#}^NS`yX5NL?`z7us)+0Y=?9{4sX9V|6i24nDE)Yj-~Ju!D!I~C^Z56P$gMa|LKqjy9J6zeAfn$( z;bmxlyb=}rQ6M2hG*{Sg@um5tVhZ%|B~%KB`97p%ev;yzXgydTxXloRO(=&<^lf$B zH1zS&8-JNyRs+_T*~muHj8MSWGEf_8KtWT>YF*6cW&G)O_+HE46oel0b0_@F2~7d{ z$YDzjcjn-@^!C+`P29&n8uwk<)fjHmzhr86>DPlqZ5WTfjT6PLv{&$ugps2fIeD8% zztpIL6X{?nuPr-E&Y%+6a(A^v0=VP(dVM9V@eA;E?+-$SPhCmiQ-l9n5a9bH>jal^ z4pVjDYqxF&yph;0;79vyG=A@A3?@eg*E})vB%}CSh31rfqBX6Zv}lA=Ssy*bhh8xQ zB-<~8pnJ;TIp{u?pVDB|aruxpBh?+onxQ0CmcC}u= z2U94$k%q`7|8AcgWPKf5OyN$S2dJx!6-1eA8>0jt_j;PqO2r-|q%4af9O>y^*cA`> zFZIT;58#u*#>rXcG1J7voa z59cvxKuuWSZ%1WPSROop!K;dpGg`>u{Ag0d2x}MBCx{QsKU)hD1{ z>U!Uy-K5Zp)qB6d7lI@(-^panj-ky>oG6X?NyZqf!$tEj&?dTQtLpY_*s~@RuLKq(ii7G@UQT&3MXO$x z(?CZT?-rbII%2>X^%PFDl!mG)h-#J}EQNZTR z;FAJC9{kE}(9Q*2&}y$3Og>X6*76N)e`6W+Y-H=i42xTD|HZAk`tB^}T>qF@rvL?m zHb(!|C4Zo&;tH!9lI9#y^g<=R@SO8(2k*p*Pr%MiW{V5L{Uf88f!9QVvVfY`V9GgR^Q96bt7aGiz{B3S za{uPP_x7=fVMD9sKfOQJ_8E5UA4rTG?>%YxS*vHem3_^9=xvtfDNjC>P9ds6FTjv) zEUZr|f7t~oi$_w7!Nb6_|LVo+3dmDKmVMJt*D*M>Va;23BBm#kL3+^ozq$MSzZK!K zZWhk9juASTXA9BKiH5G@={zPLOTQaC4o+rZ;OXQ%Y*OTNak34#JzW5x!GnSz0Jq$L z8)gO(_lazY2*5V4a_Vj_KC|z6q;-3f-Ocm}tNPCylp<3Kwx_2h){YC7pY$;V&$U78 z!1L0#cS4UepNxGrTW4xpo|6g5LHB!pb@zvUPCKVV?N2=edx1|66Yubap0BTv$$b~k zHF$uY>uJ<`a{Psf$b(BCmqm0(4VGev#4i?MOG+Iz0B{va$Xwgj1<>UN5gbKik-lTRwG(JH@7Lw;q@+ z)U0wlE+%AU3BGhNP7%$pjf{*qwOl+>lM`j(Ee?&cf~srbhsbzsRAK$x?YF0pwx?X> z(gv?}VHFYAAmy*q8d%rI!F*+#%xkNtsFB2#s;LaV{-l{X z$-9hni{pSs9=@SbpSXwUajru0aP^;5FUWBCi1jq9o@WS%d_)&cCK`b~Fqvk!>!9n8 z7euH<8t?$?3(eE{L9z1}d`5-x-r#>ksQy2G!r~X*gFbSyVHiT8ge<^@92kLUi<;L0 zB={ME=HiVH8;#(t$W&KVPDq9Ic0}jjR+HDRUG`pMyVs&eQ4HoPENHR^@G6!1`jfL# z$|}H>lH2g%KCD+3tB{YXkaTAa;UGS6sBx*Qm+P#ax2O0mXEwzbs{jnN(l!N4Nlu5!lG2#sV(i;h+E2*g7>1cMHEA5Q+M{p9{12q`K zjW0%lQ~mi~*+yM_xi}BsZ}k+&p>Oc+m{(Lgs6^V(zUB$#m!(XMN3n7#~Za^cI$n&A<(hThgg>_5!PPxV_NME;Eh|BM<6e;ta(xZRNxWz%neA<7DJg-bl?2x-wX#_@H z&EM^_t_>lwb1@WQPz*e5dtJ!JUjJBqrd67AJB$%QQnr04!JorTqfd6z-KchFlsd_c z@O3=X2iOE&JKdbKQY80QIb5S_bz?c1VT*CxkIjFJM0DN$Row~{$7p2W@k@|lnYY>+ zrjICLLppwD|BBXV2eHQoW|X#}>Pe*VA7f!c;nghC$wG z)!?@hRyol1EiQpCA8@-`FCPxH4Xi)C)0xA38qj1Yy|FiGboFb5<<`fQBd_rkvKpZ< zEP5OGcIDS2ZBq-{S4=0ZE=Cb+o4cZ#LtCL`vM$f3G!X-;z}5R+ozr_?x%hVjQX_-` z%Z&Mh5WQm+pT{UN{FqqHCxGLUuV(F~lFx4D)p8ur%zw>toy*U|eGVB1+G+WheHx{| z(#zudba8tcyDHY?wrF?a2ig7{6BJ;KliQi}&ygH~Y0hsGn2zXuCwV89P~Y0$R<{-^ zxg+%2_F#J6(}=19JE@8ylu5PL zV_cj!8nJq-YTAe7x_Vd^HZG&R#>tpx( z3Rcz^(BV5W9`{arC9$QFj-iP)l!wJWPrbSJcgJA#_U#i@pE2ZQNW>+rh#=>d$v$4q z%KTZz%#3fdhb5hW#ul-LCxszV*QiDf=jo?zxO*F-G7-@6iWLHeznOCFnI03*G9OooGz0y??W3gN7G47^y%SHz?(bp_&D>?y}wXxeHmsr zQK#M6FzY(Gj2Sf!}z&7^U+0Ld@H9i@OsY*<2&s#FmwA4}~hV2K|&h@(ZFByN%N zowh-`X*fxqs)7*y?Ed-jDXttetM1D9=-}k>zaaW_)2FGRA71K~|KV zVXGQ6;_+D3G*PDOA9y2M|)?p-c(aZ{^X)DjdEjZGoP^@^~tC83ADGCdQ)!{VD zwCd#-KL_CJ75pjdOZ(7&De6ZZDDUFf+glTt5=n+{7}0-O^^K@AVm~sbOH_J;hOrhS zIz=TV`Iv_9&C8vXBwMfdXNKmzS}%6>a;^O;Yb%4$kW!O;@v^mQ6Qw$Y>rS(9n40+? z!}S)9MLrE3%{{dsl1G&Ll*8e|Oub;S>%+vQy)G?$il%H4r|2J<8Dm|5IDplRvu<8F z(LF92r=?#3m3_U#lPGT^xg0VMI5_ogE??=vR)4ES0c_4vTM9a&GDl>gAF= z@O~C1VdatH`W2lr24aOaxr(>nht~96-v_%%Py*4Qne1h!ao10kl#{eCAC5H z^P#f2rcPVYu%XF!O2KKve-_?VZ&ka~N)1BZC;d8w%#W)P(v5tSixtZtb}nJON&b#y zdsgRhYFSx^a>{bOPorkuuIf{~C(H_4$o0Ps33+YR^rg}=v^-L_ej*$HCS6-Yv&;V= zw8FN7tEF>w2Qg^2YbYw~W8;!2MV0!DE5*SrMzB^c^HtwfPHXP@rG4;1qcAxoFbR*& z!6@!l$iAOejE>-BDns5gdG2l5nJmsfNcdc?Tw&Mzq3*2QYQ}AgAaNas#?QjFV`nid zEneVdy%se1^vBCY=$_mQa~icY3{5Y;8c*56p4*7BgfQQhSV=e823^7~T+)`Zw6yaR z5OkaRK+e1>({8knN&0X&-!u@o!XEqcK~^Ame9ZYcsikx>&2izcdr9+$EnT7_#vWt~ zp3gxS$QE8oh5DsxADT)wT`jFz4!DrLB5{h}+cg^^h5VW&-)ysK-bo@F%4C574W#`;$rVmOYXpQD_bNBj&( zZbF{vOWef!qiq^OWpzW`JcM9eKof9uMgJE6@#zoD4<XXhel?7oqq&K**V|gyN_vZF=y{goiN|5hF^2$#WpxeXc{;T^?V0pJdheaHV*L zh0Fa@F50+a3cGFY*7S=1mwccWk;@N@IpLVx1Ufia89)>cES1W^mFYXdbm2nltk~1# z>F_*XTv!jd>SdjnI?!&bRcC(e!9tWzBuorNF^c+5m=iBaGwBm2> z7*~cJ>lqzxi&{q{+j-1^3OwE<(HV7}(TBw@wzN%2m+wo{0pHTye2I{@ZcAW8n%^G4@t)R` zd3Hzsq1mkKL2K*&Z4ktw(@A&mxmw|klXF!@CL=+8er3kM(0h4Luqf0vG1WTXWY(QH{nQaqVi$Qx3sB_uEgvEE}w86DwNB8m^A+EL$fTq-rOjn_&Cdope@zQ*`)aN}z)>G?(y9_)i3@ zdL%I8`fiac4)dqq6R>b$k8p0lGd+X?gyTO-c1gd9{mJq!?1zw0;*Txyv#FHTT?`Tb z!d}qfvg|95?-2WsJW8dbMwcjbOo4U}v9Ue9{0_aRtyA@Incr@TZ1y%uL(!gp$2pJ` zX1F!B5hKd%-VA_s)n}C=*3vym6;6c{dQkr< zY_9ssztT#RZmNfu`{3L;3*(Ph&R%!*W;Pi;?+MlSlY$RzOc^X;y_^!C1>YuNR_fwC zdxTCRjV*Jf26udPvNm1ch#>ALA8MlulQ5Rju;pT~tuOg0b!m<7@Z3l;&mkCGc>c*; zs59QOw;lg1bM?=cs^b3YP%=cipFZh zPl=z1?&r@}^O5t&rQQ2L0y_ZYAd5lr@jA~&+xOhGV*BwmC%$U^qiK(>ir7YNF$T6tGQ{Q{XN{qyK~+K@oBZc}vD$Z}WNDSd+)-zH8Ul6N z*gf7i*68A>eGJdPi@b|-)g?@ibpcCA3npA;N2DoN?Er-tClcXJ6cdatfor&HglnX0 zRM`Jrc>f$m8T9GJwOU5U&JnXNH}{y}#+hQSr98K-_P`qG0VT3raK?04_D zMRuYXDreu6zGSkc#OFxnxH}qGIt%5Vk|}g$%FQ}kn~DO0ac$4=h0Z24dpiPL?^DiA zOY;4Lw3?Z0^dyFFSsHZag`YT(*{i86-Pjz)N7=fQ@fUw!&;NiZ=8=&7Rn04FX#C6Z zUx@k&wm7?B$%Nn;2pXK=4#8c5>)`HggS!L>?gW>?-QC>@ZUck6yL%wZcX#izKjH1S zyUywAsy=`Tn)7p{Ct133XrgivYB_+<1S;?={b9=I8I_#&XTec;$^ynA$|2?<-r=_Z z5Ra_b!vlgabBcCY^9fJzN;(#A+U86sy4W@1>^)=hi{ z7A>VXLSVW%tzRolT{aKx5*71iq9P0&RaCyfL_6-}&@>h0k1B}7iVBSd*%*%%X`tGx zpaOh(dVmpY#oF#RiZ(lJmeF7rzdyS*#z~VS%tTECF{vAuNkjuFRlVbZwSJOi)Pw}) z1iLD-Ao@uj5mHA{saA1uA7wB;OM$V~RP#$XzEKYb25g}0mb3kV&8Ox`+)@n=FSc7fzT9l7 zcm`lb7i263aZc_G)Nx>OOyeJJ&vhyq9g7fgOq8J=fUc)8IS~(~jsNKS8WYD(7U`^D z5^dkvPN(S)pD!h4x*K-xQWx-n&fXL_W_D_ETsII&IA#@Mbgre^zq`)V@TO3_CFE-5 z{A!lcJy8PJm8KUpDse~jKWPa6jNldio{AsdYGQ?g1edV>pmCB`v5H*S{B0U%Iv)^_ z^(~`o{llPRI4!5UyxWI8mB{FK+SUEGO&SW1uNNGvYi8n+{%|E;6sz(lMKC*82-}i=+!VvhQX)qbI`=eP9GWy?&Am=psXO zs(T;4$qOFI)6u8R6593MfMU3VFS^V?(27nqfQS!hz_p3L6xkIxxSOM0@YzhTZZ^ zN`zU8^d*KL)bE^0Lu1`|@|JdNGtStDoE*hOT9Hg-K1MXLHN{+kE6{U4i{m+!C~t}z zSXE98A%-)Ip<57U`g$QG$dK6}WfB^RK+9GpN~)t1VvEzd*BL;6FOcR4IJmiz85ge4OBIDoCUR=}aa{C2%A zUZA-=cw-vCeH=AXJ0);0%)I&f7i9IO@ONP&t@yU_pKaM3)7fpzLPyH9H;iN5mbFT9 z7mEwH$yJs(L8`W>2rNT0-Y&qCfC-3UV+R|%kSP`s!Myx(B`@1C1~uWW^M-5|scBIY zYF@VGLXShlP7)_30yO#;ZEa?gl3z?{IK9bs4A-mzkkLE!94r>MLk0=T62eSe8&gxk zY^{>_p7ys#u6riU&24WT=WOerqXb>0Y!N3>&0jLO$xQo$f8|PyZ|(!D8#}Eu^LNPI zVZ-QqKl;E4yqls5-Umh*rftP4Fp{{x%ejAy5;QO0jV>>vaLIUX5JZT$%;SqsvIbLf z(DKL={J{+Q#%zt4#Qf}cAqz5(snGssJXJ4r;xI4Qnqj7yxrdc>USM?|lpCHQ%9a^r zMPQETm^i_D0L+|m3A~Id3g)PkfJTOGDsx2C1WlL^v|s@fe zj&XLp2n<&UdYtOAX;c`K`Eqy#A1}9AzgZjguh01^q-&02PrnbU(_a?rriN@*H|R=F zcHb43R}<8-Ud`^u6w0;}uQYhzGD%I^ilgT@C0lncD3TdIEwbkO7sJ24fAj7;Gm>G- zAUd?qifd=mGQ)}E`VC9lF;w+d;Bk{3v=&occHF_`9xYT@y~6kluBv<}<>F0MOIOh7 z=WiIl=Hhjvs+XVRC8Ri=-EJRFIz(7VUEEd9>uJ?jVWh^AA#Eg$x(HJAF!w8;+n6s?VGt|mD z@dqA7UqMZqz!I_FXTmu1ortk^H#@(bP=$xKgItvKrj`}g;|9>ubJ};GBM094<)U{B z#&-EckTUR-u8%01hd|!%a}Bu*Cd&%?oRpmEoIk7yN~>`R?`xu*SdX$l_YHAxpLs^> zoRNwDK31v<<*Gp=B7px?1eiK~Y^qSv*iJatqHJ&*;vbDmEnifN7tuMz@tX=9ijC&Gl?c4 z73d#PsO-~(P88TsnaaZPnavgva|&;TPcl<&DSS*1G1e`T;5MtRtN#GSq-H^xT=ylx z$3T)#7Aoku8a*R2S-ocY)bJ{Hl`gyd$pOB5>(7vsv6H#u4_F7n(Io*7&ixr#RQF3Bc| zpwkjoJ=*ll2mWDSB%RinHc4E8>qPJgBcXL+}JJJ?~w(36#u%x&8eq2H;9R5)jnnKLx=i<(rTurpp7GFS5K&aw-)-%>z3 z@!yA+bI$y2HXS8x3VTRXMg`%rX(+(j=Q*vjBY5w;#e`&KIPB48UbdPzE6(q4Yi4=n>7AgdgMz0BkF- zV;TwCmo#OPr6X$o(sd$pQge%zFp5axs>k#{qy!_1e7GUNsbMr&PC@^(c}n5)bj3Jmh#YLi6$0FdoceJ0uly3vRpn3@}; zH9wVho*b-s+(cX1wpAL``aA`2)Ng>rN8(hd8r`UQ!*c%=QkU}%I(4kswI3y0Ifir2 z(2k-<&x!nyzhcM_5pj5p{ipYRbmj7q^pNF{>rmiO^iUf1>GhrXqYh=lOB6xM&|94L zSY%33H{k26H>!g-bEu%5Eif&n2tZKi`EuYgnDcjj#ocf6kGEz7N(hWHMM*kEyPlJF zn+nJHna*|7_YGxz!a8bdedqZlanI+&-UEUV%Tcv}6K%Z}nN95vFmB{J9NZvI7EYp{ zc<{cvMKUvqvDdZ14FAgoID8g&%s6BRfGt_ayyftjkmMfui^?!4MLwfym9pQ4Z5r`B z98ql?$AxySbwB;PXZ)EB#J3o;tQ?kEf(B%M=29-2Dfcs%BFok8E*ORT@ipvGbQ92PHU6%KS#G0Nt{0aK%>48U|6U)60@CkJpm&NggD_qI z%dA-=MA}5bKWn*FVNW4N0y!nl0R?u-Kd0@uel*b|Y}u-2jn;n_I{~U%Ja*+*ed;*4 z$jJ?r^sudQvtcylaFNO z@?M)hsK|;k57`c~^PxZEhjqellLFC_b|R_m>lMmU)H-Svi4Uv~C6uKQf!*_S&%~ zRxwUTF~JKh=4`h$WYcq+)w@QpCE8xjNXO(f6Nh7OH7GX3o8?fRV8Scw zFfv!0P)s4KGeoTN7Dp5zjhJ9K;ZOjbndc^tnj@CzOpu7^hZs^dn|!tob_W(b?cUom>38q%m7Q&bsIFAlXMZXceAu_bviSEL zUCrxyscK_T7!)A3U>jiQPKlkOu7t&LUGXjP2gfJsa_zXpog*tZ*?8IhR*OqHfbW<10;1Ne6WkuT!1H2aE>Sfh`WHzMG0}H|X8diXynm z#W;U|bUYjTzV>&0Y@=<5-@vEdqi;Z^$iV44H@~-AlJC`Bg20P;4<(G)SqMeC4UUQi z`$(77lE6z!r%vKj;|V2mMapdRa0{4y01s2LDyZd5)H=1Nl}kcN>rRf#W#a8@PRdSgF0WogQ~jmip5?)u z9vIEf<@RosuRjNF>v2i5F5NP(v9UGgy=(~%6bP5BuJbaTt&|R@z5YttueEt?sl0(d z>`3wXEf@GaB?&y=pDZp57_0tMqiMu21r7j#=f%THgCg5KG>v&Yp{`s75V%bUG z>v3JhJDnp*H`K0eQ!0^+)Yw7c?@jHC{;QDM10P5BL8wb*HURW6~Lv^^2n zK4|0<hOgnDu0YTcj7pu-=j`Ez93go%3a- zcRti`N)CXHfEbX${9bk!l-P{ z^5O*INJWIoK#^dSz^e5I+kdM)MgORZ9Z6~Ppovkq3$N`{TyGtxdj!OtP5>GC@qaMId~<^XZHuW0g%JNkJ_5>-JWo5fW=w`-C@QZ6Or zL$1jIqu}i1B`q1#qxFQZ0*~4Cw8)e8hP9#6XXzA*s?WBCmOB}aoRlyrRB{vhu@(3o z98}5&maIncCN6 zXz;oqxpUiqTxiQD=>RyFc~}x5$EIII;_~O6)P|)uV!X0=|r3PT^YPLz>BqD zX1ZK`gKRkbofr7av`vVG9;Dqm13%UEkCQQ}&M;6B%Qlrj=zD=G)oK3EdDDZa&JaA3 zs5HSg*K1m>D&NV+T-tlFyqP-bmh&}{PRS{r9g%dV5l`=%n+L4g0MSZXV(+a~(6>&r zNu0*F8N;o%l%#j7+V^yWi`5wy!U4glu&d#u(YS2QgB* z0SPFQ)+l7{uw-zBQS2Jhr5K3MvJ2g`!DY_%(E**ewhOMtnJ!a;74m8Sd~17{K`7B* z@t)WJz5ZdW+ksDR@G;`X!=mKnkLtbrMf1Ec~Q{!nD2~OF|h2VORb>0){-DE9K7)OapV5;)u zWS?(qmo+C-H4JeHRyXZ8-;oQ#>4mTzYgk1${0!wM3j#3(PD11%rc1x;Gxl zCZShjXfQ)vq+Nh1R9FGsiw|g}?C4QMs@Uct8L6NJ)0Ia_i4qplC7N4qj)DNWc$F6v zN}1SXKR+SsGbP-55I=wQ(wu#V?hm-F76P4(e>Hmp*D%sDx?av#Wr+flmmA{})j}da zTl#T$$ieRo!{}s_Ynw^WC(6n%0GdpvlFwxKFBa9eT_F7mvS-Z4k>Zg;vs>GNg#g#k zDh>DrjT=s=7it&>T}U2~@i4`M&%%94F0dtDjFLtgePn;rbeNi;psb{&*EjGjNI$qM zn3xLDN#xxEking7-{Y7&Wbxp$m!9^o)0^yZ8PI>|WO)&xSl0s!gKxX`2ewsw{=A8e zR|%`rSXgOxTES-0jgCuENye%PTh@XND_=(FtNPRkkVqxb{p5>%^}C&mh@fdn)63g; zz^cCSs3pNJiNnr8exfMTphIYF&AOm!INWMG*1z>*n#_b0(~?0V{*>h3(Lo4&<13l1mCU*MDcp4}GM4j_77aUBXI`{fyY}lLbRO@waEC^jn8#wi3zc~s zGstp1)~nfRhMt69 z`;&fhk26W&xoj>zdB8oR`he?|rHcinltCgO90P+ZtQyuPPU>D0GZgE zaz&Q`J+0h4G|dxrdi_yewu62B?UU8<+*zT-68|qwVjq2lE4bz?18pOV*tX1yNG>ak zf+hxFKdPqZ0(z-ZVc=MaP-!{2E-sm6Dp8dh{G1zO(M|8FRU$s=ga2UA3(b?l4xXNI; z-^4^1@jK*O4pq?&$EiCtNR{;%xElDR+OBB}drmWARm=B!o{qnus!9N+JvWHUa9UysCPS zRe8J(ALx!bAOr2)O+qadk!g&J|7I{3#^~(Z{88&Df(cG5FAaaGtt6HPJ75|tCc5C!3+Ee#zcgDFSj*!VLUn(> zeo{z`8S=Zkg?ex~F;@5Xrg&=gb>r@vQ0L7HwUyMmliZYVC9hjVF`nT1S@@%xsJd2M zWhKh~MJX*EQXkI`HqTyZjq2A5`>Aq?47P+({I3h%qdfl>*PAbFZC4!Ma)=Sj?7px$ zIE`N3qy%9wX?NV;-DiG+SE(vzHIqOrOur^eutBk@NPeYIMcV=dHY>%5NuM+ZIP&6A<|!F2!%}D~ZQi8D2Hb(nZTnRyMBlGYB40%RvupdlYnJ3=J&KdM z`TI0uVuf;KIs2~BwM=k7b+{(y(?(d*nF$Pm&2dNPF+AxqB(Hu?DGd!Q@I7^QMbUI)z>;X zW?faGi58MzYbjElFQFWv9eI!pNsXWQVVxC7c`MACv{*|5-8nloHX$F`Ho$XlO}@LO z$02-Z&+5C69u@^;a_^S>|Hfr#2;A@h@{?%JN3T8OwGEUGj7uZ-K-6H@884eS)Gbd< zR-VaCn+8!sirxZ1#E#s=bU|#dO4P)pEC=#Qa@xQdSXX+WHY1i!5(e;TA2ovvv47cx z!xa4DzBi>;Z#A`zePEf0{IQ-)n!wFZRh8*6SulzJdMK>Io4#`^tRgi^Rk124fU>3l zKQg)ErTd_2srzuN{$H2b-H?K4u6FyTIXCx3SX}|6q09LqPw92a%fYMq+@$`^_dXtU zVFW97e+vz2Dwo%S8_K?4%8@P=Z7iT80e#G}r zi0}TpkLy}dB|-BkV^xVO&zTtqdiY|Si@lJOm{7_X)mUyzgZc@l-()@iSbTK4tf0pO zf~dwR8A5gx%j*SGYUQEz1`8WbwI3!wVc#N&<$?=lqMiyF)tO-{78sGPpS3~+j{_=> zL``QNWUj}LtAKWU)3N0p`Y5OdvX0pIyy>FLvy7%ZY4sU&@|fV~1F|>;9A%%Bta7V~!(lo5CUHE7G~D z`)%Rd8cE8kDd7KWCRZcv3*a#$9360~k)EQckoI2o8#utB0~%4f07o_@Y7=MZ#-P1Gtl1qexyFF?MXsXr|$i-u4Ko4MNWT~ zo?k^_M)AwqBgoo%fG}oU7Qi9{#vuiIh7C7bNFq7rpKCjCZ9V%RM@KhrzI3KKs^N|y z8mF*;34pYUDMZz-V?TSKV$W7Sum;sacVlv=hy7yXPGmhUZ}^zw!9G(^`u2rn~c4Jh9BMlIh^E%uEYI#U~zFhW=}uu{I0tWG)~wY8lVmL*Wk0YG%(Y zm^95_800EXa!&El?K~)FWAI2&Lc>b0s7{CH+dJn6&o_OnGyLH{t{(QyAr>>pzvly) zTK)`tirhtx4HFj-X1$p(-V?jR6>*tIoXV>bS&8X8xJxD&M-$$f8?t43r0&MT7DI&^ zb`Hc)h!nM=A|~{XRbr;moM5+vCW_|76xk`Z)fUDdC-sGp>x=Irnk{FJ$Gc_^8&$8_ zRwF4lFnW$!`RuH^#p-2YQl^1l@0Q0^aX#ILq00j|QNG4dF5x=PhkU_d(B!o1QxyH2 z7R06%N;>3^P+fu%*L!k61Fj=399VXx97p05Rl$p3m4oXdG7Y1ZQN;RQSw%f7Z*1M= zN-CqmlO^>r7{(bMBY(4mfCA=QMt)!y;)HN$NsWDabOOboqFPZdYQuAK5iX!778Bx9aVo9A*miA7e&ajbDC6N4tbg$+0A*>|3!4X-qGwy1eS>%v@Q*pN-^{ zzF*SqMkiYIr1kI7!(=Vn8; zuWuw--O3r5-HQZ;ly}F_(%P2Rr~fEn%PSyHOCpL51)J#yd!7g?R40fZDGTi( zEQ%b389kCcbHVau7Mh2`09Kg!Fgkd~iat$_4egq~te2(8Xe}C)${>q}yvSXVNxC^Z zjPivlsp89rC7pK#!@E$>Dd5)xj8ggBaOaiP6_OYh$3zW$+96m~mXMIXR6SOfI_;b| zkB!{lf;LPGs6$1M`U`FG+y$ilE7x|@9g|$nxhNM+LP~K@+o7!&e+FBqKdj)~QKDed zQ>gPLm22OJml??7qW8fDm06<6bIsxlvA{vAesEl3)5v|Sg1npyVncpI3$FlQbUqgC zVHHYCoeCwN(mgzexP+Dc0#Y%nNZxm{F}Q-x)9Pfp&h-y% zuI5}7>Zcj}`=*Mn!sBN=;h1mlL@Vsa1(?L*+TlzKlBZ$OQLH{K2(wxEvAZ-U zxS0}pX%y!7D#rAzCvmIIVwj`TqYD$mkP8T*x64? zf$A`rHg?DE@Dx$>`b56Yjo^hrndoo9K4>dgYt^Ma4{y)k^WvOJkPPn}EPNYJ+W|YMI zB{k@Xsj*mQVhKsoBo%1@6I=$6iE3ZZ5en1iiX{vDzKGRuSBnqt9r=Ht3X}Iqq?ow$ zqxeZIdVv~ZBdzoNiuaF}wX-#%5Nfb$Bk^OFlq2jaXx0GD3m@$_XrBFyqT;>r2nzs0 zb6oYxo!dCnj4eMhATJWNoNX@FbU;-5ZJmnj4SaXZ77SY5yT7<#GDJ0I10V0Bg;BwD z$t#U#i)nd%MYQx_vqZ@P#IQQ7+$Q^_g=PcPt-;(+PUQ11DcwRMD{nndDc=qCVx(WU z-`vDU@&4K3Fr@hED+7+?^b)pQKGn9BY2kck_~I62@OdIgh^Up*^qE{SCxchCzCb28 zqt=Ew_Cn1ym^6UHI%~^Him+cTtPDS@R0i598#KH*f?Gz2T+(EkTbtH9*QWBHBEt9` zR{apcRpn)0RAU^1prm+Zp~B}R5{!y&r{CvLwxx~D3a8WPz1mWOZ!hrVcRkvRK1bzK z(>K6KBjl%>Y(A8x4YYv}u`-9L$d|Qhs=|R9rr>?Mw!PCZW52tZb$-d<0Me90Jg;Y* z8*}-RYy5WlLiJ8jcG)XJi=DHsUm6gU7=&uEpjTuD9U>X&niMfjsc~z!bd#CC^|xUR z^FamL|K8Rn3jilqeuiV3#WX6#J^VNo#jqmN@_6DolYkv{&?sK=!Y8c3AIEB6cNjPp z`a)ud@d4rpa*!bc>s0ezqwS9MSYS{+CS@BplmC~C+Y^ilL_-Wb_Iz%zHNRf(cj={P3Wqes*R3BH}B-BmOv_fSOLjf}rbV*(gW>WR5RtCCM<>>O` zRbfFiL#9^H!fCf5LCpodC^Q8t6x`0U!RsNTN!i%gjt$I# za@S828dIJz>k3Ib0_&in0Yz@PTK2^&`JpNatnA~P`C(7Kh*_IAAf@?>JZfA*zY#}A zci&vA)Q_c3h$@hBQrO!}dN&jNwQP()6Ym3Ne17cbLSE%2R4mLU_rEbEAF0%oKL=o; zlj%oa;bzE#SaSoxNH};Ac=3RBb4q2cum#$D1SXgK; zr4m4*Sc}i%x&aI7`5S#C@{+9la|mIDsQ^~GvN#^hpurECUS(0_089AS^JKKQ^sjoWo1>-Gm8^QVYlR7yC|<9CKKFxVRIX|dLL)rV2pF)Tf_!K=Uc)K48(jl%Y-5;7 zCNCrD5l6hJM#A(5)r3~!A^%u;mk<5l<2I^oSg$}TCk{Ry3rYq>bXA!th3#eT=j1D- zi6W^J3$&bX$iP*CI|y>Ud{@2+(h*YStte8$b=Xzu@oQ3r+*pg?g&_4-n@1CoqV<*o zE?7uQ;0pH%iTJ!bbfSIpGmvZ*SP~5NE;ZWavl+}6D!8{xmPVO4hZ55HeQrcXuX(TGk#pU5602s$p0 z<&6cxKMlwwMa;+kMxMjagY?(Y$>Im~HgM?2B0aeZlpIkN(_)RK8R~^uv1jj+oGSJU zN^87EjfkqxG}zcowhexBN&2-Ig5m+`%;QsXpq}BSVDOPwfH@7=-!6;fa<_K9@8FqI z;PH`Srf_DkN=R65*Gcd7X_Mo*NUMm_ZAVKMEyF0q^3aPAyET+j>H#bDu;RdaiwASM zJwGE5x9gGf0+%*H*ZkFD0c8NSg7}SOX|vZO@ogN!k?K*mgMMSXkxC zvCbfW+r{WXGYm4Or6FNw2) z3qLOo9gK{oU`G`2({_(999(XK0+2-ml|HqqsnoC}VQ)D|H7ai%K4I19MSz}Z%Mkvqq(_KFk4ddWnqm>jas{<14c$P^x;CV;7A@kl zn;?erwz6DApj1{!136_{ga$ghc4MnY-0UDkE5-tMT~&mADy_&a+65upf(XqFQjo#P zlMJEp--bKy}IiC&3C0Pd>#6Liw|<$UF`rcWXELSWX&cCs zjEwy{5oI6IY_sqQB%;yokL>wJjpzjPUpo_KjH1mFG-MxRv6B&GBKOUbZv`XFlzi1q|NyN#dfk7exDuFd9c z`sP$BJh~WpfmFO$#t}Gvs!p}W0kb@)XrobdlQyi3%Wiq8&>}_0&P!KAI`0n=a?j8R8m&XX`xe~PEk9gIyRFPrT;Z!2 zH(C4I(nrBX`kbmNGg$C+v??ZEHIwVQ%k7g4qWXEu;@E&vhiG9)tl+#y3@5I-at=f+ z#`RZ!|5Y1CNI8O|tD56`Am*Zp)ZT}Ym@u|@yRdOsh~RtA_iS#)H@UI$gn@&(B{oT8DPOoBb(EZ z*j!lgc@%9f4#m~5Y=<~T@eBU@RehGq%nx-FCy9_VQywicL+i+JVx)IpccNNnMMv@; zx775gb*ynz&6I%>fw7i_80w9ih7#=#8eaR#5Uaz-9$ju*;RQQ9cKdokY7l;dYq{kb z&ALfB(Vf{DCQ0jR3VjFabx(_ zbJg?G1Ye%oV6^rP^vgs+`1U0`^gHRj&G4T9fC~OqIXaj{y*g{DQuOPmw`kV{A=#U# zZuP9I_3mu1TN#ItQ~9ovAayJ})gOyCcNWgohL*!$4mZ!sjlwDU zQPz16enrA__ohBOVPpu;P0_kWmIf?rn^Zi_=!Phxpmr6NU?mJuui4g3CQ6UQ0?^>5 zeR(zmzu2LWyxXw-!%PLnbqw9As(suI@)fk}p4AsbS%qUU-yN7d!X3hwYuL4pCia2N zKkw?+a)to15cQ6+QS`^(cQ#6wtfm5e5g}O0cnLo;NtoMAJwl2hZd@1K2-n3}gNK)s z4k2{t^nPPA9hTa?b)SOburNj%8ceac9zqvll&J9f%iVH6j8^W z)ITL_kVQONj)iS2+icLjprp=xq5!0L&Mtp#4Q)XWrouXNV$IEw;E|J{h|2-Hs`F(| zZaw+Fi;}tVjMYP$3A_esh$Sa5^vIKU7?1I7#)nCloGfW#sOoYNzE)=mAEmzzREB534{PeWc(WJe?)Dkt2UyM(gb&s~i+pR&2!*G&q;hk6n`9YV#Q zt-5bluZ=njwi6J8y+#>`byiR)TSP~GJ5(d5sB4?u+ZAbKrLgB|xApkLB$RT>*KtzE zZG2a4_v3%4`2WB|GCo`nvQ2>Va2ut%3=GTW6p2;jz)*Q&t+s<(!=emq&cjG%;ii_w za~U0gh8*QBbr}{1Mqp^Ozfb3O<7nBU)<$bX%ysIcc#3~uQz8=LGS|uAArD44kgT8E zXZvn6{iUXdCT9z*KfNvVWn38S5-w3uPq#fUuY6l`So3Ubd~- z1+%s_D9?~1hgI~H=cTW-53W%C>GJK|nOm3Fy061p+z&_+o{Y3w&J+PU;(>Z#n5hB7zPMQrcN6Wy25u8UIl2y*OI+GwQkM+J46O)<-9gWXDKaf;es*u+t70G)*J#~=myegZs_n{%&BC_jGunJgv=+^F_IpfduQP;`t)rV($fz9{F|#0 zz9ltob#Y4p$1cz)`fU^|qMYN>Z<~J-HS^Rb)U@N(Twgmc+NAZj(2CiADLQr%ao2zb z3Ify?m9UrIx8co{d>{{P?4eIomrEDnW~n20f1?~fdNfxf*FF&Ay>{MLR_+d51&^Dmxh@jeUOJDg zmvZ6wJztm_1I5T`BS;67;+WyK8I~6fZN&^*3TAk8S7{)_K>*r`nuvYO%u3S>F6%Sm z(K(ld`1>&jPKSq44l8J#B~35>PkG^{IAg8!GI0`x5n{WD4i$zVz%*0HWZxIFS0a^997Xszy}6HApL_@}%G8La(ux6JQh z`Hwnuyq`}csy7qCJ7UmV9(Fh_G%9v&|D6!?s5LV}X&wZk?<=#ZX&;US}Y2SO5vj!t0UTk`uLm>BeWCYn!FdM%om0h zpKqV7G$oWGam51^%&hT=F2|f;Cwb+jLBOx$?KW{`Xy~|fB6pot?e=@VFicn((Q+*T zGXyI4E>L{&sYBNP9}|k`ATqJoBvoM>xz#@pr2a;`GzT^;{uT$uu=%&DP(8Dq^)OK@NXu11nd2qzFz)4%x~Sh%FPcu+^J15s9{ z5{HF&i6vBk=*H^*Js)^SrU=xS&zX>=@NV5wh?fEFvI|2*-7Kudpu`@RyrWE6EJihq znrpS?kZ*HLk1Kf~>ZX*&nx0hN7RsXUhpt|f;Q?rw%9ate18RYkDBJFO8jQumuxvz7 z7ng<`$@@8LbnO&Z|Jrk@SywV{SiKoC-}g75;s3_(CZPTwFxYkjkABeLVglkZx_~4zo=-j7Fl3GK;r!Q>7O7RN;d=`Lc);K zl9ur98JG;c9}JUfBrf`;?|Yj6u$D&0M+ea3!#aP;*Ot1xzYg3bK@<^tWLvRJp=ACM z#I}+G52NI|gsw-Gvg!;p-FF>X9X%eW#%}5v1*H!7EOPLZOd;q2vak?*g)d8bCwNss zb+hn>wZCx0(6i8=F|>2wvN*723WH&g!&=JNoGOR-aN85EpklE82jZyms__MP9aYYj zK)6rv(R!P-%Lfo@RKiuwVy#!&vBMFPZiJ}+G;^Me($Znv{Ek=bSDdVaNm+3Ne6X}M zN`y1)O6|_?bZrZ+Nnkunlg~NoLmPgN*x8*Ez;A%7uMu7 zBTMDf#zB9$FS+dBxm`d-IEp&$R@TtKa^Mn^HaQ~Z>@orfL>1i?hf~7$=J;*;Q|141 z0iGLOM9ozj)9s-4(O+|djB2KXgfnS84beu5mDz8d zBl*ap?TWo`!hP!W_*8@*hcQ6j*m?v)lEd<@TLW0ReL=@0VgSyo&-CWx%7PP$L_dmz zXJE`&q8jUn2E}S|ajTnTxJ~k`&7pv6-tEj;3GP(d5UZn)frw)Il=EGT^Iy{wX+{KP zEHDz*qVj?Q_QrhQQUoaTHU72SHb{x!r+|OJ11FCHczH2P%~IxPMZi8|dL_L- zIP>BC%zaSS6;TkQ;gw$h=#3{LNi_9a^%r{DlCnRom_Mx~AfU>bkFP<$tw>0gk4oCZ833YaD!yeoOv`E< zKnuq%Pu{TRMUgNz66ITgKYsK2qArT7&{J2tZUhQPJ8$Q?!C`XIWNUh(?(X?Grk89+kO7;bwW-3vh$U8rF?99o$;`< z<@>hXJhq9^S+x_NU~jHKY;n0qM02~BtPrE!GlTv#^~qeHP+_jloqrcg3})a6Yh}Vm z9t_h2q@NZc-&ao#JYwV>xS(liZip-75h4*RPLjUg{+s;!M`%L;p*;!?9B+Zf7(0Ss zqFL31J#O`!!mxEm7v!K3F+-R}Lzh_J2ORM}3E+f!FZM-*Gq)~r@8o9~3-_Uw3{D3S z7Eo5MOL4)qx|zK5%R~>!Xk_Bj5O@jGwuLRzQJ28JssOKT?gwl z0BG8|-r0~F)#kY6PCsVv?Q5%UcaHF_^Zb_kjA@1nnKON2PtMIV1DlcnFQjz~3cO6S zB_^HR+CO8W=PR>pwe6~FOgBaeb72kG#31Ytm^6rl?(QC}0|d8VO|Zt@ z-J9ur@BQv`XYR~>=2!oyr%#=#vuoF`wRf%c<){Exjlv1Df=B7TW-9!x55_Xu~#Cp2ytSd!pJ;?lERtAEb%wE&6#E zGEk%6A_jl!moB!TMWB7W^mJIQH`A80Nq77}BAJ?c^1JA3L4|&+6B{e*N^H-fkD-u*ByGF~`SG*B&vsoga9grmO(eIiULtY$d2S3@% zDf0$;K-MLb0XEaL8J#KP(xO9EFm5YBwY3h#(t!!{xrrNF^p&wJBUDUY#QmblYpJkk zNCQ8?;}QuSu#jTcq8e(nB-T3y6<5i9K}HD;CV>+XLU{kY10-L*tsV5rd4y)h3c1_M zh-LG9*TDdOXR3OQ#I5igQA##BHs*I1VRe9LG40H+I7Jv-e_~R+-)`2M{D3kU&Hi@AbnNhc0n!}9a;N8oRjhK=PH>gqP*%1ds;Wj@SQ69wfc%8W-Ov4QVAO!x%u&7$Bc@fpGX0} z?bS=G1|3$t=btMo9weaaeagYYSmQo<%zHdl&AfrHjQIFt=rddg9kf#k?5Viv^)UE& zOeQmIg~`BWZcB>Hs`{xaB@Bk8h^suk9bUv!)FciUB#mYc*X6lW@7}8dUOk}sU_3Yz zhaL|N|J?|-Fx4o%=pC^?D`FX#Vq0&8mMq*aVY8Q4`wL}bc{giu(WIB|8(Edu-&Is7 z6{6V{MSuEXACymsH`h@mHzhufr>R!Fylj*=hdH62BD=ErKvis{$EB0QQw2;zCsAvj zO)lUE&!V0!9ESGkc)p}+K6U_(`qHu_f9oFZdu!EI+XMWNCdh~4$&MtW~J~|w0(_dT2>ZHU8jkVef z+pP61_F*n&BvjD{h=n+Q_bd8I6YqhNkZ02Ji@s%KX#cam^3iX?NH*rB z8eL^h+B!Hm-oT_9Q?*bY6dDIb{XQ{x4BmJ0`hAd|bxIE*c(|32uHjFg)sV*Pa%d1B zScE6eHG!UoX7hfC{0mYvqs8%0SWNJxxG{w9``jQ*ei!qzRbBeThiHGvE@sHTLf$dJ zvNdo2?m{qnzMUd6pCMw$Lw9^1VuzM~?d#>mlNSv>0O{6mjqvFnDl9P)al7jHZ>ZUO z0Hw4KNtp5VWa?JwbiXpXS8QK5jGdE6^%RDpZNZDrd4%VQpHaHEI@)p`>?k97(4_#; z@!PX`W)c^12~I;{x8@p}XgA}$Xxj}^Z@0^ek|tQpEg6N2K0_;>Sw@2Z^ABm6LKr3{9F{QoxBHNn z=nj#y!C<+(LH^HS5Nc%Cguj_wPU&RJPijBwP=t?{2b>GXcao2EJF}0DF+v5Ug+gFl z8DAh-StrucOXA<~bf3?jJ;fUYkgEg+e8$M^?kRDVr(FfLlaAhaXW#cDVNT8e*o`CM znGoG=K!{4w>orW3nsZNX4Te){VLQoQ3TVELrXR&?HNb@h#vCywNV+erN7?=CyQm%I zV&>9zDzsa&tadwMTN8R#=yfg{y7N{qtdCXNOw-eX+K-Vu0`MY2eH>Fmq*+wfh!Rd8 zLX)u(uldH0i6ykhQ5%l+$@4pW7EwqNV&EeyRTf~J4vU;aa+Yr8jFnQgXy)y*2Ux*K zj1%#$@;u1p@6jVZHlALRu}GF$x+hWle?ejITM7w@Zb3nDU|4Cd*TnsXaBHsm9xwOz z`zA8ntldBDEDWutmp9}Dtlb9*=pXqns>+$(O6^nBqc*AWKt>XSc9`mL#Bs$opVz}F z1SzKx^>fS!Q@3Zz>Xb(<%SW3Uzw1YsK;Pkb|wJMk{flB-{@8RrLNYy?!0l`hT z4sR>stWF-<$cJD2GBkvMfp;+{yp-2;h8zmpa4-I~T4hre5?8gzlWwtWaOv4QlM7U<-nkeZSXKRXqo80QWG;<`*OL1${$Ef}L z@GV-B;vO$-wZ_}KmsZ`a>#`$|Nx7^N31DUA^G-ueY&0H96hIm(TEQb>)%*_ zbj!f#S$joh`>PyOnT{Dk=N-IL;%~Xh4Q~qXdy|xiLewNEOEVKY>nMMH0RQ&N;3{5e z4yBZ#GU@xO>-f3nL;qfoDP0k#BZ2%mYCV*GdPIgqbYw0H1Bn`QbtY-THIiodvrZwm zp*f8}6_e6@Sr}ayz7vkO9>N?3()#~1b)9yF;tcB(*9!=9kIn$XD!vLL4YfqZ-$tX#P*hkVt5!vj z!Lo+uDk@y=>T^1gh_xS$v;mlQMf{}a61+1RBH28O0%ZslR9JE|)pBN3;6M0%u=R$m zCW#pnM(y)cB`CD!x2ZJq;yaN9vhr^&R}<`)Xnmy>M)A}p>-w(jYH=dP2qW>oB6xYR zRefIkyyh7lM!O9LE($3doOvw_M29;Uk+?v=aW6qepp25wD86Fix4_b3w z4IA(7Eq;Kv_zOPAiC9okN;Ws-30k3Xs-H%jZIoi;0;pfy*3m z7hVb(sUC@DHZv4Gc@@@8xGB~X4#=qa`?7H%G?FQ}GZ}ne6Z)d@ODZmZ0?%75H;CIqd?b@Vu$$M1UrfXR`BeZGP@SBq$DaOQwe%4>=dOBRXpQhT@ zJ+l`Nn*jPu2&QH&IFi$k6C!6k{SMhdV~3YvdN8Ryy0TO0vp@O zUeuZWzU9+m_qBDZ{8bs*>QJ@QGkOzhz{o~RQ*M&Tvar%#J+*t&jl1qEf(=F$-@+Zw z=3_Mq`S*Y}#imi`AgF(v&3yk4)~NW}z!Q6{o8Yi1Vi({I*fe?j=*OB-4Tn zv7DOy2i^<}DF`0429tgD{|fmkq8r@GLK#5AkBfcZr`s?{xDuhoY^q0qdwq z(WJ|$FL@979#`D_ClNia*=|UkHpkD8^E97$&|-Ka(AQh?>k^6@O`qKY9;k$A_OnSB3hb_b1pbyF*PX zibE-DD%5&c{?um2BC+BLPN#$K@KcqfxblrRS19eLU~Y3y49P)d*{ONILk= zU8wFcBZ*zG_+j(W7u5!Q(c4dn!n0vCBhipm$sskFW#_B1Hc(5=_3@*x&(1 zzdp7xc4?-jc1a5}Rs&vDLySR5?j!9!2yU^Uk|?2s8RZWe$t6`-2U7xFZ${tg00QQ* zY+4)zOw8x;r9b1Jm}iqri5>8i%5EW7N&x2aBs+=rB9x?n9M-HoXtA$XWX9 zvPc4xY{P@Hm`2gt%m{HA;~5`)5JoTB%T=2^h*@Y=+EE@RYK`>z7Sm=xvodH0b_1uv zDYY1XIsAJP4)~FDn+JbS#fn3{{*nzw=%rVUb3L>aKNrtQ*glncxoEPYkOz<9aXz34 zZ8q6n`f1)`7SF2?_hIp{*dW4$RbRKXAu@p^;Dih1*LhD^KzoA_!}O|TQ#dZ$ZBTN@qe!87}}hd(?bax(cEyDx?=q0X_~U1l#{!q_|T;)#@> z`P_RCB6}`Us83!TzoSDs<=mpd?N060Zfv`+%pkai=mJ&Yos4#LcPDZD$&pXC$&(=W zRGW;@B2E&E-G#iWG^TM*?&AXYWID=meb&>J!m|QzsFmJopr4&Sfp3c$sQ_XF|1@I^ ze5dKiq1!^$>4~(343y>XMB}Nn=6VuJ3jOx^sm-{*(rCaYx_~cG;sDqFiQXHUqa6Kx z{a5UWC`d3S*>3Sh4)u{XXWJm6z!bCp)ue%$0v>ijg}rkX(Lx3}FQYWrJ7WWZNeVSG zAFtn>qL8WXQ#b>zg=fQitF$+TWrC9*=-z1~hOP`a=pEs0@P9FzOdnMs;t^c7ecrfu z<7)3-9}jkf@oGC)h=Fw}z{VpDss% zfQ2r$#~EOUALz?I>5`xHFMz5tk9B?~>!?9lPErh6oUG@ow9v_~R` zq9WH%5i5QpjLaYtMWhmWM2B&Fc4uDJfR6b?T0~Pn)9r>Ih`AfH$8Y4QjgNE!j&hy9 zM*X@RfOd7$XeFRESkqgo#EZhHbc$?rI+qB4M~+;{e(Tu!b#%vp(tGlgLzny7x7F&M zTqLj|!M@HjtJUSZ7HJmGIGd}Wm2FR5Mn*|T0s}u5e-?nzgx?_x7nSQxrFBwYzikOm zW}rO`X*^maOTpt|>?zs9Zo7ASlJZmQw=AMbok5(5BynoW9*@6aJM-PzFoaaWH#UF` znlUa*WpQA<&fG+KK87>0humta1`cfo!i@&Q;teO(>at`Lok7{ZHopkhG-@SsEqW}$ z#975H5b%;5_t#1OWc>O;!&;z@S!oxiVxic(_c^3xpfQtM@|b0AcPIXbW{~YB-SvT} z=Zn%^rpdIdfIz$sEU9YF&&nK%4&Q)N)@88+=F|Wb+5Dxf$Nt@2L9w5KCgSaU%gZP% zI@u9E28}{qWzBGqLLqU)HsCG5b=cLq5`U>j^DY7QVR6V zHnl${qef!5g<*1=Zm+qqj9@(fH$+LRr>klt3ZnoFxfV@nS@E={=1l|+WqNVROL`A*w_>MdhgIu#n;!x|qBS0$Ky6~kQmur?U^f4#W zZ0<(8?@m&%Qc9>!j=CNx;+BYnE{lmI(h~7vvtvrmRWMO|)Ak&BO;ZQY-VIk|TQbrq z#qS`&L>Uwq-(^?;72@uA%Qb4XXfV-FmhgW|QL@fKSe5pqrbN;;hRtgwp!|B5G;$O! zAD^-bn?=0myFbtm+nj5BVk<|~UH!Ic8n^TAufRh+jfnN4&NOYXZL)-F(?+!#?=j~; z8WI!Zo)>kd$?zH*>ayiN3S9A|uZ5(i1?0yKN$TCC)VV>%3mwM)C`WXKr6Fo=^J#Bq znsUP){8t(0O}MrBv45OHqajuDd*y3u>GJlY%6QLHE;zcx6sqjD|Yr!WQ7$Wd9Ms9DqH?HkSH}R%70`qT(Q|=D$wGE z`*(6|QRm`QU{KL?!YhaGBX<81_OMMAcZtSI=ncG3@ecn_We;93+Xt7AeJJ3|OlvPy z@JFtx?6gqRv|qm!4f!<3RqzZ`t|P;DFv{jMKYt>@+og!$Wugx&6U0MK^xK9>d(683 zBkdsz&`duIlK2lflH|Bgg1ageC32B;NOENZNg7m)@DS<>lzNc8FmbX<5?*QWq}e7z zJT;Z_0i@hK#+)99Ejv`P7hC6G2P~n6C7~#z$MjbZw&bI^#F!D^c89bQ$#x44vGNhs zwhMMjy%Dz|!4GvL-q#VWRGz`s?bm8zw|Fz;bZ3jFk~}hB;Bh@^O6q3sf5Pdhmc)a& zxnVj|;$P5Va=qelgz){O;+Qmuu)DGUU92}uqJ`#9(a{l?Q=LVVg_MwZOnAQRdcg{C zweu0#L9kRUKy(t!8&w}gxJ`l}$KiQ8U*kuq5QqOJ5;!XE-qQ6X-mh=OdDy(RBMmP= zbrS=JgOr`|(N=FRX_YCoO?hL4~PBb>2oHtX{Udy1%@B20V z^zzTjDSWt7xft9NnxS*d1rX^&b&uwsT>76_4>&fCCR>m%c{)awOt8j0O#(>}Putta zOL%?>SeIzg%UH0f!TkT3nt}H@fu#a^9@PPaSE?Ln)J;xy$0NFbr}Ry~F!+@P`{Tv^ z<|2*52rI)0GPYS>+u-{_vc{JjMND{`oxHXeO=ow~0q+F6RDbX2<3|kgVHXf2s_m%M z8}^74xX4H2Aau_z_L5f4E!mr-%+_U|p4r(#$ApY@>P6CmKFV(rb!kgm%n@tiEUu}0XjPlAoZx!B?n=g60ErE z%ZWo9$aeuJ5Vwcw7jprTy<5MhkxO-UP$=b``7tpF6!)<4gj63m-}cV$xlBQs064Fn+IRqdOTX&HgR|~b>WW6iT{lS+;1M8 zz=hSbcy5#4vOW3i>@`jRHzUFZaya@E(>j5dp^!eADBi(|>q-YDZKX%0GjD*C-tA0P zEpiZr4BR;QkBq{&YK45kc6O|R7t4r0zu_YW+j67bOk{s(O>BlQ;;cq$G7A(s+O*7D z`*JHTfbF0ngd~XnkpW}%jQ8c+0UOV${F-K zto=1@TmVbxq5-$XCFM>c_jMkGk%D)5sD0fJd!ToK(;@p6z;i#m%IwM8f!QgP81B2}mR-Yz908HR-05LGW};S%(Y zX2+=*8oeQ|XfRm)RJYLEBc|xBEAg3$#Wu3HZaJiJvX+S*E?_5#aW`nv?M#HP#t6j< zoslGonv$Ou<{M&OM=!r%ANhLeJ=HZ5O&RgL1aB^4(h#x`FpNDOH0E#8iD7p6tyJK> z3xG!nm16$2Z}E8Bqvs@@PSTQ*jEB#^;^M8(%l7QT#=_Kqo14|{Gzg}>3?Sq%ZJ?4> zK|vQ8Jg1lewmJl!fjX<~`=-B{G(7r>oY|^1G(aVel1fRUn)uun(Pc0e57sw~H?W%Gf8LT`im9KtO`d$@?c9uSr`w0s2+H3sb*F zO;PqL_Lrx=+v{yCFQ3 zof+u3w>s3F0W#C!<%7*~ADnQ+V`L4-{C)e*Vui%fHSfefg0k^|Q+RvLJ43D-Imfhzd z#M^+It4bX88MMAXZBM&A^8PK3h)S}v8Xn`l-n0ln`mBHm>qcPZ86fZv5{&6u0P7-h z%uc!3&eu||*n3sOCt$&a|Dseupw(m7acwL*?L)fh0w45ot($a7@RmrWJ;2!Y6TnC5 zP^`LjwGJz%D9JDr+*a+e&z$;8xmEW;c@Pc|{w{b*qxhum0Q zwHq+?G_uh<20niHPDp%l5AoW_-#gQyX@PydI2_X%vO;Yc+fgzz`JAa%oMzgWwB8#A zmO<^*WZ!E@X3#j<+=7?`8a=WQUloG5vVwdq1DnF6&30uC3p1ms09&OZl9#v&`HDe& z@xYCJqtI5kN0hFjg}_mr$KXV@poh&|eUvU=BOH6A+R8dr4~6&_QrIRVfYoj67`;Ep zw)zFy*~4#v*)*E4QJb&Qz|Ky~Wp%W#zIeL_w}>XEdZw??_ovm2c~<6h z{X#1x*aqj!Tl|W6$<)>IhS4e)srDHNperi+F63t03YDz*EdMhwB1B>i&%$I@tns4Y z*`zsEp4N~zZXBMXjj=O?)<^u$oU z`-QXAue71pPjs>#QBnNqBrbA!KXxyb%;uYXBEcLpM8ay@u5<2AVgSdY-mbV zqf!6Br73Kn4u}=9K)?$6W`T zeH$UqBj26k`PjM_q|+`gVd}1`rlZ1G5l9Xwmjd}B3`S;7vKH9k)Uk0;>75gHk*+>e zx87H3B&!h3hE61SmG!Qay!#UN z|NRT*TIa!jX#(~x-v_H)U!O-|449*a62eA z?Xe)8`tk9Kt9xx`9;#pr2g^eM?~JI`6(NJB)m5*XkZ7(_d7in5av^z#FS`} zZFesxmE|yWQi&ONU0oaZ^S()t-`)9OLP8?C4Y@+#IaME5v-ds=yK9A`#c3=h4}K z{EO$-Kr&wP*@?SgVbsUbKlUxocfU)YX2D>IOgXdAxp~y1x$A&Q;q%h~$Y)IWdo$QM zmSsY~q4#FoPULa#cyA+P&TdV3V$-JT8IK?b?v$%LYx~-V@=vUmi0_LqX3;6+$6?$+ zrM8~>q7iVVHUdoS*y%qqTVB9`{U4u}MI`gOFWd9k45n$)2udeH2@~=>ew#d+%4%14 zUU0waaWq@*1oG#D0Ok{leGaz8;Woh=Q`w!kKeFD;Ijmc-vm6YV{W~Wn#Oped`+Jk;gSEt>4 zO>%OwQ|I|j_jIHry2~!>JS`pFvd2r|RR7De8&cMnLxR)C!BtXp;4>ArJj^7Arta6O zwFhFzWmIRijeW83Zg+Eiw>saINY6_^O<+>o1cv^G!ApRXX=%*Hw| zocD3?JmdC3tANUt^{*GYR?0A@={*bWRYC{U0qsY0q#Rpe+p)Cs#8RnIa?q_H%cs%Z ztN;j3tjG;mCYRI~w@o9c@Mx)n-KT>8aoH^)F|o4JF2@&|++LXF(7L3uY=+%rfw{%N zlJg(9rx4sx*k^%4H-AWWzx*e86usD2TIG2jVMZ7DeV|#n4x>O0JoE2KQWsyy|J`bA z>_rZ)wX)RO$q@!3V@Lg+PF3VE33id&rx=GNjG8U)Zt!9D{dm?lX0Vo~miTv}3BS9R zMCEJ+uCWJ?LyQ$G{)@#IBi$}r3%~JuE5!+ixwq3~lU*0!ggN5w=Lh045@Ad3&frRQ zO-+w+#a8kA20O>M@Nc?&Zi6oBu=>`YqtbI7{&XXCzIS#NbU)&+3aAanxO%E|l1w2! z$p7e`#`7LeZFTCk5)Q1ORn&g5E|8)gIZ`NydV0Rp{PLJ=p>GoTD;)p}3#;2h zaJlv=r0xb5?a<1yz(_w~Tttfc0YXGXL<14a- zN6X!tIyd{*U`+W8hpB$X#KAy-WL~zh0h=@xdTC)dt+_!y;@cjR-xirvUwK zOhW#!BX7vE_Zg&1#9UJLE}BimUo&w@%*jDNeY_#{ zavW}9)n6B;q&$zaghSM`8T0}yGA;_ z!Y^!~Gmn=Zv?MIt@tK(Lx$6J)w^|0msYTU3RTCU5_`f>9_iKa{|_zJ<%OM`rlE=nvu=jmaWo%IG(P= zXVrPNFag_!9ap=bL9t|MIqUiKInQfdx8XbmE^#cwPN4H0b@onMheHhE%h?%B(Cz*b zAFJ^5qwcDq&)j!3G6X7j{@)X%LWNPH?0WD~-u%d%CHV?7G_o^)>m&TxfDhE)$VFyN zMrR|mwI%~%DF)>>+T=%fJH5T0$yahGKi+J4@#Os*3&@3q6?f_Mxjq{|Ug8N0>Y?xr z?CrH@*+7h%DM|kzZmhp?9eJ;V=PJm3IAIc$DT7(WDCQFD!qBla=lx+=sg+6va3 zGsanNUOdxIOo3w(nht@T)%aby2Aru~m#t8X5uiGYhds{YV@`I)>2euFHICFPhGBDT zFBufbuBavwJSF)=Y}CVk2YF^1fUho#IFq8m$KX(It{@ zUXv;#BOgY4e?5nSqITq{?Jl&+L7*g)>4lrnv!T$CoK@%DYWUwL=dt2!-f8*T*;cgI zrKt>JUDCyLr*Si*qJ8vSUHkz9cFf>l$jo_dx+E-Khze{$4Wf`m{kyP{v4dgujvVxh z0tOcS)l8<-z}n)^J31+1MkHEFJdZIhN{8LQr5F@9sO4x;g+AB%D(LZh4LXelw~QIb zR|y^g^n>j>0H+I$%AlGRAc@v$Vb4wVQq%a*(8r>N)x7+o^Fs2@KP`rj53ZeqGbIi} z)Asp913O#OW~Nk{otu0+;w~?v;!_%>WPS~L&7}OkV|k|37`lfMQSx$=(IFD&a*SbB zk>F?&zVo%l-Z-qne7_|nL*Nbc`o~y#c{$1I&k&@%&BW5IrF!7$Lx!AH_Mx2Y$LpiZ z{H(;pC8s}SAw@~`ILg%HIFj=cBF!Pc0T?#JYowq6gx@LmQ4L>)sl3Sf_EA+1mcb57 z?nky6J1HK_9al$#b@skr6092~;gHw4-1Ldt>%E}%Q#(T=BY^hJPtl?t6Z5&!x0{hs ztBrn*H8x0<-k$)KBhwq!KVH^MU11e5Zo-$hR?9KwTat%m z65WI~VW-KH?}uQL?jKbQETc7sKYWLKy(1WHuCGlL$(O6z3s52A3m6L@NzeoHBws^# zG^aG?U|5`V8*;c*FU&$$U&BBa+@TnB62YK?vV)8aSq28_-Ui%tjJK7Azq!#^!=g!M ze%Rewf46xrP`wD|d&N~M-+J0M48vjs92SpPGqqLK{*=p{qLT_Okk&*-zJ;y1(^vh^>|r)(c(l@}eOk$> zY-x|evn*MB`pFj33HUGE7-Ml6f;OSNXCkK^wTu~T>})U}$ra8%3zK>=P{lpGMMQ(| z!9Vk!uhAo`e%-~!%v9wRmy}ZPJwBp2im&b=$}5-B6O&qfi>+hOXl|NC?>|^_owoxE zk(gIN7$2X>E&b$RE7LD;7piSO6Y3E*YroVkp!b{GVRQfusWpO)%%E|-6@UDpxf0!o zWx1oYsj11|Wpv;gWZ!+W_H4gke%#Vo(Aha*729C9iw+yn@ZY=Q!z5Kl$U)qAFxU29 zmN+cH_XwCeDFw)P^KR`|LLWssOaE~ce9J)90HZfAZ9pWMeNr%ojjI^+w6g~ zcc?9$ar68q$eq{LN@zPjW|~c=ed=QWg-$#M@mHFbvB0Js-^;QI+|lIbM%i-&H=pxE zV2TtBj(5pMZ0o=%)ybidfnSCT=U`6tlivDdg)spA2#6^bjkiRI1j_fKg2g)J;u7I+ z=&}3qScCt&*ZPn5Mwv^2&rHhp+d*rIZi%+0AHw3mWi)64o@RQI!xXX@Te2bJIfth9 zB(Q`6rA<#4#4xsoQuf{J{;q8b!6hST-Ucgs`n8_(B~=g!7H}{yB3Mb0jHlXm+<;4G zM(o|x!uCYBtA*DKlD_X~1&XVbfuAs=nLcSb>^%`9fl)m(4m$n4%5aCfI9r6srv@nO zut|W8keeTZ_0V`G$yDbL;~xwBxw!aq5v>Ly_phXZ*ko7#PhbM|Hz5?)k5V^IVg7di zWwr@_v=TC;%vZdHHCoU0e_!#7eD;1rk}nFYDEst}$Nu*>`@cBz|E+0_|Mt%y*P4da z64}-rhdXPNXOz>meb8+D2fFb&#)vG2KvGQ}(PUU^1$()_ zH;<->c@L$X13ev?S=k)z=^X^!Wyi;KyD9KXe&q}7{7NGIie`G*cld}w+;c9`WT2%H z2eO<0RX(GWlgYFBteU7CE3W`)b}@7eQ*sk|yj!a_aJ;QUDV@j>2&Rywh9xtahth78 ze^j*jK#^kDBsU&on0;Qv%Z|KGqo)^~9_C3ap_Wayg?8^LQ`$WD7PQ}n#ZsIw66rd$ zyNlwxfHq=)sV^Vw9(TSM(Z&Jg=|e>+!1u}y4sJ5@*1FfDB{ml>U!E(dPw5Ligkpr8 zB|#NTy46dxCB>=7tMe5OOG;fx_Qo9v1!Z?z8m&vmw~vRdpA{$1XvF6&lX3B|;BAm$ zz8k;h#?Kmph`>>(=v%8waS}5T{Htl%O#23r=%bH8s(-Le=#8ef-@}7E&SW~cqL3CK z1g=f!rDQPhn|}^9t;!HxBHFcCDX*MKtTP=Bs%kk-oaSWASZo0l({t!HErcnGaP8fC z9E&ovni2eAa=Hw?U-cEwpmkYEX#Q#dO7qtPo-SfD{HE&rBLJRAZ+D6Ahzxo27pZRY zy%s$!C8Fa{9JZgyF--#q`)H@&3M{+i9Tn2$PStB0TdTKO&Bvfs8s^-|@^e2W$z?yF z7BQ%4)!k;sLbCmrR!U660W!ngolc@Yw=h({W&cYtO!UdoL>IE->UVx)SDF*R!H#U) zeM|Qja=Qglorr86j-tTPg+>9yDOT502#PM=fcF=CAJYm?D1}?EHDB5=-lEzG@4R_) zpG~aQ2W$5M*z}!b|}jGE0T{v+}bWkTNSe7k<$=TqG! zrk@C6zg;c!PE9=Rk17Kk4HDy*5S8LgtiB6B2Jz*3mC45%X&5#FR)DP8&x(o`_dhvs zOtA#WWAC@B19y^(i##Bsh_+d zVuXA7U4Nu+dQPkcA-KS`c3M%6qd<^>5@zF~PUg?@*{VZd-2`sUz{$j{ zlp4DOh;YXtQy;?py&p5P4;onw)5QZGf0W-*@CG!s5O8==a7!jj;^{I_#B4H^v*0+N zsNL3%R;hQMjelj4?c&$pT1ztH-`RX^VbnC2lxmwXfTHDCcUtDse-9KZbU?Q<%M{w& zV35#E#Va-6{xnD4#8|1=;cXlMahmlKzz*t98Y7vGKCfXP1=_ncq2>a{y)O&4V`5z=AK#UeafWm1#V!fZ!Nct{tX&{{fqh?PXgEHyq8fv{6KF+Jf54!qVd$V@q z-2p&H4^zqnpd_u&>YssjBQHE#5B?xPZICYrUO9bvkWb{ix2^jU9jE*b?9+}eN8|!% zv%XbreLL&ZLl=`W8g(Nde^#JtTo(Cd@1f@VVV>)`r|}dwoI|(Qqo!=D#1nclB}nw> zHW3vUacz}y zg*|!E-IK!GbvY~cePHQ?&s2;Fv8!YXxA+wnc~KP*<;<_6K|h$=`S4}vl*`==O2F0I zvj$xe>f(V+LVWtQ4ToKqrv;29^*TE1UilD$gV-@LeXl1f8*l?Jd#W&2sXQ#ZMic97 zw$*~35b_FAUH{ghFC(#ADhCvu^@Y8+PZvBNIk-QK-=seb>W~)=Xz9^(aPrf9=k*TK zR$1>bQwr^}9xyASP2@kBz7Rm8!BEZx zG57L*aLe;Hv0-+0fl5qA^+`)5T$Pf&4 z5MMBLgNZBS!?r19Sf>1pYUs3NXAt&ScpH>8YofoI^Z%(B;eV)8_#c|AzCFpitkC|Waia} zy~beTm)#s8PEM|i%L{Vg&U_9CdJ*Mwdz{&7H5riWC!lw^_v|?j28*08zaR&ZAj0D9 zR1C<&>YwvX#>j_*D0XzL+b#ZizE%IJcE!xSjiISR`Yc`^J?K$kYuI-}ELLUV(`6Yl z-@U>~kg)lrRgOnWMFmpS<2`|qj)8^&`$^$o%&^1UK_U_8(A$YMyszUSHvqIgkm zm_zRmo^1?6CkAYz1%$aCj?Ko3-Xjarx39x`q08|{$Atopw>?*HYcmcGxF!U-SXqz3 z9nk0Anb;g4^qx!PE{;N0GLQ9=z@i6ZHAZMV>Dq3dx9z5%AQ!>n<)U$NreSd+SE$yi z)`(riL0Ik@)-zd>-^yaM*{2xq?c!AI`X4{b|BVIU;MBH1Fu6XtpG^0kUW#5$A5Qg; zvZp=30Ck^*rbaoIX%p?-fFABXZt}L%RRYD1S3&2)rMbMyF3VZjt zJCmn#9k*`EBBYT0tW?|3m@|`ObUAySb|^ z4u8+g?uU9tT7c)(m)F}-wQX$J5mzTmNF%|asDZc2A{q6pwQGTcISUQmZZHd3+BJ{c zgr6X}_XZYhd$0Q4|4CF{cD{UR^dvu1O}Zx^wDOz*%1W^3BZn~2ihq_+6%!NalH59a zu2s{(yz9&V%0M>$wxHkw`}(JAOJC6Ec#3J1a0z5uF>E#2uq*Qy(1IMV{Htr(A-c(z zOaEiL({w9Ks~p|fQ<3{|b1u`K4e4CJtDKUocdG|Tr|;>nYaH|g{Qb6(4qK1ze2%p_ z%R!E5WGC5zo`Ts)-2M$v`cZPC7cX&f@miyQJDM4?aGwf|q?l(bFDB ztIbc^v??uVO(B*OKY@X zXU#F>Y?z}wN_1Esr0mv0rtYI_k_};Z^YI770!Nd}f zdM{5fCa0)4m-RVe#hRaQ6?pX)bl(Cjb~&*>fjH><7;*g^9n{88W%s^uS4$|tKXLP< z>RlPOrCF8)rPEIq|F|z5m~c9uQi!T8)jB5Lt;9LOF0?2vb}LbAVz-@$(Ev6OXYr>+ zbrXB6v$kU+d(s!|7@ZOg=iJ>LCLB%2S=lT-X7}eDZLFSl6$@x4n}e*CkJ~iDiG?TL z<0VP8&6_E%rkT^UDNIM1;T%6t^OhVpXthjbDIQ>CToOj;YH2-eXLuGVaLV=sz5de zZ&^wF;u#%xgUWm|s%6#7im`98BoUR*3+D+|xg*0PSwhdZYyv}zjRFe|#ajAGq@oA= z$A#$%0|i}iw4#zjX3yHWHqFupteniLu}dL$o6{*_+~%r+-=zne-ycwpaH@beykGA6 z9PlTy^XCfis+yla+4OnJc$?y$<*Njgu4q^~I;WH)d02RmDBHFLv} zVHdDFnt7^j1UvX0I(n-JR+)2Z%c88#?@P0iQ;v3bwJowVTlhMFqc0gODI>yZW10YK zI|Cp3GU*WDGx%b)v8kOVPkg8@p3lg(Iy19Fi*LbysgUZmBDwEfeMrZYsIT)@g7iBJ zDt37!46-avkHwMJ)wjsVXK!s;grjzZh3_Ni0jCgBjUp}`%CwugrsCKy@-haQea`FR&|3d*hxe$IV%PFQ!#Ao8zUoQqt&GD zIrKf_*P(jzQC^3|q01XmA&H>i?>DK&P^;xGjL*ZepJ;_SExqTaEk?JT)v)7p1+cNP z7n|+q6Zgiarh;XnQv^C(j2e`Qbb>AO34|r|)2bol zwJ#%?0Ay^_GYd_v*@poAELfR%e{^JYEx(MV=sDQT-7tAuUnjyR4sTF3D%t7YS7|{y zBQ^)+8wSZlScIq3E`DtSZ;psKzWlP2$Nwm3@$j>ZVSlyLyYZtuKweBf!ffqlV8Vq@ zo6u8eUi{BwMnt4ez ze!4EUf(285;@f4n*s&4qDxLWFbnkUWrznW|kpMmY zAmmiXu-rOzw|Q8EdERPoac_!m#BRH4+|te5yeL#KcvZ!tA>%=7=)HC}J9=fn$Y=RW znq}8FnN7dt(Qf(T%XgbGE9=aeF-@Fq--F7DY{Gq-P`#H~umNeOMM~TB#!}g5A zsm03n&u_kChe3_OrlQjyz$5+_Zk!gm4~XD~X}5(2aWPr5M`+i3?y6}UJHDxR3*n}9K8@_~cNITr7fMAEDlTB;0xJmeMhVD=f9f~K z7!%D)d@r`-%=E{3Uy{eKHkx--f&qUf?}6--BNmWUCUD1Af z<8srYY8(S;kT$NL|6x5*34X$ka|PAxg9;V@paD5sg}EPpnBQk>qB+ z+;i?Z_xt@aU*Ge-U!M0l&+|XO=Q)4W*=A}fipSY1?1}sYnh_rhCVW%Z;ganfn|r~I zDfl>NXT?v^DHq(78~lf+Gcs8xUnzh)1U-t5AP|cCn1Ff7=VXM-8z*)=3v2K{qN?bU zn_tTNV8SU4=_>Dd(78{zcYHRS_E`l6+p(6h4s{1J>vgG6)lInFES0UJ2SyNZOrd0-auB<#HZ1cWUoc9&PySlkiU)RhT zPr@^^Fy{Fes|w4mXJlX)nLlN-dA0WzJMp!iQ&o4hq>(4?7sd3~S*7Bh2vTBo1$31X zh+>JQ=|9_%W3*C!&unb#9zh+t)v4aIqxkynwC3F49 z$*Sm@$@uS{pr6(oPnrZxZqCeWKw8IBroe$Y!592iS?>0dr=)i9d})o#F%6jyEN)Anyk(+0xwS{R=y9x@dlMCa1lqFGs)f?lo89Gzy zxM?{B1=B6U3Rha$5VfrPyc7Pp!!~~yXE%x|HS#AL1*$c<9bBUNxpTQvYnxLX?DjTY zIw`3_r!zEx_s}zH?dwEK3)4h2cWKZ?)!i5%^=mJ-k2kn>dBzb!m(oeZ*{hZpO zTk|L`Cu22ej<$6EZpNKK|BTbAM~)mOtT1~`=b*2s^$W+2AKyqhDH%LhRrAJnfrm|{ z%gV|&sVdUJ3i_B%y3gU&mql#hZaQPj-=l->V^|04au>Mv8>p%~2z?=8eG)EOyikKm z6KsN`H`E8=)A7LMKp1j${6@niPnO@<8w%Xjc-Xyb3{;D=9+1Z=5*~zR=k6;{{c-I% zr)&E0!O?P5#3FH%WAZS8RM!2HE3ywxlak8%0K8K2;``XuFL{oj8nXHQ++ws!^WMr> z8@=f9`b~;_9g(}_DT{up>DDw(=|Z7AW8$;!fdKY#hOEa6D`mAz8n}Ayi?>~Ai7|=< zHlmQfNgVA1UI}9c!=r@P0tRiEDy4{Sez?o)`td(UN!ogPXn=UMzV11*M*o5BVz|Be zKMczGA#?C(n*lgTYL_(Foo-+WWxcCdBM>gr>BPBs;@R`_6?%)eunaq|{idh@G>n{M zm0km5He#fKm)$Mr@m8Vj^BCI6-QA^pJ$?Q2&rc*L9}uWi;9D5#ia!1h<$)4W;FBm& z^vzZ0i@b0rx2A?@#%#d}(L`D+`vY?0(}14|gO0~pM}bWNA+wYVm5)hSgnm}c7eNVIsNvv_a|jMVs#<= z8Lbl$w1Rw8El%dR_N0P+znCq{wC_Xa$!g?xMjY+{s5Y65bmg5I^G6d+S$a0Z4kdg6 zRh1o+9GO#k_`=uUl+h+%P(eC)x3I!c{6t+^_F?bnjt=gv%2j)O*U;T^LC2`;5r>|j z7}hrE46Ud?715O&w4hn_Fvg_Fmk{(xmIHRr# z1DoFnRu79Ybu^#=IVVzNEuL0a8Y5Gb-H)_XR^HauvLwcffVVmFF!hvU^^!^{Y}EZ% z`DKL{x8w&c4qnfHU8JeCd%N2@IbH8LFg=0|#sN;)HrKriG06gcR5PoMC0nTcwz{^) z@9k(Eb;m~_k$Y@b5WTuCPU@&}u<~r>&hzpV+J>qT?7g&-!aw9qf)w3}5dI3l;PUU; zWkRe=Xj_OX23^V)(1zQrLr2KNd9UiB0^4w>>tW?*4KMH^{S}G&;^$Ngs(id2@V%A1 z??djbDwVm0IGQ19QCbJeYh`%_>ggpNL&Cz^Vj|CcUgU}m>{%K`>}~&xQ|73-(bb94 zob!Ns#BkO^H}8TY2gHkj5it7lP+-Z`_9<}kaYx*(SS?Pm$GHBexz2k%X}g@zHR|C> zQ+-gL?{3&I^uU9jHQjULb&Jl`Kh|wtJLt#m9P}g|PBP5R>xanXy~cuET)dOt+mUnL zT4cD>V^TfyHwQ!a-*2B$&%~ZqShJEV3bmE!pPKVbn=t%QwL1}`2RS3&xH0Dc4*m4F zPr_#dM$chfQLn9rTH}+31TU|!UuHtK+yNicJa@0_?IMQ zY#hvrN-^es6QhQz0I7g>f1abiQy#fubxtbGOy5C@D_wkPkG(^gQ_Z7(rqtY_$TzLj zXmF8RK-q~#bjw%!JwWhn%VW(rpI^9@!KP+sZfL8DK7$fmv#$qCc;#%F*0G=Qi;X4l z^!T6EZjfK`NY;LCq!WH;2OtTbzKQ1mPUVUm{HP^}v#gtkcX*a$i;vM72xQ!iFHn(w z#QfnR=1X+pia;$zVx36Nm{HQ)=o&l&4L6cwX*tw=s+YZZtuW4cd@B$l3@X-b;2kH z*X3uyh(MZ5$=8MXl&$VXCKEC20hk%mEs$HtW&RmA-JKX^>r);vmBiOTEcEv^nAaf>~?J~Ko*dJh`$9;7W3xb90 zf1{3xznIC$f56FK&_k9f_EN0}D0cd0yLe)fA>O$jVykzBeuEeQIJ$ zR3YtODw(CqYTSC8Xzc$f6B8gpj(7e1opj6jydApupjpXxXX6IP#oMcs=X(G^R1~fM ze65XS2$2Q#$Xf7C1R1w==P&^9aVU%VR))s!uSjq&-bDk#|0W~g-V^}H%s<;-xL9y% zv!I^Jp<$B*g6M<+?Jp%T6gUS&ie(5qifeMnF#(64)dtmPxuVw9U|e`X*$xZ!vw?Vk z!`!j^sX&~kVx33aQCvXdR$svwD!?*xW@TQV1@%(SAiS%y^Pk|T;3zGPfQ5TSazoOa zoEGW{`-uRDld9|Lhg?s0vbydLSGouQ01>IEXDv_t9Ft`(-Ov$_T6_NEBCAW3nK={# z@U39`-|nceJkZz3=RZidfd6^C|B!`1j4EcVdEACX$n?q*>PIFyPycLx7wwY;E6W6; zd=4^k0#cCJ8E_g(fbFOx&6d#~3KuyhMyXefkcCiq@ehd$1E^>5AcUa=qu_ z-K#fCYSPl!SjizFAs^qEq?g;iOit$zy*xd2%TnDwIPl*xA^$kj-Q67&6jWbdPft&O z+JLT-`|i2*7>~~T`0BNZ@$v2XiHX>ewh>`Je}8`)o1&bYoS+~qOn|%o{!d{k0{ZU7 zX?2(?ALmA_ynHOIgh^|=o+l`G7Amtju7~%@*3-vF`=EeA-F$+Oxq8mj%ggJFBTKYw zX=!QFyktOfc6PS#4RZhrnH!zoMt377qY{>GS?BarS64T`zNBOijB<7>q2PDa+==Tq zS5{Ug03^lh;d`W*EIF_RaZnuasFfW zIb3=c*UPR^rtjm!%2_f{8B2h|6Gwj2205p4p1A^SDAqU)9u^sZTU~fX8F*s5l@-Up zQ)4-RrFca*KR1``pwT+2*Zel`#Ywxmy83$#tx(1Z;`HtWDqB(b#zxZddpuFy6oG}= z*-EUu_fsJG0B`C1Z(1c&Q=1&_mX?-UKE^x&74;cnk1L;kBlIv5#0Ct?luf})$_}f+ z`IK2w?+I%h`05Mcx2h{f^hGv-UyiGe0eCW-=_iPS(Cjq7{8N9)73H_7V6dSDfnRCS z@l0m*6qv?w8)cJHGm#O!#HcuO-RcfXFl4`R5CTaH^hWh}1d-8H|cP-l)P8yTf|?I%!ZkeB82Jg(&YXw+e9<2B&J%et2b z#2+sN`scu}06`KRaViQxATT+kL+h2|0q35Thl2Y0l=t0t*M!YJHzgDg5fKrOX@PTr zYQ8$Il-Gu{72^)l>iKy}nBJ6QtZVY!#8?Qx`^V`;ZkxCt0T$-1QAO!$xt6;{2IPN<<0l3t7+aEJkY!3#kCB z`Xr;Pvft^R8)E~xX)@fCp2k*QZnlxM@-ZbYppE&&eoT zkmyN;Dvm^#qX;~j*@Sy)Lz3_B6I1kldB_Iga7&7<5 zjC^F8glQB7e-uRJkioX7$~uj7Nr;LN)eBzwv+WQ{o4&Nm^b6&C7>DGE&yV6g-Ewtt zkyBBzDwvuQ!^d;f*48Fh_W1UmjhkAo9 z61iEk6`FIF=xf(_)Nkgf&iB3jsm0h|=4? z5)%_sTx_2{n7fM{eA!M7{MuUgFzsk4Ff*U+&-M=F_J9k={0${*E_u&0ZfYiQ@C?*k$^bwPTkF+M2SEC z-tD()Z{wxh70G_7zR@TdkE0)g115hIV*ttW&cs`QVE%pn>1*=O#I!6wtI+Cs&Wxy7 zU0JUgjXHe(LR3}JTo=6(X7`KdDBrYAC`}xCOuGDZks!x@?`}9k zGe2GKt~=*O7yCM_$Zxx}dM&pT;;_HWU(Y6)*TDCs@W!%ib*=6_cIJygxZQJ5;j|4b z*L26n>B-}kJ(oF|>C(t6vs5E7VPT_aXQSdZxtxGSFU#JJfkda*wJuu^%Fh#a(C^SD zUS}G6CmZ3a?PlZsdwNOlu;*ktALGH#7J5kKBM-`x4?xM(`DO8@B2Td^*K};OTBnz! z4>zB&U=RMh*v3{CHKcK_bg=Wm9()Gla@Sj$>JoAL?nF#kQ2n^1O6f0r=o8FqNbQ@rDo0&o>f;GX>!_|l+=F5h$V)ii2|Wo&+F3Sd zygeqI%SEYW6nV8)U|mK&i5BXQC+nWkN>jSp5OS~AndoMpl&ToFL@IR+-=?}+ zldX`1eF<_k-D0y+#?;gs7bc;azs$8Y&F0_r`T03aRc$(VAP!reKkf?x zh()NQlt9%F)kbB!eUC*wl>A_ z2Bl~TtC*SVNawinK6@%V=Njoaet2f7lvpo%cijQgKcSxZXwM>ti1yUqVmVXL2rt9j zf7#lE9G&Xsn|*smxYCxng3te4r9&>5HxM zBFurn`;OnZmD<>PpLs|={JvjscZl_-eEP+6#AuuKO=3{LFgO)n;`=b4n5XEq;Wr5U z+7vfa)uhR=!Xkf)A5ih@=G)3sO=`kJzE(?ht~#;+3dVc;t*R3X2S(x#sxMi|`xnYk z9`0AkKb<1U^iYw(FMM=eBwA%u+FH2DiVfDR-le|jZ2^+uBD&QVn&JyISe|M$3fCQL zZY6fN*rg2!e{P)PDZbX)A04dY$zyUd{$12-muuWNsf7*h$ei#wBdm08$PPx0W-h8x zP^Ln>F6@#{d%r}bpP_HU?YB=dI#AtzM5!JoSkki$3glEp zYDscht&}aYBDr44JPv6yHy_8!#-@&Yzs@C$O`WP>>`?;HPyaJgzoWNlS;RJ`x*1kV zcV>iFh3}E29G#~VuYFWr%B-$&om&5~##PC*JKe$kQ}U>~!3KNj-G2D$@j=U8IDS-m zs^7;02fw2evtGo~TbDm-Hm%2i=(_dM@Q2TBO_KH;4u{H5Fx@FE58U;-63&YlkHgD& zvh%yJz9t9xs7}-)f*((2G_TLLM1QiIA+jP63H)R+;o>?!Y3q3J@h$KEyrkadcic;n`lEq1sT^^ZtezNL5;Gi~5G+}ehy-OrU9J7H>!+`g zn>*mdSg7L=hy6&Owo$BZ-&(oRQXNpgK-ut)oF{iUJ6mGno3^pf9zrP~*UD15&i)m= zaVKh^EoYe1te4R+$^+#7GW2grfZnjP@@32UBmA|8`0q|KqwWzyZv#8t)DnZiRpJhQ zu4^Ou&7jjff2bD6Gi_h{Y>!7!X{-51(8ZI_uVVRHWlctx_}c0n_CLm_{S_}RDk1KE zrE04osh>MdLSg)(CG}yN)jNv$H*@xP@49rqoA1p84-)R=Q7c6R*acflQ*^!~TN4j? zuvZhbLZ`N3R-c`fy{lBeDu7ddR-Ev&Ym$D@>%NQnOnG5Zg!)4{@=35_aHzj;YTRhl zC2)PPi-}pBfss?Gi$R#|LCMB7IG8+g_e+4$&*wQt4&x&7YJX7s`VZhP*4XHO=K}gQ zimZClR7&mb!^4RUea`l#AQgk1ol{*JWm;a>lRo>A9@Za6jQm7e{2=E@1&3q<>T$ZS zfBUqH_SaV}Ega0``0E2QIRcWw(2={kfMtZ{+t9o7^>XFCqL%W;uW1(e<~@H4Ci8#b z@>-7+=Vh?*QZ@_dd+NNRe{J{G-wA7+x2~wXlbXQn3qmEIN_r_Do5-kM zPhA8OrXh%~#ZBBk3vT5On@u;qu)zUop4l*-I{P=yd^F19G^lM}5JKHqgkocSx&b*Z zLOc?4ppqHiCFkoMI1=PrZ*1R|kr%7s1o1WbuCUex7@c+Db3~pV9_N8foON!e6z;#j z%DBTn22$`lEU~}+y&~iuCT~qYNnAL~XIOBbzAgIZ&1C@FU2w=~uCRmtk1C*@@95t? zBA*+LGU;R^U$1kUlu4iSqlUxU*24~$M9`9wm~Dl>F+H%V<@W3dw$MQ6%G&xH`flX$ zPam)rES7I~Z)5!49zHq*5?V-i(x((37i|pixNhG-j{i~T6K7oN7(=wbUX>UJQ7b|h zK*&X~O z(x-p$JG=h6raYNTQ?8Z|aXTDi=1sIr&rVP3@2$;ywSQ;Ghvhe`$V6&!&=%daQ?DHq zpJ50~D4sYUgcfO?act1=9H^<-gP6Bu8K4z(<rulWB3Oe&TZ$Z zffW!==`}~|Nxi^=no&JRR@jhUN}I`|!&%zi9;Hp$4n?t5KrMc`)9v|0j5yvLHwmTT zSBkMdowP_L%@a>WNt!iwhyw0zC8yWa(%Ih!CGCU+R{i6tZ{HbgXnW`Q?$^N`5ZGrhneS>} z4mGf$rOgg5SS9%4+IsJcf%%mAa_!e;Jn6t{#`w(hL&7P&pD7TsL+X^c+MWOy2UUY& z<+am~p-6=+pZxj#`*!vlSL+hy{qpfYsB}S2g|q=V7*!@LPz3>0Jej{XSCs#?s64^FW{v zXnlQydI?fv*02=bYE(X9t94)bm*@C4`6ZiPLj}#~_U=YFO9F?O|LLDZ714=#r#1uG z8xt~50@8vEU)z47I(+U6z4LEYL3Hmzh^{L=+)Qn&Cgroo_oT2zqedRL+&OdSd{XP= zGo=lk^)#xK3eb80=X~HWYLFc((%DZBe}$vhG9}~oPNQw-(g7>&xS}}hN@S_YE@fkZ zhoGJ61F%Bs3A%yh6(SSRvxB-P7G(b~jHL3FzQ+-`yPA)h)=E%?)&#KoI#9ZxpNW0Z zt4lT4Ec2kF$-;I{bePSIJO4RC-N5_3p&vsCMxoiIBbQB5&8Shnj?aeU)ot(M5)O_VA%k)sl<3D%uH-3ges1Y|Y-BsuyqIdraYP)}r8h$FSGmgi4VH34Lex z;*0wxDrL)>#Ajz+(fYKN%C0EFvCk-5 zqHAvW=$(<*e)n?^BI>)_O5BPTy?sy*ftSm8Nrm=Knuz0VxF0s0T*IFu2m5K6$Yysd zrt~R|rk7$oC^4bTW{qHysSP(;bnTv0phDi)|>h|`FP!2c1*oq2{s9uF% zQK+liGV7(&h33pirqJ>4;o(Amx$Gneg9^I4Oips!d)?-qx_hk)*DUbmBND9&G6msmcwqPuH_cU%6a zW6iv6DoK3Zh(+MTcga}B)`=#CnO~bjUHT0snVYrqA`)P2Z`bvV=)GXPznwXl{(E4q zvs>gtjCR_-^I;u)tv{~_OH49_*g%$4SAlI$&>Y$7eG~}3n9bZT$+|MmC;`11X444& z0OVKj@@g{nJH_QS+MZ}LHIagCp?@12Lp}lX(O{pas9B)fOzVYFK=?Idq~G0gySu!wUI~| zQ>UlXu<1PW*`=KF+MRLwlN{}`jVxLmlc}z$CcnI?>DnH8$0+QxpP-~0_K19WZOv@{ zhw&Y@m2yUY55x@dOAKVcn8F+AbDAIZ{6sui1snt$*I-n^=CSt#I{U#~e0+RTCMUi| zrHgVHws^i}$d?THoli(D=<9i_?_{i?V7e?f&dj^}DDQp4-}mjwBop`0*=^`B^hLpF znqdWJI>II3hQ{&MD`EOr>c?=wlI;hQCpoo^UKmtNPcTV3G0@n+*jePDR(PGTl%N`9C zomd9jx|Cv`$gZx9ugt>!vq{m|J(d0&BLpIx`{xl=xbDJtyNDg(a-C_9Txq-JL?*Dg26f~J^- z5Q@9+5)U02d->~pHmM8=k@59yvBB4_FtVX0BSY@VxC2vyCQ@MtNW%p3K9HGabpH2q zw$4b8ixXjtj~bT%!*36c`_k$DBtjtPk6e$+suGKroXGSw^I z;uWWfqqCMQ@N6rX5W%ineSU#JiP~Qrg^rT|q8Tyk$bJhohB=Mz)Bo zKvlZzQ{$`N6l$np%acv2`4+dsW%yI^?2B(D+U35tXIuGf zEw?>(J`J}GW?PPV>T(m#^I7uXw%eBLshOT`Fodb0Hn)24@&b`ZRgAp6*c`TB%pc0_ zf2gUc5%oAH5Dqe~^RzJ!CqeoEuFg>6`nA@A=CdEL(<4q|8yN5Wd)~qrA2j7V)XauN zy|;xfvLb)Fx*Ws8ULfjFPYaxW@s^WAr(p=roe*yHxKgrd3{bCFC(A7FZ!6}-urSMg zxu)>Ck*SwJm(Er13`dI3WYq*h zyLQ{AwGSwHt*xb{d+NJx$d-lBHS@oP+s#ejdVFKVSux_z+WapBNZ-)@wAr?~zoxQg zt)JUP%-p(DTEy9jZ#|R0&s&%fU`KXjnq>}m4KCXM`ms-m9V8OiulzWHHYDq9w)8Z? zBs;a?&y9!g%|t7Xd_1Hl_@JJmi7*0k(GylqYrIjt7`O{C$?5wP-=;8jR7jS5t6JL(tgS7Q z?(zh7WU8&l)Af>2Uxj~fe!OC|C2;0%_!U*$=-n)EAJO_ud>F%>e5AAIJrk^_t!Q>w z@CK1bFi9prT%GVmkT_-&nc$yA1__w4WaI`|{&2EDE$vOM?vdgVA@~A%v;NdQ$++Gl zDef6fqv|KxlroMh_$ADEf%`Rc_+#S?o2FHPEdi#9W7yj8lMOy}wP*r{trq8%JLrSV zbtfzGp+e&@3gdr%72AW&pNtK4QAp-GkBx9Tf_9DE8C#gEI`E>*qFwO~dA1`9%``|B+Ju zzjEnMR)&>CJQOxLaXrz31Y6p1qDC$UPXo<@kGmBCZfFB1dT`NVK-MeGWEY>vjW;HbgPyAex z&*xyy3I9|UeF+hc*t2+;a>hoZ@SnmSI_JNi>F5*hi}}2}y_*C9W5|`>L;f(idQ{$7 zj|RdG#>EFWuj(iJt{j1`qY(ZSMY)3qQ(gNop1uW}v%PqkP2YP`LRq}DxRW7Ur940tlgT*8%K#-4Pv6$pnH2PmX}Gp;>xTPbaurQToJYuY$+7~`s( zPbD6{N(~c#gv0VruO{J5Ii7oRB}>t0a@QOeQM5V^8>T1rZ-biew8G3hX}?d5IBDv& z*3D?Dk6gYZ$m?|!w(y;sk4;IwqU9Gh6&BzB{`38X^^u-%t3meAd-H#FDP$KBUSwe` zthmkMuxj;uMTHcS2w|#E@AI-qwu!Llt%NM5X^S1rkj825@W&PH=q=lqKFmwZL5t*L9PFFs8JIP%72hwc6u#-U-iv zawXOjoJxmz8TlEHX`Rai^`3U?H7-Tb>JQ@eSu9LyNFgw{w;)=OC+GwV8{DV$#fIU} zAhqww4XfS64GF|sY`F{Ta-+33Or1&kYBlKYKEI;ebWnd zTgt*3-$3AI!25eY%N#woW68TA!*D*$f*G*vr)tbei=-x?%u>_>J)!7^gXAvNonnRN ziN)7lR^bet5BnXh=DAkK+V&ovkP0P40-qP#nT2iZWMj}OCh0N5T@T=!E_xn>*mfny z#RZ+ey#7Vec=DGPnyu+2#O}0Ofz*?`SP$*!=UmZR> z63<9nSdkY`*`j(SE8pDY(xN_umdAsgw}|(v)=SO8OAO<0Hg|=ExpDlyf zb9qG1gNQHzn*iSbpU#>8Z$2RUBDk=yI5$_V%Z>H{;P{sY3O9q0lOn}sMiq$zY*Cc6 zCy3$w!FM~t%U9#8tB9F9qox{#kybpZl{`C_3+UAYL%`wIym5I!KG#!|j~V{c^`Mdf z-EP3gNQp+EyuZ=#g#szg<@Gt4z|T%U_$+_I-JxGbI<(Befvv36!*Ma~PYl=jlnZ}M zxzj>ZU{4gKSas%`iq?STAYj2A1vVK$Fug*XMnW7h$!41XvU@xx#`_F&T*ImK&dkBz zh@JjM->Ee=F?DTq7j*r%>MrDIoy{0mwuPOPDFzhm3%RtL=(1j_{vxiD5xzBogx5gK z7C@#-sdkgQ-H3pNW~uPyQ3kDPzKnpQ9R&^o4|kwSBPgh6Vl6_M#f2mDcF z7x%Ufh+4XPEU{80d6TV@;eS&W`sn-eX;;|K=OSZ%ANF7fT z*wK!hJ96q}7cE+(%kHjc3t(hqh@iL;a)_lK&ljILM@@|M^nk9$o&5H0CX(Q3rK6Sk zi)g*7s^-KQbX?ohVYykWAZ+!&-`B6puZzFoo|s_o?Y7||Z)Rs>CJFD(|5BS37cm&~ zHK-)KrU-a(0A?Ice;)R^0|SE?w#9BZU+rKQeZbHz-wbXC|iBw?6PFC$?AegCBqvd^2b_5Pkn@~o!yr6_3hRA9S6elaZ`v z4bV!Ni+5#ps$`n4XUF$X+kNQD3k56q4|VEzZ(>;XB;Z<9HRNkenh(f9$fxSUj~`mdf`5pqlswp7Cn$ zUZ;1mHlX1_h7`RZQX^Hd{!cA`KRGyE9vj=*kj`nWE)SE2l6{lO)-KWXBE#A`-^HsT z`v836!JcXEv2$LX|AujER9b1%9eX+Ymnena6~DW!Fq4^rQhNR)TPzrt!ABrS{v7US z_Xl|>Fv+a#dQm>cgaf~Z{8X&fV728OrnNOBPAW|?LAv$0&FQg3EDB9cz6oLA&HzW*!1dT zt``0CH3vkv@UxI*=e5kXOUbA>Bv=R};Cee*uCet+h)P2enH$r${Ee?n--ah;2=Y`@ zccB0%tml4tS+qu4v6)zu#F%p+j=hW>XR*98nzopP#P<-_s*Y7>bNI<8MbQGJADUyH zdl2=n$BqT78aRr(-(MyJhf?^OfNbvL@5v9>)u&jgF`Y3xsi=v*m_-23$t6;=376(n zre3GiaI5qj#Bzc_Q<^@7v09ueQilEn?SxDN?OmMHb2PwVBi*8N$Do@OaE*5U)DN+yOL}scc+7Co$K_eh4?>bapy^`531fos-bcFb)@P#16N2tkbl)l9xm0?J~ zxv_D|i5OO14RmuoJDs+kBmwjgYqPL2xf8pz)Jl~i!=<8l^J}xq__bQw?GRV{0C%-i$%K{iwA1K^_pE~w ztOw(Hy~*4K+bDxI6z8MwA9zYbzZoC3Idrv~6b-Ig3KyDoN!#leOjIQ=<@i*@#ZeH5 z#6CM1`B^<4W2n!!X`ZV)H@nnyj%L(#i~2j1Xy55Ia10Ja3i|!<(mYnV84%m1MXHXR zkMN%|V|gvMnxq3#NIje;>TSB(k8*m}Nr_qYZh03FJf;2UPo15ffm#$ai)eeRkz+)5 zEz#RYLX4<@p1S&fx+hg=GrN%tq%dywyk9-rV^opmC$OH(_cHf|ztV#TI2#8ZpH}FS zejPsFn+KDxU|^tC3;TkM)KtAP^&*&cv2u8T7Z*<6@#^Yabux_{f4v5VY_D*wvibW~Q$t0Aw4w}{fs_=U z?fS-+T%LLpygE1cC&^20ZhCd*lgF1hkH_6>EQid@II2X4QhD3FH;&_35(_)dDMcy^ zlpw$D?ym#CTfOSMOa2ob)3UNf1LU5#3#6bRz~0=P363bp&+c|@(j~hR)J5A?2iMfP z>5d-zE@shf%E_y!sJ&sJXDA$i30>^Y6ibqN(6qIrvF2|+5xxn%HQ+fS zt7bM#Vr0lx`xBq{YACUUxQ@f9`Ss|BKk_ft*z}E6ewo>7rZOl!miVq!vOn75wQ2WN&y_?m_zfI05+Z_sV+Na((8udL|}0WefLr?rRyt!|e7d zdV22-dkYFOguGh(7KqU9Sm7v2OWU}L3Pex9{k_c{xr&NYJ!4Z#kGq)I{c2DW(Z105 z>U}I@^{cS15TaU#iE`PjOAmxmzVyzScce6sjW>R2_I|NJrhTmw0CIh3L1Y_9lx))MZw&g>}2o>x3jJQsgoDaGB2{I$+*Kf5rFIO>WmQ93V5`hJW zMmHGdD-=l4q56*m91+SukH}5}5ymZru09&}|rxzE}LcMD!=cWYCT=q3Rtoio! zH;QKmht9P-UNKqE6$!JH#;{RH4p!C(g7PcWL5*H85343qag#>SkN=Up1&Ciz|NaWB zy-PX}*>o7^`+c^RKl;d1cZ)n5%9mlP}@jJjIC7 zVPWB$OlWj0#Ixq>L67jveVs#tbdJq*t(@j(rSyQLgSgG&IO_mZ;pU!{y;Us3N*Qgc z=&%O&MK1vU%{e4Q+Qqmb`ECJNGU(BqB)9XCIt*0&lHCVP( z=$)_Y(`EiCK;|Q~N%w!8Z-C5=+VRqAi(_Y=|4Q>aoo75QL8z{wIiDO>#wnr9p5a-n z!zZN_bxZ?tX6=+{MoIdhwT{-#C*)kR`{16SeL@NdLSKL8Q}!Br;4&d{u0@lFB9$HN zEwN_d>Aq?K*vrh>wgf|S-1QIUswDr$CvAQ<{*w%GB1G$f;!Fd8|J=hFB9TJBH;0MD zu6yn+DAt5f-4qE_t{58RxZRWOi0}a`O>}oHbo75=P53Y}pD}NuTJoi7jx4#T|6g)p zmEng;Q^kwbx{$c=3r;C=Y--$*F7<1P+&dP-BEJUT0&@?S3m8Wq2dsZ`?`*K<=g5|R z|N7}^QKT=w4AVdoO{y3hI+3aQSHJAP7a%C=hK-!Zl?vN)S57UWi9B!&v@&;FR{UaI_gGunSgH4%j%L+Y@nC~g7^_z{O-3N|#MdTW}tfuLvr>Bwh%pWBGsXG0e zlWai#%L44NTkw6lhvCqgXdv($7NJ6O<39NEKQWaG=wUlnEeaSV>gt?cJ546|jZS4- zO~B7Hs!Na_EhS1rUs|f?8<*d>&+?4Te)!M~&mKn*6+ir{LWqSj@>6pcXfq9*8>+Iy z*;1#Krg>Q_)@av;E}#|Ag#6bxC6&;Mq24aMf{LjFm0BZS`EAR@nY)27$gE&8<4dvz zRRgX1wY1}K=(PCnXIS1z)JBe}DzD3}Urx`?!@T#hB*7^%PagjO_huJOOf0qP>dfXt zeNwR=dwRpYS0^Vpv&kY0>Xi!y`d}htK0$_4S-Kkd$yg2{7>!h&R0qmBM;*!{bc)+M zZ=9?1b*x+m3PYUOw0)sLW4nLL$n{#Mc~McX(cFl)l+Q|VW^4FVpK{zy%Db7;;0Ds# zqYeCRnP8mDz}KyT*tuttfr}?$AB8uz%*rn zn4$D{S8kc7yKP=S-{yhLbK2Ju&5GEfW#^QkMgdp5Q?RaAQehNDHeAWIY9CFE{69%p z<_GDlZ!h<4;rpgh##RGgf0KW9;EZGE5>I5)&{K>rC!y^V&M%xWd{dFFU7%eiCRgKb zbD}Rkt0d~iR#_8QZX{-eIGp(OzSli5XBdgO-PE8E~4*ArJizugT|lJ^6e@i(zt+&g+2J0EWvPu-f! zQTi&5Z*!zGD=Osk-m|croF9H{lzjEXqmeME`m~R=zKo;vvN%ovUU9hv6%r?v!+%iE zr-fVi(QZp{drvj(ec_WxX2(0r3f|O95%`nGN>bVzHiI*L3wkUjkSd`QgKsUUbR|%_cI0}w?b3#=(wi}XG3gadzA|H{biv{c{ zDKpf(9xbEb#ly$1rxBGV%u=1Lv%rs5m8JO}!yVCtT1BRTV>Jx)UZ}QVU^)x`6o%&` zM>k?d8q_7Zm^!mn9`l-OG#|44)iR4@oL$Ae%=Z73B8fXW{WqWMD@Ksd*r0fc{pV$S zGgYRdEHN@C!DjBL5teHd!7Fm6Z7;4W+YL^&2NN|>tE`515T!XEuuX~++)@HNXSyG! zmg&+N6T*C!M-f)ESC}=zWZAgacZDyiS7*DtXSb{NUg1KDg4?jDTp;j|RtejC_Vcsz z(6)5dLd|O-L0w%veHa^=*{5(Cy^)LCv(MPe43un`Uv?@sCc0~x9H?Ll|Y}{ zH$%?28ng7vj1ET)ukDyzC6n&`y6c#ohr(fcSV$e8gT}K}Wm2_7K=8z{Ve`5PO0}t= zP*IB1A+MTXUj`bTvbwgxwtOP8xQO=(>*hCQzJj!Lb1I863ajB$W7pyiVdwA}RynA6 zam!ssV>?^OUx{*4!H&S<)hp+XwgS56gg*^;HT0*&{#x#Sw7JQQ5&zA!h5ArFypW~_9C(!tpu%dzG;GXB@yqe52`+o zj~DJkPN^=uR$)6At#W}sGHQMtaAQ-ao#aKW*&COGzIcX%aQVx*NBG1mysdJciuB1M z#%LJXQw^GAw6jez6HNXyp^aZ08~VMfyevP=|K@2pU}B=vQK45g``ZjVnYyO*XhM4CnyFyMmy0v7g^O> zYo0$<(UX?vGJFjH23Dib-u(w>7JnyjGCuP0=>6sRLdK(22L=$KhBhn4$0h(>L)bYY zF@`@iroL<#=CCF95|n8uoG9l4M9CnjOWjLyeMr$EZB78FHX4eQlMrM<~g4VuXrbJ^cY-74up6|$4ru9ce#h)}JouDmU26;n%;@pJt_trbi zD8E^jk&zkEKP5aH^bhzdYyE`RO>Z%DtylcPAFJ-+*1bD(#cVb;f`YSF|H3g}3eZR~ z2w%DX5g2GToDO*g6cgZCFQ7LT>r={(qK0}@2MGD>hIbhY0XI)qxcZ}E_KUt4?CcR(5aq;du(^&yKrbB*Jzv3|mL1kIXE21AI-m%OAR1xf(*#+bT9( zTSt=h-5dN{3FLZUEAcsX_{+iA;v%%L@Yi>F_MSbsF%u_SFh4P+SOM9h4AQ>W2eqfJ z@i2+;NCAH-8^MEcoRKje{W(qg;Sh;VR+!62X=z|eFy)yyG_ir-{WQQd7p~sAS&&Da zPCd!Q#HLZCnL6_@UhW5Jm6T3$Bz^w8%BO&{L%Z~<#^r=B-@iz+cw%qvJj?LGNDPRa z57JN~pDvKX!NJ)T^f$5k*cBXGplFpD)8IdN$+-5I_*D-J|j~HMDALJEfC<6W#<~@c3N+i#Rl5YRR%pSSeMY z)kSCRC5{KblRhWm%pReyKW~5a!(Uw%78Vu8n>b_(pP{$L)1aGVmZQ7Z4E+2aM-2$W zFlb6#vVPU`zz#RbDxK1{t8xH2*c2r<^hafCMCQ;RY;~nh{LqloBd%;(^@(94sEKoH zoUAFXK$DExIk4OhQH$@`{W6q&h@$f!9x+vPE@_(9*ed<=Uy&DRSD;*d|3T76F)H%)m8*pB?Y1dqZ-if+cE)#6h+ERdkxafmSirxzsTyiC6)hQ}{cyS#LgWA1hxfiF=;UREF@M>$)593dgUaXXIM`T=)u6F& zV8ZP1&(=srxM?Q5&fM@@l!^0WCsoGh^aAuZ;x%+lSl1qjHcP%sAMPxU+GJ{0>vs1y|XeC|Mi0mHK=$0x^a zSH~>7S7wXXJKR=^Q+p$6V(&=8waV{GEHnqe3w#Q$u2|%5m)C`T^5jZtJ|wg=&>Vijjz#!W6M# z(DUToiYW6EtASVa!5I&{_Z@+|xLmGYSMP@^9*Tn9V^3|_TAx)=T^7J}l$CLW?`lUBkUrW@W3cZ-^Hnn$Z@15Jt=!I`ylQ;L>NWHhb?{4SrKMAr4 zEwNO4XFcs*zcmKqYRwT>HsEV=jVk}#@sX`#5FHlYP0m>GcDea6ohLoO84r~6pV%w~ z75M1J{buZ2E1+F5oR0eWT!2H?4h-is`g4!11)c4eC!f=Q&m$$U0qJN09TUdYntYoy6LUs4NcGQb)Vwcagx-R`lUwlSM7bjp zBsgTKGkTM7(R($e5svv6Wl4AZm}zKTF~7P7m&D=6j$Uk>#bSlUT=M0(anuJ@Ak!Sx z(t$>;ZH4U-hGbC!=SvZ7{Ql7=kg-JqdG|3!eX?ctpTanDI6S}+ z@}jpFq*Fxy;V<_uApUg|WAt!%ZtTRlfsZF_s0E?R!>emrIsMq#>j zM#s|S*$7RAXe%NuQr2kZAtjk_5bf}@t#(EJ7U}?pzxZ7$84<(7u(@twOzQ9FI?yoL_Qlu_@`QxxqaE$SEGAZGXE#egIvIK+6$N3<0hZ~628ZcLHp**BsgdR? z*bpNcmYV_&a4pDAEJwFr``~XL9YXEN%FtBA1*K5s@mBm~=ALAH3{)vRp(2uu6nL)b zSwmtt?@@@zTq(c1d9hXzNiJ6X0Q6G`3qPpuNH=VzXQWqMJ3B&|TUnatE>>1on^J#- zPwCiEEX1wT(X?UvQ>S<1NsXU*g2c*a_Nc%mMf;*kH$w)@Ba_3(6^}FUZ zr?_k$s%9b~mIA)|4Zuw)pDDV4oj!Bbf4UU)y`OQ9Fh63X;k<$eZI(Fa?#}Kq%<@i#TWRg*+r|EgN@(sGiW!^hT0Z)mBFeRtd4t z9L>~1kL-l%m{=$nc_`U9DGX7=kYPq!(&zh#ynoS#);?#gA{^q#e~E&3Zdn9f=?@qW2^_e1SJe|p9PNchfCd3#;d5kSp& zwoIl<-A7t)V?;_+uA3w6reLq-`eGh^4oyKhi06}%^SJ*6z2ozS)ts$V=EUJ(E=QK9 zmN>5liJO>R5{Hgio=1*-Hls;ELFW^r--ET~wzC$zm;O=f#Nx;L)eKj@bJOTgjHymw zTmns9(y4EE@*B!;>5=QKTGO4(JnN=R(HuU|KY@)*MU2@r4SH5LALle_X#Q*hR#St} zv*2HhGO~p&WJ2;IR_crJm4@ROspCJwb!8@BCM0@@BjE{cQ({5*M_oCcgJcKmjRyj^ zH>65k!^5jF@`xf^ay<0oB{xt@K|Sh(7*%gGSE_uzblJ#bRJpN-YBQOUOJz5`qeeHm zZcjGpQqvyQhggumo_4+rA-VGa=^BsjK%j0>tLRgnkZhhFSoGR0M?C5@`V>?qJ)qul zIsl1MiN$d<0RE^#bKXse$Xa0YbT2bU<^I`AYd+_E`+UC6W`DAFrU%!WgyZSik#)s> zZyq3aKfhED?TPf9816WN<)KOM?yO;+6TgJVnwHgisFojFjjq5ppVipKaB2W*kdv(2 zX1s$84yW`TfOiY%UUM8W(GP+v>(O?zUk-Ln1NWZdFhIt0ps_iHW!%c6c26E0wkyQ@ z;k+K>9-L^_laq6;*Yj4tt1!7uo)WlzF406z^a@_3_rO=33lC;ntHoi`zH%~2`hFxs z`bf4uT2sTT#ek8Dua>F18_A>LK++A-#yqi}^V*Fit|T&+0Y`aIHX85M*^=w^2R~uZ zs&Paga)#sl2nw(dx{iUFWUb2LuNj@c=b?|1sDAeJwerM9{4{C(&AN8EUrx2PnV8jj zMZSZ&F=&6k=%y~>8mKn z3*@|LC{2H`YMofzyC%J>uJd?+Cr%^r4i+`Fd;*yW!-ZafZn_Ki9MqZqq?%%_C>jRQ zF7%!WG#8)T)E$78J%<8aY>cOvN@jbYe053FWmmPk=fbiAP>6olLPyQn*0QhRF6ZC& zM=i5SEUVe?EyjZ05v&43#EZi(H9MC;rz6Zgy5(ij5WT^V383h8BM{ZjMv8&g`@aJR zjkh7>x3idnFvNcB{&5!MsT$Jg#{^)o6DiDcZRf895@@LPa`R-n5>Wcr;Urp@1@#`A z8y6_DPj*>@#YI%D$araBY-QUq5NE@|cddondEHoBnFw1>6&}m@J6Yl%B%(~T9+oWa zJdeTEQ7$L%qvFy;f`}}NyRrB=Jt)Qog8!o)|6A1uX17ctOHy;Lcx(2Di13WC$npL* z5#;{&J2(kr04lA~jfJ&<_kZ^g{*y-%w^mQ;Vd;Ka&Xv@=#Y-ca2ZwI6A{5mTcm5(2 zJWqfR{{=446gf_?xkY|WL{0Idm-@)UVrMy4PlbCjE#`lVQQJ5qTnk^F2xlkY|Hl{m zt7la;4k=GF!?GgyzaE={vzP~wh%?ddcdmZ=A9bkY5|OTozBk9lo9RWUmdeXW{d$`V z&{ZxMJRSBR-b)Yz4Y!^t*Apx>--6X2ySU^UhImj#uhTZ3&g+$$EyLq6X8S?dM#+ic0Bh0V+Uu&j~z6< zUykeRy1%f4MyZb)DcIW&Hah7u=!=3NYIFok9u%@khfN&@Zx7e#_Oq8V-?KVz&-vCR zVVmR@h{qN1&}F-$JAdA{Vt;NkTVePCP%X~;P;qk7^Ye3X)ShP&6`9`@66uq$EC@3S zd0w5+ty8;z$at)W>32u^hlvl@z65I9bgyB?Szk*_72SG!#25J*OMDfOzMOO-YHH?% zYC)IwW5eFxcvF(S6KwUOn(Xn2%|Hny!Py7D(Ub4*w0*4qXHJ^*f?Mhjp3e++cp&v_ zmi8x!ja|2`cgGcL(b0{eZMKtzMlTw6P*Cmfq9Cnv^geI{vE3}UfmI8Oh%oB5SZJlP zgAUpg^opuFO2cH5ua%9@u2DM8t`L|O9bHLH&BNsA>Z`~s{{|q16_ zQj`PXK=CJ`qsdOBmgyQB9@OaJ-D0Dyy0m1Yyu??j(; zF?d7hm89deS}COSNM_nm#!Orjw9m2>6w_OprC_nVX{{RcM2|yjwOm2LYSx}k87NJ<80WrfSur?HtD*-P}HDfJ*N9RbUXzV4HS9j#4TTAJQa zkD+;#OvCwu(H)nq;dJBldl-T^5=NaR9h1`j)TsVs_&h7uI9ycj*C!4nIX+$rnu( zt+U0_y;ug_4))toQ&YPf2>hel;&|Xza`;cYB17}}epCvdIz6G{Hua}JDLwLO=R1wt z5A?m*_ZErKVz@iY1^Uoa>*=LNxUqOd3-?X82+j-U^J@ri+~xeBgoeGcvw+yl$g4ZU_7DC`$1be%t$RBz<%){q@SBZmVm1F@l+@ zA)UgmgB!u9Hm=RvX9W=iL~m}dM-cK*T{U-qQ&ZZeyMuWu0HbhLctNcl92_?9QBkRe zGK321o{axa5DR-p{2mNi_;YRrwcbn_OA5OdYcT z&g$LZ8ZqF{XBGL?R@Z$Dys#BaSD?-}4xVg@Yx(j^RC*D`sKfZNVc?Qg4c$ZBF^4 zaJ7w{uV^sv65_uEg_9$JDPh-_9UHYDX`(s8Z}Syt$}u$3pC!;d`;R{p!4fcz#$pABD@VDn zi)!J6py2a|!dPL`_W*@sZdfnn}@j zbP1Xt78-Fmz%OX$-Do{KJpBD6t&V*9JD%-Y7xh!bye(8z38zsmdW-&EY3n-m$xY(| z2l3hA0hg}cE9KnR?mU)CPQ+|1M@TUA>g*Y!KZV`!IAPgqm_NUlJEu6ZprE$)^in#Z z5M*q+xq9HU1B*Kx?eP%lE(&APZPOW<5&v9rL6eudZ<8jswTm!ge*5sgVN^Er!IcXl zYE`FV1Z!}ivB=;oFqW{#skGqV1SL5rsG7*N(saVikjqy)&e>wIXBbv|d|{TA^@i(t zNkf0dH<6zt><#CwZrnTp@fbbVO;W)ReA3b$Z}Yo<_k_zvW*uZkzYz6`8%}&iG#jdB zepA$0S}Nnp!Z6|1=3{C}Q#+E%NB8nE|Dq1@k7kjEuC5~or%w|5^*t4nT4<>7==MNz$UmC`PB{0EKuIBn- zzD=|Fvfnv5zxOU=B5FbxdWZN92FrUe*Id8`%71Z%=k_vNT}b3Jj#*5)y1H_z#mDi1 zAdp$%;m~sZd5H0r8fdQf_HJOYE}sUI1rVb<`HxX%rn%)Bt!v-NAGG@Z`o%G^ zJ`yezj)TQyguCfyHP9Vv$Na*I|0Y`qUeBRzQ4mnQ+H5D7(nUT!7p7&vS}y9))uV$J!vap^eUeAM zXWhb9^~g~dwM+9*cP9jj#~HJ{?gJ~MrV7Hw*{jiV9qX#ij!sXG`Zgo%_XDZ8$Zr!x z*!{W^60SQKfPUV-xEhn@&Q{3oC4_@GdQ8&vR%NaklJ`~T5-nvldYZMp-Pady*TUIm z9VA!hdR7F76Ktz65Fd3O=I%L&%cUO{sY9i&UkrWJ)@`ysuqDmq`XPOEB>VH{E$Jiu zwzrfC+N^l=LQLur(l|C%bihvfW+he|xK4V+-CKe^e)4M4u-H)f``MQ4^S%FTw9eM^+7vt_?rZscCsgh5xcvU z&JL%&f`|>19XrI#C0h@K;pzrIWCu7|Aw6Bkj4)eQX1RGv3#9L-;=|>*N~T=T&MJvU zl*y|?Gw5#;$tmJ~6n0D!TP6YKoY@V(7$+s9B#Zd-VITV$+Mlefe4_x6mSeXe(2R-q z&vASG3N7)RB<(YWe;s;-3$Cg+$$9BCA*Rg7!olFs)daI<>g}Bf0NE{61(#v2jB%UY zPBtV1dEDzgg9W|kCe7?5IPIEMxiFpsLiwED7R!NY8sy@H4Mjiv4Cr3w(74eCR zZqK$PeV8jz0@us`Nv5sH5ZS?q@W;xA#`P12zE4JtD#Ap{k;};CHI~JJG+f44Paf%! zA1sj{ygq`AXxk3UwJqtrsH@8tHOKLs)7{@en2{J;@xkY(&}XhLjz(Aq_t^j_y47@k zLMK!<_HW7~v~rcza&+|&bZJPT&X^%DFOB50x3HDt%ox#cIpK3{|09VS!EAKdlJSYw zBH6)9VQNE^A|ydf`jx4xFQuPpe*OAEz=1aS5zeFD-tISqL|j(03I!8!@dV9Hjhgcs z`tnlwx_@}n)aVI3JlywAdF#Yb`#^P&ez3Pm69)q{CN?%U8;{o*BNi7B>xC$an9` zb$FqxC}@5QSGcQ9*)_;i=NNY`B4EK0-Q%)lWK8V88qgt<0}LiL+M!B`(K29@FG5?A ztylL%10KoM)!pHecI!3{+J_bdnQK`|iPar#yTnN$*LFKc5NNlSl1=f3f?RXOhxGah`yB`KULrg(r|P_U#?Wpm^iQ!olKAtZD{3^Rki z+l_MB!ShGjvpnlC&H2D-514;qV^flSFs>BMS7W=5San(5FDfjYJ|NdC@zou&5B*MS z3MlgZ8JEb(sk*!K@0r5JX}3rvPkr@j4 zD%jKI<*luOY`z^W?|rWfXM9uqNx8DRUqI&AZ3wFNd$qSXLR+1)eEb71-Fc|x-=WV= zC!9_cZ2i6}xJNCaFXD!&zJmPk>Z&>O%}sY|w3xtPSC;zBLmQdF@K{o%qEE~pe%vd3 z0o;`$qpu1weCL{+aB9(xPEFw5@n-GFLFe@_Z5j0FWNb-gLLn=9xs0rcD;fri^#p@r zw6(gI`0tOK9Hd@`KX^dO`E+<>=mp+W+o`g300?SvTAPu)^hVT_1eqV7Ui_(H$D!Vu zj5P^#3JD>|Pdqz1IYA%w4-C}T6>&dHRQZ@+J83iKJwnsVN|nSFyr-`aD;+lm@UB_UxLBCEaJT8C}T)>_^sD z{@E{;!OrC6e;_xnU-Hm#4;I?CE-0_V(>fQ`mV?MEO&a;SxU#mLnv!zb2Thk^b0+Wl zqPh!9izlpF8!y(^dinT*H|=hi6O^@omLl|!e0^mlHA(p>;K2w{K2=$AH$Uh9quc>l znpU{VM`Q9gn^ngV7Hw?sV49(ln)d?maJ%QM5VZlU0>Go2Tr^lo^7;)RxbHF^d=g0= zC&jQ4-woq+CgE^GQcpJ@CYeL@=7G*HdoJpxmKqtEDy)@z|Mh_S|1u%Z zF&zwUUs`0zPWdxN79`xcZj2W&$kQm2kkIqj!h9%Ldy9x8q$M>+d(u*!_(w0LD_+IZ z-OKIwYHFQh+j+4$;U2a{K*e*#t2KzMkt zy@k(t-UH>ks_!!7jH~$S%Y#zaSJ*M?+^nOLm!qJ7-@(qt=+NS6wX}Nbr?s)u zJ+l6R0>iqGW7G*{hi-$9^)sL%_pkKZ>ytBh0CMK-RktCYBvWTSkP(WI8|m*iRrVP( z4~=*y_>K_HNlkZs{$^P@GACvts!ROpjI?IAU}|-Bbsuy~GFf1PLD$Dw78S8yxSbq5 z%6MzdB%H;}#8oa;l@j*u$jH`~oTKSUW@ z&Rnf=X#V~MiqPkKjQ8*-KFxpPZ?F2Rsh<+;XSa|LyE z?K~SR?A4@tNRRq=OihvR$Y!H((9bNN(Y8j&6XT7L{}pj*fe%g(_HwlALbR%VhVsLG zAF&^hcMp(6YBfmZi90z$+jv0Kj#-CdmNfH> zW4jiCwluE^t!v&0kU(ntE`(}-^j_D?K1*)aWn$!sj_GZ$#`$}kQWUwu+nYy+=FtVU z@Sn9x#x$RA566mMHdb%V4)h3NiXCHsc@Y=XSdM#WpD&l4p{I<$uU6%;EjTtIVdhIq zH=qiGKtMh>w|Kjn%|780UwA7pUmcZRdluaPHl=RU>d{6>NcdjfH*)nQDS3H9-r&|( zXH?hNDg7pttJqE}Z*qtJ;TtE`B!$dTt2ZQ&8$<-ov#bgY>*pS69iz6GR~foE(Na=k z(`dsLxPMYJJSNlJ>dui)hM<(`PWOO1_6zdZ^mMs2 zz_}jqHb;#lVK#fKEycGBmKjUDVrZO*bogDq=S|_WYKcrK;`$QP5Pt1ncow8ZwAgU)u+qoQgru2DU0 zS0v$)k@6Z<7uQT}cgH}af;9%-W8Z0x>xJ#%?&Zv)mcuprE;af}mb#fjk32&!Jd)q( zi0!t?$;qSj<^1%Pg?aL?Mn)fzf~NES;w??KQ^$Z@jD`SE?J?$)L)1LC$legWsSFYaBeSwXTl8~{5c&YbM{}nQu(De?#(63TuVnf1Jj3ino!-y)J`$>3arI886hy0L?qi zpAS~JrT0<8^_8R4h+uxQT6n;7EPiQbr>)Oh9H>6NU%R2P2YlvF(?Fu>FW7y}u~w4& zlK8kRm7Ojfix|bT2AJx0C$ditsa%A4A8<&~M!`&3vkqU40P5!&El5>qO-*UoJvm?| zR~Zg}7|Pk<43UIY9n4hi%XsaSi@z=8iQVT^o2Kd(4Jh{N36opxSeK-FE!`M5Y@kr2 z^4y-NGtEEuK{AglDGdJ^2%FRwx9k6ay0O2bB&9O_iA4TcgWTp@ny`(>V4ze>^M`S! z!}Kba3=E>RTJ#+ce_m->Ire?Rwjxk9hN&Rp_qoO>i5ySr%{v}q+7~|AuH+BU8HK2P zWTKYcT~F66we_$&#t9X~{3;TSR17~lI;p9v6ZGAAT?;BL+Nx?| z=gf!G-aLMoZd(RW4T^=;)f3dB`2s2G7guQRS<3oSG3xy+M17e&t$B2SK4?kf!WP;f%DJSiQXGZ|MLu_7?F8X&Ch~_! zxGa0>nokdUIky?doet2eISy{huGYCg&2&zFbBEdequ#_$QVYPU@Ho>=Ic;mYGo`!& z7>JFPtrP-!3lKz2Z1TQ8_0-;{$b`v?syZG=gUAf1!#K#=4(bL6GrGEViMLsek^(9l z$fYr|z3mp~oV3DlLX2cI(=aEgI_&)iGr5fU6D|5T_uD21z_04pDDA_Lw`0q1E3O#%c@ z(9F!9>2KFvp2!@`1=i*Z>N~W5nxj8`Gnb`my?gHHLPNutFJ|V`1{m|sP1jXa{2+XG z?AW@edXrgQRr3q<_}6_L@vXIw>!@QBvs|1Y5<2P=!Eb)osEBzV(vgXI@RiDX`TfdG zgr06QHPs)*d*VeZwz`;-gnHB>x%tpzv&zA z*1wo4c~3kQxRh;y&?AaY+aRK~0foNXN6HGQudUJIeNiDWGcm0ONnb*E+FD!Fp5hdD z2>|Ox@czvM?^_ZD%3KHK%J0#{WJ71meSNVKpLz%*6-%Z9E-zom4cC}Z)U$6!XwVyy z){s_w5CQ}n#x6_4OMU{6%Vmn_mE&I!bGzN@lgfY-qEj2L>NAR1yytA1@|%|~wzOym zE-tQ4ci9v^#vz52ZtYt2TD^`Up_tsBmd0nPHXxPas?VFXln^z1;wiN+1c*&DHW$=P zcKQEedbW3kr9sxBR0157{$&C8@6C(I_p*Pbe>Fch+pWVrg0(;<2v6ej7wetXW{wO( znGRUEfVG>qM*ZT1%5$-G-!~=g)2Hdp0Af5A%HB^p%~i(B=|9?6hLLkYfn0pvtXIe* zd<$xGHM6Ugy9bt$7RRT*@VAB)J6ZwGM^Fn0N)nH=*)|)>GkjI5e>X2S=TtwV^4#l_ z$nZEV@6n4LU`WFGM^`}tAG45ZCi09MYUqM@nG z{d4h(T1ZIVEk@&$Qpw~A%`d9g!8^JkO9Vv_wW8rasS`V=z@OO=VY|fsggD;+V;m0S zUYQAN&E)ljv~AZY`5&V zdF6t+uy*M0cNid4ev)3yrD9cZZ-B^ms!U{yjXIJnOmMo&l1=yW9)-29E}TA_swE+kugx9K>mx-E3DXai}8{{hEt7YDt+?48=^7;gS2*h#>aM(Y? z@@#5M>PeiFJ99m4Y1K_j1$Mf2pscd%IpNXVvAo4@Jv{o^*xKZZXS?t{N6kF9plq?? zV7Nm?#tz<;wq#HNwqIztt9MFZVvF33OVB?$g9x2>CEYFQb%}*#b@C$BZ_JL=MR0H( z(1*F4$i&4K5S{YfkjApdsqdBPRD*i2qKnTC-ZEgy!%E3udY!%~LuPDA@$B*A+_csj zK7Q^m+=7f{6%7rFU4bNq%&Avxd<`_>f%v|4#*KG1F z7r1=m&qanWX4C(?U_vf)yX*Qq?ma3oEopVz8$ zralm9FE2S_@tSa0Sw*c)H4!iK#n$j|o^{r4$e-uV5CSo9`Zr`d=Wd%kOw< zsH?vpzBqARK9piH+;>JNEsb(00rq+*HZIz+8b=Vbc0i^*qSL_ai3qwrx3MFb)PSf} z_ClXM{CPmeSE5oJi5MXU1jQ9%;U=ulIBPYv>o7B4K82Bxa^7~og^o@#2r&f}Igi$B z&~xH)Zl9`@(9rjBy*(Lrt?TJR?R^SXfqmx7!q#mO;GZq`uY|?ssSb1flOB&i0Sz_I zc-_H4iSx4~2i1}{0Rik$=2*r4$$Seza^*q}`-dS@bQ4OpHMZoIyr5M9AHUy-ES07# zljRzh&;{VPN~6KBjKbxAGdYGs~ZfV)2tX|+ZYo=g}@@W|8@1}rC>hu9f{#A%5y#Wm}E zM_yzpB*w&e*W+>)>qCua(yz}CEZ~D~T9w(I!pXmlK5X4kO0dbR(dx;Tx zz4*OlHga{R^^k3yWe1QG(u^7#8Plwn=|Fw{{pJx#1NKcdxR$FKZ>u`{ z)2FhMa!&z3Nwj-&oH8QN(gH&6C)~R25wH{t_imV(FZT7x^uu8N!?_G>E=s~iuaS>% zabLW^eOgsjCnX_8%Ro0UGLWa_sbKH{X(Zd|kTXY`pTE#uPTBKs7GU6O=#P!_=n)Pn zPLPSYz*@r05A-2bzSh}=zESbB^aY0lm-r)TnMU|v&K*jG&3TSGQ>BOwtfkc#B3
      !pPX{&P~%=c#J6lQo0LlD8`#C;w#=^nZsQ&M;sDRw9O7 zSc#E@pvkEv~m%W=`;UM|I@%#-HG8CMo1Om zR(#Q4vvXJT2K@Qy2b+T5gd1@qBO}!m3KV}Ra0DXu1H`$O8VOhR{=c%YL`iknY8^XdRFjfYcj!$JQ#AKAo_^n}v=eo`H z@!=~>ZL`U3Sruia2X^L*XQzl(&aa$>)v8(%wr5s1P0D0HMJTK_<3uQyw;61wCF(8> z;Lu)|=RcAT9X7lVtGbIcHphMKt`(`@J=F|Va4Od(xt5OXDU8}T(2I6_K1MXTdZ&cF z`}~*ZqLCc~H-Udf9uC@xTg=*=!2q!M9BQ?F^*HfDh5*)nqcgz#_#dRp|Igs42q&CE z_vwu1)g-f8+eW?k_9k~GH$1JRJRw4OghLDMKX|@2q+~3cYf_n82x*jgVCD zBOn#5$-evf@wVidbm169ET+exQKIkq{2#||-{g#ZK!SDn{5ig-E}N4nF|J!tjQv+} z_)1dG#03K;V__-Kj+t3Knw?GU?M#(6C6!cH-(|P-XU&VI&@w9PrAxws0FMu``*r2c zbedp|T0{dyZQ|;~^f-wtGn{L#>*HLbZciwi!d4c&u}{n5uZX%HUv54+J+~i;BxxTR zVrl(TVh&HFJhg7z%luUa>6D2DQ!M0p4%R-b9EF8437Ma+TCBr`(osgQUVZYe&N!-z zaJ`@Ot6Yf`+cnzmX4Z|cdU#XYn915qTlAsinyrOLP2I&V!!vAhtiP*mKybb*$%H!a zWB74QT6f8r#;Ilh-^=9m=XYcX*FLR_3xUs3zNlGx*|JJ^C_01_N%y3Ti4|9(f3k^} z1WG~vik`=zGR*8YKLrm{=++b6IlcOZ+NUWxH*a9I+KQI;x2RWmJTV)S-5MBh8hiOK zeeUYVsiqiVE+8N39$@SB;q{@djdQf*WplPPWP{%{>4^R?Njue@-^{!wdJdTktEz`7 zRkK&e$1%R8%efyRWo$7cq2x~KIc!0-7P5?O=p=+F_UPOHm|Ri+I4bPG{1n;Lsky02 z*1%Ox|4zsf}$c8Tiu7r$4g^w{FvKiwEmr?`|?f{y5h7@+S4`N>O6nVxt)WNsG){AX4yUw(HFNx9kt>wE|8 zc&5=qJ=y>-ont0!HtYwwQg`P>r=eHu(I?Mm%;}`eF?8g_6s22(;F{??1TE2i%buCG zn^aKEO7KIEfGX!6v)!mL5RKJtK}6f?(RYBGx+cH+H~p;a2IkImQT!4;GuImqRZ_41uQ~7;Mf+S zC8ut7;7vf?+NvxtOE@6e`u2<f0-{Im zV|>3V)G3n}wY^8>@l%wJm&E>kp%B{~$sE<7onNlW)|QhiaFx{1p-h!Mwl`Ou(VbZX zZ%}u7SL^9kT-ngXp=M3#R}J%fq2c;(5eatRU+#PhAn=xpY9ERq3^+}rTUOxB3vJ6x z^35o1frH{j_zh?LK4_YXJ_e9TW((^Va7 zw#P^qIH-nOGfHAH@LJ-P3 zW>bh!F`jlgi8;x=sjNqT>39SIrfwa-g5K5nTu6&-CzD}1E4~35;5jDolIZB@7vv#jEyXS+2r@nwDapo4 ztGJ`BNNsVB@-6kq#rw@gpI1AObMpf3uF9`uMIMlF4i3Yv?wV0;7@q(@ zrlweV6x)qzL5o>QS=n3k!6(c)Z_&${e%?QYf6AwEH=aUu*Y!N9xIca3qw`$*bENNG z`{$%E5SOe_tpqdI&^X9~2xh#IP{s)}dQ?~W*dN+tjXs=BSTFPA(zBE4O5t4jvr zWm87dpo3WUFFF@>hSHjUl<~Rl*jQTftGJJ2?!c$8H&4$MfvNGmQNY9O86eY;RM}Ir zi^#ZGTr0nNvF!_ZlPMRBRM&f3ukiu7BRHOCo=!KjNod5?G&)XOE5d6tZf(to&+{4> zmcZK=GMOyN(XO?XeKOw$nl#t<-CW%kf;h zt5oL&?OAu($ceFjd)pLTh{i1$ZuhPq1!M>s-B?X9Mj)_s; zwD(1)Jz?J~u=m|ds|V^?{zaDzA8#NW+WYp#jeiM9F4&!`wD$2cI$uJD|McI<%3o?Q zG`1FB74+HwBBr%1EqpWI~7u{Cmv^xQaH6}v~FPp>suESpkkEUxAW zjoqJE@`M`te^4ID4Mvd(I424>`q=?jAcz*P&2>}Cd-+E{%4hV;m+ihRk@Dxh?ptR_ zf{ByisHk+G%kj-=MP%Z&gA4e)oM;p}<2235nZc-aIM!S3FCtRVcJA{-|3hRi8}7i! zNI7a<$aRnuC`v#2+*q&sU^Wx}8CB3a1sZ!qMn?B<{kKN06&ShNUdg5LCPjPq;3!kK z3aqYOqEE=%C%*vGQRoVjhTmJC3(R}}byTG)7B1CkyXnmvIN@Dv;ObT9Geeavp5EMi zZb4(~qUN3ExyYgVEwk;+<&nOW?EL%RYbv=#@Lh|w6pU93^v6%8%Y9C%*|MG-_v2G1 z;fTao*Etw03wkiYtBkcR)_VdT1q^oe4fc&%xtJR>j$PjyI$vB|bgHUWFXtqT05Ym& zx-5)_Ikzb#fW!!BnYOf@I)B^ICcx%1ViUiIcZViaAw*s0VOZ8i9<5 zCcl8p+BO0t0z*HEPy#k~&l4X22_V@!oNw^ISdqOWBVHd?4NU8Y4V18Ngfg|s%1T-; zXNkbVN#mYPZ;WqpCl83%*+_~4_5zo29s~hT0jl-3E|noJe?fv}8`sP4$h?8{Lg?Tg zbDgWJwa+awT)h{uxq0e!P&Q#QCq(}RDqftC_*W)7iyh~%jsE80!K>;d24zk4;OFN@ zElA9}B3~RVFSpnG?cB;JYHY7szPsElVVXeaiFq^~m0&O_++$tc*4Mrmgm+=NqaUmji$V zm4q$;WbQ@P%+M8?K}o?3CW5EF8cjEcWB3d?*$5^rZsUX03+tJKmU196M^3kCpRZ!3 zqd)4_+rT5gyya?l$BBA-LNcoJxDM*~Zx(P7lm34AI@fq>IK$@*zHz>MesVl_bG|GS zuHDLiRGZ7;a9aI|7#tZ;E|~(-8eO);s;aArjXO+)nlBD=X@Co1Loyb2 zC8T-Cb2@6KT3nSsl-#Y?Cd0PukMm+~etu$*3n6S1Cksel#Jln9ytmu^Zur;bKTU*j z^Uwq%_u;K0Cp#!0*J(Uotz1t;;P(23UWI{PT!xvi%ix}JnV!q}A-C7ILQKBwtQ;&> zm(Nw|)7qwVf^LHa{kyS^+k~kS1_p=)lx36SbW}xvk1mC5xkP*!FjAg{&y(>uH~2w? zPGxQl)CS>BKvIsybI{hf=(^@xzFHKo%Pywy1HLCuJj3xMJq*mbcF*crWZL3a(5pT> zx(nMxYc3nPSIYQj2g~p;+-}PU0$qVG%B!rpXHZ~rxx3#(2D|aYw?f$x0;Tkcu0>6y&bf$XxuXyFuTIZwJQ4%J+ zldV;8LN{(Fhf(i+OZT>duF#RVtVK1BBV~&?Bsg4#)QcyI#$6d0z~Pw;$O?wXq%=O@ zHwB`KX#mf>{{kRTEbI}cMHHa`d&a?VC|#sps{$B^HjC#ED3djQm+=%);9_j(^J={H z1wauPSY{>_!@CXJ5?lOvjvO{>AHT|IE;h>?Zg&7k1`EbwQxG4+ zt5D!Rd(r`xcTy5JWQN(LKTbI& ziC1J)Fx(F(lWy4jUlv$X()&CyMbdgkRlqQ@)CWPKDp#bxv3$iRz?|dfE580)Z&2HzUh>#WjzBo=nQ3OMY`NS zcfEB!>$=Euh^UWD)lYWVD@^g14A6H8-9U$#kGxkK0gpvke~TELV7Z>Kd)OI*xn{ST z3R0#9Os=1DfFlxH4@m(SI?7R-q($}O%q&I#qrN^LhVp%XjHFMR6YIBaDif7W=Eyj| zd@Xery_PM~d`HK?_&S(savgCnj5YbrE4V0rsxKk&3(2;Ysv4lX1Q+<;1bnB>>(-3v zWsCeaTXzp#_+34R$v!x&SotA-a(u`LWvd}a`eq%rv z&iawuq;^Wv(p3A?RGm>(R7IdLfE;&erR0|MndJc?x zAeZHdtoQ?dUM~u#B8wJ%Sy$fvY9>x$2bIy#GwQcl>=x9~&|5qQ!2Y8=8Kj|;P6?aW zaSTiI&fj-b+WMGb&!C$=m&N*CzPzoa4bY%H|2ow1Le)t$z{RiqVgy`2ay%)&YP+@a zopP&9$j|+F_IMx-Nh=`lgej(hiw_UKfG`>H6}5Vl#VE9wRQaCnD8v;NBZa)|_0R7_ z5(@@|Z56eYu6~3X=m8#QyG#AUM(8xMOJ^XYM7srDGf$l}A=IE6vN{jb6?`it5D|kN zqGOX(kmp#XuBqC5sV5%h3ofos@zio0KeiLf>7H4-%V@5bSM!*QW+Gf@Bpd|9gbFby zAxeO&;AE!tglJ6c(3!$0tNcJVcz;I=QuGk!q4A|SXZNK*`wXH zY;__N`WcdrDfg13JQdu%1a)08%~9@Jg-gQKj;(qL(QavT&RN(DO4Q97?hJtSnkn&0 zX}|uGP%X93-AQ!X&Eet}!8Te@TPH8QM{fQc1@Gq8kqGEoG z*=rShw~b45up&8V^Xz=1Om-^F?};Li`t8x-UhOikxMMJOF!M4P`1=34K*p zp@SEuYw?NCAGW+!)UL4qK?`r z>Mn-$gvLyu+JyLVQnk=`0>i)wi}l>tixFEyLgM%LkBv^CT6sdNXTUUe&9dr9EcIeo z@Q5PiC!>{_nuK{qM}W42r8`PQsjzd}Z(gS`K#W-*3 zTfa`A&QxgU^R#);Rcdy<=%p3zi&9SRn^>zYNl2hiW<{>QSDTyF;%-nH$;LBp<+B_w zQZD#74^BEen73=a%nuEfHZ)u{&+rw*gxbNwm47I$$a;c16UTDAy}gU5Sy+x{1Au3(d&{m`~;28+1p<4O?yWMKNG^(ke|V3 z56I@c+AJte6|5#8ZQ3n~2N6;qO-)S!hc#Rh_DsnWKYtuPATZd;l@o56a?-vp;6<12 zbm=ZGljU3eEv*GcNmqYb{Mv(&Ra?A?bI~3tFXX&89d}T6W2wfkIrsQMEii*$=Bx$z z`h_648;|w>Ywygzq3ruOE?H7&BU`u=ktIvE8bgt7khQT)Lq*mk#Ry5NNd`@BX3D;= z*_p8ovW<*=s9~5vjC~1N#`;|S_MG#abN>O)xqrRR^~?8ru5+Ew_x*jpUvJ>!0}5#R zkjmyZ*s?M{E;g-*Add1$grL;=A<;F)=sy zR|r?bnv<`KsCl*$rP|!<@ZLVS5nMKL#HYdd=q&UhM2d!5PWZEEzH&ds#e22<;8zbj zvC+b6C|8Eg-Y-4Jm*3ar`o1}HZk53R_d(79={qKI2}PKWcV!TTt`AiCh}SBBy|h!u z@ZK;$(oWJW1b(OyEh%r?ulWwe{`xGVp3c%>r@8eee*JPzBHlCg6ZY1yVXVEFQ<~gmrQ45+mWIxRuR1|X1~68x zvWs`Y`Ax-Y^kj)t)_%>eX%q|}nFS_2Im1$45J$8d0@=>V`_u`Y5C`njkaZQ06E7m# zii$eCA?xL)$^7W1W@;Km?!+^>9VTl~62DsPT04}9zOhw4ThTimdZ0!F1uOcY1MqVl z=Uj5iMRLoz!3&8eF=8p?Z5JBBlpzc(@f<*Z_zEv`OTSNYPQGHwvOj?tJk*~$a=w(#h<5{)}?j$^V=RF2|jY*O;*jgZ!|(eMcbycdPS0BDUg6< zTZuM;%mG5p);y?j|N6oUxV#=g!e( zO9c(ro@2HG$zqnmFLq{cQddEU=BXw{LLp`0(4is$9y~REQ#;d5dINBwbh``po(udO zd{uC0#@~HwGcD~ej`=eHt1>G2O>B1dD!}j`CDS^?mlj8h+>G1>)g)kePjX>kZZSBI zmJc)M3`bSu_$^W|582V~5lpde;@cocO zkI#3z^NZ4tD6OBN3c9V8c4eofZ{|*);S`xf$h0P^p;1wuCS`we*>exqTT4v?eSOQuviW@m#nKy8y1#TipaNg^P=ij;U&x86 zYOvW@p6cLhjTQ+f2Xphkf8_1G?E8CSjiIB&2=)~fjc$~1_x2Jv1(a4~Y(EwfIxQq* zJdz&1)zRE5Q*yFQ{FtC)7oZVXtlaULSp89G@4VM(sNWAWV&2P>E7ikc!Hc}#ftkVy z8szEt7>JGeP|Le*PfQauyk6dhzN`4MyQ&vV(+ar@CO}Y;v!M>P__Al)i!F0!bv|3) zEiA=7tA0AMI2|3TH7*L?=DqU?nYkfVK%TV&+JynOaXZR*$I2P58;gbgUh$oYSH!?g z|K`|rQLys@W!3k6za5)!(XaG&@IGw%{%DP!Kgnoen{VkIE&Fuzt(IEY{>m4E5B-@@ z2f2Fa1UgAhPKL}g|41k`Bc^j3xZ7|*8Z)dM5n-!+7f3(pxIF9W zzs4q-3A*qZqd?32uz8Bk0sMCdTdo$8?$EQlRy8`x`o`j$09M>cZ{lF)zFMZW$b!%d zZS%iWupsW8;`$xgwe=68qwAyViWm%*3@f=I(`9OAnIET*M24kLP)gvwzFR{T{?>^- zw7F35VOn2HFkXDP21!5jE-KI@6Dloz*K4$p9o-A^U$lswE^4)kPp)q{=@d#0`1Yg* zgR$}S{rQW2){s}wMAhb#hI{803@fb&^XV5k8L6TzCf1vFXYA2BkAoTW-VuIt_o-P8 zdW`)y#S}1b0`jZ7QlF(VOijh|h$&x^zDgUQC@NgD%(RSbI|DcuFfq$h^R9g&!td1W z3GOL3bMKQhAiGdGS`4xJo3r?%!=%4xW(Aqxx3F)rg?^r0g9K8+GZgZq?Nm{e_(&uoiImWg zAbk!Zu@|3U5KBRR;fI~Xyj4A=vH9t|R_5NGE&JiL*9(d-BO{f6rZ_)NwmzFZ)pfz_ zXxmJ2LBkH*(jlh`cZOrv7-h1dMZEX$@<#~U2fVJhhUL?D#kV?gUEDNunODZwNhaca zaeHg50Zdu3u^;p@OS^#y=P_)@R2|+Yy%BFDiG|q*?+oS!9N~1cH58y^ZGTbq!Wt=@ zPlo5eSeaOYt$q_SFz^>Lkt;Z~$S-<%<6_X^fq&apKj)ULi3!kV7P@ng7*)wfUGCyo%)E)bYDc`Rj0mKm%tH<*D zo)b*#_I$XNm1GPl??P22lvX2-hSVe3`II>W_5=1E9tC--th4pm)XQ%g5bHWO+8`d) zPK-N2`dnkwZJa@RJ*FWm%DYc(Ot+x(juJYzvTOXF^NS<(Q!{-AbJW=Di1V@Q8Y?Mz7zS#hA zMX!<844+`RU=d|_p@RN{(@uY-wPrE%Kj!2SYkqYH9pfkQu`@d&R#UV$WY*nR7LXOv zCGdtcnXak;Ka!DgPj}D!U@%K}yJ%99xuJMYFYH=8v4Zt(Jt7*y>;XI?Xd@qvO5cdC z<~CX+{=C?*th@xdX&6bZbfOS@QkE&(h-Lwc^uuX=yO*yn?tUautkM#x+|~^w&GIz? z$Xt<3mWPY0LG7E^$S~#S%pU?B@=3GZZ`!LW%l!QinXA7$(0D%}n@LD2%xZl;0EB-t zN5mrX*2LL71%OdqRJ&AB4(vT29{FfV6z_9TL2^hoc(&TiY^|09bMl_x=IZTyDIwMW zGi2sGar3vsZrG)YwC%C87+d~>T1p!E`GIy@+JL~Gixwk&sC{?=J(n$A;#uORf_B@$ zo-qV9mCt=R9i0`rtiEifU^%Z7I8vBwelYLy2t3DTQ&=;KoOEe&DVW!; z`uEJ&k4izY>LF6z1MhH9b^PyM2>;)opSdA*V?1`NSgD$FGh=^n5TuhO^WR`-EPXNm zRMvpUT!k(W6m|`g{k}C?AChk+dFohHV_DCnIH-E$i(^QEO2n;<#l=O)R$F6d%lO6N z1>QkGSGu|(b&0xBpe0gbSC<<2{N$R{rGgrBySPq#IHJN`Ow!DB;4QmR!*|L#EF;Sm;=!$aMbD<^@efaA|laFm6Y>zE&rCU^)uVKLUf LeXCga-s}GWSU_bnJg2o@|52oAx6g%F&^o#4SW5Zv9}f)g~jB}kCQAz0%O+}+(9ZJ=qH z{@&EDYG!KQtM{g6YW_UkxBH%Z&OUdqz1G?>>Za%G+#07}3|I;pxd| z6r``O&oNqz^DO-@kvVWyBh+AOd;$l&#*7;7!L)oW++$8s+<# zR5hV+)37)+NMwOMVVpE8Mh8wN7suYg!3BuM>qSv0wWN)C4j(^1O)Zc$mL>_48c=8{ zRWvoZ7;Xm(U~*VqN#XH~BEX=%DJ<48G+b@V&Cf@;8%K4HjEvyx9lHo>YHAWjUW;#+ zE53&PY`J@{Aon?ij#aSm{_uy40O;rwesafBdr1jSfL!J%1}@=2e?AT2={Z5i90end zIj^?%HW;yM8|u(A((DyOO&s)^t~LyV(8-21yIuojM$lSr(D(aoUH@LWa!Mt}T#9v1bR^xt;mv^N1iBI9 z6vu;1b$zkziljEW&cfUr)omx8j_{EmR;xJ+VJhR=^J4X&;Kb}q5B0-$&GmPt;-VO% z49!&SOWkshvMC-RUEOE|t$*$}pK;lG4D0O%V`HhGrG_bmF@}Dco1dqy#fwPBY<$Vs zEKa~!1TfrXu#r=5Sx^hqL$bvn?pqy|#{I>#!XghYPtZ>5(kF50fXdiCu_)vx0MGH$|afRTKzm$?D#Tal~eO z`$DTwq)=>129pX;XK>9)A;W^4YMASV`O~56C6@y(CV+NH*B%WO54``0hkBuY&R+3J zqOcx1J8ZPVg{UCxx{i``X&F79)VEx7CHX}m!V;p-gC%KGQ&Q*zpDR9R3;l-k!X{WT z7DJ}4l^a4fvk^{1Jjb};LFm$h83BoaL?<^idA-b{?l88eptMg|`2ISZ$I1b9LxKO? za3p#Zy9TfImARO#1KRcTRtkcL>X-1aI~RDj8sH3z?C?jDPi=6*F=2m=ua9Y~`LqVp z!BfAK6joTbN;s%ciO2N#@XEqIi0pLjS!mKqFIvt(b0`7UfQ-%IPsK)%L?7lRatkvJ zmSRvCL%AQ^J^kZXvs=WH?DLb^wwFO07Bo0M1xt5pexGXxEr{eD#?f2} zBVN%dmNO9uOF8e~qpLm>V>^;PyD83~5PiWtg@3tBa5Rf0sdY9+PZXXhA-~1jyIG+8 z`iye5bRHZH*#!9$DQKUa;~()$7QvEYfHf(YZ^x?hoan^D*l#kau$!D{N5v$ff`VSO z%4|Q>?csABY&J*t0GV}M(aAA*FupzyefjwC_%EDBa_Koe<0oAM0|V5l=ZFwGDtq=f zbce#>ReNEE8IFx|aM6Io@m64x-&%_DdCbhWnh$p{W+R zT9kqN5Mn@Sl*|JNQ>NH>r;6iP-5t||O-qL}#q9E@j+J1Kl99RjrI@mv-TQ9=n0&p3 zJQn%h_DDrN^g5ORT+DM4oNCMoqEEwUV0=p2#$x#*SQHh8B2JUb(s=iH~&Cz zv+FqFuRS8~aQ3|qSQTD>W0Jp467lMR#U{oP+EM>Aalv;%8}fB}e!MEV|GNL^8824T zI@l=X*Vx$D!bPI|QD&$Ebz`_?RSO#GbkZhU!*hQ zM81|+S45?c|6d2N9pAM?t_}fgRN7*YBj7Kzz@cFJAE&VYescT2`$lk1b^C`&Q=m3#>Z7!eR26?G@DC53u9xPBXHw*#vMleP zDmvT_^40f0-R7hed>`@>53s;z`vyHQN9FC6!cJL5PuzB~s}~~s9oWWEBy5!j`Y*vE z7eK39C8=a$`GYTw|JDlxJ+X62j!N*Oj zxkCi5-^#9PsS*t;TPmzK7uOh(Ll?V#9|??(kJlA%1s#|F*nTTo^yqaX!{cgQGh zu7TTdTOx)+)P3ZtV94BJsK2_5s}erNW{C zW(`8@#l&D7)M2@gV0MyEIOPTn_rC8v&~I4?29vwX#F z*OzH0NWb+IIv+_S^Y}DBT$J><9G)*@f z`~aMKpQSp_hSgF(bH7iHUJrldDK31ATxYr7p_tN_iT{TLEK~eT_AbKjU3pxpVOGpWyfcTODmDe^nd!5IQG@2+1DQ4mP0zENVB`-kM)&G@J&TOgxDYK^_?7l~RY$1$mM*#z=-h(=$TSiz@%1GZelEN@&kjDj z&~ET{Zu7^0T1*8MGs?}%U{*X-HA15u1>v_rWx0ZeGGznGmuG0=M&9@ay%Zc?IQ1iap&vCz-=U@q)I} zyF0o0P2fJ|o(Yqki`$9sNsIew^DfS`eH5Lwc=k?Q4q`Cirqp=s4cuo_ccqdYak_TB z|1vo5fvQ<)JV#mB#!kmAhzusoj?A(TMM0MP2>Ug7 z2Rc%y##cGe9OS`SI5)=rFIR6E%VB-yI>DP`=q*vI-XBgyi(p}D{+oNH$aK%q_gmU? zG`8X?jJp4d3bVx6j6ZiRe8P)*lPv)Hjk(+#nz;ch`^Oh&>iOt06B75K??|NJ)xxPC zA*TI)Kh+z!TrN*q=LN^Al${Mf@@hk}@vMs-j_>NMw?gu9^O3p3Z?f)-p$)M0rsH_` zdi$NT@$T5|9I#x_weO2gBXNtR?qt2Lm2b%#`Y8rIe21!V2{vCFxk|>zww1`tY+uXE z7ALv%>&$ZYr|!?<;1SghT^l{^CZtl7Wv)Jr&Yr}d8M#AJqq#~e$%?d-F`??42?2ik z_&gz+vDN&NpGOMR>4pu3{XZ_EbWe4^Xj5|th%VTQ$K+J=y~my)AP=?H&tS;567<7F zPtVNr-(iM~yfCBoGe`=SmCVusJmnEoLz3qQZ11F6?9u)Pg6z7}HcxVA(S1)-c z$B(TzQ@`C9B1li6iWasqP#Vdy&hs9rC!%(vfi2lrqX#+HTL-%gy;;T!6I$J@v70Y==|5&{AM&g;-@J zGZc87A8OjRS};4qcbw-eLqY%+wtn3dD8izEZ{75TrL=iFF;Cw$n!>G2T(!3%~M_^icf z9ftY~&m?nlo!#s|LpzKkIvh?hzp|F|T3s=uc7(fbw@Q+i^RlIlYL& zJzZSN(KqntIKNN{K2%WYBlXQ!#O9H6%2GxGT}-`gxsou^E%Qb8;p6HUqvv`E6X>jKPD zhh4u9mo|aI_Tj!O@FLCu2CFMY+3;|kNQ*P#$rKDfg?qoR5185GY5#3f_YWHnp_0rz`9Ue1y%8zNhRM`(or75WK;Tc51s*m3btm z6LyaZ)PY^d>1|w{Q0Q$yrzpPVJfr7XCSQF?8vh+1cRR&OH=lcVj7m?HA{RU3<|4Dj z|K&p)vPrzkR?qfHeM_Kcv)8aKPBGDJI@kkCNtA0KYu9l_J)AZA7hFbB-};NrB-J2ynmu<&NBR1B zAXC3ES11j94L|r+^LRoTR(lB>8V~mKEFg1gd|};sz9|RX1brQk&8<39EGt;oGsT2v z=ceeGwl4;At~CFh4C$%c=UVsozF1)AWU!xw&R>24)$)E%2)V9x{f~& z6B8i6HJ-P<>)pv!g|#nYDD|KMul397Y2x@5Qa44@Sdh@4MC$P)lK)@SukRHm+H!j8XhYC_IqSGpeTWd85;Q$eXuI%y;G+a8le4 zCZo6c*I#Y!onrTnZ-czr&$rl-g!|TKzLuDx5L2z&xl#q&59h6-?afWUiqF=~^{`bT zDWf2;k2d!PXIhX6=q78tw*Db}e0t==5fKNlpFUZV#OQnhP&# zk@ja9rY^>a_1UZQddKVT17W#F?tfbga(d)TOLPwyPxE<@N^SRhnbC9S+OM|MRj*po z(P?%Y*%g(y zoFkBSwo>;SxwRdkm+WVcvxA<9{a_{y5PW^=bUxpp>yYEzg?Ps+g1N&cBlPjTIA`P#8ha1Rip%N@ zd~q&F3p;6{OoV20Y5}c>D2Z)!(iU)V;IBJCN^!8z%h0?g2ttI6#|y(lW^L3OTdq>- zRXJ-O9&TO2fDVKF!}B^Y2I=H(9^uNbTH(yRY`bvYnybPiK#zW<--gapTq5ko4NgB( z0~Zi`+PbDbyZWRLiC@j>*g)Kk3GVdlvh+MznXRvSYycs*qrqlO zSSp*L(hY7m-VV#R8zR8I?5GtAtU^+5{Uz@yLLY3UgygO_;JSwJ>zVaH%vaNV<92L! zozR&E?~R)ew)AsrV!>v+S?OexvS|#3fr*)o`&o?9l+GrLN8jGg(#3y|iTyHg6ksXt zWU<`#<_DWIBKyHc9n)(60$F}Rz-7}QR$Khg9rTR&slHRVK2|Ot*)|@KAob{2#DE6t zqAFq>cz`gQPMQ=~=tnf%)>6-L7+ae_On6aL>j!m3XdsGILRB|MTa5o9QcsKiGuXj; zuZSwH5)1!V2H(B-UWa_*k{-L~ak|2a#`~?F`1S0Ey+;#c;aH8-`FDtWQqE}=zEp-T zr;}!e_Kzdy55@eEuP4n|Mm=v8jZ-9k_RhwxuEcNbdU+@WddN(K@7|r%inipQ5bY;D zgNZB(e2OZ4Q)i+%BFhM3GBxvUse6i~9&ghcVCYjn-8K?1d$SlkrT9$B1vZm91*Hf@%iwrK% z0ocp$H&!1d_0YakfM?sg-(uoBj@B-Ix3$?^V`AFS?r?u_ z4(@ocbJ#BrLJx*|F`qp@Jq#AWoxsx(yJ;C3X$HTy7rLHVzL@|#&Mgg+ea_d^Xnbl4 z79;cbJBVTFi{3-@Tco>zgFNvD;s>uM^iy z;4V0%iZ&=@pN00}G$GRjP4|v7({#OU(c)h8az{L0%zuaNiS{Jcy>#QL8{N|K_s`{3 zKWuF5o5S&T_ccJ$aIu_)Y)LtTCwDiLwX6 zcN!*{^8>CyG`>^|NO;{4HU5w(ZNOy@N=RscuQDVJHZOX@L;b;lTU}4D`dXnYr{?Tx z`5sEz+WXx-;RXckSiO6*Y9OnVf$y(@FLW2VL=h@J4#8esErtg3W1Ui|!B>SR%OVB> z7SsW=*>1`LvxDABRLKo@S3*Zg{j{q}u#hA2t@~XH`to^NX6hrt4zmPAqtc@oM8z+T- zcxt`c6{s@Bw5NgI7#Ers1i+>zicy8>8F9O9LC{X}ugOg~p~lY7TxCBNf>Gdu9|H&3 z2LC6=fWw`ZOfaY?yRs{L{>HRJ-p)WbU%1reY{&lNKQ<+=Qk!>q0#vg~WCN=7$9A!J8V+|T2C zcu(L|!RBX<&0(!_VOwFc7b#Ee`P*e)!xqz4Gt^#TAcGG6I$H7-wJJX!_P z4Y%!#uulpiez6g&c0gC`m6eq?9z2{o+^_C*LCB5vNNN$l-4sK~6W-Z!+!#^2RsmS1CV`VVEF`^a8_5vp7C&a;78@M>NvpqqYugdV^&@h|6u*5-Shcrs(B2)x13utiGrdXAkNfvRL)!UFfh zy{!Xo@C0W~gW!02vYV3+&DDKeCLpVYu`DuUx8ogIWmpi>(0S>Nz;IEUC%DUUmh{7) z(m?1jVpaTU(7qrL`tM;^?I)lAgi6aso8A6MCDH@8D)^c?LZvw-g5Oc(8 zXP`xpxL@#b3KNT3wntASndB$$O>vsQo7tqTI@`Xe9_gqv(Eh-pv9XRp7^`bc`v-EP za{#a^5fG_q@c5LoRfL&-P|cTKuoC4hwOMt2OsTYK)B?ReR#H*0*I7V563nUn&WrC{ z_uNgt^nRKWnAYfJ5R${Eg29U)pMbdmYZ1WU?DYk%vP5c-+xp6h#4dte9zxyyVJwV~ zohZ_+{{eV5e|rWE@A4Q+=u|;T%R&dXYAG_#tSD9Uf0l`s5uxoJ_m*tg!-cxVBwAG5 zyxI2-ql^DBUBw^JO8*cb|@pU6NMM%!e%(!h8Xn5xA^JKW|Iu`=sWm}aUxD*k+e zh1qmXcUisC(ME2F;;lvRIKD5rf)uV{qII-slvXSAMtHp z{)x5FNIJWTe)#_LTrWwz{Rg8t{TSWZfx?6MMOIC)pDaqtUEzB^oB!!g-qNaHHDKub#Rme%aIcTApKS?Oh9~c9 z$K|A1YBSos!})C-p2x8`&Elz8|IW|Hz|}Bkx<@g{6rW!4zd+It(j`_t9$o7H;sVZT zr6l6#QbInqpAZ^qppcnR<9`HU^uk>fsZKHijQ$@8!|g?kj@Jp_rHUF&6YEr;RgM0K zIVG}?3p@H5#_aSz#&R|+B}#5Ax3~E`QXIo(xgKwyjnKY)j=?9psYML4%0iqA&vDrh z*FJ-tI}~`$wBRKBpa*E40B~|9BR$w|-_a ziUD<3j(8~pM~i_I(x_`+dxPt+0a1$_Fr(E@L`bF$=ogX?anZN;XZ=eOYw)*T$^%(; z@5eTLxgoKk4n}P3ifup+O3)o*ZuC!0PL4_pO!QSWe-UlajEC9)hsJA17tTV90xu2M zhNCTHnz-os{`*4s|Izqx{;P72-o?~EcaFW_uANZ&F4N7yoT!24m%|D%0{u(I>R(1C z(E#RCcQ#!9Q{`BNym;0$3&OKE5!mb0((RW7dDFL3WaY-Q`RJJ6lUf;_FE7-Zfc)x! zVygD!!qT9+n#T#XR+*%y?7IJ4#H4ugql{xEj5Q4sR`1Y0$4lE}kBZ^C7#c_XbVj8o z$(&9Mgm#ISN;@Rw?Pn=rRK(#X_w<15=4y&$S^sB59hoQ4P{QlOOX4;KX%P!Wi7On9 zPnOI0feq<*3yp-(9Jl`&iMaUA?S@D!~1IApzHVGD25g zHJ3xacT?qQ>sLi)b`)AsxMkKU>15?nr~M2@W}mhrkS9U=##%sNu0ZszK7)^c^l)r! zgnO9l2)1iY8}jM)M8M_fDis0m?;9!zL>v5h7`c>TPdcXG5TNLg`D<^Fcp?{P$3}l4 z`HF=T?m9SeZfL0XjQ_1DPN2YnTv>ViV*haVT?F-shtC?!^Rj-CMZn|J$f!d1;z+ENtoG z1AX1~A@xd#9H@1&siEJ=+l-g96W*|P-__SHPv*SsuBBEQE&ybZ@eQTZ8Xl%l5h)>&S-^X4M70^QK_Y zSEDXtXeC2^J;6Z~wPd2uS5zN;)?$F-k1Y##Ig&94ljOl8X<<&C5-CAlyY~fwSix$- zHvuh^;^*U;)7+T13i_sJZJ&+ILdrT^&z5Nu? z)O)W#?|9#e|Rf|s-8MeZR&9Nx8uQ1TRyGo+={kiqK4E^OJ(ZKH( z3X4&o4hFA(s{W_^=K4Q`PJ_AvkK&lRl$p2KRX^EfXXgvU=xXDKvLF!0S~~8gS?!^2 zReT>M^>NEdv(WI&?^ZII4nj5)3Xin^?W~OWis!pPBFRjUEGpV5Gas9)4YAqp&z5HV zhlkU~s1nKa5?5ObcF}26RKFf}F${*?QyDhcKt5mAVkTtO1|3WJ;56SRUqPUb_BxFh zd`~&t6CJnN{d2d{1!IHzadi2@$m|??yjzyvAwqcUaRSb7MV)r$PMsp@diU>uKSgc` zTh2*)2D4Yd;AeMv!(ebLtLx>+M;7|iR&-B}s9iEUoC zFz%fnkh31Z$QdB)fl`X)n zuxR5QY1+2A8d)Gxdx)mf5XA%d`Kri1qOmkM&c4)JcJC&PvdkERHdp=5C6Ls4%-@*+ zJV}JTuexx7h5iw4IE=llTu;k1gB1epw#ApB^3=z%^LZJzGBZ z@F$AA#_a(Ws6G03x8cKd^WBe2ENNlqg_LE19`3W2KzgNsU08^Xdn18%vngl76N4wusNz{mZtFc0ja%KAeg+J#3*n&aPX8qX>nom9%*ZZPPe>NP} ztwvmT(h!(9J=A2ee~G|<~xFYaUXb7AW z(!ygiu2&T#rfb|~YZ{-C*@J)^2-7=?pnMP{Io80vcJHO9q_5UluB)K5^Dme`+6y z?yx2>)_pRz+`(^#&Y1=y2}W}e!LK*v%P0g2SX`^BozUBFyz^?1yUN5GD@31^ikIRq zT6B}>#(ckKw-wMVcicXTu^q3+h#Vz$>)y=k0G=N>u{Z~}I}g!!Cf?o?G?sckrgP7! zJgK}70!I%fjoxGL{Mr^RZsaa!Y%<(vi*$zdu76tZJas&b0pO>9qFy9#5td|cJ_1e% z)z(860#5I^(=91IeI!g4+Qjsw))C^(nxEY6ZZNYq)dDP?xHjw^p4P`Yt!s~5L_OIK z(;)fh8Rom`%b59NAhBsa3!r&(m&osR3DC5cvJTEJ;kmsCZ{)Z_SS0_cR$2T~8Hs(% zD$X@bJ7ANmYBK?kIDOGToMYA*Dlj}A8tcBGAh&lvGL-mQOI(j7RHgluONqtkx^Ooo zHS^^Av5kA)zpjUpCmy(7DLZbwrA1CGU0%;`+?P?P9Oa5C466!!zm?*0UdEMVznNY0 zXwz%99To!xi7klfBWTHjkz7xWRi#&3ZR#csYB=t*1hnbajNnx(|Kpw{{l#xR`U6K9 z1cwq#6>t=C#_9DjHSnJPH-qq-Q`($>F)S+SQs2{ZGd)7imzDxtjF-N2ICn03J{0E+ z{dLZn$qtwI^8Zs6o{#>UT7oGitX_-Yda|%%f#W@&-F;kOz1A}2#|tD#OG2huHA%unsPRs0ypG+_`}eJ)C~O!F`jf9>eA)TWi=9X-JCsn zdD>fcKVQ9s{FKLjGNvo0TL85J9^WiQt~FUJXvT5Q3uXFm+aU%Q@!yH-Q2tAO6k*hU z0+E$UYCeT2X^MQk#`5|iUR13sfBTqZ?rZ$4<~T5=5p;zY*#PRQ>1emvltpIVDN|^Qq}aQyi5(S^ z#LZ`Q6yc;;Lx`jWT>?GRFHqX_2RQKL1RBm_pwiQM%7jJ$uGM7|%WdNRwQR}^VPW?y zsG8%WHW7Pocb{iCbQVs_`>(|rp08x!WUo8bU!8Y}3gYU=AMnL7KN$y={R>~kAb-i6 zOee*=u1xd%=}A{1$e$3WA$P;yJvs?%gc1VbV?4qKRxesJ=}Iiu+}Vje>A>c zD)5dvNqdp8uyG&ze(%`%7?0`vKSsByGIt1uNO&9Vp6*FL?^0ubC-RFOMfCx)r6`tS zs^+>g_SwKw@TSk!IkiCEFobo@zq|JH1@ht2YDU?VygIJ|)9a9%GH^?L8k37irl_fS z_ObrIxPV}0YQc(5lzTrcXho8rv?`6R*nV>Duobv+O?!n;a@`DDT}B=86W^gGVhCJ>!%51%`5eHEHHl{(M@ZV_ zws?HDH~o|-YSnU9LO2?Nr+l zN!{~Evz!^XzOn7L1u{Mr4f?(?_1OsjQ!Qn|*=8l5nE~kWTT*d) zJA&hO#NqGV{9>s+dYfy&=sDu@BnjzOz3L>9oSq$W4}9;mWGgC~VC8s@_g?Wl!|Yo@ zCe;suhAa2Yob{V@Wz}WF<7hoLmUFs|si)1#{UUVTt`92kr@QzTS<|;K6R2I1yRZtz zHOi`&tY71ujX)u%3>);R)T`K&>?{7gw44nugDZ^u4>p`Il6mt5&$=xZFsjNn#EXkm zS%*l!q^xjS14`F}Gh%pFOqB3N9Qa+%M};GVQirgfdlN>t*DXH>w4HW_`v^FXHHfP2 z4>k-`&4ri06`Y#2s$2wJ(~>Vp7f_I?edJBKcLJ5nIn0;5ZRxaq5XJcxmg16}%2x5Q z0HH3FLLe)2P?$28|F~)m;sE|VDp*PLg)*_=qC`73>{n?sU-IVo^zBQE&k>4qk!=qoVr7A!#h3xa$Q85v-~J^uGuqr&%|ePvRh z6{Zhgl^vWTen70Zl8E=!y?y;}#E*EaioKwWRI?qG*Z0MLc13+QZ4jVWBGK68{+Gb@ zxG4GZgKga6fdOz_8^3d$tnwdOWfStqM%5OKdYd*XGThm*BHe9Rp8d}d6#vWSR2cVL zzFP1wS|^HN6hx_z=UKQDf}T5y#Hm`EB>E;GC%827!P)^HX{{>e`mRbX<12i{lR*6H zRaFNZS}B)6gMk}ScyQ32)DQ&QigPw!-E?0~2#k`S_i#dIqu2P# zJiBfv4U?ZyUOlhdY>GVIQ8;VxE1R@AC!wof#L`7mvbx5!{?OYJ0x$3eLvvSM-S&*V zQ*1Tz3GPim@v+qth*I3W&YSZNbA_);4W05mb{>*I(2KFuq{)#HgEk+ez`-W4 zDe{?>RUdcaNPVt=dxwzm`{)WZb&uOg*QFKzh3^=UP8H+yoYm?L9N607o>@M%I zvm5T8IKgl9v#!Qla=b1=_np?;9hVz@VGpi!F49r>zUQ4uhW9ApEvu}6=eL7+s0b^n zCnSg83HAtuLfh^{V);}OWZtn0IOcp}!&%-$Tm8hxABb2_s&zTu&lJj2m9Yg+u~w{W zYU^j^WFC48nfUCkU$GQ)`OVuAW=EO*YHOodXmR2(RpcY{aE2XC>#Q%3p4TivE{(XDe;sS#G%h`3WDfn%FU68PDTGU5sMP=|VM%ktITb zob~HFUDF#;B(#!S%xyDo5^!}?yWO|Ya`e1aw(w&?#|@O>e*JDn9LeJ|oNTF_aRJ&j zL~*>9HyP6wLxL~5kRfPhJGsHje3z||C_}tH!TmJFC+C10<9j~L=h1=*q3D>sFK4>| z9s4pxbg1|H&%esL@SBP@`{m?kfx=j!C<$av>QJAD}Sh#I5uZ_=Dborm|QZwq+H+OUA&QfLJ>Fh zmvL46ErPnx0&`&>V5TzhJ1HaZvL)Op7cxDrlGz!>DxW?n9^k*RR*)YIrR~m(j{^yPQjrNKkIdjh>NR<51 z$^?_=C)#UUtQ9|^69wtX%M>+|J#6P~ney2!qC^f&{!BqRPqj3{$QiNZC{Jzv3(50r zNPx8B!~S0~m9(|pr8|-8gx|j;B}qo=zUN3w3-4@1j@gg@xMUYE@=_524V~|2jR;9c z2IaL*2b%X~X|N8_L=>9!zpt6f5kpcnd9NTHTMD>l31?7^eL|##dC&eoXeMOYa*}Tq zB;i@{<7rZB<{fCUh8!&LQ73}`J`JgCbVU4`$Z8K>%jIbexBSUxue8myFmU+l^cAIb z(oqBfbjlEj5bAdFdPN zg$~CH-8Il9p)(MmL)HL9C1314xyDJ&e7kg?xZ5sIDb@dBojj(FufHBLwj9QKj*kje zw4wbHO|Wo|^40O1yZQUB%D_&<;p(eSTO~P=DiFU_2y(ke1{|lIz5kuRh~K^+ACJiM zLi*g7w@-LKtb^l0m?qTjlYf_`+s?BB!Q~>8spv)514v;+U8ViR=HvYSWKX5ElORBo z>;bZpIVkGl)WTNsS%qwEB365~t79(qX6K`~ zSJ(YUq(|(CbCKmvTihsOv$H^>@YnZa!NJfgQa8;R+RoPM@w9{Chas+5PHVig>l?gR z+T!O4IjbvxlHfy)`@ANwioazjjU(J{8x*|;*TC`3h%W4_PO6s643lm~l8 znM_M?6rWdAz=s;89rQb!%lm!?UEKa!7q12!y}Y4;wOVPp`hk1HyP)%Yld&ec4u1m% zbgWZ=$a!K?v5)8JK>~88Ig)_}EmSV&*olll0rr8+REiqABln(%DC0K>*lk*V)}`Hc zOlOVpjT8`9uDF>ktED=~-?qm!FkQmt{M6lGQBCBK_VNKba!B+WAVu5)k=XmYd@1NL zz&W@8BrAC6_bgUgz=H1Pehr z%*ou~28mES&G2RLpLgVZJnLXF^X(Pq3Jti-y9y4KIlEm1W9ck}tIj)ZbY6wa9wn!7 zEw3T#Q{${I;>z@53ZUcRb^8Qrf&V*6v_cd;$B;~~O5!!4m$~fhHQ$yu(7^8qUBUNzmK&|X zzFeC-3b*|knPPWuxUqA@3<>>lSco|)Wz)Ry#QK4jRK0B-m{tG&-cHvOAfi}NV&?xP zvvmGH?)sXdRAP;08Hgb^8fHS7RZ&UVr}n!gAv!_)hmCe}ddQ_+M&xH)a^{b(evvCo zE6B*I5Pcy7WLyvzQgNbslJTWd(0@PGF2>}&cEf^DXv_b38LUWW&dpvIElDy(J*)F> ziaAvFH6{Va6&8*8sA&>9%agh_O=74ep6nZv_>>c?89D}>{X2iCB`A zMB_}}61{?eKHMVZ^^2CcRM9FmGvEAe!6-{|th8Ecrk-FrxiHp$VG`IM=vdelu-_y?TZAg*BE!`kNtVLO$yg%Caa4;B`qMGk>R0ukIdk zRwc7fpH^^w`4kcV8Pz&_-B->W3y@-dA+MnQ!<;^yE|Lx}rHNEmvpYWG$1oi>?>m{# z9Iw}h52Y(OP6pqNHhx?FE^`}eRsBovpBu4yc`nHs8!l!^IlThEwuWOd%0P*(^)rI^ zb?s(2$$X+ta~i#O@y`^FH+wh$X6rkw5^iDLyXs9 zLo9ntD0{8!^!E*_Ij;q_ZDu|eY{{dvf<$!s*;vo{|Kb9^%*%N3sXIbe6p0-dETXWp0v8@fofda4=$(UdxE}40)?~N@g!o zse3ODyGe{I%H=hKlATtD0k*py|Pf4>Sp{C`!Vt{e}kGa>hL+v z3XK$#Fm&^oUyE@la%t38H0Qw0>-gXWvZ78>znLZXxRK6AScrTv^g}xFxJ;TjK1v^8 zeKpb$xSt%~oKCby(r{x$P0XZT{F?j?#+1ejkEx7a!V^}vW5tVU{fkmLOK;g1^4c!h zsz;Ib*~25RDR|%-s0tZzoSDFz^5M&-Ksw=uhJn3RFGwuL^i1yQu?n0@u zxz2V*`Nr!J7scw7f>^bS@Jfo|6}R`F&uLM4J8ObXko%3{i#OVYJ1IDRt+LVT3?+}A ztWId@MsMU;Dw)GF z=88=7ej9%>d*NK?JPsZC{+^MFdYW&)NJMV`z|XxNqhC=*$0LeJ4-IBFFbu3#Sh%U}!2W$b$bet+dH%Z%=38;T&psFEe;k(@_oe%)cPyOmh630f_1Jv8uYaVo#9K(m~R zh?#93VLrU^P*PqcauT~vMcdXVmm>dol6FJ^P+HS^ZC9RgGh4eENp>F3!W(~W_#d`) ziXP2-qPITwz^U%#t)jwbuZ+m4Qd2kfto{#V1aF@%bZ6yA{J`z1?N8Yae9{&i81q~U zp85hROe<#|f*xUSqx)vwlqt_?8{FwH#!^%iww$VU_Hq*Lbw}5(wvz%-B}XuST8KmS3s9_u3e~YRl!To* z6>n=kg`zgENG)Ui>2G7yi)2BoU%Gv;89x%iowqxQ*r^46-~=a=?F#>t{0`(t1_R(+ zm5kf>5FxG)3cNmvO&?tS0cLNBWCW#UsTQ;c7%4`vzsnYCiSCe(ejtCrZ5AV0I?y0| zHu@EpCrsf>r(2fOyV^WEvV^ZN>OQNJTd_^1Z@(jrc8Ky1t;n^@%QF{+{9c$g@*ZW* zZ(uALCfI;RywIt+D*zv=LjHa3&4Cc^x!+%;e{sIVMgQNp`UdYh*x=1JPIF_k!HsWh zHZ~jEMq~5Fwrw`H8aB3V+fFy%?)mLGyMMyWnRoEaJkKj$E^g*>(r3Nyy(ufS-hp7| z&7ne_gG!xUq*|rlz<9X>J-vWF77%2kciTpQrm?eCTju8(3DpOh(TP} z=ghWCMH%hyuK{FJE>WAO#_dkw0(?8*lca$sj^6)Y21v< zWb~qca=NG3Y9uR$R%&lIWC;8xBq+j!Q-;ns*Po~4GYaMZ5jokO2tbd6_!fHUU;_(68r(5bUycBNe zy@4lD#UryGc?bK0u)@7&MyCw?&vVEN44>;{VZJI2@hs*}Im%{hBc(q`fQG)e^EplK zgS>brz%J(0R&-=}0o%U$R5u1G90Gpy(MAJ(_@lr3@cw{RglRYK_)u&8cbPJ#pe@``lm1T@|qEGCoeDu!!_8>kqufPhqHuq=^s z0|L}+a|J#}9ExCj6F_dcD}{x5$7bDZZ7wi^~0+t{*_SP%rYjm5-7xqWjl zJFitRT^g4bc~b}Mn;|iuF+mW16LFFrOqQ$p@{Ic=R*9>E`!$2c0c?KUMmZ=h6Oa^( z8mkd^A6^M-rJ2xmYbAS_Dj+a=dN_HOSZbb}m)2%U96jK&9Ss*aKN6u*Rq6ixR4mcM zfsP$({4ehZ($OWDg0-I(@IAiH!cnPe6=x+(Lruo=7%q7b#0vR?Leg>jBZw1)f-QZj z+4W~Z58V&#lAJC{3mMUILbcsCn?;&-{)LLcrXwzHA18Tkp++4Ta_|} zy_ga=>s#0;EmgQ76^eh)0*vq$N8}-NHmbn5KEp5&KpDEF8xUu#foIBT$OKwi*B5XH z24CgFGJ&pvZ36GPQioVeTMOOExJ6oj==yj~p=X$7swV1_>0wdTw?S5k7j|qD*4hpp zzFe$xInhY4UM}We%|k3@{n-7JC0&g~xY+X)XKG>l#oxc#3CFUMlzF=PiUuyD@Qu-{ zA>rKindQt?b|`!@$DqPxRUAEmjBYYw!ut1&y(bnX!PcR+@l@2wL(G5@%OT4JzF{Pt z9^Du|m%<~bBgLV)Sc0U^;SGs;h#N9aPU%Iae(w0vG8i*lf)HZx&%WUE2;uP`Lug=q z@nMr+d+3{8KLuyv4G;%t-bO1Bo;mSq#Ny$k1G(Uf0Yx~*JD@MsAmrl^i_Am7M_7V(6eh@4MP7!baT#h`H# zfeU>3=Pb_KM(1aiEe9xIP>0W_;o?j%kImH zO#S<&i0DDWc%19;5o}ILX1Jvv!qx+!ktFCa*AME=#qd89U3{{GW{L4J2rB!GCb4pl zDJU6{U>Qb1wIERgl2Pe121$DKd`duLJ57>ivT7+^r$q(U+ z%LA(DEY%%4(bR1)$FYDhdv?M{5CiVg?5+%9)^APJT$005OnF|vO4IX%y?R@D!FgK2 zJ?W@dF|3$xj({+n8D;5dMDcvcI(DiwE@B-rkwiv>XY5IJkP#D(xJnO~`ZNX#KMX>= zU#uUTm7o;dF+rd-?0h2#^6rne zhn1|FC(G7d3RJJ@Y?u1m+zgLl68n|&MH@}N&(&(Oa*?0eMSw=Na;ZRKTiDD0Na1ic zcqh|&X(^;SlvsPdqtzantP@TASR3R)-KK-ajgN@qjU*-+GtlE6jet3HH~~PJf)26s z>mdI69T|wY(d!QnXcZUJaOV(H!L-OrMAU)txdhX0s= zrqMu*ekq8`0fI9V3I2ZW8YL*tA^zyu%e$E2En;G3dmx||W!gzcLcl;nHapfPRi8bK zqT}SNc&0gOfGdgFH`s6(=ytmT6*qb>0FcXVX?nXqIGUukUfDQJq+Z?+)lIuA-}JR( zJ^#zF{v6m(a#39p>fb0;mM)(WP)V7Im+uiJhfot{1y<9-yNGX@;9S(*TJX35;Yiq*9bFjW|TfmqCurl3t9>L#;_=I{lr0a#^>eHKeCPm_EjUN!%3U$w^zQ19OAB%}X7^K7`yG|cbrlO8a88dq1rKvg{DJ5xGV~bKzwD}d%W5Ccz{vMfd@vY(N>5V?*GZTI{ zFYb%^{tox;f#9z7%Ep^=Eug-7uuXxoUXz_-NGUM2vM%2og%^O3?t z)x%QTvFCpOE2JhDoMrPTh6OvMQrY2@#KuQiwIuLD4N(=9pRTN-(IJh}5NqLe-GMllIp zhu}b+EFA5{6Om4$vNRfF@2I~$*Sv(Amp1}e%p?kh?3=9;L2vpdX}@Rg5rf7B>sT08 zp|zYFjs9ODXlzVoLx`vCeXD?u2$epM0n1i%m#k>?=QW-`n!Fx+Pcg8Ftr_Q6M^$Oi z5vEaEs-}V_bfY9|E=fe*J6OzZ9<&9wTB;f{X8c=T8o| zSF$3vHWWeY9`iOSnf5k|Rmj;_TjEAUUcyZ08;c4<&6HzJv8omZ$ye|x#qtx738A&1 zkOcpZ;qcUrTFLx=PH%|MGB?o=0n-X5gpLsakaCKl5}ueTPD4kd5TGUowXDI%n^9R0 z-tdQAYo?c+6MnpTe};OhD;uBLpt$>pd9leF*yZSPoD7S{)X{y z0%HZZAfTYGplG5g?hvi0FjpO?8OVq5xkj*=7B+*NN?$F;+x$A-nx?Acqs#;P7;34p zv)7J;k-rnhCQ9^Mu{@oR`)J=FVkVvus zpKMeaXviOgcnSZ4&S}<#vsT2}Nh}H;B^T=ru1W_Z>`9UWVsO(OLo)-TLZSWR@tB>- zfxt-CeGhAYN^<6WW6Sha2LIPYW-1ky4y=qm{WwAXUMOuMAZ;?xA$&+(ecQcA ze#5=C3e=7Bnt&T@Z>syoF^uij{^W2;7r z%{|0wQpU?s(^sZMY=TYDe-U=xh)PPzCSGidRTNLxyK0RGM?MG7e=pts91k7$j!-6^ z)_CQ|SKM(;vuH0|=$>YonI^%ZDzGYy3IuXv&Vq8{>h1DBB@}Ub>{=Mjv1*AIg$#Gj z4IeQk`qT;hxzn0c5>j~EW~|dGg0rAQijL%R#5sB(4;y2LJ>&u%dqrT4BL{U{?v7<4I?~F@4gGoQ2;e z{(Ze9M|0FTGuqOmc-~3a7sA z#Xq-R(_LaDRx84>Nd5H#`da^8zmoWeDNunvVLPr2yc|G?;`0ojVPJ?3vV+hp7RQWg zB;`hD!VURi5REsF2D_h87%|XZyH6r9^~}S)ul+GQ=sNk&?oGBC^jqn5-}zj#spKtV zQWeNmYe1c9^s{~jZVpa1f+Rj#eLQ@@n~Q*>k$QC;3(OvvtgU4zSm7d>r|SA9L{2R? zEIsgvMX4eG01}2A6}^um|L|gZm+CYmIm96GL51GAyE^Tv_z9xL2;XyIvLuM16P6i1Jz7Xf%Dlvp0g3J=whVksr|k)28i1*%jE2sBBb~wT;w4Oy6Zi z9^ysV^$WELisX2=hmsAG*x8QGsZ$N{ObBB2)mA1lppp_BZl;ggp+yh`VhRQn0vMz- zD<7Rc^$J?OIl>y(_MN3AiT;|nHex7o{_D0*I1MV&Ek03D+03#1=OHjz_QTs_MfTBp zse|RY_3>jHjc_*G``2gYWsxX2#ytJT7(Ft;;j zfmZXX@Hhyg6SN+i264FsEb0-tAsvMynY1@_4cRgYHAqblf=b^0DI+|6J}d$1zfMjN z%#3i%8IhJ#iqeFV(++tWUe(@0jvXZ%{V(3(@CN0ahy15 ztqi=6v$?iP-~VvU?xLvV{R@}9L{4RVZg<^yKfA9M7@sqDdzu2u$5+%zo%68%8?l;L z<*Qi9=0sYfMrUdJ`s>Je)KtcEu&+s@)<5}E2vIdiDG*C6u_aLICvSXQptO}_N%Tg# zM8+-QI`6^WNlukfD@=bkn<-OpvBp|e>v)-uSVT?KW(Tjyh+PPREVmJHDjT*Q*UD+F z86z{<+N!)y-1P5^A1vqZDZe;^&>6CoIZt!EDRZtUbIedop_~61_X5MibjLz*#NoC4 ziU9mtfe?hJhKP&~Eg*mCZa^Q4&jep@QdXhSSI5@=z@?Ee6reePf&$}FwktMZg#bq` zxu;%kR9`tEu7lu#v2rzTiceTkMU_DEE^{L&p_+%o{(uKPqC$!PeT(5Z%fnppKIqSz z_vr~*?=8qEi>s`@>NIiyfS>kpk%2!a0m-yC5;VUhzC4S;nCzWFZ@TC^PphChuUa7_ zE#xUwA+#!l@F}AA`JOIt5lG@|^xf(%`qxLIb(1O8e%|$U~v$0{s zn1YCKzM`6WyF+LmftksVJ2#UAN47cQAYjEX_e6T*(R**c%}OX$cPH~v{7_VpvpY*&jg3Qu z=sEco$S7gUNY`mP|58JwZiV~Jlua*QYcZBM^c{B3|Cso3$NcEKpL8bikJIYiId zs99K)5+AgjVt7-hC;3tGrQ7jl{N*<UIirKMr2XQICG;; z9-hH-xwTHWi_`DcT_@$&xqh}GeY@EAu@u~?#p~am)}Zo#MEjS2$GM)hoxsb`SyF}k zFX;&L2wRa!Wqw9a^ie_(CL&46ksZ9v{d||{(bLchJ}LPRNx2w!ci5H*(rPFWW0(NR z8$8JW6pa)sS^CNY_U`oNs-Pl3mhDPYK=n?TEvOi-GGEP@i4;5S;9(xOK{uof7g!0HjS%9)B9LAv$g>hC;?!rplj);) z=a3nQ+x~;|D{QzUGifQAkzlEavTAI%5ky6Vi4H(*^rrGSyL@FO$$gWrBm}Z?I(X*C zrgze8Rs_!5^=*z^=V3VhzmJj+qgS;vdT}xJGP?R#;V=S{g#$z_&xd`zS97yDls)~W zETI3o30ijG{K>d80HSElB+490IxM>uGKz~fxp97Cs%ffsYGP`|X)WF@KfArx4f*)Mu7xR9HPEXEpVg3BYsa=`w~ zLW?Nu+$MtFK^$C0y>fygRAi;<`?2P!P|9-}E&UULC+x!MSILD{_{phsYL->;-H{VD zv-XxT?n5_Oepx~?aeo~_!L~Qz8FAznOirbM)W3e5<4sL$gaqVZXr-^K86i5j8_>n* z;59UhD@MSA{$vU#^5m zstP({dEkS&7A z31HQF;=`lpq6o9}sThpbWJ2uP-3}SD;);Az>vCLAsn<0oFTq1>*Xa^)&q9lGo9T#~ zaX>4}a(bEiuKTi*O}z>yn&DC*bxT&Ag;;Eg_F~i$jl+tmx)Vr0(+Bm(7(^4BWprZiR!kKBgmc(;2G2IWhwBM-kc` zbiW_k+pM?zt|ei1xp_mVPNj0=8!k}d&dk!XbK&rHWjN%47Gi0oE-gzpXqR+xo=h~6 zOx*l;kJ_(#KOo@T3ep1)E{pXPi0V1!n0rnDp~8 zv({__3ckDoGZdiUL@fOJ}=7p89~$IceE!>hZr>)mC^4#(;d z-G+7qvTIgJcg|ZViT(!*NWO1G=xTQ!eX9=VNX@JHn8t3GRbq#q8&8zieJ33rRGv5Q zn@A%Smk>enbacecCK1H#D4V5sg;q&2<1mStL`Pq%JoS?1j(OB6X8o5dB5YD`>H4l7 zbM8BdqY2Z4*2nNHJ|PLcj=U28-}5BAU7tF@b#iKU`y`QcY(3`Ic_gL+8%?ZpHX48R zwT+G!p93a)MCHziCGEMoQKsFaO_&NSTmrlG`+3yWn5$8h0yULePO=`u9UYRQJ{ip} zfoL-w^#^B6Y_r=gM6TN!X6qi#=M#1Fvp##VLj8e~CD{;yYR&w-+pTQUn z$=OtGFWTPMMxEa#`?gn(zi-e>rmcHEyuD?V==yF?g3Wb&?w_NgZtC_|Yl^)dCUp3? z_q|`XA=kMNeO|U*-`jNvqQ0eGGiI(f)NFygp2O6l;*++yXO9Qv!q!_0{CkkNX#Ty1 zVNZ5F*U=KSHZ8VHo1Ah?Xs9MC4yA?%F@z_ZU>@La(reAB2K-kEgfoOkm3ClhB<%$!0hOgg z+t`A(;VY>#AEVGeBt;g4N&5N$I0NzOt=d@RGynGCAB!`w#9jsJtfLmgl zmWkOkR_Wy{o7WscfT8E6o1#hqr;$ko8oz}~>sz}xU6 zzaLgPeg_P!=F>9vNQbNoYr;7alp4@%M>=p&FNT0|QE~lTVT@EEsbM(?O-Z9Jc@`q$kIn;~tq7R~LW)D&@LLR{7qYyWYXh*zWg zok&b5B*M5z#>T(|R((_oAozkU*#saw#)^=ErK&xuQD0Ko6?xn0wCH=owPB4Acl(- zYLs3aMXQFzqs8SbHKO1O(|9=M1Q_5HXi#Wr;2Q@)^^jC)c0%?x-bbjFY6g~`6tfMe zVBTZr%ugGS{Vk3iuoMXsBBb~3zQ;>W7oOgcg$SOKW;?+rXpfkq*Qpu3bbn7c*J*PF zPeS~AJzQs)e7lkkIpW-2ySC)iR{UC`V75Z|_c|BeHZ&EAzqiH~D}v&!0I`eKAW0|U5L58ZA=%=$M+sb=8qtYA#k3Gi%XP$Jm1V_pUSr;P-hSRYwLL^qVS)Uj zayw5vkD>@b%i-!;b2{XQS9QiXF=8l5+<~9PjzW?x6*rLIIl@xE!&S( zLWY0)qQWG0UtRewus9L3*c^Gte9^jY{K-)s3Lo0hM%-_^a&l6s0(;|rnSzdg>4sky5FGTJ9qV4&Cj)uw{O3W>|cvp&4+_cq%)2~%-aCJ5I(7wqpOOP1vJf+&G zh3`b)bCElj6s?Z-T|tuj1?XYt7+46D?qLsJki#xK6+5JwuK<+lqLOk4&R`;@g{h-x zC^hb(u=klSj{QuIasUTB$=SVR9q+Pq3Nt@}F_K8AvUtdC^AjRqwabeRd zu>Q47HvqWQ^}1X(&K`fXo_}9N?`KNRjx)%7EOCxyp^h_GiF%rZ^{`N!=$BAx<$ve) z{WrcA-ze>Y<(JcMTF51M>84u>Dq~JG=fwE<2%-B#ikkNH>yYcjg&AI3eD-OJix*Vp zT`$k+=?y>b7kx;g&VQ^4*EkQdV1^2(ONzv`KKPI7wLa#Zy@8TzDs^vAEGn+^#+7~o&3&J+P{@%!_eXcvoQlG5&mBTa`0-Afo2c@9JS(xzf*2s3 zBsO$W#L{Ae1v?Lv(Ym(s2m&?!dU}FNsq`<0+f8lx0<{(@RqT9 zjDgtf4L6XI!tGm|>v?RO!#>upI*#daG@apLc@xgj^JyNeCzm9SW2web1LmYzE>x-e z4%+rVi?nBJd1)}F&d|KyC90K^+%J;ap-VDSjbHy}6$ex5c`=tFEXlC#&qGnes1C|W zbsgvxWi0p(<$7QV&Z>)TdG}}Bl&2pA!y)`dZAPxQjwANR{iTpSI6qJ z&kqRdKz^0*cFve}`LF5c#I_OPq2nFtmD0ve)^{V->VSr#R(e0U zhbO*dQ_HJRQaDs%lr3n|uwbg4ljVB?e5Q;)`l%?FXWcyVbxXH#m)sHO!+FTF2~uks zB|knEvTuJ~MrlMn0x>VkOX*fxU3!XV8F;-1cZyWK*%-dn5p;eGGlwX3?6$VTIC!?_ zi1kB_I`O?P4MIadM_}80*gu5pcP9q;f5Nr#Xj$lDcW@($J;!h%_xxGR$)L6JAYp3Z zYUe#!7w7CTgq}jVpm?QT_0lp_E-V{eLPZQX({BEBZwG8+2(dJO{`0Ok!U7>XPcBL zd#3(7zQm10a1p9(^QFV|9YeJgjgvd_O4HQA)D0#HU=zX%JFx&Mi}jc);i3-}df$xa zj2d?}bwa$fDq_wCJ1d?z+!EMkbYaUQUki}zE+1x&goXww?Q1U%n(> zXX#U+nTlH91fG`^@bg9lBS%K2Gc^mFF4|O7rQd(Rz)>g*+PNn}>&YGlDzpCGw$x6Z zs=XSA<-S}YAIrK|8_uys?NP8IXZW#y=5NJuA?MVd9w1h%AC7Xz2qQuoXBVJEtmEl4 zF`|?nU_Jw_gxk|?8i+k$zO*lwVR$nAF<2cOQ)4Q(?$`5{zYo~UHf_j6Io$R2q2n7~ zCHwx(0`3^mA&}=d9(?Q=v`yJr>wM~2t{TbIher9$Hv%NK0rP=s?`lVNpNu;XT3}^W zMeNo~NXh*>R2Bb5C}JtTQ@G+BURyWKqY zI8jO*7qHC9?V|7dpq27})F}`N>jAX-peGowPXT4_qp_6|r<2=l$IiR;O-6-%)$>o9 z&Y$0Q(vg1fJGieKEYaQ0wBOV@;79c*1hw65$qQd!fTaA$Jc9xA5LU8ez29`{@b28| z^4k~-FB_u}ojqOnLA6y3y3Y_=oJ`bZWqGZWrKlaWg1^)sr-jaMM&+^BZ0Qsj$c+V( zCZ~qY^gt(TOnsAhx5+l}9P@Xl)6*oHLrF90*bTAEo#M%(S!qedXi2r+-RP^jsytg2E+ z_8x4ZAm;0?lN-7giBn6|3?8uJ;I%p$ZhkvX`~K&{XLLdQPGaBzlV{Y`3c+;ZG&Y0x z39MCp^3y<`58^ono}Rtqm-+5N_-HZFV=wKd^T?yiQEUQdp{t`2OK4#~*Sln;G$W)* z+}m|nINEwcms@ZDNAYl4ah+MuA=Zv_5eW&8@3BuaDO; zBm@1@AfDmGiv*J25IaxDj+HBf8bM+I#FL%F5VVo_DIrcx-&G!NJd?4$^MyuI95=-8 zM7XrOhpma}XeoV%)Y`bN!(0plQCm-VRK`{KoFEyHMUF;mA%T#(#oC%haB4`}INi_7 zAVsP=2l(~N&eiCCignsG%79f<;c(Fj9%SE7rAZc$p6&C%d~+7nK6BDz`?O$-bkUC@vLAK9pq z?$4|}SJ$KLfB~pJ1r)UQ`*Cnbnc*}~$tI^XS!OgVSve2+!N~9^yLBXBVo1eFY-g^k zZ|(TGim0H=>wVqqkJb~nG>uHbQgjrj=MtwiasC7>ewn=^-y~c-B(H6PBiTZ4Td+tr zBhthtaN$DgqZquEn$;Z~j91hP~Fg6^|h2b@F|5B%0;Y=f%#X5B*LOp<`c~rFLZwa|X zLRC=Mb1!isp%-?XZ|O8Vd;|=k#YkKQdyE9bnE(@B<4qGIR288mAs8fByrfbCWGLIz zcAzNs9`MnjZ6zi{&`a%t+x{AmLoF_Dz8ORI||WzQt`T z*L58KQ;g(pJ#+6WEvM!oRaaD>!EwRNN{xo}+!@VgcjeIVSBK~BrojtopK7n~XKj$mXlhYz4C zaUg$PF9`}#^JiXcdQSNIL!do~vapa#jZS-0l}z|`brW3G%kdLiG_e5gGcv=Z8^r&( zw6` zwlqdwwDkwC<wPz zQZpTn2i}#73pWAaVDgmJa@K1LIEKmG15qhE{@C41 z7ZdEb#pE>ts{p2M8_doV_QlW#C=417^*wDUb)0fSV*TJ5eo{aHyfU;vM@=cdqO?v> zW7d|e&09_HLo@E)JzP|~q$Z_dFlL1R?$+4E1l#4g2=zxm6HCLNcRF(#FS5h}g#Wy! zGq4y2Ri=s`&sw9!APARgo4nmAMn%enLuYLeW>3l}ohua#2)M#QKg6}Now~VZbFh==UG-X=3MR>A`5gPrHtC~=g7euhTt*@T z1Iou1tN-=vpmW%K{N;y?Cgi!()T#B9`@MA6b+k2aUT<0!^XK1zNrAlEA&S7X7+^%{6Dkqzv1!@E)2#6*R=25^^E~x7pOs|_!<>3AN&ChV2%KsM>NqP&Rthw57 zL0C75Xozy5tfXd_OCy1GU3VyxN{d3iU;<{1mR~t;v={)@-{S~NI~BFFOL?{rDnmjI zG<4$@MjSyBI-o0dMUo{LnNh1OTowchPF+bMsA5*G$v?-PB5r1O#v~|)as~61G(l0v z1Jro8mCStqIM~HVn;?!^>`6#12JA~j6at?_uJWz+StyZTXW1yTJyri?X-VZ(Z7M4k z4^1mo>6oW~B?J%xGwnBqxwy(6YT`dh8fnny{b-|1G%oztGmgOv{a|;fZS*?IqXo8s zu8f?0PF=7je(l-NP*WR;hY@E2l*R@$D%vD7L;z>~Qu)8$Dd`H+#q)IC<3vuKd9?bD z{4Xz~jFIsB9AYA}n5Z!23EYMSSm+jxZ~FgDd}o*753%nyM;vyn+nlS?JMLl@eXH4> z&X5toX?P?^qjOFh29u;^<_fOOX4c9Y(shn_VEBw!m=t<;nS=p#WVF3*aNo|ku68Qb zP})8VotT8vsTf=ak{GW%3o&Zo4Yz@4^pXkH5`LEZeNg_;@;f3bsxxoLBxf8pSl#6& z-(dTZ-$!-j#kiQPk(9*kdQP&#dy#LpyYdrb&L`;A%9s5iW7@@Z#K zL1Eqr7-EUzDKum}(Dhvw)h#jZ>n}JiEUGx`S^#B>AZ}05!aN+ZOT*|dD&|tUTDZw( zV2>V*=&@T`zG7l&&054{6EeIb1<2e^doB<*$59S6A zYi|6-&Qqs~Guvw4I)b)u$lL6m4m3Ka3JWOBi_(&eEyfQv_;(}@&q;~`XGcQ{Hj(E< zEK7r+XK>(bQIJ63IPU1K2N~)__64LF?;Ryg_#;L__sKah*Dgibaq+6s!TFvIe~-(` zs{vyL9rZ#M-?y7Kf-|fl3O~iy?er?Z9 zkR`JDuWk}c_>KCR;1>Pn?`ty%vJ5pPjSGS!RWCjQkQm5H>=DrG+Cz_46!}L{C+pk1JDE(^>h3rp?U!Klg2_CI~;I^``=nQLQn>#8fVd#O)V+xd4 zlo?s)8M%nk9(7mqe47&%ZC~Y(g4{7W^iQr)Ub@A%tsz6LZS%EY}zlyqX27<^(B-JFFj*Y1n*1Q`PJi>&8}N`sW;uokJ^z=*HBV8)W~p4;r69| z8*J^aYC`@p9WuXzTPxR|Z6di8tR%@2i1|?S41%;k(%uhsemGf`Brz?Z0e)j1<#K}A znA`X}aJ$+|-Bw&-ZRlRaYdb^CWi7-su^sC)u+-Z6cIGHntyRxP2kk}r`F9JrUvhxN z_gjG^8rfBR892f=xB+MEWWUUOrk;wuTsddl={cFUp zLp6nMnnXf^K}L$Udg=YvH2A?xs|z7GkFX_%SvfwM;_C9dHV`GS$+jiPDzQ|PwOn{U zBh}Qg(^N1G6msb#lui^+((Dh2tRV!HRreR2pb)ClG+~T+u=0^!wd|MXT2_`>RjxNH z)JIt3SZZ-2Ohe7>_0TuLmM!2;Lnk%6Zg$d>S@oAlABK8KHO)#mwK@kjbF^An;r+88 zcgN1oWN~dYxIwL6yb!cer<$AVC!=Q?U>0JLI0mTubT=O{N zEHxS>iT-RwMoDm)knZ}Zy3k>4d_IcPY=w1TzkRsf+gj9tpQIEAZk{{8;NZBzP!Q|% zVn%HQI>!Y%_GCHlbAt|MyS;uMLB;sy}9KBPw}?9>W!)pRNG&t1160UqK0v zqxq+xp+S#q1Dt=R$R=G2Y(Si$I7}sa0adT!#6=TiGHW10q)AHE7B?&#WWgurh1kHR z75pW5zNddi18L;SB?cmE>&H6dP46^it9Eou%G**Y&&8j+w)+aT-ybKDlDjjLIjOh% zqy{G@32?%5`u!Q{#puFlpK>#~-?rgH+MVR&9}dvHr}^Z^UXP}G=ZtNZmf!)~%fc?7t?As&nKRe;pZ=zNBlSD2HPAWWe??5hKlja~Qpp%Mijq$_Pwf zvGoKhBMnw-tp8O6L7y46n6lGY5x`DhRnP|7!3>^)6A+Y9*NM@D1QiURE)6wFX{ES< zF0eMHp6T}gRYC~GX!_3(V^)j?@5&gs(wL77UHc_hJtB2$LV8(Z)7Co#pkTEFo$!5IyqG+ z72@tUNOcB24Y1Wy*jM&dx&^C`RQTGTj$F(0|G8N~xW!Egd3@mvgM=JONX;#)1Nu!H zxv$Hm%&se_HJUiiZwXR^9Ny3W+E)A4-L^#p23^K%WmX9gkNJ(^;2n)857g})9R4=f z*GNMr7*aS-6JgwO`^sMkFNmLJAyy&FW~oxq5ujoP@a$bHJ!kD1wxn?&hle8Yw2Q!V z4j%kG-w2=x1n2jkAP&{w&@IhOj`&Fx^nmrE&P9+nL{t>Cc6IxuqOs0nF<}40IvMG7 zZgJ*grnV3C3* z+93-m5{k=dKNS;kaEpTs1ET<7W|)=w49JyH zr{2@}U9XdrW{9z7NlUxhKupxjewtbsC$HM|1oq@td^|4&r~}YJtjRTS;oh-bL8$(3 z(IjKkffcB4w_#J}k1{oY`W_7J{!sNwBsOuS1m|pn%;9{wvt;{cg+OA@I|-Nw`i)3N z7bl&XW@7sZb^dxN*ea^i|L?Tps9`h*U$bP{>>EOfv`ULOTJ@Gj`>)v zDyyY=G4w-I|5HaPd#*In0^k&alX@HmieACOkdO)wnBOnKyII3{CKo=WK-A2q55(Yx zzCEWRiG36~%T~}`aD|v8KQ12Dr&o2YuY`*rpAwN~!TyzwzIJ`zG5P36H@TCqVOBe>uih+#l1B^#U(Zif-bq%jHYJ^|41c$QGk~R( zq-L9^S~7=DKPTG3wJ67{{QW;z0K87yNX$JoN*09rh5|$V8FQ8?YP6AzVMJ^X7jvi& z*0rA}dxQ~fYoJ5}1%MPE(dq(#WX$@rOk9c;SH|nBwax5YSd~Ay30mKU8~g*uB_{r9 z0m%Oi69GvO5tpV#4yGKL(5nObYqJ-^gR4K4IJV|3Z@NG+vHgPyapV0fpvXeZI9F^^ zUzj9c90TZy=SlMQ6os*rn7S?OoM=fm1|5Qq&d>oW{6vA?XsaE1ojA$TNxHt3jz(=5 zsWeAJ7Ny#pJ8|X=UpDvXFCz>T4$K~x0_gC`=eYnE_F|SWq9ZL9#)?Kn?A}yh8 z{~!!zPY%l8o~7Y&!24C3-S}$Yp3Q($cvfJ1UNk_kt3|=2aih8#4UTwvzd>eUU&y&p zTM0+7|6ohO0QoyZt408u0NU5&=I-9QR4mGz0g7#rtHN_1H2@ZzCxnZ(e-?JQhHY)Z z;`}<~MhZ>9oj~ViJdS4|a47;>^studT5(wc6Y^HOQ1Jk#(h@~hN+Mvg;ySV=57a*E)MKr zG9W~f@UAom?m69XYlFjhA<)S!;fY$#NZbS>ksZ_Mv4Gw7Sfdmu#)IO)U;PvD19~d) zGLQD$XY1O!!^mU$}%F~GS?=qd=o-n(54 zgJ>C{z=oj?LAMKLXF89Ti1c=>!ke+-3Z_D`reGTrdV-dBH+q)CY(@SM6?n~{+YE9B zAk!?%y58VUl3oYCam zww6eDF@1cf_})?&votrh%vy|0UPxVfXH4Q_j~9j#6PkH;4mP$P_;1oh>~G z+EhyvArwRcVo_Bx15w*6H*YLMP=X_cBSgybpTjwZF1IoGB+rPzfF3!*nFRENHs@oz z4_xHU`{w3#IYlU0CE|W~bqPtiWS!_hbE?uHQu>rKd>8D%HttVPS>=5k)OgdOkCAO` z`x8&mqgYa8!imVW<&$LBU;c(}B+X4i5joZ`tev3MSafb%8fPJ1{lUG-w4|prJI1{9 z&5B#FEfRXV20-ee@x+Q%nAcWTipL=2EufZvQ2fIF2kyVVbnE~2rT*Ng+A#X;5jJas zjOCjGB-02floBC*B;SxqxzlKx+WFIIgq=}4c@ zKIo&K8HDy#R_Rc#yNvEp5_w6h8J9$mgTKtT*|DBDkOK&(j7I;K7ge}Aq9K?W>x;7% z)<)){D?kyw?en#_ilodQKNOYhHvgM9^1gl@`tpbeCY2ykS&&Orj;4G-v2C-B;e%K} z#+jga+Kf#iQD7je3#5vOI`YDLma+QMhlK6zRWgeZKL|Wg_+NazV{{~M)b2g8ZQJSC zwv&l%TN86)I}_VZ$JWHQJ+Y0M=Xqi}n7M?^qL3Du@a?~8(SP0x(6mR5+mIt@;YMqo z2`qtnf+n<*me&8MlEI7Zm5VP=7+=NnV5@gtUds<5qt%2}2daa|tldhj)atSwvL=<( znK7)+@PCAtA`f)gsBOD*=cVP)0+IVl&#Sp_ber7t9Q@Vfd|-BvuCsuQ^IM*#G{b4y@*M~ebYm|%7>BQ?F8i!SHhqr%EYb%KDGnBUY=qHy)9Hslg z#rcJFHT^oMQO0OYh9gYD4SO&l9BUfRJGp7}D7a6vEdRq>=Q)+bS!byIX0_&HSiF# zKyI`uOa2dT1j#$`bmVOfq;3!%bhj6VzTKR}8yuw)^)V!@2kdE8Kc2@r$$I{fW^EMe zF4_kXM0FuRr9~FYn+yGS*)~*O1={4*ufs@u)k|M%1m-c-6&qw=4btFIi!Y6fQYGL4 zzlc(A*z1j;@PBrd3J3YUc92AI9BrjS6e0;XiA0D?^s|2%qLMU+5JDA1f2G5w>i9~u6H!d=o|ZE zsx_S&5gwwMWRdag@n+~mhRp6W76)iyNZ{A81j#!s_^SE4-wH>`xxLuIkCN{r+@hX-vfyetq#q=;6;}>X5KWzN)Y)_l|Xr-;7bl zm!f_!%&z&fEKC&i?9a6?Xr?wEvItf3S@5cm7W5iOCc~JGn%aJ*1Z3 z1~=6eeN#~lnr;?P=95dAC!!Gv;JYzF5+U>z-4Sl&)S5C2q7`|k0#y;Mt@sMZw>|V8MrI%iS^*R#F;XJ$j4f3^hEdaMUO>Gz51} z*j&Wvx!=YtnNpB0hDb;!e%vDKMwj~|i1m{0&gTvc6QLq-3NBqYp(}_`{N@QK)GSGs z>r9<+etL0;S5AQl!5?wT|L30#wIbT4ysh;Dh!!<=U~YgcGfM7?$;QY#L8tOM9l?f+ zR^S#7&|-6n_+DXQ$bkxvT;pKxQnqB^>Zx$logU){{hRT)pB=fS#HK+vd;FFWQj=6d z;Dj>Ge#1YTq6{yr{opDg|A`WZB^ja4T2UGjk>GdF^VoV=n9i#H6Q&heS9L;JN3Kk3 zzqV%{o6F^}8Q&c^%m&NR`Eu|WoYHHba(9TkypjyRpi-T*RYQ0C=T;1~yd%t@e0QpK zUzgx9e)~CgMePSynd}-P!#^sF&mnuCZP;#cv3z4QP6n|OEJ(P)HLxHeOG=0>mw@2G zAFBU`LLJjzn$ti225n4pZO?S$8Q&i+j=b(=k4fk1;o!SX}?i*dC%OpZ3az)7T!z0TAhg@{wb z+MgE1Wm^dU=Q8DRT*f5#L>w>)Vr<#FkgH#80nQTrX?pw@Goi$ce+pYvuq~=qlRrDq z^U;RM*IevgKnLc}yN;o5JLaqH>0fIww66ES^Wa>d7M2*PYCvG4s;{AAVAwLyD=ec! z1~uT)A_qS)-S;-Ki8oL%Mi#(YWnPywVKo@^1vOjva|KmmX!;vm8yydnu$7U19&hDo%v^F+MXXwnx zNLUhwpW=Y3VLHLeS{CKCUGscKYxR;pJkxLpK$yFqqrU|-2Y{**uq|x~Y>nZ`f--4w z5{5jd>W;HBpZ7~9aAAaYDA{8suzKA@`YoJf?F(XLsI(A|;$eJ!r6J?f2okIrkFqw5 zY#P@B#024m8_11&KwlR5=WgOw==D0T3e;6Lsz^b?EVw!(y9UVL@X9Dynt`vwG2mK9 zGBYaR{JsAEmn8%^eGeaH%GwcPxTAV;0~Kn{sp{&{MORxDWi8PrWcS{CWuk*`qWf|P zP)Aw125#-Y2Y@tSPb8WA*EI=W9^38bmQ-XAnG!8auqEb*=!!MuzRhC2tzQNbI_DxU>}7ypdCOTSS5 z^Kxor&_!$D580#`7*E`34Di%5O&Qz#?;*r5B6J6-q83H)_k1ptMZSLEd~426(H3#- z*8b~ubcm);iOA^}hZ2V}*yKo3GdecL1*PL$2#WC`)lcH$IcH`+L))afIsI*Mz;dO`|UBpUwh2BO%(B6{)a$h+lOOo z3@w6hE*M3PjIj1Mc{>+hY;VsG5yqNEeet<#YHSL4=Z@jTg{Iy=k?q|L7_G{uAvG!P_vnDLzw~wpQCS=tXir<}!(>T<(xuD*Y;Sf&YiS4>^>e~R1+EOHCz&XP@O>6f;4 z1PtQ{GaL~~=qn1)$!OGc2zfuhhSmm;E<8}gVG9(dr-YbsY(jr1a&g9lfuoZV-cSq? zA0alf-zGGV*f2&*DCnRHuJNy36HmiEE5sSgq5TSy87E#>8Eln^?5a-7VR^2>%m3~` zU&)0j>2?geP`7IMcG}ZcPV*{Jo^rK&aTxINZ%LiAgN@$|a64X};A<e^?C)GZoGi zJ+hj!V0p>^Zc_`xl-dx`XVxDWs12)(7aKX&Jtp-=AR9;xK{JINxT%0>oh(&HXmA;L z?GbF}k;_?rZEI~6MfJg6yIGT65yGe}$9&jIlB6hcRLsQ+qdD!cEANYTbLj{%9Zj8J zhc>^L_)~-jP{w%NnzcGzoNNh@7vogqu;c%y%zQ?xwymI#PG6}`=$FmCnG5 zw+R;1uH5R};$C4qG#PV^OfVGtKzrkrmX-?jRSQFf1w?894a$8@uAYYYzStgync3Xw z;Xh0L?s;Ve%xIC{)=Y*PwX|T1>Og;rnA%e1-qB}5M$~1xL=pUjJH(aT#26?J3$3w= z$^|=oH$^4AxXk(F#M2Z7 z-vtb{)oz8~XNZI1Vl+HGd#vK_6W4$!Q!)gE`~J1I0(|7&yNmjj6Kd8T)k|+xkz_9W zH=#8|Y`!u0!!X92C{j5A1m5Isi^aTO>{{-!O?D1~{FzMYFYgzYMn7zg;8>^m(5NVV zuE3-&vu#C@0a(vq=|pToi`N`Trek{8LBL2a=9YF86&4xoqA;BnLn>PPf#evfD#50o zCNG9S`PgZstkb`wha#fGl zZYTwM96<)ULWLDq&fG99kcHC@&Pw-^Bkx`*2Nx?mkUXhQZ$1s63c{)G^RMHRAl z5B6%{42j~%}zM{r;2y^E@fhA1cne=q6BKqSUi zhtxZk1}eyi@D8E4n_G}0;VC}b!`4I`HH3+w=4BRGw?3XG>bXKg++ny-N20A`Zq-2e zRWrbF0P4SSB5_L>Mr!rYumo1mrxAnw*UUKgSx8$n1OZZ$h2qHmxbJuJ4R1b&KB|Ss z|H07Sp>hVV9-x|G{ZybiMSztruRL3m19e@Q(Ceu@oM>)exR!LjN1UH~BVh@1MI(Zo z=|UPVMOSl_H`u(!hka%t1RIyq)*!3wP=BxpSZYtguB$+wrV^Vb83*A9MU-Ua4BqX( z;rM@?l_Lb`e?yC}60Iv2>pprkr&x@Iw*9d`;F&%?-+cQ_CU=HeIxL&{0NekE+O@))+$I{A1Wt!$s zvS|lHGMRG*GP;yrlxf(1Rg~CDVQDYzRYfXEIkFYx;4Ir4;Wn~O6Enu4Y6efqau=;Z z7VB`6rLz~I=8~paX$NIsCwR{x&e3&E7K_7%W#wL%L|g~Ddg>?^6pF=29Vz1q)Etkn zbu_T*YVEe^mD81f@X|0`O%e1OwsHB~{Ox&Z%n)m`#Yk(IVMA|6KL~#v_n$yy&RQuE zlSR{ojv0OLI?K)v#>xLkEOco!(RUj@8zosixb`&+f-SFUypG1`Qs}+P{7%xTW?rM5 zIxW9?k=?9hkSsm`yR_(WsfwjDCKH>(L7!`;U#79icERnXc?)(qABQ^wCdm_y12BLH z`kg2yCP1a&@%*>jMwWLHKFikD1Rj@?*7AGGC8+ZiWuXS(2r>e~;efoV`_^T5$h4h9>vroLM<|`v-4;#EHfyip^dyno8z}Wt#I~;{748_!U?gm4^#yD_tqQz+V zIppBK!c_l2(~&)?1@Lwn3>6ztm)RK0ORLHAoq%e~-}KjV8GJoRW*jQV`A0s@L$y3f zZufv4`brx?RrUEU>3sElui zNvjl89C--0O3Ze7Y-A*s`!Jq@6$2mr%cBK8+XZKX z7d37gd;8|<98@NHC#(94+P*O?Y`lQ%`E>{T;mNFNSv-XQ#(YEH4>A z7$ze4zR&R{?bn&W-K#)+x^_izC9cvU8IQOq5nJ_?f|D{9=AUKRo;t?nn~-7R@P?Zo zXoOb5sOO4Kr;5x?&tv<9G*m1#5kI`OPr`~0(N(EBG_6<{0o;T)Nwl&0;TQQq|Vb6ev zNLzeV&1H+$MpVdrRgPFyEzho&%oHDnj!q-W`(6Aw4lAIoul9XBAG?s?NW*mQ_XDw(o2 z-{pDh%t(Q7J0tZ2JGf2ES;W_`xN7?VxFI8gaWu=;#TY7R%p4`2tXH-5&=zmCgW?2F zL%p_Hya@eTpI?B-=Vb>%CFs~6=PXsatRrt8T6!z7L*aOxUaCGTk9c$rIyzWCh`_4+ zH(7Wmrh##m6PA7jmoVc>!%|ThCtASlrB#VfOBV~rhY_bOfVt|8a%20Ouly&>rEyfW z`by|!>6aj1)~M1@`zD($sHCMD5N(6vYLoUWjjDVXLV9dmzKt}$iP3A6d6jcpfE91kb0ibp zi5^?-Duq}Vh#{0Qcr#A3a1h`C}3m4ok{OctRg_QIM7PMTy>!4K= zO>y7Auwbnfr@a$?AZu)=z)#F2gMUAn50&>y(EQeS( z`@eRw#qvPwmmJ8^wKPKeOb;;P+Tsz9d7sNx9{6VG0;BBR01zAZ zZIydB%VUH$Vb^)voYtdOmv=WWeV$l;sCRQ{38^AQCri%j`PHSoUa!q%;!3_OFZp3M zfvbP=B-i~9!mLo3u9UTSjUYdz)2?Q@q0e6=VZSdmgIwhDjV815{Nq3v^zw^iwON6$ zr4;6@p)-0Oon=E1Vijk{^2a`X9g z!$XS{LVP@DpD_jO&K3CjNO#ctZix>mljy=48Iepdq-s3<{!|Df^uAZhf8BmGZdDc% zS3*Y*DOJF%qSL@Q_KQ@iVK?6@G(RBAWih|bCX%D)b-au&Md{V!pER@ZORV6+w{Y0_ zrUSY(c8(N_^)@5lf6v)YX9@UT2xyU8S8xfRBGKCYs64Qw*B;Y0Tqo) zE>lLc1W{uIu@NHa?RK^7Q3R3E&lDbXmqlwbbB4INBx7l-s<~$Vja3{WQ*r!{alzbi zB>H#IfH}pA)*4Z&v-&Rz-Fz;m-;$y*`9Dlp&Cq9tiz?s?Lo0y>;WXOx=3HgqIP_LD zJb|B!NNFI4@C$Bxg$Y^(IVJ_!i`1l5PS#Qu)|M1UYk{>PXrH4aEz{Mn=c~=d`_3|R zHzhgx<~RBKtqRuS?|D4)*RtOh%<}Pq6y^@@sLMU&lx~uUCeadhj!q(Dv*uYpFH0kXyk1H7=PIt_%DSM58*n4%%dvyCkHE+4mJ;jWa<1K|~F zdl$AMT^ZvTG{i-@g${*bnHAeaHiFX|e-Quk1~K?~Sh5E)Y|na7&Ng82hNnjLK^>rD zGb|U}hL!)PL>H=$*rsplj3h2IXzVM+zO3xUVhPO6K*P`s0$=|znFUbmas`JOz-VCS z_g&f)$oIctK2#&cCjD062-wC^k?)MqyS5R3rnOTp8r<`ENbFi?XI>A&3PO}Or;3ce zH2J_gl%EQ`KJvtyQINedXTz01ns^qVjREt(>aOj70AISiO0ouEOH?*bXoh=h-SD5uVO4Z2m;8 zg>gUtJ9_J8 zNnZ&B?RFz}ZW&gvR!NRcGpXVAwKYJrV6G@$FO0|~TTgGZ*d0Y^ZH3iIs%qt783G<8 zr6s{#if4KRN{#FgGeqkf^l&QomG=gC#@Ni@(_en4>^&Oc+#D4Vvj1N#fZx>J7a9}# z+;b0n`r}r@_a~UIp945Pq+ak;5SY1L##NXot%OJ+>EXV&w3!2I>RO^8S@y?{{-pJ~ zN5%*lznmE1Y|D@$Vey#HmvFA~#}(VonKfR>%z{{jU)TGPCwz9ETO@Y4rUnH*$T8=k z(-k!14%5wQTEh*JWr7X+cmOjZ1*fJYkLIn@Z5?n=32i!vw#+$Nr@&o zR@gcf)3b(=ObKp35*?Wi0%f@YIyYctSklf-u)xe$lN< zv!ntZQXDvuXEP79N{Ykd7z6g4uRv_HHPKfI!nFuOq&OIFqQwb9)(TE$+3Y4uiO@qD zn&XZmPwO668}=O204oO4OmVmCE;4z_irrfzk4m!%E}}20VtAkzn0lzb7WOk*4QhYm zVE}h@!n1t_N^LT?N$2flY4oUl8(Ai0o|RJo$xHV*qCA$X;7D)OT$TOBsmp&=4RB-D z0*tVQE-Kl{EmjJps)_bQ=c@k4yCo9+zs)XPg)d`B&$NN3@S`xc6=JoDm0>6 zyJ^y7@6lOle(p-vQE~G}gS1+3C>=I@`H36IcZ9bU2SPThvbbk(Shf`asl=Kw4X9S9 zTtolX!UFb(i65iMjsIk!f5j&17mqn*iHFSesThxGgcxiG;q`fy12E2Zoro6B?t9db zNH~;})0+nB;%Q>~Srv3cY=1QC!MISP$w@q_RZtgHS82J2hC3Fz45}Kijd6rc?{`L; z&Tj{&n6==D(zJd>z2-Qw@WbbywyXkrz5K49H2B$BUXhw%|6{M#T3ZzMWP+vQYHx_4-7a~>?gz_9`9B7f zw|`euap?Xt)+jJRd9X)TU)()ejFbSg|0oRC149GBs2QFhmMNAPb`_ zAUtX2J@IX2JS(WW5?{*vD=GmSE}fnN!o|Cs%X z^SK95RAp1}i$DuXBu}$rl)08kP=evfO#}p#+#>v`2`D^B9AX9eNTd?Em+%HdAF}(( ziFFVkI=#iP!JTc@dnPn_;Nyo=$~bb!1)N^Ec#%TL&7PW9RKaNpVBpjRTU0T4Xex7@=RRmS5mg$dHdR`g2WQ`$gH86GDy=+k6{>8XY-r zaYAgpQAN9?E5ud$crTMEU%W2*Hm^U~ovxse4D#e2kPY4})plmIFAqm{l9c7Cx+tG= z_3!e1Aj8MdW!?;VzJz<4G%L_3bU*{yCt|g|S~x^;mURg-nVR*iOF}ghC)apDhHCAT&i{O$Ps!&*8e?$%5 z)E;UxF!U7HY~s+{+rP+zM01azKHCGH(5(JHvPx%=11Rdd4j17W`#<3#&n!ZU}P73xbQ<$$UG@c(W#orp<#@|Yz zzmqJ;ZVEIycK>BwH404cA#Uodd_dk&pH6L7^6-=&1g^%^5HFKY)8k&BFuS4kJq*hMfw)MR`*ygsWkys>@bl4e{0w?> z?C7`M?ySNypFncPA$B+M3Nd6TkVOCJ1nuNFLn7jFB`g+w<#;Fi7}GnC#gKMV+-uNu zfVe7BR?(d+t;g{$sp{q#amqbLAo~<8hmrYq>d(oK=8?JY`OjE{-J>@OvbTJ^$M1LJ zzB>$w+LxH2n2~)vOf*qn*8}GEwv+iY&^Q|mKw|Fn!#_T5Gql@2(n?kG%_s0Dl884^ z!tJbB1Z6{dMusUU;gE@jf%pZh=W1{c%}6spn{pJSqwOs*cFN_~HGKCOh- zd;NJK?8GbFhAa{%_|Fhg%1t85%DLv*rKbP?22X7;Q}Azaccw{(?ewH@aTW^dLYOmt4%O`BFl`v_XvDo4{dM}JvJiV3$) zNkt0Ah$b2;-bE)?Sx&fs-isJ`*<=M^z86now1T0VG3~uYZlY|C8k(!PkcH%KY>hpe zJCXpgVjA2HOQhqvnOSx>#sZtZUNIaZb9-hi#scmtKp^3%UzoekV3`dCJ|2=&(|DVh ziE!Z(D@`yo8U0tGGtXWS>%TU3*ji522)hC&HG)P+a{ z_^vtlJO?ozttY5-C&6!%JH0PIe_2vS#?yhe#!bJ*A!-syb!q8<(hk>&Pt0BYU-lLu zt(<^Kk6Tk+pL=VG<~Ji#(=&#b$KD2RI}}EQRy0-2S~64(b44WQJt#CH0aI$_atVq( zwoF6>$v1WWIfB0XBwQhBEG z4a_8-P2WFg6srV#2ptkKQ_k&5wRvj8Hubulh~OuQj8vwOb`}ZJsrq9qNP_mXWWJb= zIvR+>xF7wML5fuS>lgcvkykEwDw1@Ys?&0H44R$D)zWjCxqh%4NV+H+K>rJst{}Mu z*8X_-B^RM)Y5`q!+2KJ_NKE+CmaHJmHfyKlxQ`GaS}ytMCij5oLc5)vvN2Kl z2WcYYtjQ+Q2D~mJ=!YgCN4wShXC`m#iLtKcfO6YvVTQ5NOtv#<|22~pChPC(-p#Jv z)RKflNh$3W9%M?0D``nvQMUA+v?#qYznX0ykVb4=z(&GZz=K_(3H~HX`>q2`0rO-nAx^!b zE}rsBMjcKPD>s8$v`ct>5J>GrD+`5;pumX1UgOUImxgvp4r_k+LE{6}k(8#$Wt;>*F}7He%?c-Z`h z&r#w|!lgDd;d}9Hz$y3XW*GTK2PP0Kek`4#rT$L#`L-x z6sgbawiQ-7mHC&mG!qmN@`Jj9wM{=g1wO(GP!7VO$vk8YCT7b^pdSr410;UTd6#(OEr}$HB!p$aQZ)hOHqWJIZC3g zKw}fKDK2gX$$Sm+0kl}_!B2tfp}u%EE=-tX$54NfZBmaW7$Rdz-bfDzO<3%a>Aln` zN|qMnH*a4))aI!b2gNzLIn6oKNLK|AE88pRFEI zi0`0LKzTn^cE!Mw4qvU*R?)$R1m;{-*2i6OmXNbJt1@i@Y*t?^k~TJ;n6EGyeX*%b zMahWe0?;wfjAi4syB&zu)qZC}M=gbRj}s;nhMP2!A0ukAA|{e1){2N@Ne*SwTL*3iGSPEMbFIr;Xt0>Zgm$dUt81-YR5;RxKP! zz-XK1j1@xDjbYN|tKZcJO=l;vY%&E|P>Yj2J08RWy$1Idc|9W_+52!&_H%hVtOU`^ z{pigu`(=rs6S~Dq1r;#1h#Tvs^r*9}SLB#aqmCohXt~k!yU?2Ajz>qcx&L8=T>TMX zzzw}6AeEXp^drr5nQ2YD*%Bvp&h!V}os3&UnP4Lo9m7g+96kDwnpH*^6x5JsiCRri zKGG*zGxU&jf%Jt(N+)egbAl|WWhX^FVm!;B!U@c>c%u^uNzj)P@y>NJp(gvfN?Gv! zB!^3HrxnZxM z3sHOwcc(C0K576VCh;Om)~DjzkwmBDj4h|ytLXs3;hLq&l#Ce zK}^&IisPC=+BQ09cx(kcZfHtI3-j~$V69joZ?HDf}PxvFVy4Ry0>ew@<}R7 zPaN%vf8yULNoT}5Ep7186@KmK*qSxl>=OqoXv|-EC$iAkNjcV2YK>AdiUhB))uD~r z6;=?dHcupWx8geBh*m9CoVx+DOkHv;ewH8h>taqgLN6^8{5igbuL*0bgR6*MuV~bo zw)&1Mq^h`ke|D^KI+h6BCPBB`_@jZOYy=@p@J^9cPqYZS^za}%ry1-ntNwodW=ji$ zgdMozr$mRUaI7CTA$N+`Ge9KZX0-2D%N;EKQL`XzSwRY|)TkG^?;oBM+i zP9KB4Wwl{OD|WL?ZFWlLnR8NVs(TZieV{QuA4&`NqFYoAeRim1PCq_$>asRMr3#db zlBl_hw|hyMgdHNsp=FoExIH{?T`rpABd?G7iM`q&EfS!PS-cNb*eoHC64ieY`Yk~B zb;-91?kay9RJ>hM`f108E1BB_lwQVWtUBAJG4X0_Vhlyzv^zVQ+Gry3*3TJrAGCB+ zn!Q`Zo@N*8G)gk+=`W|XED~%_uA(<4Wk-eY$jK=>L!~%_9(3J9JqzelTaK!dCdbYu z1=`VvMWkh~#UxzJ^A}7`6G>u|=_LeUd3={i5G3Agd{PYIXF*1DqAh!=Z(*pQY$4g3 z2pt`ZpK{sG6g&zFm*N!OO`&y>BvZF2Fd8k-)+Fo8e(EBt?KG##n=8zweb}utD62wT zP&989V6>klhyeIL%OVp}1WO97pYge$x-70T!Dm5hS(Dg`I>7y79^1RTdxtW;+(I)g zV)GkO#{2+AQQKW1fk>lqlKi!Kc%5PubXBzCzl-{#2$x82ft~n?!3RG?dw5^|`t@KBqzjCgW zhX-Lr$A=gJwvk&`0}u-aM4mzOD3Qbe2{fQYCU=P@;3{m?Yb|{L!@ALGS3c zw(6~y@hmEw{7}C4&WaeBZMo6&BvACSftZ?UsJ%Il(<25yfJHW(ROchL3Zs6WhRI6< zlj|EL1V$vg>-n>;q0jwP!Szzk@^0E#ap(bicjB#W` zoIjiDAXo5?TU!fpDd-av^pJcNfY7)Urbbs-B`k1OlzU*giAAfYCeciACmyzl1BA>oK18HX(@$U`3*srs~JT<$uA;!W_DC2CQI z|9$lhA(wFk*Q8xjg0~KmB-#9(B#&zNY87H!Otzp{s7dFrqxvP6mQCraEG?X->cSG; z&r;;>4_^dAAp<@#lw%0p6o;dTw^%XUPn0E8$fxBru>LRZGUW;dFiK!h7K9yFC5zn$ z`x1T5ksBf(A`aT+7{Fnl(qSD$D=w5hKt$jeyBN|zKi?vZgk z2r_?9^kXcSb_r;Z9O%!ZG6GfB)myjY9 z01i=jMFIkQ1e9Eg>)@PG8SQAR*1%L0*(<+}xOY`PVL`lT!cb^D;-PpyT^W}@kT|YU zG9b=!7!R@wV=!uz35%JutnW)B%>nguGc_tLh+i#Ii-?&l>;8>X5|!vI$(8cIZy;7q z>Fi-gR@Nze@167AqQ(4=LD}uz|xNka6IbU!B=u$ag(**0ChbNouok(5221>?v zZvW?W;Jz;g@h6(2_0HHzX~oAvUJs?Ttw*yTf6+U#$e`E*@gtSAZM?o=C~Y6a9B{6? z!eB9vD$2cmIhrW)p8p#X!nE&Px^7nPC;B^+$YAU8s9X+>^=?<2`4xbbp@$;vTt;HDZfi9yCqu-6cVg{T zHuu0k=N~D;ye);DuFtE_WAx&q@v~=Z>l{;87n+WSZO=86^)^-Y^5av6d>5OsTgdBS zxh%hZJ?tx)071VPXLH?$TM(@LcrRa5aQt4dM!c3}Q_??Qx98w!GQ;s zeLy!58nym-YxL$gDj7m+{^NnmHrunf=`AuJ(^lJK6KZi9#@!bgfCV8Pd(G=+?tbQI zpb?SpMPGAAN!jiXhqSEWA07wo5d7pX9UJx}dxl3GXnK@q;BC+;zO>l%)gMqCUtM1n z8=4hCEDXnmN@=C*K};xzT52dR#j(81wW9fgCsfv50~rrZu$21CH8^p(uz2zcO#%&@ zPzfj0o=%5%*@9}`*?A4FTw<^g1P}@+9&x`}#8IJjfrv{+4kK<}%! z3M117Yv)xQRRqGPYqxP$cp2?bV{4run4Ls~*iBRVqe5yO& zdUTrJn=B`)L*8ND?sRNR$v~~?N80DDgN=)d;VQAg8wxlP*o#$Q zg22+!SfjqC=;%ydk67h|O51ASr+b^<<9*Y<@`6NW72KbC$B&3dLN@T`@$3wB zBZL3Fii+1g6=|P{YtOzA*eK0wdY|WTqvp5P7KV$e2@{jqI)nV~_xhcX2)ytH(}C|m z%aalJmLrQUPwZNwPSQ2PP()<#qBTQ1?5R7NQhUP|w~O$n+sCUwA+F1IxWr$>HK)l$ zdclfFz;A{;WF!`c?$%X$06Fv;oqvmj8fm%2%#49w`Ka(* zDLp{<(MX0-48IOkd-I74qP+rT94@1F34)=YUWn&R@9oKqJBpw%M8Q{Z00XCj;NO6R25A2#-;%ciPYA@&3or| znL)R0)tkLMXSnT1I@TvVxACA?q)SApS=Kl6neS&S4TVSjX6rmqhin$I}6Yp~7RXrasvd!;Iu#YKHo$iOKMC>3Ny!R<9W%;zWdy*v27r>H24P zZzdsA@8A-=gdB39#UlaGBuI_j8csc<%X81o<>7wzw(Q9eq0Oi2)9oqfr+Xb=pc=ujke5cG~l@2gp}-}VuDnZnU@hurpKdf7&Qz`5%6wNklo z(RjXS{UK&&67#)BOJHSVDssH*PA}e;}en>e3rTNjK=$N9oEVX==*u) z-KDkWAB&yZ84!N&=MTn82+76Pi~lyxZQEu?KQ4QZ{s0Jc)9n~0qFWs+0nCci6YD_x z`PR5+`6l5nmaYP`A7H+m!gg>YG5M2dpxP3%75VLWijEY;tP@`KnI}n|8ww2z+PaL&Q6m%w^A*3nfA;zrl7?0kcu&v#A>pX zxJVr@jw$yRthp7yUe|t`!%)}RSTL98d}Sk<$$l})P}kS;v>YgS*Ctz@^XJZI*XwHc z<@4z-|3>KHV)ozj4bGHUZKXg&IT z)nxU7iyWqu!E+ZDDC98**!4SFuf#Dt{VuZxbo`h&n#|75mX0UxalU?u6tlqr<#!J4 zZ>@!`I&m3vJoSf@}rc=3Zi^9YoZ>c|+9qo2ATpc#rU#KhF zgx>9EueU30Do+%I&VB-Bc~1yq@47pF2!Gypt^5+6&TR5ot_mH3lqe*81C4jJnH$&F z-SmDDkNz;MZ!@3G6W$KsuF-Gwfe=7$&@znhd)=H<-t8=_Y@q8CkJ#$of@oEko%-3w z9~1p-^mk3zNaD6Yc>{_=?q8gW#%+?h_Sp2~+oVAtU$OycUShoQ83dynb~D92F3`gt zVJ6^;6ypsqNPg67v^{7I2$6omV|l-mCJsZi`!h~MGHw`D_U+xhL%-He0D$qiw6sJB zv`}p6p=K6#`udgrPU8Clrls-s3+#PMFk=E8Oj1M?6{cMTij)0i#$Lx}9mv?!{GMK# zW@%|-Q&yHn0r0$z^Cc?+hi}CC)pJAqb+f;Rg{Bx-M7;M9uzh{Odm`|X^TTNeW%eP* zMH*4(aS~;*FK6uAl3!%Wd4u2lEY3{cYrsF8t;7GXy|?~qBaGHYsZyXo3k8Z-a4+uA z;_e=xElz+Sg+M}}l;SRd0>$0ktx(*8OK>d#f)gBW&N=Jc?>l$hKjHi^Yt5Q9S$p!% z%$DbQX77dNgt1Bqrry7m^otB2q!OJRK<3rthdex?4*RRkBHZU-Loz7^&zSay4&{OMCr^ov4Wi153$eFILT$~ukqwzrv? z#nUB{ZdWzNx%ONCRE!ef@UyWTZc41F7+neLJK^Pgy9qNGgc#=YT8Np82{VD0zEs>6 zQOYSXKR4$Zck=J{rawnRMhu*Xt0pfe-^RPM$Yw6=c~J~B;6Nc;#jHq$g5;YiZp70c z6p+18nzBA^riU~mXe7N~N8p>bd3#MYal+YD?;KpOG3Wv{+0A;XU(P!l{S*0vpw=eq z2|}rC#5iY_ccb8EXTupP7=<+uzDupDk24YQWEM&mc_fV$B2Dxd?YcGW?%n#B^44 zo+j`u-A2AYZ(@rK#%oh10ZlXG)gO*dD^$5mTFbNpyxKV}=!Q1qi3=dSdFMY3nLRIji?uIM+OwTODDh8ZeJh|Od*LIS+k7sHmw zWh$JQpv(}2=e!LSa@rdA}J%*?NUpCF1QeZxaXh zfW?U7%e`)(ph)jqftkQP(_577Uu3&JqGk7ac)3*i;mGVckpd0X-2jV|`T+cOz^9|j zE~UZ2yV;@NqL&e4*><3ywhPfm;LbxqajO$+-)g77q66{09U>tl%z+Y1L?T93K?j6se8N1!qZt<9H-pEzuxHtYQF!6l_M?&DRc^9ZuYP*$Pi6|Fypn)Osvvy1Oyt8LXY}OMr0a7z z{W-*QnXNNs^mdLG)iyKx9o*qGn6=$zkG<%@&A$pQns(U=BeMDVxs8pDXWI*YOeS^q z-NWZ6pb@fUPp=7+v=6xNzw1debm(~OZI96*#OwFd#hNPd3`mBpt6N)P&C(d)p3d}I zU;jv%Dv!UZ}Vm_y@C2;F4n&Z?`F2_$YO>kv|uoHXgKv+Rb?!}-3ajS|U z1q1_JTCn8R3M;A1XVwvvm3tq^dfu?|@`ci2JWRq(UEaeiH%S2@doWiUMx~rm=cFDS zLB;DZ8?ie>ao1EaAn-FFVC>{_d%KyU^a46jbOw*&bADi8sA-!Nmk_Ir7~$e-Z3@(8 zE^a93t76IBOPtx;txSA@oJGEV9=P5+=zES{mcSLT7ZBRe?LV?`h<@?}_tLXL5aXa4 z!GzD6q$-HYK5vrx>v76u*3c)d_d@B9&YjgGu1hbkODmiDiDx5+tAC42C?^GfrD@Pf zU493W$D3Bjl=2MH?C0oHIb@CPD~C0Z2oZI+hF<~d6O)I36zz-1^y-C$g{62x+c8vP z_H-1~V96^QGUVghOnFkBX>W@RwqS;p?0}QDbKA*nXIa_Lnu-r(3s zu~q+11B-wEPEQM>MxY|na>Cqr7r{L#V(uvM&nwbYbD2lUTMr(nkBsn_kQ%LaaS?&V z!^SuKW`+U58j+#l4$GD6Wu?2>*;&Sq>l{Wi9x(Pbl{VX<3gejVXs(7ofCTI}#{Nvz z!g`4&i>^)yFgO0C_fCYnNcYj`x7KlUpZTBDiN;&+FPog%{l3QRL9I3vsnSKEThIR^ zt|aV6NKP(I3;f4TLA0l>?(Ho!n=h}vmv?s4*3tG!GU=YnZ1ZW$Wn^5wJ#_|$Q%PK< zw%;2qHmOlVc&yNgNv;^|0Xl?3N7{kv)rVPVhh!+)rb z_(cutzfET+i8n@@OdfJHgAE?T!;6c&v8}+FvM=1vg{UH`eLGk0p`REYaQ_aEytUrp zr*fx*+**3v2f08 z58~sq&en>H_i)>K_&1k7u>R+}mY(u$NR@gY!Q>Yb1m(>>C({2$CF@I zF;+tk?F&ewuT+xPp@D=KQ+6d!F~iaCp$_PsPiWyt9**bZn8!HcKUN)AX!A8X zpW6Tev?+CVf1QasjtGdlcK(rg6Z_q~#Kc{v2EJfOnu}1iwx`Tg+*@&)62?h9UceP~ zni?7#s|-m5!@~doz^|ayjqTY2EsMO!7?GwBYFpqJx(|D~;(>cLYbwm!61>jDwu};w z2dM6+JDB2>I1&IF8Y0l9<0w@_6BF<=D3g@Xe5n>`ZPDo-ij*v|Zg&AaduM7kd}FHx z7(zEk1_XlZtLotWn@1Gc>WYbFf*xl% zu9ur9Hl*bYj~~|^JM7r-Q&od3b&-TPk}~Y5)mIecdkZZ-yH^4jB6YQv+4SP`GvE?y zOS5lSf-Z*G!PFR#GlSZ0Eckxw$a_!j7cU(DMt7ver!=QV_Z?iz!*kJINkmk5!1B0t zUMM|yc6|$_=VF2(ic|{OJdYrDS{@smPhoEm7He)2!v1VZdtzjIdb({X%`rt?Ztu)# z>Bkno-L&_0PdnJr=wL_dFVYD4`}tqBq^|C;LRi82*5quS*Rxgy?4w?qbFU?DAFCom z{NTOw$*Fp92%1N-QuD`!!e`QjdBSxD}M8H|4iDrGd$?=O>S+?6F36*>; z_)?2ks!3FFv%*I+_4ds7EPd~y=!+Wgs!^EokX%OQI`k_i-sHUROv}d)k@)om4F%sJz9^Jd)nuqduG}3 z`#wuSf}fu#goyn=YIw=I?T9tzbeVr0@S%sl3&D?92ub9!wzLE^>t7NLv%!1de;n=fAc~c9Lr8k_%uoO>m{rG zfIwzNU~NFPuketxX@KGty-0J@rnMC|!fKst*xOeDGBt~Jr>DU;@A!mHxs>l5sX-1DUg9J^C;zFYdF+SA}rDH`5{7plx5yn4I-{>1>eaCOTF~b}Dw3Ow0S#E{Yk6&J#ttJS`r>$nC zY-9Qt9kw`WG7J(w<2M+tVs$brDl!U63bV#+S%Cmk)9R|K?L%@M559L0_0T9CpyA|u zH!xVr<);K5BU9*YW$3SyvHeC7A*UtD_&VU=Q{~_BKUI>9HYEf?WIrivvN;)N>&xve zDy6LGe!1(RY&Z-2*P^1bH;#47BYoV7<{`dyx1i78r zUoG;178+8y`JH7EmrtG~h$Q&s6dRQ5CtG|BLbI!nzizP7EId{o9|UJqRJ2@soNTF; zMgNY!NN>jf<0g!U^WR=c@gWW!HYvb~dJ~KDUEzfi&Y$h*{1dmd@+3`&`j&Ac4Ut!d;g~z&s*~A?oSc zI>qU8=|zvzmZiVBg5iHBFBD@{0`j?1UVm>wtF|a{6%*o)0=-M{ABR&#Fch3@o4hF? z>rHks`_DM^{|1Ktc?<0Ot?D&}SeN(n_NJ8!;y=`;D&^|YikBOIi!MaJP}0;90bK*e z=FBPJ4s3;3RfN*-U6Em`-2LSb#mlOB`o-)qr`^S_Jwx8rp||y7ZsG4Fr!uBeOs*=V zgc4FgH!iSC#!1jwOwAEI2OuXNldn|1@sm2#a zv27-5&F4??^_X%{ftcviy#lC*_s0Wue6HA@2E|T)74z$aTfEYk+meW$V?}&N#*-6E zx8cIHi&~$n==u{GW97g8uc&CD5h`XecB+v_&BQys`6!3@&NkB$hX?INzpwX3$ z>|+1>PayrXbC=?ors;iO8F#4X{7{XL#KA=4Wyc+_ff&}PK3@WPjW4_JX$=5BIkBnI zE7em^!(C7zzRszK$k6*PR+W_kIsdGeDBg89BPSc*=}|RcC(M_on8Sp<*%1hIEa=)k2x)89$J zntJj)C+92?h3u(vRc?_+Lx@#20p}uAdsy22CH~N*abDz?<*JH=Wr5mA`Pj`i_el(^ zR!ZANZHA&%o%XX7VZ2j_d@&ywPkT?K!(%vHo-cwXMDE93Txf}v1I%I$hP&U^H8x`G zDKH@&@PlL`su;iUMdDYQDU~W)nf}7rA0Pb5ECOfmpoVUT5BE)QoHg7TV@b+U*Fi>F zDSgw*vt4RcE9q-nYP08bSL$uK>VPVz;d)HahM9@j8hki=H_7LJHUlEvB)sqp*8NW8}V);Ojd

      |BnsNwjC`BF}%K4C`!`nqn}(%jJmUO&yl{qPpp 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℘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 H<%j

      ''' + self.send_response(200);self.send_header('Content-Type','text/html');self.end_headers();self.wfile.write(b);return + super().do_GET() + def translate_path(self,p): + if p.startswith('/game/'):return str(game/p[6:]) + return str(root/'src/main/webapp'/p.lstrip('/')) +HTTPServer(('127.0.0.1',18086),H).serve_forever() diff --git a/.atp/work-session/20261014-091658/artifacts/original-hashes.json b/.atp/work-session/20261014-091658/artifacts/original-hashes.json new file mode 100644 index 0000000..691ecfe --- /dev/null +++ b/.atp/work-session/20261014-091658/artifacts/original-hashes.json @@ -0,0 +1,6 @@ +{ + "zip_sha256": "02e5272e4086f8f0e2e3a4b41ca4313d5f8862897a1655421f3f1b4315942461", + "html_hashes": { + "GoraniCoin-WebGLTest/index.html": "8a9f8aaff7e949b49f4cab1a87c5b6d414db4031b5fb3e268f5102bc40cbcc74" + } +} \ No newline at end of file diff --git a/.atp/work-session/20261014-091658/artifacts/runtime-app-maven.log b/.atp/work-session/20261014-091658/artifacts/runtime-app-maven.log new file mode 100644 index 0000000..9c46677 --- /dev/null +++ b/.atp/work-session/20261014-091658/artifacts/runtime-app-maven.log @@ -0,0 +1,85 @@ +[INFO] Scanning for projects... +[INFO] +[INFO] ----------------------< com.pandoli365:bibimbap >----------------------- +[INFO] Building bibimbap 0.0.1-SNAPSHOT +[INFO] from pom.xml +[INFO] --------------------------------[ war ]--------------------------------- +[INFO] +[INFO] >>> spring-boot:3.5.16:run (default-cli) > test-compile @ bibimbap >>> +[INFO] +[INFO] --- resources:3.3.1:resources (default-resources) @ bibimbap --- +[INFO] Copying 7 resources from src/main/resources to target/classes +[INFO] +[INFO] --- compiler:3.14.1:compile (default-compile) @ bibimbap --- +[INFO] Nothing to compile - all classes are up to date. +[INFO] +[INFO] --- resources:3.3.1:testResources (default-testResources) @ bibimbap --- +[INFO] skip non existing resourceDirectory /Users/wemadeplay/workspace/stz/bibimbap/src/test/resources +[INFO] +[INFO] --- compiler:3.14.1:testCompile (default-testCompile) @ bibimbap --- +[INFO] Nothing to compile - all classes are up to date. +[INFO] +[INFO] <<< spring-boot:3.5.16:run (default-cli) < test-compile @ bibimbap <<< +[INFO] +[INFO] +[INFO] --- spring-boot:3.5.16:run (default-cli) @ bibimbap --- +[INFO] Attaching agents: [] + + . ____ _ __ _ _ + /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ +( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ + \\/ ___)| |_)| | | | | || (_| | ) ) ) ) + ' |____| .__|_| |_|_| |_\__, | / / / / + =========|_|==============|___/=/_/_/_/ + + :: Spring Boot :: (v3.5.16) + +2026-10-14T09:43:05.496+09:00 INFO 43913 --- [bibimbap] [ main] c.p.bibimbap.BibimbapApplication : Starting BibimbapApplication using Java 21.0.11 with PID 43913 (/Users/wemadeplay/workspace/stz/bibimbap/target/classes started by wemadeplay in /Users/wemadeplay/workspace/stz/bibimbap) +2026-10-14T09:43:05.497+09:00 INFO 43913 --- [bibimbap] [ main] c.p.bibimbap.BibimbapApplication : The following 1 profile is active: "dev" +2026-10-14T09:43:05.744+09:00 DEBUG 43913 --- [bibimbap] [ main] org.apache.ibatis.logging.LogFactory : Logging initialized using 'class org.apache.ibatis.logging.slf4j.Slf4jImpl' adapter. +2026-10-14T09:43:05.891+09:00 INFO 43913 --- [bibimbap] [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port 18081 (http) +2026-10-14T09:43:05.898+09:00 INFO 43913 --- [bibimbap] [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat] +2026-10-14T09:43:05.898+09:00 INFO 43913 --- [bibimbap] [ main] o.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/10.1.55] +2026-10-14T09:43:05.963+09:00 INFO 43913 --- [bibimbap] [ main] org.apache.jasper.servlet.TldScanner : At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time. +2026-10-14T09:43:05.965+09:00 INFO 43913 --- [bibimbap] [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext +2026-10-14T09:43:05.965+09:00 INFO 43913 --- [bibimbap] [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 455 ms +2026-10-14T09:43:06.020+09:00 DEBUG 43913 --- [bibimbap] [ main] org.apache.ibatis.logging.LogFactory : Logging initialized using 'class org.apache.ibatis.logging.slf4j.Slf4jImpl' adapter. +2026-10-14T09:43:06.255+09:00 INFO 43913 --- [bibimbap] [ main] o.s.b.a.w.s.WelcomePageHandlerMapping : Adding welcome page template: index +2026-10-14T09:43:06.313+09:00 WARN 43913 --- [bibimbap] [ main] o.s.w.s.resource.ResourceHandlerUtils : Appended trailing slash to static resource location: file:///tmp/bibimbap-inv004-uploads/profile/ +2026-10-14T09:43:06.372+09:00 INFO 43913 --- [bibimbap] [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port 18081 (http) with context path '/' +2026-10-14T09:43:06.376+09:00 INFO 43913 --- [bibimbap] [ main] c.p.bibimbap.BibimbapApplication : Started BibimbapApplication in 1.039 seconds (process running for 1.157) +2026-10-14T09:43:06.382+09:00 INFO 43913 --- [bibimbap] [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting... +2026-10-14T09:43:06.425+09:00 INFO 43913 --- [bibimbap] [ main] com.zaxxer.hikari.pool.HikariPool : HikariPool-1 - Added connection org.postgresql.jdbc.PgConnection@6c96403e +2026-10-14T09:43:06.425+09:00 INFO 43913 --- [bibimbap] [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed. +2026-10-14T09:43:06.435+09:00 INFO 43913 --- [bibimbap] [ main] c.p.bibimbap.config.BadgeCatalogSeeder : [BADGE] 배지 카탈로그 시드 완료: 2 종 +2026-10-14T09:43:06.440+09:00 INFO 43913 --- [bibimbap] [ main] c.p.b.config.PermissionCatalogVerifier : [RBAC] 권한 카탈로그 시드 완료: 4 키 +2026-10-14T09:43:07.462+09:00 INFO 43913 --- [bibimbap] [.1-18081-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet' +2026-10-14T09:43:07.462+09:00 INFO 43913 --- [bibimbap] [.1-18081-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet' +2026-10-14T09:43:07.465+09:00 INFO 43913 --- [bibimbap] [.1-18081-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 3 ms +2026-10-14T09:44:25.321+09:00 INFO 43913 --- [bibimbap] [.1-18081-exec-3] c.p.b.c.api.GameUploadController : WebGL zip upload request received. fileName=independent-original.zip, size=39008123, contentType=application/zip +2026-10-14T09:44:25.948+09:00 INFO 43913 --- [bibimbap] [.1-18081-exec-3] c.p.b.c.api.GameUploadController : WebGL zip upload completed. gameUuid=d4bf0e5b-5582-49f7-862d-be47e99092b2, webglPath=/game/d4bf0e5b-5582-49f7-862d-be47e99092b2/GoraniCoin-WebGLTest/index.html, entryCount=8, extractedBytes=145049041 +2026-10-14T09:46:04.257+09:00 INFO 43913 --- [bibimbap] [.1-18081-exec-4] c.p.b.c.api.GameUploadController : WebGL zip upload request received. fileName=independent-landscape.zip, size=1054, contentType=application/zip +2026-10-14T09:46:04.267+09:00 INFO 43913 --- [bibimbap] [.1-18081-exec-4] c.p.b.c.api.GameUploadController : WebGL zip upload completed. gameUuid=1f84a200-dd40-45b2-9171-544cd222a89d, webglPath=/game/1f84a200-dd40-45b2-9171-544cd222a89d/index.html, entryCount=6, extractedBytes=380 +2026-10-14T09:46:22.030+09:00 INFO 43913 --- [bibimbap] [.1-18081-exec-7] c.p.b.c.api.GameUploadController : WebGL zip upload request received. fileName=independent-landscape.zip, size=1054, contentType=application/zip +2026-10-14T09:46:22.034+09:00 INFO 43913 --- [bibimbap] [.1-18081-exec-7] c.p.b.c.api.GameUploadController : WebGL zip upload completed. gameUuid=274566a9-8825-45f7-b255-b7de3cb148c8, webglPath=/game/274566a9-8825-45f7-b255-b7de3cb148c8/index.html, entryCount=6, extractedBytes=380 +2026-10-14T09:46:23.406+09:00 INFO 43913 --- [bibimbap] [.1-18081-exec-9] c.p.b.c.api.GameUploadController : WebGL zip upload request received. fileName=independent-square.zip, size=1052, contentType=application/zip +2026-10-14T09:46:23.411+09:00 INFO 43913 --- [bibimbap] [.1-18081-exec-9] c.p.b.c.api.GameUploadController : WebGL zip upload completed. gameUuid=81081344-47f1-4fc7-b7ce-2cd6519bf6bd, webglPath=/game/81081344-47f1-4fc7-b7ce-2cd6519bf6bd/index.html, entryCount=6, extractedBytes=378 +2026-10-14T09:48:19.361+09:00 INFO 43913 --- [bibimbap] [.1-18081-exec-4] c.p.b.c.api.GameUploadController : WebGL zip upload request received. fileName=replacement.zip, size=1054, contentType=application/zip +2026-10-14T09:48:19.370+09:00 INFO 43913 --- [bibimbap] [.1-18081-exec-4] c.p.b.c.api.GameUploadController : WebGL zip upload completed. gameUuid=98252972-544b-4109-878b-406b452876ad, webglPath=/game/98252972-544b-4109-878b-406b452876ad/index.html, entryCount=6, extractedBytes=380 +2026-10-14T09:49:34.942+09:00 INFO 43913 --- [bibimbap] [ionShutdownHook] o.s.b.w.e.tomcat.GracefulShutdown : Commencing graceful shutdown. Waiting for active requests to complete +2026-10-14T09:49:34.945+09:00 INFO 43913 --- [bibimbap] [tomcat-shutdown] o.s.b.w.e.tomcat.GracefulShutdown : Graceful shutdown complete +2026-10-14T09:49:34.949+09:00 INFO 43913 --- [bibimbap] [ionShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown initiated... +2026-10-14T09:49:34.951+09:00 INFO 43913 --- [bibimbap] [ionShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown completed. +[INFO] ------------------------------------------------------------------------ +[INFO] BUILD FAILURE +[INFO] ------------------------------------------------------------------------ +[INFO] Total time: 06:30 min +[INFO] Finished at: 2026-10-14T09:49:35+09:00 +[INFO] ------------------------------------------------------------------------ +[ERROR] Failed to execute goal org.springframework.boot:spring-boot-maven-plugin:3.5.16:run (default-cli) on project bibimbap: Process terminated with exit code: 143 -> [Help 1] +[ERROR] +[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. +[ERROR] Re-run Maven using the -X switch to enable full debug logging. +[ERROR] +[ERROR] For more information about the errors and possible solutions, please read the following articles: +[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException diff --git a/.atp/work-session/20261014-091658/artifacts/runtime-app.log b/.atp/work-session/20261014-091658/artifacts/runtime-app.log new file mode 100644 index 0000000..16ab76c --- /dev/null +++ b/.atp/work-session/20261014-091658/artifacts/runtime-app.log @@ -0,0 +1 @@ +target/bibimbap-0.0.1-SNAPSHOT.war? ?? Manifest ??? ????. diff --git a/.atp/work-session/20261014-091658/artifacts/runtime-desktop.png b/.atp/work-session/20261014-091658/artifacts/runtime-desktop.png new file mode 100644 index 0000000000000000000000000000000000000000..7b5b741a16ee2bf225f0d454274ce35179844541 GIT binary patch literal 248921 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�azi2LyzDO3&ftBjv*hilX{EKYvlz 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
      w^_Ed%4Y~R8~gLK*Ii)PeuEkW4u)0 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'U>^{+&A{nC#zjU&s~A91iGFihuzy~pCuuJ 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 literal 0 HcmV?d00001 diff --git a/.atp/work-session/20261014-091658/artifacts/runtime-dom-evidence.json b/.atp/work-session/20261014-091658/artifacts/runtime-dom-evidence.json new file mode 100644 index 0000000..6ba26ff --- /dev/null +++ b/.atp/work-session/20261014-091658/artifacts/runtime-dom-evidence.json @@ -0,0 +1,178 @@ +[ + { + "content": [ + { + "type": "text", + "text": "Script ran on page and returned:\n```json\n{\"ready\":true,\"iframe\":{\"rect\":{\"x\":112.8828125,\"y\":718.6171875,\"width\":259.2265625,\"height\":561,\"top\":718.6171875,\"right\":372.109375,\"bottom\":1279.6171875,\"left\":112.8828125},\"src\":\"http://127.0.0.1:18081/game/d4bf0e5b-5582-49f7-862d-be47e99092b2/GoraniCoin-WebGLTest/index.html\",\"attrs\":[[\"title\",\"independent-portrait WebGL\"],[\"src\",\"/game/d4bf0e5b-5582-49f7-862d-be47e99092b2/GoraniCoin-WebGLTest/index.html\"],[\"sandbox\",\"allow-scripts allow-same-origin allow-pointer-lock\"],[\"allow\",\"fullscreen; autoplay; xr-spatial-tracking\"],[\"loading\",\"eager\"],[\"referrerpolicy\",\"same-origin\"],[\"style\",\"width: 259.23px; height: 561px;\"]],\"parent\":\"
      \\n \\n
      \"},\"canvas\":{\"css\":[259,561],\"buffer\":[518,1122]},\"buttons\":[{\"text\":\"\\n \\n \\n \\n \\n \\n \\n \\n \\n \",\"id\":\"theme-toggle\"},{\"text\":\"취소\",\"id\":\"site-modal-cancel\"},{\"text\":\"확인\",\"id\":\"site-modal-confirm\"},{\"text\":\"삭제\",\"id\":\"game-delete-button\"},{\"text\":\"\\n \\n \\n \\n 0\\n \",\"id\":\"game-like-btn\"}]}\n```" + } + ] + }, + { + "content": [ + { + "type": "text", + "text": "Script ran on page and returned:\n```json\n{\"viewport\":[500,801],\"frame\":[259.2265625,561],\"stage\":[447,560.6953125],\"inside\":true,\"ratioError\":0.003295319905191718,\"sameFrame\":true,\"sameUnity\":true,\"loads\":0,\"css\":[259,561],\"buffer\":[518,1122]}\n```" + } + ] + }, + { + "content": [ + { + "type": "text", + "text": "Script ran on page and returned:\n```json\n{\"viewport\":[1440,801],\"frame\":[259.2265625,561],\"stage\":[858,560.6953125],\"inside\":true,\"ratioError\":0.003295319905191718,\"sameFrame\":true,\"sameUnity\":true,\"loads\":0,\"css\":[259,561],\"buffer\":[518,1122]}\n```" + } + ] + }, + { + "content": [ + { + "type": "text", + "text": "Script ran on page and returned:\n```json\n{\"viewport\":[844,390],\"frame\":[126.1484375,273],\"stage\":[791,273],\"inside\":true,\"ratioError\":0.0008515995260722775,\"sameFrame\":true,\"sameUnity\":true,\"loads\":0,\"css\":[126,273],\"buffer\":[252,546]}\n```" + } + ] + }, + { + "content": [ + { + "type": "text", + "text": "Script ran on page and returned:\n```json\n{\"viewport\":[640,300],\"frame\":[97.03125,210],\"stage\":[587,210],\"inside\":true,\"ratioError\":0.006664691943129242,\"sameFrame\":true,\"sameUnity\":true,\"loads\":0,\"css\":[97,210],\"buffer\":[194,420]}\n```" + } + ] + }, + { + "content": [ + { + "type": "text", + "text": "Script ran on page and returned:\n```json\n{\"kind\":\"portrait-exact\",\"viewport\":[320,844],\"frame\":[267,577.8125],\"stage\":[267,590.796875],\"inside\":true,\"ratioError\":0.0013329383886002688,\"sameFrame\":true,\"sameUnity\":true,\"loads\":0,\"canvasCSS\":[267,578],\"buffer\":[534,1156]}\n```" + } + ] + }, + { + "content": [ + { + "type": "text", + "text": "Script ran on page and returned:\n```json\n{\"kind\":\"portrait-exact\",\"viewport\":[1440,900],\"frame\":[291.109375,630],\"stage\":[858,630],\"inside\":true,\"ratioError\":0.004369075829401936,\"sameFrame\":true,\"sameUnity\":true,\"loads\":0,\"canvasCSS\":[291,630],\"buffer\":[582,1260]}\n```" + } + ] + }, + { + "content": [ + { + "type": "text", + "text": "Script ran on page and returned:\n```json\n{\"kind\":\"portrait-exact\",\"viewport\":[844,390],\"frame\":[126.1484375,273],\"stage\":[791,273],\"inside\":true,\"ratioError\":0.0008515995260722775,\"sameFrame\":true,\"sameUnity\":true,\"loads\":0,\"canvasCSS\":[126,273],\"buffer\":[252,546]}\n```" + } + ] + }, + { + "content": [ + { + "type": "text", + "text": "Script ran on page and returned:\n```json\n{\"kind\":\"portrait-exact\",\"viewport\":[640,300],\"frame\":[97.03125,210],\"stage\":[587,210],\"inside\":true,\"ratioError\":0.006664691943129242,\"sameFrame\":true,\"sameUnity\":true,\"loads\":0,\"canvasCSS\":[97,210],\"buffer\":[194,420]}\n```" + } + ] + }, + { + "content": [ + { + "type": "text", + "text": "Script ran on page and returned:\n```json\n{\"fullscreen\":true,\"sameFrame\":true,\"sameUnity\":true,\"loads\":0,\"canvas\":{\"css\":[388,840],\"buffer\":[776,1680]}}\n```" + } + ] + }, + { + "content": [ + { + "type": "text", + "text": "Script ran on page and returned:\n```json\n{\"mode\":\"custom\",\"width\":\"400\",\"height\":\"900\",\"status\":\"빌드에서 1280 × 720 화면을 확인했습니다. 크기가 다르면 직접 지정해 주세요.\",\"uploadPath\":\"/game/1f84a200-dd40-45b2-9171-544cd222a89d/index.html\"}\n```" + } + ] + }, + { + "content": [ + { + "type": "text", + "text": "Script ran on page and returned:\n```json\n{\"kind\":\"landscape\",\"viewport\":[320,844],\"frame\":[267,150.1875],\"stage\":[267,590.796875],\"inside\":true,\"ratioError\":0}\n```" + } + ] + }, + { + "content": [ + { + "type": "text", + "text": "Script ran on page and returned:\n```json\n{\"kind\":\"landscape\",\"viewport\":[1440,900],\"frame\":[858,482.625],\"stage\":[858,630],\"inside\":true,\"ratioError\":0}\n```" + } + ] + }, + { + "content": [ + { + "type": "text", + "text": "Script ran on page and returned:\n```json\n{\"kind\":\"landscape\",\"viewport\":[844,390],\"frame\":[485.328125,273],\"stage\":[791,273],\"inside\":true,\"ratioError\":0.0052083333333143855}\n```" + } + ] + }, + { + "content": [ + { + "type": "text", + "text": "Script ran on page and returned:\n```json\n{\"kind\":\"landscape\",\"viewport\":[640,300],\"frame\":[373.328125,210],\"stage\":[587,210],\"inside\":true,\"ratioError\":0.0052083333333143855}\n```" + } + ] + }, + { + "content": [ + { + "type": "text", + "text": "Script ran on page and returned:\n```json\n{\"kind\":\"square\",\"viewport\":[320,844],\"frame\":[267,267],\"stage\":[267,590.796875],\"inside\":true,\"ratioError\":0}\n```" + } + ] + }, + { + "content": [ + { + "type": "text", + "text": "Script ran on page and returned:\n```json\n{\"kind\":\"square\",\"viewport\":[1440,900],\"frame\":[630,630],\"stage\":[858,630],\"inside\":true,\"ratioError\":0}\n```" + } + ] + }, + { + "content": [ + { + "type": "text", + "text": "Script ran on page and returned:\n```json\n{\"kind\":\"square\",\"viewport\":[844,390],\"frame\":[273,273],\"stage\":[791,273],\"inside\":true,\"ratioError\":0}\n```" + } + ] + }, + { + "content": [ + { + "type": "text", + "text": "Script ran on page and returned:\n```json\n{\"kind\":\"square\",\"viewport\":[640,300],\"frame\":[210,210],\"stage\":[587,210],\"inside\":true,\"ratioError\":0}\n```" + } + ] + }, + { + "content": [ + { + "type": "text", + "text": "Script ran on page and returned:\n```json\n{\"touch\":1,\"events\":[{\"type\":\"pointerdown\",\"trusted\":true,\"client\":[136.5,295.5],\"pointerType\":\"mouse\"},{\"type\":\"mousedown\",\"trusted\":true,\"client\":[136,295]},{\"type\":\"click\",\"trusted\":true,\"client\":[136,295],\"pointerType\":\"mouse\"}],\"ready\":true,\"canvasCSS\":[273,591],\"buffer\":[273,591],\"sameUnity\":true,\"loads\":0}\n```" + } + ] + }, + { + "content": [ + { + "type": "text", + "text": "Script ran on page and returned:\n```json\n{\"fullscreen\":true,\"overflow\":\"hidden\",\"closeButton\":false,\"status\":\"\",\"sameFrame\":true,\"sameUnity\":true,\"loads\":0}\n```" + } + ] + }, + { + "content": [ + { + "type": "text", + "text": "Script ran on page and returned:\n```json\n{\"kind\":\"rejection-fallback\",\"fullscreen\":false,\"overflow\":\"hidden\",\"closeButton\":true,\"status\":\"전체화면을 사용할 수 없어 크게 보기로 전환했습니다.\",\"sameFrame\":true,\"sameUnity\":true,\"loads\":0}\n```" + } + ] + } +] diff --git a/.atp/work-session/20261014-091658/artifacts/runtime-file-server.log b/.atp/work-session/20261014-091658/artifacts/runtime-file-server.log new file mode 100644 index 0000000..c411762 --- /dev/null +++ b/.atp/work-session/20261014-091658/artifacts/runtime-file-server.log @@ -0,0 +1,5 @@ +127.0.0.1 - - [14/Oct/2026 09:44:24] "GET /independent-original.zip HTTP/1.1" 200 - +127.0.0.1 - - [14/Oct/2026 09:46:04] "GET /independent-landscape.zip HTTP/1.1" 200 - +127.0.0.1 - - [14/Oct/2026 09:46:22] "GET /independent-landscape.zip HTTP/1.1" 304 - +127.0.0.1 - - [14/Oct/2026 09:46:23] "GET /independent-square.zip HTTP/1.1" 200 - +127.0.0.1 - - [14/Oct/2026 09:48:19] "GET /independent-landscape.zip HTTP/1.1" 304 - diff --git a/.atp/work-session/20261014-091658/artifacts/runtime-file-server.py b/.atp/work-session/20261014-091658/artifacts/runtime-file-server.py new file mode 100644 index 0000000..77798d0 --- /dev/null +++ b/.atp/work-session/20261014-091658/artifacts/runtime-file-server.py @@ -0,0 +1,8 @@ +from http.server import HTTPServer,SimpleHTTPRequestHandler +import os +os.chdir('.atp/work-session/20261014-091658/artifacts') +class Handler(SimpleHTTPRequestHandler): + def end_headers(self): + self.send_header('Access-Control-Allow-Origin','http://127.0.0.1:18081') + super().end_headers() +HTTPServer(('127.0.0.1',18082),Handler).serve_forever() diff --git a/.atp/work-session/20261014-091658/artifacts/runtime-hashes.json b/.atp/work-session/20261014-091658/artifacts/runtime-hashes.json new file mode 100644 index 0000000..6f4aed7 --- /dev/null +++ b/.atp/work-session/20261014-091658/artifacts/runtime-hashes.json @@ -0,0 +1,11 @@ +{ + "originalZipUnchanged": true, + "originalZipSHA256": "02e5272e4086f8f0e2e3a4b41ca4313d5f8862897a1655421f3f1b4315942461", + "storedHtml": [ + { + "path": "/tmp/bibimbap-inv004-uploads/game/d4bf0e5b-5582-49f7-862d-be47e99092b2/GoraniCoin-WebGLTest/index.html", + "sha256": "8a9f8aaff7e949b49f4cab1a87c5b6d414db4031b5fb3e268f5102bc40cbcc74", + "unchanged": true + } + ] +} \ No newline at end of file diff --git a/.atp/work-session/20261014-091658/artifacts/runtime-http-evidence.json b/.atp/work-session/20261014-091658/artifacts/runtime-http-evidence.json new file mode 100644 index 0000000..3fcc0da --- /dev/null +++ b/.atp/work-session/20261014-091658/artifacts/runtime-http-evidence.json @@ -0,0 +1,8 @@ +{ + "content": [ + { + "type": "text", + "text": "Script ran on page and returned:\n```json\n{\"http\":[{\"path\":\"/game/new\",\"status\":200},{\"path\":\"/game/1\",\"status\":200},{\"path\":\"/game/1/edit\",\"status\":200},{\"path\":\"/game/2\",\"status\":200},{\"path\":\"/game/3\",\"status\":200}],\"servedHtmlSHA256\":\"8a9f8aaff7e949b49f4cab1a87c5b6d414db4031b5fb3e268f5102bc40cbcc74\"}\n```" + } + ] +} diff --git a/.atp/work-session/20261014-091658/artifacts/runtime-mobile.png b/.atp/work-session/20261014-091658/artifacts/runtime-mobile.png new file mode 100644 index 0000000000000000000000000000000000000000..89a035d23a418ce8c268d1ff9ffca9d9bf2453d6 GIT binary patch literal 99215 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

      bN>C%476?4iRXIKp>i{ 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%0D-z|{W) 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 Hli>dcrbt(# literal 0 HcmV?d00001 diff --git a/.atp/work-session/20261014-091658/artifacts/runtime-prechange-geometry.json b/.atp/work-session/20261014-091658/artifacts/runtime-prechange-geometry.json new file mode 100644 index 0000000..330c555 --- /dev/null +++ b/.atp/work-session/20261014-091658/artifacts/runtime-prechange-geometry.json @@ -0,0 +1,9 @@ +{ + "content": [ + { + "type": "text", + "text": "Error: Cannot read properties of null (reading 'parentElement')" + } + ], + "isError": true +} diff --git a/.atp/work-session/20261014-091658/artifacts/runtime-roundtrip-auto.txt b/.atp/work-session/20261014-091658/artifacts/runtime-roundtrip-auto.txt new file mode 100644 index 0000000..d40f095 --- /dev/null +++ b/.atp/work-session/20261014-091658/artifacts/runtime-roundtrip-auto.txt @@ -0,0 +1,7 @@ + id | name | display_width | display_height | display_source | webgl_path +----+-----------------------+---------------+----------------+----------------+---------------------------------------------------------------------------- + 1 | independent-portrait | 390 | 844 | build-info | /game/d4bf0e5b-5582-49f7-862d-be47e99092b2/GoraniCoin-WebGLTest/index.html + 2 | independent-landscape | 1280 | 720 | build-info | /game/274566a9-8825-45f7-b255-b7de3cb148c8/index.html + 3 | independent-square | 800 | 800 | build-info | /game/81081344-47f1-4fc7-b7ce-2cd6519bf6bd/index.html +(3 rows) + diff --git a/.atp/work-session/20261014-091658/artifacts/runtime-roundtrip-manual.txt b/.atp/work-session/20261014-091658/artifacts/runtime-roundtrip-manual.txt new file mode 100644 index 0000000..ce0c760 --- /dev/null +++ b/.atp/work-session/20261014-091658/artifacts/runtime-roundtrip-manual.txt @@ -0,0 +1,5 @@ + id | name | display_width | display_height | display_source +----+----------------------+---------------+----------------+---------------- + 1 | independent-portrait | 400 | 900 | manual +(1 row) + diff --git a/.atp/work-session/20261014-091658/artifacts/runtime-schema.log b/.atp/work-session/20261014-091658/artifacts/runtime-schema.log new file mode 100644 index 0000000..e99d7be --- /dev/null +++ b/.atp/work-session/20261014-091658/artifacts/runtime-schema.log @@ -0,0 +1,205 @@ +CREATE SCHEMA +CREATE SCHEMA +SET +CREATE SEQUENCE +CREATE TABLE +ALTER SEQUENCE +DO +ALTER TABLE +CREATE SEQUENCE +CREATE TABLE +ALTER SEQUENCE +CREATE INDEX +CREATE SEQUENCE +CREATE TABLE +ALTER SEQUENCE +ALTER TABLE +DO +CREATE INDEX +CREATE INDEX +CREATE SEQUENCE +CREATE TABLE +ALTER SEQUENCE +ALTER TABLE +CREATE SEQUENCE +CREATE TABLE +ALTER SEQUENCE +CREATE INDEX +CREATE INDEX +ALTER TABLE +UPDATE 0 +COMMENT +ALTER TABLE +COMMENT +CREATE SEQUENCE +CREATE TABLE +ALTER SEQUENCE +DO +DO +DO +CREATE INDEX +CREATE INDEX +COMMENT +COMMENT +CREATE VIEW +COMMENT +CREATE SEQUENCE +CREATE TABLE +ALTER SEQUENCE +CREATE SEQUENCE +CREATE TABLE +ALTER SEQUENCE +ALTER TABLE +ALTER TABLE +ALTER TABLE +CREATE INDEX +CREATE INDEX +CREATE INDEX +CREATE SEQUENCE +CREATE TABLE +ALTER SEQUENCE +CREATE INDEX +CREATE SEQUENCE +CREATE TABLE +ALTER SEQUENCE +DO +CREATE INDEX +CREATE INDEX +CREATE SEQUENCE +CREATE TABLE +ALTER SEQUENCE +DO +CREATE SEQUENCE +CREATE TABLE +ALTER SEQUENCE +DO +CREATE INDEX +CREATE INDEX +CREATE SEQUENCE +CREATE TABLE +ALTER SEQUENCE +DO +CREATE INDEX +CREATE SEQUENCE +CREATE TABLE +ALTER SEQUENCE +DO +CREATE INDEX +CREATE SEQUENCE +CREATE TABLE +ALTER SEQUENCE +DO +CREATE INDEX +CREATE INDEX +CREATE INDEX +CREATE SEQUENCE +CREATE TABLE +ALTER SEQUENCE +DO +CREATE INDEX +CREATE SEQUENCE +CREATE TABLE +ALTER SEQUENCE +DO +CREATE INDEX +CREATE INDEX +CREATE SEQUENCE +CREATE TABLE +ALTER SEQUENCE +DO +CREATE INDEX +CREATE INDEX +CREATE SEQUENCE +CREATE TABLE +ALTER SEQUENCE +DO +CREATE INDEX +CREATE INDEX +CREATE SEQUENCE +CREATE TABLE +ALTER SEQUENCE +DO +CREATE INDEX +CREATE INDEX +CREATE SEQUENCE +CREATE TABLE +ALTER SEQUENCE +DO +CREATE INDEX +CREATE INDEX +CREATE VIEW +COMMENT +CREATE SEQUENCE +CREATE TABLE +ALTER SEQUENCE +DO +CREATE INDEX +CREATE INDEX +CREATE INDEX +CREATE SEQUENCE +CREATE TABLE +ALTER SEQUENCE +DO +CREATE INDEX +CREATE INDEX +CREATE SEQUENCE +CREATE TABLE +ALTER SEQUENCE +DO +CREATE INDEX +CREATE INDEX +CREATE SEQUENCE +CREATE TABLE +ALTER SEQUENCE +DO +CREATE INDEX +CREATE INDEX +ALTER TABLE +CREATE INDEX +CREATE SEQUENCE +CREATE TABLE +ALTER SEQUENCE +CREATE INDEX +CREATE SEQUENCE +CREATE TABLE +ALTER SEQUENCE +DO +CREATE INDEX +CREATE INDEX +CREATE SEQUENCE +CREATE TABLE +ALTER SEQUENCE +CREATE INDEX +CREATE SEQUENCE +CREATE TABLE +ALTER SEQUENCE +DO +CREATE INDEX +CREATE INDEX +CREATE SEQUENCE +CREATE TABLE +ALTER SEQUENCE +DO +DO +CREATE INDEX +CREATE INDEX +COMMENT +COMMENT +CREATE SEQUENCE +CREATE TABLE +ALTER SEQUENCE +CREATE INDEX +DO +CREATE SEQUENCE +CREATE TABLE +ALTER SEQUENCE +DO +CREATE INDEX +CREATE INDEX +CREATE SEQUENCE +CREATE TABLE +ALTER SEQUENCE +DO +DO +CREATE INDEX +CREATE INDEX diff --git a/.atp/work-session/20261014-091658/artifacts/runtime-zip-replacement.txt b/.atp/work-session/20261014-091658/artifacts/runtime-zip-replacement.txt new file mode 100644 index 0000000..1270d56 --- /dev/null +++ b/.atp/work-session/20261014-091658/artifacts/runtime-zip-replacement.txt @@ -0,0 +1,5 @@ + id | name | display_width | display_height | display_source +----+--------------------+---------------+----------------+---------------- + 3 | independent-square | 1280 | 720 | build-info +(1 row) + diff --git a/.atp/work-session/20261014-091658/artifacts/verification-cases.json b/.atp/work-session/20261014-091658/artifacts/verification-cases.json new file mode 100644 index 0000000..14f9468 --- /dev/null +++ b/.atp/work-session/20261014-091658/artifacts/verification-cases.json @@ -0,0 +1,56 @@ +{ + "TEST-com.pandoli365.bibimbap.mapper.WebglDisplayDatabaseContractTest.xml": { + "tests": "1", + "failures": "0", + "errors": "0", + "cases": [ + "actualMapperInsertUpdateAndEveryGameSelectRoundTripDisplayMetadata" + ] + }, + "TEST-com.pandoli365.bibimbap.util.WebglDisplayMetadataTest.xml": { + "tests": "6", + "failures": "0", + "errors": "0", + "cases": [ + "portraitLandscapeAndSquareUseTheirOwnCanvasSizes", + "oversizeHtmlAndManifestAndSymlinksAreBounded", + "dynamicScriptAmbiguityAndBrowserDefaultsDoNotInventDimensions", + "nestedEntryOnlyReadsItsAdjacentManifest", + "manifestThenPixelCssThenAttributesHavePriority", + "invalidManifestFallsThroughAndBoundsAreEnforced" + ] + }, + "TEST-com.pandoli365.bibimbap.controller.api.GameDisplayMetadataTest.xml": { + "tests": "7", + "failures": "0", + "errors": "0", + "cases": [ + "legacyCreateDetectsAndPathReplacementRedetectsWhileUnknownRemainsNullable", + "unknownAndLegacyFallbackDoNotBackfillAndCannotReadOutsideStorage", + "invalidCustomAndUnknownModeAre400AndDoNotWrite", + "customAndLegacyEditPreserveAuthorChoiceButAutoReplacesIt", + "autoCreateRedetectsServerFileAndRoundTripsIntoEditAndDetail", + "explicitCustomCanUseBrowserDefaultDimensionsAndDetailPrefersIt", + "csrfAuthenticationAndOwnershipPrecedeMetadataErrors" + ] + }, + "TEST-com.pandoli365.bibimbap.controller.api.GameUploadControllerSecurityTest.xml": { + "tests": "12", + "failures": "0", + "errors": "0", + "cases": [ + "root_returns403_whenCsrfInvalid", + "webglZip_allowsReplace_whenOwner", + "webglZip_returns403_whenReplaceUuidNotOwned", + "webglZip_returns400_whenNotZipExtension", + "thumbnail_returns403_whenCsrfInvalid", + "webglZip_returns403_whenJamModeWithoutPermission", + "webglZip_returns403_whenCsrfInvalid", + "webglZip_returns413_whenOriginalTooLarge", + "webglZip_passesGate_whenAuthenticatedNonJam", + "webglZip_returns400_whenBadMagic", + "uploadDetectsEachBuildAndMalformedMetadataStillSucceeds", + "webglZip_returns401_whenNotAuthenticated" + ] + } +} \ No newline at end of file diff --git a/.atp/work-session/20261014-091658/artifacts/verification-integrated-java21.log b/.atp/work-session/20261014-091658/artifacts/verification-integrated-java21.log new file mode 100644 index 0000000..a943cd2 --- /dev/null +++ b/.atp/work-session/20261014-091658/artifacts/verification-integrated-java21.log @@ -0,0 +1,489 @@ +bash: warning: setlocale: LC_ALL: cannot change locale (C.UTF-8): Bad file descriptor +[INFO] Scanning for projects... +[INFO] +[INFO] ----------------------< com.pandoli365:bibimbap >----------------------- +[INFO] Building bibimbap 0.0.1-SNAPSHOT +[INFO] from pom.xml +[INFO] --------------------------------[ war ]--------------------------------- +[INFO] +[INFO] --- resources:3.3.1:resources (default-resources) @ bibimbap --- +[INFO] Copying 7 resources from src/main/resources to target/classes +[INFO] +[INFO] --- compiler:3.14.1:compile (default-compile) @ bibimbap --- +[INFO] Recompiling the module because of changed source code. +[INFO] Compiling 122 source files with javac [debug release 21] to target/classes +[INFO] +[INFO] --- resources:3.3.1:testResources (default-testResources) @ bibimbap --- +[INFO] skip non existing resourceDirectory /Users/wemadeplay/workspace/stz/bibimbap/src/test/resources +[INFO] +[INFO] --- compiler:3.14.1:testCompile (default-testCompile) @ bibimbap --- +[INFO] Recompiling the module because of changed dependency. +[INFO] Compiling 35 source files with javac [debug release 21] to target/test-classes +[WARNING] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java:[61,6] org.springframework.boot.test.mock.mockito.MockBean in org.springframework.boot.test.mock.mockito has been deprecated and marked for removal +[WARNING] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java:[61,6] org.springframework.boot.test.mock.mockito.MockBean in org.springframework.boot.test.mock.mockito has been deprecated and marked for removal +[WARNING] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java:[61,6] org.springframework.boot.test.mock.mockito.MockBean in org.springframework.boot.test.mock.mockito has been deprecated and marked for removal +[WARNING] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java:[61,6] org.springframework.boot.test.mock.mockito.MockBean in org.springframework.boot.test.mock.mockito has been deprecated and marked for removal +[WARNING] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java:[61,6] org.springframework.boot.test.mock.mockito.MockBean in org.springframework.boot.test.mock.mockito has been deprecated and marked for removal +[WARNING] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java:[65,6] org.springframework.boot.test.mock.mockito.MockBean in org.springframework.boot.test.mock.mockito has been deprecated and marked for removal +[WARNING] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java:[65,6] org.springframework.boot.test.mock.mockito.MockBean in org.springframework.boot.test.mock.mockito has been deprecated and marked for removal +[WARNING] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java:[65,6] org.springframework.boot.test.mock.mockito.MockBean in org.springframework.boot.test.mock.mockito has been deprecated and marked for removal +[WARNING] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java:[65,6] org.springframework.boot.test.mock.mockito.MockBean in org.springframework.boot.test.mock.mockito has been deprecated and marked for removal +[WARNING] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java:[65,6] org.springframework.boot.test.mock.mockito.MockBean in org.springframework.boot.test.mock.mockito has been deprecated and marked for removal +[WARNING] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java:[68,6] org.springframework.boot.test.mock.mockito.MockBean in org.springframework.boot.test.mock.mockito has been deprecated and marked for removal +[WARNING] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java:[68,6] org.springframework.boot.test.mock.mockito.MockBean in org.springframework.boot.test.mock.mockito has been deprecated and marked for removal +[WARNING] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java:[68,6] org.springframework.boot.test.mock.mockito.MockBean in org.springframework.boot.test.mock.mockito has been deprecated and marked for removal +[WARNING] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java:[68,6] org.springframework.boot.test.mock.mockito.MockBean in org.springframework.boot.test.mock.mockito has been deprecated and marked for removal +[WARNING] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java:[68,6] org.springframework.boot.test.mock.mockito.MockBean in org.springframework.boot.test.mock.mockito has been deprecated and marked for removal +[WARNING] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java:[71,6] org.springframework.boot.test.mock.mockito.MockBean in org.springframework.boot.test.mock.mockito has been deprecated and marked for removal +[WARNING] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java:[71,6] org.springframework.boot.test.mock.mockito.MockBean in org.springframework.boot.test.mock.mockito has been deprecated and marked for removal +[WARNING] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java:[71,6] org.springframework.boot.test.mock.mockito.MockBean in org.springframework.boot.test.mock.mockito has been deprecated and marked for removal +[WARNING] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java:[71,6] org.springframework.boot.test.mock.mockito.MockBean in org.springframework.boot.test.mock.mockito has been deprecated and marked for removal +[WARNING] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java:[71,6] org.springframework.boot.test.mock.mockito.MockBean in org.springframework.boot.test.mock.mockito has been deprecated and marked for removal +[WARNING] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java:[74,6] org.springframework.boot.test.mock.mockito.MockBean in org.springframework.boot.test.mock.mockito has been deprecated and marked for removal +[WARNING] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java:[74,6] org.springframework.boot.test.mock.mockito.MockBean in org.springframework.boot.test.mock.mockito has been deprecated and marked for removal +[WARNING] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java:[74,6] org.springframework.boot.test.mock.mockito.MockBean in org.springframework.boot.test.mock.mockito has been deprecated and marked for removal +[WARNING] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java:[74,6] org.springframework.boot.test.mock.mockito.MockBean in org.springframework.boot.test.mock.mockito has been deprecated and marked for removal +[WARNING] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java:[74,6] org.springframework.boot.test.mock.mockito.MockBean in org.springframework.boot.test.mock.mockito has been deprecated and marked for removal +[WARNING] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java:[77,6] org.springframework.boot.test.mock.mockito.MockBean in org.springframework.boot.test.mock.mockito has been deprecated and marked for removal +[WARNING] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java:[77,6] org.springframework.boot.test.mock.mockito.MockBean in org.springframework.boot.test.mock.mockito has been deprecated and marked for removal +[WARNING] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java:[77,6] org.springframework.boot.test.mock.mockito.MockBean in org.springframework.boot.test.mock.mockito has been deprecated and marked for removal +[WARNING] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java:[77,6] org.springframework.boot.test.mock.mockito.MockBean in org.springframework.boot.test.mock.mockito has been deprecated and marked for removal +[WARNING] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java:[77,6] org.springframework.boot.test.mock.mockito.MockBean in org.springframework.boot.test.mock.mockito has been deprecated and marked for removal +[WARNING] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java:[80,6] org.springframework.boot.test.mock.mockito.MockBean in org.springframework.boot.test.mock.mockito has been deprecated and marked for removal +[WARNING] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java:[80,6] org.springframework.boot.test.mock.mockito.MockBean in org.springframework.boot.test.mock.mockito has been deprecated and marked for removal +[WARNING] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java:[80,6] org.springframework.boot.test.mock.mockito.MockBean in org.springframework.boot.test.mock.mockito has been deprecated and marked for removal +[WARNING] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java:[80,6] org.springframework.boot.test.mock.mockito.MockBean in org.springframework.boot.test.mock.mockito has been deprecated and marked for removal +[WARNING] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java:[80,6] org.springframework.boot.test.mock.mockito.MockBean in org.springframework.boot.test.mock.mockito has been deprecated and marked for removal +[WARNING] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java:[83,6] org.springframework.boot.test.mock.mockito.MockBean in org.springframework.boot.test.mock.mockito has been deprecated and marked for removal +[WARNING] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java:[83,6] org.springframework.boot.test.mock.mockito.MockBean in org.springframework.boot.test.mock.mockito has been deprecated and marked for removal +[WARNING] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java:[83,6] org.springframework.boot.test.mock.mockito.MockBean in org.springframework.boot.test.mock.mockito has been deprecated and marked for removal +[WARNING] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java:[83,6] org.springframework.boot.test.mock.mockito.MockBean in org.springframework.boot.test.mock.mockito has been deprecated and marked for removal +[WARNING] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java:[83,6] org.springframework.boot.test.mock.mockito.MockBean in org.springframework.boot.test.mock.mockito has been deprecated and marked for removal +[WARNING] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java:[86,6] org.springframework.boot.test.mock.mockito.MockBean in org.springframework.boot.test.mock.mockito has been deprecated and marked for removal +[WARNING] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java:[86,6] org.springframework.boot.test.mock.mockito.MockBean in org.springframework.boot.test.mock.mockito has been deprecated and marked for removal +[WARNING] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java:[86,6] org.springframework.boot.test.mock.mockito.MockBean in org.springframework.boot.test.mock.mockito has been deprecated and marked for removal +[WARNING] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java:[86,6] org.springframework.boot.test.mock.mockito.MockBean in org.springframework.boot.test.mock.mockito has been deprecated and marked for removal +[WARNING] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java:[86,6] org.springframework.boot.test.mock.mockito.MockBean in org.springframework.boot.test.mock.mockito has been deprecated and marked for removal +[WARNING] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java:[89,6] org.springframework.boot.test.mock.mockito.MockBean in org.springframework.boot.test.mock.mockito has been deprecated and marked for removal +[WARNING] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java:[89,6] org.springframework.boot.test.mock.mockito.MockBean in org.springframework.boot.test.mock.mockito has been deprecated and marked for removal +[WARNING] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java:[89,6] org.springframework.boot.test.mock.mockito.MockBean in org.springframework.boot.test.mock.mockito has been deprecated and marked for removal +[WARNING] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java:[89,6] org.springframework.boot.test.mock.mockito.MockBean in org.springframework.boot.test.mock.mockito has been deprecated and marked for removal +[WARNING] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java:[89,6] org.springframework.boot.test.mock.mockito.MockBean in org.springframework.boot.test.mock.mockito has been deprecated and marked for removal +[WARNING] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java:[92,6] org.springframework.boot.test.mock.mockito.MockBean in org.springframework.boot.test.mock.mockito has been deprecated and marked for removal +[WARNING] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java:[92,6] org.springframework.boot.test.mock.mockito.MockBean in org.springframework.boot.test.mock.mockito has been deprecated and marked for removal +[WARNING] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java:[92,6] org.springframework.boot.test.mock.mockito.MockBean in org.springframework.boot.test.mock.mockito has been deprecated and marked for removal +[WARNING] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java:[92,6] org.springframework.boot.test.mock.mockito.MockBean in org.springframework.boot.test.mock.mockito has been deprecated and marked for removal +[WARNING] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java:[92,6] org.springframework.boot.test.mock.mockito.MockBean in org.springframework.boot.test.mock.mockito has been deprecated and marked for removal +[WARNING] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java:[95,6] org.springframework.boot.test.mock.mockito.MockBean in org.springframework.boot.test.mock.mockito has been deprecated and marked for removal +[WARNING] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java:[95,6] org.springframework.boot.test.mock.mockito.MockBean in org.springframework.boot.test.mock.mockito has been deprecated and marked for removal +[WARNING] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java:[95,6] org.springframework.boot.test.mock.mockito.MockBean in org.springframework.boot.test.mock.mockito has been deprecated and marked for removal +[WARNING] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java:[95,6] org.springframework.boot.test.mock.mockito.MockBean in org.springframework.boot.test.mock.mockito has been deprecated and marked for removal +[WARNING] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java:[95,6] org.springframework.boot.test.mock.mockito.MockBean in org.springframework.boot.test.mock.mockito has been deprecated and marked for removal +[WARNING] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java:[98,6] org.springframework.boot.test.mock.mockito.MockBean in org.springframework.boot.test.mock.mockito has been deprecated and marked for removal +[WARNING] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java:[98,6] org.springframework.boot.test.mock.mockito.MockBean in org.springframework.boot.test.mock.mockito has been deprecated and marked for removal +[WARNING] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java:[98,6] org.springframework.boot.test.mock.mockito.MockBean in org.springframework.boot.test.mock.mockito has been deprecated and marked for removal +[WARNING] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java:[98,6] org.springframework.boot.test.mock.mockito.MockBean in org.springframework.boot.test.mock.mockito has been deprecated and marked for removal +[WARNING] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java:[98,6] org.springframework.boot.test.mock.mockito.MockBean in org.springframework.boot.test.mock.mockito has been deprecated and marked for removal +[WARNING] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java:[101,6] org.springframework.boot.test.mock.mockito.MockBean in org.springframework.boot.test.mock.mockito has been deprecated and marked for removal +[WARNING] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java:[101,6] org.springframework.boot.test.mock.mockito.MockBean in org.springframework.boot.test.mock.mockito has been deprecated and marked for removal +[WARNING] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java:[101,6] org.springframework.boot.test.mock.mockito.MockBean in org.springframework.boot.test.mock.mockito has been deprecated and marked for removal +[WARNING] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java:[101,6] org.springframework.boot.test.mock.mockito.MockBean in org.springframework.boot.test.mock.mockito has been deprecated and marked for removal +[WARNING] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java:[101,6] org.springframework.boot.test.mock.mockito.MockBean in org.springframework.boot.test.mock.mockito has been deprecated and marked for removal +[WARNING] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java:[104,6] org.springframework.boot.test.mock.mockito.MockBean in org.springframework.boot.test.mock.mockito has been deprecated and marked for removal +[WARNING] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java:[104,6] org.springframework.boot.test.mock.mockito.MockBean in org.springframework.boot.test.mock.mockito has been deprecated and marked for removal +[WARNING] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java:[104,6] org.springframework.boot.test.mock.mockito.MockBean in org.springframework.boot.test.mock.mockito has been deprecated and marked for removal +[WARNING] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java:[104,6] org.springframework.boot.test.mock.mockito.MockBean in org.springframework.boot.test.mock.mockito has been deprecated and marked for removal +[WARNING] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java:[104,6] org.springframework.boot.test.mock.mockito.MockBean in org.springframework.boot.test.mock.mockito has been deprecated and marked for removal +[WARNING] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java:[107,6] org.springframework.boot.test.mock.mockito.MockBean in org.springframework.boot.test.mock.mockito has been deprecated and marked for removal +[WARNING] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java:[107,6] org.springframework.boot.test.mock.mockito.MockBean in org.springframework.boot.test.mock.mockito has been deprecated and marked for removal +[WARNING] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java:[107,6] org.springframework.boot.test.mock.mockito.MockBean in org.springframework.boot.test.mock.mockito has been deprecated and marked for removal +[WARNING] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java:[107,6] org.springframework.boot.test.mock.mockito.MockBean in org.springframework.boot.test.mock.mockito has been deprecated and marked for removal +[WARNING] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java:[107,6] org.springframework.boot.test.mock.mockito.MockBean in org.springframework.boot.test.mock.mockito has been deprecated and marked for removal +[WARNING] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java:[110,6] org.springframework.boot.test.mock.mockito.MockBean in org.springframework.boot.test.mock.mockito has been deprecated and marked for removal +[WARNING] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java:[110,6] org.springframework.boot.test.mock.mockito.MockBean in org.springframework.boot.test.mock.mockito has been deprecated and marked for removal +[WARNING] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java:[110,6] org.springframework.boot.test.mock.mockito.MockBean in org.springframework.boot.test.mock.mockito has been deprecated and marked for removal +[WARNING] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java:[110,6] org.springframework.boot.test.mock.mockito.MockBean in org.springframework.boot.test.mock.mockito has been deprecated and marked for removal +[WARNING] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java:[110,6] org.springframework.boot.test.mock.mockito.MockBean in org.springframework.boot.test.mock.mockito has been deprecated and marked for removal +[WARNING] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java:[113,6] org.springframework.boot.test.mock.mockito.MockBean in org.springframework.boot.test.mock.mockito has been deprecated and marked for removal +[WARNING] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java:[113,6] org.springframework.boot.test.mock.mockito.MockBean in org.springframework.boot.test.mock.mockito has been deprecated and marked for removal +[WARNING] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java:[113,6] org.springframework.boot.test.mock.mockito.MockBean in org.springframework.boot.test.mock.mockito has been deprecated and marked for removal +[WARNING] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java:[113,6] org.springframework.boot.test.mock.mockito.MockBean in org.springframework.boot.test.mock.mockito has been deprecated and marked for removal +[WARNING] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java:[113,6] org.springframework.boot.test.mock.mockito.MockBean in org.springframework.boot.test.mock.mockito has been deprecated and marked for removal +[WARNING] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java:[116,6] org.springframework.boot.test.mock.mockito.MockBean in org.springframework.boot.test.mock.mockito has been deprecated and marked for removal +[WARNING] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java:[116,6] org.springframework.boot.test.mock.mockito.MockBean in org.springframework.boot.test.mock.mockito has been deprecated and marked for removal +[WARNING] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java:[116,6] org.springframework.boot.test.mock.mockito.MockBean in org.springframework.boot.test.mock.mockito has been deprecated and marked for removal +[WARNING] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java:[116,6] org.springframework.boot.test.mock.mockito.MockBean in org.springframework.boot.test.mock.mockito has been deprecated and marked for removal +[WARNING] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java:[116,6] org.springframework.boot.test.mock.mockito.MockBean in org.springframework.boot.test.mock.mockito has been deprecated and marked for removal +[WARNING] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java:[119,6] org.springframework.boot.test.mock.mockito.MockBean in org.springframework.boot.test.mock.mockito has been deprecated and marked for removal +[WARNING] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java:[119,6] org.springframework.boot.test.mock.mockito.MockBean in org.springframework.boot.test.mock.mockito has been deprecated and marked for removal +[WARNING] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java:[119,6] org.springframework.boot.test.mock.mockito.MockBean in org.springframework.boot.test.mock.mockito has been deprecated and marked for removal +[WARNING] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java:[119,6] org.springframework.boot.test.mock.mockito.MockBean in org.springframework.boot.test.mock.mockito has been deprecated and marked for removal +[WARNING] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java:[119,6] org.springframework.boot.test.mock.mockito.MockBean in org.springframework.boot.test.mock.mockito has been deprecated and marked for removal +[INFO] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/controller/api/GameLikeControllerTest.java: /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/controller/api/GameLikeControllerTest.java uses or overrides a deprecated API. +[INFO] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/controller/api/GameLikeControllerTest.java: Recompile with -Xlint:deprecation for details. +[INFO] /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java: /Users/wemadeplay/workspace/stz/bibimbap/src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java has additional uses or overrides of a deprecated API that is marked for removal. +[INFO] +[INFO] --- surefire:3.5.5:test (default-test) @ bibimbap --- +[INFO] Using auto detected provider org.apache.maven.surefire.junitplatform.JUnitPlatformProvider +[INFO] +[INFO] ------------------------------------------------------- +[INFO] T E S T S +[INFO] ------------------------------------------------------- +[INFO] Running com.pandoli365.bibimbap.util.WebglDisplayMetadataTest +[INFO] Tests run: 6, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.214 s -- in com.pandoli365.bibimbap.util.WebglDisplayMetadataTest +[INFO] Running com.pandoli365.bibimbap.util.TagSanitizerTest +[INFO] Tests run: 16, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.020 s -- in com.pandoli365.bibimbap.util.TagSanitizerTest +[INFO] Running com.pandoli365.bibimbap.security.PermissionGateTest +Mockito is currently self-attaching to enable the inline-mock-maker. This will no longer work in future releases of the JDK. Please add Mockito as an agent to your build as described in Mockito's documentation: https://javadoc.io/doc/org.mockito/mockito-core/latest/org.mockito/org/mockito/Mockito.html#0.3 +OpenJDK 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended +WARNING: A Java agent has been loaded dynamically (/Users/wemadeplay/.m2/repository/net/bytebuddy/byte-buddy-agent/1.17.8/byte-buddy-agent-1.17.8.jar) +WARNING: If a serviceability tool is in use, please run with -XX:+EnableDynamicAgentLoading to hide this warning +WARNING: If a serviceability tool is not in use, please run with -Djdk.instrument.traceUsage for more information +WARNING: Dynamic loading of agents will be disallowed by default in a future release +[INFO] Tests run: 7, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.658 s -- in com.pandoli365.bibimbap.security.PermissionGateTest +[INFO] Running com.pandoli365.bibimbap.security.SsrfSafeFetcherTest +[INFO] Tests run: 20, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 7.189 s -- in com.pandoli365.bibimbap.security.SsrfSafeFetcherTest +[INFO] Running com.pandoli365.bibimbap.security.ZipSecurityTest +[INFO] Tests run: 20, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 6.960 s -- in com.pandoli365.bibimbap.security.ZipSecurityTest +[INFO] Running com.pandoli365.bibimbap.security.JamRoleGateTest +[INFO] Tests run: 8, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.039 s -- in com.pandoli365.bibimbap.security.JamRoleGateTest +[INFO] Running com.pandoli365.bibimbap.mapper.WebglDisplayDatabaseContractTest +[WARNING] Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0 s -- in com.pandoli365.bibimbap.mapper.WebglDisplayDatabaseContractTest +[INFO] Running com.pandoli365.bibimbap.controller.AdminConsoleControllerTest +[INFO] Tests run: 13, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.054 s -- in com.pandoli365.bibimbap.controller.AdminConsoleControllerTest +[INFO] Running com.pandoli365.bibimbap.controller.PostControllerTest +[INFO] Tests run: 10, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.110 s -- in com.pandoli365.bibimbap.controller.PostControllerTest +[INFO] Running com.pandoli365.bibimbap.controller.JamAwardAdminControllerTest +[INFO] Tests run: 7, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.043 s -- in com.pandoli365.bibimbap.controller.JamAwardAdminControllerTest +[INFO] Running com.pandoli365.bibimbap.controller.JamAwardControllerTest +[INFO] Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.027 s -- in com.pandoli365.bibimbap.controller.JamAwardControllerTest +[INFO] Running com.pandoli365.bibimbap.controller.JamControllerTest +[INFO] Tests run: 14, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.063 s -- in com.pandoli365.bibimbap.controller.JamControllerTest +[INFO] Running com.pandoli365.bibimbap.controller.BadgeManageControllerTest +[INFO] Tests run: 14, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.027 s -- in com.pandoli365.bibimbap.controller.BadgeManageControllerTest +[INFO] Running com.pandoli365.bibimbap.controller.JamScoringControllerTest +[INFO] Tests run: 19, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.068 s -- in com.pandoli365.bibimbap.controller.JamScoringControllerTest +[INFO] Running com.pandoli365.bibimbap.controller.SearchControllerTest +[INFO] Tests run: 12, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.034 s -- in com.pandoli365.bibimbap.controller.SearchControllerTest +[INFO] Running com.pandoli365.bibimbap.controller.api.GameCommentControllerTest +[INFO] Tests run: 18, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.026 s -- in com.pandoli365.bibimbap.controller.api.GameCommentControllerTest +[INFO] Running com.pandoli365.bibimbap.controller.api.GameLikeControllerTest +[INFO] Tests run: 8, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.074 s -- in com.pandoli365.bibimbap.controller.api.GameLikeControllerTest +[INFO] Running com.pandoli365.bibimbap.controller.api.GameReviewControllerTest +09:42:31.897 [main] WARN com.pandoli365.bibimbap.controller.api.GameReviewController -- [BADGE] ?? ?? ? ?? userId=7 reviewId=50 +java.lang.RuntimeException: boom + at com.pandoli365.bibimbap.badge.ReputationService.record(ReputationService.java:22) + at com.pandoli365.bibimbap.controller.api.GameReviewController.createReview(GameReviewController.java:222) + at com.pandoli365.bibimbap.controller.api.GameReviewControllerTest.createReview(GameReviewControllerTest.java:525) + at com.pandoli365.bibimbap.controller.api.GameReviewControllerTest.createReviewSucceedsEvenWhenReputationHookThrows(GameReviewControllerTest.java:447) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:775) + at org.junit.platform.commons.support.ReflectionSupport.invokeMethod(ReflectionSupport.java:479) + at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60) + at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131) + at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:161) + at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:152) + at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:91) + at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(InterceptingExecutableInvoker.java:112) + at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.lambda$invoke$0(InterceptingExecutableInvoker.java:94) + at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106) + at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64) + at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45) + at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37) + at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:93) + at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:87) + at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:216) + at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) + at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:212) + at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:137) + at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:69) + at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:156) + at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) + at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:146) + at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) + at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:144) + at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) + at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:143) + at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:100) + at java.base/java.util.ArrayList.forEach(ArrayList.java:1596) + at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41) + at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:160) + at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) + at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:146) + at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) + at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:144) + at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) + at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:143) + at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:100) + at java.base/java.util.ArrayList.forEach(ArrayList.java:1596) + at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41) + at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:160) + at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) + at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:146) + at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) + at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:144) + at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) + at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:143) + at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:100) + at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35) + at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57) + at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54) + at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:201) + at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:170) + at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:94) + at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:59) + at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:142) + at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:58) + at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:103) + at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:85) + at org.junit.platform.launcher.core.DelegatingLauncher.execute(DelegatingLauncher.java:47) + at org.junit.platform.launcher.core.InterceptingLauncher.lambda$execute$1(InterceptingLauncher.java:39) + at org.junit.platform.launcher.core.ClasspathAlignmentCheckingLauncherInterceptor.intercept(ClasspathAlignmentCheckingLauncherInterceptor.java:25) + at org.junit.platform.launcher.core.InterceptingLauncher.execute(InterceptingLauncher.java:38) + at org.junit.platform.launcher.core.DelegatingLauncher.execute(DelegatingLauncher.java:47) + at org.apache.maven.surefire.junitplatform.LauncherAdapter.executeWithoutCancellationToken(LauncherAdapter.java:60) + at org.apache.maven.surefire.junitplatform.LauncherAdapter.execute(LauncherAdapter.java:52) + at org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.execute(JUnitPlatformProvider.java:203) + at org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.invokeAllTests(JUnitPlatformProvider.java:168) + at org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.invoke(JUnitPlatformProvider.java:136) + at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:385) + at org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:162) + at org.apache.maven.surefire.booter.ForkedBooter.run(ForkedBooter.java:507) + at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:495) +[INFO] Tests run: 24, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.058 s -- in com.pandoli365.bibimbap.controller.api.GameReviewControllerTest +[INFO] Running com.pandoli365.bibimbap.controller.api.GameUploadControllerSecurityTest +09:42:31.933 [main] INFO com.pandoli365.bibimbap.controller.api.GameUploadController -- WebGL zip upload request received. fileName=build.zip, size=701, contentType=application/zip +09:42:31.942 [main] INFO com.pandoli365.bibimbap.controller.api.GameUploadController -- WebGL zip upload completed. gameUuid=01c16184-c912-4e6a-a91e-d1866c38221f, webglPath=/game/01c16184-c912-4e6a-a91e-d1866c38221f/index.html, entryCount=5, extractedBytes=56 +09:42:31.948 [main] INFO com.pandoli365.bibimbap.controller.api.GameUploadController -- WebGL zip upload request received. fileName=build.zip, size=701, contentType=application/zip +09:42:31.950 [main] INFO com.pandoli365.bibimbap.controller.api.GameUploadController -- WebGL zip upload request received. fileName=build.txt, size=701, contentType=text/plain +09:42:31.956 [main] INFO com.pandoli365.bibimbap.controller.api.GameUploadController -- WebGL zip upload request received. fileName=build.zip, size=701, contentType=application/zip +09:42:31.960 [main] INFO com.pandoli365.bibimbap.controller.api.GameUploadController -- WebGL zip upload request received. fileName=build.zip, size=537919488, contentType=application/zip +09:42:31.962 [main] INFO com.pandoli365.bibimbap.controller.api.GameUploadController -- WebGL zip upload request received. fileName=build.zip, size=701, contentType=application/zip +09:42:31.972 [main] INFO com.pandoli365.bibimbap.controller.api.GameUploadController -- WebGL zip upload completed. gameUuid=69b411a6-a08b-481c-b31d-4b29f26d275f, webglPath=/game/69b411a6-a08b-481c-b31d-4b29f26d275f/index.html, entryCount=5, extractedBytes=56 +09:42:31.978 [main] INFO com.pandoli365.bibimbap.controller.api.GameUploadController -- WebGL zip upload request received. fileName=build.zip, size=9, contentType=application/zip +09:42:31.980 [main] INFO com.pandoli365.bibimbap.controller.api.GameUploadController -- WebGL zip upload request received. fileName=build.zip, size=929, contentType=application/zip +09:42:31.989 [main] INFO com.pandoli365.bibimbap.controller.api.GameUploadController -- WebGL zip upload completed. gameUuid=d5cc7729-aed7-4bd2-8edf-4644efc5d21f, webglPath=/game/d5cc7729-aed7-4bd2-8edf-4644efc5d21f/nested/index.html, entryCount=6, extractedBytes=95 +09:42:31.989 [main] INFO com.pandoli365.bibimbap.controller.api.GameUploadController -- WebGL zip upload request received. fileName=build.zip, size=930, contentType=application/zip +09:42:31.994 [main] INFO com.pandoli365.bibimbap.controller.api.GameUploadController -- WebGL zip upload completed. gameUuid=e1b3bdf4-3c52-4fde-88cf-4d132b7bf169, webglPath=/game/e1b3bdf4-3c52-4fde-88cf-4d132b7bf169/nested/index.html, entryCount=6, extractedBytes=96 +09:42:31.994 [main] INFO com.pandoli365.bibimbap.controller.api.GameUploadController -- WebGL zip upload request received. fileName=build.zip, size=924, contentType=application/zip +09:42:32.001 [main] INFO com.pandoli365.bibimbap.controller.api.GameUploadController -- WebGL zip upload completed. gameUuid=02b8dc25-68f6-4192-b57d-c3f0d88044f6, webglPath=/game/02b8dc25-68f6-4192-b57d-c3f0d88044f6/nested/index.html, entryCount=6, extractedBytes=95 +09:42:32.001 [main] INFO com.pandoli365.bibimbap.controller.api.GameUploadController -- WebGL zip upload request received. fileName=build.zip, size=888, contentType=application/zip +09:42:32.010 [main] INFO com.pandoli365.bibimbap.controller.api.GameUploadController -- WebGL zip upload completed. gameUuid=81843fa5-c951-42dc-9994-8745df568909, webglPath=/game/81843fa5-c951-42dc-9994-8745df568909/nested/index.html, entryCount=6, extractedBytes=52 +09:42:32.028 [main] INFO com.pandoli365.bibimbap.controller.api.GameUploadController -- WebGL zip upload request received. fileName=build.zip, size=701, contentType=application/zip +[INFO] Tests run: 12, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.118 s -- in com.pandoli365.bibimbap.controller.api.GameUploadControllerSecurityTest +[INFO] Running com.pandoli365.bibimbap.controller.api.GameDisplayMetadataTest +[INFO] Tests run: 7, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.042 s -- in com.pandoli365.bibimbap.controller.api.GameDisplayMetadataTest +[INFO] Running com.pandoli365.bibimbap.controller.api.UserControllerCsrfTest +[INFO] Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.485 s -- in com.pandoli365.bibimbap.controller.api.UserControllerCsrfTest +[INFO] Running com.pandoli365.bibimbap.controller.TagControllerTest +[INFO] Tests run: 19, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.023 s -- in com.pandoli365.bibimbap.controller.TagControllerTest +[INFO] Running com.pandoli365.bibimbap.controller.WebMvcControllerTest +[INFO] Tests run: 11, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.022 s -- in com.pandoli365.bibimbap.controller.WebMvcControllerTest +[INFO] Running com.pandoli365.bibimbap.controller.JamJudgeAdminControllerTest +[INFO] Tests run: 14, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.007 s -- in com.pandoli365.bibimbap.controller.JamJudgeAdminControllerTest +[INFO] Running com.pandoli365.bibimbap.controller.JamVoteControllerTest +[INFO] Tests run: 23, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.024 s -- in com.pandoli365.bibimbap.controller.JamVoteControllerTest +[INFO] Running com.pandoli365.bibimbap.controller.JamAdminControllerTest +[INFO] Tests run: 10, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.035 s -- in com.pandoli365.bibimbap.controller.JamAdminControllerTest +[INFO] Running com.pandoli365.bibimbap.BibimbapApplicationTests +09:42:32.705 [main] INFO org.springframework.test.context.support.AnnotationConfigContextLoaderUtils -- Could not detect default configuration classes for test class [com.pandoli365.bibimbap.BibimbapApplicationTests]: BibimbapApplicationTests does not declare any static, non-private, non-final, nested classes annotated with @Configuration. +09:42:32.763 [main] INFO org.springframework.boot.test.context.SpringBootTestContextBootstrapper -- Found @SpringBootConfiguration com.pandoli365.bibimbap.BibimbapApplication for test class com.pandoli365.bibimbap.BibimbapApplicationTests + + . ____ _ __ _ _ + /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ +( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ + \\/ ___)| |_)| | | | | || (_| | ) ) ) ) + ' |____| .__|_| |_|_| |_\__, | / / / / + =========|_|==============|___/=/_/_/_/ + + :: Spring Boot :: (v3.5.16) + +2026-10-14T09:42:32.908+09:00 INFO 41713 --- [bibimbap] [ main] c.p.bibimbap.BibimbapApplicationTests : Starting BibimbapApplicationTests using Java 21.0.11 with PID 41713 (started by wemadeplay in /Users/wemadeplay/workspace/stz/bibimbap) +2026-10-14T09:42:32.909+09:00 INFO 41713 --- [bibimbap] [ main] c.p.bibimbap.BibimbapApplicationTests : The following 1 profile is active: "dev" +2026-10-14T09:42:33.541+09:00 INFO 41713 --- [bibimbap] [ main] o.s.b.a.w.s.WelcomePageHandlerMapping : Adding welcome page template: index +2026-10-14T09:42:33.606+09:00 WARN 41713 --- [bibimbap] [ main] o.s.w.s.resource.ResourceHandlerUtils : Appended trailing slash to static resource location: file:///Users/wemadeplay/workspace/stz/bibimbap/src/main/resources/static/game/profile/ +2026-10-14T09:42:33.656+09:00 INFO 41713 --- [bibimbap] [ main] c.p.bibimbap.BibimbapApplicationTests : Started BibimbapApplicationTests in 0.845 seconds (process running for 17.757) +2026-10-14T09:42:33.658+09:00 INFO 41713 --- [bibimbap] [ main] c.p.bibimbap.config.BadgeCatalogSeeder : [BADGE] ?? ???? ?? ??: 2 ? +2026-10-14T09:42:33.658+09:00 INFO 41713 --- [bibimbap] [ main] c.p.b.config.PermissionCatalogVerifier : [RBAC] ?? ???? ?? ??: 4 ? +[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.994 s -- in com.pandoli365.bibimbap.BibimbapApplicationTests +[INFO] Running com.pandoli365.bibimbap.service.PostMarkdownServiceTest +[INFO] Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.017 s -- in com.pandoli365.bibimbap.service.PostMarkdownServiceTest +[INFO] Running com.pandoli365.bibimbap.service.BadgeServiceTest +[INFO] Tests run: 12, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.004 s -- in com.pandoli365.bibimbap.service.BadgeServiceTest +[INFO] Running com.pandoli365.bibimbap.service.UnityFeedPollerTest +[INFO] Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.020 s -- in com.pandoli365.bibimbap.service.UnityFeedPollerTest +[INFO] Running com.pandoli365.bibimbap.service.FeedParserTest +[Fatal Error] :1:1: ??????? ???? ???? ????. +[Fatal Error] :2:10: DOCTYPE? "http://apache.org/xml/features/disallow-doctype-decl" ??? true? ??? ?? ???? ????. +[INFO] Tests run: 7, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.031 s -- in com.pandoli365.bibimbap.service.FeedParserTest +[INFO] Running com.pandoli365.bibimbap.jam.JamAwardServiceTest +[INFO] Tests run: 7, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.009 s -- in com.pandoli365.bibimbap.jam.JamAwardServiceTest +[INFO] Running com.pandoli365.bibimbap.jam.JamLifecycleTest +[INFO] Tests run: 8, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.001 s -- in com.pandoli365.bibimbap.jam.JamLifecycleTest +[INFO] Running com.pandoli365.bibimbap.jam.JamEvalWindowTest +[INFO] Tests run: 10, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.001 s -- in com.pandoli365.bibimbap.jam.JamEvalWindowTest +[INFO] +[INFO] Results: +[INFO] +[INFO] Tests run: 377, Failures: 0, Errors: 0, Skipped: 1 +[INFO] +[INFO] ------------------------------------------------------------------------ +[INFO] BUILD SUCCESS +[INFO] ------------------------------------------------------------------------ +[INFO] Total time: 21.623 s +[INFO] Finished at: 2026-10-14T09:42:33+09:00 +[INFO] ------------------------------------------------------------------------ +TAP version 13 +# Subtest: every uploaded build fits both axes in every normal and expanded viewport +ok 1 - every uploaded build fits both axes in every normal and expanded viewport + --- + duration_ms: 0.692625 + type: 'test' + ... +# Subtest: portrait iframe uses build aspect rather than the former fixed landscape rectangle +ok 2 - portrait iframe uses build aspect rather than the former fixed landscape rectangle + --- + duration_ms: 0.063958 + type: 'test' + ... +# Subtest: SSR player ships the stored ratio and responsive stage without the old hard limit +ok 3 - SSR player ships the stored ratio and responsive stage without the old hard limit + --- + duration_ms: 2.61775 + type: 'test' + ... +# Subtest: resize and overlay preserve same iframe, game state and source; close restores scroll/focus +ok 4 - resize and overlay preserve same iframe, game state and source; close restores scroll/focus + --- + duration_ms: 0.482375 + type: 'test' + ... +# Subtest: successful fullscreen enters and exits without reload and restores focus +ok 5 - successful fullscreen enters and exits without reload and restores focus + --- + duration_ms: 3.01275 + type: 'test' + ... +# Subtest: unsupported and rejected fullscreen use dismissible overlay +ok 6 - unsupported and rejected fullscreen use dismissible overlay + --- + duration_ms: 0.517167 + type: 'test' + ... +# Subtest: native fullscreen exit from overlay returns to overlay; Tab remains within player +ok 7 - native fullscreen exit from overlay returns to overlay; Tab remains within player + --- + duration_ms: 0.333167 + type: 'test' + ... +# Subtest: invalid reference metadata retains safe fallback rather than overflowing +ok 8 - invalid reference metadata retains safe fallback rather than overflowing + --- + duration_ms: 0.819833 + type: 'test' + ... +# Subtest: ZIP selection discovers each build before save; automatic metadata resets on replacement +ok 9 - ZIP selection discovers each build before save; automatic metadata resets on replacement + --- + duration_ms: 3.199 + type: 'test' + ... +# Subtest: custom dimensions survive new ZIP and final save chains server upload path +ok 10 - custom dimensions survive new ZIP and final save chains server upload path + --- + duration_ms: 1.52025 + type: 'test' + ... +# Subtest: automatic save sends mode and upload path and lets server resolve dimensions +ok 11 - automatic save sends mode and upload path and lets server resolve dimensions + --- + duration_ms: 0.855791 + type: 'test' + ... +1..11 +# tests 11 +# suites 0 +# pass 11 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 59.209958 +[INFO] Scanning for projects... +[INFO] +[INFO] ----------------------< com.pandoli365:bibimbap >----------------------- +[INFO] Building bibimbap 0.0.1-SNAPSHOT +[INFO] from pom.xml +[INFO] --------------------------------[ war ]--------------------------------- +[INFO] +[INFO] --- resources:3.3.1:resources (default-resources) @ bibimbap --- +[INFO] Copying 7 resources from src/main/resources to target/classes +[INFO] +[INFO] --- compiler:3.14.1:compile (default-compile) @ bibimbap --- +[INFO] Nothing to compile - all classes are up to date. +[INFO] +[INFO] --- resources:3.3.1:testResources (default-testResources) @ bibimbap --- +[INFO] skip non existing resourceDirectory /Users/wemadeplay/workspace/stz/bibimbap/src/test/resources +[INFO] +[INFO] --- compiler:3.14.1:testCompile (default-testCompile) @ bibimbap --- +[INFO] Nothing to compile - all classes are up to date. +[INFO] +[INFO] --- surefire:3.5.5:test (default-test) @ bibimbap --- +[INFO] Tests are skipped. +[INFO] +[INFO] --- war:3.4.0:war (default-war) @ bibimbap --- +[INFO] Packaging webapp +[INFO] Assembling webapp [bibimbap] in [/Users/wemadeplay/workspace/stz/bibimbap/target/bibimbap-0.0.1-SNAPSHOT] +[INFO] Processing war project +[INFO] Copying webapp resources [/Users/wemadeplay/workspace/stz/bibimbap/src/main/webapp] +[INFO] Building war: /Users/wemadeplay/workspace/stz/bibimbap/target/bibimbap-0.0.1-SNAPSHOT.war +[INFO] ------------------------------------------------------------------------ +[INFO] BUILD SUCCESS +[INFO] ------------------------------------------------------------------------ +[INFO] Total time: 1.073 s +[INFO] Finished at: 2026-10-14T09:42:35+09:00 +[INFO] ------------------------------------------------------------------------ +L1 WebGL display: PASS (Java regression, Node player regression, WAR package) +NOTICE: column "display_width" of relation "games" already exists, skipping +NOTICE: column "display_height" of relation "games" already exists, skipping +NOTICE: column "display_source" of relation "games" already exists, skipping +[INFO] Scanning for projects... +[INFO] +[INFO] ----------------------< com.pandoli365:bibimbap >----------------------- +[INFO] Building bibimbap 0.0.1-SNAPSHOT +[INFO] from pom.xml +[INFO] --------------------------------[ war ]--------------------------------- +[INFO] +[INFO] --- resources:3.3.1:resources (default-resources) @ bibimbap --- +[INFO] Copying 7 resources from src/main/resources to target/classes +[INFO] +[INFO] --- compiler:3.14.1:compile (default-compile) @ bibimbap --- +[INFO] Nothing to compile - all classes are up to date. +[INFO] +[INFO] --- resources:3.3.1:testResources (default-testResources) @ bibimbap --- +[INFO] skip non existing resourceDirectory /Users/wemadeplay/workspace/stz/bibimbap/src/test/resources +[INFO] +[INFO] --- compiler:3.14.1:testCompile (default-testCompile) @ bibimbap --- +[INFO] Nothing to compile - all classes are up to date. +[INFO] +[INFO] --- surefire:3.5.5:test (default-test) @ bibimbap --- +[INFO] Using auto detected provider org.apache.maven.surefire.junitplatform.JUnitPlatformProvider +[INFO] +[INFO] ------------------------------------------------------- +[INFO] T E S T S +[INFO] ------------------------------------------------------- +[INFO] Running com.pandoli365.bibimbap.mapper.WebglDisplayDatabaseContractTest +[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.228 s -- in com.pandoli365.bibimbap.mapper.WebglDisplayDatabaseContractTest +[INFO] +[INFO] Results: +[INFO] +[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0 +[INFO] +[INFO] ------------------------------------------------------------------------ +[INFO] BUILD SUCCESS +[INFO] ------------------------------------------------------------------------ +[INFO] Total time: 1.457 s +[INFO] Finished at: 2026-10-14T09:42:41+09:00 +[INFO] ------------------------------------------------------------------------ +L2 WebGL display: PASS (legacy row, idempotency, checks, fresh equivalence, actual mapper roundtrip) diff --git a/.atp/work-session/20261014-091658/artifacts/verification-integrated.log b/.atp/work-session/20261014-091658/artifacts/verification-integrated.log new file mode 100644 index 0000000..1474227 --- /dev/null +++ b/.atp/work-session/20261014-091658/artifacts/verification-integrated.log @@ -0,0 +1,4 @@ +bash: warning: setlocale: LC_ALL: cannot change locale (C.UTF-8): Bad file descriptor +The operation couldn’t be completed. Unable to locate a Java Runtime. +Please visit http://www.java.com for information on installing Java. + diff --git a/.atp/work-session/20261014-091658/documentation.md b/.atp/work-session/20261014-091658/documentation.md new file mode 100644 index 0000000..c8c017b --- /dev/null +++ b/.atp/work-session/20261014-091658/documentation.md @@ -0,0 +1,22 @@ +--- +phase: documentation +agent: documentation-advisor +agent_version: 1 +report_invocation_id: inv-005 +generated_at: 2026-10-14T09:54:53.525775+09:00 +concerns_checked: true +concerns: + - Existing usage index setup-checklist.md and faq.md links have no target; unrelated to feature. + - Trusted touchscreen and named Unity button outcome remain unverified. + - Baseline failure evidence is SSR markup regression; previous browser geometry was not replayed. +--- +# 문서화 보고 + +| 경로 | 카테고리 | 유형 | 링크 추가한 index | 교차 링크 | +|---|---|---|---|---| +| docs/usage/webgl-display.md | usage | 실행 명령/Java 환경 교정 | docs/usage/index.md 기존 링크 확인 | contracts/webgl-display-metadata.md | +| docs/changes/2026-10-14-webgl-display.md | changes | 실제 검증 결과/한계 기록 | docs/changes/index.md 기존 링크 확인 | usage/webgl-display.md, 세션 검증/감사 | + +실행 계약은 usage, 이번 구현 결과는 changes, 메타 계약은 contracts에 유지했다. 문서 스코프 대조 완료. 상세 감사: [final-doc-ui-audit.md](artifacts/final-doc-ui-audit.md). 미완료: trusted touch/named Unity 버튼 결과, 이전 브라우저 geometry. 구현 제품/테스트 코드와 DB/런타임/정책은 변경하지 않았다. + +self_verification: checklist_passed=true; backport=N/A. documentation-guidelines.md는 없어 category/advisor 체크리스트를 적용했다. diff --git a/.atp/work-session/20261014-091658/implementation/design.md b/.atp/work-session/20261014-091658/implementation/design.md new file mode 100644 index 0000000..a9cd2c1 --- /dev/null +++ b/.atp/work-session/20261014-091658/implementation/design.md @@ -0,0 +1,116 @@ +--- +phase: design +agent: design-advisor +agent_version: 1 +report_invocation_id: inv-002 +generated_at: 2026-10-14T09:29:21+09:00 +concerns_checked: true +concerns: + - Arbitrary WebGL templates may contain no statically recoverable intended dimensions; automatic inference cannot promise Unity scene layout adaptation. Author override is required for these cases. + - New database columns must precede deployment. Existing shared local containers are running; use isolated test DB/runtime, and do not apply shared/production DDL without orchestrator gate. +references: + requirements: user clarification — every uploaded game, not the example ZIP + research: ../research/research.md + adrs: [] +--- + +# 설계: 업로드 빌드별 WebGL 플레이 화면 + +## 목표 / 비목표 + +빌드마다 기준 폭·높이를 안전하게 읽고 등록·수정 시 영속화하여, 상세 화면이 해당 게임의 정확한 비율로 양축 contain한다. 작성자가 감지 결과를 교정할 수 있고, 기존 게임도 읽기 시 감지 또는 명시된 기본값으로 작동한다. 확대·전체화면 변경에도 iframe 및 게임 인스턴스를 유지한다. + +Unity 내부 카메라/Canvas Scaler/앵커를 개조하거나 임의 템플릿의 의도 해상도를 완벽히 추론하는 작업은 범위 밖이다. ZIP 원본과 업로드 HTML은 변경하지 않는다. 특정 게임 이름/390×844를 제품 기본값으로 사용하지 않는다. + +## 개요 + +현재 업로드는 ZIP 추출→index 찾기→Unity 파일 검사→저장→webglPath 응답이다. 추가할 정적 분석기는 검증된 추출 디렉터리의 index와 인접 메타만 읽는다. 메타는 정수와 제한된 출처 enum으로만 반환하며 HTML/JS 실행, 스크립트 fetch, 임의 HTML 주입을 하지 않는다. 게임별 dimensions는 DB 게임 row에 저장된다. 부모는 dimensions로 iframe 박스만 조정하므로 별도 asset-origin 구성에서도 작동한다. + +JS가 없는 초기 렌더에서도 서버 제공 비율 기반 CSS contain이 작동해야 한다. JS는 가용 크기 재계산과 확대/전체화면 상태만 담당한다. 디자인은 기존 골드/다크 테마, shell, 버튼 스타일을 유지한다. Impeccable adapt skill/context를 읽었으며 narrow refinement로 판정했다. PRODUCT.md 신규 생성/리디자인은 필요하지 않다. + +## 플로우 + +1. ZIP 업로드 후 `ZipSecurity.assertUnityBuild` 통과, 이동 전에 `WebglDisplayMetadata.detect(indexFile)` 실행. 검사 오류/알 수 없는 템플릿은 업로드 실패 사유가 아니다. `displayWidth`, `displayHeight`는 둘 다 integer 또는 둘 다 null, `displaySource`는 enum이다. +2. 등록 폼에 “화면 크기”와 자동/직접 지정 선택을 제공한다. 자동 기본값으로 업로드 결과를 안내하고, 직접 지정이면 폭/높이 두 number 입력을 활성화한다. UX에 HTML parser/출처 enum/DB 등 구현 세부를 노출하지 않는다. 예: “빌드에서 960 × 600 화면을 확인했습니다.” / “화면 크기를 확인하지 못했습니다. 직접 지정하거나 기본 가로 화면으로 등록할 수 있습니다.” +3. 폼은 업로드가 끝난 뒤 최종 `/game/new` 또는 `/game/{id}/edit` 저장 요청을 보낸다. 자동이면 서버가 등록 대상의 저장된 index를 다시 분석하여 dims/source를 확정한다. 직접 지정이면 서버 범위 검증 후 source=manual로 저장한다. 업로드 응답을 클라이언트가 변경해도 server source 판정은 바뀌지 않는다. +4. 수정: 기존 manual 값은 직접 지정 선택에 로드한다. 기존 자동 값은 자동 선택 및 감지 결과 표시. 새 ZIP 선택 시 과거 자동 결과를 초기화하고 새 응답 반영; 직접 지정 값은 사용자 의도이므로 유지하며 필요 시 수정 가능하게 한다. mode 누락을 포함한 구 클라이언트 수정 요청은 webglPath 동일 시 기존 metadata 보존; path 교체 시 재감지한다. +5. 상세 GET: 유효 저장 dims 우선. null인 기존 row는 업로드 저장 index를 읽기 전용 감지한다(백필/write 없음). 감지 실패/파일 없음은 source=unknown, 16:9 fallback. nullable row를 예시 게임 비율로 일괄 변경하지 않는다. 작성자는 기존 게임 수정 화면에서 직접 지정 또는 자동 재저장 가능하다. +6. 플레이 영역은 정확한 ratio 유지, 검은 여백 중앙 정렬. “크게 보기”는 같은 wrapper를 viewport overlay로 전환하고 Esc/닫기로 복귀; “전체화면”은 같은 wrapper의 Fullscreen API 사용. API unsupported/rejected면 크게 보기 기능으로 안전하게 전환하고 간단한 상태 안내. 같은 iframe DOM과 src 유지, reload/reparent/transform-scale 금지. + +## 감지 계약 / 우선순위 + +- 정수 1..16384만 허용; width/height 둘 모두 필요; 극단적인 종횡비 1:32..32:1 밖은 unknown 처리. 정수형 숫자와 숫자 문자열은 명시 검증 후 지원 가능. NaN, 무한대, fraction, 음수, 불완전 pair는 거부/unknown. 300×150은 기본 canvas 버퍼로 간주하여 자동 근거에서 제외한다(작성자 manual 지정은 가능). +- 순서: **manual > 인접 `build-info.json`의 top-level `width/height` > 명확한 Unity canvas의 CSS pixel 크기 > 명시 canvas width/height 속성 > unknown fallback**. build-info가 손상되면 다음 신호로 진행한다. metadata는 기술상 선언값이며 실제 scene 의도 검증과 구분한다. +- `build-info.json`은 선택된 index와 같은 디렉터리만 읽는다. 다른 빌드의 metadata를 재귀 탐색해서 혼합하지 않는다. 정적 index 최대 1MiB, JSON 최대 64KiB, 제한 넘으면 해당 신호 skip; bounded read로 메모리 공격 방지. 읽을 때 normalize/real-path boundary, regular-file 및 symlink 방어를 기존 업로드 경계 규칙과 정합한다. +- 기존 jsoup 의존성 활용. canvas는 `id=unity-canvas` 우선, 없으면 canvas가 정확히 1개인 경우만 허용. 복수 ambiguous canvas는 unknown. pixel CSS는 대상 canvas 또는 명확한 `#unity-container`의 inline style/style block의 width/height pair, 혹은 Unity 기본 템플릿의 canvas 변수에 대한 literal `style.width = "960px"`, `style.height = "600px"` pair만 support한다. 이때 해당 변수가 Unity canvas query와 명확히 연결되고 재할당/충돌없는 경우만 인정한다. 문자열/comments/다른 객체의 style을 주워오지 않는다. 안전한 제한 matcher로 충분하지 않으면 그 JS 형식은 지원 제외하고 explicit attrs를 사용한다. +- percent/vw/vh/calc/min/max/동적 JS 실행값/외부 stylesheet는 intended dimensions 증거로 사용하지 않는다. canvas 속성은 초기 buffer일 수 있어 낮은 confidence로 안내하고 manual override를 제공한다. 충돌한 저우선 신호는 고우선 신호를 덮어쓰지 않는다. parser exceptions은 unknown, 원래 업로드 성공을 유지한다. +- helper는 `detect(Path indexFile /* 검증된 빌드 진입점 */)` 최소 인자. 저장 경로에서 detect를 호출하는 계층은 configured game-storage root 하위만 허용하며 HTTP fetch/사용자 입력 absolute path는 사용하지 않는다. 정적 유틸이면 기존 constructor wiring을 최소화할 수 있다. + +## 데이터 모델 + +`games`: nullable `display_width integer`, `display_height integer`, `display_source varchar(16)` 추가. null pair는 기존/unknown. 두 값은 모두 null 또는 모두 유효 정수; source는 `build-info | css | canvas | manual | unknown`로 제한한다. ratio는 계산값으로 별도 저장하지 않는다. GameData에 Integer displayWidth/displayHeight와 String displaySource 접근자 추가. GamesMapper의 모든 GameData 조회와 INSERT/UPDATE에 필드 포함. + +DB check는 pair validity 및 허용 범위/source를 보호한다. 새 스키마와 마이그레이션의 정의가 일치해야 한다. additive nullable migration은 기존 row를 삭제/수정하지 않는다. 마이그레이션 파일은 `ADD COLUMN IF NOT EXISTS` 사용, 제약명 존재 조회로 재실행 가능하게 한다. 앱 자동 DDL 및 공유 DB 자동 적용은 금지. rollback은 우선 앱 이전 버전으로 되돌리고 nullable 컬럼은 남겨도 역호환; 실제 DROP은 별도 승인 절차다. + +## 외부 계약 + +`POST /api/game-files/webgl-zip`: 기존 필드 그대로 + optional nullable `displayWidth`, `displayHeight`, `displaySource`. unknown metadata는 정상 HTTP 200이며 게임 upload security 검사 변경 없음. + +`POST /game/new`, `POST /game/{id}/edit`: optional `displayMode=auto|custom`, `displayWidth`, `displayHeight`. unknown mode 및 custom 불완전/범위밖 입력은 HTTP 400, 한국어 field error. 기존 CSRF/auth/ownership 분기 우선순서 유지. auto는 dimension params 무시하고 저장 index 정적 감지; unknown은 null/unknown 저장하며 detail fallback. legacy create(mode 미지정)는 auto. legacy edit는 앞선 보존 규칙 적용. 외부 URL은 분석하지 않는다. + +SSR addGameModel은 `webglDisplayWidth/Height` 또는 동등 numeric model attribute 및 known/source를 제공한다. register editModel에도 dimension/source 추가. JSP data attrs에는 검증한 숫자만 출력한다. HTML/script 문자열 삽입 없음. iframe sandbox/allow/asset-origin 계약 유지. + +## 플레이어 크기 계약 + +`scale = min(availableWidth / referenceWidth, availableHeight / referenceHeight)`; width=referenceWidth*scale, height=referenceHeight*scale. 비율 오차는 CSS 반올림 1px 이내. normal height budget은 `min(70dvh, 720px)`(vh fallback), actual host width는 ResizeObserver 측정한다. 큰 세로 게임이 기존 520px/16:9에 갇히지 않도록 frame stage 자체를 높이 budget으로 제공한다. CSS fallback은 stage grid center + iframe aspect ratio와 max width/height를 이용한다. + +expanded/fullscreen은 safe-area 및 toolbar를 뺀 stage 실제 content box로 양축 contain. overlay 또는 fullscreen 부모에서 width/height budget을 결정하며 JS는 DOM 측정값만 사용한다. `ResizeObserver`, `window.resize`, `visualViewport.resize`(지원시), fullscreenchange로 갱신; RAF coalescing, observer 재귀 없는 변경 방식. overlay에서 body scroll 이전 값 보존/복원, Esc 및 닫기, focus 이전 요소 복귀, 버튼 aria-expanded/pressed 정확 갱신. Fullscreen promise 실패를 처리. 터치 대상 44px, focus-visible 유지, 툴바 모바일 wrapping, resize 애니메이션 및 canvas CSS transform 금지. 해당 통합은 조작 단추 2개만 사용하며 플레이어에 수동 비율 dropdown을 반복 노출하지 않는다. + +## 파일 영향 맵 / 소유권 + +모든 기존 경로는 직접 읽기/rg로 확인했다. `신규` 표기는 구현 단계 생성할 경로다. 구현자 하나가 backend 집합, 하나가 frontend 집합을 소유할 수 있으며 같은 파일 동시 편집 금지. 테스트 작성도 구현자의 책임이다. + +| 변경 | 경로 | 책임/owner | +|---|---|---| +| 신규 | src/main/java/com/pandoli365/bibimbap/util/WebglDisplayMetadata.java | 정적 감지 value/utility; backend | +| 수정 | src/main/java/com/pandoli365/bibimbap/controller/api/GameUploadController.java | ZIP 감지 및 응답; backend | +| 수정 | src/main/java/com/pandoli365/bibimbap/controller/api/GameController.java | 저장/edit/SSR 및 경계검증; backend | +| 수정 | src/main/java/com/pandoli365/bibimbap/data/GameData.java | nullable metadata; backend | +| 수정 | src/main/java/com/pandoli365/bibimbap/mapper/GamesMapper.java | 전 조회/INSERT/UPDATE; backend | +| 수정 | db/schema.sql | fresh schema; backend | +| 신규 | db/migrations/20261014-game-display-metadata.sql | 기존 row 호환 additive DDL; backend | +| 신규 | src/test/java/com/pandoli365/bibimbap/util/WebglDisplayMetadataTest.java | parser fixtures; backend | +| 수정 | src/test/java/com/pandoli365/bibimbap/controller/api/GameUploadControllerSecurityTest.java | upload response / malformed tolerated regression; backend | +| 신규 | src/test/java/com/pandoli365/bibimbap/controller/api/GameDisplayMetadataTest.java | create/edit/SSR metadata/legacy/400/CSRF/ownership; backend | +| 조건부 | src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java 및 기존 GameController 직접 호출 테스트 | constructor/signature 변경 시 fixture 전수 갱신; backend | +| 수정 | src/main/webapp/WEB-INF/views/game-register.jsp | 자동/custom 등록·수정 UI 및 upload chaining; frontend | +| 수정 | src/main/webapp/WEB-INF/views/game-detail.jsp | numeric attrs + controls, old fixed aspect CSS 교체; frontend | +| 신규 | src/main/webapp/js/webgl-player.js | contain/overlay/fullscreen stable iframe; frontend | +| 신규 | src/main/webapp/css/webgl-player.css | minimal scoped stage/toolbar/safe-area; frontend | +| 신규 | src/test/js/webgl-player.test.cjs | meaningful layout/resize/state regression (Node native test or repository convention); frontend | +| 신규 | docs/contracts/webgl-display-metadata.md | extraction/precedence/API/fallback declaration; docs owner | +| 신규 | docs/usage/webgl-display.md | author override, existing game edit, migration/use guide; docs owner | +| 신규 | docs/changes/2026-10-14-webgl-display.md | behavior/validation record; docs owner | +| 수정 | docs/contracts/index.md, docs/usage/index.md, docs/changes/index.md | indexes; docs owner | + +## 롤아웃 / 마이그레이션 + +건강한 bibimbap-db(5433)와 bibimbap-app(8080)을 발견했으나 접근/mutation 없음. 별도 disposable DB/schema와 별도 포트 앱에 fresh schema 적용 후 migration 재실행/기존 row contract를 검증한다. credential 값 출력 없이 container 내부 환경을 이용한다. shared local/production 마이그레이션 및 배포가 필요하면 파일+검증 근거를 제공한 뒤 orchestrator가 최종 게이트 처리한다. 승인 전에도 isolated runtime에서 새 JSP와 실제 ZIP 전체 흐름을 검증할 수 있다. migration 선적용→app deployment 순서 문서화. 이 설계와 구현 자체는 사용자 승인 범위이며 재승인 불필요. + +## 검증 포인트 + +AC self-audit: 기대값은 metadata/DOM/DB 행위 불변식에 고정하고 work-session 산출물 개수에 의존하지 않는다. 표현은 literal grep 대신 typed parser/HTTP/DB/DOM assertions; 파일 집합만 아래 명시 목록 전수 확인한다. + +- AC-1 parser fixture 집합 전수: portrait, landscape, square, nested index+adjacent info, HTML attrs, Unity literal CSS, conflicting precedence, no metadata, 300×150 default, malformed JSON, invalid pair/range, multiple ambiguous canvas, malicious script/nonliteral, oversize inputs. 각 named fixture 검증 및 product에서 JS 실행 0건; metadata 없는 정상 ZIP HTTP 200. +- AC-2 실제 uploaded game: 제공 ZIP은 390×844 반환; 다른 이름의 1280×720 및 800×800 ZIP도 자신의 값 반환. filename/게임명 상수 없이 동일 계약. +- AC-3 등록→DB→상세/수정 round trip; auto/custom/legacy path 전수 분기, manual 우선, 새 ZIP metadata 업데이트, 구 edit omission 보존, unknown nullable & fallback. 두 숫자 invalid는 400, CSRF/auth/owner unchanged. +- AC-4 isolated PostgreSQL mapper 계약: migration 기존 row 유지/NULL fallback, 재실행 가능; 모든 GameData SELECT 및 INSERT/UPDATE dimensions/source 정합. fresh schema와 migrated schema 동일. L2 remote/seed 미지정만 skip 가능; 알려진 healthy DB에서 가능한 isolated 검증을 우선한다. +- AC-5 stage viewport 집합 전수: 320×844, 1440×900, 844×390, 640×300에서 portrait/landscape/square 모두 iframe 양축 boundary 이내/ratio 오차 ≤1px. 현재 16:9/max520 구현에서 portrait 회귀는 실패하고 수정 후 통과함을 확보한다. +- AC-6 resize/overlay/fullscreen 진입·해제/실패 fallback에서 exact same iframe DOM, src, load count, 게임 state 유지; Esc/닫기/focus/scroll 복원. asset-origin 다른 origin에서도 parent canvas DOM access 없이 지원. +- AC-7 실제 ZIP runtime: 준비 후 CSS client size와 drawing buffer를 별도로 기록; 정상/expanded/fullscreen(지원 브라우저) resize, 상하단 UI 표시, 버튼 좌표/클릭, 모바일 터치 입력 점검. 원본 ZIP 및 served uploaded HTML hash 미변경. +- AC-8 full `./mvnw -o test` 및 WAR package 통과; isolated 최신 앱에서 detail/register/edit 변경 JSP 전수 HTTP 200(인증 포함). runtime stacktrace 및 console error scan. 새 constructor 의존이 생기면 contextLoads mocks 갱신. screenshot은 desktop/mobile 묶음 한 번+필요 fix 한 번; Impeccable detect changed UI 대상 한 번 실행. +- AC-9 파일 영향맵의 신규 산출물은 전수 존재하되 conditional 경로는 조건 성립시에만 변경; docs 계약/사용/변경 3개와 해당 index 링크 모두 확인. verification-advisor는 테스트를 작성하지 않고 실행만 수행. + +## 실행 계약 / 자가 검증 + +update_plan은 tools에 없어 bind를 생성하지 않았고 parent에 고지했다. child 0건, 테스트 실행 0건, 제품/ZIP/DB 변경 0건; 이 design.md만 작성했다. frontmatter/근거 경로/concerns 검토 완료. shared DB migration gate는 구현 blocker가 아니며 isolated validation 가능하다. diff --git a/.atp/work-session/20261014-091658/implementation/lifecycle-events.jsonl b/.atp/work-session/20261014-091658/implementation/lifecycle-events.jsonl new file mode 100644 index 0000000..487a9ed --- /dev/null +++ b/.atp/work-session/20261014-091658/implementation/lifecycle-events.jsonl @@ -0,0 +1,12 @@ +{"recorded_at": "2026-10-14T09:31:17.298843+09:00", "logical_task": "backend", "report_invocation_id": "inv-003-w01", "environment_invocation_id": "/root/atp_pool_wgimpl01_1of1_a6814cde/atp_pool_wgworkers01_1of4_f610aa01", "attempt": 1, "clean_retry_limit": 0, "clean_retry_limit_source": "parent no automatic retry authorization", "retries_spawned": 0, "event": "accepted", "provenance": "environment", "source_ref": "collaboration.spawn_agent response /root/atp_pool_wgimpl01_1of1_a6814cde/atp_pool_wgworkers01_1of4_f610aa01"} +{"recorded_at": "2026-10-14T09:31:17.298843+09:00", "logical_task": "backend", "report_invocation_id": "inv-003-w01", "environment_invocation_id": "/root/atp_pool_wgimpl01_1of1_a6814cde/atp_pool_wgworkers01_1of4_f610aa01", "attempt": 1, "clean_retry_limit": 0, "clean_retry_limit_source": "parent no automatic retry authorization", "retries_spawned": 0, "event": "ownership_active", "provenance": "advisor", "source_ref": "implementation/ownership.md#backend", "scope": ["backend"], "rationale": "Explicit allocated file write authority"} +{"recorded_at": "2026-10-14T09:31:17.298843+09:00", "logical_task": "frontend", "report_invocation_id": "inv-003-w02", "environment_invocation_id": "/root/atp_pool_wgimpl01_1of1_a6814cde/atp_pool_wgworkers01_2of4_f610aa02", "attempt": 1, "clean_retry_limit": 0, "clean_retry_limit_source": "parent no automatic retry authorization", "retries_spawned": 0, "event": "accepted", "provenance": "environment", "source_ref": "collaboration.spawn_agent response /root/atp_pool_wgimpl01_1of1_a6814cde/atp_pool_wgworkers01_2of4_f610aa02"} +{"recorded_at": "2026-10-14T09:31:17.298843+09:00", "logical_task": "frontend", "report_invocation_id": "inv-003-w02", "environment_invocation_id": "/root/atp_pool_wgimpl01_1of1_a6814cde/atp_pool_wgworkers01_2of4_f610aa02", "attempt": 1, "clean_retry_limit": 0, "clean_retry_limit_source": "parent no automatic retry authorization", "retries_spawned": 0, "event": "ownership_active", "provenance": "advisor", "source_ref": "implementation/ownership.md#frontend", "scope": ["frontend"], "rationale": "Explicit allocated file write authority"} +{"recorded_at": "2026-10-14T09:35:46.542933+09:00", "logical_task": "backend", "report_invocation_id": "inv-003-w01", "environment_invocation_id": "01a137d1-c16a-7cc1-b011-f03b6435a0e3", "attempt": 1, "event": "completed", "provenance": "environment", "source_ref": "ATP_POOL_TERMINAL_DELTA wgworkers01 index1 sha88f4812ab710268d1ffef930eb4c40dba4708e83a676391753d832d8bbcd9688", "clean_retry_limit": 0, "clean_retry_limit_source": "parent no automatic retry authorization", "retries_spawned": 0} +{"recorded_at": "2026-10-14T09:35:46.542933+09:00", "logical_task": "migration", "report_invocation_id": "inv-003-w03", "environment_invocation_id": "/root/atp_pool_wgimpl01_1of1_a6814cde/atp_pool_wgworkers01_3of4_f610aa03", "attempt": 1, "event": "accepted", "provenance": "environment", "source_ref": "collaboration.spawn_agent response", "clean_retry_limit": 0, "clean_retry_limit_source": "parent no automatic retry authorization", "retries_spawned": 0} +{"recorded_at": "2026-10-14T09:35:46.542933+09:00", "logical_task": "migration", "report_invocation_id": "inv-003-w03", "environment_invocation_id": "/root/atp_pool_wgimpl01_1of1_a6814cde/atp_pool_wgworkers01_3of4_f610aa03", "attempt": 1, "event": "ownership_active", "provenance": "advisor", "source_ref": "implementation/ownership.md#migration", "clean_retry_limit": 0, "clean_retry_limit_source": "parent no automatic retry authorization", "retries_spawned": 0, "scope": ["migration"], "rationale": "Explicit allocated write authority"} +{"recorded_at": "2026-10-14T09:36:18.956153+09:00", "logical_task": "frontend", "report_invocation_id": "inv-003-w02", "environment_invocation_id": "/root/atp_pool_wgimpl01_1of1_a6814cde/atp_pool_wgworkers01_2of4_f610aa02", "attempt": 1, "event": "completed", "provenance": "environment", "source_ref": "collaboration FINAL_ANSWER wgworkers01 2/4 f610aa02", "clean_retry_limit": 0, "clean_retry_limit_source": "parent no automatic retry authorization", "retries_spawned": 0} +{"recorded_at": "2026-10-14T09:36:18.956153+09:00", "logical_task": "docs-verification", "report_invocation_id": "inv-003-w04", "environment_invocation_id": "/root/atp_pool_wgimpl01_1of1_a6814cde/atp_pool_wgworkers01_4of4_f610aa04", "attempt": 1, "event": "accepted", "provenance": "environment", "source_ref": "collaboration.spawn_agent response wgworkers01 4/4", "clean_retry_limit": 0, "clean_retry_limit_source": "parent no automatic retry authorization", "retries_spawned": 0} +{"recorded_at": "2026-10-14T09:36:18.956153+09:00", "logical_task": "docs-verification", "report_invocation_id": "inv-003-w04", "environment_invocation_id": "/root/atp_pool_wgimpl01_1of1_a6814cde/atp_pool_wgworkers01_4of4_f610aa04", "attempt": 1, "event": "ownership_active", "provenance": "advisor", "source_ref": "implementation/ownership.md#docs-verification", "clean_retry_limit": 0, "clean_retry_limit_source": "parent no automatic retry authorization", "retries_spawned": 0, "scope": ["docs-verification"], "rationale": "Explicit allocated write authority"} +{"recorded_at": "2026-10-14T09:36:43.485758+09:00", "logical_task": "migration", "report_invocation_id": "inv-003-w03", "environment_invocation_id": "01a137d5-fbdb-7f31-a4aa-87ad3782bff0", "attempt": 1, "event": "completed", "provenance": "environment", "source_ref": "ATP_POOL_TERMINAL_DELTA wgworkers01 3/4 sha11a533967ee89942af4dc9ec55b7c6a20e8ace2b9d838080053bf979c7e272b2", "clean_retry_limit": 0, "clean_retry_limit_source": "parent no automatic retry authorization", "retries_spawned": 0} +{"recorded_at": "2026-10-14T09:40:31.246818+09:00", "logical_task": "docs-verification", "report_invocation_id": "inv-003-w04", "environment_invocation_id": "01a137d6-5eab-7600-a956-13344e6c6f2f", "attempt": 1, "event": "completed", "provenance": "environment", "source_ref": "ATP_POOL_TERMINAL_DELTA wgworkers01 4/4 shaa871dd0ad901598b785b5386f2c299c786a32bba7c2634d76d0b9aa1aeb7a924", "clean_retry_limit": 0, "clean_retry_limit_source": "parent no automatic retry authorization", "retries_spawned": 0} diff --git a/.atp/work-session/20261014-091658/implementation/ownership-state.json b/.atp/work-session/20261014-091658/implementation/ownership-state.json new file mode 100644 index 0000000..4c5e8bc --- /dev/null +++ b/.atp/work-session/20261014-091658/implementation/ownership-state.json @@ -0,0 +1,169 @@ +[ + { + "scope_id": "backend", + "scope_kind": "directory", + "scope_paths": [ + "src/main/java/com/pandoli365/bibimbap/util/WebglDisplayMetadata.java", + "src/main/java/com/pandoli365/bibimbap/controller/api/GameUploadController.java", + "src/main/java/com/pandoli365/bibimbap/controller/api/GameController.java", + "src/main/java/com/pandoli365/bibimbap/data/GameData.java", + "src/main/java/com/pandoli365/bibimbap/mapper/GamesMapper.java", + "src/test/java/com/pandoli365/bibimbap/util/WebglDisplayMetadataTest.java", + "src/test/java/com/pandoli365/bibimbap/controller/api/GameUploadControllerSecurityTest.java", + "src/test/java/com/pandoli365/bibimbap/controller/api/GameDisplayMetadataTest.java", + "src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java" + ], + "state": "released", + "owner_report_invocation_id": "inv-003-w01", + "owner_environment_invocation_id": "01a137d1-c16a-7cc1-b011-f03b6435a0e3", + "revoked_from_report_invocation_id": null, + "revoked_from_environment_invocation_id": null, + "handoff_to_report_invocation_id": null, + "handoff_to_environment_invocation_id": null, + "handoff_at": null, + "dependencies": [], + "reservation": { + "directory": null, + "namespace": null, + "namespace_key": null, + "schema_files": [] + }, + "generated_paths": [ + "src/main/java/com/pandoli365/bibimbap/util/WebglDisplayMetadata.java", + "src/main/java/com/pandoli365/bibimbap/controller/api/GameUploadController.java", + "src/main/java/com/pandoli365/bibimbap/controller/api/GameController.java", + "src/main/java/com/pandoli365/bibimbap/data/GameData.java", + "src/main/java/com/pandoli365/bibimbap/mapper/GamesMapper.java", + "src/test/java/com/pandoli365/bibimbap/util/WebglDisplayMetadataTest.java", + "src/test/java/com/pandoli365/bibimbap/controller/api/GameUploadControllerSecurityTest.java", + "src/test/java/com/pandoli365/bibimbap/controller/api/GameDisplayMetadataTest.java" + ], + "pause": { + "reason": null, + "source_ref": null, + "caused_by_report_invocation_id": null, + "caused_by_environment_invocation_id": null + } + }, + { + "scope_id": "frontend", + "scope_kind": "directory", + "scope_paths": [ + "src/main/webapp/WEB-INF/views/game-register.jsp", + "src/main/webapp/WEB-INF/views/game-detail.jsp", + "src/main/webapp/js/webgl-player.js", + "src/main/webapp/css/webgl-player.css", + "src/test/js/webgl-player.test.cjs" + ], + "state": "released", + "owner_report_invocation_id": "inv-003-w02", + "owner_environment_invocation_id": "/root/atp_pool_wgimpl01_1of1_a6814cde/atp_pool_wgworkers01_2of4_f610aa02", + "revoked_from_report_invocation_id": null, + "revoked_from_environment_invocation_id": null, + "handoff_to_report_invocation_id": null, + "handoff_to_environment_invocation_id": null, + "handoff_at": null, + "dependencies": [], + "reservation": { + "directory": null, + "namespace": null, + "namespace_key": null, + "schema_files": [] + }, + "generated_paths": [ + "src/main/webapp/WEB-INF/views/game-register.jsp", + "src/main/webapp/WEB-INF/views/game-detail.jsp", + "src/main/webapp/js/webgl-player.js", + "src/main/webapp/css/webgl-player.css", + "src/test/js/webgl-player.test.cjs" + ], + "pause": { + "reason": null, + "source_ref": null, + "caused_by_report_invocation_id": null, + "caused_by_environment_invocation_id": null + } + }, + { + "scope_id": "migration", + "scope_kind": "migration_namespace", + "scope_paths": [ + "db/schema.sql", + "db/migrations/20261014-game-display-metadata.sql" + ], + "state": "released", + "owner_report_invocation_id": "inv-003-w03", + "owner_environment_invocation_id": "01a137d5-fbdb-7f31-a4aa-87ad3782bff0", + "revoked_from_report_invocation_id": null, + "revoked_from_environment_invocation_id": null, + "handoff_to_report_invocation_id": null, + "handoff_to_environment_invocation_id": null, + "handoff_at": null, + "dependencies": [], + "reservation": { + "directory": "db/migrations", + "namespace": "20261014-game-display-metadata", + "namespace_key": "db/migrations::20261014-game-display-metadata", + "schema_files": [ + "db/schema.sql" + ] + }, + "generated_paths": [ + "db/schema.sql", + "db/migrations/20261014-game-display-metadata.sql" + ], + "pause": { + "reason": null, + "source_ref": null, + "caused_by_report_invocation_id": null, + "caused_by_environment_invocation_id": null + } + }, + { + "scope_id": "docs-verification", + "scope_kind": "directory", + "scope_paths": [ + "docs/contracts/webgl-display-metadata.md", + "docs/usage/webgl-display.md", + "docs/changes/2026-10-14-webgl-display.md", + "docs/contracts/index.md", + "docs/usage/index.md", + "docs/changes/index.md", + "docs/development/verification-strategies.md", + "scripts/verify-webgl-display.sh", + "src/test/java/com/pandoli365/bibimbap/mapper/WebglDisplayDatabaseContractTest.java" + ], + "state": "released", + "owner_report_invocation_id": "inv-003-w04", + "owner_environment_invocation_id": "01a137d6-5eab-7600-a956-13344e6c6f2f", + "revoked_from_report_invocation_id": null, + "revoked_from_environment_invocation_id": null, + "handoff_to_report_invocation_id": null, + "handoff_to_environment_invocation_id": null, + "handoff_at": null, + "dependencies": [], + "reservation": { + "directory": null, + "namespace": null, + "namespace_key": null, + "schema_files": [] + }, + "generated_paths": [ + "docs/contracts/webgl-display-metadata.md", + "docs/usage/webgl-display.md", + "docs/changes/2026-10-14-webgl-display.md", + "docs/contracts/index.md", + "docs/usage/index.md", + "docs/changes/index.md", + "docs/development/verification-strategies.md", + "scripts/verify-webgl-display.sh", + "src/test/java/com/pandoli365/bibimbap/mapper/WebglDisplayDatabaseContractTest.java" + ], + "pause": { + "reason": null, + "source_ref": null, + "caused_by_report_invocation_id": null, + "caused_by_environment_invocation_id": null + } + } +] \ No newline at end of file diff --git a/.atp/work-session/20261014-091658/implementation/ownership.md b/.atp/work-session/20261014-091658/implementation/ownership.md new file mode 100644 index 0000000..fb61ed6 --- /dev/null +++ b/.atp/work-session/20261014-091658/implementation/ownership.md @@ -0,0 +1,185 @@ +--- +phase: implementation +agent: implementation-advisor +agent_version: 2 +generated_at: 2026-10-14T09:40:31.246818+09:00 +concerns: [] +concerns_checked: true +lifecycle_ledger: "./lifecycle-events.jsonl" +--- + +# 파일 소유권 맵 + +```json +{ + "ownership_records": [ + { + "scope_id": "backend", + "scope_kind": "directory", + "scope_paths": [ + "src/main/java/com/pandoli365/bibimbap/util/WebglDisplayMetadata.java", + "src/main/java/com/pandoli365/bibimbap/controller/api/GameUploadController.java", + "src/main/java/com/pandoli365/bibimbap/controller/api/GameController.java", + "src/main/java/com/pandoli365/bibimbap/data/GameData.java", + "src/main/java/com/pandoli365/bibimbap/mapper/GamesMapper.java", + "src/test/java/com/pandoli365/bibimbap/util/WebglDisplayMetadataTest.java", + "src/test/java/com/pandoli365/bibimbap/controller/api/GameUploadControllerSecurityTest.java", + "src/test/java/com/pandoli365/bibimbap/controller/api/GameDisplayMetadataTest.java", + "src/test/java/com/pandoli365/bibimbap/BibimbapApplicationTests.java" + ], + "state": "released", + "owner_report_invocation_id": "inv-003-w01", + "owner_environment_invocation_id": "01a137d1-c16a-7cc1-b011-f03b6435a0e3", + "revoked_from_report_invocation_id": null, + "revoked_from_environment_invocation_id": null, + "handoff_to_report_invocation_id": null, + "handoff_to_environment_invocation_id": null, + "handoff_at": null, + "dependencies": [], + "reservation": { + "directory": null, + "namespace": null, + "namespace_key": null, + "schema_files": [] + }, + "generated_paths": [ + "src/main/java/com/pandoli365/bibimbap/util/WebglDisplayMetadata.java", + "src/main/java/com/pandoli365/bibimbap/controller/api/GameUploadController.java", + "src/main/java/com/pandoli365/bibimbap/controller/api/GameController.java", + "src/main/java/com/pandoli365/bibimbap/data/GameData.java", + "src/main/java/com/pandoli365/bibimbap/mapper/GamesMapper.java", + "src/test/java/com/pandoli365/bibimbap/util/WebglDisplayMetadataTest.java", + "src/test/java/com/pandoli365/bibimbap/controller/api/GameUploadControllerSecurityTest.java", + "src/test/java/com/pandoli365/bibimbap/controller/api/GameDisplayMetadataTest.java" + ], + "pause": { + "reason": null, + "source_ref": null, + "caused_by_report_invocation_id": null, + "caused_by_environment_invocation_id": null + } + }, + { + "scope_id": "frontend", + "scope_kind": "directory", + "scope_paths": [ + "src/main/webapp/WEB-INF/views/game-register.jsp", + "src/main/webapp/WEB-INF/views/game-detail.jsp", + "src/main/webapp/js/webgl-player.js", + "src/main/webapp/css/webgl-player.css", + "src/test/js/webgl-player.test.cjs" + ], + "state": "released", + "owner_report_invocation_id": "inv-003-w02", + "owner_environment_invocation_id": "/root/atp_pool_wgimpl01_1of1_a6814cde/atp_pool_wgworkers01_2of4_f610aa02", + "revoked_from_report_invocation_id": null, + "revoked_from_environment_invocation_id": null, + "handoff_to_report_invocation_id": null, + "handoff_to_environment_invocation_id": null, + "handoff_at": null, + "dependencies": [], + "reservation": { + "directory": null, + "namespace": null, + "namespace_key": null, + "schema_files": [] + }, + "generated_paths": [ + "src/main/webapp/WEB-INF/views/game-register.jsp", + "src/main/webapp/WEB-INF/views/game-detail.jsp", + "src/main/webapp/js/webgl-player.js", + "src/main/webapp/css/webgl-player.css", + "src/test/js/webgl-player.test.cjs" + ], + "pause": { + "reason": null, + "source_ref": null, + "caused_by_report_invocation_id": null, + "caused_by_environment_invocation_id": null + } + }, + { + "scope_id": "migration", + "scope_kind": "migration_namespace", + "scope_paths": [ + "db/schema.sql", + "db/migrations/20261014-game-display-metadata.sql" + ], + "state": "released", + "owner_report_invocation_id": "inv-003-w03", + "owner_environment_invocation_id": "01a137d5-fbdb-7f31-a4aa-87ad3782bff0", + "revoked_from_report_invocation_id": null, + "revoked_from_environment_invocation_id": null, + "handoff_to_report_invocation_id": null, + "handoff_to_environment_invocation_id": null, + "handoff_at": null, + "dependencies": [], + "reservation": { + "directory": "db/migrations", + "namespace": "20261014-game-display-metadata", + "namespace_key": "db/migrations::20261014-game-display-metadata", + "schema_files": [ + "db/schema.sql" + ] + }, + "generated_paths": [ + "db/schema.sql", + "db/migrations/20261014-game-display-metadata.sql" + ], + "pause": { + "reason": null, + "source_ref": null, + "caused_by_report_invocation_id": null, + "caused_by_environment_invocation_id": null + } + }, + { + "scope_id": "docs-verification", + "scope_kind": "directory", + "scope_paths": [ + "docs/contracts/webgl-display-metadata.md", + "docs/usage/webgl-display.md", + "docs/changes/2026-10-14-webgl-display.md", + "docs/contracts/index.md", + "docs/usage/index.md", + "docs/changes/index.md", + "docs/development/verification-strategies.md", + "scripts/verify-webgl-display.sh", + "src/test/java/com/pandoli365/bibimbap/mapper/WebglDisplayDatabaseContractTest.java" + ], + "state": "released", + "owner_report_invocation_id": "inv-003-w04", + "owner_environment_invocation_id": "01a137d6-5eab-7600-a956-13344e6c6f2f", + "revoked_from_report_invocation_id": null, + "revoked_from_environment_invocation_id": null, + "handoff_to_report_invocation_id": null, + "handoff_to_environment_invocation_id": null, + "handoff_at": null, + "dependencies": [], + "reservation": { + "directory": null, + "namespace": null, + "namespace_key": null, + "schema_files": [] + }, + "generated_paths": [ + "docs/contracts/webgl-display-metadata.md", + "docs/usage/webgl-display.md", + "docs/changes/2026-10-14-webgl-display.md", + "docs/contracts/index.md", + "docs/usage/index.md", + "docs/changes/index.md", + "docs/development/verification-strategies.md", + "scripts/verify-webgl-display.sh", + "src/test/java/com/pandoli365/bibimbap/mapper/WebglDisplayDatabaseContractTest.java" + ], + "pause": { + "reason": null, + "source_ref": null, + "caused_by_report_invocation_id": null, + "caused_by_environment_invocation_id": null + } + } + ] +} +``` diff --git a/.atp/work-session/20261014-091658/implementation/report.md b/.atp/work-session/20261014-091658/implementation/report.md new file mode 100644 index 0000000..e133f71 --- /dev/null +++ b/.atp/work-session/20261014-091658/implementation/report.md @@ -0,0 +1,68 @@ +--- +phase: implementation +agent: implementation-advisor +agent_version: 2 +generated_at: 2026-10-14T09:40:31.246818+09:00 +concerns_checked: true +concerns: + - "Automated unused diagnostics unavailable: no LSP/linter tool; verification must assess separate unused gate." +workers_spawned: 4 +planned_workers: 4 +actual_workers: 4 +--- + +# 구현 보고 + +## 변경 목록 +| 파일 | worker | 결과 요약 | +|---|---|---| +| src/main/java/com/pandoli365/bibimbap/util/WebglDisplayMetadata.java | inv-003-w01 | backend 구현 | +| src/main/java/com/pandoli365/bibimbap/controller/api/GameUploadController.java | inv-003-w01 | backend 구현 | +| src/main/java/com/pandoli365/bibimbap/controller/api/GameController.java | inv-003-w01 | backend 구현 | +| src/main/java/com/pandoli365/bibimbap/data/GameData.java | inv-003-w01 | backend 구현 | +| src/main/java/com/pandoli365/bibimbap/mapper/GamesMapper.java | inv-003-w01 | backend 구현 | +| src/test/java/com/pandoli365/bibimbap/util/WebglDisplayMetadataTest.java | inv-003-w01 | backend 구현 | +| src/test/java/com/pandoli365/bibimbap/controller/api/GameUploadControllerSecurityTest.java | inv-003-w01 | backend 구현 | +| src/test/java/com/pandoli365/bibimbap/controller/api/GameDisplayMetadataTest.java | inv-003-w01 | backend 구현 | +| src/main/webapp/WEB-INF/views/game-register.jsp | inv-003-w02 | frontend 구현 | +| src/main/webapp/WEB-INF/views/game-detail.jsp | inv-003-w02 | frontend 구현 | +| src/main/webapp/js/webgl-player.js | inv-003-w02 | frontend 구현 | +| src/main/webapp/css/webgl-player.css | inv-003-w02 | frontend 구현 | +| src/test/js/webgl-player.test.cjs | inv-003-w02 | frontend 구현 | +| db/schema.sql | inv-003-w03 | migration 구현 | +| db/migrations/20261014-game-display-metadata.sql | inv-003-w03 | migration 구현 | +| docs/contracts/webgl-display-metadata.md | inv-003-w04 | docs-verification 구현 | +| docs/usage/webgl-display.md | inv-003-w04 | docs-verification 구현 | +| docs/changes/2026-10-14-webgl-display.md | inv-003-w04 | docs-verification 구현 | +| docs/contracts/index.md | inv-003-w04 | docs-verification 구현 | +| docs/usage/index.md | inv-003-w04 | docs-verification 구현 | +| docs/changes/index.md | inv-003-w04 | docs-verification 구현 | +| docs/development/verification-strategies.md | inv-003-w04 | docs-verification 구현 | +| scripts/verify-webgl-display.sh | inv-003-w04 | docs-verification 구현 | +| src/test/java/com/pandoli365/bibimbap/mapper/WebglDisplayDatabaseContractTest.java | inv-003-w04 | docs-verification 구현 | + +## Lifecycle ledger +- [lifecycle-events.jsonl](./lifecycle-events.jsonl) +- [ownership.md](./ownership.md) +- [worker-invocations.json](./worker-invocations.json) — report schema v2 append-ready worker payloads; unavailable token telemetry null. + +## Wait/wakeup ledger +- [wait-wakeup-events.jsonl](./wait-wakeup-events.jsonl): managed bounded pool 4 requested/accepted/terminal/collected; max2 concurrent; 0 list/interrupt/recovery. + +## Bash 단계 (advisor 직접) +- Read-only git diff/status and source contract inspection, artifact ledger/report serialization. No tests/build/runtime/DB/commit/push executed. +- update_plan unavailable for advisor/workers; bind not fabricated. + +## 설계와의 차이 +- Existing JSP uses separate edit attributes, so approved editDisplayWidth/Height/Source naming replaces hypothetical editModel object. +- Uploaded JavaScript style-variable assignments conservatively omitted; literal CSS, adjacent build-info, canvas attrs supported, manual override covers unknown templates. +- Added actual isolated MyBatis mapper contract test to requested docs/harness worker scope before writing. +- Coherent backend/frontend groups allocated explicitly; disjoint files, schema-only migration worker, fourth code-writer for docs/harness. + +## Verification 을 위한 힌트 +- Run `bash scripts/verify-webgl-display.sh all` (full offline Maven tests, Node tests, WAR package, disposable PostgreSQL migration/mapper contract). +- L2 requires local postgres:16 image and Docker daemon; override WEBGL_CONTRACT_POSTGRES_IMAGE to local compatible image, no auto pull. +- Runtime/auth/JSP/actual ZIP commands: docs/usage/webgl-display.md. Root has Chrome tools for isolated browser smoke. +- Test matrix: WebglDisplayMetadataTest, GameDisplayMetadataTest, GameUploadControllerSecurityTest, WebglDisplayDatabaseContractTest, src/test/js/webgl-player.test.cjs. +- No compile/test success claimed; unused automated gate unperformed because tools unavailable. +- Original ZIP/served uploaded HTML untouched. diff --git a/.atp/work-session/20261014-091658/implementation/wait-wakeup-events.jsonl b/.atp/work-session/20261014-091658/implementation/wait-wakeup-events.jsonl new file mode 100644 index 0000000..70f62ca --- /dev/null +++ b/.atp/work-session/20261014-091658/implementation/wait-wakeup-events.jsonl @@ -0,0 +1,2 @@ +{"event": "await_capability_checked", "recorded_at": "2026-10-14T09:30:42.577553+09:00", "owner_report_invocation_id": "inv-003", "formal_adapter_enabled": false, "host_managed_subagent_orchestration": "supported", "selected_mode": "host_managed_subagent_orchestration", "capability_profile_ref": "atp:codex-team \u00a77"} +{"event": "measurement", "recorded_at": "2026-10-14T09:40:31.246818+09:00", "owner_report_invocation_id": "inv-003", "requested_agents": 4, "spawn_calls": 4, "accepted_spawns": 4, "capacity_denials": 0, "maximum_observed_running": 2, "nonterminal_updates": null, "terminal_deliveries": 4, "collected_results": 4, "generic_list_calls": 0, "interrupt_calls": 0, "semantic_recovery_actions": 0, "pool_wait_calls": null, "pending_refills": 2, "final_pending": 0, "final_running": 0} diff --git a/.atp/work-session/20261014-091658/implementation/worker-invocations.json b/.atp/work-session/20261014-091658/implementation/worker-invocations.json new file mode 100644 index 0000000..6c1260e --- /dev/null +++ b/.atp/work-session/20261014-091658/implementation/worker-invocations.json @@ -0,0 +1,162 @@ +[ + { + "id": "inv-003-w01", + "layer": "worker", + "name": "code-writer", + "agent_version": 1, + "parent_invocation_id": "inv-003", + "started_at": "2026-10-14T09:31:17.298843+09:00", + "ended_at": "2026-10-14T09:35:46.542933+09:00", + "input_digest": "Exclusive backend file allocation; approved per-upload general implementation; no tests execution or DB/runtime mutation", + "output_digest": "Static bounded metadata, upload/server/SSR/mapper persistence and regression tests", + "artifacts": [ + "src/main/java/com/pandoli365/bibimbap/util/WebglDisplayMetadata.java", + "src/main/java/com/pandoli365/bibimbap/controller/api/GameUploadController.java", + "src/main/java/com/pandoli365/bibimbap/controller/api/GameController.java", + "src/main/java/com/pandoli365/bibimbap/data/GameData.java", + "src/main/java/com/pandoli365/bibimbap/mapper/GamesMapper.java", + "src/test/java/com/pandoli365/bibimbap/util/WebglDisplayMetadataTest.java", + "src/test/java/com/pandoli365/bibimbap/controller/api/GameUploadControllerSecurityTest.java", + "src/test/java/com/pandoli365/bibimbap/controller/api/GameDisplayMetadataTest.java" + ], + "concerns": [], + "model_choice": { + "phase": "implementation", + "dispatch_size": "parallel", + "tier": "large", + "effort": null, + "resolved_model": "inherit", + "capped": false, + "capped_from": null, + "escalation_reason": null, + "fallback_reason": null, + "rationale": "Coherent owned file group; schema isolated; default inherited model" + }, + "token_usage": { + "input": null, + "output": null + }, + "attempt": 1, + "termination": "completed", + "retry_of": null, + "lifecycle_fallback_reason": null + }, + { + "id": "inv-003-w02", + "layer": "worker", + "name": "code-writer", + "agent_version": 1, + "parent_invocation_id": "inv-003", + "started_at": "2026-10-14T09:31:17.298843+09:00", + "ended_at": "2026-10-14T09:36:18.956153+09:00", + "input_digest": "Exclusive frontend file allocation; approved per-upload general implementation; no tests execution or DB/runtime mutation", + "output_digest": "Generic contain player, author controls, overlay/fullscreen stable iframe and 11 Node tests", + "artifacts": [ + "src/main/webapp/WEB-INF/views/game-register.jsp", + "src/main/webapp/WEB-INF/views/game-detail.jsp", + "src/main/webapp/js/webgl-player.js", + "src/main/webapp/css/webgl-player.css", + "src/test/js/webgl-player.test.cjs" + ], + "concerns": [], + "model_choice": { + "phase": "implementation", + "dispatch_size": "parallel", + "tier": "large", + "effort": null, + "resolved_model": "inherit", + "capped": false, + "capped_from": null, + "escalation_reason": null, + "fallback_reason": null, + "rationale": "Coherent owned file group; schema isolated; default inherited model" + }, + "token_usage": { + "input": null, + "output": null + }, + "attempt": 1, + "termination": "completed", + "retry_of": null, + "lifecycle_fallback_reason": null + }, + { + "id": "inv-003-w03", + "layer": "worker", + "name": "migration-writer", + "agent_version": 1, + "parent_invocation_id": "inv-003", + "started_at": "2026-10-14T09:35:46.542933+09:00", + "ended_at": "2026-10-14T09:36:43.485758+09:00", + "input_digest": "Exclusive migration file allocation; approved per-upload general implementation; no tests execution or DB/runtime mutation", + "output_digest": "Nullable additive idempotent schema/migration; no DB apply", + "artifacts": [ + "db/schema.sql", + "db/migrations/20261014-game-display-metadata.sql" + ], + "concerns": [], + "model_choice": { + "phase": "implementation", + "dispatch_size": "parallel", + "tier": "medium", + "effort": null, + "resolved_model": "inherit", + "capped": false, + "capped_from": null, + "escalation_reason": null, + "fallback_reason": null, + "rationale": "Coherent owned file group; schema isolated; default inherited model" + }, + "token_usage": { + "input": null, + "output": null + }, + "attempt": 1, + "termination": "completed", + "retry_of": null, + "lifecycle_fallback_reason": null + }, + { + "id": "inv-003-w04", + "layer": "worker", + "name": "code-writer", + "agent_version": 1, + "parent_invocation_id": "inv-003", + "started_at": "2026-10-14T09:36:18.956153+09:00", + "ended_at": "2026-10-14T09:40:31.246818+09:00", + "input_digest": "Exclusive docs-verification file allocation; approved per-upload general implementation; no tests execution or DB/runtime mutation", + "output_digest": "Contract/usage/change docs, integrated L1/L2 script and isolated actual MyBatis roundtrip test", + "artifacts": [ + "docs/contracts/webgl-display-metadata.md", + "docs/usage/webgl-display.md", + "docs/changes/2026-10-14-webgl-display.md", + "docs/contracts/index.md", + "docs/usage/index.md", + "docs/changes/index.md", + "docs/development/verification-strategies.md", + "scripts/verify-webgl-display.sh", + "src/test/java/com/pandoli365/bibimbap/mapper/WebglDisplayDatabaseContractTest.java" + ], + "concerns": [], + "model_choice": { + "phase": "implementation", + "dispatch_size": "parallel", + "tier": "medium", + "effort": null, + "resolved_model": "inherit", + "capped": false, + "capped_from": null, + "escalation_reason": null, + "fallback_reason": null, + "rationale": "Coherent owned file group; schema isolated; default inherited model" + }, + "token_usage": { + "input": null, + "output": null + }, + "attempt": 1, + "termination": "completed", + "retry_of": null, + "lifecycle_fallback_reason": null + } +] \ No newline at end of file diff --git a/.atp/work-session/20261014-091658/report.md b/.atp/work-session/20261014-091658/report.md new file mode 100644 index 0000000..9783236 --- /dev/null +++ b/.atp/work-session/20261014-091658/report.md @@ -0,0 +1,414 @@ +--- +schema_version: 2 +session_id: 20261014-091658 +started_at: 2026-10-14T09:17:15.328427+09:00 +ended_at: null +user_request: | + Downloads/GoraniCoin-WebGLTest.zip Unity WebGL 빌드의 실행 화면 해상도 대응 기능 추가. +--- +# Summary +업로드 게임별 기준 크기 감지/저장, 작성자 보정, 비율 유지 플레이어 및 확대/전체화면 구현 완료. 사용자 추가 발화로 예시 전용에서 일반 업로드 대응 범위를 명확히 했다. 전체 테스트/DB 계약은 통과했고 독립 runtime 검증 진행 중. +# Invocations +- id: inv-001 + layer: advisor + name: research-advisor + parent_invocation_id: null + started_at: 2026-10-14T09:17:15.328427+09:00 + ended_at: 2026-10-14T09:20:31.663736+09:00 + termination: completed + input_digest: ZIP HTML 및 서비스 플레이어의 크기 정책 조사, 수정 가능 범위와 계획 근거 수집. 코드 변경 금지. + output_digest: 원본 390:844 유지 및 양축 contain 플레이어 권장, 내부 UI 변경에는 Unity 소스 필요 가능성 + artifacts: [research/research.md] + model_choice: {tier: large, resolved_model: inherit, rationale: 빌드와 호스트 경계의 원인 조사} + attempt: 1 +# Advisor Invocation Decision Log +- advisor: research-advisor + decision: call + rationale: 빌드물과 호스트 화면의 크기 정책을 근거로 구분해야 함 + checked_at: 2026-10-14T09:17:15.328427+09:00 +- advisor: graphify-lookup-advisor + decision: skip + rationale: ZIP은 그래프 외부이며 JSP/CSS 플레이어는 프로젝트 문서에 그래프 미지원으로 명시 + checked_at: 2026-10-14T09:17:15.328427+09:00 +# Decisions +- selected_mode: host_managed_subagent_orchestration + request_intent: general_task + rationale: exact ATP hook marker 존재, Codex 배포 profile 적용 +- 구현은 조사 결과 기반 계획 제시 및 사용자 동의 뒤 진행 (task SKILL §5.0). +# Open Items +- 기존 사용자 잔여: .atp/work-session/20260724-095414/, .atp/work-session/20260826-093449/, ~/ (작업 제외). +- update_plan 도구가 현재 도구 목록에 없음. child에 bind 수행 가능 여부 명시 요청, 미수행을 성공으로 기록하지 않음. + +# Phase Status +- research: completed (terminal delta 및 FINAL_ANSWER token 일치, artifact 검증 완료) +- implementation: authorized_build_aware_general_support +- verified_by_me: research artifact 존재/근거 검토; 제품 코드 변경 0 +- needs_user_verification: 아직 구현 전. 브라우저 실행 검증은 구현 단계에 수행. +- user_signals: {positive: [], negative: []} + +## Phase 2 — 업로드 게임별 자동 대응 +# Decisions +- user: 예시 전용이 아닌 사용자가 업로드한 게임 빌드에 맞춘 추천 구현 진행 승인. +- scope: 업로드 빌드 기준 크기 추출 및 영속화, 판별 불가 시 등록자 지정, 플레이어 비율 유지 자동 맞춤 및 전체화면. +# Invocations +- id: inv-002 + layer: advisor + name: design-advisor + parent_invocation_id: null + started_at: 2026-10-14T09:26:02.640678+09:00 + ended_at: 2026-10-14T09:29:51.485835+09:00 + termination: completed + input_digest: 일반 업로드 빌드의 크기 메타 추출/저장과 플레이어 자동 맞춤 계약 설계 + output_digest: 업로드별 메타 감지/저장 및 작성자 override, 양축 contain/fullscreen 계약 확정 + artifacts: [implementation/design.md] + attempt: 1 + model_choice: {tier: large, resolved_model: inherit, rationale: 다중 빌드 형식과 영속화 및 UI 계약 설계} +# Advisor Invocation Decision Log +- advisor: design-advisor + decision: call + rationale: 사용자가 업로드별 자동 대응 범위를 명시하여 데이터/업로드/플레이어 계약 필요 +- advisor: requirements-advisor + decision: skip + rationale: 사용자 추가 발화로 범용 빌드 대응 및 진행 권한 명확, 설계에 미확정 입력 검토 포함 + +# Invocations +- id: inv-003 + layer: advisor + name: implementation-advisor + parent_invocation_id: null + started_at: 2026-10-14T09:29:51.485835+09:00 + ended_at: 2026-10-14T09:41:14.055959+09:00 + termination: completed + input_digest: 승인된 업로드별 메타/플레이어 설계 구현, nested bounded workers 및 회귀테스트 작성 + output_digest: 24파일 업로드별 크기 감지/저장/플레이어 및 검증 harness 구현 완료 + artifacts: [implementation/report.md, implementation/ownership.md] + planned_workers: 4 + actual_workers: 4 + attempt: 1 + model_choice: {tier: large, resolved_model: inherit, rationale: backend/frontend/migration 계약 통합} +# Advisor Invocation Decision Log +- advisor: implementation-advisor + decision: call + rationale: 승인된 다중 파일 구현과 worker ownership 분할 필요 +# Decisions +- 작성자 지정 > 인접 build-info > 정적 CSS > canvas 속성 > 기본 비율. ZIP/HTML 원본 보존, 별도 origin 지원. +- 공유 DB 마이그레이션 미적용; additive 파일 작성 및 격리 환경 검증 승인 범위로 진행. + +# Worker Invocations +```json +[ + { + "id": "inv-003-w01", + "layer": "worker", + "name": "code-writer", + "agent_version": 1, + "parent_invocation_id": "inv-003", + "started_at": "2026-10-14T09:31:17.298843+09:00", + "ended_at": "2026-10-14T09:35:46.542933+09:00", + "input_digest": "Exclusive backend file allocation; approved per-upload general implementation; no tests execution or DB/runtime mutation", + "output_digest": "Static bounded metadata, upload/server/SSR/mapper persistence and regression tests", + "artifacts": [ + "src/main/java/com/pandoli365/bibimbap/util/WebglDisplayMetadata.java", + "src/main/java/com/pandoli365/bibimbap/controller/api/GameUploadController.java", + "src/main/java/com/pandoli365/bibimbap/controller/api/GameController.java", + "src/main/java/com/pandoli365/bibimbap/data/GameData.java", + "src/main/java/com/pandoli365/bibimbap/mapper/GamesMapper.java", + "src/test/java/com/pandoli365/bibimbap/util/WebglDisplayMetadataTest.java", + "src/test/java/com/pandoli365/bibimbap/controller/api/GameUploadControllerSecurityTest.java", + "src/test/java/com/pandoli365/bibimbap/controller/api/GameDisplayMetadataTest.java" + ], + "concerns": [], + "model_choice": { + "phase": "implementation", + "dispatch_size": "parallel", + "tier": "large", + "effort": null, + "resolved_model": "inherit", + "capped": false, + "capped_from": null, + "escalation_reason": null, + "fallback_reason": null, + "rationale": "Coherent owned file group; schema isolated; default inherited model" + }, + "token_usage": { + "input": null, + "output": null + }, + "attempt": 1, + "termination": "completed", + "retry_of": null, + "lifecycle_fallback_reason": null + }, + { + "id": "inv-003-w02", + "layer": "worker", + "name": "code-writer", + "agent_version": 1, + "parent_invocation_id": "inv-003", + "started_at": "2026-10-14T09:31:17.298843+09:00", + "ended_at": "2026-10-14T09:36:18.956153+09:00", + "input_digest": "Exclusive frontend file allocation; approved per-upload general implementation; no tests execution or DB/runtime mutation", + "output_digest": "Generic contain player, author controls, overlay/fullscreen stable iframe and 11 Node tests", + "artifacts": [ + "src/main/webapp/WEB-INF/views/game-register.jsp", + "src/main/webapp/WEB-INF/views/game-detail.jsp", + "src/main/webapp/js/webgl-player.js", + "src/main/webapp/css/webgl-player.css", + "src/test/js/webgl-player.test.cjs" + ], + "concerns": [], + "model_choice": { + "phase": "implementation", + "dispatch_size": "parallel", + "tier": "large", + "effort": null, + "resolved_model": "inherit", + "capped": false, + "capped_from": null, + "escalation_reason": null, + "fallback_reason": null, + "rationale": "Coherent owned file group; schema isolated; default inherited model" + }, + "token_usage": { + "input": null, + "output": null + }, + "attempt": 1, + "termination": "completed", + "retry_of": null, + "lifecycle_fallback_reason": null + }, + { + "id": "inv-003-w03", + "layer": "worker", + "name": "migration-writer", + "agent_version": 1, + "parent_invocation_id": "inv-003", + "started_at": "2026-10-14T09:35:46.542933+09:00", + "ended_at": "2026-10-14T09:36:43.485758+09:00", + "input_digest": "Exclusive migration file allocation; approved per-upload general implementation; no tests execution or DB/runtime mutation", + "output_digest": "Nullable additive idempotent schema/migration; no DB apply", + "artifacts": [ + "db/schema.sql", + "db/migrations/20261014-game-display-metadata.sql" + ], + "concerns": [], + "model_choice": { + "phase": "implementation", + "dispatch_size": "parallel", + "tier": "medium", + "effort": null, + "resolved_model": "inherit", + "capped": false, + "capped_from": null, + "escalation_reason": null, + "fallback_reason": null, + "rationale": "Coherent owned file group; schema isolated; default inherited model" + }, + "token_usage": { + "input": null, + "output": null + }, + "attempt": 1, + "termination": "completed", + "retry_of": null, + "lifecycle_fallback_reason": null + }, + { + "id": "inv-003-w04", + "layer": "worker", + "name": "code-writer", + "agent_version": 1, + "parent_invocation_id": "inv-003", + "started_at": "2026-10-14T09:36:18.956153+09:00", + "ended_at": "2026-10-14T09:40:31.246818+09:00", + "input_digest": "Exclusive docs-verification file allocation; approved per-upload general implementation; no tests execution or DB/runtime mutation", + "output_digest": "Contract/usage/change docs, integrated L1/L2 script and isolated actual MyBatis roundtrip test", + "artifacts": [ + "docs/contracts/webgl-display-metadata.md", + "docs/usage/webgl-display.md", + "docs/changes/2026-10-14-webgl-display.md", + "docs/contracts/index.md", + "docs/usage/index.md", + "docs/changes/index.md", + "docs/development/verification-strategies.md", + "scripts/verify-webgl-display.sh", + "src/test/java/com/pandoli365/bibimbap/mapper/WebglDisplayDatabaseContractTest.java" + ], + "concerns": [], + "model_choice": { + "phase": "implementation", + "dispatch_size": "parallel", + "tier": "medium", + "effort": null, + "resolved_model": "inherit", + "capped": false, + "capped_from": null, + "escalation_reason": null, + "fallback_reason": null, + "rationale": "Coherent owned file group; schema isolated; default inherited model" + }, + "token_usage": { + "input": null, + "output": null + }, + "attempt": 1, + "termination": "completed", + "retry_of": null, + "lifecycle_fallback_reason": null + } +] +``` + +# Invocations +- id: inv-004 + layer: advisor + name: verification-advisor + parent_invocation_id: null + started_at: 2026-10-14T09:41:14.055959+09:00 + ended_at: 2026-10-14T09:52:22.735705+09:00 + termination: completed + input_digest: AC + 실행 명령만 사용하여 통합 L1/L2 및 실제 ZIP/JSP/browser 검증 + output_digest: L1/L2/runtime 통과, 전체 AC는 문서 실행 오류/회귀 전 실패/터치/UI audit 미확인으로 fail + artifacts: [verification.md] + attempt: 1 + model_choice: {tier: large, resolved_model: inherit, rationale: 런타임/DB/Unity 실화면 독립 검증} +# Advisor Invocation Decision Log +- advisor: verification-advisor + decision: call + rationale: 코드 변경 및 통합/런타임 검증 의무 +- advisor: documentation-advisor + decision: skip + rationale: 구현 docs-worker가 계약/사용/변경 문서와 인덱스 작성 완료 +# Decisions +- graph_refresh: skip:no-graphify (설치 cache에서 atp-graphify add-on 확인되지 않음) +- 제품 파일 git diff/status 교차 확인: tracked 12 파일 및 신규 구현/테스트/문서 파일 존재. 사용자 잔여 제외. + +# User Signals +user_signals: + positive: [] + negative: + - quote_or_paraphrase: 단순히 내가 준 예시에만 맞추는게 아니라 사용자가 업로드한 게임에 맞춰서야 + about: 초기 수동 비율 선택 중심 제안의 범용 업로드 자동 대응 범위 보정 + structural: false +# Open Items +- docs/usage/webgl-display.md WAR 직접 실행 명령은 실제 WAR Main manifest 부재로 실패; runtime working command 확인 후 문서 수정 예정. + +# Invocations +- id: inv-005 + layer: advisor + name: documentation-advisor + parent_invocation_id: null + started_at: 2026-10-14T09:52:22.735705+09:00 + ended_at: 2026-10-14T09:55:42.931969+09:00 + termination: completed + input_digest: 검증된 실행 명령으로 문서 수정, 영향맵/index/Impeccable UI audit 완료 + output_digest: docs 실행명령 교정, mapped21files/index/UI audit 및 실제 HEAD JSP 회귀 실패/현재 성공 확인 + artifacts: [documentation.md, artifacts/final-doc-ui-audit.md] + attempt: 1 + model_choice: {tier: large, resolved_model: inherit, rationale: runtime 증거 기반 문서 교정 및 UI audit} +# Advisor Invocation Decision Log +- advisor: documentation-advisor + decision: call + rationale: 독립 실행 검증이 운영 가이드 오류 및 최종 문서/UI audit 미확인 발견 +# Regression +- surfaced_at_stage: verification + source_stage: docs + defect: executable manifest 없는 WAR의 java -jar 실행을 가이드에서 제안 + full_set_recheck: true + downstream_rerun: [documentation, supplemental-verification] + +# Invocations +- id: inv-006 + layer: advisor + name: verification-advisor-supplemental + parent_invocation_id: null + started_at: 2026-10-14T09:55:42.931969+09:00 + ended_at: 2026-10-14T10:00:24.919475+09:00 + termination: completed + input_digest: 문서/회귀/audit 증거 재평가 및 실제 Unity 버튼/모바일 터치 추가 검증 + output_digest: trusted CDP touch Shop/Open Upgrades 일반/확대/resize 통과, 문서/회귀/audit 미확인 해소. 실제 기기 스모크만 수동 확인. + artifacts: [supplemental-verification.md] + attempt: 1 + model_choice: {tier: large, resolved_model: inherit, rationale: 미확인 입력 동작과 종료 AC 보완 검증} +# Advisor Invocation Decision Log +- advisor: verification-advisor-supplemental + decision: call + rationale: 전체 AC fail의 남은 회귀/audit/입력 확인을 보완, passing 전체 suite 반복 불필요 + +# Final Summary +- 사용자 업로드별 크기 감지·저장/작성자 override/기존 게임 fallback/비율 유지 확대·전체화면 완료. +- L1/L2/runtime 및 보완 trusted touch 입력 검사 통과. 공유 DB/앱 적용 및 push 요청 없음. 로컬 feat/v2 커밋 준비. +# verified_by_me +- L1: Java377 실패0 오류0 (일반 opt-in L2 1skip), Node11/11, WAR package pass (독립 advisor 실행 로그 취합). +- L2: disposable PostgreSQL migration/idempotency/constraints/fresh schema/mapper7 SELECT 계약 pass1/1. +- Runtime: JSP5paths HTTP200, 빌드3종 viewport12/12 geometry, 원본/서빙 hash 보존, 동일 iframe/Unity instance resize/확대/fullscreen. +- Input: CDP trusted touch Shop/Open Upgrades 메뉴 일반/확대/가로 resize 전환 pass. +- Regression: 실제 HEAD JSP로 동일 SSR 테스트 fail1, 현재 JSP pass1. 이전 browser geometry 재실행 아님. +- UI/docs audit:21file impact map + feature docs/index links pass, final detect warn2(existing/falsepositive). +- 로그 스캔: server clean; browser errors0/warn4(기존 Unity/autoplay/sandbox). +- graph_refresh: skip:no-graphify (옵트인 add-on 미설치). +- project_gate: runtime JSP smoke 의무 수행 pass; 별도 배포 gate skip:no-project-gate. +# needs_user_verification +- 실제 터치 기기에서 게임 상세 → 크게 보기/전체화면 → 방향 전환 → Shop/Upgrades 입력 스모크 1회. 자동 trusted browser touch는 통과. +- 배포 전에 db/migrations/20261014-game-display-metadata.sql 선적용 필요. 공유/운영 DB 및 배포는 이번 요청에 미포함. +# Open Items — Final disposition +- 기존 사용자 잔여 .atp/work-session/20260724-095414/, .atp/work-session/20260826-093449/, ~/ 작업 제외. +- 원본 ZIP 복사 artifacts/*.zip 및 임시 로그인 HTML은 로컬 재현 자료로 session artifacts/.gitignore 제외. +- 기존 usage index setup-checklist.md/faq.md 링크 미존재는 이번 작업 밖 (audit 보고서에 기재). +- 각 pool terminal 모두 수신/취합. update_plan 부재 사실 보존, 자동 복구/interrupt/list 없음. +# Invocations +- id: inv-007 + layer: advisor + name: retrospective-advisor + parent_invocation_id: null + started_at: 2026-10-14T10:00:24.919475+09:00 + ended_at: 2026-10-14T10:02:08.396635+09:00 + termination: completed + input_digest: 최신 report 전체 phase/사용자 범위 보정/실행 검증 결과로 회고, report sink only + output_digest: 범용 업로드 scope 보정 및 trusted touch 검증 교훈, 최신 증거 docs sync 권고 + artifacts: [report.md#Retrospective] + attempt: 1 + model_choice: {tier: medium, resolved_model: inherit, rationale: 완료된 세션 증거 기반 회고} +# Advisor Invocation Decision Log +- advisor: retrospective-advisor + decision: call + rationale: 전체 결과 수렴 및 L1/L2 통과 뒤 필수 회고 + +# Retrospective +```yaml +Retrospective: + signals: + positive: [] + negative: + - quote_or_paraphrase: "단순히 내가 준 예시에만 맞추는게 아니라 사용자가 업로드한 게임에 맞춰서야" + about: "초기 제안의 예시 중심 범위를 일반 사용자 업로드 자동 대응으로 교정" + structural: false + what_went_well: + - "범위 교정 뒤 게임명·파일명 상수 없이 서로 다른 비율 업로드와 unknown/manual/legacy 계약을 구현·검증했다. 이는 실행 관찰이며 사용자 긍정 발화로 분류하지 않는다." + - "독립 검증이 잘못된 WAR 실행 명령과 입력 증거 공백을 드러냈고, 문서 교정 및 보완 검증으로 해소했다. L1/L2/runtime와 trusted CDP touch의 실제 Shop/Upgrades 전환이 통과했다." + - "자동 브라우저 touch와 물리 기기 검증을 구분하여 실제 기기 스모크만 needs_user_verification으로 유지했다." + what_to_improve: + - "제공 ZIP은 재현 fixture로 취급하고 일반 업로드 범위를 초기 제안에서 명시한다. 범용 업로드 계약은 이미 제품 문서에 있어 별도 중복 규칙은 제안하지 않는다." + - "docs/changes/2026-10-14-webgl-display.md 마지막 문단의 named Unity 버튼/trusted touch 미검증 표현은 최신 보완 검증보다 오래됐다. root가 supplemental-verification.md 기준으로 정확히 동기화해야 한다." + - "운영 명령의 실행 확인은 기존 검증 규약과 이번 수정으로 다루므로 중복 교훈 추가를 제안하지 않는다." + memory_candidates: + - name: trusted-touch-evidence-boundary + type: feedback + description: "터치 검증은 이벤트 종류·신뢰 여부와 실제 게임 동작을 함께 관찰한다." + body_draft: | + Why: touch emulation을 켠 상태의 일반 click도 pointerType=mouse일 수 있어 터치 입력 좌표 검증이 되지 않는다. + How to apply: 모바일 입력 확인 시 pointerType=touch와 isTrusted=true 이벤트를 기록하고, 크기 변경 전후 명명된 게임 버튼의 실제 화면 전환을 확인한다. CDP trusted touch 통과와 물리 터치 기기 스모크 완료 여부를 각각 보고한다. + rationale_for_saving: "기존 레지스트리는 클릭·터치 점검만 요구하며 mouse 이벤트 오인 방지의 구체 증거 기준은 없다." + signal_source: observation + docs_sync_target: docs/development/verification-strategies.md + memory_optional: false + protocol_feedback: [] + applied_changes: [] +``` +Memory는 disabled/unset이므로 전역 memory를 읽거나 변경하지 않았다. 위 후보는 docs 전용 권고이며 직접 적용하지 않았다. 운영 명령 및 일반 업로드 범위의 중복 후보는 제외했다. 최신 증거 동기화는 교훈 후보와 별개의 필수 문서 정합 수정이다. + +# Retrospective disposition +- accepted: trusted browser touch/실제 메뉴 결과/물리기기 smoke 구분 규칙을 docs/development/verification-strategies.md에 추가. +- applied_changes: docs/changes/2026-10-14-webgl-display.md 최신 보완 touch 증거 동기화; 전역 memory 미변경. +- Final staging: raw stdout/psql evidence whitespace를 session .gitattributes로 보존; 제품 파일 whitespace check pass. diff --git a/.atp/work-session/20261014-091658/research/research.md b/.atp/work-session/20261014-091658/research/research.md new file mode 100644 index 0000000..3fa5b14 --- /dev/null +++ b/.atp/work-session/20261014-091658/research/research.md @@ -0,0 +1,90 @@ +--- +phase: research +agent: research-advisor +agent_version: 4 +report_invocation_id: inv-001 +concerns_checked: true +source_confidence: mixed +workers_spawned: 0 +concerns: + - Unity 씬 소스 미포함으로 실제 UI anchor/Canvas Scaler 설정 확인 불가 + - 브라우저 실행 전이므로 화면 잘림 및 입력 이상은 아직 런타임 확인하지 않음 + - 분리 asset origin 사용 시 부모의 iframe DOM 직접 접근 불가 +--- + +# WebGL 해상도 대응 조사 + +## 결론 + +원인 후보는 플랫폼의 고정 가로 플레이 영역과 빌드 HTML의 세로 영역 계산이다. “Unity가 390×844 해상도만 렌더한다”는 가정은 자료와 맞지 않는다. 이 ZIP은 이미 CSS 크기에 맞춰 Unity 렌더 타깃을 동기화하는 설정이며, 게임 내부 UI가 새 크기에 맞춰 배치되는지는 별개의 문제다. + +기본 정책은 **원본 390:844 비율을 유지하면서 가능한 영역 안에 전체 화면을 표시(contain)**하는 것을 추천한다. README가 PC에서도 세로 화면 유지한다고 명시하므로 화면을 늘리거나 자르는 cover/fill 정책은 이 게임의 안전한 기본값이 아니다. 여백 없이 모든 화면을 채우려면 Unity 소스에서 다양한 비율의 UI와 카메라를 검증·수정하여 재빌드해야 한다. + +## ZIP 근거 (원본 변경 없음) + +ZIP: `/Users/wemadeplay/Downloads/GoraniCoin-WebGLTest.zip`; zipfile로 읽기만 수행. + +- `GoraniCoin-WebGLTest/build-info.json:5`: Unity `6000.0.74f1`. +- `build-info.json:8,13–14`: `Assets/Scenes/UITestScene_Final.unity`, 기준 `390×844`. +- `README.txt:3`: PC에서도 세로 화면 유지. `README.txt:5`: Toss 결제 및 호스트 safe-area 호출 비활성화. 실제 프로젝트 소스는 ZIP에 없다. +- `index.html:9–15`: html/body 100%, overflow hidden; container 폭 `min(100vw, calc(100svh * 390 / 844))`, 높이 `100svh`; canvas CSS 폭/높이 100%. +- `index.html:27`: canvas 초기 HTML 버퍼 속성 390×844. 이 속성만으로 실행 중 렌더 타깃이 고정이라고 판단하면 안 된다. +- `index.html:46–61`: config에 `devicePixelRatio: Math.min(window.devicePixelRatio || 1, 2)` 설정. `matchWebGLToCanvasSize`는 미설정. +- `Build/GoraniCoin-WebGLTest.framework.js:7575–7580`: `matchWebGLToCanvasSize`가 undefined면 true를 반환. `:7592–7594`: preferred DPR은 match false면 1, 그 외 Module DPR/window DPR 사용. +- `index.html:69–71`: `window.unityInstance`, 준비 상태 `data-unity-ready`를 제공하여 브라우저 검사에 활용 가능. + +**HTML의 비율 결함:** 컨테이너 폭이 viewport 폭 때문에 제한되더라도 높이는 viewport 전체 높이를 유지한다. 예를 들어 iframe 320×844라면 canvas CSS가 320×844가 되어 원래 390:844보다 좁다. Unity는 이 비율에서 새 렌더링을 할 가능성이 높으며, UI가 잘리는지 여부는 내부 레이아웃에 달렸다. 적절한 contain 계산은 `scale=min(availableWidth/390, availableHeight/844)`, 폭 `390*scale`, 높이 `844*scale`이다. 이미지 CSS stretch와 Unity UI 재배치를 혼동하지 않아야 한다. + +## 플랫폼 근거 + +- `src/main/webapp/WEB-INF/views/game-detail.jsp:365–384`: frame wrap 폭 100%, `aspect-ratio:16/9`, `max-height:min(70vh,520px)`, overflow hidden; iframe absolute inset 0, 폭/높이 100%. 비율과 최대 높이가 동시에 걸려 실제 frame 비율이 16:9보다 넓어질 수도 있다. +- `game-detail.jsp:1259–1264`: 업로드 빌드 URL iframe에 그대로 연결. sandbox scripts/same-origin/pointer-lock 허용; fullscreen/autoplay 권한 허용. 전체화면 제어 UI는 없음. +- 이 빌드가 800×450 iframe에 들어가면 자체 portrait 계산에 의해 canvas 약 208×450이 되어 큰 좌우 여백과 작은 세로 화면이 생긴다. 모바일 상세 페이지의 가로 iframe은 더 낮아질 수 있다. 이는 계산상 예상이며 아직 실화면 재현은 아니다. +- `src/main/java/com/pandoli365/bibimbap/controller/api/GameUploadController.java:198–225`: ZIP 압축 해제, index 탐색, Unity 파일 검증, 디렉터리 이동, 빌드 index URL 반환. 별도 템플릿 정규화나 responsive wrapper는 없다. +- `src/main/java/com/pandoli365/bibimbap/controller/api/GameAssetController.java:57–68`: CSP 헤더 설정 뒤 파일 바이트 그대로 복사. CSP는 self/inline script와 self/inline style을 허용한다. CSP 변경 자체는 해상도 지원에 필요하지 않다. +- `src/main/java/com/pandoli365/bibimbap/controller/api/GameController.java:348–357`: `app.webgl.asset-origin`이 있으면 iframe을 별도 origin에 연결. 따라서 “부모 페이지 JS가 모든 게임의 canvas를 직접 고친다”는 구현은 일반화 불가. 호스트는 iframe 박스 크기는 변경 가능하나 내부 문서는 same-origin에서만 직접 접근 가능하다. +- `src/main/java/com/pandoli365/bibimbap/data/GameData.java` 및 game-register 입력에 게임 해상도/비율 메타 필드는 발견되지 않았다. +- `docs/graph/index.md` 알려진 한계와 `docs/development/verification-strategies.md:260–262`: JSP/CSS 정적 프론트 코드는 직접 탐색 대상. graph lookup skip은 타당. +- contracts index는 아직 비어 있고 해상도 계약 문서는 없음. usage index 일부 링크는 파일이 존재하지 않아 해당 문서에 의존하지 않음. + +## 외부 근거 — Unity 공식 문서 확인 + +[Unity 6.0 Web Canvas size](https://docs.unity3d.com/6000.0/Documentation/Manual/webgl-canvas-size.html): CSS 표시 크기와 GPU 렌더 타깃을 구분하며 기본 자동 동기화를 설명한다. `matchWebGLToCanvasSize=false`는 자동 동기화를 끄고 버퍼를 수동 관리할 때 사용하는 설정이다. 이 게임의 config와 framework 근거가 기본 동기화와 일치한다. + +[Unity uGUI 2.0 Canvas Scaler](https://docs.unity3d.com/Packages/com.unity.ugui@2.0/manual/script-CanvasScaler.html): Scale With Screen Size/Reference Resolution/Screen Match Mode가 UI 크기와 서로 다른 비율의 레이아웃을 결정한다. HTML에서 렌더 해상도를 바꾸는 것만으로 게임 내부 레이아웃 적응을 보장할 수 없다. 현재 게임이 uGUI인지 UI Toolkit인지도 ZIP만으로 확정하지 않는다. + +[MDN postMessage](https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage): 다른 origin의 iframe과 통신하려면 협력하는 child 측 프로토콜이 필요하며 sender origin/source와 message 값을 검증해야 한다. 부모에서 iframe src만 넣는 현행 구조로는 임의 ZIP의 내부 비율 자동 감지/수정 계약이 없다. + +## 권장 구현 계획 (구현하지 않음) + +1. 빌드 원본과 플레이어를 로컬 HTTP로 실행해 기준 390×844 화면, 창 축소, 모바일 세로·가로에서 재현한다. 준비 상태/실제 canvas client size와 width·height를 기록한다. +2. bibimbap 플레이 영역에 사용자 조절 가능한 비율(현재 가로/세로/원본 또는 사용자 지정)과 확대/전체화면 기능을 도입한다. 390:844 같은 정확 비율을 유지하면서 부모 가용 폭과 높이 양쪽에 맞게 계산한다. 앱의 iframe 전체를 390:844로 맞추면 이 ZIP의 자체 CSS를 수정하지 않고도 양쪽 계산이 일치하게 만들 수 있다. “세로”를 일반 9:16으로만 맞추면 이 게임 원본과 다르므로 원본 정확 비율 옵션이 필요하다. +3. 최소 변경안은 상세 JSP/CSS/전용 JS와 플레이어 테스트를 수정하고, 기존 게임은 현재 정책으로 fallback하면서 이번 게임은 사용자가 원본 비율을 선택할 수 있도록 한다. 화면 비율 추론을 hardcode하거나 특정 ZIP 이름을 앱에 박지 않는다. +4. 모든 게임에 자동 대응이 필요하면 작성자 해상도/비율 메타 입력 또는 협력하는 표준 빌드 메타/resize message 계약을 추가한다. 메타 저장은 GameData/Mapper/API/등록 JSP/DB migration 및 계약 테스트로 영향이 커진다. 업로드 HTML 임의 주입/정규식 개조는 범용 보장과 원본 보존 측면에서 우선안으로 추천하지 않는다. +5. 이 게임 HTML 자체도 개선하려면 원본 ZIP을 보존하고 복사본 index 컨테이너만 양축 contain 방식으로 보정한다. 재빌드 없이 가능한 웹 wrapper 수정이지만, 내부 UI 재설계와는 다르다. matchWebGLToCanvasSize=false나 고정 버퍼는 픽셀 기준 UI 문제가 실제 확인됐을 때 개발자와 함께 검토한다. + +## 영향 파일 후보 + +최소 플랫폼안: `src/main/webapp/WEB-INF/views/game-detail.jsp`, 신규 전용 WebGL player JS/CSS, 동작 회귀 테스트, `docs/changes/...`, 해상도 사용 계약 문서. 공용 `.player` CSS(`bibimbap.css:343`)는 현재 상세 페이지 실제 iframe class와 다르므로 그 줄만 바꾸어도 해결되지 않는다. + +자동 메타 영속화안: 위 + `GameData.java`, `GamesMapper.java`, `GameController.java`, 등록 폼, upload metadata parser(채택 시), DB migration, 컨트롤러/매퍼 테스트. 이는 이번 조사에서 확정한 구현 요구사항이 아니라 별도 범위 선택이다. + +## 검증 기준 + +- 원본 390:844와 좁은 320×844, desktop 1440×900, 가로 844×390, 작은 높이 창에서 플레이 영역 양축이 가용 공간을 넘지 않음. +- contain 모드 canvas/iframe 비율 390:844, 화면 잘림 없이 중앙 정렬. 여백은 의도대로 남음. ResizeObserver/viewport resize 후 갱신되고 Unity instance가 재생성되지 않아 플레이 상태가 유지됨. +- Unity 준비 후 CSS 크기와 drawing buffer 크기를 각각 기록; DPR 1/2에서 실제 동기화를 확인. initial width/height attribute만 검사하지 않음. +- 게임 로딩/상하단 UI/버튼 클릭/터치/포인터 위치/다시 축소/전체화면 진입과 해제를 실제 빌드로 확인. 화면만 보기 좋은데 입력이 틀어지는 회귀를 방지. +- 기존 가로 게임과 별도 asset-origin 구성에서 iframe 재생이 유지됨. cross-origin 접근 실패를 정상 지원 여부와 구분. +- `docs/development/verification-strategies.md`에 따라 수정 전 실패→수정 후 통과하는 회귀 포함, JSP 변경은 WAR 빌드 외 HTTP 200 런타임 스모크가 의무. + +## 미해결 + +- 사용자가 원하는 대응 범위: 원본 콘텐츠를 전체 표시하며 확대하는 플레이어인가, 게임 UI가 가로·세로 전체 화면에서 재배치되는 것인가? 후자는 Unity 소스 또는 담당 개발자의 재빌드가 필요할 수 있다. +- 각 게임 비율의 자동 감지/저장까지 이번 범위인지 여부. +- 실제 Unity UI 컴포넌트와 픽셀 단위 레이아웃, 카메라 viewport, safe-area 대응 설정. +- 현행 플레이어와 ZIP의 런타임 실화면은 아직 미실행. + +## 실행 계약 + +Parent instruction에 따라 nested children 0건. update_plan은 callable tools에 없어 bind 호출을 만들지 않았으며 parent에 명시 고지했다. 제품 코드/원본 ZIP/credential 미변경. 파일 산출은 이 research.md 1건만이다. diff --git a/.atp/work-session/20261014-091658/supplemental-verification.md b/.atp/work-session/20261014-091658/supplemental-verification.md new file mode 100644 index 0000000..51eaa7c --- /dev/null +++ b/.atp/work-session/20261014-091658/supplemental-verification.md @@ -0,0 +1,45 @@ +--- +phase: verification +agent: verification-advisor-supplemental +agent_version: 1 +report_invocation_id: inv-006 +generated_at: 2026-10-14T10:01:00+09:00 +concerns_checked: true +concerns: + - Physical touchscreen device smoke remains unperformed; trusted CDP touch is browser automation. + - Baseline evidence proves SSR contract regression, not an old-browser geometry replay. + - Cross-origin behavior remains Node harness coverage, not independent runtime origin coverage. + - update_plan unavailable; binding tool action not fabricated. +--- + +# Supplemental independent verification + +Read only prior verification.md, final-doc-ui-audit.md, final-prechange-ssr-regression.log, final-current-ssr-regression.log and operational docs/usage/webgl-display.md. No implementation/design/diff inspection, product/test/source edits, installs, DB or application changes. Current player JS/CSS were executed by HTTP without inspecting their contents. Root supplied fixture DOM contract. The exact unmodified previously uploaded GoraniCoin build was served from its retained temporary directory. + +## Previously open concerns reassessed + +The erroneous java-jar WAR instruction is resolved: current operational guide explicitly explains absent Main manifest and documents the actual successful Java21 Maven spring-boot:run command, plus macOS Java environment setup. No operational-guide failure remains observed. + +The supplied real HEAD baseline log fails the named SSR stored-ratio/responsive-stage regression (1 failure); the identical current named regression passes (1 pass). This resolves absent independent baseline execution evidence for the SSR contract. It does not retrospectively prove an old browser geometry matrix; prior current 12/12 geometry evidence remains valid. + +Final documentation advisor report records all 21 unconditional impact-map paths present, three index links valid, all feature-doc links resolved, scoped Impeccable detector findings reviewed as incumbent/out-of-scope and false-positive. Therefore earlier AC8 audit and AC9 root evidence gaps are resolved by supplied scoped audit evidence. Unrelated pre-existing usage index links remain disclosed there. + +## Observed Unity menu and trusted touch verification + +An isolated own Chrome headless instance on loopback18087 and HTTP fixture18086 avoided the unavailable shared Chrome MCP profile. Node22 built-in WebSocket issued Chrome DevTools Protocol Input.dispatchTouchEvent touchStart/touchEnd. Unity document event instrumentation recorded trusted pointerdown(pointerType touch), touchstart and touchend, all isTrusted=true. These are real browser-dispatched trusted events, not synthetic JavaScript TouchEvents; they are still automated emulation and do not represent hardware touchscreen execution. + +1. Normal initial viewport500×757: screenshot visibly showed Home and named Shop button. Viewport touch(202,586) produced iframe-local(74.453125,510), and before/after screenshot confirmed Home→SHOP with hardware list and Open Upgrades. +2. Expanded after resize to exact844×390: same iframe and same Unity instance. iframe rect(345.75,60,152.484375,330), canvas CSS152×330, drawing buffer152×330. Screenshot visibly showed SHOP and Open Upgrades. Trusted touch at viewport(466,345), iframe-local(120.25,285), changed to UPGRADES with Fan Tune1 and INSTALL UI. Both screenshots inspected. +3. Return to normal and exact390×844: same iframe and same Unity instance; iframe rect(58.453125,76,273.078125,591), canvas CSS273×591, drawing buffer273×591. Home navigation was exercised before the screenshot. Trusted touch on named Shop at viewport(140.353125,643.36), iframe-local(81.8999939,567.3599854), changed Home→SHOP. Screenshots inspected. Top currency/progress and bottom navigation visible. + +Coordinates match the current scaled canvas and iframe offsets in both portrait normal and landscape expanded modes. No mine modal obstructed these observations; mining progress changed during the run without preventing the named actions. Resize/return retained game currency/progression, DOM iframe and Unity instance. No observed product input mapping defect. + +Evidence: artifacts/input-supplemental/normal-before.png, normal-shop-after.png, expanded-landscape-before.png, expanded-landscape-upgrades-after.png, portrait-home-before.png, portrait-shop-after.png, portrait-input.json. Harness server.py/cdp.mjs are session-only artifacts. Expanded event and geometry values above were captured from CDP output and screenshots, not inferred from source. + +## Integrity and outcome + +Original ZIP SHA256 remains02e5272e4086f8f0e2e3a4b41ca4313d5f8862897a1655421f3f1b4315942461. Retained uploaded entry HTML and HTTP-served HTML remain8a9f8aaff7e949b49f4cab1a87c5b6d414db4031b5fb3e268f5102bc40cbcc74. Original ZIP/uploaded HTML were not modified. + +AC7 named Unity action and trusted automated mobile-touch coordinates now PASS in normal portrait and expanded resized landscape. Earlier 377 Java/11 Node/WAR/actual L2/JSP/12-geometry/fullscreen-state checks stand; doc-only changes do not require full suite replay. No observed defect or rollback signal exists. All automated/runtime observations pass within the explicitly stated baseline and cross-origin evidence bounds. Overall: needs_user_verification for real physical touchscreen smoke, not fail due to an observed product defect. Complete physical-device acceptance is not claimed. + +Owned fixture server and own isolated Chrome terminated after collection; shared8080/5433 and shared browser untouched. Temporary upload and original ZIP retained. No children; update_plan unavailable disclosed to root. ATP_POOL_RESULT wginput1 1/1 14ce996a. diff --git a/.atp/work-session/20261014-091658/verification.md b/.atp/work-session/20261014-091658/verification.md new file mode 100644 index 0000000..6f35e5e --- /dev/null +++ b/.atp/work-session/20261014-091658/verification.md @@ -0,0 +1,106 @@ +--- +phase: verification +agent: verification-advisor +agent_version: 1 +generated_at: 2026-10-14T09:51:00+09:00 +concerns_checked: true +concerns: + - "Documented java -jar WAR command fails: no Main manifest attribute; isolated runtime passed via spring-boot:run." + - "Actual trusted touchscreen input and specific Unity button outcome remain unverified: Chrome click generated trusted mouse events even in touch emulation." + - "Prechange regression failure was not independently executed; temporary browser fixture after cleanup was unavailable; current regression passed." + - "AC9 impact map/docs index and Impeccable detect require root verification; not supplied to independent advisor." + - "update_plan unavailable; ATP_POOL_BIND tool action not fabricated." +--- + +# Independent verification + +Implementation code, git diff, design.md and implementation reports were not read. No repository product/test edits were made. Tests executed against the user-authorized isolated environment; shared app8080 and DB5433 were untouched. + +## Acceptance criteria (provided verbatim) + +## 검증 포인트 + +AC self-audit: 기대값은 metadata/DOM/DB 행위 불변식에 고정하고 work-session 산출물 개수에 의존하지 않는다. 표현은 literal grep 대신 typed parser/HTTP/DB/DOM assertions; 파일 집합만 아래 명시 목록 전수 확인한다. + +- AC-1 parser fixture 집합 전수: portrait, landscape, square, nested index+adjacent info, HTML attrs, Unity literal CSS, conflicting precedence, no metadata, 300×150 default, malformed JSON, invalid pair/range, multiple ambiguous canvas, malicious script/nonliteral, oversize inputs. 각 named fixture 검증 및 product에서 JS 실행 0건; metadata 없는 정상 ZIP HTTP 200. +- AC-2 실제 uploaded game: 제공 ZIP은 390×844 반환; 다른 이름의 1280×720 및 800×800 ZIP도 자신의 값 반환. filename/게임명 상수 없이 동일 계약. +- AC-3 등록→DB→상세/수정 round trip; auto/custom/legacy path 전수 분기, manual 우선, 새 ZIP metadata 업데이트, 구 edit omission 보존, unknown nullable & fallback. 두 숫자 invalid는 400, CSRF/auth/owner unchanged. +- AC-4 isolated PostgreSQL mapper 계약: migration 기존 row 유지/NULL fallback, 재실행 가능; 모든 GameData SELECT 및 INSERT/UPDATE dimensions/source 정합. fresh schema와 migrated schema 동일. L2 remote/seed 미지정만 skip 가능; 알려진 healthy DB에서 가능한 isolated 검증을 우선한다. +- AC-5 stage viewport 집합 전수: 320×844, 1440×900, 844×390, 640×300에서 portrait/landscape/square 모두 iframe 양축 boundary 이내/ratio 오차 ≤1px. 현재 16:9/max520 구현에서 portrait 회귀는 실패하고 수정 후 통과함을 확보한다. +- AC-6 resize/overlay/fullscreen 진입·해제/실패 fallback에서 exact same iframe DOM, src, load count, 게임 state 유지; Esc/닫기/focus/scroll 복원. asset-origin 다른 origin에서도 parent canvas DOM access 없이 지원. +- AC-7 실제 ZIP runtime: 준비 후 CSS client size와 drawing buffer를 별도로 기록; 정상/expanded/fullscreen(지원 브라우저) resize, 상하단 UI 표시, 버튼 좌표/클릭, 모바일 터치 입력 점검. 원본 ZIP 및 served uploaded HTML hash 미변경. +- AC-8 full `./mvnw -o test` 및 WAR package 통과; isolated 최신 앱에서 detail/register/edit 변경 JSP 전수 HTTP 200(인증 포함). runtime stacktrace 및 console error scan. 새 constructor 의존이 생기면 contextLoads mocks 갱신. screenshot은 desktop/mobile 묶음 한 번+필요 fix 한 번; Impeccable detect changed UI 대상 한 번 실행. +- AC-9 파일 영향맵의 신규 산출물은 전수 존재하되 conditional 경로는 조건 성립시에만 변경; docs 계약/사용/변경 3개와 해당 index 링크 모두 확인. verification-advisor는 테스트를 작성하지 않고 실행만 수행. + + + +## Executed strategies + +| Command | Exit | Result | +|---|---:|---| +| `bash scripts/verify-webgl-display.sh all` | 1 | Environment startup failure: default Java launcher could not locate runtime | +| `JAVA_HOME=/opt/homebrew/opt/openjdk@21/libexec/openjdk.jdk/Contents/Home PATH=/opt/homebrew/opt/openjdk@21/bin:$PATH bash scripts/verify-webgl-display.sh all` | 0 | PASS | + +Full Maven tests:377, failures0, errors0, skipped1 (opt-in L2 contract excluded from ordinary test run). Node11/11 PASS. WAR package PASS. Disposable PostgreSQL L2 enabled and actual mapper test1/1 PASS; runner confirmed legacy row preserved, migration twice/idempotency, invalid CHECK rejection, fresh/migrated equivalence, INSERT/UPDATE/all7 SELECT roundtrip. L2 was not skipped. + +## Runtime evidence + +Separate `postgres:16` container `bibimbap-inv004-postgres` exposed loopback55003; fresh schema executed through psql from db/schema.sql (source not inspected). Temporary account created through registration UI in isolated DB only. Latest packaged artifacts launched with Java21 using working command: + +```bash +JAVA_HOME=/opt/homebrew/opt/openjdk@21/libexec/openjdk.jdk/Contents/Home PATH=/opt/homebrew/opt/openjdk@21/bin:$PATH ./mvnw -o spring-boot:run '-Dspring-boot.run.arguments=--server.address=127.0.0.1 --server.port=18081 --spring.config.import= --spring.datasource.driver-class-name=org.postgresql.Driver --spring.datasource.url=jdbc:postgresql://127.0.0.1:55003/webgl_contract?currentSchema=dev --spring.datasource.username=postgres --spring.datasource.password= --app.upload.game-storage-path=/tmp/bibimbap-inv004-uploads' +``` + +The documentation's `java -jar target/bibimbap-0.0.1-SNAPSHOT.war` failed with no Main manifest attribute. This is a reproducible operational-guide issue, not a JSP/runtime failure. + +Actual ZIP browser upload used unmodified byte copy renamed independent-original.zip, since Chrome upload_file denied every workspace path. A private loopback18082 CORS file server supplied bytes to a DataTransfer/File in the actual form. Upload HTTP200; UI detected390x844. Automatic register persisted390x844/build-info and edit/detail reflected it. Custom400x900/manual persisted, reopening edit selected custom and both values. Uploading1280x720 while custom left400x900 unchanged. Automatic resave re-detected original390x844. Synthetic valid Unity ZIPs named independent-landscape and independent-square returned1280x720 and800x800, saved in DB. Updating square with new landscape ZIP persisted1280x720. An isolated legacy row with null metadata rendered fallback16:9. + +Authenticated fetch requests `/game/new`, `/game/1`, `/game/1/edit`, `/game/2`, `/game/3` all HTTP200, exercising actual JSP compilation. Server logs contain no ERROR/Exception/stacktrace; warning only appended static upload location slash. + +Every portrait/landscape/square at320x844,1440x900,844x390,640x300 passed boundary and ratio checks (12/12), max error0.006665px. Initial resize_page window had OS minimum size limits, so exact matrix used viewport emulation and recorded actual innerWidth/innerHeight. Portrait actual Unity instance was ready. CSS versus drawing buffers recorded independently: desktop1440x900 normal291x630/582x1260; fullscreen388x840/776x1680; mobile touch emulation273x591/273x591. Actual original game top information and bottom menus visible in desktop/mobile screenshots. + +During normal resize, expand, fullscreen success/exit, rejection fallback and Esc: same iframe DOM, same Unity instance,0 additional iframe loads. iframe source unchanged. Fullscreen returned focus to fullscreen trigger; overflow restored. Forced requestFullscreen rejection correctly displayed dismissible expanded fallback. Touch emulation maxTouchPoints1, but actual Chrome click generated trusted pointerdown(pointerType mouse), mousedown and click at canvas136.5x295.5. This proves mouse delivery, not trusted touchscreen delivery or a named Unity button outcome. + +Original ZIP SHA256 stayed02e5272e4086f8f0e2e3a4b41ca4313d5f8862897a1655421f3f1b4315942461. Original/stored/HTTP served entry HTML all SHA2568a9f8aaff7e949b49f4cab1a87c5b6d414db4031b5fb3e268f5102bc40cbcc74. No source HTML mutation. + +Browser console errors:0. Observed warnings: iframe sandbox allow-scripts+same-origin, Unity WebGL INVALID_ENUM, DontDestroyOnLoad root warning, AudioContext autoplay warning. No lint tool was invoked; lint absence is not runtime failure. + +## Acceptance matching + +| AC | Verdict and evidence | +|---|---| +| AC1 | PASS through6 grouped parser cases plus12 upload security cases; fixture case names in verification-cases.json. Dynamic/nonliteral data rejected/unknown, malformed metadata upload succeeds. Independent JS execution instrumentation not separately added. | +| AC2 | PASS runtime actual390x844 and distinct-name1280x720,800x800 uploads | +| AC3 | PASS7 Java contracts plus runtime auto/custom/edit/new ZIP/legacy fallback; HTTP invalid/auth/CSRF branches executed by Java contracts | +| AC4 | PASS actual isolated L2, no skip | +| AC5 | PASS current12/12 viewport matrix; prechange failure evidence NOT independently executed | +| AC6 | PASS same-origin runtime identity/load/Unity and fullscreen rejection; cross-origin no-DOM dependency covered by Node harness, not separate runtime asset origin | +| AC7 | PARTIAL actual ready/CSS-buffer/state/hash/UI imagery and trusted mouse delivery pass; named Unity button outcome and trusted mobile touch NOT verified | +| AC8 | PASS automated full/package/JSP/errors/screenshots; Impeccable detect not performed by independent advisor | +| AC9 | NOT VERIFIED independent artifact existence/impact map/docs indexes not supplied; root check required | + +## Overall + +overall: fail +rollback_signal: none + +Automated suite and observed runtime behavior PASS. Complete acceptance is not claimed because prechange failure, trusted touch/button outcome and root-owned audit requirements remain unverified. No observed product runtime failure warrants rollback. Operational guide's boot command is reproducibly wrong for current WAR. + +## Artifacts and cleanup + +- artifacts/verification-integrated-java21.log — full377+11 tests, package, L2 evidence +- artifacts/verification-integrated.log — initial Java environment failure +- artifacts/verification-cases.json — named grouped Java test cases +- artifacts/runtime-dom-evidence.json — exact viewport and Unity state/input evidence +- artifacts/runtime-http-evidence.json — authenticated JSP status and served hash +- artifacts/runtime-hashes.json and original-hashes.json — ZIP and HTML preservation +- artifacts/runtime-roundtrip-auto.txt, runtime-roundtrip-manual.txt, runtime-zip-replacement.txt — actual isolated DB rows +- artifacts/runtime-app-maven.log and runtime-app.log — running application and manifest failure +- artifacts/runtime-schema.log — actual fresh schema execution +- artifacts/runtime-desktop.png, runtime-mobile.png — screenshot pair + +Owned app18081 process43913, loopback file server18082, disposable container bibimbap-inv004-postgres are removed after collection. Temporary upload bytes at /tmp/bibimbap-inv004-uploads and session fixture ZIPs intentionally retained for root collection; no shared volume deletion. Browser tab2 retained, pointed at isolated runtime page. Session HTTP cookie artifact removed rather than delivered. + +## Bounded regression attempt + +After cleanup the runtime page no longer had its iframe. First DOM fixture failed due absent iframe. An independent blank iframe/stage fixture evaluation remained pending and was terminated without result. No baseline failure evidence is claimed. runtime-prechange-geometry.json records the first unavailable attempt, not a passing baseline proof. diff --git a/.atp/work-session/20261014-091658/wait-wakeup-events.jsonl b/.atp/work-session/20261014-091658/wait-wakeup-events.jsonl new file mode 100644 index 0000000..9945d1b --- /dev/null +++ b/.atp/work-session/20261014-091658/wait-wakeup-events.jsonl @@ -0,0 +1,2 @@ +{"event": "await_capability_checked", "at": "2026-10-14T09:17:15.328427+09:00", "formal_adapter_enabled": false, "host_managed_subagent_orchestration": "supported", "selected_mode": "host_managed_subagent_orchestration", "profile_ref": "codex-team/SKILL.md §7"} +{"event": "measurement", "at": "2026-10-14T09:20:31.663736+09:00", "requested_agents": 1, "spawn_calls": 1, "accepted_spawns": 1, "terminal_deliveries": 1, "collected_results": 1, "nonterminal_updates": 2, "pool_wait_calls": 3, "list_calls": 0, "interrupt_calls": 0, "recovery_actions": 0, "pending": 0, "running": 0, "bind_tool_available": false} diff --git a/db/migrations/20261014-game-display-metadata.sql b/db/migrations/20261014-game-display-metadata.sql new file mode 100644 index 0000000..68f3914 --- /dev/null +++ b/db/migrations/20261014-game-display-metadata.sql @@ -0,0 +1,47 @@ +-- 게임별 WebGL 기준 화면 크기. 앱 배포 전에 대상 스키마에 적용한다. +-- search_path는 실행자가 대상(dev/live/격리 테스트) 스키마로 명시한다. +-- 앱 자동 적용 없음. 기존 행 변경/백필 없음. 재실행 가능. +-- 롤백: 이전 앱 버전으로 복귀해도 nullable 컬럼은 유지 가능하다. +-- 컬럼/제약 삭제는 별도 승인 후 수행한다. + +BEGIN; + +ALTER TABLE "games" + ADD COLUMN IF NOT EXISTS "display_width" integer, + ADD COLUMN IF NOT EXISTS "display_height" integer, + ADD COLUMN IF NOT EXISTS "display_source" character varying(16); + +DO $$ +BEGIN + IF NOT EXISTS ( + SELECT 1 FROM pg_constraint + WHERE conrelid = 'games'::regclass + AND conname = 'games_display_dimensions_check' + ) THEN + ALTER TABLE "games" + ADD CONSTRAINT "games_display_dimensions_check" CHECK ( + ("display_width" IS NULL AND "display_height" IS NULL) + OR ( + "display_width" IS NOT NULL AND "display_height" IS NOT NULL + AND "display_width" BETWEEN 1 AND 16384 + AND "display_height" BETWEEN 1 AND 16384 + AND "display_width"::bigint <= "display_height"::bigint * 32 + AND "display_height"::bigint <= "display_width"::bigint * 32 + ) + ); + END IF; + IF NOT EXISTS ( + SELECT 1 FROM pg_constraint + WHERE conrelid = 'games'::regclass + AND conname = 'games_display_source_check' + ) THEN + ALTER TABLE "games" + ADD CONSTRAINT "games_display_source_check" CHECK ( + "display_source" IS NULL + OR "display_source" IN ('build-info', 'css', 'canvas', 'manual', 'unknown') + ); + END IF; +END +$$; + +COMMIT; diff --git a/db/schema.sql b/db/schema.sql index c656d43..29da9ac 100644 --- a/db/schema.sql +++ b/db/schema.sql @@ -102,6 +102,46 @@ CREATE TABLE IF NOT EXISTS "games" ( ); ALTER SEQUENCE "games_id_seq" OWNED BY "games"."id"; +-- 게임별 WebGL 기준 화면 크기 (20261014-game-display-metadata.sql과 동일) +-- Nullable 추가만 수행하며 기존 게임의 해상도는 추정/일괄 갱신하지 않는다. +ALTER TABLE "games" + ADD COLUMN IF NOT EXISTS "display_width" integer, + ADD COLUMN IF NOT EXISTS "display_height" integer, + ADD COLUMN IF NOT EXISTS "display_source" character varying(16); + +DO $$ +BEGIN + IF NOT EXISTS ( + SELECT 1 FROM pg_constraint + WHERE conrelid = 'games'::regclass + AND conname = 'games_display_dimensions_check' + ) THEN + ALTER TABLE "games" + ADD CONSTRAINT "games_display_dimensions_check" CHECK ( + ("display_width" IS NULL AND "display_height" IS NULL) + OR ( + "display_width" IS NOT NULL AND "display_height" IS NOT NULL + AND "display_width" BETWEEN 1 AND 16384 + AND "display_height" BETWEEN 1 AND 16384 + AND "display_width"::bigint <= "display_height"::bigint * 32 + AND "display_height"::bigint <= "display_width"::bigint * 32 + ) + ); + END IF; + IF NOT EXISTS ( + SELECT 1 FROM pg_constraint + WHERE conrelid = 'games'::regclass + AND conname = 'games_display_source_check' + ) THEN + ALTER TABLE "games" + ADD CONSTRAINT "games_display_source_check" CHECK ( + "display_source" IS NULL + OR "display_source" IN ('build-info', 'css', 'canvas', 'manual', 'unknown') + ); + END IF; +END +$$; + CREATE INDEX IF NOT EXISTS "idx_games_visible_order" ON "games" ("is_visible", "is_delete", "sort_order", "created_at" DESC, "id" DESC); diff --git a/docs/changes/2026-10-14-webgl-display.md b/docs/changes/2026-10-14-webgl-display.md new file mode 100644 index 0000000..f22cba6 --- /dev/null +++ b/docs/changes/2026-10-14-webgl-display.md @@ -0,0 +1,23 @@ +--- +kind: changes +title: 업로드 빌드별 WebGL 플레이 화면 +owner: bibimbap +stability: stable +last_reviewed: 2026-10-14 +--- + +# 업로드 빌드별 WebGL 플레이 화면 + +기존 상세 실행 영역은 16:9와 최대 높이 520px로 고정되어 세로 게임을 좁은 가로 영역에 넣었다. 이제 업로드한 빌드마다 선언된 기준 폭·높이를 감지·저장하고, 상세 플레이어가 가용 폭·높이 양쪽에 비율을 유지하여 맞춘다. 특정 예시 게임에 따른 크기 상수는 없다. + +등록·수정에 자동/직접 지정 크기 설정이 추가되었다. 미확인 빌드는 자동 등록을 계속 허용하며 16:9 fallback을 사용한다. 기존 null 메타 게임은 파일에서 읽기 전용 감지하고 수정 시 교정할 수 있다. 크게 보기와 전체화면은 기존 iframe을 유지해 게임 재시작을 피한다. 전체화면 실패는 크게 보기로 전환한다. Unity 내부 레이아웃 재배치는 빌드 개발자의 영역이다. + +추가 DB 마이그레이션은 `20261014-game-display-metadata.sql`이다. 배포 전 nullable 세 컬럼과 CHECK를 적용한다. 기존 행 백필·원본 ZIP/HTML 수정·앱 자동 DDL은 없다. 정적 감지는 안전한 선언 신호만 사용하며 JS style 대입은 지원하지 않는다. 전체 계약은 [화면 메타](../contracts/webgl-display-metadata.md), 운영 절차는 [등록·실행 가이드](../usage/webgl-display.md)에 있다. + +2026-10-14 격리 검증에서 Java 21을 명시한 `bash scripts/verify-webgl-display.sh all`은 성공했다. Java 377건은 실패·오류 0, 일반 실행에서 opt-in L2 1건 skip이었다. Node 11/11과 WAR package가 통과했고, disposable PostgreSQL에서 별도로 활성화한 실제 MyBatis L2는 1/1 통과하여 생략하지 않았다. 등록·상세·수정 JSP 경로 5개가 인증 후 HTTP 200이었다. + +실제 390×844 ZIP과 별도 이름의 1280×720·800×800 빌드에 대해 320×844, 1440×900, 844×390, 640×300 viewport 12/12가 stage 경계와 1px 이내 비율 조건을 통과했다. 실제 Unity instance는 준비 상태였으며 CSS client 크기와 drawing buffer를 구분해 기록했다(데스크톱 일반 291×630/582×1260, 전체화면 388×840/776×1680, 모바일 emulation 273×591/273×591). Resize·크게 보기·전체화면/복귀·API 거절 fallback 동안 같은 iframe DOM/src와 Unity instance를 유지하고 추가 load는 0이었다. 원본 ZIP 및 저장·HTTP 제공 entry HTML의 SHA-256은 변하지 않았다. 브라우저 console error와 앱 stacktrace는 없었다. + +최종 정적 UI detect에서 기존 소개 패널 accent border와 숨겨진 thumbnail preview만 지적되었다. 후자는 src를 먼저 설정한 뒤 표시하므로 broken-image 오탐이다. 변경된 플레이어·크기 설정에서 확인된 새 UI 결함은 없었다. 실제 HEAD 이전 JSP를 임시 복사본에 대입한 동일 SSR regression은 실패(exit 1), 현재 JSP는 통과(exit 0)했다. 이는 markup 회귀 증거이며 이전 브라우저 geometry 실행 증거는 아니다. + +보완 검증에서는 CDP touch 이벤트의 pointerType=touch, isTrusted=true와 실제 Unity 메뉴 전환을 함께 확인했다. 세로 일반 화면의 Shop, 가로 확대·resize 후 Open Upgrades가 입력 좌표에 맞게 전환되었고 같은 iframe/Unity 상태를 유지했다. 실제 물리 터치 기기의 스모크는 별도 사용자 확인 항목이다. [보완 검증 보고서](../../.atp/work-session/20261014-091658/supplemental-verification.md), [최초 검증 보고서](../../.atp/work-session/20261014-091658/verification.md), [최종 문서·UI 감사](../../.atp/work-session/20261014-091658/artifacts/final-doc-ui-audit.md)에 근거와 한계를 남겼다. 재현 절차는 [등록·실행 가이드](../usage/webgl-display.md)에 있다. 공유·운영 DB 적용과 배포는 검증 harness에 포함하지 않는다. diff --git a/docs/changes/index.md b/docs/changes/index.md index 1be905c..5cad9e0 100644 --- a/docs/changes/index.md +++ b/docs/changes/index.md @@ -4,6 +4,8 @@ ## 목록 +- [2026-10-14-webgl-display.md](./2026-10-14-webgl-display.md) — 업로드 빌드별 크기 감지·영속화, 자동/직접 지정, 비율 유지와 확대/전체화면. 검증 명령·범위와 배포 전 nullable DDL 절차 등록. + - [2026-06-18-w3-2-comments-reviews.md](./2026-06-18-w3-2-comments-reviews.md) — W3-2 댓글/리뷰 분리 구현. game_comments 서버 영속화 전환 + game_reviews 도메인 신설. 신규 API 9개(댓글 C1~C4, 리뷰 R1~R5), DDL 2종, 권한(작성자/운영자), cascade 확장. L1 31테스트 PASS. L3 스모크·DDL 적용은 needs_user_verification. 좋아요는 범위밖. - [2026-06-22-w3-2-comments-reviews-enhancement.md](./2026-06-22-w3-2-comments-reviews-enhancement.md) — W3-2 고도화(코어 위에 얹음). 다축 평점(game_review_axes 6축·육각형 SVG 레이더) + A1~A3 일관성(commentView 통일·작성자 마스킹 QG-2 해결·edited/updatedAt) + B1~B3 목록규모(페이지네이션·본문10자·TextNormalizer) + C1~C6 UX + game_review_stats 집계뷰(C3 재분류 — W2-3 동결 무관 확정). 신규 4파일+변경 13. L1 43/43 GREEN. DDL·L3 스모크 needs_user_verification. - [2026-06-29-w3-w4-features.md](./2026-06-29-w3-w4-features.md) — W3(잔여)+W4 5기능 구현(W3-1·W3-4·W3-3·W3-5·W4) + 후속(20260629-142115) 배지 표시 배선 완료·보안 하드닝 b1/b2. 태그+검색·메인허브·포스팅보드·업로드보안·배지/평판 구현(5 커밋 35f1dc3~305cc73, 최종 L1 347/347 GREEN). 후속: 게임카드 creator 배지 칩·프로필 myBadges 배선(3d10449, L1 352/352) + SsrfSafeFetcher @PostConstruct DNS ttl=30(b1 best-effort) + 업로드 저장루트 static 밖 이전(b2, 9041bb7, L1 353/353). DB DDL 8종 사용자 직접 적용 완료. L3 스모크 및 b2 자산 수동 이전은 배포 후 과제 이월 — 상세: [maintenance/post-deploy-verification-checklist.md](../maintenance/post-deploy-verification-checklist.md). diff --git a/docs/contracts/index.md b/docs/contracts/index.md index 718cd97..6d4ffc3 100644 --- a/docs/contracts/index.md +++ b/docs/contracts/index.md @@ -4,4 +4,4 @@ ## 목록 -_(아직 문서 없음)_ +- [webgl-display-metadata.md](./webgl-display-metadata.md) — 게임별 빌드 크기 감지·저장·API·플레이어 fallback 계약. diff --git a/docs/contracts/webgl-display-metadata.md b/docs/contracts/webgl-display-metadata.md new file mode 100644 index 0000000..8c1fda9 --- /dev/null +++ b/docs/contracts/webgl-display-metadata.md @@ -0,0 +1,47 @@ +--- +kind: contracts +title: 게임별 WebGL 화면 크기 계약 +owner: bibimbap +stability: living +last_reviewed: 2026-10-14 +--- + +# 게임별 WebGL 화면 크기 + +게임의 기준 폭·높이를 등록 정보에 저장하고 플레이어 iframe을 같은 비율로 가용 폭·높이 안에 표시한다. 게임명·ZIP 파일명에 따른 특별 처리는 없다. 이 값은 빌드에 선언된 화면 크기이며 Unity 내부 UI 재배치를 보장하지 않는다. + +## 감지와 검증 + +작성자의 직접 지정이 우선한다. 자동 감지는 선택된 `index.html`과 같은 디렉터리의 `build-info.json` top-level `width`/`height` → 명확한 canvas 또는 그 조상 `#unity-container`의 정수 pixel CSS → canvas의 명시 `width`/`height` 속성 순이다. + +Canvas는 `#unity-canvas`가 하나이면 선택하고, 해당 ID가 없으면 canvas가 정확히 하나인 경우 선택한다. CSS는 inline 또는 `style` 블록의 정확한 단일 ID selector만 지원한다. `@` 규칙이 포함된 style 블록, 상대 단위·동적 표현식·외부 CSS·JavaScript style 대입은 감지하지 않는다. JS 실행이나 외부 요청은 하지 않는다. CSS cascade 전체를 계산하는 브라우저가 아니므로 감지된 선언값이 실제 게임과 다르면 직접 지정한다. + +폭·높이는 둘 다 정수 1~16384, 비율은 1:32~32:1이다. 숫자 문자열도 허용하되 분수·부호·공백은 허용하지 않는다. 자동 감지의 300×150은 브라우저 기본값으로 취급해 제외하며 직접 지정은 허용한다. HTML 읽기 상한은 1MiB, JSON은 64KiB다. 손상된 선택 메타는 다음 신호로 넘어가고, 알 수 없는 크기는 정상 업로드를 유지한다. 저장 경로는 업로드 저장루트 내부의 regular file만 분석한다. + +```json +{"width": 1280, "height": 720} +``` + +메타 파일은 진입점 옆에 선택적으로 넣는다. 하위 또는 다른 빌드의 파일을 재귀 탐색해서 섞지 않는다. + +## API와 저장 + +| 경계 | 필드 / 동작 | +| --- | --- | +| `POST /api/game-files/webgl-zip` | 기존 응답에 `displayWidth`, `displayHeight`, `displaySource` 추가. 크기 미확인은 null/null/unknown이며 HTTP 200 | +| `POST /game/new`, `POST /game/{id}/edit` | 선택 필드 `displayMode=auto\|custom`, `displayWidth`, `displayHeight` | +| 자동 저장 | 클라이언트 크기 값을 신뢰하지 않고 서버 저장 진입점을 재감지 | +| 직접 지정 저장 | 두 숫자 검증 후 source=manual. 불완전 pair/범위 밖/알 수 없는 mode는 HTTP 400 | +| 구 클라이언트 등록 | mode 누락은 auto | +| 구 클라이언트 수정 | mode 누락과 같은 경로는 기존 메타 유지, 경로 교체는 재감지 | +| 상세 / 수정 읽기 | 유효 저장값 우선, 기존 null 값은 파일에서 읽기 전용 감지. 조회 중 DB 백필 없음 | + +기존 인증·CSRF·소유권 검증이 크기 필드 검증보다 먼저 적용된다. Source enum은 `build-info`, `css`, `canvas`, `manual`, `unknown`이다. DB 컬럼은 nullable `games.display_width integer`, `display_height integer`, `display_source varchar(16)`이며 pair/범위/비율/source CHECK가 있다. Source는 legacy 호환을 위해 null도 허용한다. Ratio는 별도 저장하지 않는다. `GameData`를 반환하는 모든 7개 mapper 조회와 INSERT/UPDATE가 세 필드를 전달한다. + +## 표시와 fallback + +상세 SSR은 검증한 `webglDisplayWidth/Height`, source/known을 전달한다. 미확인 빌드는 16:9 화면으로 표시하며 작성자가 직접 교정할 수 있다. 특정 세로 게임 크기로 기존 행을 일괄 변경하지 않는다. + +`scale = min(availableWidth / referenceWidth, availableHeight / referenceHeight)`로 iframe 두 축을 맞춘다. 일반 화면 높이 budget은 `min(70dvh, 720px)`이며 vh fallback이 있다. 여백은 중앙 정렬한다. 확대/전체화면은 safe area와 툴바를 뺀 stage의 실제 크기를 사용한다. ResizeObserver·window/visualViewport resize·fullscreenchange를 RAF로 묶어 반영한다. iframe DOM과 src를 유지하여 게임을 다시 로드하지 않는다. 별도 asset origin에서도 부모는 iframe 박스만 조정하며 canvas DOM 접근을 요구하지 않는다. + +전체화면 API가 없거나 거절되면 크게 보기로 전환하고 안내한다. 닫기/Esc·스크롤·포커스 복귀를 지원한다. [사용 절차](../usage/webgl-display.md), [검증 등록](../development/verification-strategies.md)을 함께 참고한다. diff --git a/docs/development/verification-strategies.md b/docs/development/verification-strategies.md index bee447e..e50d63b 100644 --- a/docs/development/verification-strategies.md +++ b/docs/development/verification-strategies.md @@ -111,6 +111,35 @@ strategies: note: "L1 + L2 + 로그 스캔 통합. ATP task 세션 종료 전 의무." ``` +## WebGL 빌드별 화면 대응 (2026-10-14) + +이 scope의 구체 명령은 아래 등록값을 사용한다. 상세 계약은 `docs/contracts/webgl-display-metadata.md`, 격리 런타임 절차는 `docs/usage/webgl-display.md`다. 코드 검증과 JSP 런타임 컴파일 검증을 구분한다. + +```yaml +strategies: + - id: webgl-display-l1 + cmd: bash scripts/verify-webgl-display.sh l1 + scope: [src/main/java/com/pandoli365/bibimbap/util/WebglDisplayMetadata.java, src/main/java/com/pandoli365/bibimbap/controller/api/GameController.java, src/main/java/com/pandoli365/bibimbap/controller/api/GameUploadController.java, src/main/webapp/js/webgl-player.js, src/main/webapp/css/webgl-player.css, src/main/webapp/WEB-INF/views/game-detail.jsp, src/main/webapp/WEB-INF/views/game-register.jsp] + timeout_s: 600 + failure_severity: blocker + note: Java full regression + Node contain/resize/state regression + WAR package. Runtime JSP compilation is separate. + - id: contract-webgl-display-postgres + cmd: bash scripts/verify-webgl-display.sh l2 + scope: [db/schema.sql, db/migrations/20261014-game-display-metadata.sql, src/main/java/com/pandoli365/bibimbap/mapper/GamesMapper.java, src/main/java/com/pandoli365/bibimbap/data/GameData.java] + timeout_s: 240 + failure_severity: blocker + preconditions: [Docker daemon available, local postgres:16 image, Java 21 and cached Maven dependencies] + note: Disposable loopback PostgreSQL only; legacy null row + rerun migration + CHECK rejection + fresh equivalence + actual mapper INSERT/UPDATE/all seven SELECT typed roundtrip. No shared DB mutation. Missing prerequisites must be reported explicitly; failed contract cannot be called skip. + - id: verify-webgl-display + cmd: bash scripts/verify-webgl-display.sh all + scope: webgl-display + timeout_s: 900 + failure_severity: blocker + note: Integrated L1 + L2; temporary database removed by EXIT trap. +``` + +L3 필수 확인: 새 WAR를 기존 앱과 겹치지 않는 포트·disposable DB·임시 업로드 경로에서 기동하고, 인증 후 변경된 등록/상세/수정 JSP 모두 HTTP 200 및 JSP stacktrace 부재를 확인한다. 실제 제공 ZIP과 다른 비율 ZIP으로 등록→DB→상세→수정 roundtrip, viewport 320×844/1440×900/844×390/640×300의 양축 containment·1px 비율 오차, 확대/전체화면/resize 중 같은 iframe DOM/src/load 횟수·게임 상태 유지, CSS canvas 크기와 drawing buffer 크기, 클릭·터치 입력을 점검한다. 전체화면 거절 fallback·Esc·포커스·스크롤 복귀와 서버/브라우저 오류 스캔도 기록한다. 사용자 실제 기기 스모크가 남으면 환경·확인 항목을 별도로 명시한다. + ## 필드 정의 | 필드 | 의미 | @@ -280,3 +309,9 @@ graphify(`/graphify src/ docs/`)는 `src/main/webapp/WEB-INF/views/*.jsp`, `src/ §299 는 `.jspf` 정적 include 의 `pageEncoding` 을 다루지만, **DefaultServlet 이 서빙하는 순수 `.html`** 도 동일 mojibake 함정이 있다. Tomcat 은 정적 `.html` 에 `Content-Type: text/html`(charset 없음)만 붙이므로, 파일에 `` 가 없으면 브라우저가 Latin-1 로 추정해 UTF-8 한글이 깨진다. 앱 정적경로에 두는 프리뷰·정적 페이지는 `` 에 `` 를 반드시 포함한다. > 근거: 세션 20260701-083240 — 카드 프리뷰 정적 html 을 `/css/` 서빙했으나 meta charset 누락으로 전체 한글 mojibake, 사용자 스샷으로 표면화 → meta 추가로 즉시 해소. 변경 상세: [changes/2026-06-30-ui-multiaxis-ratio-visibility-fix.md](../changes/2026-06-30-ui-multiaxis-ratio-visibility-fix.md). + +### WebGL 터치 좌표 검증 + +모바일 emulation에서 click만 실행하면 pointerType=mouse일 수 있으므로 터치 검증으로 집계하지 않는다. CDP touch 입력에서 pointerType=touch와 isTrusted=true를 확인하고, 비율 유지·확대·resize 후 이름이 있는 게임 버튼의 화면 전환까지 검증한다. 실제 기기 스모크는 자동 browser touch와 구분하여 기록한다. + +> 근거: 20261014 WebGL 세션 보완 검증 — Shop/Open Upgrades 입력과 메뉴 전환 확인. diff --git a/docs/usage/index.md b/docs/usage/index.md index 9dc4635..678b666 100644 --- a/docs/usage/index.md +++ b/docs/usage/index.md @@ -13,6 +13,8 @@ last_reviewed: 2026-05-07 ## 목록 +- [webgl-display.md](./webgl-display.md) — WebGL 게임별 화면 크기 등록·직접 지정·확대/전체화면과 격리 검증·배포 순서. + - [local-setup.md](./local-setup.md) — 로컬 개발환경 온보딩 (경로 A Docker / 경로 B 직접 실행, DB 스키마 초기화, 트러블슈팅) — 전 과정 실행 검증됨 - [setup-checklist.md](./setup-checklist.md) — 이식 후 30분 내 완료 설정 체크리스트 (복사 제외 재확인 → CLAUDE.md 병합 → 검증 명령 교체 → 카테고리 조정 → graphify 도입 여부) - [faq.md](./faq.md) — 문제 해결 / FAQ + 이식자 실수 카탈로그 (M1~M8) diff --git a/docs/usage/webgl-display.md b/docs/usage/webgl-display.md new file mode 100644 index 0000000..8392107 --- /dev/null +++ b/docs/usage/webgl-display.md @@ -0,0 +1,66 @@ +--- +kind: usage +title: WebGL 게임 화면 크기 등록과 실행 +owner: bibimbap +stability: living +last_reviewed: 2026-10-14 +--- + +# WebGL 화면 크기 등록과 실행 + +게임 등록·수정의 “화면 크기”에서 기본 선택인 “빌드에 맞추기”를 사용한다. ZIP 업로드 후 확인한 폭·높이를 안내한다. 세로·가로·정사각형 게임마다 자기 비율로 플레이 영역에 맞춰 표시된다. + +크기를 확인하지 못하거나 실제 게임 화면과 다른 경우 “직접 지정”에서 게임이 기준으로 삼는 폭·높이를 입력한다. 두 값은 1~16384 정수이며 비율은 1:32~32:1이다. 미확인 상태로 자동 등록하면 기본 가로 화면(16:9)을 사용한다. 기존 게임도 수정 화면에서 다시 자동 저장하거나 직접 지정할 수 있다. 직접 지정 중 새 ZIP을 선택해도 입력한 값은 유지되므로 새 게임의 크기와 일치하는지 확인한다. + +상세 화면의 “크게 보기”는 게임을 유지하면서 넓은 영역을 제공한다. “전체화면”을 사용할 수 없는 브라우저는 크게 보기로 전환한다. 닫기/Esc로 돌아오며 창 크기·화면 방향이 바뀌어도 게임의 비율을 유지한다. Unity 게임 자체가 브라우저 크기 변경을 처리하지 않는다면 내부 Canvas Scaler·앵커·카메라 설정을 개발자가 고쳐 다시 빌드해야 한다. + +템플릿에 의도 크기가 없으면 진입 `index.html`과 같은 폴더에 선택적인 `build-info.json`을 넣을 수 있다. 예: `{"width":800,"height":800}`. 임의 JS로 계산한 크기를 서버가 실행하여 추론하지는 않는다. 전체 [메타 계약](../contracts/webgl-display-metadata.md)을 참고한다. + +## 배포 순서 + +1. 대상 스키마를 지정하여 `db/migrations/20261014-game-display-metadata.sql`을 먼저 적용한다. 운영·공유 DB 변경은 해당 환경의 승인 절차를 따른다. +2. 새 WAR를 배포한다. 앱 시작 시 자동 DDL은 없다. +3. 기존 게임과 새 게임을 상세·등록·수정 화면에서 확인한다. + +마이그레이션은 nullable 컬럼을 추가하고 기존 행을 백필하지 않으며 재실행 가능하다. `db/schema.sql`의 신규 DB 정의도 동일하다. 앱을 이전 버전으로 되돌릴 때 이 컬럼은 남겨도 된다. 컬럼 DROP은 별도 변경으로 다룬다. 다음 명령은 **대상 DB를 운영자가 명확히 지정한 뒤** 실행한다. + +```bash +PGOPTIONS='-c search_path=dev' psql -X -v ON_ERROR_STOP=1 \ + -f db/migrations/20261014-game-display-metadata.sql +``` + +## 자동 검증 + +Java 21, Node, 캐시된 Maven 의존성, Docker와 로컬 `postgres:16` 이미지가 필요하다. Maven offline cache가 없으면 의존성을 준비한 후 실행한다. 스크립트는 기존 DB/앱/볼륨을 사용하지 않고 임시 PostgreSQL을 loopback 임의 포트에 띄우며 종료 시 제거한다. 이미지를 자동 pull하지 않는다. + +```bash +bash scripts/verify-webgl-display.sh all +# 개별 실행 +bash scripts/verify-webgl-display.sh l1 +bash scripts/verify-webgl-display.sh l2 +``` + +macOS에서 기본 Java launcher가 런타임을 찾지 못하면 설치된 Java 21을 명시한다. 검증 환경의 Homebrew 경로 예시는 다음과 같다. + +```bash +JAVA_HOME=/opt/homebrew/opt/openjdk@21/libexec/openjdk.jdk/Contents/Home \ +PATH=/opt/homebrew/opt/openjdk@21/bin:$PATH \ +bash scripts/verify-webgl-display.sh all +``` + +L1은 Java 전체 단위·회귀, Node 플레이어 테스트, WAR 패키징이다. L2는 기존 null 행 보존, 마이그레이션 두 번 적용, CHECK 거부, fresh/migrated display 스키마 동등성 및 실제 MyBatis INSERT/UPDATE/7개 SELECT roundtrip이다. 일반 Maven test에서 격리 DB 계약 테스트는 환경변수 부재로 skip된다. harness가 만든 DB에서만 활성화하며 JDBC URL은 loopback의 `webgl_contract` DB로 제한한다. + +## 격리 런타임 확인 + +WAR package만으로 JSP 컴파일 성공을 판단하지 않는다. 새 disposable PostgreSQL을 별도로 만들고 `db/schema.sql`을 적용한 후, 기존 앱과 겹치지 않는 포트(예: 18081)에 Maven `spring-boot:run`으로 앱을 기동한다. 현재 WAR에는 Main manifest가 없으므로 `java -jar`로 실행할 수 없다. 임시 DB 포트는 ``에 지정한다. 다음은 검증에서 성공한 Java 21 실행 명령을 일반화한 예시다. macOS 외 환경에서는 설치된 Java 21 경로로 바꾼다. + +```bash +JAVA_HOME=/opt/homebrew/opt/openjdk@21/libexec/openjdk.jdk/Contents/Home \ +PATH=/opt/homebrew/opt/openjdk@21/bin:$PATH \ +./mvnw -o spring-boot:run \ + '-Dspring-boot.run.arguments=--server.address=127.0.0.1 --server.port=18081 --spring.config.import= --spring.datasource.driver-class-name=org.postgresql.Driver --spring.datasource.url=jdbc:postgresql://127.0.0.1:/webgl_contract?currentSchema=dev --spring.datasource.username=postgres --spring.datasource.password= --app.upload.game-storage-path=/tmp/bibimbap-webgl-smoke-uploads' +``` + +격리 DB의 임시 계정으로 로그인한 뒤 등록→업로드→저장→상세→수정 흐름을 확인한다. 실제 받은 ZIP과 별도 가로·정사각형 빌드를 각각 등록해 자기 크기가 적용되는지 본다. 직접 지정·새 ZIP 교체·기존 크기 미확인 게임도 확인한다. 등록 `/game/new`, 상세 `/game/{id}`, 수정 `/game/{id}/edit`의 응답 200과 서버의 JSP/stacktrace 오류 부재를 확인한다. 기존 원본 ZIP과 저장된 HTML의 SHA-256을 비교하여 빌드가 변하지 않았음을 남긴다. + +320×844, 1440×900, 844×390, 640×300 viewport에서 세로·가로·정사각형 게임 모두 iframe이 stage 경계 안에 있고 비율 오차가 1px 이내인지 확인한다. 일반·크게 보기·전체화면 진입/복귀·API 거절 fallback·resize를 확인하며 iframe DOM/src/load 횟수와 게임 상태가 유지되는지 기록한다. 실제 Unity canvas는 CSS client 크기와 drawing buffer 크기를 각각 확인하고 상하단 UI·클릭 좌표·모바일 터치 입력을 점검한다. 콘솔 오류, focus 복귀, Esc, body 스크롤 복원도 확인한다. 확인 후 임시 앱/DB/업로드만 정리한다. diff --git a/scripts/verify-webgl-display.sh b/scripts/verify-webgl-display.sh new file mode 100755 index 0000000..9f38b95 --- /dev/null +++ b/scripts/verify-webgl-display.sh @@ -0,0 +1,84 @@ +#!/usr/bin/env bash +set -euo pipefail +cd "$(dirname "$0")/.." + +mode="${1:-all}" +case "$mode" in all|l1|l2) ;; *) echo 'Usage: bash scripts/verify-webgl-display.sh [all|l1|l2]' >&2; exit 2 ;; esac + +if [[ "$mode" != l2 ]]; then + ./mvnw -o test + node --test src/test/js/webgl-player.test.cjs + ./mvnw -o -DskipTests package + echo 'L1 WebGL display: PASS (Java regression, Node player regression, WAR package)' +fi +[[ "$mode" != l1 ]] || exit 0 + +# No existing database, credentials, volume, or application container is used. +image="${WEBGL_CONTRACT_POSTGRES_IMAGE:-postgres:16}" +docker image inspect "$image" >/dev/null +container="bibimbap-webgl-contract-$$-${RANDOM}" +cleanup() { docker rm -f "$container" >/dev/null 2>&1 || true; } +docker run --pull=never -d --name "$container" --label bibimbap.webgl-contract=true \ + -e POSTGRES_HOST_AUTH_METHOD=trust -e POSTGRES_DB=webgl_contract \ + -p 127.0.0.1::5432 "$image" >/dev/null +trap cleanup EXIT +ready=false +for ((attempt=0; attempt<60; attempt++)); do + if docker exec "$container" pg_isready -h 127.0.0.1 -U postgres -d webgl_contract >/dev/null 2>&1; then ready=true; break; fi + sleep 1 +done +[[ "$ready" == true ]] || { echo 'Disposable PostgreSQL did not become ready' >&2; exit 1; } +sql() { docker exec -i "$container" psql -X -v ON_ERROR_STOP=1 -U postgres -d "$1" "${@:2}"; } +sql webgl_contract -q < db/schema.sql +sql webgl_contract -q <<'SQL' +SET search_path TO dev; +ALTER TABLE games DROP COLUMN display_width, DROP COLUMN display_height, DROP COLUMN display_source; +INSERT INTO users(id, display_name) VALUES (9000001, 'Legacy contract author'); +INSERT INTO games(id,user_id,name) VALUES (9000001,9000001,'Legacy contract game'); +SQL +for repeat in 1 2; do + { echo 'SET search_path TO dev;'; cat db/migrations/20261014-game-display-metadata.sql; } | sql webgl_contract -q +done +sql webgl_contract -q <<'SQL' +SET search_path TO dev; +DO $$ +BEGIN + IF NOT EXISTS (SELECT 1 FROM games WHERE id=9000001 AND name='Legacy contract game' + AND display_width IS NULL AND display_height IS NULL AND display_source IS NULL) THEN + RAISE EXCEPTION 'Migration changed existing row or metadata nullability'; + END IF; + UPDATE games SET display_width=800,display_height=800,display_source='build-info' WHERE id=9000001; + BEGIN + UPDATE games SET display_height=NULL WHERE id=9000001; + RAISE EXCEPTION 'Partial pair unexpectedly accepted'; + EXCEPTION WHEN check_violation THEN NULL; END; + BEGIN + UPDATE games SET display_width=0 WHERE id=9000001; + RAISE EXCEPTION 'Zero width unexpectedly accepted'; + EXCEPTION WHEN check_violation THEN NULL; END; + BEGIN + UPDATE games SET display_width=16385 WHERE id=9000001; + RAISE EXCEPTION 'Oversize width unexpectedly accepted'; + EXCEPTION WHEN check_violation THEN NULL; END; + BEGIN + UPDATE games SET display_width=1,display_height=100 WHERE id=9000001; + RAISE EXCEPTION 'Extreme ratio unexpectedly accepted'; + EXCEPTION WHEN check_violation THEN NULL; END; + BEGIN + UPDATE games SET display_source='unexpected' WHERE id=9000001; + RAISE EXCEPTION 'Unknown source enum unexpectedly accepted'; + EXCEPTION WHEN check_violation THEN NULL; END; + UPDATE games SET display_width=NULL,display_height=NULL,display_source='unknown' WHERE id=9000001; +END $$; +CREATE DATABASE webgl_fresh; +SQL +sql webgl_fresh -q < db/schema.sql +signature="SELECT 'column:'||column_name||':'||data_type||':'||is_nullable||':'||COALESCE(character_maximum_length::text,'') FROM information_schema.columns WHERE table_schema='dev' AND table_name='games' AND column_name LIKE 'display_%' UNION ALL SELECT 'constraint:'||conname||':'||pg_get_constraintdef(oid) FROM pg_constraint WHERE conrelid='dev.games'::regclass AND conname LIKE 'games_display_%' ORDER BY 1" +migrated="$(sql webgl_contract -At -c "$signature")" +fresh="$(sql webgl_fresh -At -c "$signature")" +[[ "$migrated" == "$fresh" ]] || { echo 'Fresh/migrated display schema mismatch' >&2; exit 1; } +port="$(docker port "$container" 5432/tcp)" +port="${port##*:}" +WEBGL_CONTRACT_JDBC_URL="jdbc:postgresql://127.0.0.1:${port}/webgl_contract?currentSchema=dev" \ + ./mvnw -o -Dtest=WebglDisplayDatabaseContractTest test +echo 'L2 WebGL display: PASS (legacy row, idempotency, checks, fresh equivalence, actual mapper roundtrip)' diff --git a/src/main/java/com/pandoli365/bibimbap/controller/api/GameController.java b/src/main/java/com/pandoli365/bibimbap/controller/api/GameController.java index acfd2f0..5eddb90 100644 --- a/src/main/java/com/pandoli365/bibimbap/controller/api/GameController.java +++ b/src/main/java/com/pandoli365/bibimbap/controller/api/GameController.java @@ -1,6 +1,7 @@ package com.pandoli365.bibimbap.controller.api; import com.pandoli365.bibimbap.data.GameData; +import com.pandoli365.bibimbap.util.WebglDisplayMetadata; import com.pandoli365.bibimbap.data.GameLikeData; import com.pandoli365.bibimbap.mapper.GameCommentsMapper; import com.pandoli365.bibimbap.mapper.GameLikesMapper; @@ -27,6 +28,10 @@ import org.springframework.web.server.ResponseStatusException; import java.util.LinkedHashMap; import java.util.Locale; import java.util.Map; +import java.nio.file.Files; +import java.nio.file.Path; +import java.io.IOException; +import java.util.Objects; @Controller public class GameController { @@ -44,6 +49,9 @@ public class GameController { @Value("${app.webgl.asset-origin:}") private String webglAssetOrigin; + @Value("${app.upload.game-storage-path:src/main/resources/static}") + private String uploadStoragePath; + public GameController(GamesMapper gamesMapper, GameCommentsMapper gameCommentsMapper, GameReviewsMapper gameReviewsMapper, @@ -113,6 +121,12 @@ public class GameController { game.setVisible(isChecked(visible)); game.setSortOrder(gamesMapper.nextSortOrder()); + try { + applyDisplayMetadata(game, request, null); + } catch (IllegalArgumentException e) { + return response(HttpStatus.BAD_REQUEST, e.getMessage()); + } + gamesMapper.addGame(game); if (game.getId() == null) { return response(HttpStatus.INTERNAL_SERVER_ERROR, "게임 등록 결과를 확인하지 못했습니다."); @@ -173,6 +187,10 @@ public class GameController { model.addAttribute("editThumbnailUrl", trimToEmpty(game.getThumbnailUrl())); model.addAttribute("editVisible", game.getVisible() == null || game.getVisible()); model.addAttribute("editGameUuid", gameUuidFromPath(trimToEmpty(game.getWebglPath()))); + WebglDisplayMetadata display = resolvedDisplay(game); + model.addAttribute("editDisplayWidth", display.width()); + model.addAttribute("editDisplayHeight", display.height()); + model.addAttribute("editDisplaySource", display.source()); return "game-register"; } @@ -225,6 +243,16 @@ public class GameController { } String oldWebglPath = existing.getWebglPath(); + GameData replacement = new GameData(); + replacement.setWebglPath(normalizedWebglPath); + try { + applyDisplayMetadata(replacement, request, existing); + } catch (IllegalArgumentException e) { + return response(HttpStatus.BAD_REQUEST, e.getMessage()); + } + existing.setDisplayWidth(replacement.getDisplayWidth()); + existing.setDisplayHeight(replacement.getDisplayHeight()); + existing.setDisplaySource(replacement.getDisplaySource()); existing.setName(normalizedName); existing.setCreatorNote(normalizedCreatorNote); existing.setGitUrl(safeExternalUrl(gitUrl)); @@ -337,6 +365,11 @@ public class GameController { model.addAttribute("gitUrl", safeExternalUrl(game.getGitUrl())); model.addAttribute("webglUrl", webglPath); model.addAttribute("webglFrameSrc", webglFrameSrc(webglPath)); + WebglDisplayMetadata display = resolvedDisplay(game); + model.addAttribute("webglDisplayWidth", display.known() ? display.width() : 16); + model.addAttribute("webglDisplayHeight", display.known() ? display.height() : 9); + model.addAttribute("webglDisplaySource", display.source()); + model.addAttribute("webglDisplayKnown", display.known()); model.addAttribute("webglDeployPath", webglPath); model.addAttribute("owner", currentUserId != null && currentUserId.equals(game.getUserId())); model.addAttribute("currentUserId", currentUserId); @@ -357,6 +390,54 @@ public class GameController { return origin + (normalizedPath.startsWith("/") ? normalizedPath : "/" + normalizedPath); } + private void applyDisplayMetadata(GameData game, HttpServletRequest request, GameData existing) { + String mode = request.getParameter("displayMode"); + if (mode == null && existing != null && Objects.equals(game.getWebglPath(), existing.getWebglPath())) { + game.setDisplayWidth(existing.getDisplayWidth()); + game.setDisplayHeight(existing.getDisplayHeight()); + game.setDisplaySource(existing.getDisplaySource()); + return; + } + WebglDisplayMetadata display; + if ("custom".equals(mode)) { + Integer width = WebglDisplayMetadata.integer(request.getParameter("displayWidth")); + Integer height = WebglDisplayMetadata.integer(request.getParameter("displayHeight")); + if (!WebglDisplayMetadata.valid(width, height)) { + throw new IllegalArgumentException("화면 폭과 높이는 1~16384 정수이며 비율은 1:32~32:1이어야 합니다."); + } + display = new WebglDisplayMetadata(width, height, "manual"); + } else if (mode == null || "auto".equals(mode)) { + display = detectStoredDisplay(game.getWebglPath()); + } else { + throw new IllegalArgumentException("화면 크기 설정을 확인해 주세요."); + } + game.setDisplayWidth(display.width()); + game.setDisplayHeight(display.height()); + game.setDisplaySource(display.source()); + } + + private WebglDisplayMetadata resolvedDisplay(GameData game) { + if (WebglDisplayMetadata.valid(game.getDisplayWidth(), game.getDisplayHeight())) { + return new WebglDisplayMetadata(game.getDisplayWidth(), game.getDisplayHeight(), game.getDisplaySource()); + } + return detectStoredDisplay(game.getWebglPath()); + } + + private WebglDisplayMetadata detectStoredDisplay(String webglPath) { + if (uploadStoragePath == null || !isGameAssetPath(webglPath) || !webglPath.endsWith("/index.html")) { + return WebglDisplayMetadata.unknown(); + } + try { + Path root = Path.of(uploadStoragePath).toAbsolutePath().normalize().resolve("game").normalize(); + Path index = root.resolve(webglPath.substring("/game/".length())).normalize(); + if (!index.startsWith(root) || !Files.exists(root) || !Files.exists(index) + || !index.toRealPath().startsWith(root.toRealPath())) return WebglDisplayMetadata.unknown(); + return WebglDisplayMetadata.detect(index); + } catch (IOException | RuntimeException e) { + return WebglDisplayMetadata.unknown(); + } + } + private String safeExternalUrl(String value) { String text = trimToNull(value); if (text == null) { diff --git a/src/main/java/com/pandoli365/bibimbap/controller/api/GameUploadController.java b/src/main/java/com/pandoli365/bibimbap/controller/api/GameUploadController.java index d3e2102..864c200 100644 --- a/src/main/java/com/pandoli365/bibimbap/controller/api/GameUploadController.java +++ b/src/main/java/com/pandoli365/bibimbap/controller/api/GameUploadController.java @@ -1,6 +1,7 @@ package com.pandoli365.bibimbap.controller.api; import com.pandoli365.bibimbap.data.GameAssetOwner; +import com.pandoli365.bibimbap.util.WebglDisplayMetadata; import com.pandoli365.bibimbap.data.GameUploadAudit; import com.pandoli365.bibimbap.mapper.GameUploadAuditMapper; import com.pandoli365.bibimbap.security.CsrfTokens; @@ -206,6 +207,7 @@ public class GameUploadController { .body(Map.of("message", "zip 안에서 index.html을 찾지 못했습니다.")); } ZipSecurity.assertUnityBuild(tmpDir); + WebglDisplayMetadata display = WebglDisplayMetadata.detect(indexFile); String relIndex = tmpDir.relativize(indexFile).toString().replace('\\', '/'); @@ -230,6 +232,9 @@ public class GameUploadController { response.put("gameUuid", newUuid); response.put("webglPath", webglPath); response.put("deployPath", deployPath); + response.put("displayWidth", display.width()); + response.put("displayHeight", display.height()); + response.put("displaySource", display.source()); response.put("entryCount", extractResult.entryCount()); response.put("extractedBytes", extractResult.extractedBytes()); log.info("WebGL zip upload completed. gameUuid={}, webglPath={}, entryCount={}, extractedBytes={}", diff --git a/src/main/java/com/pandoli365/bibimbap/data/GameData.java b/src/main/java/com/pandoli365/bibimbap/data/GameData.java index 533065f..14f1fee 100644 --- a/src/main/java/com/pandoli365/bibimbap/data/GameData.java +++ b/src/main/java/com/pandoli365/bibimbap/data/GameData.java @@ -11,6 +11,9 @@ public class GameData { private String creatorNote; private String gitUrl; private String webglPath; + private Integer displayWidth; + private Integer displayHeight; + private String displaySource; private String thumbnailUrl; private Integer likeCount; private Boolean visible; @@ -81,6 +84,13 @@ public class GameData { return thumbnailUrl; } + public Integer getDisplayWidth() { return displayWidth; } + public void setDisplayWidth(Integer displayWidth) { this.displayWidth = displayWidth; } + public Integer getDisplayHeight() { return displayHeight; } + public void setDisplayHeight(Integer displayHeight) { this.displayHeight = displayHeight; } + public String getDisplaySource() { return displaySource; } + public void setDisplaySource(String displaySource) { this.displaySource = displaySource; } + public void setThumbnailUrl(String thumbnailUrl) { this.thumbnailUrl = thumbnailUrl; } diff --git a/src/main/java/com/pandoli365/bibimbap/mapper/GamesMapper.java b/src/main/java/com/pandoli365/bibimbap/mapper/GamesMapper.java index 9b5c958..b701a27 100644 --- a/src/main/java/com/pandoli365/bibimbap/mapper/GamesMapper.java +++ b/src/main/java/com/pandoli365/bibimbap/mapper/GamesMapper.java @@ -24,6 +24,9 @@ public interface GamesMapper { g.creator_note AS creatorNote, g.git_url AS gitUrl, g.webgl_path AS webglPath, + g.display_width AS displayWidth, + g.display_height AS displayHeight, + g.display_source AS displaySource, g.thumbnail_url AS thumbnailUrl, g.like_count AS likeCount, g.is_visible AS visible, @@ -47,6 +50,9 @@ public interface GamesMapper { g.creator_note AS creatorNote, g.git_url AS gitUrl, g.webgl_path AS webglPath, + g.display_width AS displayWidth, + g.display_height AS displayHeight, + g.display_source AS displaySource, g.thumbnail_url AS thumbnailUrl, g.like_count AS likeCount, g.is_visible AS visible, @@ -71,6 +77,9 @@ public interface GamesMapper { g.creator_note AS creatorNote, g.git_url AS gitUrl, g.webgl_path AS webglPath, + g.display_width AS displayWidth, + g.display_height AS displayHeight, + g.display_source AS displaySource, g.thumbnail_url AS thumbnailUrl, g.like_count AS likeCount, g.is_visible AS visible, @@ -100,6 +109,9 @@ public interface GamesMapper { g.creator_note AS creatorNote, g.git_url AS gitUrl, g.webgl_path AS webglPath, + g.display_width AS displayWidth, + g.display_height AS displayHeight, + g.display_source AS displaySource, g.thumbnail_url AS thumbnailUrl, g.like_count AS likeCount, g.is_visible AS visible, @@ -122,6 +134,9 @@ public interface GamesMapper { creator_note, git_url, webgl_path, + display_width, + display_height, + display_source, thumbnail_url, is_visible, sort_order @@ -131,6 +146,9 @@ public interface GamesMapper { #{creatorNote}, #{gitUrl}, #{webglPath}, + #{displayWidth}, + #{displayHeight}, + #{displaySource}, #{thumbnailUrl}, #{visible}, #{sortOrder} @@ -154,6 +172,9 @@ public interface GamesMapper { creator_note = #{creatorNote}, git_url = #{gitUrl}, webgl_path = #{webglPath}, + display_width = #{displayWidth}, + display_height = #{displayHeight}, + display_source = #{displaySource}, thumbnail_url = #{thumbnailUrl}, is_visible = #{visible}, sort_order = #{sortOrder}, @@ -204,6 +225,7 @@ public interface GamesMapper { SELECT g.id, g.user_id AS userId, g.name, u.display_name AS creator, g.creator_note AS creatorNote, g.git_url AS gitUrl, g.webgl_path AS webglPath, g.thumbnail_url AS thumbnailUrl, g.like_count AS likeCount, g.is_visible AS visible, + g.display_width AS displayWidth, g.display_height AS displayHeight, g.display_source AS displaySource, g.sort_order AS sortOrder, g.created_at AS createdAt, g.updated_at AS updatedAt, g.view_count AS viewCount, grs.avg_rating AS "avgRating", @@ -271,6 +293,9 @@ public interface GamesMapper { g.creator_note AS creatorNote, g.git_url AS gitUrl, g.webgl_path AS webglPath, + g.display_width AS displayWidth, + g.display_height AS displayHeight, + g.display_source AS displaySource, g.thumbnail_url AS thumbnailUrl, g.like_count AS likeCount, g.is_visible AS visible, @@ -308,6 +333,9 @@ public interface GamesMapper { g.creator_note AS creatorNote, g.git_url AS gitUrl, g.webgl_path AS webglPath, + g.display_width AS displayWidth, + g.display_height AS displayHeight, + g.display_source AS displaySource, g.thumbnail_url AS thumbnailUrl, g.like_count AS likeCount, g.is_visible AS visible, diff --git a/src/main/java/com/pandoli365/bibimbap/util/WebglDisplayMetadata.java b/src/main/java/com/pandoli365/bibimbap/util/WebglDisplayMetadata.java new file mode 100644 index 0000000..1aa8104 --- /dev/null +++ b/src/main/java/com/pandoli365/bibimbap/util/WebglDisplayMetadata.java @@ -0,0 +1,131 @@ +package com.pandoli365.bibimbap.util; + +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.jsoup.Jsoup; +import org.jsoup.nodes.Document; +import org.jsoup.nodes.Element; + +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.LinkOption; +import java.nio.file.Path; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +/** Declared build dimensions, obtained without executing uploaded code. */ +public record WebglDisplayMetadata(Integer width, Integer height, String source) { + private static final int HTML_LIMIT = 1024 * 1024; + private static final int JSON_LIMIT = 64 * 1024; + private static final ObjectMapper JSON = new ObjectMapper(); + private static final Pattern PIXELS = Pattern.compile("(?i)^([0-9]+)px(?:\\s*!important)?$"); + + public static WebglDisplayMetadata unknown() { + return new WebglDisplayMetadata(null, null, "unknown"); + } + + public static boolean valid(Integer width, Integer height) { + return width != null && height != null && width >= 1 && height >= 1 + && width <= 16384 && height <= 16384 + && (long) width <= (long) height * 32 && (long) height <= (long) width * 32; + } + + public boolean known() { return valid(width, height); } + + public static WebglDisplayMetadata detect(Path indexFile) { + if (indexFile == null) return unknown(); + try { + Path index = indexFile.toAbsolutePath().normalize(); + if (!Files.isRegularFile(index, LinkOption.NOFOLLOW_LINKS)) return unknown(); + index = index.toRealPath(); + Path parent = index.getParent(); + if (parent == null) return unknown(); + String html = boundedRead(index, HTML_LIMIT); + Path info = parent.resolve("build-info.json"); + try { + if (Files.isRegularFile(info, LinkOption.NOFOLLOW_LINKS) && info.toRealPath().getParent().equals(parent)) { + String text = boundedRead(info, JSON_LIMIT); + if (text != null) { + JsonNode node = JSON.readTree(text); + WebglDisplayMetadata metadata = pair(integer(node == null ? null : node.get("width")), + integer(node == null ? null : node.get("height")), "build-info"); + if (metadata.known()) return metadata; + } + } + } catch (IOException | RuntimeException ignored) { + // An optional manifest must not make a valid build fail to upload. + } + if (html == null) return unknown(); + Document document = Jsoup.parse(html); + Element canvas = document.selectFirst("canvas#unity-canvas"); + if (document.select("canvas#unity-canvas").size() > 1) return unknown(); + if (canvas == null && document.select("canvas").size() == 1) canvas = document.selectFirst("canvas"); + if (canvas == null) return unknown(); + WebglDisplayMetadata css = cssPair(canvas.attr("style")); + if (css.known()) return css; + Element container = canvas.parent(); + while (container != null && !"unity-container".equals(container.id())) container = container.parent(); + if (container != null) { + css = cssPair(container.attr("style")); + if (css.known()) return css; + } + // Only exact selectors are accepted; media queries and dynamic expressions are not evidence. + String selector = canvas.id().isBlank() ? "" : "#" + canvas.id(); + for (Element style : document.select("style")) { + String text = style.data().replaceAll("(?s)/\\*.*?\\*/", ""); + if (text.contains("@")) continue; + Matcher rule = Pattern.compile("([^{}]+)\\{([^{}]*)}").matcher(text); + while (rule.find()) { + String target = rule.group(1).trim(); + if ((!selector.isEmpty() && selector.equals(target)) + || (container != null && "#unity-container".equals(target))) { + css = cssPair(rule.group(2)); + if (css.known()) return css; + } + } + } + return pair(integer(canvas.attr("width")), integer(canvas.attr("height")), "canvas"); + } catch (IOException | RuntimeException ignored) { + return unknown(); + } + } + + private static String boundedRead(Path path, int limit) throws IOException { + if (!Files.isRegularFile(path, LinkOption.NOFOLLOW_LINKS) || Files.size(path) > limit) return null; + try (var input = Files.newInputStream(path)) { + byte[] bytes = input.readNBytes(limit + 1); + return bytes.length > limit ? null : new String(bytes, StandardCharsets.UTF_8); + } + } + + private static WebglDisplayMetadata cssPair(String style) { + Integer width = null; + Integer height = null; + for (String declaration : style.split(";")) { + String[] parts = declaration.split(":", 2); + if (parts.length != 2) continue; + String key = parts[0].trim().toLowerCase(java.util.Locale.ROOT); + Matcher value = PIXELS.matcher(parts[1].trim()); + Integer pixels = value.matches() ? integer(value.group(1)) : null; + if ("width".equals(key)) width = pixels; + if ("height".equals(key)) height = pixels; + } + return pair(width, height, "css"); + } + + private static Integer integer(JsonNode node) { + if (node == null || !(node.isIntegralNumber() || node.isTextual())) return null; + return integer(node.asText()); + } + + public static Integer integer(String text) { + if (text == null || !text.matches("[0-9]{1,5}")) return null; + try { return Integer.valueOf(text); } catch (NumberFormatException ignored) { return null; } + } + + private static WebglDisplayMetadata pair(Integer width, Integer height, String source) { + return valid(width, height) && !(width == 300 && height == 150) + ? new WebglDisplayMetadata(width, height, source) : unknown(); + } +} diff --git a/src/main/webapp/WEB-INF/views/game-detail.jsp b/src/main/webapp/WEB-INF/views/game-detail.jsp index 1d2cc63..23b9175 100644 --- a/src/main/webapp/WEB-INF/views/game-detail.jsp +++ b/src/main/webapp/WEB-INF/views/game-detail.jsp @@ -19,14 +19,22 @@ webglFrameSrc = ctx + webglFrameSrc; } String webglFrameSrcValue = HtmlUtils.htmlEscape(webglFrameSrc); + int displayWidth = request.getAttribute("webglDisplayWidth") instanceof Number ? ((Number) request.getAttribute("webglDisplayWidth")).intValue() : 16; + int displayHeight = request.getAttribute("webglDisplayHeight") instanceof Number ? ((Number) request.getAttribute("webglDisplayHeight")).intValue() : 9; + if (displayWidth < 1 || displayWidth > 16384 || displayHeight < 1 || displayHeight > 16384 || (double) displayWidth / displayHeight < 1.0 / 32 || (double) displayWidth / displayHeight > 32) { + displayWidth = 16; + displayHeight = 9; + } %> - + <%= gameNameValue %> — bibimbap + + "; + assertThat(detect(html)).isEqualTo(new WebglDisplayMetadata(960,600,"css")); + Files.writeString(root.resolve("build-info.json"), "{\"width\":\"800\",\"height\":800}"); + assertThat(detect(html)).isEqualTo(new WebglDisplayMetadata(800,800,"build-info")); + Files.writeString(root.resolve("build-info.json"), "malformed"); + assertThat(detect(html)).isEqualTo(new WebglDisplayMetadata(960,600,"css")); + } + + @Test void nestedEntryOnlyReadsItsAdjacentManifest() throws Exception { + Files.writeString(root.resolve("build-info.json"), "{\"width\":900,\"height\":900}"); + Path nested = Files.createDirectory(root.resolve("nested")); + Files.writeString(nested.resolve("index.html"), ""); + Files.writeString(nested.resolve("build-info.json"), "{\"width\":1200,\"height\":800}"); + assertThat(WebglDisplayMetadata.detect(nested.resolve("index.html"))) + .isEqualTo(new WebglDisplayMetadata(1200,800,"build-info")); + } + + @Test void dynamicScriptAmbiguityAndBrowserDefaultsDoNotInventDimensions() throws Exception { + for (String html : new String[]{"no metadata","", + "", "", + "", + ""}) { + assertThat(detect(html)).isEqualTo(WebglDisplayMetadata.unknown()); + } + } + + @Test void invalidManifestFallsThroughAndBoundsAreEnforced() throws Exception { + for (String json : new String[]{"{\"width\":1.2,\"height\":800}","{\"width\":20000,\"height\":800}", + "{\"width\":800}","{\"width\":1,\"height\":16384}","{\"width\":-1,\"height\":800}"}) { + Files.writeString(root.resolve("build-info.json"),json); + assertThat(detect("")) + .isEqualTo(new WebglDisplayMetadata(640,480,"canvas")); + } + assertThat(WebglDisplayMetadata.valid(16384,512)).isTrue(); + assertThat(WebglDisplayMetadata.valid(16384,511)).isFalse(); + } + + @Test void oversizeHtmlAndManifestAndSymlinksAreBounded() throws Exception { + assertThat(detect(" ".repeat(1024 * 1024 + 1))).isEqualTo(WebglDisplayMetadata.unknown()); + Files.writeString(root.resolve("build-info.json")," ".repeat(64 * 1024 + 1)); + assertThat(detect("")) + .isEqualTo(new WebglDisplayMetadata(800,600,"canvas")); + Files.delete(root.resolve("build-info.json")); + Path other = root.resolve("private.json"); + Files.writeString(other,"{\"width\":900,\"height\":900}"); + Files.createSymbolicLink(root.resolve("build-info.json"),other); + assertThat(detect("")) + .isEqualTo(new WebglDisplayMetadata(800,600,"canvas")); + Files.createSymbolicLink(root.resolve("alias.html"),root.resolve("index.html")); + assertThat(WebglDisplayMetadata.detect(root.resolve("alias.html"))).isEqualTo(WebglDisplayMetadata.unknown()); + } +} diff --git a/src/test/js/webgl-player.test.cjs b/src/test/js/webgl-player.test.cjs new file mode 100644 index 0000000..16438a2 --- /dev/null +++ b/src/test/js/webgl-player.test.cjs @@ -0,0 +1,194 @@ +const test = require('node:test'); +const assert = require('node:assert/strict'); +const { readFileSync } = require('node:fs'); +const path = require('node:path'); +const vm = require('node:vm'); +const { contain, mount } = require('../../main/webapp/js/webgl-player.js'); + +const viewports = [[320, 844], [1440, 900], [844, 390], [640, 300]]; +const builds = [[390, 844], [1280, 720], [800, 800]]; +test('every uploaded build fits both axes in every normal and expanded viewport', () => { + for (const [vw, vh] of viewports) for (const [rw, rh] of builds) { + for (const available of [[vw - 32, Math.min(vh * .7, 720)], [vw, vh - 64]]) { + const fitted = contain(...available, rw, rh); + assert.ok(fitted.width <= available[0] + 1e-8); + assert.ok(fitted.height <= available[1] + 1e-8); + assert.ok(Math.abs(fitted.width - fitted.height * rw / rh) < 1); + assert.ok(Math.abs(fitted.width - available[0]) < 1 || Math.abs(fitted.height - available[1]) < 1); + } + } +}); +test('portrait iframe uses build aspect rather than the former fixed landscape rectangle', () => { + const fitted = contain(1000, 630, 390, 844); + assert.equal(fitted.height, 630); + assert.ok(fitted.width < 300); + assert.ok(Math.abs(fitted.width / fitted.height - 390 / 844) < 1e-8); + // Baseline width 1000, height min(1000 * 9/16, 520) violates this ratio. + assert.ok(Math.abs(1000 / 520 - 390 / 844) > 1); +}); +test('SSR player ships the stored ratio and responsive stage without the old hard limit', () => { + const jsp = readFileSync(path.join(__dirname, '../../main/webapp/WEB-INF/views/game-detail.jsp'), 'utf8'); + const css = readFileSync(path.join(__dirname, '../../main/webapp/css/webgl-player.css'), 'utf8'); + assert.match(jsp, /data-display-width="<%= displayWidth %>"/); + assert.match(jsp, /data-display-height="<%= displayHeight %>"/); + assert.doesNotMatch(jsp, /max-height:\s*min\(70vh,\s*520px\)/); + assert.match(css, /aspect-ratio:\s*var\(--game-ratio\)/); + assert.match(css, /height:\s*min\(70dvh,\s*720px\)/); +}); +function harness(width = 390, height = 844) { + let doc; + function node() { + const events = {}, attrs = {}; + return { events, attrs, style: {}, isConnected: true, textContent: '', + addEventListener(name, callback) { (events[name] ||= []).push(callback); }, + dispatch(name, event = {}) { (events[name] || []).forEach(callback => callback(event)); }, + setAttribute(key, value) { attrs[key] = value; }, removeAttribute(key) { delete attrs[key]; }, + focus() { doc.activeElement = this; } + }; + } + doc = node(); doc.body = node(); doc.body.style.overflow = 'scroll'; + const prior = node(); doc.activeElement = prior; + const iframe = node(); iframe.src = 'https://assets.example/game/index.html'; iframe.gameState = { score: 123 }; iframe.loadCount = 1; + // Parent player must work across origins: reading game/canvas DOM is forbidden. + Object.defineProperty(iframe, 'contentDocument', { get() { throw new Error('Cross origin access'); } }); + Object.defineProperty(iframe, 'contentWindow', { get() { throw new Error('Cross origin access'); } }); + const stage = node(); stage.clientWidth = 1000; stage.clientHeight = 630; + stage.querySelector = selector => selector === 'iframe' ? iframe : null; + const expand = node(), fullscreen = node(), status = node(), element = node(); + element.dataset = { displayWidth: String(width), displayHeight: String(height) }; + const classes = new Set(); element.classList = { toggle(key, value) { if (value) classes.add(key); else classes.delete(key); }, contains(key) { return classes.has(key); } }; + const lookup = { '[data-player-stage]': stage, '[data-player-expand]': expand, '[data-player-fullscreen]': fullscreen, '[data-player-status]': status }; + element.querySelector = selector => lookup[selector]; + const win = node(); win.document = doc; win.visualViewport = node(); + const raf = []; win.requestAnimationFrame = callback => raf.push(callback); + let observer; + win.ResizeObserver = class { constructor(callback) { observer = callback; } observe(target) { assert.equal(target, stage); } }; + const flush = () => { while (raf.length) raf.shift()(); }; + doc.exitFullscreen = () => { doc.fullscreenElement = null; doc.dispatch('fullscreenchange'); return Promise.resolve(); }; + const controller = mount(element, win); flush(); + return { doc, prior, iframe, stage, expand, fullscreen, status, element, win, flush, controller, resize: () => observer() }; +} +test('resize and overlay preserve same iframe, game state and source; close restores scroll/focus', () => { + const h = harness(), frame = h.iframe, state = frame.gameState, source = frame.src; + assert.equal(parseFloat(frame.style.height), 630); + h.expand.dispatch('click'); h.flush(); + assert.equal(h.doc.body.style.overflow, 'hidden'); + assert.equal(h.element.attrs['aria-modal'], 'true'); + assert.equal(h.expand.attrs['aria-expanded'], 'true'); + h.stage.clientWidth = 300; h.stage.clientHeight = 240; + h.resize(); h.win.dispatch('resize'); h.win.visualViewport.dispatch('resize'); h.flush(); + assert.ok(parseFloat(frame.style.width) < 112); + h.doc.dispatch('keydown', { key: 'Escape' }); h.flush(); + assert.equal(h.doc.activeElement, h.prior); + assert.equal(h.doc.body.style.overflow, 'scroll'); + assert.equal(h.element.attrs['aria-modal'], undefined); + assert.equal(h.expand.attrs['aria-expanded'], 'false'); + assert.equal(h.stage.querySelector('iframe'), frame); + assert.equal(frame.src, source); assert.equal(frame.loadCount, 1); assert.equal(frame.gameState, state); + h.expand.dispatch('click'); h.expand.dispatch('click'); h.flush(); + assert.equal(h.doc.body.style.overflow, 'scroll'); +}); +test('successful fullscreen enters and exits without reload and restores focus', async () => { + const h = harness(1280, 720), frame = h.iframe; + h.element.requestFullscreen = () => { h.doc.fullscreenElement = h.element; h.doc.dispatch('fullscreenchange'); return Promise.resolve(); }; + h.fullscreen.dispatch('click'); await new Promise(resolve => setImmediate(resolve)); h.flush(); + assert.equal(h.fullscreen.attrs['aria-pressed'], 'true'); + assert.equal(h.doc.body.style.overflow, 'hidden'); + h.fullscreen.dispatch('click'); await new Promise(resolve => setImmediate(resolve)); h.flush(); + assert.equal(h.fullscreen.attrs['aria-pressed'], 'false'); + assert.equal(h.doc.body.style.overflow, 'scroll'); assert.equal(h.doc.activeElement, h.prior); + assert.equal(h.stage.querySelector('iframe'), frame); assert.equal(frame.loadCount, 1); +}); +test('unsupported and rejected fullscreen use dismissible overlay', async () => { + for (const rejection of [false, true]) { + const h = harness(800, 800); + if (rejection) h.element.requestFullscreen = () => Promise.reject(new Error('Denied')); + h.fullscreen.dispatch('click'); await new Promise(resolve => setImmediate(resolve)); h.flush(); + assert.equal(h.element.classList.contains('is-expanded'), true); + assert.equal(h.fullscreen.attrs['aria-pressed'], 'false'); + assert.match(h.status.textContent, /크게 보기/); + h.expand.dispatch('click'); h.flush(); + assert.equal(h.element.classList.contains('is-expanded'), false); + assert.equal(h.doc.body.style.overflow, 'scroll'); assert.equal(h.doc.activeElement, h.prior); + assert.equal(h.iframe.loadCount, 1); + } +}); +test('native fullscreen exit from overlay returns to overlay; Tab remains within player', async () => { + const h = harness(); h.expand.dispatch('click'); h.flush(); + h.element.requestFullscreen = () => { h.doc.fullscreenElement = h.element; h.doc.dispatch('fullscreenchange'); return Promise.resolve(); }; + h.fullscreen.dispatch('click'); await new Promise(resolve => setImmediate(resolve)); + await h.doc.exitFullscreen(); h.flush(); + assert.equal(h.expand.attrs['aria-expanded'], 'true'); assert.equal(h.doc.body.style.overflow, 'hidden'); + h.expand.focus(); let prevented = false; + h.doc.dispatch('keydown', { key: 'Tab', shiftKey: true, preventDefault() { prevented = true; } }); + assert.equal(prevented, true); assert.equal(h.doc.activeElement, h.iframe); + h.expand.dispatch('click'); h.flush(); assert.equal(h.doc.activeElement, h.prior); +}); +test('invalid reference metadata retains safe fallback rather than overflowing', () => { + const h = harness(-5, 0); + assert.ok(Math.abs(parseFloat(h.iframe.style.width) / parseFloat(h.iframe.style.height) - 16 / 9) < 1e-8); + assert.deepEqual(contain(0, 1, 16, 9), { width: 0, height: 0 }); +}); + +function registration() { + const events = {}, nodes = {}; + function node(id) { + return nodes[id] ||= { value: '', textContent: '', dataset: {}, style: {}, files: [], + addEventListener(name, fn) { (events[id + ':' + name] ||= []).push(fn); }, + dispatch(name, event = {}) { (events[id + ':' + name] || []).forEach(fn => fn(event)); }, + setCustomValidity(message) { this.validationMessage = message; }, removeAttribute() {} }; + } + const form = node('game-register-form'); form.action = '/game/new'; + form.getAttribute = () => 'false'; form.checkValidity = () => true; + const auto = node('auto'), custom = node('custom'); auto.value = 'auto'; custom.value = 'custom'; + let selected = auto; + form.querySelector = selector => selector.includes('displayMode') ? selected : null; + form.querySelectorAll = () => [auto, custom]; + const fetched = [], responses = [{ displayWidth: 1280, displayHeight: 720, displaySource: 'canvas' }, { displayWidth: 800, displayHeight: 800, displaySource: 'css' }, { displayWidth: null, displayHeight: null, displaySource: 'unknown' }]; + let uploadIndex = 0; + const context = { document: { getElementById: node }, window: { BibimbapModal: { alert() {} } }, + FormData: class { append() {} }, URLSearchParams, URL, Number, Promise, Error, Object, + fetch(url, options) { + fetched.push({ url, body: options.body }); + const data = url.includes('webgl-zip') ? { gameUuid: 'uuid-' + uploadIndex, webglPath: '/uploads/' + uploadIndex++ + '/index.html', ...responses.shift() } : { gameId: 7 }; + return Promise.resolve({ ok: true, json: () => Promise.resolve(data) }); + } + }; + node('game-name').value = 'uploaded game'; + const jsp = readFileSync(path.join(__dirname, '../../main/webapp/WEB-INF/views/game-register.jsp'), 'utf8'); + const script = jsp.match(/