opencode-reviewer 0.4.2 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +58 -2
- package/THIRD_PARTY_NOTICES.md +513 -0
- package/dist/tui.js +2033 -72
- package/package.json +3 -2
package/dist/tui.js
CHANGED
|
@@ -8,15 +8,15 @@ var __esm = (fn, res, err) => function __init() {
|
|
|
8
8
|
if (err) throw err[0];
|
|
9
9
|
try {
|
|
10
10
|
return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
|
|
11
|
-
} catch (
|
|
12
|
-
throw err = [
|
|
11
|
+
} catch (e2) {
|
|
12
|
+
throw err = [e2], e2;
|
|
13
13
|
}
|
|
14
14
|
};
|
|
15
15
|
var __commonJS = (cb, mod) => function __require() {
|
|
16
16
|
try {
|
|
17
17
|
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
|
18
|
-
} catch (
|
|
19
|
-
throw mod = 0,
|
|
18
|
+
} catch (e2) {
|
|
19
|
+
throw mod = 0, e2;
|
|
20
20
|
}
|
|
21
21
|
};
|
|
22
22
|
var __copyProps = (to, from, except, desc) => {
|
|
@@ -63,11 +63,20 @@ Describe effects concisely in desc, using short Markdown paragraphs, lists, **bo
|
|
|
63
63
|
}
|
|
64
64
|
});
|
|
65
65
|
|
|
66
|
+
// <define:__REVIEW_SOUNDS__>
|
|
67
|
+
var define_REVIEW_SOUNDS_default;
|
|
68
|
+
var init_define_REVIEW_SOUNDS = __esm({
|
|
69
|
+
"<define:__REVIEW_SOUNDS__>"() {
|
|
70
|
+
define_REVIEW_SOUNDS_default = { attention: { format: "mp3", data: "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TKpHboqp/+5TKqO3+zlMFBAgx/1UiVSVctVMQU1FMy4xMDBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//uSZO0CgulqPUBhHhJcq3eoDCPCT1mwsEEZPojqrVfIEArRVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUxBTUUzLjEwMFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVf/7kmRAj/AAAGkAAAAIAAANIAAAAQAAAaQAAAAgAAA0gAAABFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVMQU1FMy4xMDBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVX/+5JkQI/wAABpAAAACAAADSAAAAEAAAGkAAAAIAAANIAAAARVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVTEFNRTMuMTAwVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//uSZECP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUxBTUUzLjEwMFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVf/7kmRAj/AAAGkAAAAIAAANIAAAAQAAAaQAAAAgAAA0gAAABFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVU=" }, approved: { format: "mp3", data: "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qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqTEFNRTMuMTAwqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqg==" }, error: { format: "mp3", data: "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iDkw2FNDkO8xqacbnsMbrFM6Er3prdKy8l39126v/6vkf/9v/tVJU4DUHPTEDSyrQlNEJrtygaF0iEMqrjtZATXHaIF9Sqi7SH3ywKzhxdIC3hLRcJ3icPB1g8mUjtFWLwuz76ZSAwb41+i0eprJMsnuw11/Xwm5GPXLt5L//6v68ECy//tSxOYDy2yzGA5gxclmF+LBvJi5jmgFSASlcpmx3MIw5CLkXrVaQciqssnQV1IX7Mw+uKiO/VwT/5NQZDvTYKPM2TDpTnuyrq1fGMvqhcEsr9y87wX1dJbE6lqOdH85IyS4Z2u6e4U+3/6lDiTJ+gqRwVCEXRBAkU1NWFy5KPQklmzyUSYvZqbolJZ2s1v+o6YOXMmkcLZOWrTYIs3elnMjSYS29LfFm/93otjUQaCYdMOFZZgK3vWcmmQT0oWKPQnTYxqgzei/YDN4q1SLYvT/+1LE6YMKrLUcTWEBgYycokGmGWDJgIAY2jKBjWOrUllI1JqzHttYWucb/oChlNYesOq1Wrw1NS8Ic1+zMzeqms+k115wVUCoywyAqZH+GON+l1apsXHiX5Teu4dFpVNafKSKpUXG/Bf+/u+KTEFNRTMuMTAwqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqABa+zlMFDAg5Ds7fuxgoIEcjpoRmnyMirmRn+RmXyM///zUMDBo5Gf/7UsTrAwto6RINMMrBZRwiRYYY+DWQy//7LPP5UMmUMGBo6VD///kv6tQQJyMmWWl/zImWWVDaoZGoYKFCOhkwUMCDoZGrBQaVTEFNRTMuMTAwVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//tSxO6ADMS/Cgeww8FbHyCkMI+BVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVX/+1LE0APLjaLCQQR1AAAANIAAAARVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQ==" }, ended: { format: "mp3", data: "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idleoesYVkA60GsGoih0YJZ4Gn7ix4qPqKuqfWGq3HhkeVLAVwhcdK0B0t5Vx7EoAzUIy6oqp//VFVP///MqIqfRF5TKCBKQ7f//mKiqhyaoqp0VFVDs7GVEVPVPlMoJFI/on0VEUjs7Iq//zFDAwYJVTP/7UsSQggm1ow4HhEKBIKWhGFCKuEFNRTMuMTAwVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//tSxKODCPQC+wAEYAEHtJcIEAhwVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVU=" } };
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
|
|
66
74
|
// node_modules/shell-quote/quote.js
|
|
67
75
|
var require_quote = __commonJS({
|
|
68
76
|
"node_modules/shell-quote/quote.js"(exports, module) {
|
|
69
77
|
"use strict";
|
|
70
78
|
init_define_REVIEW_PROMPTS();
|
|
79
|
+
init_define_REVIEW_SOUNDS();
|
|
71
80
|
var OPS = (
|
|
72
81
|
/** @type {const} */
|
|
73
82
|
[
|
|
@@ -163,6 +172,7 @@ var require_parse = __commonJS({
|
|
|
163
172
|
"node_modules/shell-quote/parse.js"(exports, module) {
|
|
164
173
|
"use strict";
|
|
165
174
|
init_define_REVIEW_PROMPTS();
|
|
175
|
+
init_define_REVIEW_SOUNDS();
|
|
166
176
|
var CONTROL = (
|
|
167
177
|
/** @type {const} */
|
|
168
178
|
"(?:" + /** @type {const} */
|
|
@@ -531,6 +541,7 @@ var require_shell_quote = __commonJS({
|
|
|
531
541
|
"node_modules/shell-quote/index.js"(exports) {
|
|
532
542
|
"use strict";
|
|
533
543
|
init_define_REVIEW_PROMPTS();
|
|
544
|
+
init_define_REVIEW_SOUNDS();
|
|
534
545
|
exports.quote = require_quote();
|
|
535
546
|
exports.parse = require_parse();
|
|
536
547
|
}
|
|
@@ -538,6 +549,7 @@ var require_shell_quote = __commonJS({
|
|
|
538
549
|
|
|
539
550
|
// src/tui.tsx
|
|
540
551
|
init_define_REVIEW_PROMPTS();
|
|
552
|
+
init_define_REVIEW_SOUNDS();
|
|
541
553
|
import { createTextNode as _$createTextNode } from "@opentui/solid";
|
|
542
554
|
import { insertNode as _$insertNode } from "@opentui/solid";
|
|
543
555
|
import { use as _$use } from "@opentui/solid";
|
|
@@ -552,9 +564,29 @@ import { CliRenderEvents, CodeRenderable, RGBA, SyntaxStyle } from "@opentui/cor
|
|
|
552
564
|
|
|
553
565
|
// src/config.ts
|
|
554
566
|
init_define_REVIEW_PROMPTS();
|
|
567
|
+
init_define_REVIEW_SOUNDS();
|
|
568
|
+
import path2 from "node:path";
|
|
569
|
+
|
|
570
|
+
// src/notification-config.ts
|
|
571
|
+
init_define_REVIEW_PROMPTS();
|
|
572
|
+
init_define_REVIEW_SOUNDS();
|
|
555
573
|
import path from "node:path";
|
|
574
|
+
function parseNotificationConfig(options = {}) {
|
|
575
|
+
const boolean = (name) => {
|
|
576
|
+
const value = options[name] === void 0 ? true : options[name];
|
|
577
|
+
if (typeof value !== "boolean") throw new Error(`${name} must be a boolean`);
|
|
578
|
+
return value;
|
|
579
|
+
};
|
|
580
|
+
const directory = options.notificationSoundDirectory;
|
|
581
|
+
if (directory !== void 0 && (typeof directory !== "string" || !path.isAbsolute(directory) || directory.includes("\0") || directory.length > 4096)) {
|
|
582
|
+
throw new Error("notificationSoundDirectory must be an absolute sound-directory path");
|
|
583
|
+
}
|
|
584
|
+
return { notify: boolean("notify"), notifySound: boolean("notifySound"), notificationSoundDirectory: directory };
|
|
585
|
+
}
|
|
586
|
+
|
|
587
|
+
// src/config.ts
|
|
556
588
|
function parseConfig(options = {}) {
|
|
557
|
-
const keys = /* @__PURE__ */ new Set(["baseURL", "model", "apiKey", "apiKeyEnv", "instructions", "stream", "reviewBash", "reviewEdits", "reviewMcp", "reviewCustomTools", "reviewExternalDirectories", "autoApprove", "autoApproveDelaySeconds", "formatRetries", "timeoutMs", "maxFiles", "maxEvidenceBytes"]);
|
|
589
|
+
const keys = /* @__PURE__ */ new Set(["baseURL", "model", "apiKey", "apiKeyEnv", "instructions", "stream", "reviewBash", "reviewEdits", "reviewMcp", "reviewCustomTools", "reviewExternalDirectories", "autoApprove", "extraCareful", "autoApproveDelaySeconds", "formatRetries", "timeoutMs", "maxFiles", "maxEvidenceBytes", "notify", "notifySound", "notificationSoundDirectory"]);
|
|
558
590
|
for (const key of Object.keys(options)) if (!keys.has(key)) throw new Error(`Unknown opencode-reviewer setting: ${key}`);
|
|
559
591
|
const text = (name, optional = false) => {
|
|
560
592
|
const value = options[name];
|
|
@@ -586,10 +618,11 @@ function parseConfig(options = {}) {
|
|
|
586
618
|
const apiKeyEnv = text("apiKeyEnv", true);
|
|
587
619
|
if (apiKeyEnv && !/^[A-Za-z_][A-Za-z_0-9]*$/.test(apiKeyEnv)) throw new Error("apiKeyEnv must be an environment-variable name");
|
|
588
620
|
const instructions = text("instructions", true);
|
|
589
|
-
if (instructions && (!
|
|
621
|
+
if (instructions && (!path2.isAbsolute(instructions) || instructions.includes("\0"))) {
|
|
590
622
|
throw new Error("instructions must be an absolute prompt-directory path; inline instructions are no longer supported");
|
|
591
623
|
}
|
|
592
624
|
return {
|
|
625
|
+
...parseNotificationConfig(options),
|
|
593
626
|
baseURL: url.href.replace(/\/+$/, ""),
|
|
594
627
|
model: text("model"),
|
|
595
628
|
apiKeyEnv,
|
|
@@ -602,6 +635,7 @@ function parseConfig(options = {}) {
|
|
|
602
635
|
reviewCustomTools: boolean("reviewCustomTools", false),
|
|
603
636
|
reviewExternalDirectories: boolean("reviewExternalDirectories", false),
|
|
604
637
|
autoApprove: boolean("autoApprove", false),
|
|
638
|
+
extraCareful: boolean("extraCareful"),
|
|
605
639
|
autoApproveDelaySeconds: number("autoApproveDelaySeconds", 15, 0, 3600),
|
|
606
640
|
formatRetries: number("formatRetries", 1, 0, 100),
|
|
607
641
|
timeoutMs: number("timeoutMs", 3e4, 1, 36e5),
|
|
@@ -612,14 +646,17 @@ function parseConfig(options = {}) {
|
|
|
612
646
|
|
|
613
647
|
// src/context.ts
|
|
614
648
|
init_define_REVIEW_PROMPTS();
|
|
615
|
-
|
|
649
|
+
init_define_REVIEW_SOUNDS();
|
|
650
|
+
import path3 from "node:path";
|
|
616
651
|
|
|
617
652
|
// src/file-access.ts
|
|
618
653
|
init_define_REVIEW_PROMPTS();
|
|
654
|
+
init_define_REVIEW_SOUNDS();
|
|
619
655
|
import { open, realpath } from "node:fs/promises";
|
|
620
656
|
|
|
621
657
|
// src/deadline.ts
|
|
622
658
|
init_define_REVIEW_PROMPTS();
|
|
659
|
+
init_define_REVIEW_SOUNDS();
|
|
623
660
|
var states = /* @__PURE__ */ new WeakMap();
|
|
624
661
|
var DeadlineError = class extends Error {
|
|
625
662
|
constructor(stage) {
|
|
@@ -789,8 +826,8 @@ async function loadInvocation(request, reader2, signal) {
|
|
|
789
826
|
input: part.state.input,
|
|
790
827
|
linkage: { sessionID: request.sessionID, messageID: request.tool.messageID, callID: request.tool.callID },
|
|
791
828
|
location: {
|
|
792
|
-
instanceDirectory: typeof invocation?.cwd === "string" &&
|
|
793
|
-
instanceWorktree: typeof invocation?.root === "string" &&
|
|
829
|
+
instanceDirectory: typeof invocation?.cwd === "string" && path3.isAbsolute(invocation.cwd) ? invocation.cwd : null,
|
|
830
|
+
instanceWorktree: typeof invocation?.root === "string" && path3.isAbsolute(invocation.root) ? invocation.root : null
|
|
794
831
|
}
|
|
795
832
|
};
|
|
796
833
|
}
|
|
@@ -854,7 +891,7 @@ async function loadContext(request, reader2, signal, scope = fileAccess.scope(si
|
|
|
854
891
|
const { instanceDirectory, instanceWorktree } = invocation.location;
|
|
855
892
|
const invalidWorkdir = workdir !== void 0 && typeof workdir !== "string";
|
|
856
893
|
const requestedWorkdir = typeof workdir === "string" && workdir ? workdir : null;
|
|
857
|
-
const cwd = invalidWorkdir ? null : requestedWorkdir &&
|
|
894
|
+
const cwd = invalidWorkdir ? null : requestedWorkdir && path3.isAbsolute(requestedWorkdir) ? requestedWorkdir : instanceDirectory ? path3.resolve(instanceDirectory, requestedWorkdir ?? ".") : null;
|
|
858
895
|
if (!instanceDirectory) limitations.push("Execution instance directory unavailable; the session's starting directory is not substituted for it.");
|
|
859
896
|
if (!instanceWorktree) limitations.push("Execution instance worktree unavailable.");
|
|
860
897
|
if (invalidWorkdir) limitations.push("Supplied tool.workdir is not a string; execution directory is unknown.");
|
|
@@ -863,7 +900,7 @@ async function loadContext(request, reader2, signal, scope = fileAccess.scope(si
|
|
|
863
900
|
requestedWorkdir,
|
|
864
901
|
instanceDirectory,
|
|
865
902
|
instanceWorktree,
|
|
866
|
-
cwdSource: invalidWorkdir ? "unavailable" : requestedWorkdir &&
|
|
903
|
+
cwdSource: invalidWorkdir ? "unavailable" : requestedWorkdir && path3.isAbsolute(requestedWorkdir) ? "absolute tool.workdir" : instanceDirectory ? requestedWorkdir ? "tool.workdir relative to assistant.path.cwd" : "assistant.path.cwd" : "unavailable",
|
|
867
904
|
canonicalCwd: null
|
|
868
905
|
};
|
|
869
906
|
const conversation = await loadConversationContext(request, reader2, signal);
|
|
@@ -976,16 +1013,19 @@ async function loadConversationContext(request, reader2, signal) {
|
|
|
976
1013
|
|
|
977
1014
|
// src/controller.ts
|
|
978
1015
|
init_define_REVIEW_PROMPTS();
|
|
1016
|
+
init_define_REVIEW_SOUNDS();
|
|
979
1017
|
import { isDeepStrictEqual } from "node:util";
|
|
980
1018
|
|
|
981
1019
|
// src/reviewer.ts
|
|
982
1020
|
init_define_REVIEW_PROMPTS();
|
|
1021
|
+
init_define_REVIEW_SOUNDS();
|
|
983
1022
|
|
|
984
1023
|
// src/prompts.ts
|
|
985
1024
|
init_define_REVIEW_PROMPTS();
|
|
1025
|
+
init_define_REVIEW_SOUNDS();
|
|
986
1026
|
import { constants, readFileSync } from "node:fs";
|
|
987
1027
|
import { lstat, open as open2, readdir } from "node:fs/promises";
|
|
988
|
-
import
|
|
1028
|
+
import path4 from "node:path";
|
|
989
1029
|
|
|
990
1030
|
// src/prompt-files.json
|
|
991
1031
|
var prompt_files_default = {
|
|
@@ -1021,7 +1061,7 @@ function correctionPrompt(validationError) {
|
|
|
1021
1061
|
async function loadPrompts(directory, signal) {
|
|
1022
1062
|
signal.throwIfAborted();
|
|
1023
1063
|
if (directory === void 0) return BUILTIN_PROMPTS;
|
|
1024
|
-
if (!
|
|
1064
|
+
if (!path4.isAbsolute(directory) || directory.includes("\0")) throw new Error("instructions must be an absolute prompt-directory path");
|
|
1025
1065
|
let entries;
|
|
1026
1066
|
try {
|
|
1027
1067
|
entries = await readdir(directory);
|
|
@@ -1035,16 +1075,16 @@ async function loadPrompts(directory, signal) {
|
|
|
1035
1075
|
if (legacy.length) throw new Error(`Correction contracts are fixed; remove legacy override files: ${legacy.map((name) => JSON.stringify(name)).join(", ")}`);
|
|
1036
1076
|
const result = { ...BUILTIN_PROMPTS };
|
|
1037
1077
|
for (const kind of kinds) {
|
|
1038
|
-
const instructions = await override(directory,
|
|
1078
|
+
const instructions = await override(directory, path4.basename(prompt_files_default[kind]), signal) ?? BUILTIN_PROMPTS[kind].instructions;
|
|
1039
1079
|
result[kind] = Object.freeze({ instructions });
|
|
1040
1080
|
}
|
|
1041
|
-
result.extraCareful = await override(directory,
|
|
1081
|
+
result.extraCareful = await override(directory, path4.basename(prompt_files_default.extraCareful), signal) ?? result.extraCareful;
|
|
1042
1082
|
signal.throwIfAborted();
|
|
1043
1083
|
return Object.freeze(result);
|
|
1044
1084
|
}
|
|
1045
1085
|
async function override(directory, name, signal) {
|
|
1046
1086
|
signal.throwIfAborted();
|
|
1047
|
-
const filename =
|
|
1087
|
+
const filename = path4.join(directory, name);
|
|
1048
1088
|
try {
|
|
1049
1089
|
await lstat(filename);
|
|
1050
1090
|
} catch (error) {
|
|
@@ -1087,6 +1127,7 @@ async function override(directory, name, signal) {
|
|
|
1087
1127
|
|
|
1088
1128
|
// src/usage.ts
|
|
1089
1129
|
init_define_REVIEW_PROMPTS();
|
|
1130
|
+
init_define_REVIEW_SOUNDS();
|
|
1090
1131
|
var record = (value) => value && typeof value === "object" && !Array.isArray(value) ? value : {};
|
|
1091
1132
|
var count = (value) => typeof value === "number" && Number.isSafeInteger(value) && value >= 0;
|
|
1092
1133
|
var rate = (value) => typeof value === "number" && Number.isFinite(value) && value >= 0;
|
|
@@ -1183,6 +1224,7 @@ function usageText(usage) {
|
|
|
1183
1224
|
|
|
1184
1225
|
// src/sse.ts
|
|
1185
1226
|
init_define_REVIEW_PROMPTS();
|
|
1227
|
+
init_define_REVIEW_SOUNDS();
|
|
1186
1228
|
var MAX_SSE_EVENT_BYTES = 65536;
|
|
1187
1229
|
var MAX_SSE_WIRE_BYTES = 4 * 1024 * 1024;
|
|
1188
1230
|
var MAX_SSE_EVENTS = 65536;
|
|
@@ -1266,6 +1308,7 @@ var SSEParser = class {
|
|
|
1266
1308
|
|
|
1267
1309
|
// src/streaming-assessment.ts
|
|
1268
1310
|
init_define_REVIEW_PROMPTS();
|
|
1311
|
+
init_define_REVIEW_SOUNDS();
|
|
1269
1312
|
var MAX_ASSESSMENT_BYTES = 65536;
|
|
1270
1313
|
var AssessmentFormatError = class extends Error {
|
|
1271
1314
|
};
|
|
@@ -1292,21 +1335,21 @@ var StreamingAssessment = class {
|
|
|
1292
1335
|
preview() {
|
|
1293
1336
|
return this.error ? void 0 : { ...this.value };
|
|
1294
1337
|
}
|
|
1295
|
-
push(
|
|
1296
|
-
for (let i = 0; i <
|
|
1297
|
-
const code =
|
|
1338
|
+
push(chunk2) {
|
|
1339
|
+
for (let i = 0; i < chunk2.length; i++) {
|
|
1340
|
+
const code = chunk2.charCodeAt(i);
|
|
1298
1341
|
this.bytes += this.byteHigh && code >= 56320 && code <= 57343 ? 1 : code < 128 ? 1 : code < 2048 ? 2 : 3;
|
|
1299
1342
|
this.byteHigh = code >= 55296 && code <= 56319;
|
|
1300
1343
|
if (this.bytes > MAX_ASSESSMENT_BYTES) throw new Error("Reviewer assessment exceeds 64 KiB");
|
|
1301
1344
|
if (this.error) continue;
|
|
1302
1345
|
try {
|
|
1303
|
-
this.character(
|
|
1346
|
+
this.character(chunk2[i]);
|
|
1304
1347
|
} catch (error) {
|
|
1305
1348
|
if (!(error instanceof AssessmentFormatError)) throw error;
|
|
1306
1349
|
this.error = error;
|
|
1307
1350
|
}
|
|
1308
1351
|
}
|
|
1309
|
-
if (
|
|
1352
|
+
if (chunk2) this.parts.push(chunk2);
|
|
1310
1353
|
}
|
|
1311
1354
|
finish() {
|
|
1312
1355
|
if (this.error) throw this.error;
|
|
@@ -1426,6 +1469,7 @@ var StreamingAssessment = class {
|
|
|
1426
1469
|
|
|
1427
1470
|
// src/diagnostics.ts
|
|
1428
1471
|
init_define_REVIEW_PROMPTS();
|
|
1472
|
+
init_define_REVIEW_SOUNDS();
|
|
1429
1473
|
function emitDiagnostic(observer, event) {
|
|
1430
1474
|
try {
|
|
1431
1475
|
const result = observer(Object.freeze({
|
|
@@ -1637,7 +1681,7 @@ async function review(evidence, config, signal, fetcher = fetch, environment = p
|
|
|
1637
1681
|
if (config.apiKeyEnv && !key) throw new Error(`API key environment variable ${config.apiKeyEnv} is unset or empty`);
|
|
1638
1682
|
const prompt2 = prompts[evidence.kind];
|
|
1639
1683
|
const messages = [
|
|
1640
|
-
{ role: "system", content: [prompt2.instructions, ...config.autoApprove ? [prompts.extraCareful] : [], CONTRACT].join("\n\n") },
|
|
1684
|
+
{ role: "system", content: [prompt2.instructions, ...config.autoApprove && config.extraCareful ? [prompts.extraCareful] : [], CONTRACT].join("\n\n") },
|
|
1641
1685
|
{ role: "user", content: JSON.stringify(evidence) }
|
|
1642
1686
|
];
|
|
1643
1687
|
let usage;
|
|
@@ -1738,6 +1782,7 @@ async function review(evidence, config, signal, fetcher = fetch, environment = p
|
|
|
1738
1782
|
|
|
1739
1783
|
// src/classification.ts
|
|
1740
1784
|
init_define_REVIEW_PROMPTS();
|
|
1785
|
+
init_define_REVIEW_SOUNDS();
|
|
1741
1786
|
var nativeTools = /* @__PURE__ */ new Set(["invalid", "question", "bash", "read", "glob", "grep", "edit", "write", "task", "webfetch", "todowrite", "websearch", "skill", "apply_patch", "execute", "lsp", "plan_exit"]);
|
|
1742
1787
|
var resources = /* @__PURE__ */ new Set(["list_mcp_resources", "list_mcp_resource_templates", "read_mcp_resource"]);
|
|
1743
1788
|
var sanitize = (name) => name.replace(/[^a-zA-Z0-9_-]/g, "_");
|
|
@@ -1785,6 +1830,7 @@ function classify(request, invocation, ids, servers) {
|
|
|
1785
1830
|
|
|
1786
1831
|
// src/appearance.ts
|
|
1787
1832
|
init_define_REVIEW_PROMPTS();
|
|
1833
|
+
init_define_REVIEW_SOUNDS();
|
|
1788
1834
|
function reviewSyntaxStyles(theme) {
|
|
1789
1835
|
const styles = { default: { fg: theme.text } };
|
|
1790
1836
|
const add2 = (scopes, style) => {
|
|
@@ -1861,14 +1907,16 @@ var clock = {
|
|
|
1861
1907
|
return () => clearTimeout(timer);
|
|
1862
1908
|
}
|
|
1863
1909
|
};
|
|
1910
|
+
var permissionResolved = Object.freeze({ reason: "permission resolved" });
|
|
1864
1911
|
var Controller = class {
|
|
1865
|
-
constructor(evaluate, changed, options = { reviewBash: true, reviewEdits: true }, approval, time = clock, modes) {
|
|
1912
|
+
constructor(evaluate, changed, options = { reviewBash: true, reviewEdits: true }, approval, time = clock, modes, approvalObserver) {
|
|
1866
1913
|
this.evaluate = evaluate;
|
|
1867
1914
|
this.changed = changed;
|
|
1868
1915
|
this.options = options;
|
|
1869
1916
|
this.approval = approval;
|
|
1870
1917
|
this.time = time;
|
|
1871
1918
|
this.modes = modes;
|
|
1919
|
+
this.approvalObserver = approvalObserver;
|
|
1872
1920
|
}
|
|
1873
1921
|
evaluate;
|
|
1874
1922
|
changed;
|
|
@@ -1876,6 +1924,7 @@ var Controller = class {
|
|
|
1876
1924
|
approval;
|
|
1877
1925
|
time;
|
|
1878
1926
|
modes;
|
|
1927
|
+
approvalObserver;
|
|
1879
1928
|
entries = /* @__PURE__ */ new Map();
|
|
1880
1929
|
stopped = false;
|
|
1881
1930
|
version = 0;
|
|
@@ -1883,6 +1932,8 @@ var Controller = class {
|
|
|
1883
1932
|
modeChanges = /* @__PURE__ */ new Map();
|
|
1884
1933
|
manual = /* @__PURE__ */ new Map();
|
|
1885
1934
|
workers = /* @__PURE__ */ new Set();
|
|
1935
|
+
acknowledgements = /* @__PURE__ */ new Map();
|
|
1936
|
+
approvalWorkers = /* @__PURE__ */ new Set();
|
|
1886
1937
|
get revision() {
|
|
1887
1938
|
return this.version;
|
|
1888
1939
|
}
|
|
@@ -1892,6 +1943,14 @@ var Controller = class {
|
|
|
1892
1943
|
publish() {
|
|
1893
1944
|
if (!this.stopped) this.changed(this.views);
|
|
1894
1945
|
}
|
|
1946
|
+
approvalFact(fact) {
|
|
1947
|
+
if (this.stopped) return;
|
|
1948
|
+
try {
|
|
1949
|
+
void Promise.resolve(this.approvalObserver?.(fact)).catch(() => {
|
|
1950
|
+
});
|
|
1951
|
+
} catch {
|
|
1952
|
+
}
|
|
1953
|
+
}
|
|
1895
1954
|
/** Local state is already switched; invalidate snapshots before any publication. */
|
|
1896
1955
|
modeChanged(root) {
|
|
1897
1956
|
if (this.stopped) return;
|
|
@@ -1920,8 +1979,9 @@ var Controller = class {
|
|
|
1920
1979
|
}
|
|
1921
1980
|
const entry = id ? this.entries.get(id) : void 0;
|
|
1922
1981
|
if (!entry || entry.view.autoApproval || !this.eligible(entry)) return;
|
|
1923
|
-
|
|
1924
|
-
entry.
|
|
1982
|
+
const seconds = this.options.autoApproveDelaySeconds ?? 15;
|
|
1983
|
+
entry.deadline = this.time.now() + (seconds + (seconds > 0 ? 1 : 0)) * 1e3;
|
|
1984
|
+
entry.view = { ...entry.view, autoApproval: { status: "countdown", seconds } };
|
|
1925
1985
|
this.publish();
|
|
1926
1986
|
this.schedule(entry);
|
|
1927
1987
|
}
|
|
@@ -2005,17 +2065,22 @@ var Controller = class {
|
|
|
2005
2065
|
this.cancelAutoApproval(entry.view.request.id);
|
|
2006
2066
|
return;
|
|
2007
2067
|
}
|
|
2008
|
-
const seconds = Math.
|
|
2068
|
+
const seconds = Math.min(
|
|
2069
|
+
this.options.autoApproveDelaySeconds ?? 15,
|
|
2070
|
+
Math.max(0, Math.ceil((entry.deadline - this.time.now()) / 1e3))
|
|
2071
|
+
);
|
|
2009
2072
|
if (seconds === 0) {
|
|
2010
|
-
void this.approveNow(entry.view.request.id);
|
|
2073
|
+
void this.approveNow(entry.view.request.id, true);
|
|
2011
2074
|
return;
|
|
2012
2075
|
}
|
|
2013
|
-
entry.view
|
|
2014
|
-
|
|
2076
|
+
if (entry.view.autoApproval.seconds !== seconds) {
|
|
2077
|
+
entry.view = { ...entry.view, autoApproval: { status: "countdown", seconds } };
|
|
2078
|
+
this.publish();
|
|
2079
|
+
}
|
|
2015
2080
|
this.schedule(entry);
|
|
2016
2081
|
});
|
|
2017
2082
|
}
|
|
2018
|
-
async approveNow(id) {
|
|
2083
|
+
async approveNow(id, automatic = false) {
|
|
2019
2084
|
const entry = this.entries.get(id);
|
|
2020
2085
|
if (!entry || entry.view.autoApproval?.status !== "countdown" || !this.approval) return;
|
|
2021
2086
|
if (!this.eligible(entry)) {
|
|
@@ -2027,6 +2092,7 @@ var Controller = class {
|
|
|
2027
2092
|
entry.approvalAbort = new AbortController();
|
|
2028
2093
|
entry.view = { ...entry.view, autoApproval: { status: "checking" } };
|
|
2029
2094
|
this.publish();
|
|
2095
|
+
let dispatched = false;
|
|
2030
2096
|
try {
|
|
2031
2097
|
await withDeadline(AbortSignal.any([entry.abort.signal, entry.approvalAbort.signal]), 5e3, async (signal) => {
|
|
2032
2098
|
const revision = this.version;
|
|
@@ -2058,7 +2124,30 @@ var Controller = class {
|
|
|
2058
2124
|
return;
|
|
2059
2125
|
}
|
|
2060
2126
|
this.manual.set(id, "failed");
|
|
2061
|
-
|
|
2127
|
+
const remaining = remainingTime(signal);
|
|
2128
|
+
this.approvalFact({ type: "dispatched", request: entry.view.request, automatic });
|
|
2129
|
+
signal.throwIfAborted();
|
|
2130
|
+
dispatched = true;
|
|
2131
|
+
const acknowledgement = new AbortController();
|
|
2132
|
+
this.acknowledgements.set(acknowledgement, entry.view.request);
|
|
2133
|
+
const abort = () => {
|
|
2134
|
+
if (signal.reason !== permissionResolved) acknowledgement.abort(signal.reason);
|
|
2135
|
+
};
|
|
2136
|
+
signal.addEventListener("abort", abort, { once: true });
|
|
2137
|
+
if (signal.aborted) abort();
|
|
2138
|
+
const write = withDeadline(acknowledgement.signal, remaining, async (bounded) => {
|
|
2139
|
+
try {
|
|
2140
|
+
await this.approval.once(entry.view.request, bounded);
|
|
2141
|
+
if (!bounded.aborted) this.approvalFact({ type: "confirmed", request: entry.view.request, automatic });
|
|
2142
|
+
} finally {
|
|
2143
|
+
this.acknowledgements.delete(acknowledgement);
|
|
2144
|
+
signal.removeEventListener("abort", abort);
|
|
2145
|
+
this.approvalFact({ type: "settled", request: entry.view.request, automatic });
|
|
2146
|
+
}
|
|
2147
|
+
});
|
|
2148
|
+
this.approvalWorkers.add(write);
|
|
2149
|
+
void write.then(() => this.approvalWorkers.delete(write), () => this.approvalWorkers.delete(write));
|
|
2150
|
+
await write;
|
|
2062
2151
|
signal.throwIfAborted();
|
|
2063
2152
|
this.replied(id);
|
|
2064
2153
|
});
|
|
@@ -2073,6 +2162,8 @@ var Controller = class {
|
|
|
2073
2162
|
this.reconcile(pending, revision);
|
|
2074
2163
|
} catch {
|
|
2075
2164
|
}
|
|
2165
|
+
} finally {
|
|
2166
|
+
if (!dispatched) this.approvalFact({ type: "settled", request: entry.view.request, automatic });
|
|
2076
2167
|
}
|
|
2077
2168
|
}
|
|
2078
2169
|
asked(request) {
|
|
@@ -2138,20 +2229,21 @@ var Controller = class {
|
|
|
2138
2229
|
this.workers.add(worker);
|
|
2139
2230
|
void worker.finally(() => this.workers.delete(worker));
|
|
2140
2231
|
}
|
|
2141
|
-
replied(id) {
|
|
2232
|
+
replied(id, resolved = true) {
|
|
2142
2233
|
if (this.stopped) return;
|
|
2143
2234
|
this.version++;
|
|
2144
2235
|
this.entries.get(id)?.cancelTimer?.();
|
|
2145
2236
|
const entry = this.entries.get(id);
|
|
2146
2237
|
if (entry) this.clearProgress(entry);
|
|
2147
|
-
this.entries.get(id)?.abort.abort();
|
|
2238
|
+
this.entries.get(id)?.abort.abort(resolved ? permissionResolved : void 0);
|
|
2148
2239
|
this.manual.delete(id);
|
|
2149
2240
|
if (this.entries.delete(id)) this.publish();
|
|
2150
2241
|
}
|
|
2151
2242
|
deleted(sessionID) {
|
|
2152
2243
|
if (this.stopped) return;
|
|
2153
2244
|
this.version++;
|
|
2154
|
-
for (const
|
|
2245
|
+
for (const [abort, request] of this.acknowledgements) if (request.sessionID === sessionID) abort.abort();
|
|
2246
|
+
for (const entry of this.entries.values()) if (entry.view.request.sessionID === sessionID) this.replied(entry.view.request.id, false);
|
|
2155
2247
|
}
|
|
2156
2248
|
/** Reject stale HTTP snapshots if permission events arrived during the request. */
|
|
2157
2249
|
reconcile(requests, revision) {
|
|
@@ -2160,6 +2252,10 @@ var Controller = class {
|
|
|
2160
2252
|
for (const id of this.entries.keys()) if (!ids.has(id)) this.replied(id);
|
|
2161
2253
|
for (const request of requests) {
|
|
2162
2254
|
const entry = this.entries.get(request.id);
|
|
2255
|
+
if (entry?.view.autoApproval?.status === "failed" && !entry.view.approvalPendingConfirmed) {
|
|
2256
|
+
entry.view = { ...entry.view, approvalPendingConfirmed: true };
|
|
2257
|
+
this.publish();
|
|
2258
|
+
}
|
|
2163
2259
|
if (entry && !entry.root) entry.gateRevision = this.version;
|
|
2164
2260
|
if (entry?.view.status === "suspended" && (entry.suspension === "unavailable" || !entry.root || this.modes?.enabled(entry.root))) {
|
|
2165
2261
|
this.entries.delete(request.id);
|
|
@@ -2169,6 +2265,7 @@ var Controller = class {
|
|
|
2169
2265
|
}
|
|
2170
2266
|
async dispose() {
|
|
2171
2267
|
this.stopped = true;
|
|
2268
|
+
for (const abort of this.acknowledgements.keys()) abort.abort();
|
|
2172
2269
|
for (const entry of this.entries.values()) {
|
|
2173
2270
|
entry.cancelTimer?.();
|
|
2174
2271
|
this.clearProgress(entry);
|
|
@@ -2176,6 +2273,7 @@ var Controller = class {
|
|
|
2176
2273
|
}
|
|
2177
2274
|
this.entries.clear();
|
|
2178
2275
|
await Promise.allSettled([...this.workers]);
|
|
2276
|
+
await Promise.allSettled([...this.approvalWorkers]);
|
|
2179
2277
|
this.manual.clear();
|
|
2180
2278
|
}
|
|
2181
2279
|
};
|
|
@@ -2200,15 +2298,18 @@ function displayText(text) {
|
|
|
2200
2298
|
|
|
2201
2299
|
// src/evaluate.ts
|
|
2202
2300
|
init_define_REVIEW_PROMPTS();
|
|
2301
|
+
init_define_REVIEW_SOUNDS();
|
|
2203
2302
|
|
|
2204
2303
|
// src/evidence.ts
|
|
2205
2304
|
init_define_REVIEW_PROMPTS();
|
|
2206
|
-
|
|
2305
|
+
init_define_REVIEW_SOUNDS();
|
|
2306
|
+
import path7 from "node:path";
|
|
2207
2307
|
import { constants as constants2 } from "node:fs";
|
|
2208
2308
|
|
|
2209
2309
|
// src/files.ts
|
|
2210
2310
|
init_define_REVIEW_PROMPTS();
|
|
2211
|
-
|
|
2311
|
+
init_define_REVIEW_SOUNDS();
|
|
2312
|
+
import path5 from "node:path";
|
|
2212
2313
|
var FileLimit = class {
|
|
2213
2314
|
constructor(maxFiles, scope) {
|
|
2214
2315
|
this.maxFiles = maxFiles;
|
|
@@ -2236,8 +2337,8 @@ var FileLimit = class {
|
|
|
2236
2337
|
if (result.path) return result.path;
|
|
2237
2338
|
let reason = result.reason;
|
|
2238
2339
|
if (result.reason === "ENOENT") {
|
|
2239
|
-
const parent = await scope.canonical(
|
|
2240
|
-
if (parent.path) return `${parent.path}/${
|
|
2340
|
+
const parent = await scope.canonical(path5.dirname(filename));
|
|
2341
|
+
if (parent.path) return `${parent.path}/${path5.basename(filename)}`;
|
|
2241
2342
|
reason = parent.reason;
|
|
2242
2343
|
}
|
|
2243
2344
|
this.limitations.add(`Canonical path unavailable for ${JSON.stringify(filename)} (${reason}); unresolved aliases count separately.`);
|
|
@@ -2325,8 +2426,9 @@ function diffDelta(diff, signal, budget = new DiffBudget()) {
|
|
|
2325
2426
|
|
|
2326
2427
|
// src/shell-discovery.ts
|
|
2327
2428
|
init_define_REVIEW_PROMPTS();
|
|
2429
|
+
init_define_REVIEW_SOUNDS();
|
|
2328
2430
|
var import_shell_quote = __toESM(require_shell_quote(), 1);
|
|
2329
|
-
import
|
|
2431
|
+
import path6 from "node:path";
|
|
2330
2432
|
var VARIABLE = "\0UNRESOLVED_VARIABLE\0";
|
|
2331
2433
|
var python = /^python(?:[23](?:\.\d+)*)?$/;
|
|
2332
2434
|
var shell = /^(?:ba|da|k|z)?sh$/;
|
|
@@ -2623,11 +2725,11 @@ function builtin(executable, args, state, next) {
|
|
|
2623
2725
|
if (executable === "cd") {
|
|
2624
2726
|
if (args.peek() === "--") args.take();
|
|
2625
2727
|
const target = args.peek();
|
|
2626
|
-
const searchesCdpath = target && !
|
|
2728
|
+
const searchesCdpath = target && !path6.isAbsolute(target) && !/^\.\.?(?:\/|$)/.test(target);
|
|
2627
2729
|
if (state.previousOperator === "|" || next === "|") {
|
|
2628
2730
|
state.invalidateCwd("Pipeline directory changes do not establish a reliable cwd for later script targets.");
|
|
2629
2731
|
} else if (args.length === 1 && target && !target.startsWith("-") && literal(target) && !state.uncertainWord && !(state.explicitCdpath && searchesCdpath) && next === "&&" && state.cwd) {
|
|
2630
|
-
state.cwd =
|
|
2732
|
+
state.cwd = path6.resolve(state.cwd, target);
|
|
2631
2733
|
state.conditionalCwd = true;
|
|
2632
2734
|
} else {
|
|
2633
2735
|
state.invalidateCwd("Working directory after cd is unresolved; relative script targets will not be guessed.");
|
|
@@ -2781,7 +2883,7 @@ function scan(command, cwd, depth, budget) {
|
|
|
2781
2883
|
return result;
|
|
2782
2884
|
}
|
|
2783
2885
|
budget.parsed(tokens.length);
|
|
2784
|
-
if (tokens.some((
|
|
2886
|
+
if (tokens.some((t2) => typeof t2 !== "string" && "op" in t2 && !["&&", "||", ";", "|", "glob"].includes(t2.op))) {
|
|
2785
2887
|
state.note("Shell grouping, substitution, background execution or redirection prevents reliable script discovery; inspect command text directly.");
|
|
2786
2888
|
return result;
|
|
2787
2889
|
}
|
|
@@ -2812,8 +2914,8 @@ function scan(command, cwd, depth, budget) {
|
|
|
2812
2914
|
// src/evidence.ts
|
|
2813
2915
|
async function capture(reference, budget, signal, scope) {
|
|
2814
2916
|
const result = { filename: reference.filename, status: "unavailable" };
|
|
2815
|
-
if (!reference.cwd && !
|
|
2816
|
-
const filename =
|
|
2917
|
+
if (!reference.cwd && !path7.isAbsolute(reference.filename)) return { ...result, status: "working directory unresolved; contents not provided" };
|
|
2918
|
+
const filename = path7.isAbsolute(reference.filename) ? reference.filename : `${reference.cwd}/${reference.filename}`;
|
|
2817
2919
|
result.path = filename;
|
|
2818
2920
|
signal.throwIfAborted();
|
|
2819
2921
|
try {
|
|
@@ -2885,7 +2987,7 @@ async function collectEvidence(input, limits, signal, scope = fileAccess.scope(s
|
|
|
2885
2987
|
const declared = /* @__PURE__ */ new Map();
|
|
2886
2988
|
for (const reference of discovery.references) {
|
|
2887
2989
|
signal.throwIfAborted();
|
|
2888
|
-
const filename =
|
|
2990
|
+
const filename = path7.isAbsolute(reference.filename) ? reference.filename : reference.cwd ? `${reference.cwd}/${reference.filename}` : null;
|
|
2889
2991
|
const key = filename ?? /* @__PURE__ */ Symbol();
|
|
2890
2992
|
const previous = declared.get(key);
|
|
2891
2993
|
if (previous) previous.executable &&= reference.executable;
|
|
@@ -2894,7 +2996,7 @@ async function collectEvidence(input, limits, signal, scope = fileAccess.scope(s
|
|
|
2894
2996
|
const selected = /* @__PURE__ */ new Map();
|
|
2895
2997
|
for (const reference of declared.values()) {
|
|
2896
2998
|
signal.throwIfAborted();
|
|
2897
|
-
const filename =
|
|
2999
|
+
const filename = path7.isAbsolute(reference.filename) ? reference.filename : reference.cwd ? `${reference.cwd}/${reference.filename}` : null;
|
|
2898
3000
|
const { key, withinLimit } = await limit.consider(filename, signal);
|
|
2899
3001
|
const previous = selected.get(key);
|
|
2900
3002
|
if (previous) {
|
|
@@ -2991,11 +3093,11 @@ async function collectEditEvidence(input, limits, signal, scope = fileAccess.sco
|
|
|
2991
3093
|
status: "omitted",
|
|
2992
3094
|
...movePath !== void 0 ? { movePath } : {}
|
|
2993
3095
|
};
|
|
2994
|
-
const { withinLimit } = await limit.consider(change.path &&
|
|
3096
|
+
const { withinLimit } = await limit.consider(change.path && path7.isAbsolute(change.path) ? change.path : null, signal);
|
|
2995
3097
|
if (!withinLimit) change.reason = "file-count limit reached";
|
|
2996
|
-
else if (!change.path || !
|
|
3098
|
+
else if (!change.path || !path7.isAbsolute(change.path)) change.reason = "absolute target path unavailable";
|
|
2997
3099
|
else if (operation === "unknown" || patch && (operation === "edit" || operation === "write")) change.reason = "file operation unavailable or unsupported";
|
|
2998
|
-
else if (operation === "move" && (!change.movePath || !
|
|
3100
|
+
else if (operation === "move" && (!change.movePath || !path7.isAbsolute(change.movePath))) change.reason = "absolute move destination unavailable";
|
|
2999
3101
|
else if (typeof diff !== "string" || !diff.length) change.reason = "proposed diff unavailable";
|
|
3000
3102
|
else if (diff.length > remaining) change.reason = "complete diff exceeds remaining evidence byte budget";
|
|
3001
3103
|
else if (diff.length > measurementUnits) change.reason = "shared diff UTF-8 measurement work limit reached";
|
|
@@ -3044,9 +3146,11 @@ async function collectEditEvidence(input, limits, signal, scope = fileAccess.sco
|
|
|
3044
3146
|
|
|
3045
3147
|
// src/tool-evidence.ts
|
|
3046
3148
|
init_define_REVIEW_PROMPTS();
|
|
3149
|
+
init_define_REVIEW_SOUNDS();
|
|
3047
3150
|
|
|
3048
3151
|
// src/patch-summary.ts
|
|
3049
3152
|
init_define_REVIEW_PROMPTS();
|
|
3153
|
+
init_define_REVIEW_SOUNDS();
|
|
3050
3154
|
var MAX_PATCH_BYTES = 16 * 1024 * 1024;
|
|
3051
3155
|
var MAX_PATCH_LINES = 65536;
|
|
3052
3156
|
function patchOperations(input, signal) {
|
|
@@ -3086,10 +3190,10 @@ function patchOperations(input, signal) {
|
|
|
3086
3190
|
update = void 0;
|
|
3087
3191
|
const kind = line.startsWith("*** Add File:") ? "add" : line.startsWith("*** Delete File:") ? "delete" : line.startsWith("*** Update File:") ? "update" : void 0;
|
|
3088
3192
|
if (!kind) continue;
|
|
3089
|
-
const
|
|
3090
|
-
if (!
|
|
3193
|
+
const path14 = line.slice(line.indexOf(":") + 1).trim();
|
|
3194
|
+
if (!path14) throw new Error("Patch operation summary contains an empty target path");
|
|
3091
3195
|
if (operations.length >= 16384) throw new Error("Patch operation summary exceeds bounded JSON structure limits");
|
|
3092
|
-
const operation = { operation: kind, path:
|
|
3196
|
+
const operation = { operation: kind, path: path14 };
|
|
3093
3197
|
operations.push(operation);
|
|
3094
3198
|
if (kind === "update") update = operation;
|
|
3095
3199
|
}
|
|
@@ -3285,6 +3389,7 @@ async function evaluateEvidence(request, reader2, options, config, configError,
|
|
|
3285
3389
|
|
|
3286
3390
|
// src/approval.ts
|
|
3287
3391
|
init_define_REVIEW_PROMPTS();
|
|
3392
|
+
init_define_REVIEW_SOUNDS();
|
|
3288
3393
|
function approvalTransport(client, directory) {
|
|
3289
3394
|
return {
|
|
3290
3395
|
async list(signal) {
|
|
@@ -3301,6 +3406,7 @@ function approvalTransport(client, directory) {
|
|
|
3301
3406
|
|
|
3302
3407
|
// src/pending-refresh.ts
|
|
3303
3408
|
init_define_REVIEW_PROMPTS();
|
|
3409
|
+
init_define_REVIEW_SOUNDS();
|
|
3304
3410
|
var PendingRefresh = class {
|
|
3305
3411
|
constructor(pending, read, parent) {
|
|
3306
3412
|
this.pending = pending;
|
|
@@ -3348,17 +3454,19 @@ var PendingRefresh = class {
|
|
|
3348
3454
|
|
|
3349
3455
|
// src/lifetime-view.tsx
|
|
3350
3456
|
init_define_REVIEW_PROMPTS();
|
|
3457
|
+
init_define_REVIEW_SOUNDS();
|
|
3351
3458
|
import { createComponent as _$createComponent } from "@opentui/solid";
|
|
3352
3459
|
import { memo as _$memo } from "@opentui/solid";
|
|
3353
|
-
import
|
|
3460
|
+
import path9 from "node:path";
|
|
3354
3461
|
import { createSignal } from "solid-js";
|
|
3355
3462
|
|
|
3356
3463
|
// src/lifetime.ts
|
|
3357
3464
|
init_define_REVIEW_PROMPTS();
|
|
3465
|
+
init_define_REVIEW_SOUNDS();
|
|
3358
3466
|
import { constants as constants3 } from "node:fs";
|
|
3359
3467
|
import { mkdir, open as open3, readdir as readdir2, rename, unlink } from "node:fs/promises";
|
|
3360
3468
|
import { randomUUID } from "node:crypto";
|
|
3361
|
-
import
|
|
3469
|
+
import path8 from "node:path";
|
|
3362
3470
|
var empty = () => ({ requests: 0, tokenRequests: 0, input: 0, output: 0, priced: 0, cost: 0, since: null });
|
|
3363
3471
|
var count2 = (value) => typeof value === "number" && Number.isSafeInteger(value) && value >= 0;
|
|
3364
3472
|
var amount = (value) => typeof value === "number" && Number.isFinite(value) && value >= 0;
|
|
@@ -3382,7 +3490,7 @@ var LifetimeUsage = class {
|
|
|
3382
3490
|
constructor(directory, legacyDirectory) {
|
|
3383
3491
|
this.directory = directory;
|
|
3384
3492
|
this.legacyDirectory = legacyDirectory;
|
|
3385
|
-
if (!
|
|
3493
|
+
if (!path8.isAbsolute(directory) || legacyDirectory !== void 0 && !path8.isAbsolute(legacyDirectory)) {
|
|
3386
3494
|
throw new Error("Lifetime usage directory must be absolute");
|
|
3387
3495
|
}
|
|
3388
3496
|
}
|
|
@@ -3409,7 +3517,7 @@ var LifetimeUsage = class {
|
|
|
3409
3517
|
}).then(async () => {
|
|
3410
3518
|
this.local = add(this.local, increment);
|
|
3411
3519
|
await mkdir(this.directory, { recursive: true, mode: 448 });
|
|
3412
|
-
const temporary =
|
|
3520
|
+
const temporary = path8.join(this.directory, `${this.id}.${randomUUID()}.tmp`);
|
|
3413
3521
|
try {
|
|
3414
3522
|
const file = await open3(temporary, "wx", 384);
|
|
3415
3523
|
try {
|
|
@@ -3418,7 +3526,7 @@ var LifetimeUsage = class {
|
|
|
3418
3526
|
} finally {
|
|
3419
3527
|
await file.close();
|
|
3420
3528
|
}
|
|
3421
|
-
await rename(temporary,
|
|
3529
|
+
await rename(temporary, path8.join(this.directory, `${this.id}.json`));
|
|
3422
3530
|
const directory = await open3(this.directory, constants3.O_RDONLY | constants3.O_DIRECTORY);
|
|
3423
3531
|
try {
|
|
3424
3532
|
await directory.sync();
|
|
@@ -3441,7 +3549,7 @@ var LifetimeUsage = class {
|
|
|
3441
3549
|
await this.flush();
|
|
3442
3550
|
signal?.throwIfAborted();
|
|
3443
3551
|
let total = empty();
|
|
3444
|
-
const directories = new Set([this.directory, ...this.legacyDirectory ? [this.legacyDirectory] : []].map((directory) =>
|
|
3552
|
+
const directories = new Set([this.directory, ...this.legacyDirectory ? [this.legacyDirectory] : []].map((directory) => path8.resolve(directory)));
|
|
3445
3553
|
for (const directory of directories) total = add(total, await this.readDirectory(directory, signal));
|
|
3446
3554
|
signal?.throwIfAborted();
|
|
3447
3555
|
return total;
|
|
@@ -3456,7 +3564,7 @@ var LifetimeUsage = class {
|
|
|
3456
3564
|
let total = empty();
|
|
3457
3565
|
for (const name of names.filter((name2) => snapshotName.test(name2))) {
|
|
3458
3566
|
signal?.throwIfAborted();
|
|
3459
|
-
const file = await open3(
|
|
3567
|
+
const file = await open3(path8.join(directory, name), constants3.O_RDONLY | constants3.O_NOFOLLOW | constants3.O_NONBLOCK);
|
|
3460
3568
|
try {
|
|
3461
3569
|
signal?.throwIfAborted();
|
|
3462
3570
|
const stat = await file.stat();
|
|
@@ -3512,6 +3620,7 @@ function lifetimeReport(totals) {
|
|
|
3512
3620
|
|
|
3513
3621
|
// src/lifetime-refresh.ts
|
|
3514
3622
|
init_define_REVIEW_PROMPTS();
|
|
3623
|
+
init_define_REVIEW_SOUNDS();
|
|
3515
3624
|
var LifetimeRefresh = class {
|
|
3516
3625
|
constructor(read, publish, parent) {
|
|
3517
3626
|
this.read = read;
|
|
@@ -3590,8 +3699,8 @@ var LifetimeRefresh = class {
|
|
|
3590
3699
|
|
|
3591
3700
|
// src/lifetime-view.tsx
|
|
3592
3701
|
function lifetimeTracker(api) {
|
|
3593
|
-
const directory =
|
|
3594
|
-
const store = new LifetimeUsage(
|
|
3702
|
+
const directory = path9.join(api.state.path.state, "opencode-reviewer");
|
|
3703
|
+
const store = new LifetimeUsage(path9.join(directory, "usage-v2"), path9.join(directory, "usage-v1"));
|
|
3595
3704
|
const [totals, setTotals] = createSignal();
|
|
3596
3705
|
const [unavailable, setUnavailable] = createSignal(false);
|
|
3597
3706
|
const refresh = new LifetimeRefresh((signal) => store.totals(signal), (value) => {
|
|
@@ -3634,27 +3743,28 @@ function lifetimeTracker(api) {
|
|
|
3634
3743
|
}
|
|
3635
3744
|
|
|
3636
3745
|
// src/tui.tsx
|
|
3637
|
-
import
|
|
3746
|
+
import path13 from "node:path";
|
|
3638
3747
|
|
|
3639
3748
|
// src/session-mode.ts
|
|
3640
3749
|
init_define_REVIEW_PROMPTS();
|
|
3750
|
+
init_define_REVIEW_SOUNDS();
|
|
3641
3751
|
import { constants as constants4 } from "node:fs";
|
|
3642
3752
|
import { mkdir as mkdir2, open as open4, rename as rename2, unlink as unlink2 } from "node:fs/promises";
|
|
3643
3753
|
import { createHash, randomUUID as randomUUID2 } from "node:crypto";
|
|
3644
|
-
import
|
|
3754
|
+
import path10 from "node:path";
|
|
3645
3755
|
var MAX_MODE_READS = 2;
|
|
3646
3756
|
var SessionModeStore = class {
|
|
3647
3757
|
constructor(directory, host) {
|
|
3648
3758
|
this.directory = directory;
|
|
3649
3759
|
this.host = host;
|
|
3650
|
-
if (!
|
|
3760
|
+
if (!path10.isAbsolute(directory)) throw new Error("Session mode directory must be absolute");
|
|
3651
3761
|
}
|
|
3652
3762
|
directory;
|
|
3653
3763
|
host;
|
|
3654
3764
|
pending = Promise.resolve();
|
|
3655
3765
|
file(root) {
|
|
3656
3766
|
const key = createHash("sha256").update(JSON.stringify([this.host, root])).digest("hex");
|
|
3657
|
-
return
|
|
3767
|
+
return path10.join(this.directory, `${key}.json`);
|
|
3658
3768
|
}
|
|
3659
3769
|
async read(root, signal) {
|
|
3660
3770
|
signal.throwIfAborted();
|
|
@@ -3817,6 +3927,7 @@ var SessionModes = class {
|
|
|
3817
3927
|
|
|
3818
3928
|
// src/session-mode-commands.ts
|
|
3819
3929
|
init_define_REVIEW_PROMPTS();
|
|
3930
|
+
init_define_REVIEW_SOUNDS();
|
|
3820
3931
|
function sessionModeCommands(api, modes, changed) {
|
|
3821
3932
|
let sequence = 0;
|
|
3822
3933
|
const latest = /* @__PURE__ */ new Map();
|
|
@@ -3859,6 +3970,1820 @@ function sessionModeCommands(api, modes, changed) {
|
|
|
3859
3970
|
})) });
|
|
3860
3971
|
}
|
|
3861
3972
|
|
|
3973
|
+
// src/notification-policy.ts
|
|
3974
|
+
init_define_REVIEW_PROMPTS();
|
|
3975
|
+
init_define_REVIEW_SOUNDS();
|
|
3976
|
+
|
|
3977
|
+
// src/notification-types.ts
|
|
3978
|
+
init_define_REVIEW_PROMPTS();
|
|
3979
|
+
init_define_REVIEW_SOUNDS();
|
|
3980
|
+
var notificationClock = {
|
|
3981
|
+
now: () => performance.now(),
|
|
3982
|
+
after: (ms, callback) => {
|
|
3983
|
+
const timer = setTimeout(callback, ms);
|
|
3984
|
+
return () => clearTimeout(timer);
|
|
3985
|
+
}
|
|
3986
|
+
};
|
|
3987
|
+
function notificationText(value) {
|
|
3988
|
+
return Array.from(value.replace(/[\u0000-\u001f\u007f-\u009f\u202a-\u202e\u2066-\u2069]/g, " ")).slice(0, 256).join("").trim() || "OpenCode session";
|
|
3989
|
+
}
|
|
3990
|
+
function notificationMarkup(value) {
|
|
3991
|
+
return notificationText(value).replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">");
|
|
3992
|
+
}
|
|
3993
|
+
|
|
3994
|
+
// src/notification-policy.ts
|
|
3995
|
+
var NotificationPolicy = class {
|
|
3996
|
+
constructor(config, auto, delay, backend, clock2 = notificationClock) {
|
|
3997
|
+
this.config = config;
|
|
3998
|
+
this.auto = auto;
|
|
3999
|
+
this.delay = delay;
|
|
4000
|
+
this.backend = backend;
|
|
4001
|
+
this.clock = clock2;
|
|
4002
|
+
}
|
|
4003
|
+
config;
|
|
4004
|
+
auto;
|
|
4005
|
+
delay;
|
|
4006
|
+
backend;
|
|
4007
|
+
clock;
|
|
4008
|
+
permissions = /* @__PURE__ */ new Map();
|
|
4009
|
+
questions = /* @__PURE__ */ new Map();
|
|
4010
|
+
seen = /* @__PURE__ */ new Set();
|
|
4011
|
+
views = /* @__PURE__ */ new Map();
|
|
4012
|
+
banners = /* @__PURE__ */ new Set();
|
|
4013
|
+
stopped = false;
|
|
4014
|
+
lastApprovalSound = -Infinity;
|
|
4015
|
+
remember(key) {
|
|
4016
|
+
if (this.seen.has(key)) return false;
|
|
4017
|
+
if (this.seen.size >= 4096) this.seen.delete(this.seen.values().next().value);
|
|
4018
|
+
this.seen.add(key);
|
|
4019
|
+
return true;
|
|
4020
|
+
}
|
|
4021
|
+
permission(request, target, fresh) {
|
|
4022
|
+
if (this.stopped || !this.config.notify || !this.remember(`permission:${request.id}`) || !fresh) return;
|
|
4023
|
+
if (this.permissions.size >= 1024) return;
|
|
4024
|
+
this.permissions.set(request.id, { target, phase: "waiting" });
|
|
4025
|
+
const view = this.views.get(request.id);
|
|
4026
|
+
if (view) this.update(view);
|
|
4027
|
+
}
|
|
4028
|
+
question(id, target, fresh) {
|
|
4029
|
+
if (this.stopped || !this.config.notify || !this.remember(`question:${id}`) || !fresh) return;
|
|
4030
|
+
if (this.questions.size >= 1024) return;
|
|
4031
|
+
const entry = { target, phase: "waiting" };
|
|
4032
|
+
this.questions.set(id, entry);
|
|
4033
|
+
this.attention(entry);
|
|
4034
|
+
}
|
|
4035
|
+
withdraw(banner) {
|
|
4036
|
+
if (!banner) return;
|
|
4037
|
+
banner.expire?.();
|
|
4038
|
+
banner.abort.abort();
|
|
4039
|
+
if (banner.handle) {
|
|
4040
|
+
try {
|
|
4041
|
+
void Promise.resolve(banner.handle.close()).catch(() => {
|
|
4042
|
+
});
|
|
4043
|
+
} catch {
|
|
4044
|
+
}
|
|
4045
|
+
}
|
|
4046
|
+
this.banners.delete(banner);
|
|
4047
|
+
}
|
|
4048
|
+
show(kind, title, target) {
|
|
4049
|
+
if (this.stopped || !this.config.notify || this.banners.size >= 64) return;
|
|
4050
|
+
const banner = { abort: new AbortController(), target };
|
|
4051
|
+
this.banners.add(banner);
|
|
4052
|
+
let sound = this.config.notifySound;
|
|
4053
|
+
if (kind === "approved" && sound) {
|
|
4054
|
+
sound = this.clock.now() - this.lastApprovalSound >= 2e3;
|
|
4055
|
+
if (sound) this.lastApprovalSound = this.clock.now();
|
|
4056
|
+
}
|
|
4057
|
+
void Promise.resolve().then(() => {
|
|
4058
|
+
if (banner.abort.signal.aborted || this.stopped) return;
|
|
4059
|
+
return this.backend.show({ kind, title, body: notificationText(target.title), sessionID: target.sessionID, sound }, banner.abort.signal);
|
|
4060
|
+
}).then((handle) => {
|
|
4061
|
+
banner.handle = handle;
|
|
4062
|
+
if (banner.abort.signal.aborted || this.stopped) this.withdraw(banner);
|
|
4063
|
+
else if (!handle) {
|
|
4064
|
+
banner.expire?.();
|
|
4065
|
+
this.banners.delete(banner);
|
|
4066
|
+
} else if (handle.closed) {
|
|
4067
|
+
const release = () => {
|
|
4068
|
+
banner.expire?.();
|
|
4069
|
+
this.banners.delete(banner);
|
|
4070
|
+
};
|
|
4071
|
+
void handle.closed.then(release, release);
|
|
4072
|
+
}
|
|
4073
|
+
}).catch(() => this.withdraw(banner));
|
|
4074
|
+
const cancel = this.clock.after(12e4, () => this.withdraw(banner));
|
|
4075
|
+
banner.expire = cancel;
|
|
4076
|
+
banner.abort.signal.addEventListener("abort", cancel, { once: true });
|
|
4077
|
+
return banner;
|
|
4078
|
+
}
|
|
4079
|
+
attention(entry) {
|
|
4080
|
+
entry.grace?.();
|
|
4081
|
+
entry.grace = void 0;
|
|
4082
|
+
if (entry.phase === "attention") return;
|
|
4083
|
+
this.withdraw(entry.banner);
|
|
4084
|
+
entry.phase = "attention";
|
|
4085
|
+
entry.banner = this.show("attention", "Session needs attention", entry.target);
|
|
4086
|
+
}
|
|
4087
|
+
snapshot(views) {
|
|
4088
|
+
if (this.stopped) return;
|
|
4089
|
+
this.views = new Map(views.map((view) => [view.request.id, view]));
|
|
4090
|
+
for (const [id] of this.permissions) {
|
|
4091
|
+
const view = this.views.get(id);
|
|
4092
|
+
if (view) this.update(view);
|
|
4093
|
+
else this.resolved("permission", id);
|
|
4094
|
+
}
|
|
4095
|
+
}
|
|
4096
|
+
update(view) {
|
|
4097
|
+
const entry = this.permissions.get(view.request.id);
|
|
4098
|
+
if (!entry) return;
|
|
4099
|
+
const state = view.autoApproval?.status;
|
|
4100
|
+
if (state === "countdown" || state === "checking" || state === "allowing") {
|
|
4101
|
+
entry.grace?.();
|
|
4102
|
+
entry.grace = void 0;
|
|
4103
|
+
if (entry.phase !== "automatic") {
|
|
4104
|
+
this.withdraw(entry.banner);
|
|
4105
|
+
entry.phase = "automatic";
|
|
4106
|
+
entry.banner = state === "countdown" && this.delay > 0 ? this.show("attention", `Reviewer will approve permission in ${view.autoApproval.status === "countdown" ? view.autoApproval.seconds : this.delay} s`, entry.target) : void 0;
|
|
4107
|
+
}
|
|
4108
|
+
return;
|
|
4109
|
+
}
|
|
4110
|
+
if (state === "failed") {
|
|
4111
|
+
if (entry.phase !== "attention") {
|
|
4112
|
+
this.withdraw(entry.banner);
|
|
4113
|
+
entry.banner = void 0;
|
|
4114
|
+
}
|
|
4115
|
+
if (view.approvalPendingConfirmed) this.attention(entry);
|
|
4116
|
+
return;
|
|
4117
|
+
}
|
|
4118
|
+
if (state === "cancelled" || ["unrelated", "unidentified", "unavailable", "suspended"].includes(view.status)) {
|
|
4119
|
+
this.attention(entry);
|
|
4120
|
+
return;
|
|
4121
|
+
}
|
|
4122
|
+
if (view.status !== "complete" || !view.assessment) return;
|
|
4123
|
+
if (!this.auto || !view.assessment.safe) {
|
|
4124
|
+
this.attention(entry);
|
|
4125
|
+
return;
|
|
4126
|
+
}
|
|
4127
|
+
if (entry.phase !== "waiting" || entry.grace) return;
|
|
4128
|
+
entry.grace = this.clock.after(1e3, () => {
|
|
4129
|
+
entry.grace = void 0;
|
|
4130
|
+
if (this.permissions.get(view.request.id) !== entry || this.stopped) return;
|
|
4131
|
+
const current = this.views.get(view.request.id);
|
|
4132
|
+
if (current?.status === "complete" && current.assessment?.safe && !current.autoApproval) this.attention(entry);
|
|
4133
|
+
});
|
|
4134
|
+
}
|
|
4135
|
+
approved(request, target) {
|
|
4136
|
+
if (!this.remember(`approved:${request.id}`)) return;
|
|
4137
|
+
const current = this.permissions.get(request.id);
|
|
4138
|
+
if (current || target) this.show("approved", "Reviewer approved a permission", current?.target ?? target);
|
|
4139
|
+
}
|
|
4140
|
+
resolved(kind, id) {
|
|
4141
|
+
const entries = kind === "permission" ? this.permissions : this.questions;
|
|
4142
|
+
const entry = entries.get(id);
|
|
4143
|
+
entry?.grace?.();
|
|
4144
|
+
this.withdraw(entry?.banner);
|
|
4145
|
+
entries.delete(id);
|
|
4146
|
+
this.remember(`${kind}:${id}`);
|
|
4147
|
+
}
|
|
4148
|
+
turn(kind, id, target) {
|
|
4149
|
+
if (this.remember(`turn:${target.root}:${id}`)) this.show(kind, kind === "error" ? "Session error" : "Session ended", target);
|
|
4150
|
+
}
|
|
4151
|
+
deleted(sessionID) {
|
|
4152
|
+
for (const banner of this.banners) if (banner.target.root === sessionID || banner.target.sessionID === sessionID) this.withdraw(banner);
|
|
4153
|
+
for (const [id, entry] of this.permissions) if (entry.target.root === sessionID || entry.target.sessionID === sessionID) this.resolved("permission", id);
|
|
4154
|
+
for (const [id, entry] of this.questions) if (entry.target.root === sessionID || entry.target.sessionID === sessionID) this.resolved("question", id);
|
|
4155
|
+
}
|
|
4156
|
+
dispose() {
|
|
4157
|
+
this.stopped = true;
|
|
4158
|
+
for (const entry of this.permissions.values()) entry.grace?.();
|
|
4159
|
+
for (const banner of this.banners) this.withdraw(banner);
|
|
4160
|
+
this.permissions.clear();
|
|
4161
|
+
this.questions.clear();
|
|
4162
|
+
this.views.clear();
|
|
4163
|
+
this.seen.clear();
|
|
4164
|
+
return withDeadline(new AbortController().signal, 5e3, async () => {
|
|
4165
|
+
await this.backend.dispose();
|
|
4166
|
+
}).catch(() => {
|
|
4167
|
+
});
|
|
4168
|
+
}
|
|
4169
|
+
};
|
|
4170
|
+
|
|
4171
|
+
// src/notification-host.ts
|
|
4172
|
+
init_define_REVIEW_PROMPTS();
|
|
4173
|
+
init_define_REVIEW_SOUNDS();
|
|
4174
|
+
var NotificationHost = class {
|
|
4175
|
+
constructor(api, policy, resolveRoot, clock2 = notificationClock) {
|
|
4176
|
+
this.api = api;
|
|
4177
|
+
this.policy = policy;
|
|
4178
|
+
this.resolveRoot = resolveRoot;
|
|
4179
|
+
this.clock = clock2;
|
|
4180
|
+
const on = api.event.on;
|
|
4181
|
+
this.subscriptions.push(
|
|
4182
|
+
on("permission.asked", (e2) => this.asked("permission", e2.properties)),
|
|
4183
|
+
on("question.asked", (e2) => this.asked("question", e2.properties)),
|
|
4184
|
+
on("permission.replied", (e2) => this.resolved("permission", e2.properties.requestID)),
|
|
4185
|
+
on("question.replied", (e2) => this.resolved("question", e2.properties.requestID)),
|
|
4186
|
+
on("question.rejected", (e2) => this.resolved("question", e2.properties.requestID)),
|
|
4187
|
+
on("session.deleted", (e2) => this.deleted(e2.properties.info.id)),
|
|
4188
|
+
on("message.updated", (e2) => this.message(e2.properties.info)),
|
|
4189
|
+
on("session.error", (e2) => {
|
|
4190
|
+
const id = e2.properties.sessionID;
|
|
4191
|
+
if (!id) return;
|
|
4192
|
+
const root = this.roots.get(id);
|
|
4193
|
+
if (!root) return;
|
|
4194
|
+
root.error = { id: e2.id, name: e2.properties.error?.name ?? "UnknownError" };
|
|
4195
|
+
if (root.error.name === "MessageAbortedError") root.cancelled = true;
|
|
4196
|
+
this.idle(id);
|
|
4197
|
+
}),
|
|
4198
|
+
on("session.status", (e2) => {
|
|
4199
|
+
const root = this.roots.get(e2.properties.sessionID);
|
|
4200
|
+
if (!root) return;
|
|
4201
|
+
root.idle?.();
|
|
4202
|
+
root.idle = void 0;
|
|
4203
|
+
if (e2.properties.status.type === "idle") this.idle(e2.properties.sessionID);
|
|
4204
|
+
}),
|
|
4205
|
+
on("session.idle", (e2) => this.idle(e2.properties.sessionID)),
|
|
4206
|
+
on("session.created", (e2) => {
|
|
4207
|
+
if (this.created.size >= 1024) this.created.delete(this.created.keys().next().value);
|
|
4208
|
+
this.created.set(e2.properties.info.id, ++this.sequence);
|
|
4209
|
+
for (const [id, request] of this.permissions) this.admit("permission", id, request);
|
|
4210
|
+
for (const [id, request] of this.questions) this.admit("question", id, request);
|
|
4211
|
+
})
|
|
4212
|
+
);
|
|
4213
|
+
}
|
|
4214
|
+
api;
|
|
4215
|
+
policy;
|
|
4216
|
+
resolveRoot;
|
|
4217
|
+
clock;
|
|
4218
|
+
roots = /* @__PURE__ */ new Map();
|
|
4219
|
+
visiting = /* @__PURE__ */ new Map();
|
|
4220
|
+
permissions = /* @__PURE__ */ new Map();
|
|
4221
|
+
questions = /* @__PURE__ */ new Map();
|
|
4222
|
+
dispatched = /* @__PURE__ */ new Map();
|
|
4223
|
+
closed = /* @__PURE__ */ new Set();
|
|
4224
|
+
views = [];
|
|
4225
|
+
subscriptions = [];
|
|
4226
|
+
stopped = false;
|
|
4227
|
+
lookups = 0;
|
|
4228
|
+
ancestry = /* @__PURE__ */ new Map();
|
|
4229
|
+
sequence = 0;
|
|
4230
|
+
recentMessages = /* @__PURE__ */ new Map();
|
|
4231
|
+
created = /* @__PURE__ */ new Map();
|
|
4232
|
+
deletedSessions = /* @__PURE__ */ new Set();
|
|
4233
|
+
rootOf(id) {
|
|
4234
|
+
const seen = /* @__PURE__ */ new Set();
|
|
4235
|
+
for (let edge = 0; edge <= 16; edge++) {
|
|
4236
|
+
if (seen.has(id)) return;
|
|
4237
|
+
seen.add(id);
|
|
4238
|
+
const session = this.api.state.session.get(id);
|
|
4239
|
+
if (!session) return;
|
|
4240
|
+
if (!session.parentID) return id;
|
|
4241
|
+
id = session.parentID;
|
|
4242
|
+
}
|
|
4243
|
+
}
|
|
4244
|
+
lookup(id) {
|
|
4245
|
+
const pending = this.ancestry.get(id);
|
|
4246
|
+
if (pending) return pending;
|
|
4247
|
+
if (this.lookups >= 2 || this.stopped) return;
|
|
4248
|
+
this.lookups++;
|
|
4249
|
+
const worker = Promise.resolve().then(() => this.resolveRoot(id, this.api.lifecycle.signal)).finally(() => {
|
|
4250
|
+
this.ancestry.delete(id);
|
|
4251
|
+
this.lookups--;
|
|
4252
|
+
});
|
|
4253
|
+
this.ancestry.set(id, worker);
|
|
4254
|
+
return worker;
|
|
4255
|
+
}
|
|
4256
|
+
visit(id) {
|
|
4257
|
+
if (!id || this.stopped || this.visiting.has(id)) return;
|
|
4258
|
+
const since = ++this.sequence;
|
|
4259
|
+
const root = this.rootOf(id);
|
|
4260
|
+
if (root) {
|
|
4261
|
+
this.track(root, since);
|
|
4262
|
+
return;
|
|
4263
|
+
}
|
|
4264
|
+
const lookup = this.lookup(id);
|
|
4265
|
+
if (!lookup) return;
|
|
4266
|
+
this.visiting.set(id, since);
|
|
4267
|
+
void lookup.then((root2) => {
|
|
4268
|
+
if (!this.stopped) this.track(root2, since);
|
|
4269
|
+
}).catch(() => {
|
|
4270
|
+
}).finally(() => {
|
|
4271
|
+
this.visiting.delete(id);
|
|
4272
|
+
});
|
|
4273
|
+
}
|
|
4274
|
+
track(id, since) {
|
|
4275
|
+
if (this.deletedSessions.has(id) || this.roots.has(id) || this.roots.size >= 256) return;
|
|
4276
|
+
const messages = this.api.state.session.messages(id);
|
|
4277
|
+
const root = { since, baselineUsers: new Set(messages.filter((m) => m.role === "user").slice(-4096).map((m) => m.id)), cancelled: false };
|
|
4278
|
+
this.roots.set(id, root);
|
|
4279
|
+
for (const { message, received } of this.recentMessages.values()) {
|
|
4280
|
+
if (message.sessionID !== id || received < (this.created.get(id) ?? since)) continue;
|
|
4281
|
+
if (message.role === "user") root.baselineUsers.delete(message.id);
|
|
4282
|
+
this.message(message);
|
|
4283
|
+
}
|
|
4284
|
+
for (const [key, request] of this.permissions) this.admit("permission", key, request);
|
|
4285
|
+
for (const [key, request] of this.questions) this.admit("question", key, request);
|
|
4286
|
+
}
|
|
4287
|
+
asked(kind, value) {
|
|
4288
|
+
if (this.stopped || this.closed.has(`${kind}:${value.id}`)) return;
|
|
4289
|
+
const entries = kind === "permission" ? this.permissions : this.questions;
|
|
4290
|
+
if (entries.has(value.id) || entries.size >= 1024) return;
|
|
4291
|
+
const request = { sessionID: value.sessionID, received: ++this.sequence };
|
|
4292
|
+
entries.set(value.id, request);
|
|
4293
|
+
this.admit(kind, value.id, request);
|
|
4294
|
+
}
|
|
4295
|
+
admit(kind, id, request) {
|
|
4296
|
+
if (request.target || this.stopped) return;
|
|
4297
|
+
const rootID = request.root ?? this.rootOf(request.sessionID);
|
|
4298
|
+
if (!rootID) {
|
|
4299
|
+
if (request.resolving) return;
|
|
4300
|
+
const lookup = this.lookup(request.sessionID);
|
|
4301
|
+
if (!lookup) return;
|
|
4302
|
+
request.resolving = true;
|
|
4303
|
+
void lookup.then((root2) => {
|
|
4304
|
+
const entries = kind === "permission" ? this.permissions : this.questions;
|
|
4305
|
+
if (this.stopped || entries.get(id) !== request) return;
|
|
4306
|
+
request.root = root2;
|
|
4307
|
+
this.admit(kind, id, request);
|
|
4308
|
+
}).catch(() => {
|
|
4309
|
+
}).finally(() => {
|
|
4310
|
+
request.resolving = false;
|
|
4311
|
+
});
|
|
4312
|
+
return;
|
|
4313
|
+
}
|
|
4314
|
+
const root = this.roots.get(rootID);
|
|
4315
|
+
if (!root || request.received < root.since) return;
|
|
4316
|
+
const target = { root: rootID, sessionID: rootID, title: this.api.state.session.get(rootID)?.title ?? "OpenCode session" };
|
|
4317
|
+
request.target = target;
|
|
4318
|
+
if (kind === "question") this.policy.question(id, target, true);
|
|
4319
|
+
else {
|
|
4320
|
+
const view = this.views.find((v) => v.request.id === id);
|
|
4321
|
+
const value = view?.request ?? this.api.state.session.permission(request.sessionID).find((p) => p.id === id);
|
|
4322
|
+
if (value) this.policy.permission(value, target, true);
|
|
4323
|
+
else request.target = void 0;
|
|
4324
|
+
}
|
|
4325
|
+
}
|
|
4326
|
+
snapshot(views) {
|
|
4327
|
+
if (this.stopped) return;
|
|
4328
|
+
this.views = views;
|
|
4329
|
+
for (const request of this.permissions.values()) if (request.target) {
|
|
4330
|
+
request.target.title = this.api.state.session.get(request.target.root)?.title ?? "OpenCode session";
|
|
4331
|
+
}
|
|
4332
|
+
this.policy.snapshot(views);
|
|
4333
|
+
for (const [id, request] of this.permissions) this.admit("permission", id, request);
|
|
4334
|
+
const pending = new Set(views.map((v) => v.request.id));
|
|
4335
|
+
for (const [id] of this.permissions) if (!pending.has(id)) this.resolved("permission", id);
|
|
4336
|
+
}
|
|
4337
|
+
fact(fact) {
|
|
4338
|
+
if (this.stopped) return;
|
|
4339
|
+
if (fact.type === "dispatched") {
|
|
4340
|
+
const target = this.permissions.get(fact.request.id)?.target;
|
|
4341
|
+
if (target && this.dispatched.size < 1024) this.dispatched.set(fact.request.id, { target, automatic: fact.automatic });
|
|
4342
|
+
} else if (fact.type === "confirmed") {
|
|
4343
|
+
const dispatched = this.dispatched.get(fact.request.id);
|
|
4344
|
+
this.dispatched.delete(fact.request.id);
|
|
4345
|
+
if (dispatched?.automatic) {
|
|
4346
|
+
dispatched.target.title = this.api.state.session.get(dispatched.target.root)?.title ?? "OpenCode session";
|
|
4347
|
+
this.policy.approved(fact.request, dispatched.target);
|
|
4348
|
+
}
|
|
4349
|
+
} else this.dispatched.delete(fact.request.id);
|
|
4350
|
+
}
|
|
4351
|
+
resolved(kind, id) {
|
|
4352
|
+
;
|
|
4353
|
+
(kind === "permission" ? this.permissions : this.questions).delete(id);
|
|
4354
|
+
const key = `${kind}:${id}`;
|
|
4355
|
+
if (this.closed.size >= 4096) this.closed.delete(this.closed.values().next().value);
|
|
4356
|
+
this.closed.add(key);
|
|
4357
|
+
this.policy.resolved(kind, id);
|
|
4358
|
+
}
|
|
4359
|
+
message(message) {
|
|
4360
|
+
if (this.stopped) return;
|
|
4361
|
+
if (!this.recentMessages.has(message.id)) {
|
|
4362
|
+
if (this.recentMessages.size >= 1024) this.recentMessages.delete(this.recentMessages.keys().next().value);
|
|
4363
|
+
this.recentMessages.set(message.id, { message, received: ++this.sequence });
|
|
4364
|
+
} else this.recentMessages.get(message.id).message = message;
|
|
4365
|
+
const root = this.roots.get(message.sessionID);
|
|
4366
|
+
if (!root || this.stopped) return;
|
|
4367
|
+
if (message.role === "user") {
|
|
4368
|
+
if (root.baselineUsers.has(message.id) || root.user === message.id) return;
|
|
4369
|
+
root.baselineUsers.add(message.id);
|
|
4370
|
+
if (root.baselineUsers.size > 4096) root.baselineUsers.delete(root.baselineUsers.values().next().value);
|
|
4371
|
+
root.user = message.id;
|
|
4372
|
+
root.assistant = void 0;
|
|
4373
|
+
root.error = void 0;
|
|
4374
|
+
root.cancelled = false;
|
|
4375
|
+
root.idle?.();
|
|
4376
|
+
root.idle = void 0;
|
|
4377
|
+
} else if (!message.summary && message.parentID === root.user) {
|
|
4378
|
+
if (!root.assistant || message.id >= root.assistant.id) root.assistant = message;
|
|
4379
|
+
if (message.error?.name === "MessageAbortedError") root.cancelled = true;
|
|
4380
|
+
}
|
|
4381
|
+
}
|
|
4382
|
+
idle(id) {
|
|
4383
|
+
const root = this.roots.get(id);
|
|
4384
|
+
if (!root || this.stopped) return;
|
|
4385
|
+
root.idle?.();
|
|
4386
|
+
root.idle = this.clock.after(100, () => {
|
|
4387
|
+
root.idle = void 0;
|
|
4388
|
+
if (this.stopped || this.roots.get(id) !== root || this.api.state.session.status(id)?.type !== "idle") return;
|
|
4389
|
+
if (root.cancelled) return;
|
|
4390
|
+
const messages = this.api.state.session.messages(id);
|
|
4391
|
+
const assistant = messages.findLast((m) => m.role === "assistant" && !m.summary && m.parentID === root.user);
|
|
4392
|
+
if (assistant?.role === "assistant") root.assistant = assistant;
|
|
4393
|
+
if (root.assistant?.error?.name === "MessageAbortedError" || root.error?.name === "MessageAbortedError") return;
|
|
4394
|
+
if (this.views.some((v) => this.rootOf(v.request.sessionID) === id) || [...this.questions.values()].some((q) => this.rootOf(q.sessionID) === id) || this.api.state.session.question(id).length || this.api.state.session.permission(id).length) return;
|
|
4395
|
+
const target = { root: id, sessionID: id, title: this.api.state.session.get(id)?.title ?? "OpenCode session" };
|
|
4396
|
+
const message = root.assistant;
|
|
4397
|
+
if (message?.error || root.error && (!message?.time.completed || !message.finish || message.finish === "error")) {
|
|
4398
|
+
this.policy.turn("error", root.user ?? root.error.id, target);
|
|
4399
|
+
} else if (root.user && message?.time.completed && message.finish && !["tool-calls", "unknown", "error"].includes(message.finish)) {
|
|
4400
|
+
this.policy.turn("ended", root.user, target);
|
|
4401
|
+
}
|
|
4402
|
+
});
|
|
4403
|
+
}
|
|
4404
|
+
click(sessionID) {
|
|
4405
|
+
if (this.stopped || this.deletedSessions.has(sessionID) || this.api.ui.dialog.open || !this.api.state.session.get(sessionID)) return;
|
|
4406
|
+
this.api.route.navigate("session", { sessionID });
|
|
4407
|
+
}
|
|
4408
|
+
deleted(id) {
|
|
4409
|
+
if (this.deletedSessions.size >= 4096) this.deletedSessions.delete(this.deletedSessions.values().next().value);
|
|
4410
|
+
this.deletedSessions.add(id);
|
|
4411
|
+
this.roots.get(id)?.idle?.();
|
|
4412
|
+
this.roots.delete(id);
|
|
4413
|
+
this.created.delete(id);
|
|
4414
|
+
for (const [key, request] of this.permissions) if (request.sessionID === id || request.target?.root === id) this.resolved("permission", key);
|
|
4415
|
+
for (const [key, request] of this.questions) if (request.sessionID === id || request.target?.root === id) this.resolved("question", key);
|
|
4416
|
+
for (const [key, dispatch] of this.dispatched) if (dispatch.target.root === id || dispatch.target.sessionID === id) this.dispatched.delete(key);
|
|
4417
|
+
this.policy.deleted(id);
|
|
4418
|
+
}
|
|
4419
|
+
dispose() {
|
|
4420
|
+
this.stopped = true;
|
|
4421
|
+
for (const stop of this.subscriptions) stop();
|
|
4422
|
+
for (const root of this.roots.values()) root.idle?.();
|
|
4423
|
+
this.roots.clear();
|
|
4424
|
+
this.permissions.clear();
|
|
4425
|
+
this.questions.clear();
|
|
4426
|
+
this.dispatched.clear();
|
|
4427
|
+
this.closed.clear();
|
|
4428
|
+
this.recentMessages.clear();
|
|
4429
|
+
this.created.clear();
|
|
4430
|
+
this.deletedSessions.clear();
|
|
4431
|
+
return this.policy.dispose();
|
|
4432
|
+
}
|
|
4433
|
+
};
|
|
4434
|
+
|
|
4435
|
+
// src/notification-linux.ts
|
|
4436
|
+
init_define_REVIEW_PROMPTS();
|
|
4437
|
+
init_define_REVIEW_SOUNDS();
|
|
4438
|
+
|
|
4439
|
+
// src/notification-audio.ts
|
|
4440
|
+
init_define_REVIEW_PROMPTS();
|
|
4441
|
+
init_define_REVIEW_SOUNDS();
|
|
4442
|
+
import { constants as constants5 } from "node:fs";
|
|
4443
|
+
import { mkdtemp, open as open5, rm, writeFile } from "node:fs/promises";
|
|
4444
|
+
import { tmpdir } from "node:os";
|
|
4445
|
+
import path11 from "node:path";
|
|
4446
|
+
|
|
4447
|
+
// src/notification-codec.ts
|
|
4448
|
+
init_define_REVIEW_PROMPTS();
|
|
4449
|
+
init_define_REVIEW_SOUNDS();
|
|
4450
|
+
|
|
4451
|
+
// node_modules/mpg123-decoder/index.js
|
|
4452
|
+
init_define_REVIEW_PROMPTS();
|
|
4453
|
+
init_define_REVIEW_SOUNDS();
|
|
4454
|
+
|
|
4455
|
+
// node_modules/mpg123-decoder/src/MPEGDecoder.js
|
|
4456
|
+
init_define_REVIEW_PROMPTS();
|
|
4457
|
+
init_define_REVIEW_SOUNDS();
|
|
4458
|
+
|
|
4459
|
+
// node_modules/@wasm-audio-decoders/common/index.js
|
|
4460
|
+
init_define_REVIEW_PROMPTS();
|
|
4461
|
+
init_define_REVIEW_SOUNDS();
|
|
4462
|
+
|
|
4463
|
+
// node_modules/@wasm-audio-decoders/common/src/WASMAudioDecoderCommon.js
|
|
4464
|
+
init_define_REVIEW_PROMPTS();
|
|
4465
|
+
init_define_REVIEW_SOUNDS();
|
|
4466
|
+
|
|
4467
|
+
// node_modules/simple-yenc/dist/esm.js
|
|
4468
|
+
init_define_REVIEW_PROMPTS();
|
|
4469
|
+
init_define_REVIEW_SOUNDS();
|
|
4470
|
+
var t = (t2, n = 4294967295, e2 = 79764919) => {
|
|
4471
|
+
const r = new Int32Array(256);
|
|
4472
|
+
let o, s, i, c = n;
|
|
4473
|
+
for (o = 0; o < 256; o++) {
|
|
4474
|
+
for (i = o << 24, s = 8; s > 0; --s) i = 2147483648 & i ? i << 1 ^ e2 : i << 1;
|
|
4475
|
+
r[o] = i;
|
|
4476
|
+
}
|
|
4477
|
+
for (o = 0; o < t2.length; o++) c = c << 8 ^ r[255 & (c >> 24 ^ t2[o])];
|
|
4478
|
+
return c;
|
|
4479
|
+
};
|
|
4480
|
+
var e = (n, e2 = t) => {
|
|
4481
|
+
const r = (t2) => new Uint8Array(t2.length / 2).map(((n2, e3) => parseInt(t2.substring(2 * e3, 2 * (e3 + 1)), 16))), o = (t2) => r(t2)[0], s = /* @__PURE__ */ new Map();
|
|
4482
|
+
[, 8364, , 8218, 402, 8222, 8230, 8224, 8225, 710, 8240, 352, 8249, 338, , 381, , , 8216, 8217, 8220, 8221, 8226, 8211, 8212, 732, 8482, 353, 8250, 339, , 382, 376].forEach(((t2, n2) => s.set(t2, n2)));
|
|
4483
|
+
const i = new Uint8Array(n.length);
|
|
4484
|
+
let c, a, l, f = false, g = 0, h = 42, p = n.length > 13 && "dynEncode" === n.substring(0, 9), u = 0;
|
|
4485
|
+
p && (u = 11, a = o(n.substring(9, u)), a <= 1 && (u += 2, h = o(n.substring(11, u))), 1 === a && (u += 8, l = ((t2) => new DataView(r(t2).buffer).getInt32(0, true))(n.substring(13, u))));
|
|
4486
|
+
const d = 256 - h;
|
|
4487
|
+
for (let t2 = u; t2 < n.length; t2++) if (c = n.charCodeAt(t2), 61 !== c || f) {
|
|
4488
|
+
if (92 === c && t2 < n.length - 5 && p) {
|
|
4489
|
+
const e3 = n.charCodeAt(t2 + 1);
|
|
4490
|
+
117 !== e3 && 85 !== e3 || (c = parseInt(n.substring(t2 + 2, t2 + 6), 16), t2 += 5);
|
|
4491
|
+
}
|
|
4492
|
+
if (c > 255) {
|
|
4493
|
+
const t3 = s.get(c);
|
|
4494
|
+
t3 && (c = t3 + 127);
|
|
4495
|
+
}
|
|
4496
|
+
f && (f = false, c -= 64), i[g++] = c < h && c > 0 ? c + d : c - h;
|
|
4497
|
+
} else f = true;
|
|
4498
|
+
const m = i.subarray(0, g);
|
|
4499
|
+
if (p && 1 === a) {
|
|
4500
|
+
const t2 = e2(m);
|
|
4501
|
+
if (t2 !== l) {
|
|
4502
|
+
const n2 = "Decode failed crc32 validation";
|
|
4503
|
+
throw console.error("`simple-yenc`\n", n2 + "\n", "Expected: " + l + "; Got: " + t2 + "\n", "Visit https://github.com/eshaz/simple-yenc for more information"), Error(n2);
|
|
4504
|
+
}
|
|
4505
|
+
}
|
|
4506
|
+
return m;
|
|
4507
|
+
};
|
|
4508
|
+
|
|
4509
|
+
// node_modules/@wasm-audio-decoders/common/src/WASMAudioDecoderCommon.js
|
|
4510
|
+
function WASMAudioDecoderCommon() {
|
|
4511
|
+
const uint8Array = Uint8Array;
|
|
4512
|
+
const float32Array = Float32Array;
|
|
4513
|
+
if (!WASMAudioDecoderCommon.modules) {
|
|
4514
|
+
Object.defineProperties(WASMAudioDecoderCommon, {
|
|
4515
|
+
modules: {
|
|
4516
|
+
value: /* @__PURE__ */ new WeakMap()
|
|
4517
|
+
},
|
|
4518
|
+
setModule: {
|
|
4519
|
+
value(Ref, module) {
|
|
4520
|
+
WASMAudioDecoderCommon.modules.set(Ref, Promise.resolve(module));
|
|
4521
|
+
}
|
|
4522
|
+
},
|
|
4523
|
+
getModule: {
|
|
4524
|
+
value(Ref, wasmString) {
|
|
4525
|
+
let module = WASMAudioDecoderCommon.modules.get(Ref);
|
|
4526
|
+
if (!module) {
|
|
4527
|
+
if (!wasmString) {
|
|
4528
|
+
wasmString = Ref.wasm;
|
|
4529
|
+
module = WASMAudioDecoderCommon.inflateDynEncodeString(
|
|
4530
|
+
wasmString
|
|
4531
|
+
).then((data) => WebAssembly.compile(data));
|
|
4532
|
+
} else {
|
|
4533
|
+
module = WebAssembly.compile(e(wasmString));
|
|
4534
|
+
}
|
|
4535
|
+
WASMAudioDecoderCommon.modules.set(Ref, module);
|
|
4536
|
+
}
|
|
4537
|
+
return module;
|
|
4538
|
+
}
|
|
4539
|
+
},
|
|
4540
|
+
concatFloat32: {
|
|
4541
|
+
value(buffers, length) {
|
|
4542
|
+
let ret = new float32Array(length), i = 0, offset = 0;
|
|
4543
|
+
while (i < buffers.length) {
|
|
4544
|
+
ret.set(buffers[i], offset);
|
|
4545
|
+
offset += buffers[i++].length;
|
|
4546
|
+
}
|
|
4547
|
+
return ret;
|
|
4548
|
+
}
|
|
4549
|
+
},
|
|
4550
|
+
getDecodedAudio: {
|
|
4551
|
+
value: (errors, channelData, samplesDecoded, sampleRate, bitDepth) => ({
|
|
4552
|
+
errors,
|
|
4553
|
+
channelData,
|
|
4554
|
+
samplesDecoded,
|
|
4555
|
+
sampleRate,
|
|
4556
|
+
bitDepth
|
|
4557
|
+
})
|
|
4558
|
+
},
|
|
4559
|
+
getDecodedAudioMultiChannel: {
|
|
4560
|
+
value(errors, input, channelsDecoded, samplesDecoded, sampleRate, bitDepth) {
|
|
4561
|
+
let channelData = [], i, j;
|
|
4562
|
+
for (i = 0; i < channelsDecoded; i++) {
|
|
4563
|
+
const channel = [];
|
|
4564
|
+
for (j = 0; j < input.length; ) channel.push(input[j++][i] || []);
|
|
4565
|
+
channelData.push(
|
|
4566
|
+
WASMAudioDecoderCommon.concatFloat32(channel, samplesDecoded)
|
|
4567
|
+
);
|
|
4568
|
+
}
|
|
4569
|
+
return WASMAudioDecoderCommon.getDecodedAudio(
|
|
4570
|
+
errors,
|
|
4571
|
+
channelData,
|
|
4572
|
+
samplesDecoded,
|
|
4573
|
+
sampleRate,
|
|
4574
|
+
bitDepth
|
|
4575
|
+
);
|
|
4576
|
+
}
|
|
4577
|
+
},
|
|
4578
|
+
/*
|
|
4579
|
+
******************
|
|
4580
|
+
* Compression Code
|
|
4581
|
+
******************
|
|
4582
|
+
*/
|
|
4583
|
+
inflateDynEncodeString: {
|
|
4584
|
+
value(source) {
|
|
4585
|
+
source = e(source);
|
|
4586
|
+
return new Promise((resolve) => {
|
|
4587
|
+
const puffString = String.raw`dynEncode012804c7886d()((()>+*§§)§,§§§§)§+§§§)§+.-()(*)-+)(.7*§)i¸¸,3§(i¸¸,3/G+.¡*(,(,3+)2å:-),§H(P*DI*H(P*@I++hH)H*r,hH(H(P*<J,i)^*<H,H(P*4U((I-H(H*i0J,^*DH+H-H*I+H,I*4)33H(H*H)^*DH(H+H)^*@H+i§H)i§3æ*).§K(iHI/+§H,iHn,§H+i(H+i(rCJ0I,H*I-+hH,,hH(H-V)(i)J.H.W)(i)c)(H,i)I,H-i*I-4)33i(I.*hH(V)(H+n5(H(i*I-i(I,i)I.+hH,i*J+iHn,hi(I-i*I,+hH,H/H-c)(H,iFn,hi(I,+hH,H0n5-H*V)(J(,hH/H(i)J(H(V)(J(i)c)(H)H(i)H,c)(3H*i*I*H,i)I,4(3(-H(H,W)(H-I-H,i*I,4)3(3(3H,H-I1H+I,H.i)H1V)(J.i(v5(33H.-H(H,i(c)(H,i*I,4)333)-§i*I*+§H*iHn,hi73H,H(i)8(H+J+H)P*(H*V)(J-r,§H)P*,H.i)H+H,i)V)(-H*i*I*H+i)I+H-H.I.H,H-i)I,4)333Ã+)-§iø7i(^*(iü7I,*h+hH+iDn,h*hilI+i)I,+hH+,hH+iô7H,c)(i)H+i´8W)(H,I,H+i*I+4)-+hH(H)8*J-i(p5.*h*h*hH-i')u,hH(P*(J+,hH(P*0J,H(P*,n50H+H,H-b((3H(P*0i)I.4)3H-i¨*n5*H-iÅ*s,hi73H-i)J+V)&+I,H(H+V)æ,8(I.H(H*8*J-i(p51H-i)J+i¸7V)(H(H+iø7V)(8(J/H(P*0J+s,hi73H+H,H.J,I.H(P*(m5(H.H(P*,s5.+hH,m5*H(P*(J.H+H.H+H/U((b((H(H(P*0i)J+^*0H,i)I,4(3(3H(H.^*03H-i¨*o5)33i(73(3(3-H,H+i)c)(H,i*I,H+i)I+4)33i)I-3H-3!2)0§K(i2J,L(H,H(^*(H,H*^*4H,i(^*0H,i(^*DH,j(_*<H,H)P*(^*,H,H+P*(^*8*h*h+hH,i)8(I3i§I**h*h*h*h*h*h*hH,i*8(6+(),03H,j(_*@i*I-H,P*<J.i,J(H,P*8J/s50H,H.i+J0^*<i¦I*H.H,P*4J1J.U(*H.U((J2i')o5/H.U()I.H,H(^*<H0H1U((H.i0J.i§i0i')o5/H/H.H2J*H(J.q50H,P*0J/H*I-H,P*(J0,hH,P*,H-q,hi)I-423+hH*m5+H/H0H(H1U((b((H/i)I/H(i)I(H*i)I*4(3(3H,H.^*<H,H-^*04*3iØ1U((5+i(I(i¨7i1^*(i$6iè1^*(i°7iè6^*(i¬7iÈ6^*(+hH(iÈ*n,hiÈ*I(+hH(i¨,n,hi¨,I(+hH(iØ,n,hiØ,I(+hH(iè,o,hH,i-H(i0c)(H(i*I(4)33iè1i1H,i-iÈ*8)Bi(I(+hH(ido,hH,i-H(i-c)(H(i*I(4)33iÈ6iè6H,i-iF8)BiØ1i)b((41-H,i-H(i/c)(H(i*I(4)3(3(-H,i-H(i1c)(H(i*I(4)3(3(-H,i-H(i0c)(H(i*I(4)3(3(3H,H/^*0H,H(^*<3i(I*4*3H,H,i¸)^*TH,H,iø-^*PH,H,iX^*LH,H,i(^*HH,i-8(I(H,i-8(I-i¥I*H,i,8(I.H(iErH-iEr5)H(i©*I1H-i)I0i(i;H.i,J(i(H(i(rCJ(J*H*i;sCI*i¨1I-H(I/+hH/,hH,i-H-V)(i)H,i+8(c)(H/i)I/H-i*I-H*i)I*4)-H(i)i¨1I/+hH(H*o,hH,i-H/V)(i)i(c)(H/i*I/H(i)I(4)33i¤I*H,iø-H,i¸)H,i-i;8)5+H0H1I2i(I-+hH-H2p,hH,H,iP8*J*i(p5-H*i7u,hH,i-H-i)H*c)(H-i)I-4*3i(I/i+I.i+I(*h*h*hH*i86*(*)3H-m,hi£I*403H-i)H,W)-I/i*I(4)3i3I.i/I(3H2H,H(8(H.J(H-J.p,hi¢I*4.3H,i-H-i)I*+hH(,hH*H/c)(H*i*I*H(i)I(4)-H.I-4+3(3(33H,W)1m,hiI*4,3H,iø-H,i¸)H,i-H18)J(,hi¡I*H(i(p5,H1H,V)ú-H,V)ø-o5,3H,i(H,iXH,i-H1i)H08)J(,hi I*H(i(p5,H0H,V)H,V)o5,3H,H,iPH,iH8+I*4+3(3(3H,i$6i¬78+I*3H*H3m5(3i)I-H*i(r5)3H)H,P*0^*(H+H,P*<^*(H*I-3H,i2L(H-33Á)+(i¨03b+(,(-(.(/(0(1(2(3(5(7(9(;(?(C(G(K(S([(c(k({(((«(Ë(ë((*)(iø03O)()()()(*(*(*(*(+(+(+(+(,(,(,(,(-(-(-(-(i¨13M8(9(:(((0(/(1(.(2(-(3(,(4(+(5(*(6()(7(T7*S7US0U `;
|
|
4588
|
+
WASMAudioDecoderCommon.getModule(WASMAudioDecoderCommon, puffString).then((wasm) => WebAssembly.instantiate(wasm, {})).then(({ exports }) => {
|
|
4589
|
+
const instanceExports = new Map(Object.entries(exports));
|
|
4590
|
+
const puff = instanceExports.get("puff");
|
|
4591
|
+
const memory = instanceExports.get("memory")["buffer"];
|
|
4592
|
+
const dataArray = new uint8Array(memory);
|
|
4593
|
+
const heapView = new DataView(memory);
|
|
4594
|
+
let heapPos = instanceExports.get("__heap_base");
|
|
4595
|
+
const sourceLength = source.length;
|
|
4596
|
+
const sourceLengthPtr = heapPos;
|
|
4597
|
+
heapPos += 4;
|
|
4598
|
+
heapView.setInt32(sourceLengthPtr, sourceLength, true);
|
|
4599
|
+
const sourcePtr = heapPos;
|
|
4600
|
+
heapPos += sourceLength;
|
|
4601
|
+
dataArray.set(source, sourcePtr);
|
|
4602
|
+
const destLengthPtr = heapPos;
|
|
4603
|
+
heapPos += 4;
|
|
4604
|
+
heapView.setInt32(
|
|
4605
|
+
destLengthPtr,
|
|
4606
|
+
dataArray.byteLength - heapPos,
|
|
4607
|
+
true
|
|
4608
|
+
);
|
|
4609
|
+
puff(heapPos, destLengthPtr, sourcePtr, sourceLengthPtr);
|
|
4610
|
+
resolve(
|
|
4611
|
+
dataArray.slice(
|
|
4612
|
+
heapPos,
|
|
4613
|
+
heapPos + heapView.getInt32(destLengthPtr, true)
|
|
4614
|
+
)
|
|
4615
|
+
);
|
|
4616
|
+
});
|
|
4617
|
+
});
|
|
4618
|
+
}
|
|
4619
|
+
}
|
|
4620
|
+
});
|
|
4621
|
+
}
|
|
4622
|
+
Object.defineProperty(this, "wasm", {
|
|
4623
|
+
enumerable: true,
|
|
4624
|
+
get: () => this._wasm
|
|
4625
|
+
});
|
|
4626
|
+
this.getOutputChannels = (outputData, channelsDecoded, samplesDecoded) => {
|
|
4627
|
+
let output = [], i = 0;
|
|
4628
|
+
while (i < channelsDecoded)
|
|
4629
|
+
output.push(
|
|
4630
|
+
outputData.slice(
|
|
4631
|
+
i * samplesDecoded,
|
|
4632
|
+
i++ * samplesDecoded + samplesDecoded
|
|
4633
|
+
)
|
|
4634
|
+
);
|
|
4635
|
+
return output;
|
|
4636
|
+
};
|
|
4637
|
+
this.allocateTypedArray = (len, TypedArray, setPointer = true) => {
|
|
4638
|
+
const ptr = this._wasm.malloc(TypedArray.BYTES_PER_ELEMENT * len);
|
|
4639
|
+
if (setPointer) this._pointers.add(ptr);
|
|
4640
|
+
return {
|
|
4641
|
+
ptr,
|
|
4642
|
+
len,
|
|
4643
|
+
buf: new TypedArray(this._wasm.HEAP, ptr, len)
|
|
4644
|
+
};
|
|
4645
|
+
};
|
|
4646
|
+
this.free = () => {
|
|
4647
|
+
this._pointers.forEach((ptr) => {
|
|
4648
|
+
this._wasm.free(ptr);
|
|
4649
|
+
});
|
|
4650
|
+
this._pointers.clear();
|
|
4651
|
+
};
|
|
4652
|
+
this.codeToString = (ptr) => {
|
|
4653
|
+
const characters = [], heap = new Uint8Array(this._wasm.HEAP);
|
|
4654
|
+
for (let character = heap[ptr]; character !== 0; character = heap[++ptr])
|
|
4655
|
+
characters.push(character);
|
|
4656
|
+
return String.fromCharCode.apply(null, characters);
|
|
4657
|
+
};
|
|
4658
|
+
this.addError = (errors, message, frameLength, frameNumber, inputBytes, outputSamples) => {
|
|
4659
|
+
errors.push({
|
|
4660
|
+
message,
|
|
4661
|
+
frameLength,
|
|
4662
|
+
frameNumber,
|
|
4663
|
+
inputBytes,
|
|
4664
|
+
outputSamples
|
|
4665
|
+
});
|
|
4666
|
+
};
|
|
4667
|
+
this.instantiate = (_EmscriptenWASM, _module) => {
|
|
4668
|
+
if (_module) WASMAudioDecoderCommon.setModule(_EmscriptenWASM, _module);
|
|
4669
|
+
this._wasm = new _EmscriptenWASM(WASMAudioDecoderCommon).instantiate();
|
|
4670
|
+
this._pointers = /* @__PURE__ */ new Set();
|
|
4671
|
+
return this._wasm.ready.then(() => this);
|
|
4672
|
+
};
|
|
4673
|
+
}
|
|
4674
|
+
|
|
4675
|
+
// node_modules/mpg123-decoder/src/EmscriptenWasm.js
|
|
4676
|
+
init_define_REVIEW_PROMPTS();
|
|
4677
|
+
init_define_REVIEW_SOUNDS();
|
|
4678
|
+
function EmscriptenWASM(WASMAudioDecoderCommon2) {
|
|
4679
|
+
var Module = Module;
|
|
4680
|
+
var out = (text) => console.log(text);
|
|
4681
|
+
var err = (text) => console.error(text);
|
|
4682
|
+
function ready() {
|
|
4683
|
+
}
|
|
4684
|
+
Module = {};
|
|
4685
|
+
function abort(what) {
|
|
4686
|
+
throw what;
|
|
4687
|
+
}
|
|
4688
|
+
var HEAP8, HEAP16, HEAP32, HEAPU8, HEAPU16, HEAPU32, HEAPF32, HEAPF64, HEAP64, HEAPU64, wasmMemory;
|
|
4689
|
+
function updateMemoryViews() {
|
|
4690
|
+
var b = wasmMemory.buffer;
|
|
4691
|
+
HEAP8 = new Int8Array(b);
|
|
4692
|
+
HEAP16 = new Int16Array(b);
|
|
4693
|
+
HEAPU8 = new Uint8Array(b);
|
|
4694
|
+
HEAPU16 = new Uint16Array(b);
|
|
4695
|
+
HEAP32 = new Int32Array(b);
|
|
4696
|
+
HEAPU32 = new Uint32Array(b);
|
|
4697
|
+
HEAPF32 = new Float32Array(b);
|
|
4698
|
+
HEAPF64 = new Float64Array(b);
|
|
4699
|
+
HEAP64 = new BigInt64Array(b);
|
|
4700
|
+
HEAPU64 = new BigUint64Array(b);
|
|
4701
|
+
}
|
|
4702
|
+
var base64Decode = (b64) => {
|
|
4703
|
+
var b1, b2, i2 = 0, j = 0, bLength = b64.length;
|
|
4704
|
+
var output = new Uint8Array((bLength * 3 >> 2) - (b64[bLength - 2] == "=") - (b64[bLength - 1] == "="));
|
|
4705
|
+
for (; i2 < bLength; i2 += 4, j += 3) {
|
|
4706
|
+
b1 = base64ReverseLookup[b64.charCodeAt(i2 + 1)];
|
|
4707
|
+
b2 = base64ReverseLookup[b64.charCodeAt(i2 + 2)];
|
|
4708
|
+
output[j] = base64ReverseLookup[b64.charCodeAt(i2)] << 2 | b1 >> 4;
|
|
4709
|
+
output[j + 1] = b1 << 4 | b2 >> 2;
|
|
4710
|
+
output[j + 2] = b2 << 6 | base64ReverseLookup[b64.charCodeAt(i2 + 3)];
|
|
4711
|
+
}
|
|
4712
|
+
return output;
|
|
4713
|
+
};
|
|
4714
|
+
function _INT123_compat_close() {
|
|
4715
|
+
abort("missing function: INT123_compat_close");
|
|
4716
|
+
}
|
|
4717
|
+
_INT123_compat_close.stub = true;
|
|
4718
|
+
var __abort_js = () => abort("");
|
|
4719
|
+
var __emscripten_runtime_keepalive_clear = () => {
|
|
4720
|
+
};
|
|
4721
|
+
var timers = {};
|
|
4722
|
+
var callUserCallback = (func) => func();
|
|
4723
|
+
var _emscripten_get_now = () => performance.now();
|
|
4724
|
+
var __setitimer_js = (which, timeout_ms) => {
|
|
4725
|
+
if (timers[which]) {
|
|
4726
|
+
clearTimeout(timers[which].id);
|
|
4727
|
+
delete timers[which];
|
|
4728
|
+
}
|
|
4729
|
+
if (!timeout_ms) return 0;
|
|
4730
|
+
var id = setTimeout(() => {
|
|
4731
|
+
delete timers[which];
|
|
4732
|
+
callUserCallback(() => __emscripten_timeout(which, _emscripten_get_now()));
|
|
4733
|
+
}, timeout_ms);
|
|
4734
|
+
timers[which] = {
|
|
4735
|
+
id,
|
|
4736
|
+
timeout_ms
|
|
4737
|
+
};
|
|
4738
|
+
return 0;
|
|
4739
|
+
};
|
|
4740
|
+
var _emscripten_resize_heap = (requestedSize) => {
|
|
4741
|
+
var oldSize = HEAPU8.length;
|
|
4742
|
+
requestedSize >>>= 0;
|
|
4743
|
+
return false;
|
|
4744
|
+
};
|
|
4745
|
+
var _fd_close = (fd) => 52;
|
|
4746
|
+
var _fd_read = (fd, iov, iovcnt, pnum) => 52;
|
|
4747
|
+
var INT53_MAX = 9007199254740992;
|
|
4748
|
+
var INT53_MIN = -9007199254740992;
|
|
4749
|
+
var bigintToI53Checked = (num) => num < INT53_MIN || num > INT53_MAX ? NaN : Number(num);
|
|
4750
|
+
function _fd_seek(fd, offset, whence, newOffset) {
|
|
4751
|
+
offset = bigintToI53Checked(offset);
|
|
4752
|
+
return 70;
|
|
4753
|
+
}
|
|
4754
|
+
var printCharBuffers = [null, [], []];
|
|
4755
|
+
var UTF8Decoder = new TextDecoder();
|
|
4756
|
+
var UTF8ArrayToString = (heapOrArray, idx = 0, maxBytesToRead = NaN) => {
|
|
4757
|
+
var endIdx = idx + maxBytesToRead;
|
|
4758
|
+
var endPtr = idx;
|
|
4759
|
+
while (heapOrArray[endPtr] && !(endPtr >= endIdx)) ++endPtr;
|
|
4760
|
+
return UTF8Decoder.decode(heapOrArray.buffer ? heapOrArray.subarray(idx, endPtr) : new Uint8Array(heapOrArray.slice(idx, endPtr)));
|
|
4761
|
+
};
|
|
4762
|
+
var printChar = (stream, curr) => {
|
|
4763
|
+
var buffer = printCharBuffers[stream];
|
|
4764
|
+
if (curr === 0 || curr === 10) {
|
|
4765
|
+
(stream === 1 ? out : err)(UTF8ArrayToString(buffer));
|
|
4766
|
+
buffer.length = 0;
|
|
4767
|
+
} else {
|
|
4768
|
+
buffer.push(curr);
|
|
4769
|
+
}
|
|
4770
|
+
};
|
|
4771
|
+
var _fd_write = (fd, iov, iovcnt, pnum) => {
|
|
4772
|
+
var num = 0;
|
|
4773
|
+
for (var i2 = 0; i2 < iovcnt; i2++) {
|
|
4774
|
+
var ptr = HEAPU32[iov >> 2];
|
|
4775
|
+
var len = HEAPU32[iov + 4 >> 2];
|
|
4776
|
+
iov += 8;
|
|
4777
|
+
for (var j = 0; j < len; j++) {
|
|
4778
|
+
printChar(fd, HEAPU8[ptr + j]);
|
|
4779
|
+
}
|
|
4780
|
+
num += len;
|
|
4781
|
+
}
|
|
4782
|
+
HEAPU32[pnum >> 2] = num;
|
|
4783
|
+
return 0;
|
|
4784
|
+
};
|
|
4785
|
+
var _proc_exit = (code) => {
|
|
4786
|
+
throw `exit(${code})`;
|
|
4787
|
+
};
|
|
4788
|
+
for (var base64ReverseLookup = new Uint8Array(123), i = 25; i >= 0; --i) {
|
|
4789
|
+
base64ReverseLookup[48 + i] = 52 + i;
|
|
4790
|
+
base64ReverseLookup[65 + i] = i;
|
|
4791
|
+
base64ReverseLookup[97 + i] = 26 + i;
|
|
4792
|
+
}
|
|
4793
|
+
base64ReverseLookup[43] = 62;
|
|
4794
|
+
base64ReverseLookup[47] = 63;
|
|
4795
|
+
var wasmImports = {
|
|
4796
|
+
/** @export */
|
|
4797
|
+
"j": _INT123_compat_close,
|
|
4798
|
+
/** @export */
|
|
4799
|
+
"c": __abort_js,
|
|
4800
|
+
/** @export */
|
|
4801
|
+
"b": __emscripten_runtime_keepalive_clear,
|
|
4802
|
+
/** @export */
|
|
4803
|
+
"d": __setitimer_js,
|
|
4804
|
+
/** @export */
|
|
4805
|
+
"e": _emscripten_resize_heap,
|
|
4806
|
+
/** @export */
|
|
4807
|
+
"g": _fd_close,
|
|
4808
|
+
/** @export */
|
|
4809
|
+
"h": _fd_read,
|
|
4810
|
+
/** @export */
|
|
4811
|
+
"i": _fd_seek,
|
|
4812
|
+
/** @export */
|
|
4813
|
+
"f": _fd_write,
|
|
4814
|
+
/** @export */
|
|
4815
|
+
"a": _proc_exit
|
|
4816
|
+
};
|
|
4817
|
+
function assignWasmExports(wasmExports) {
|
|
4818
|
+
_malloc = wasmExports["m"];
|
|
4819
|
+
_free = wasmExports["n"];
|
|
4820
|
+
_mpeg_frame_decoder_create = wasmExports["p"];
|
|
4821
|
+
_mpeg_decoder_feed = wasmExports["q"];
|
|
4822
|
+
_mpeg_decoder_read = wasmExports["r"];
|
|
4823
|
+
_mpeg_frame_decoder_destroy = wasmExports["s"];
|
|
4824
|
+
__emscripten_timeout = wasmExports["t"];
|
|
4825
|
+
}
|
|
4826
|
+
var _malloc, _free, _mpeg_frame_decoder_create, _mpeg_decoder_feed, _mpeg_decoder_read, _mpeg_frame_decoder_destroy, __emscripten_timeout;
|
|
4827
|
+
function initRuntime(wasmExports) {
|
|
4828
|
+
wasmExports["l"]();
|
|
4829
|
+
}
|
|
4830
|
+
if (!EmscriptenWASM.wasm) Object.defineProperty(EmscriptenWASM, "wasm", { get: () => String.raw`dynEncode01dd21c54d17j¢>¡-é!Dt 9&W U§®}»/6|ºì,ÜÐ*ÝÙÂ:C#ÈEÅõkµÄqÁ¹BCdq$GPPxÚý¾ýB{jð=M¸ìOÑ-Ia,¢áÅ Ó®µôEù= *f®Ø"þèÒ ËøÓÉÄà󫤡ù|þ«ôñ«´ÁÜú¤«ìe«p±§W6(¶¢ÏÑIZ»¥'T28òÞ6<±*h²ëHñ'q©ññ+9LÏ8n'!ò©åP.Þot__¹§ü 0J]ío Zï óÚºM´õjÈ¿n)å½ðN\]óÐÖ]±<¿_>»5Ûÿ-'2[HÕo×m}&xÎÿú&ôì¯ /ý§iÂÐÈRB÷¸M°G÷;;T8kB7ïQûzL´¨ÛÍD9$EnA¶¸ûÃv4òCû㨾YcÐ>t2çZéÂ{¬½«KØB6cvpR=}vªã4ÀP¿Ø»ä4ûwѽ®üªä~Ô±CÇJÓª±.NÉ\*±8jècª= |_VÃK×ã2)§}¼
gb/!ôÀV~:0-ÈÀu²Ì/@LO*ÃL1?çRMljÀw
|
|
4831
|
+
K<î ¼G$ý¿¸É´g¢ô°rTªS¨Ð²éfªm½y
|
|
4832
|
+
|~¦À?Ä;Ä¡gmjê'IhÅüO0b¢¹1ÜÎhj÷ÓÚ:rþ^KÓYٺʹ«IÚ
|
|
4833
|
+
Ú©»WõªÁÞ\vvw+Ô^¤hÄ|´Dl*6¹2ÌðPF¼)\HQcQu%Ê,Jd¾7«Ô=Mº®nø½ÞÈö6×Á?ì EôQÞ¡éRÝ¡W*muú®¨ ñsÊWÂÌ5Î= v[x¨}\¦Æã£Q>wÀBÁ×(~;Þcí¹«
|
|
4834
|
+
µËMµ;×ý¢¬²ùä#ÎöúëÆê<|Z,ªq1ldõtpNnÑL³k?Ü=M ¡Eõ¢ñVYÏ þH_Bî)/¦'aP= Ôæ|vWh ÎKQºP¬l¾ß®mñ9ÊA¥»-BN*´.bÎ)SÚ!AY?b=}Ù/ii·J9+cRòô
|
|
4835
|
+
ΤíÐäsÊsùH43í~¢±_r¦Îrýâ~d8c¨ÇMéBaJ-geÔz
|
|
4836
|
+
õPðð¿ç§d'´1; {ÑÄÐßëvïuøOªf2ð¿áâ9ú¢)=M2Î=Mí}YíUbia½øy9Ø'{Rud Éß$Ïi=Ma±n·ìæ(®¤ûÑz9k+íB©ÀòÑ¿ÕÇ*®ò[.¤íûF~¾
~PËX¤7ãÚTEN=}¡?½E«Â(c#§ åq4gQzx÷±[
|
|
4837
|
+
hë¡eYÌ9] ÀGû¯¦õ0DÖmC=MF³XpȾXéÔÏRØïwµð¨ÉrH~ô8Âêx鯫g+oQXÌËïvòpØ=M)/"T'48!QòѾré½òR=MPx®5Ë»ó= à?k$?Vª= ¸Iæ§gY;ÈQ®q¹¼"t¹§; ÛKÖ= VtéjÃ(ÖaM9Ú3°ËTÃ3ë=M¼ÉâÐ8V¥«Ðë¬|òX3¯ÐâIËzb}h&~ÏÙħdÃMBL¢W= vÁÇ&ÏNÉ 1²_èÆðÔ£.%3¹ùÞ^9]i^5ß{¢3{2¡Î;pmþænû?Uï:Zs0£ o7âëü2µhý9f×I]>bd ÃY6Ù$ªâ8L=M/´ôÔ~XMºM:@ÚçW?× ÁóË]Ð\ÜæÑF¥7. EXU? ÝxزËï˪ÐÈó¸3y!Q¸*H¼ð¨·cèâÉ´ 8bÛW<Ó6§ÈgòñÌ& ä;;ÌÄ9׳þ(\,zþj}zS6}µlkñ4þpêñ?0¹´zõíoÜL¹n¿ÜäÕL×[MZ>ÁKæµIØ¥pÀù¦Ï ¼ºòÏ«ð¯öþÞ$-
|
|
4838
|
+
nm;hÄzEL´9¼Ìû ŵºÎ¥½Â©»~>µzt[¼É NèUÈfØÔn£Ç]e?¬ogM¸»ïM.}:ßñÄð㥽á<$Kݾ×^ý¹¤ÐMètÌZ þÏcX= mÉqâ%ãa°d×
|
|
4839
|
+
ZÌA*¼L|àýw,ØnÑ&+"]ìÂÏ(/Ñÿ
|
|
4840
|
+
ü£#bÊî´[?Ñ'¼É>L¶yÏwÔBTNÚÔ]÷V»v7 Ã_^çwhshÊ= N´¯ØõxJ Ø½ÊØi
|
|
4841
|
+
Æ?èÇ"X¥¾ð§Z<0îA¶õXXËÒûÞÆ[=}õ
|
|
4842
|
+
Ç5ÙUùLìÿÙ¦*LáôöÚ·éXö@,ØF¨JY¹(õßOû~÷LÒkjU @]%«Ì= .ý ½8¶ÉØúlqü5ðWÿë@ÌOöS¥¦q
|
|
4843
|
+
D¸DX$Ðý-D¥®Ç0ëjÌ4F)%¥µ/kçjE1ξȷÒr÷ë½CÔ-h&ðÅ:?¿;A?elB¢ë' õãwZwüI÷Ã&çêh<xYñÒÿЩ=}
>Á¸L°8u¥÷S'º(ND½ú2YYü÷4AYÓ»Y¥©ß°½xuæJS½c´pbiucb©Ç^¤cÙ#¥û~X9éÓnI/óøæ!OcÇLëSqg¬7®úkê¬ù~ã+¶MEö£i>Ýh 4h6ª(¢¿+ûÒùYÉù³B<\ùèÜB
O¢wUo³up £x/¢ñaʶnÿv>^èÃ2Oüª®o[ù?PN%ÿ¥úýü0¦M§HÍ)¡ÈÊ>ueÞêJ<øRÐLº]ÆÝàãcï¢
|
|
4844
|
+
ô_äéË*v;ªñ±Ú"é[= [^.]OÀ%·°5lÁr6;À3<IÄLÄôÔÓö yùÐzßH·U´= ]| @Cã̬¤IåÀPÔZ²w²§dã*.42ÔQTR4ªÁ×WÔÓNâ&«À®(jâø(´r0Iíc_µ,ªñsÈ["Æ. ?Bj7#êTÚKÎ8ÜT7HUØ,Ûo= ªs®=}Y¿<<uXJHÕrü×£Öô9ÍAáªÃD¿Pq÷ÒwÕ03]ò5 Ø´Ôê²ü^pkÈÚÆjðôâñêzwÜè»sÿ|xX¿Ëµ÷ëÁ¬L´Î¤wàÇä4x½(3:0ÂËU¤ûê÷{öáÀH®<QÙx¾ÇôèBÌÔ4´#mÞÕÛ¤òch¨d¬\¹æ)õªC>Ó*ed]§níö¸?lJóC^fwÅí¡§~ä<T@¸§ZTû[grÖptòÅîñO¼|WØ©æ=M
,,ïx?^À7ÔúYPó@ì 75«JFhÜèMáTWeÆò=}3e¤xÇeú1Y«ùѽ'$ÑuüDû±tJfþvHV ´ëê=}À¡~Ñ´kíå|W#¬ÊÙ¾=}ùß<Pà
|
|
4845
|
+
V±
a
æA¡¯}ä#w×A¶´SxûëívÉàSXãë)êq9S9¼~ê'lÖPÂ2ʱoàý¡±o
ùÂMç.ôÞ1os¯N°ò¼1£¢8Õu:+doOȰiÖê9LTüh®=}Êà22>¢ÿøIáê (xU_>÷À¾½Ïéٹ²é´ÄòJ4Nºo20ÎUkgNì%Ô&GSyf*õàÓäÍ´rò#6Të½Ê= k½Oñt5
ê;mÓÝ[¯g'N'v]dC²R+*f¸ôw1´¶sµÿÉGnËGnâ·9DMÓ˶X@{¿'iÛ]T®ÐÕP+f= ë
´¨nu»Àôï½ü(¦&ý[|çAbiD¬ÏÓSP¼5ù]×1Ì-Ω94ÓKÞÔ¡E0Uy2O,Ó/!sÛË4J#ï®Äd;´Ä·ÿsg=}]ØÊ¨èl'³x>×¾~^øë¿¬H¯¥gÁ' ù±"hRSR5Í-ý°{.<l~Lí¢ý7ôgÊCâNùü
|
|
4846
|
+
±ñy
|
|
4847
|
+
y¥_¿SXtRðNK{2î8RwãÕ9h¹=}ç5û½½o´kºÑECì¹jÜ Ã¼S eNô-¯³^dgR b²ÈÁuE×<®mù)xK6ó¬ ¼ÊÕÖô;hSÃü\ÖÕd|ÐÏiM ¼Â\5Ím|Ñcâ<Ü= Hx}d½IZ¤x,©Ù,M»Î¿öôù7È|껦qðð¬.e»ËM%Pè:ÓÔ@Ïùûð ÎWååߢîôIýQ<|ê³SJþÝÛLõf¤ # ÓûúlT¥ÕöÎ0,£,
,ÄüÌ+É!1üAÝû×¥
nî>â å÷%{iæýʬ ö²YP¤3ïÞ»hå·xµ'¿Å*)Ru´Î¼æ>ïQYõb/c2þßgY²?2pÎ1T¤0GEºTìAñº=}©Ò¢qý*æ!ÈÇýà^#XT¢ÊY<,SØ3]¶z_nPȳÕ= ÏG!V³µvx
|
|
4848
|
+
~3IìüàS7ªC¿ÉQs¶Cò§0ô¶;kw*4Ñÿ,$ʶöòJEDи
¶À%A¤èSüChò:ͱ:¥$AÄ´I<"DfáÂ6=}êy÷Ϩh\ÖgûãJv2)½&=}Wj:ÅÅÝ÷x;þ©ÅÞïuM6ç2õ¨n6ËHãläþè©9þ©Å[þ©èHóG¿g{êvæPËÌlÅ·Ô(ìªÚ±à¤dM_¬àMoÇ^"K¬äáW}¼ÚóøJC>H+ŰMN^v>gÔ,x¸(G}ÇË,v´(HSv«jX>l c»4Pê,=MêùaIºúÍaO
²É§w
|
|
4849
|
+
̯¤ö<¢I^Âô±Yº¦m[cùÄvFõ7àzÐÞÒ±êqö¨cXgætŨøù0JáVí@ÿ0K(uc.Õ2ÑUsé¯kô·ÎÒ¥©À|¢Eý¬
v?>D±Oã®C×]tdzw¢Qk\SAÐuäã:¤ñ«NC±)ÍFÕ|¶ùJ:²½Á²#môàÆdô³AÇ '¯,4=}åJnóncoý§oÿWz¸6>kx[Õ³ä'KØG-¥©u¥ÖjjÇd<ýѱÇó,ßILMOG¥Ð^ñ¢[Ê5.y¯fQ¿µ~
|
|
4850
|
+
|
|
4851
|
+
ó¤s³*çè¹ 6 GOïù¦xpÈ5Ci¬à±¢Í=}H2?Õ¶CTö{
|
|
4852
|
+
#C°%'E%¨óbGµÞ©fuGF ò
,´É §kÀÝaáõ%!m¤'p/í2âgí·]ã%¨BçôzÁÂ÷Éq%j]µÖUÅÍÁ!(k7%å·Q wçü¬ú@gÃÈ
V*ÖIý¶ª6®oózE;ÒBæøéa|x0$ÐÈ
V:ÖQý.tÃ%!±ïªÈak{5svrñ;E{K§0Yfwdðªø^á:wà®ï±ï% ÷¿öÊ5ßÿá_íÖ®þùcfªCžiI½ÎßNßHgè·ú#³ZXrè´XJÜPe"aÅÓ¨çg®y(¾¤EÍÕÜdñüü¸?ÑÀ°_ýKqè¾£Mn£oH%8hôζx*Åñl::§2Î/OÎ<ßYÌ) ;Õ?ù÷ð¥¿r9T/Û!Òm4Jý^
I è½ïÏ]2Ì=}òhD0&'9oñ'gâ«r~eb= ô]Gök\ÅPVîòç+¤5í?°í?êT9îÿý¾qYM¾ÿmrh*(5òBå¬!z1pF]èUßjYw=Mw)ð+w-þ*%&ðm*ö²3ÂéÏ¢¢¸©^vâŵ?2§ôµ×¼â2Ü2CL¥mTþÈÀj©
|
|
4853
|
+
çÄo¿>E-müíÎmF¼]Räà K·çÉ0à¿b÷çÎwªÏ'Æ©°¦äʸ%½á:¸E(Í7Ù¹ yåû§Ï
|
|
4854
|
+
æqÀæ1½åæX-¬Ó-nÔ^×NZÐmö±£ ¤ìÇÀE-Ï#õãÒìêéÇÞì2ãR¢ HãØñÿµ®ö¯X#;RV=Mµq àOÞØfàôJwM¡ ´ÜÎ5ç+êqdÑ^Ó-UGíS8&- £Y=}(£ÛÒQz¤²g<ñÔs Õs,õ±ªñÌ×[~+É= î âfÛNÚEyдERrHÄV$q²seYFÊÒkqÍÙ·ÚÓå©dJ
|
|
4855
|
+
oanÉkªoÑ=M÷$IIñDOl(ÐW?°+ÊÁ1ª?Ƚ*øTEtÆoÞãû5@¸¹ ¤î//b[»Â$9Ì+¦j¬Y*Eo"·^Elor~ßµÉv+TN?Å&æÊp¬FRiaRëhçY²y©ä¦9öëRdò+Tú!³Õ>
£hPÞ¼ÿëý×?pèý%êoEá^i\á
²Ê^lël=
|
|
4856
|
+
ûygöjUÂÔ(1¯I°Ì1Èð*.ÉLPJ¼
|
|
4857
|
+
7/M§,ú)â+裪á¾CLû^#Êù±¼rNÂ?ÑÚú@ÙºñEçº&¼àîKZ¾þ2aìjSzL ®¬)ó~ñdlB¯æÕÎÍ ¤]¤å>= ôS@¯j$½£QÉCYàÑuÝxÓKü¼¡ÔÉâÓ?^f[]m´@JÕ¡ÀÅg?:hÉìÊ#}"ßÃX.8<¹s]FÈ()×[ZI2-}LA0òÏÔöMæY3/q-ãþþúGareOR/&{X\?[òzÎÍÕéÌH°ã}Â:ûä«8æ= S°wîEjj»fLa,¤ý»R0õÈj÷a0ÖæXÍØ^epÿÏ?Gºåï#Zòl41bïA÷me§z d¤+ 8|ük½
¤ÀÝïÕ5ùe<kX´ìMÑë©
|
|
4858
|
+
<$àrÑúËP<âmNʹÒIí²ë7«_¹ýpvß÷c9JÐö?ÎÕ¯à%J¶Ç'ò)²ª¯+ÀÛêTUÄQÄ/^ùKQx(c½(ó¤X r¨NoïyW
:Rj1©= ¶©Isg0ï¢þm òÎ= gA¨0#Xµzù¾¶r6ÆC½KtÀûrAøÖw&4®¿ ôùüZú±|Àoy&â.V\KÃWÃ±Õ }×Vܰ Çé¶/¯zzªèÚÏmo´weRý»rÉX½íM2vDI#xÑ.ÓwÒjü?x@´oÅQ©bòMÄb¼Rä·Ä¿ìAQA,%p"Yô= þÓ¶+ý©cÁí·óN3NµK¯ibmg^ Çï,Wüy1ôís[ÌÂ4µZ;>@gÜdÓ=}8·¦TÍIøz½Ù)vñòiú;¹°#)kü.ÕËâWï¬òF·<ÊNHg7Y|µÜK¬/Jüð3QIÔ«¨f$rjÁ#ü·ªR%@ÆÓù¥P%ZrÂ+jã²¾TfW«.]º$oõÓ:ÝþãÕ]lýÀ0£ ü°öϲÑå ¨ìyìíée0Q^¶Åÿ^Fùg5¿íB¤ »ö
|
|
4859
|
+
U²ÏBàY%´¦Î>¸Å4d|(7©kµm³Í@Yô÷u*"&jr ®xṡ>2Å~£ªwu¯sç¾v2@3@Ñ?þÇ7M±²ÿlsÊ9»^¾Õm2À'#R¥UJU÷Ù;/È]cÔPÚC\>*¦/¾Ã= 6rÇj´è8hÌead
MYyè¿]øÜhWÙ~Ó=M÷+ÞwGñÙ¡ £ê,¥ÝË|îâïuñvæ=MY{æ<øþLÍkÌ%"®uû24@Ï6#ݳ.¶j¼*zg·(«Ú;Ô»Âoôw±Ì¨6ÀMɯcÇÍ®õ}ñÒGðu}ߥöÛWD1ê@dEáÞe#ÁuMJf5\ýE=MAL6ðóRç¤sI gK4P¡ pº¨ñr#+'ñö8ýXJRh|É=}_õ
|
|
4860
|
+
/Å\Á/³Iã=M¹N8÷æp«~ýÉB-jVáaíÔßÔ8/ê¡Å¥B<Öÿ¼ÕÜǯ=ME*ówófsYrûk¹Ñl7²HÛL$ÐòÐlùIwi¦7½ºÚbÔ;ÊÜÌÞÌ\Û§£êP[ûö(ÁøÃÙBJèÇ<IJÌÕIð\i×?¨Â¡HdSèήfÝü²¥~Ì~¬8Ô¿E:IQj4¾§piz½êi=}·Îft=}3+Fdb@wñ¡ÚÑ,Þº4ºZß·Q°¿·O¸JºOò/pÉ3¨¹sz×2f¦Y¶Ó´
|
|
4861
|
+
ùó¦ºÔd}gÁá/ðDQEÂêä8|¾x¬£|{Djb»yª)DþDKt
ɹ¾H×3Ì~f§xæÑ¼*q*ñïP%xR3ð¥h;µÔ_,ò«Ö'FÄÚäYuÐ{$~Ä3Û¶ôT¯ VÜ-âòaÙ7føB$¦·/Ô-S:²v½ÄÛØ»ZÇsrÑAعhåßtA>i½#߸ªlÞ°æ*,¯F³p¯= aÍ3(ÿå-¹f¡&bÊkz¡Ë
æÿÀÿm¡z!>êÆf¯ÖP,p!6þfpõu̸عØK2¶ïAöF²ÄT|ZÓ¶Ä\ÌZôzHq¬ê"tBMA#UØ0eßjÁ½öOØ>%l Ná)ÖÏ=Mâ+$k}ÍÜÚr[í¹ ä²ë/ß
|
|
4862
|
+
ÔPOþ³äàÑkñÆãËgòOî7Dú)LOÖ3FeÐDÖ!#Q¹5a,öÖ ßt>ä9)^ Ãì¥×Q¦Re!îb¹Ñ¶ãEnÈ;ñÄ¥Ì7DcàåpëÃâÚÞn>æøtK-©"W^fÇG©3Ö~ÉÄsÚ"«¬^?«Rgm¨ÿìݽ.®NþâE!Á.EMù&B$* Ð2Ô@Þ3л,ðDùaB±QxeLÅ3gIQF 3Ó¹ÔîÌQ½<ìW|ÕE®ì¸hlf%ö>bñs:ÚK¯¸ÎsD×å§óMÔ#ÿóØKO$=MRÃíor:+!óòâHH!«ÊÖÞvo|sè®§ é¿íñ~~«*wâxÞt¨¥{và}åÝÑR4_Hpà¶Pq§>µL,Ĩ=}ãökRVS´DòëwvÈ2cÒÉ3á±Qî1pG"= }²²%Q¡A äмÁàN?ë
ïR"k~qè먼îj©p)tç0Ø¡þðdvìRC.²ulê;P(ÒZI&ªPþ8rÓðHr(gq*'ë¶õ)r Ö+ØQ
Ø&¬sºkÉÔÖ»hÆjéý!¯ µ.øgÖ+¯><Fë^ñÂLÏ>6{SÄRÆ*[
ÝM³?¶i9_AìÐù©"¡?_3(æ(A:Òá(-ý°,ý©õ þbÝWª.¦C°íbuUgQ-Nèûè<l!A¸mþC=MGì]Áü[¸¬eÕê;Ýà@vñpáéݯ uÚRÉûjôt^ƬrT|NtiÈPqûxÓ!ºQ= в»1eFÎÀ9TÎSÆtÎÞÔïöë?öê=}c¨¡ü|+¯bç/ÞGÝ¡ä«çwZØñTlËøi¶X\>òÆÞCØ«ÛOêV¤ä¨ûër6Ò\¿/B×ÃN«Ö°Ð×{èþKlÓk![øûK|ÊXt:;YÄTþFî(ß½ª +¼RSD«¹Vúîú!÷¡Ôû¡3w]Ø{%q,§Ì Nv7¹Do¿HX·§¥vã°Ø§«Of0ìwƯÔ2DâOvôOÎ3VgtÔ4SÞ7{©ÙCSc¨ÌlOf#>B +©ªí??åM.íhâ=M-Y+9Ë= 3%«Õ°RµOö= Òã_rÖŪS¹Ø¤
Ò¨,¡Àle?¬à-ªö½ßíyPåHÑý¿T}· È~²?éùu»)£"_F
SVËó³"· \úEúÂ8÷Fln3_AÍí¨Õ¯nÐiÄÐ<òͫפÈÅt¨Ùç|tkM̼áõà
|
|
4863
|
+
GöÞ9"ÄØSWJ·ÒUæTñ;ë0ÔrpXk£êg7H¥wipy¼à8*a5=}ÙÀê6DoUVýQö0cÔFaüP¾Åã5hDå£Ýà}âìÓ
ýõoñø¬º ÂøôræË*ziɨóÑ^<FÌä=}íRƨ
wN©¯Õ»>NÄIÛ¡öqD=MU³5ÓAàÌWc wóÒ¦FÅ¢¬N±HhLôÚèrÁäpÎÆï|¯V¨{*2KÍÊ¡ìGrÕI
|
|
4864
|
+
rÕSµ5´½® }rëý|"kß,Ãê1ÖZµ§V³à|rÀRk\ÚÄ1k\¹óZ[4É÷wÎB̦<LJz#2Ë~z¾ü¼°årmÜÕt[½_?M©~°÷Ê3!9ÙµîglâÖñÙÉåV¥ûøäÐë= ^Ô/dxk0±:ÿ·6|Áöæ¹ïY«%«j¬V»9mÐIÄ0«|P{=MÄÆS«¤D°R˰oX|3·%"ßÊáo.xp'øG§öÅ¢p cWÎ êIæså³]ÆÑ](h©Î«Og(iþhD(_ì)êÉØpXrß'È×£·©I82= VDŪÅÊ.Û.²ÙLô» u0aÄCÎèºY³PgFùTÐ$h6¡W
|
|
4865
|
+
¿¤_¨~Ȱf\¹ªû¢S·äiÎo?éµéµß#Ücc¬½cpð= Æ^¨yx½ºåa¨±#*=MZ¹åg>øgé%jßÿâ¹öÞý~¸ëB¡ö¦MqCãWKBÅ}4øuîEî]}ÅAÊYëé¹óêºó$&øìÝÉî3ûm[g6¬<Lö^]5¹*÷~Èi:W= «²CLÓËÐyñY¾ú¤¡"F
UiçM³i+z1¼Õ'es[(áíY¨ºßÆú߯ÊBcqîo¡=Mß}B÷%5D=M/àæE¶Ñ¢_/®p42©ü6YJÿë²¢)
h&¸çq2º$L6^ehêk¯ÏÉÂ0Qoé7!Q<¤|újd@+Ttöñ7©L¦u§â¹-o@N8Fà~!7
D»k SH÷nÁLù_,¹E=}=M¯Ögbþp<#±f»ÿ3îA{©ò¯Amk§°ïåõêñL¶é±ó 6¨X¢¸ ó¾·Ç®ÂvÅßRxÒQPÝKDÂyê×zM(ª£wê:L¿¬xoG
ð±Õ=MÁ
|
|
4866
|
+
Ù>fE2@ÙLÆÏ³0fÏö¶ö¯j8ßcåsHýÇ£÷.DÊMôEU¹£ýWW¥@Bü<£Mt:ôP=}CG?RÿTÕm¹me*ìa¡,7gFÉçÃq¦0ç 3 ¶óv0Øë³h©¶#A뫨yÚ´BÿP&D¤ÿPóÿPii|±2n8¸Tý= ¥yÒÓútæá·Q'¿?R
|
|
4867
|
+
7¸mM2
|S2+ñ%û¨áD÷¶ Òî¦ä§N_-ð)oÅ6ço¥2Er!Ó
|
|
4868
|
+
2õ*'ò_<{r!no
}+âu
jèxgéÞóoëLsóF´Ð2)¾+LûÃýØ´Þ¶´ ð= ¤ÙOîPUìR-Òøb,rÚ!kȲµ½}¿êç«;ÐzW÷· ¡= ÑaÂ1W=Màh 0¸.¦[-Âi-úNd1¨(¯þ+?'Þ&DV%[øèycÇ?3*se=}ä^oùFÛ¨èæpp_&+ÿ°âä÷+2úîç´'7êÉðÄØ6kâ!Ãò=M[+çrÒÕgÎsά¢4<V¿ÃQª4v@¨A|&IõO\AA\¬:&Ã8L½½G°"ÌUÌqÍ= óÿt]Ö8b2ë{Õ
¨Ý!Ô8B·«â«®F¬¨ÄͧQÆKÐÅ&èæè_&ð©xL2®æÀõæºGï!taCE1ÍÌ1Í.¸±$ªÒ5ôac)[ÏÖ±g¬Úk{ëÙÛÀÊy®F 4(!=}jITqº8$ó,yTꤨ<·©5¤Jl9µÀ1#-#4D¥b=Mw¾yõ=}v
Òë @ñ©'¡çFHYögfQpÍ9ÎäÔzÿ¾é. â5XOÊ®qÓ4_wÜ
|
|
4869
|
+
\»Õúmq:õó&ßg^_Gÿ¹ä±¥w²RÒóEÆíâlë¨L¹õ|¶
É41Ó.>ï5Ð
N3sÊë4,7H"c´#u= ¸XÊ%«±|üü &5 ¾Êñ~éRåÙ¾Qøô]¡~ù»Øà¯= ëß!R1ïõÃ@9RV=}Àu[ÿ%Þ9ZRþ¾s¾[ÃÑpȬ6¦´Ãø´Ìï©>äÈMkM= $1[ÏU?W¼[OÚ×þd!ë¶æÀg8"×¢^wWû±äár<¨óÏ+k£ñÿzsm\´wm´E1óúîß}L\ö§ïcÅÚÑäò¨º¾WÏÿX©#wD~é2Yú|ê·Êî%!Þb¨ßJÄ}_OFHãId''>ý+ªÿIõÝ5ö4#C{§úoaàËßBo÷ïÐ
|
|
4870
|
+
¨Éh0;ê1Sð²ö= ƺjûîF= ÿ1 Ù¬)EMÐì×@OÆ<ªº¤z¢1¡a|L[tîWW·Ho/õ"ðÙ¬jê+nR}ñ= Fè=M²¬Ùè1r L¨¶'8h!7Ô¯ìê¿ïì×5¿ûU7ú<ýνúÉÎvÃCh"6!4!ÊRM7RÓ¾é²v öP뫵Oåñ¬¸¯ º+©u§Ew-ðØW.ÔH{7-Zź:
|
|
4871
|
+
÷jBSì²2Xò渳3=M+¸ñãîî3ÜpÛ4Z*½ô0Ofú´§wºX]ÈfSÿ1ê·MºX
Rw×_ØT4¬S±ÞSè
|
|
4872
|
+
ú÷ÖSúhæz÷j~à08ÁIX8æ
|
|
4873
|
+
OH¶âäI%˲¸£wï³<&K÷¡æúËä· V*±¾Ó/L2:¾agf-Åd·¥±å1e¸ùAi^¸·ýý¶¯}Kæ©=M2¿?mK_a§r±Ý⮺éøÞáø%¸Q%2vÐf+Û!Ñ;«þw UþøA)<?±´øðu^·ðñC©q»u¡éy³³»ê$&½¡¬R×¶ºZ+æýAB²ûmÓ¿[êG¿^y±ä²
|
|
4874
|
+
2ô3F,ìd¾xþñ2B¡e¾'VãnÍ'Ô²LrÒ0ZwQ$ʽ-ò¹yÕU0ìÆi{O¥ Ñ©ÉÆË2Gg8à¿À÷v%K2<R+§Åº:Óª
|
|
4875
|
+
rú
I[ÓØúðÑÞ= gשz2ez,O
|
|
4876
|
+
âB¬.îLm×±¤¾êØÕX)¯×í\.ú3É7ßç¨ôŽQT3ùãýzÙ>R°àÃ1%ÓØÝhÿí\tÔcÇÆî¾ ö£XðW¨ë±AY¦|ÎRâ<½Í¿-Ò~cO{K,¦§mçB°Äj HÀ8órãè=}6nß\ßàÈ+Ùqð21QènÁñoÑì.p¨±Û
îðʬa9-gUpüjâQ8zõÏs»Ä_=}pþ3=}ÚT2\ØLæX ¬ ð ôW1ÿ·ìîû6
|
|
4877
|
+
~~IÌ.þ{?À7³³¨¶¡ F#3ªxedat\'EññzúIµåäxü4ëä¾Að±×â¹±{Øè¤üb¯ôVJ^º:â¸EúÅçZÆl¯}PXz&ñY5= <f-_d5·~Ç3Ú#ê¯éöGêzoç2Möè#ÏWíÓìÃS#jÅ=}^k=}ÁÉâáÆl$áȯïJº»ß¬Ñ4ÌúËÄo
|
|
4878
|
+
Â({¹C
|
|
4879
|
+
·@¬Â¾·Gþì¯%ù¯ÍcGì-vç´Dàwq¦Ø.ÝýÌ7O9A#¾àèË?ÕE.= 'óÙ09$ ?iÅNQ ÝoÓòùºà%eñÍѱ 5I2ÏΪü«¿³ê©ç7CÅM¦©{6 ´ù0lìkú9L51¨iÑðe
+Ú3OFRì%¥À{T
|
|
4880
|
+
~Õ®{a/¨CY|TèÐ?5®_"5ÑÍBôõ½¢7øÅ¹õj*ñû*9\¡KG¹Ë=Mî®Ú9&[¾´_î¾TÓuVò3hB;}à9ñÏ>îýcbH°dó9k¬!Aêo%dFaoDf4êÇÉÞ¯È%â÷õ£Îë.
= ¿fÝ©"Ùuh²ÆU¡2c0"m뤤e¹Õ]º:Xõøh±Jóâªy¬Ùî÷Õ=Mrµûº9ó"'4/AÙ]U(qù¢Yµ]é¼Ûé
|
|
4881
|
+
= {ë®A¹Rk¥['(y÷%16bJTJª÷+fprP+mÙã_ÞÍq·ÝÈ>C]8!*VýAÍQât¯çñ|$tbá3ϵ2¸éâÒ444gQ~x÷¬ó¸¢¨"UT
|
|
4882
|
+
¿:-Lü{$ÚÂ"1Öohu\íÈÀÿÝ\évg¢l!8ª"±@¯û !Nª6ô±|VQÿ§ëoéWÓ½Ój¹ö1P>²öí@ÃüÚ_áHÓiƦ{®x{Z.@Ëö°ô°ðQqþM+@â/«2°.Sr
|
|
4883
|
+
¨zTxûx<´¤¹AÃÇ´±@Ë6ȾʫªÏýÔ%Ònä F;;Sté XqM,©?vÀïªìÉÐ)Ó_yPÔ]yØ1¤Ô10Døª(årMã=Mú£Ç,\ÕT2D*7R³}2~rª3ðfb%ïû CÕv¾Âköv¨ÿÂ[-
iQÔ7UÔµz*c
vmÃÉú«>CB{ËÚ
|
|
4884
|
+
»"v͸|¦ã§÷H÷
+v²zØdw5lQ9ÿli·p¸]ÅÏ ~å¹!ÏJýJÝÁ½ÃvnÊó{QĬô&ÿ= !ÄqÂ*)#¼m9dÙCýªË$N½³ËÛÊoBsàÒç,IV?À"ÎaKúÊWäÈÝÞTwì Ý£u°x!^[TNÀÐäyªHixR©ö¥#úæFÈ¢kw4\%ºó¯_q}é¥6hûÛ¾x*l»wÑÅl»W5ân:þ³÷[°:HÕÂg/H¯7´þ1DÓ¹¸4|#¹*I-²dw^Ì3
|
|
4885
|
+
êX|pÞz?åߢÁsËVÅ),Ù®Pó- ôæ;ý!ù3[õ(Ìî·²@p¦%ó+6X¤zBs]¨á ÆÞ4=MÅÍpû¢âÌQd!VzwUQ¸= ®= = yÒc ë~å²;Eó·}õj2@ç)3÷W?%óf8=M@!ܹRQlÒr¯Ä+dÂFó7ÈïöºÌÉ/[§5Þ÷ä$
=Mô4:}ôR5ìM¹G22¸¯çR¦ÛF²TÅѳ!Ô¹ÅÑ{ðúS,u*èZHW7$û×à¸æ±Kõ^p½kÕvÐãõgkì|/ÿý!Ñ=}r]ÛÎ[¨¸?
¬nMæ^÷»´DgF¡Tn"l½T0õK¶ïÆfPXµL!/4FÆjÖ(BêôUOI±6ð´Õ9HÀ'19teÈy¤R£ûL¸H9 RNê¤Óñ4;<c@9X¬jHLê9²
Õ+ÚÜâ´ü¡ÿzÚ0÷Ù0ù/DÁïæÛ ØAÛ<#mÆ+Z÷fDZVþéÂýC÷tßW{Iô» hÃÃìetø¸=}!͹Dß®¼
|
|
4886
|
+
?ï}[ÛaäKè.0¯à= ëj««¯½Àáùÿtêw²WÈ+¦_&Æ¥uÀ4¯RËFï¯Wýyuj§¯ö²q{7kþJQŰEï¸;1¤ÎØ·&9¡g= ¼õhLëh¿OíOæ/+9 æuEG9
|
|
4887
|
+
C¶Ðjþí«c.Py)©1^Cج£U7Íú.ƬÀÜ e;ó3±¥(²n°ÌðiÎQ±NcdØMGúù=M´¢ ê2¸ïNsmÎt=}²Û½dÔΤàW(ÒQ|Yí<[Û»yÚF54Ç*DS·/a@(Xî½4 Ë0P^.yQ¯KèØ= ÆYCëjeÚöÌg×9á/ú\w[סý¼þã*B25¸-ºeǨòsR=M-mÚ[ýÈùÿÅ_ÚfcÿJò=}Ôu
.ë÷2¨]Âù'Ú+3JIB%Z"˵p4¬Î'±Ý¦ý¯µBb¢±ä?ÄÑþ;³
Ð>xVpë²èA!Jõp/©vàrÃ/uÖÞZ¦Zi &ö²þÒ¯TÌ>Hxä(?ØÃWß×¾ÞDîý¬[æýîÌ+¡Oóï¿É â[1¹evnA@)t¡¦Þ5Ò(èî=}ÿ¬Æºþ$=}ãOÎ<i©Ñ¢H®®ë¥e=Mã1<é0£+ç²=MEi:Ýí¯Þq3y]Óì¨eÕ.p>¬8¨ÀïèM:a"9@.¥ôÙ¢¤¶\æJÿOÉDE£,¼Ý$#ÙÆ*G5>ò{ |ÆBÌz1xJªì ¨ë0B¬}iÕcÄ; Y¡I
|
|
4888
|
+
ÕWÀ£d¾üY5C²Íå+
|
|
4889
|
+
û*®ÅJ{÷NYÕg¦ä[9Ögø%½nX
|
|
4890
|
+
À^ËazoBY= °~BªQ¼{ìÌÜukL££Î*@ù¼eNÙH¶@}TJí®R2=MÒ§ýBÎýjh3n=Mû®_]B$@«é²ïÁV> ëJ A>d1W³ry= b!ï²,È1~ Iô$#uð¾«ÙV.¶0GbvAÚGdmD¼ÿv8»Ü5'Úl9tñÿ±Yr¦<*©òïUr³õ¢U/?i¬TêüIm)r&×ìP5Ý;@ÒÒÂÓvíÕ#³HüóJl¼ã°n¬ï1fè.æç]ë%^VLË6ZslU¡À'¨Îvà9'j.gì?AqE|P5_MÃô'RZÝÃÍm5ùð£ëò£PXF<$ç8×ÊøG¨\JýVاèÕípÈëÞ¾êî³,:0G_*[Bp×]CÉ÷@ñf¯'Kû+(Wèx«åòvyzóÁ¼ sO"q'Këº<ßÇg3ý æ®-8+"®ü/²Î1"öíÐps¾ÈÓMeñ~°ohFfó~Í-d!b¿c´Ö×G\rrÝU3¢8®)&óLXb_[×@ïo]15ÍÊ ®ÇøS7èÿVq&tøæìQ-Âîx[öoü~÷¾NXx:Q£Þr¸¾Äû ¨D8AFâ|øÎ5¶o
|
|
4891
|
+
"G¹É$ÿ%0GH#AjN#/û
|
|
4892
|
+
ðíQÙAÁ¨!øN56~Ûá"
|
|
4893
|
+
7Ê^ÀÅû)HCV®×Â"ð¶è¨ÊÏGVzI,R=M$j<&öôÍFº¬xîâ*´7öpZ®.X¹û"=M/³lº4篵9å±Ã_unH6ßðVèÁ2·:EÑMÔ/HÄj^¡]ÒãðöRê369åJG-[ÛÎm|¥p,Á.0ëexì±åÙÔ»qT?',¾ã( ês+{çÌàö,Új·?< !kÏ^,3øÐ¿ñ0êz£1= *-= R±~~ãK>²- B
~~.çêi#e®ù)EIö&ÙbÓö_ãk7¹ìÊixBy8
|
|
4894
|
+
=Ma}O1êiêoízãk3ðÓõoãÔɮɮxc¤r7VâfBB;#+0Póifâ%¨ÆúcHõ4q1J% »ÊÑT½ÁZZ9üo|¶).
|
|
4895
|
+
¡£kc¯8t³n¯I0wáÅ8B7QÛþ§°Çî ÛåÂð=}ê|}0°ÄáJ^GÍ3$®ËòIbuVùçêZ~Êïóm±_{úóÝAhÈIw@9Øu %L1Àõð!ãkæ¦*¿Lün¦Ita%tî:±)«cVÃaå"Q3g$,= ÿáïۤ
ñ
|
|
4896
|
+
dáÿ¶©ekÅíÉm¹¢x\kÛñÛÒ¬°ü½ÃQø = ã³w;±noÐR«³2(¦ÁBéÛý05Ó/BÃHµT60F/*°t6÷òG÷
|
|
4897
|
+
´¯P\¨O= tgÍ=}ÈKòÁ"ôñ3G¬ß¤/®,væÞ1åv%ÌǬÇå©;åIT½¤þ= °múçÛì¢äk*.MB!94XîÌÓ·ý»H±Þèÿ9#!ô̱)}¡ÔÏÄÊoTëQCѹ.f#Âe'Ç
TG1.îò´.د
ñ..úÒëjçGäÇëj÷l8$$i#:d0$rÓ#õcÙ?yÜÑöÕo6"¦HÌÊû#ª¡Çe$#þ{R±HZò¬·².äZ¢G^»Ã¦.¸%¦çóa¥Q<<A¡xªEâ¤GßýÜ¿¦^Ö¶¤
Ro\¸¦ÌÁCMÀi{Ü
|
|
4898
|
+
MÊ«1¶Æ)ûÑahu3Þófi(T§²ÿ4VtÖªÀü3xÄÒÆÞà}mñãOi¦= ûêk¼´Opné
|
|
4899
|
+
DÉ
¤Óö"°È÷ÓsxÜi\õaFûÛdP£daDÚ®
ÇæÎî#®Î!¾É'** ZóK£ÚíË6÷º¤K[ËÚìÙqTµXÇ¿sî_³°é1°¶RÊu;(Úõ«´ísá¦á·Èí)= §F×¢;J5>
|
|
4900
|
+
xD´ÆJ}Wàǵ= ÞYµ^¤\DbüÜûßøCLë_eúz¶@3üEø±,cAò«®5¦³4ëÇ¥
òJ8[ùù9©zú^7Â3³Çȼq4+ÖÂØ¼Á%Ðç´PíCóÖÃfK\·=};ÂÌ´ÑXÙãsqÜÌ=}+bàÝ[£ÇÔû@ÆÙ¿î°|ÕcöFÆ´ºâPGªe·é¸×rmiÒÈJ»J¸á¦Ø
÷ÊÛgK¾ß9Óv£'1îÖs{ÜÇTêiIVGÿX½tr/1üßÖºV@îX£ÕbÏÎgà²LÒ#Xäúµ@Î,ÙÕ¬ÜNeûîÃhËÈÕ%[mÎñ9pÒ»}L_ºå©éþÑo7]!«º¤vÙlÏÛÚ×ÙlتxåìØ?Þß9²°Tß
¡´V©¤í.#;¤UûñVts®ÿ®×Y,êÊ@DC~>³È»Sr᣷iÁÙWG¬¯Î¬iT§Wä
|
|
4901
|
+
õA$ê¡Ó/£Ô¯¤|J/¢§üF.= S·à*˼ø|W=}s®8+É0sq¯Ð¿É#éÞSnF
|
|
4902
|
+
w4XÒÝïéfIKp®ÑP½%&éìñ2BNdc6ü=}wM²ø=MZà
|
|
4903
|
+
= En£9ýUÎáäõUç©[Ò\h9)lx@ÏÙi)·EÒ²ÒWÂTÕUäc6ZeÄ&zùf½b6 0ù"z@Àþo¼«é»?Ü*= Î8VE#Ü{zP#롨W2ø²çÏxNzlñm»ç:<=}nÒøë\СÖù¤qèÛÝ5¼÷5µd·Þ>ÅîèÛfdS>8| -ñy\ékôÕFµàÈì Î;ÕÚX'+ö<cÀ"ý¶Ó.Î>'SÔû"ÒàR9¤â5üË7>©eCÄØ/M§¶Êôêl1Ðã>yÈÎqЬÜ(Ó;×À0î®ÏæðËp>
ÆüS´\Õ®5ãký=MuWé·â$7ÉJ²ÌÒÛØðÊÄwS]»« hgãÁüw&Ú¨{êCPN0b_ñN'©Ð*ÝCÖB K%ÌÈc¹6»rØW´¢{p÷U¬bæ(ÿË
ªÌéO.ÛÏ/jmøÜK8&ñ²,á$p©öZ´!$ôÈJýÐ*ñÇ%ö¸5cTC=}Ç1kcxé=}:ÝÙÍØÌ@È
d,Mú3ZÞHÀ_$dØô¡ÚÇv=}Ò#tåv¸{#zi(ÕGÝrò
|
|
4904
|
+
ßÍʤÀô[ŰJ¡Q7JòA:ÕL ¢Ç°Ù~<fÖ¶ùøñÀARS×;Ê#í@ý¦gÞÃæ= S¼M/6.u?\ebÈÄ¢Gõp:£ôѧ áâhßIG⻢>qM_.=M'®rcä^_´£vWéö!53Ó¦Y©uVÏb¬
|
|
4905
|
+
6c_b>«N?Î/@²:µ= ÁNý([Âö¦W^æÖD©Ô·À,Ð~÷wþÖ¦>üæ·7
¡0pÞ´MÝ<Z
|
|
4906
|
+
ýÃ3"éWTîEÀÇ¡"zÉÕ¾Uº+ ÍUWA
=Mé|ü2þÚ®F\ñn{T2(Ôd÷¡?tÏíÛKQ£KW4£Q78ÊBG{ÒÏ þF·Í¾RLÍ¡(ÆlÇ¡òä:¦$ R_8ZJª39ºWN2"oHÆÞ. uÇ¢Q³ R¤Fø:(<бT'Õ²÷,c&ºI÷äæ6jWSGñ±[tn¬rCÖWGëÖgo§¡õÇ>YÁYöËUE-ÆÒ3ÿöÖ´Ou=} ¡åb=M,ão×9Mð×ß*ÒD°3\9 ǬÆ!LÜú%°=MVFÛa+QAL¦Ëò¨PrL0@ÍÀ̯]2;q:z³&´2ñȱ= áeBXMúÛìÛ¿ÑUÐ%}øªV´¦
|
|
4907
|
+
¥£¬ûädg¦£:ØQÖl#
|
|
4908
|
+
ù¼Ô$$h:Õªç»6ËWö<x¯Yl°þø@ç/Úá.Hý
E,NÎ;wK¸XÓ)ó#=}"Ä?gÞn¥²ü_ëàé̯#ò±ùõííï¥ØDéNå.@4þ_}ÿBäýDöóÔµ= ã4ÂÏ÷¾gªý gV&.Ô= o3Ô(e1táê½îmÿµ´è= ]qT]bFÉb?Ü£
|
|
4909
|
+
5ÎàÍyMCü?½Ïµ]«¤Æi¡ÖQºkÒÅS´í'-©~®;_ÌÙªÛñ<dméʱõ[ËVÏIR$&κËW¢³Ç^åÖ h2PÙïóBlÑ÷ÕähÀT¾³bzÊ×bÀ]°-¢üÓ,ÿQ2%k){ç*¸Ksêr²êrÒøXc§ÇëJßÝÞJ4³8Ûî®mÎèäûS>gÔù7á}{,§dgµh´d}xã³Bm1t]?tS8m¬ë}ÅWíb'®)±vúLùBúÅÖ¼2¥ô³²bÝ÷Ob^LEp9ý%>{mÀ¬Óx÷ Ku?Ä¿gÍ-1îm(Pbôï{¸»e"ü>:.¸iµ¦õöä³×;èÔÚþ Ô´1c R:p¹Lz ÎÙF}ÈÒN0¶DÿÀH#/)¢¢¢08ñ= ÕQM=}Çò.ôÜ
h\>4ÛfÏ<£Ï<í¢:ænóâýÿêPÝ\}áñã ëë6ðY+ÝE_mKK¶ÈtÛùã^ð±ç3uÀ-íTd:e¹ÂQÒr½#îÃ|ÃaîÎØäu
|
|
4910
|
+
éÏOÖ=}; ?]Sø¹= «\Ù»b [¹¦»K~²6lY:.,3Ú&BnAvªÕìYúö@5Y~a$6s}ç°IS±é#.XÐnÇÒÒ%Ùñ ÄßæÎªÍ缫= ÕÃÕx£¼ ÙÎÔ?Ù:j{_Û.
|
|
4911
|
+
(þbà[UΩLõ.¹c{ÔË
|
|
4912
|
+
tÝþøýI÷]Éïàl,ºù p¬£¤eï³'uÇéÜ_ÒL ¦b;;ëó¢ÿ!cØ[wLÀèý)ç³á¤âv<å6}qbNãû]dûU÷î
ÕÙ§EÞ½ë«
é8|jÃ÷ú£/ÒÜ÷=}8dë[po8"éÃe/F&ÿðL¨ägâF<¸CRåGRÓBáÜ÷Ò×ú:z¿Ý}Õ[ÝVÆäæ)ìÍdjKC[YÝ|ä¾gü^ÂËð_º¾/8nd·èÙ?´¦1AêISê0ÊÝ²Ø &Dµ ÇÙfÙØHfïÍ£Ðå¤F)ùô8ýuWo ¤r#åþbÊôz2ã_¢-(ÑDá+K³ð I\Í|%ò©t_ÏNý!¾èä>¢h¢t¶¦©,Í@¿Xgz»Í.¥ G[u©E 3Ý+kðF^Õ³
9áÄóg:Õ½]x·t¼ÁAdJHÄ= El ô§mç>¸EK´îÖã¹¥µÊùøÊÙjSSU:¯êá\Àl<©¬kOÆ©ÖÌOPNb£U¦_Á¹O÷\úûg½²hóÔݰ¼£|ñéÇ*Ì[âgõ OXe®SpʳGGôäÀYiKºÒo«b ¸@ÕðrL?¾L¿Äúi/ïq»öh©Êá;«ZÆxÿÎ@crÐÿCYÜ^¾âËÀ
¥¶BÞ¨B!0z<ðT7Ìþ7ºdÎB¬[Ý,õùNJäû>õjÛ¹SÁng5·×qn3:ÙZå?ÛWÅé _*M'ï¹X>ß~åyõ×Là Kü@f¾eêCLuÄéGK鯱_6åtöçWþ_©í¶i¨ÕeñC-ýº_=}ôpyçèAÞ FdÀræ¹ß·Ãï]Ê
|
|
4913
|
+
lzLwòpÝ.´-¦§aEë3Áag°ÄÉ
nà¾=MSÄ Þ
|
|
4914
|
+
Í´Ö«·¿¢I1DÖØqÙF®.Û:,¸¿G[¬¸µb¡%iÃ;º°}Âx]
Öþ1ù¦+8Æ©ÿíü¯°ïS£_à«Po¹×+á¡d¡°·Å3
GbC3EÄVJÐq-e¬ôi*(G=}§z»=}Rxa%CaÑLª¼ÿ͹Îñ@yq1HuM"¨Ha+C©§_W¢%6P<¡öpNWQ4ÎPìü/ÃëÚ¹v/C;{À´²g5©M@ZÏÆzQNUZÐÖ[{&ÈVÑVCÚgP{@-eq¨WO>Áì2r!ßÿþ·¤¸(BáÓðy<Þøím'RÔFkB©zs¬ê¹¦Åed[o2¬)Ð=}U³ÊYmâ=}²hß,,É!P0¥::ïùLo|%UË»¥º÷c¢ñâÙÒ.ZøFÖz|¼Úî0©Ctñó¸¼]<dýÌ;6 qàÔãPÀZÒ^ɤ'ÝÀ²×¡TaÀ.n©yN.·ú
|
|
4915
|
+
.÷ï÷ìÅ}$A±zÙ=Mhâ¶ÔRVÅâùF²X(RÖÈa8ËùoýyDÏê;íÿ9¢÷ý/àÙNÙ¶~æÐç4Iïh,©êîÄb¥6wf¼«|T)ëÙqX=}¡JÙÀ_5«µ/±;
|
|
4916
|
+
'b,qR§±BNwfªÍÔ»fûNÃ@¡o!|yi£Ábpbn²qéôO½ÿ.kx1o1R+Y¢³û¿?§_~îQöqxºËøâÓ'j$J1F]B¨gýØÙ{s¼cµO{2Qt¸äÑgJ
>¸Í«X·5~jò5þaëòÀÐ|Òc/¸,Ðzt|s¼PÏØñÙÐØ¤À ÎÝkúa2qG¥Ô-dêÍw,:ÅVÊyJ5 ³¹£¦h]Ýß«çM"k³ñX
b¶2ç6~mòç6~mÒñ{ó
|
|
4917
|
+
÷êT×B³WÄqøL¨ÓËÛj_{§ÄQÖëÝIc¢Bù¦YÛA7Ä\Ù˶§¨<ÓÏÔØ)ªN;èPt
[â°BËÏ\0?O¤RG
|
|
4918
|
+
<ñ}©«êÕ&K1£CäE¼nÀ6ã=}tü½ìó6kùuåÜùSOD5_(æ-ñ¡hT
¤AåB)zãÅÊUð·ÌòO,ÆxÃXÓÜJa^·;)ff ýä«ÃóÏey±w¡ÉEVêÓ:Ó^ÈWæQ;ñ
|
|
4919
|
+
]m?W¬Ú$l@ý E|¦Àýèíñî= ûúÙ
|
|
4920
|
+
¹îKù¯dÃÿQ±ïøír©õr{]fÿ"éd:vìÇé¤Âæ|ßÖL)èRò$+ |ïþs-*®fÄY'n
ß%Z÷À¨ðg;ãÖÐKBÝBÓ(4årq¸°¡°·¥ºk¤Pí¨0ÃýC²gÄ-JV=}Zp zWOI\Â\ÞvñE-bf¼reI'9:kòÎ¥
|
|
4921
|
+
×f,Ùü¬¢õ¡õ¥Ì/ÿ= %oįT@ÊOÄ¿?~bD©DÀÀYÆÃßÁ¦¬5ÞÆ¦û¡'iâ¶óhbwlÉsÿ¾S]\Ó+cBk.úL®OzR4t/ÝÒÚ°:NDNVÅ_è ?®¿ ºðE295ÿô·$4zÅpæ×Ý= î8Z>|¡§·Bd=MþÁw³Èj)1µRyG¼1»·;à 9ihB¡KÊî[¼9Óåùä@ú¡@ö¡@¤ÝäõØâë\Nx·§ëÇjØ2'Ô5w
|
|
4922
|
+
«<ÓkwÍÂ9mT¬DpKðÍÄFÓ¥RÁxS7Ög£Ùim²y¢°¬Ú|öw¿ýö?¦]HHv| =M%CÄÖ9%;¶Âd/[Ũìèæôóè5Úã= «Á
âÇìGGzjaÊY2ûlñ±'}mUF= y[ñËt³gRû¿¯õ¿%·¡ Æþ!ú,ý«[ocѶü϶tnz£Ûy×sïÞ» ã!Z,
ØJÅHèæC~ð^Éf.õbIZOß«[¢³õªØYbo39RëNbðzÊÔYýéí¹%zç&
|
|
4923
|
+
C¿cq@%8d|=}éj4êº++Z§µ¦°Pò®²·OÁTp¦v{¬øESpeùLùêeJ=M뿸$>Ò{¢ûpYBaÐq¬1ç½Ø{«È[ms«LåÄR u@ õ\¢-½òK¼)ùS³h\øpâI(,În¯36ÂvØËµøä0Kà!9|åuü{{êÆQ¢Æ¾Ç ,6¢Ù÷MúɹL÷ÇÑh|Hªh? ÑWw3ÜôxN³¹!>±À[¨ÅrÊÈG·ìÙ´]T|aMð¤'/»V"ÍWïÂ{Y>Wå_¿e= ¾Òí¸6õ¢KcH}öfåá·'À]ý¿CU%0õJ²äÊOõrF|'þqIU@ÃK»%9ÿà;ÒÍ.¨Ê¯9M¡[ÂÄæOK«^¾áAÖ˨ÙOØ]|4¬RÖHæµ@ÏxÁÂ(L*P¿«(¥Ó|ûÁlVíØN
Äø¹bsH=}}{úuÍnÁÄîÉs2¾bE*«1íï\¹+¹+Éð0= O~åMx$µNîÔ\óýú;É¡?µ"+áçV}B¥ 6
\ßEî
|
|
4924
|
+
hu'_/¦ß§:Øó¼\ä´b{
|
|
4925
|
+
BéyuS)[Q1ÔÛRå˹9˯xl9rk6Fq;¤¬¢²ß¤òj,[°,ØÄàór9ÕãÁ¬º²õØóÁ²ù¹J;HÖ=}ò¼æ@è²\×ê³C32³g¤NOÓxý/«Ý²·¤RÊð<ØÕR<QEkpÂ+dªïbÝyM¿8V©wøxÌmf>UMÎ@&pj8g³qL.£Iº&é"DìtèÌTè¤Q2oêRÂÃÙìþ¾$TÚ5bãóýíf)_{mÝ«hørï»9ØèY^Í«3í8+ô.L°9°%¡ÖºÆ4<EDÂR°ÔºÛ2$oe©ÒÝ%UH¦Æ¨~Ô3(Ì:¡Ýo01hnÒ.ÿá¡ìô¥KþÏ[@fÃfÇÝ»ÏïRID( ¾BT,èÛ8°ºAÄÕvdÑèOqø±lPIVÕL ßWà¶:rÐD{RÑ¥fO¾0ÇÉѱ¶RñªWÞRH!ÌG®û~/è/_séë·é×)Ä*XÙ_Zw**øZÝ4ô´ÀºÄ:ñ· ©IDª<ÑXHJÛÌgÁñ= *HáHh.Ì 9,û!Ä|0¿BãÅÈJj"ê.]q°f¥»ô±!pr=}@+#³ÒÀ*ù¼¡!^JhÇo÷ÉîCj3¯êF+)¯#ì³´}ê®ýJSCAÝã<%[ÈÃ#gôk¼ä´eQ}¿¾Ä¢5o=M4¥!¯ ©-±cçOøEwö<{NU^ï¶ZÇÇAÈME§¹µiò-8cÛë]n²Àr2ÚÖhp@d?'Ù¿ºÄÃÍíSåå¥q@= À28¼9R¥~ozÌÿOiò´¦kÍâ篪·ù%|#¸
|
|
4926
|
+
ôqþÌN/ÀG®¨xfê68»ç¸££Ü6"p×é²½<1YNöyMy^eÔ0Ì2?]8£ÒðoÿÞ)üZ¡36¶íÁúÌi§Âw
kι¡i¡ðÕåøAGË<Ù¹%áíjyDÇ?"ò»JòmóK>Ê×á'áB]iéuLîD#¯áú:#«^Ó°¼.i= uÐÑøº©>=MFª~/zÉéIÒ*RL÷V8·PWÌØÙ"ðúyôóXʽ'5OÃÃ"!/OmNPÖJ§äÉ~héÉÐU:¡U,ö[¨¡KÔÿ|º?² 2b¹f¹>[ɯÍ×Tã¶r¢vô./Èt,ðì³±Q®^¾YeF/¨Wz r%T= çDª= mxZ⥮ê¾bQùÞð/ÿÍ¥ú'*;Ý+1Zq·£,4æ:¬YÁhµÀ3o¨qU¯4©ªO= Doñ:âÂmá®5=}÷*¥°HBÁé|XÒLΡÐÄ|Ô~þXi^ð<ÏÐÔ-ªz_ºóRp@ånOf´Jç2Ó³;"~ÌmJ{q3aLÍ
|
|
4927
|
+
ÖC¸>g&+nÁϳÌ-²Wù[e*åTÂ.³7aÐ[HQY<íXY »~HÿoÖ5ÏxfC¨
|
|
4928
|
+
yy\
|
|
4929
|
+
ü1,n,BÑøjjO«cR
´³à6E8òJQÙÈñ°Qð7Z6([äòa±¼cHÆß+RÿºTÅxAþÏ:6aU%ó\ÐV5Ò>¾p÷áÖØGªì§|F+62÷A¶ÊÙÁÚDó
§çj²÷5nÓG&kóLrê:8¯=MÕ
|
|
4930
|
+
à^Ç@©zç}IªR20Ø´É1òud%~âï¯#ÎÞ~:;ø1)¸Ì²~gñòÛ÷ÑgUÒOéD÷.}÷f´f·-]9.¸3Ç;ö*p-§?g8XfúÆòtmIßwo<²X)
|
|
4931
|
+
)ªß=M7M6©Ahr.-^ý#½ìvö^hL îJ¦-C×»JÁtðXA¶løV$o6
JÑ
|
|
4932
|
+
%~8tE"í_+<Q·6j?Þ>þ8/
|
|
4933
|
+
»lmh$´DθWm®¨R
|
|
4934
|
+
=MÑC[#ªfQèìÛ"÷À}꺵öL@§G¥ÔÝà r,¡µ*å¤DA÷"-âÛ?»>Â= ôÞñ½ ØyZé³ô= ?±ñ4;þÝ»xc¸B/ãNÜ@ï¢rCKµû->¿N%¢eÃáÆR¹è ®"=}ì±í ûòÈv]Ã<L
öÙ?l3å?ÅHÄævdk}æpÍø£¡¬1îtiƶG?ðp.¸mQw§nEñ®Sö
¾(= ÏÒÀ¢=}Côs*üñÏ-:F½iïhê
á¿Ød¶Üñ*yágÈ×Ó$åâkNß[Eõ.a*2îç7 à÷;ÒèäÂ4tjò×Q*vq4®0¯®=}~SCǤ2JvÃ7³ó,¼ë MKkÇ2Ø÷)=}1:º¥
I61pÙòoµ o_7c"3ïè8Î&Ò+g
¸?"Å©Ú9ÏzXÌP¦sÆÚ¬µÑásOî/ûk*Ø:W¼æí½-
<OúÃBôNþ.DWÄ{ØY®|!32¿Vù¸Ø;î´äFz>vàé<¶,è=Mp£HA&ysf4¶VÐóo-¼NÎaSÅs ¼gÄæá³AÏ©ºõìÎi«¼[įÒàz4èôhþÜt3MôÒ±¹Ôg´Ø>ÓßÊÞÃÉþ¿ÒÅñA¼J©?h*õgÂGBO.t6N&ÙG}bÎ@î}>r:è÷= É:HËlEúµ®Gµ_[ö7N=M3ù³gà7;©l®«Éü÷LDÔÁt)»º·ÇTùªõ·QúM?Èr%µ§}2íéç#£àکȲF LrbÚ>¿«5Aù¨Ûò-Ãé>2Dí+¥gMz#7$7ÊÂûõÙÝðWD¯Hy6,Þ¸ÙØîgÒRYi7÷æFF»eÊkîíËÿ*Jj¶øÞ~î"2Òä:»}9·±|2 rÁcV7GwÚ¼~¢ùYyZ
|
|
4935
|
+
HÌ
|
|
4936
|
+
&= Szö;¨a÷ ^æÙ zó}sRN³~FôZÅ-!ðnãÃÓÞ8NFné-1¯wÂbÜ^
|
|
4937
|
+
¹±öbǰ¿þ
Í.áÛWMÀm´Ehå?®^ñ=MÁCQ»²Öz|pIªÙïÆÙo¦*(¡¦Où6® ðè3jrJ~$¼³ òʨ|J®.ÈJRÓ¶¦¶;ÊV= ÎáNyØ&= >[;9T/ñS'ê¶È£(B2¸W÷LZü³é}ì¶Öd´= r5§údi59=Msf§ùfÿpÉ = «ÉÄTwì[ êݨµ@Å^6aw!Ééae)ë
ú(eX1*¦6$è= ýW_Ùjá ,v%ñðÍcO)n=}Ë Aá(oÓݪë'®äÉz¬QËPT yk+«VÄ¢v°vhòDDý«e«Å{\q{ZÌvD«X®ªX°ºXóÅ6Í{HÅ£XÄ×XËÃR»kDN7,JÉ¿ö35ÓâÜÌ2Ò$Ò¼õr
çvi]æfº7ßèU:,ä
-ÿãºjìk<æ¦Z¥*¥y춺a©ØmbAxì¶®aüæ~hþæ¶¾ þèAæ¶Ê ÃwmHY%»a9Ä ×*¥Ò -HêîʦÆ^ÁøL»%ø0RGÀØ ÊÃ.¥¤k»\ÃhCsd}« ¢9,é²ñ´øOÚ+HòMüªÜ廸ÐljÓÍXQµÐ|2Çh yHÉø¸Êh±9Î'ØGå!ìøR³Î>:ñÐëüó7©B[®Ãësõ$ðËT7ÒV°£0DlqKë_O½ î4YU3:8)ïôýUMQmݽóÆ"¬Ê;I¾
äÍÂ3M?ïÌtøA§» RøÑ*«bÃÍru¬ÙÎÙôû3.Çêù6>
+¦¶á½Ög4áIKIÄN!wH?Õ#ÒHþ8µ)HW ß)cq= þø¨ü'j%ÝfúOÅ÷sƺ1(axÃZ ;÷ÂcÑÃïàÜ%$¥ÒFê¦àû·Çi~ï#¶ó¢cáØ^Ì÷ócÖ7.13ãpñ}ÄcÇ^¥hª+µÅiÈ=}RÓr;~¦KìO´'¬ÜÅK'Y(â|.¶¾]à.N9Ñt½Ìì)½V -eÆ:ü³×µ0±W5³à²n*
|
|
4938
|
+
þp,ÌVó¹¨0,.%ú$²%Odð= Vü²ê^&ü~bèÀN½ JrÒMbíø¢=M×÷.þÛ3îìãLô:ë¹épõ 9@µF0Þõ× 9úÍù:|Ñȯ9ÞG¹Ñ%QJ·³Ù¤é8¡ð6ÍR*Õ.xOWó·KWϦ¾*ºfç8°ðk¹oa¥ÝÇ S¹%¾õèëÈ_@ôú4á\%5¥º¾2+Àb×:æÂaöd=}ï?:-Î4²Mc]?¼Rdñy(gY°*qñ*ôsEÀsBwåG:¦×/p?Fx<ÕEv= º¦À¾V\0èl~q¥³u= ÒF¾îÿËm}ãTßÆÞ§´¾Ø¥gli£)ÁäSÒ×HàJi=}ÑÃ
|
|
4939
|
+
;Ü]xÆ÷¹pÈÉØ.; L\v+A¾¦ûì!¤×¤O´ú»å®>1ó&
|
|
4940
|
+
ðê¾§ÿD]·þûÔm¦XrE¹ ÿm=}2:ÊûOuËjÉD%'gqzóD3Æè&'=}ð¶dAk2N~ÈÏÄç+#9TU1sðݦAUÁTDW0vS°¨-XgÇoq®ñ
Zæ!:~óÄe"ç×ç0 ³Cé.ÐF§*ÊëÆÞGfËÔc[,$Ͷã9äªÖ khc ÙrÄÀ#Éî2§Î4ÎúÍ/LÝgľèz§Ò<<I¤ÔµëÂÕë¬ôô¢TÝ÷s[ýh0º@ÞPõËç¨!:乯UÈìQÎ%±#ûd@ô¤ÐRÝÕñû=}pYWý\BÃì¬î³ ºóDÏ4=MiÍûÈUý?ºÐR´_{µªX¥Ñ-¢H©-Ê=}dÈÎK©ò«Þ ÿ·K,Å6¡À¡@òGÜn¹ÆS.]
|
|
4941
|
+
QÌ-9ÆÿTâû²ÍtèGü>èT°²7EÍwÎ@a>Zä»p«>äPõ[ÙÒ¶Ú'ʺö0Çxqò®J94=MMiÃ\£mïÀ&§nIø§nIüsMT\r9+È×S$Åê%Ñìô'sªG4aú°rÉk´%×Vy¯¸)x$Ú_¨y
°,ÃæÀGgÏ"'~ôzË'Zàº_ÔMÁ<¼.ç;¥A¼=}ÈLTQ®uÒL0y·ï³@?:uÍ^Ó= bÝþékttå"Va
J
÷ =MepÕkº^<Az_îÒ
$a<ÁCqY³(1Áv
y½¯CBÇoI&
|
|
4942
|
+
H}§1hFãCoÍþ
þ
|
|
4943
|
+
7¥äJa&aï÷>÷¾
#/_.è>0I¦0":xÁÒBÿî
|
|
4944
|
+
aÊ;ÅÀj4F>Y¾ºÉi¤>Ê{7Àíë
ÑÓ±Ó=}F³Y= ±HÙãærN\1EI=}²]òÐMÍÀô:$%HyR
4uR°Ñ_"¤ÿâ¤77_«å2Òeáí¤îA¤"d×¾ã®/Su0¾µ"©ãhWÒÔÓaèH ^y²g .á¥ê¯3©¸E"ÞÒ¥lM¬}Øü'Aõ«§J=M:1;£òòJãÿEë¬-N~p§ô!øEy±Ù@þ²§à.^êï[d¨oÎ×»iQ¿µOµ@B)³0úlº_#þf{j|>0õÎðÖDYSi3ûYL}ýn®ÞT
W´BO]ÝÑ.¬ýÚýÝä|JYîYø$= ~gC:¤ß¬í>ó»«¥L¡¼GÖÀeÞe±= ö2ä õ²±Ãy[ÝÀ}ÑwÙóPzèCÂ.<©RÙ÷sbw¹!^°fybÙ&Àöy¨ì»ñ¢¿zr+*óË< hO^¼K¥v)|ÈQ&CFh._Sìè®ÑïJ¹Ó@GWÉêVAÃ!3´Ôý'V°É= sì÷¢³é$JtB°1æ.Ê@$Öù-±Q£bÿüFȱùxë£(MÿR®^ íâÜ^ðÌü»äEu{2.%üÚe=Mb§i¡k¯yO ©YÐy#Óï°Êj´e¤õ°ªÒÛÿÇæHfOÛgN¸§¥<ªò;+J°¨V½Pâ¡ÁIZetE
|
|
4945
|
+
Wå£Ñ$V9#ÛïGÑ]Q $3Im@ØþxUnã
|
|
4946
|
+
xô²añ¦ýû-leýð¨Î,$lÕ°8(Ii$å V¤stÝ <"k棸ä1 .N:{ÇÇ¡(Þ7K½üååAú+¸G3ç6-AJÐAj(ÉDÄÊBhnµc±wðÿrð$§ä¿¥ãôq#«ú¨}Â}ÅòïÏÜþ2b0WâLâÒÁ6Vâ ÀVÙ #_tà¶¾ìQn{DZ^a%EÞ² Íés"M÷E=MïË$>ZR·bö/\Cwkó/Qùn'OwÍÚå×KgçÀ!ã8B}òÎ>ÆPļB=M3ÄÚ5®ZÊ»&PîÇbç©S!ëV$Ò¤ç ßÅãólÌWßhÑÍÞq(Ýq_ÚkÂÂͪÿøiK0c«=M6g?I4%êÁñóEv¡r÷ôþñ'ñ#,x1¯47RÕrÞ¸ßï= ã-ȧîi{ÓÑÕílõnÒOû}¦^ 4§ÿ¾ÐÕ£ì©O÷Ŧ6ÿÄC3>¢«oc[ «9d¼k|T&Ø3ê=MñwZêùÚBÑÉÀ÷ØÅ¶l7µ¤lw= ì?̫ܻ,ñ®W1ä{Ž÷µ «&¼¿!"µátÛbê¶v®Øc¢c²AXs¢¯dæø/¶ó%BH/R÷ýU?3_ Úw5Æ?Þ-l¡ý3Û~ÐM(¦$J.p8
ÊÐ+£õL6Îj@ÛÚàHÎ9Çïó!IjåùÈó´;h&m&qn-ýÑWHVÆâ8<M7t,PaC¹{Õv$>̶Ìb«¦ xÕ¢=}1çÕ¢ÏBè¥Ä)R´Ì⯷¸FY$¹ÝïMÙ³\À1¶5)L×zÇ×VqÔYEeéÓ«?8ºáèÎqHi,f[C4±º#Ûþ< ^ZÃ[²K󦺶ë¨PsÝá¹B±ìù3{ÄeEeÂC8T!ZqªPà$,¶4DÐclN6ÀÍqHÿIl § Ä#«û!t¼þÐé&õObì¶¡mùqAïM«s½-:ó
|
|
4947
|
+
Sÿ9aRëi: 5>È÷Q$gôM+öj]5+ÈÊWjáêv NÙSè¯)!'Sªeªdze=}rÊbî²ÅFþlÄRÅFtSªªjH(À÷
h){WüòÕNÆîÂe_AÁ³Ch[_Æß®¨3yâ?¥<Ô~ø§Njgq³t¥¬oÎ<×MªEJ·réæ,+îÊ÷èb·ãÊÚÜÿ'§ËjJ«ÞíTöiéæÕÑP8:$Ñ»ª±ËüÁrv²:HM/X)iÒL쩬éÀbvz¾òlnnA2å¯ë=}Ih6°fï
|
|
4948
|
+
À j (Ü/¨C¨ñl¢ª=}ö
|
|
4949
|
+
lDúèyEJ®ÓÉ,ÿH°NT øbvôjIJØu~Qȧòl¸²¨|o ѬJÏl&gm×""E-íz¯ØöJ§ÆÚ%³[¡Üò¦n6ChõzD?! ]®ä0^Øíseͤ°Lx<Æ¢Ô ó Þ5âBämQ36£é
Da³ÔuôfÀöVã×ràû©^;>Õ0
|
|
4950
|
+
\sJ7nX
|
|
4951
|
+
ªAdb;%keüCeTÑ@ýü¡ÄÏ ¶sà1o{G¿üÕÁ«T%4ÎäEÝò
=}ó)í3o¾Âëú¬YnÐä#ìÞ9Y(PQ
|
|
4952
|
+
\¦ ä:ä$©= î·Óïëß~¸eH§8M¥1ø£¥ %(1è¾Ìj/ÃÀ¬&¼1Ó" kÁ+¨ëÌ7»VÝûÓùKó;ZA²æé¥ dÏ¿n>íÀ@®R¨ëv ^4÷
|
|
4953
|
+
´"Jp¿ç®Ãsë6³ÁòÞðdpf òÿµV_JÁ]6_Õ½/=}ÃlÐ8ÃÏÎÉȽCÔþ¤ØÓÊÕæt{ÆL¼ ÖãÅÑØÓ-ÝcÆà½{dxÆõÀATÝRÏá2b6?7tÅ×zyèCÒ$?d{xþ¾%I&ûë-V:ìgAÞàé¼Í°@ʤ'E'Ü'z(VÚ" ¹ö-:|&1ÈG3<x<a©VÇû!«R«ü6Ka¤Z5AýAÀø¦ü´mö_ìY<Ø[uâë8¶Ø× XýÖ@ûy>»À¤¨¶wnÊm<tö[ÓïÉI¸MuñØS'´nP{mê9gqs÷>uû%Kñ§ùÆxcêR¸ª æÇûÝòå/(W×ìÿ¡)piAUYK OÊÏxB#&Û¯nB²$âoÃÉZµ[3àdTÏëùqþôP07¯a¨Hsï;}66çRÈnâ= d-êÙßÝcÎ:òHAûþ×ÙzÜA'
|
|
4954
|
+
G
|
|
4955
|
+
ýyÀ|@Eã+±r³(ì({a÷@zÜÍî¬ÐïXWÞ
7+R¿Px#+{uÖ2õwî=}Ríèx^löà§ÇmwO3¶!×ß$>cxÔ7¦-¡.¼-3yRî)N(ö$1áSõ gzÒöAªÆwл'I¿VW,[5,ïÆáCéZà RE±ç&xûCuߢx25äÓOõôdNµ}= *ÖäeÊÇÛåþɽg+Íf¥²pÉ\®!Xª¾¼Ç¸+R¤
:¯3WºM-3ø!yZl0&(Yv\ê¨[ÅÖ¾ÝDlÓE.Ð2ĬJ_§ÛN¾:ÐOÇÉ|µmHÿ7|t= Û!7%Lo-#4ÏU-Ê>¯¥RÕ[¢»ü§<ÃÌFÎúM ê·4W©¼£´p@²èô§H{ù®
¸ïäGº= ")Qúl3ª2{¼¦1EOè"U$ «««+_MR¢Bµ%s±i®ì×4ZáÅßÛ³ÏzâVèfíÆ$3ÑÒït~´Á¸ÝLz9ßo>´¤=MQdQ/V¸ÚQYÍûU¢v´©ÌYªÊ\<QÔ»ÄbXTÉÜ®YÀdµ7vãðð®û¨¼eÂÈUÑ\ÚT¿æ¬¤[Ï4Û;TТlÛ×<Ù8W+ÐÒ$,ÚzUË^ÄT¬y´AÔÐv<ÙoulÐ\Ü\(l³iäå7äC;4°²~Ñ!ÒøºSEv¡¸kjH,ÿV?B·/;¬CZ}¥|üÃfÎå÷:ja$½%m}øx«¾ÿæßtûb,®§B|êOaó&Ú²ÁËJ©Ã7àn¿DË=}RgY²½ï_òAð¢bgp¡@9ïôíÐG¦jlOijU)¾= Å<<èî¿ÍBæËOSBYòB¡ý#667iè$êçå;pÈ3ä+=Má®lpÆ[ÎRÚG(CZ¿Øgk(»[2G±e丱®b{è±ÇÀ7Ò8®
É T·û«z^$RO¡y°/-ÿ){K¼UèÈQ{ï¾êN$c4÷ȦT.0Y;àx=}ÒÂçÚ,ÅTcÚÿ]¾8Ôjià9¶Öo{à¿*ó¼è5¯uN¹ÄÛŲî¯ÃéEP{>OFÐö§LUê°®i4~vwMúr"H(fL+ïÙ{é]¼ü[ðÂK±O Jgkÿ¤?xÿñ³wñKûò-òJoÐwÓ ôÏ»»hD°óßò
|
|
4956
|
+
²|G<@´T¹Ç0d#äVh¸FÀRP§í±µu ù¬iª±7©å¯ç¹-Ô÷rY/ó|· F2lÇÑDüÌ®ÙB"KlNÝñ®úÁ6M-ÛòyÖßùoOÓñ§]Í²Ï W7:ÛlMÄ»Zw¾|WªLOÎØÛlÂã/Ù@)öûjö8º\= "[ã6IRÛH-7 +À°a
|
|
4957
|
+
ÜHdz°°ÕEµÕÎK;)"^£C²ö)h(µ²§aVÃDÇ\Íè<ô¬°eæ¡^-×%[ßKÌ=M¿wÔ
ö¾ºûKï5:¢ÐÓG}yÛÏóT.ÎÜÁà\ôon
|
|
4958
|
+
¾î?@âo3[vi[ÄZ<añåCGÛ@<6¼ ܸÀô.¼¼ª4#¸}SF·"YÎì+[:¡ÌZÂÔ(î|;UÑIEùÈóBLÊ5åïøY·*¼^°ÿoÌõ´r>§^ÈíMI½çúµqPjZsB=}³CsXÜ@#F¯¢P@IB)ðË= α0ô§%Ô3sTÜÇ:X°4®Ø±ÏDQ>P<h,æÕfýѬ[¹´ü´LöÝ1YÍ\O¨Ù8\jEJ9 å×ÇÖÊ\
è MSêy¼±ÌÐzWůϪüûtRà¤ì#ÈoÌ}âÈ³ÒæÛ0ÂºÉÆ
|
|
4959
|
+
A"°Ñ¸*M
|
|
4960
|
+
I2&&Ü0ôóÎÉͨFJ«ákKJM9"\Ïbaô0eÒb)30¿ÕÛ'òu£»nZ\ئ$Bû5#Cvó9Ë8T"ÊÏ)ZË[èßÚÙ\ÓD[C,=MÎÎót½ò}¼65÷½XuÒZ?'u[+ó¡!±VÕÐõø¹¹Ïõºö¹ ÈÎðZHþ *TB!jÀ /z fÚ)FF7
Øþ²cvÿû¡fí{k&ñ¬Ôöÿ¤Ú³<à=M_ã ¿)Ǫ¶lY% Ü4èåºo#÷æ6oé¾ÏtvËÞ²tSYõËwЬ :#osdX;¬
ãüYOVâ;¶ÚÀ1Oß6$ÞÐÿâÛTã.ÂëV~d¹]\3JHÁj·c"8Z¨3¹¡ 2r{;ҾʮÙMmïcñ|üjín¹ÇY8:Aêñ.üÎ>¿Ö[%ÑØ]2¿ÂF£W1ì¼pÐÀ:|8çÖB»c¿ÓûŵüaCªLôpɱ|EÇ{ìþÜvÛèLe°¿BBkäµ1h+#ò>¶Ò»ãÓÂÆoº¤}ÞÅxnå² D,·Y,´é¥bÑOó2<i*ú+ÖôÁ¿p^-z3áÇA(ª57èg;3mHàþ|¼A 7n= = 'L ä´9®"½O3ýñcGgò±ÌO:nø¼k=Mr´åWA}³øúÍlïÝ$âLxDrP:!ÏÏR:SVÜ£5FUS1½ÿ0þæ¡-S,g§ç9jënÿL ¼1(hE½ÝãÇ>v
dçè1»cì¦mXï«sé ;H½)Û¬U~ ¶¥Ò'²gáX{tÕ1÷i§º-RÄSº3º¿nÇ:S¿¡s*2·F3ºK¦ï¢Rº½½KÉïhøô³|ëk¥8¨Ù¾@¨Ç[A±+³E¿Á¶w¤p*ɸï®ÜÔ%m%®Á_>lR.ç4[OþXi2þðÇÁH\#°?mAÊoFË9¢öÆr,wO¯çÿ˦:\ÁB¦¬ÕÒ&w¡õ%kÆò* J:L¹Ê~èþu´N'Ño'®ð.8w±ÇkÖ¸óX(ô3ÉÏß©þγÓH5öi5S:aÞ MÀã$ºêxlý}ÆíJJÓc%yqhàèHnG®F!¿/> Ë÷¿b_6Ô®62ª¾x°_çk$JP¶áBæB4q¨&!¤Û%ÈÝ«æ[S»±BÙwBªJZ7ò´ØOvü.ý´Ôn,}FïWþãĪ0'gáy/*½×ë±HC.ã0øñ~sùA'.Ã)5gß±§í1tWññü_RÕ#V B)ºÝM(Â"¹e±ê%êåÐB±x¶.zf{"âÞQà¦y?«0î]j¹y ×4¤äí秬»é(W<"ÅCæP_ê¬mnsRê×Ájíhñ£üçëÇOØ7K¨íÊÏ^véU%èrÎѧG"¢ûñ¶óWrP^§fnª¥ìj{G7H$³¸¤¥*RMüHÀ"ë¦ØÊ8®õ¼91û±Ó6H]QChçª7Û¤ÇÞËR1(öò~¿jqÚ¡BèB´qß>ª6Bª-uK2jø;1ÆUm>*
À$Pb¯5H.%Ñ?§vOíIŶµ[@;q31hK#Õ)GÍ*ËGÒ#^yiæ´±zIlæôÒát²Ï°n³ÆÞy²cZ¥R)ún]?ß²ËÙÇ6ÓÄ|ìöy¶ëѺhÀLæ\¨Õ8¾+|ay³íLíLíLíLíl|ÒVTÐ¥¦ ª VÄåDfÂSÌk(ª¬O¬:Ë|ÔQ¨ÊB*¾©Îlh>2ÜìDÓÝ86ó]NÙ±K°#J¸J²5¸5¸øiJ¸J|Ö´ÕÈÀYèi*Û¯WíIÆ\NL¬è¾7&÷+ñ¯lÛâ/»&ål¤àûÔõñI9lÀÎq|
Ô"P#,(Ht$¹¯²ÂÉúÅKVI=Mu)*³iôk@:±cíM_é~è0uù"l?°/³uwy°×&|[¾T))© ?¤CÉ¡þy9¢*Eøå>ááæEVÙ»Cw·lòàðóú¾ e®ºµ__Gîs;µØÁ¥À¤!'´@w'"x¨í,"$ã!chq¯ß.u.1øù
|
|
4961
|
+
²ÑaÄórfΣÌ/¢ÕV,LrÏþðt±©Ó½é
Öݲ¹!÷¥IÝÝÞVàm´ÞVê4ÞVâtNæôNûÄMãNï¤NádüXð¸öÈ÷¨åPàpÎÛ¡¬Õó<¾@h4Îùû$qEògn= 1¡ïÍ= 9¾áäµà¯Þ«M= ì_îjñ~ÞUö<½L £[m)¾kIÑ¿H ¡âUo²YiÂ=M½Âék¢=M®¾hí<?¦P$,eYYcJMÿqÕÞ> õèÎÿÛ7y^î<ôSÍ]ôy>^h8= Ì}]s0,ôÒÞ^+·;#<I®ü~¼0V¡7¦a@5$ïe¬å!>Íédå´áþÚ_q$æxDQ 7{oÜÂå ½jk'ÖÀ>ÃÓíÌú}ép5,'8NWqøT&omI¸ãëÕmE¾p±ìø5þá,Àõ»¿VöÌó-˧L}{Ó/W0Êq¯»15*_Å0ÚXxwÔ"iBwAéitª»sZ>ÙÌ*KLW°Ô/PÂ|÷¬§Î´µÓ6inkJ¸vSI¸Ê¦y»T»wѶ©6ºÚëÓTPÊìÙM(¹vâ¼Â «bÍPöQÒdxdè²m¼ádÚìcäaðS]º$ÈáÅyëÄTÀØÉý
çCzåt|Þyì\:ãv´Ë=}ºà»ì¤ãD¾¥t¾¾ªÔþ×)×÷»ÕÞ¯\= Áõ!*>]
|
|
4962
|
+
IÊôãâaEÍ$sÍFM-^ÍM-I-ù7 ) î.ó ʶA,¦243RHº½¡£ëøÊ= øçJ@Q³T#
ì$ÇÉíR#ý/Uÿõ±ýnÇå1Ö¡£:Ǩì.Bj¼1PÉuw@¼lÉ#rL1µáýõÝmw#WãABppHÁ>ß;äM=Mi1Ó«þRH¤Ñ·XîJÊÀ7¤ªåj{®ZÉ
³ÊJp£køG×µ±&°ÔI¥Nê=};H´&ò}9yÈU¤Ê+~ÝènjhÐQD§¬¦^V)j\Û¦T·ÀÓYÄ}ÝhÝì½¢¡Á¬ud<@;j6ø(¿»u*D©d¡onùÁìÏ(çÏ*üÁz%TÝfÙÔÜ|§´¤¿ÓÃÐðYPþÙ!ØgL¿·ty5ÜÕfÒ,Zr\s>Z§Å ®@6ÖÃÿÕXX¿Ô8¸t>ZÆ+= z,<= »ÊfϨ̥åA ÃçÐ-O/Ð^ý=}à[»|ÀÆÂ?¨|kÌ=}ÝõV=M
|
|
4963
|
+
´£d}KîQK¬ÈÛüJBt${¶íºÖØËÔÈÏX_t*ØZ7ÌÞq¾´åûI2çmë'ŬM÷¶múv«~9¥àY"%rè¶Í¦I¶ü¥¥÷÷»Õ9Ípu= Ö?ʦ¶¡ü§Æw>ÌF6ÇÖ
2qW³DXð.©ünþø'+dü%¨õõëT¤J*¯ªÑtÄ
6'
|
|
4964
|
+
mnÔÌÖ£ó3
|
|
4965
|
+
ö¬ÛyªZg4þ08§iµ¹_BàÜÒջʬY#yâ£yµqT;.rVÍp³(FP#¯«®9«Y"^I$¨osxIT
â~^ ÈÜ8ø#b6|nɬÂÿ·BÅÒ&¨è2
|
|
4966
|
+
-r mØÕa ¶5k1GⲯÏq7ÎÜøtÙ0{ÖcG:¤8+
ÜÏk
|
|
4967
|
+
;Ê!¢e4è3ÂGW[¯PÚ1ëÃYÖaùOþ>·
Çj#¢Ò¦2õ9ºÎk#,_ùãÓ1«Ãò¯Ì¥$ÏbYªcJ¸\fϨàéäUÞðÍÝßµÇSsüD¨ÈÒ7»°&c1}JXΦL^÷ë[|¬ÇÈÔ>7(²Ô*à2^ÂÔ63wÇÊÃäM)î.=M*°ÀéðBÜ1ûõÝk²U£DÇSÑWgCjîj^/ª°)@£çjrØøÝáb EGÑE·÷p¡ØjÝ#(@o#8,"Þ]vQi°tÞÙË;ß("åÝ]·¹Û
VªýêRf= íçrô
|
|
4968
|
+
¬
+ÛÒÚßß·Ï嫯= »lZùØÓJÉ4Êi?ca{YOú)n8'-ri~öĨoeÜ£{ÖóÀηJ¸J¸ÃµJ¤£h̺VÇÑ8ÜN6rRÿßrG3ÈçVXFÓþLÌN¿Ð¨ùdqj=}X
dãEoÃE3G$hm«ÁéCùF¨úztQ÷/wÿzgQá*ÿ"Mxú£~¡%õ»1ýVÀUÒ%\ò,ìÒ/j® ¤ÂµgXXÌ+/ö|wOa¼{'ðSå|lë {M/s¸²ÓªÛý2ýÌ,Õ¾ùfØdѯí*ùrGBÏÂwþz¾ù2OÌ©|þzÃÉù¾éÂò7§k±¡;AV Øö/U|t( <,Åö|%°1Âî¨9= QÄÜ:9ªpnâºÌëkϦò%Pîtçÿ:kqlVÉlhr¼c±yz"fÉ´À(#+¨7>Ùòn?+QE7úü·´ÇÌ´ØW"¼
|£F{óô#¬:ûhh9d°¦O½Õ°Ùü¢v;¼D¯Êà!q¬û4û¬ÿ°·¹ZSÒIVö{Z¼äMÉ j)W§¤c$j²ÊjÅè´À(×%ú£®øÒîܺk=Mà4¾µF^Ä{µOX$»×;¬ªµÏÀ
§1ÿhÏÏñ@ê {^´Þô(ã$Aáà#ÿCëh49û'ËS^EPãßÁÂS©ºmHp8zHHÑo[¯mÇ?kêIñþ
|
|
4969
|
+
Cceî%°Æî55¬M%-aѰeiGú Åk1:(/ÐçHmcÿÚ©¤«¨¨%lÍ=MÚöÆ·Wåbn~b9_Ñîp¹oâ%¯bò[uÖ $áÆ/ZxBKvìðû¡¢Ù½ì^pðä{= nþZÔ%8qÿ
|
|
4970
|
+
stýRC{ÊÃÏÿ¯*©ÌnÓ¯3©'[¬ÁÿNEhÞyaÑßúN£Ï¯T¹e±|= uo¤ÍÝXÿjC(l¼ÞÆ×VyÔ|F¾ú+=}q8GïÆV*²Á!×ÿºXà¶ WP^ÊUk
|
|
4971
|
+
õÿбèÆ:GÿÒ!G¨Ònlàm·ý¨ÖS$×gÈm!tDÉÄxAµx³J@[³½4?¼|m«À
|
|
4972
|
+
ºÕy.g¶G¡D
«Y÷ûªN¾ôÆf¼r´Ú N(XÍá¯üÙkÍþÖZ;"sz"v¦kÃ'SWyã)17Ònî\ó2Ü8FkQâ$V¶æÆÏ
Ýlþ2®¹;v(&g Díl'õÚC09ܵ޴>w\çÅZÜ#Êñ§*O$Á§ªút±£2ýG}¡?ù¥JA!Õ^Æ%Ñý y¼B÷m~¶0æ ©å|Uªô¿ ÃëÈÿû7ª,Kz)48©åRùH=}¼íÆïç±i]ü@Ãä°¢ÌÎïÕKâöÏtnöç«®YÓ#7#cÛËr¾6×m¾.£à^Ç=}àÆAÃU;Aý¯¹ÁÓΩQçȩèn?ù@ýB×ãýz¡èAtÏ[imÍlc®f,Ôó8ÿälçÆÀü¬·Î
|
|
4973
|
+
ÿÒÂãÔ¦-Û{îYýZÿ,ÔÐ꯴#RêÑ(XMÞ= $î·â¯PÈõXNÞÛì½·Âú{"·NHP@¼m[¤Ayxô˲AEìl¨=}íÊ|O
|
|
4974
|
+
Hð·FÂu»=M1 tõccVúÆQg8iÉ1¸²o½aEºb¤n÷Í5¼&2$¸pÇþ¿PÂìúUx6ÒLkXuä©ßKyWC
L£érGß=MÓ×$ÂÔ°Z*@Ó
´Ã1AR/.ØðÛÉ3/\\³.ÜxÁ»°ñª(Puù/«ÌåýÒ=}PKac4$5JFz;'+þ ¼Oc!jaFÿê¤'i/a1©½x/'ÙjËéÐR0Õ³³-^¦[Ü=M2ËduK ÀhÍ=}Lǯ/#E1ÇlnélY¡_eèþ*ÁCÖY%ÚDVÝÍ5ðMZcÛì%÷R¿XC\Ä©]±^n©fL}mâ·F)öû[NÛ¦RsÊ:¨jÆðº¯{Ø=MFrè×ú²×:Ë1å8Ë÷ð÷?qZÝu
|
|
4975
|
+
N6 Ç@[µ ©kÁ0Ð¥æX{FðM<ö×øÀIÈ9¾ºÐ»#{NL= MªÄSÀðêé Ç
|
|
4976
|
+
êëUwXUkÀù¾PغåÐ ±Ü_æçÈܺ1~XcѤ×Êp¹bÎ,&×»²ÁÎ̳@pãX R2ÂLÇëdÛfÚûvß
|ѽJ5æÍ´ùý"ÊlîÚL]\ÉÞÈ/föO³Ü3àqÜfâ¯^çÙ8ÚÔ_£F\ÛHØ,=MËð£<þþ|³ºQgì>3·ûBRÐïóEUîg?=M%º= Þc²}³ò!äÈã[WþdͯãpoíRRx·E)¡ø'þSáÈðH{K°ß¯¢QkVw$£âìþ*=}~ÞYvVUðÀnÃÍÞã~á¹6\ÚDoÛTl-ÝÉöÓfÇ̳.9Õ§Üû³ÔÖSY<$/pà@a¹lÑ*ö²Ì'¬Ý*0$Nª¤òüD ÷¾ÝÔÜrÇÏI¢ÕÔ¸ØU¤´,¦HÅ=}ø{Ò)ô£À2Mz2Ützk@áÌÝà>Öö´?xõÒÑ/§yÎÌ×üµ\úHØ\Ûív×è±ÜU¡[}[ÉËÌýSݹ+Y¸ØaߨÔüW¤L²üÖãe)0Ù¼¯6èë
h\¾ü~ÑÄDÐ5n\ÎÔ {Ù¤aÛ_Ü<P§ÙÒú7±ëê0fG~2uBH×/òý";d·vJÑRG1j¥-¶1é3ÌÜìݸ±
|
|
4977
|
+
¤ÖÀ°Ù\I0\±¬üêÏ$ ÙØWÖÜÙ\÷ýÇh_ºS´(³aìãºÞ§7QóÒ=M»''JºF´Í8¸ýöÀ[мvkX¬éØc >Ã|øÓûÐ'¯©ÑË[l_-7)¾Ã"ÑÍ ba$ó;7ñqjùÉ9q<®úyä0#-Uðñ¸+=}ßH\)^R»cãpÏæÙ= ]È~½ÉáÛ³·:n]ä$Ê/ñ^|\Ëþ=}ܲþq]tÑÄPP 橦¼ÌÌú*})CH0ï^DVF'ìåå·ÿ:b,æÅÛ[XIö^ÁopÛ~áSÆêSkïåÉ.ôe_]³1½ò5ÍâÚÐÏ-
ó!"#.µ +¸m_±l±2#¬æ|ëEÁDÁ Ö¾F8´Ü4»¿§ºL´Ã|Ò׬WÈ\²ë¨ªÒã#T©-.êÞ°¯°\9ßâ¢Ös{^m}] fcâb.ÃD<Û«¨Ñ\¼¸ L,:$°ªÀ;´g&³&mÎøùéY4Þ
|
|
4978
|
+
/0D^:£r¢d1ànÙ=}7ì⺷§}ãDþ´&½èbÿ6WßÉÎ:ÈãçPW©òìôØþáäUÚHÖËLÈçcxêìÓ÷}t^ëèT}½<ÿºõKz¬<Ü$ÓxK)ê¡5§íúó
|
|
4979
|
+
¤ «"&ñg_YX{kÿg'Á!/uGÍ3õHbtqiwâ/unÃÍ®Hu=M«= [q^PBJ°Z©ÌXÃrí8ô|ï½'þrÐ~ahV®L-µ
|
|
4980
|
+
kÛLæôs4¬F8¤|×Ô8.¥äÙZn x0|jÙÎV@-²R9«Úzâ= êÇ<ßí@®§{L98ÕU6²GjàñáI¼O§ärØö:.º&¾¿£Î9QÓMì-m¡¢éУðËÌ5
ÄbýÃÓ~Y6çú
|
|
4981
|
+
KTN.ºbìµñÑz^ÐìÀ¨£ºÌ¼Û#NÊØ;4¡U£¢^±}ͼbñË+vS³2¦ô*ú¸õÀ\pÌ
|
|
4982
|
+
wHdkK-l,z#¾[?·ÞdàKeÎÚÓ&üWÿ¶§Ú ÉÊ®Ú<úüj«FeJ{¯ðdgÑ|ÒíµtØRåû¨8LùLxÏbÎfWH®ö¹ø·-°=}»oÙhóÖÀÈ÷åµËtfºúÇ^õ,ÔÙ¨¢]£(&ÀS1ðÓ;xüXù¨Ì:yo]Ã^H½øN÷2º"áCBøY»cõc}ð1x:$¤sZºÏw@ ¼Ä·~qR¿^jvøò×ogvùßF,Ïâke>óT7|°tf®Ñ>ܸuÝÏiq_al@´ã»[!=},»èLe
,<VC×ÐWD©=M/l«Ö6{U%ÔR±
|
|
4983
|
+
ßg¾bÀò¢
׬XxSïõüžªÐEÕ¢j/3^¦7(óýc¦<¾ÎÞµVÄlUßgvÉCæ·V»5ß~kÛcXøÚÍÁ7¤$Ìæ¡ú}¬ÁÚ=M ]ü¶»«$¹Î§y9bznáküÇ9t£Ã$í=M6Qfx=MÈõôqð+½²WöÑkõ©Æ×%vBb>ïLØmwøÀêh*®Ê-ßw4»F²O!Ü¿9}[Ïo¦çD©=MK·"¼©¡ð¸<k»úÍêØPs¨
|
|
4984
|
+
Ï¡©ûÚÙêtq+³Xð}8\¥iÅàlG«@cªc%m9³#Ƽ=M¤ÎÚD0AQ=}0Dá^âTè_6h²Ûiÿ}}·[¼/iöc<%¢:lhp<¶s]ºr÷ïÙ2k]q¬éJÐAÞÏÐWn½Ëêìÿ#ö#8{âö¹¢[¸Ìªt(:Ða8¬V¦F{\§
|
|
4985
|
+
ßKG¨@4)óÀÄ·¼òEjÌ U:©§f$_èÚHIÍ© ¼I\)ý~HÒJÿN±z{6bªHìÙU¿È°ÊváÛ©ôd/¬ý#f{yxÏ;µó6°¥ÕÞÀ²#¤Ð*ĪOæq¦[EÍ9ÇhÁ´ÊÚï5%=}»ð9/Ñ!eöâsßQÙ«£þ2áËyDÄKÆkcܾ5´ðø©nÔ³òQsA5íÍo\O7ÉdõÂø
·¨CÔÛníUy/Xd= äÄúWõ®&=}P,i·iÞ3®QÒIÞâNO4âCñ0®ÄÒäÿ¡XaL)ø,þ+\'¢
«·5j¯*®=}í,;;~zªMD7Ç£ñPe.7¦M
k9àìñkÇÙ3Ü¡ÁÿÛTŵ×Óu
ywDiË)mµK}=}%A³·ùç:Y´J~ìôìÁÅOßb0à}x©¤ôË:h{UäÂqÆß¹¾Zo´þçð²?ÿÊîÉ4L;öÿQ¢º;ªL=M}m§°¦ ûO@x
|
|
4986
|
+
És+~¿kéË'T$>b׺f§9ðîw(ÒniÛXË+,ç41飺$½¸;¾©¶=}ª¬¹m¸Ûô= wÞñ·aY3ün¡"ØüK9¢ÊÃR0)7vâÄÍ|ê¦o¤ñÁ¤Ä%µËÅ£@HÓç¡%»¡ä㲣¤'Ô}Á¾÷çVà»+
/íOb_TsÎ$-Øöp_±ÜÆèÍ]À ¥þð Ãc8X,ôTv¸
|
|
4987
|
+
¾Ë/yVh¬¹Fd °j"wç5¹¶°Hº¥L¦ÄjÓ[þÕª·îÑ«$=}[E ç]|O¹µÕLý÷½+ÛWͱ¾ÕOfÐ=MýÏHlÉtá;ðd¿(øK@N=}üDÏfg¸5ç£''lV|Å3ä¸fgò}= ús
|
|
4988
|
+
²ÀÀ«Èì)ËI1þâ×¶XȦW|þ¬UÿdlQt¸ÒDë°ÌeK¸-&±_Q@5ò¨lx ´j÷ÃX]ýÚÞ}$IÎH
ÚxIUÚËÔdY-çQ5Q
7 ·[(~_ýàB¢X0û겿ʿH®þ:jãr£§XWÖ6rã¼Òm¹>rh."èÊN¨õê#Ï8Ä8rÛh/Ã1%}¨LZøÅ(Ì,QÈïG§º3Ô#ÄÊ
|
|
4989
|
+
M ܧ
y°úFmÅnÀ¤ D-µMA lkúFdÅ0<¿÷.UWEüâ$9q!2}é
A®Ø²V= ÔH¼©GG1ö
{2Ò¶z:bG«ØZ£¢»cùp©uQbnPùº8Ö¦¤_wN°ý:-® pcx¨Æ
|
|
4990
|
+
Fô9FmKßãlsÊÁ³´^xãÆ_£«Oë^¸#r;n;SÃQ¯ârñZ'kXK§i÷Ò§u0×úQð>÷»hÁt¾èNºÁ@yiß2]¡@'»r¿ÆoøE§u¨Y-ç1Û@+Ä/9pÁ¾±Õ'pÃ1)&kX|ó~á´Â$Võ2!}G»¶?IÚÒxòÆ_¯Ò@kô¾½îðô'ûÙ2öP§:æÉ¶Ï\èÎÑD¶ØD¯ârù{ÌÔÈ÷Ë«Ðlië\.§y¯ârDTcp NlV#2^'g¨CXkÙÂÂRíu1>+B}ñ
àÌØ_ÈÅ
|
|
4991
|
+
¨öËf!}ck|ɧ¤3âèùÙïMpºÊgYÒûôÏÍËÚSkä¡\.bòo
!WÊúò[ü3JTjiÂnËë3Æäº=Mʹ\&4Ko}¶·XôXÃ8õWWå)
= à2µ ¦ä«Ú
FXK§}¯z-ú®\«Ó¨Õ552[:â2u0öâÈSXͲhTØÇs\.£yg&Tô©3@lÌÇ.¯DlèB¯âÂ#sJ¬¾}¥&>Òç)'v0þÆ_¯JT¼öUãFÖÂ×Ú%
QöÂn
UÜx»°ñµW\¯¯¥²p.r|ªF *ɡاu0·Ýº}+èûÚ[ùlw\YÂcS\.b2^/}Ëü= ôü£LGXëÖË@+BôÑÄöØÎ|ü±Üyg·L{þð;·"É>öñnG$L¶Ó¯û¹Ì´úÛæK#ò_CGÜ:[!ra°ëFËͤa÷¥.¸6ûÑÙUöWþÓqÜ#èóÈ <§¶-bz̤ FJ#2{ƦgIÂÞ'0>â_àVïÖÑNµ ÌïI3Ê(¹ë¼hWêÊ[6Ãݵ15öð-c»>2SÒpÖãl˱Ñà¥ÊdO¦ÿXç*= Ðn¶Çµ«Ej(
W´ççý×Å£ð¥¯ÊË·
¹Ïj2ºG+~2à'£ÛC´¹
ÑH3ö-®íGûâ'ªEóõ®Ëªà*Drë\-{T£õ6©ºòÿ-â
I¬ÅÇP
Øå[ÀEËub}ñ
£#HNÞR\z[~ .è¯âòc!!ÓaËì2ÓìÈ©êÀòQ½
+ñ¬_§Vg
|
|
4992
|
+
ß2]çPÇâL¨·ð~b±m-çqD<.ä4yk/VP$â§]¯ì×&=M×>pÓS¬ÆC_K%Q¥ s»tÂëÅtâQ;ÈV ìÒ)ËÎ=Mêö⻯Qïrl«xz»
?-ã1¯7ÛZ·2ñMAÄbY-i2VljßFÞ7[ÛdÜgj¹Ðq$!;q; "H¨WMÈH}èGø|
í
|
|
4993
|
+
Ô¾X¢ºØËÝBÄfH>!,z°§ðÉÇ«
h²N= ¡ñ~#\%ĸ+ØãäªC²¼¨°¢eÏÃÁãæ
ÞÙÑ=MáªØèSÁ{VçØ@ÖTqEÄN\ ÁËP÷Ø52dâºÊ3ck~40ò}Ñ]8²BÅYèÜm_n»#r^/}cLÐjÄËHè<!"}é
!ôK};ϳ|[VMd)Ø>¸§<ª»![Ìäg98ÁÐfÏ6\Ñ¿Ádx¥Î§³«á
|
|
4994
|
+
%ór|vºÖóÏX¯Ñ268K¥2mâêû
|
|
4995
|
+
Çj@;¸%Ø©)ä5ò*w¾:}#²YØ$4ËÝ2]3$~Sc= 0wPnåqßÚY Yób³¸üÙQËàjQ@ç:-ëúÜ×-º(hQìWÖy
ÃÏm¨l·õra
Á¾G ãLK¡´ìK"}ñ
%ØqF"ôÖ«·r¬ðàBJPt«u"¢¨õÖjS¹gd5ÒÈIóbø|Ôü½E1îÆ_3Æ|R¯~Q7ÏÔèK"è7ý>^ë
|
|
4996
|
+
×Ô:-dé!dë¹Fø ÐâÆûC2³´Ï1çw[[ì»çÅ_h[7$LbîL;|É¥ôq?Áf/$ìúÏE?Ù NÝ^-éb>Ñàÿß]mÝíÞ1ýøéãl]Ýâmýýÿåþí!½Þ]Þm[ùDÃþ
Å*]t±éãWÌ~4ãDìBº³º+,Ñ9¤ÝTì= súñÒþ°= ¦$+ã¨Ýä*ÓM®èPMq Ïm2Äë/Ïí°ª% !¼Ü¶ýpÉåí];P¨´å¢û3¹ÜñvuAÖTÔC$SA¥ø;$3pðsOËkÒ´F)*zV6×^áþ*= qáÅÝv3DsóßsÇè©´i =}î6s¥gØÇÆ8Ùø>NJý ¡
×W|BÕr2±sZ=}J26ñ^¿^mï<ì]ÁÀ#±ÖHbÝNu_Ò§È-@×ë©%Ë{gUy«KWªæ
~ôâQMg#53íF¿úUѹ P»V$;®u~Ð5¶nA¥x9½d6ÑjPëéßÜàÅèBìªCT踯7(08;²ñCÁC¡BQêöÐsª6ÊDYJÕóV+\DË ÜÙºÙTÉÜÞiÜÜxòÝܲ4×4óáÿl>mRâû¯zBÒvssa²øs¬Û¢rßUr>÷^$³æýÏ.xîÎìÖÏôÇ$Í»dÓ¸ª^ì{ó-,{Ê>Kaæä·)eι^7Ô#x®m_1ݼí:õ ÅÝËd÷ÿ/gÚèù7B^³$,KÁª)ì×fíÎPÆÒܥŰ{åX¡~¡j}XôÕÃÇZ鸯Vro;ØîûÛszFÿÌ&yì¾à
Û¾_}}ûòK繪Ú= }t(Îlf'಻eL=}aãx'¦ûniʦ#1¹üoB]]Ýã~ó¹³\,ÇaÅFWæÙNHæ0$xïÓ_ü#ïL [ð_V÷µ= ³Cñ©I<+f§g'LÆ?bû!cµÐGzóöÂÆõ = ¿$ñÄ=}Á×qÄÃúùt3£B0üëGÓVÞ¨= µS§úbT¹QO É6
|
|
4997
|
+
iv=MoD®x6Li¡ì®¾
¹HûÝ#ÖnÃË">à~>i8VÞÚÔ.qL²ñ ¿æg*¬vL³!0#l£~óÖ{tÐ:$Õrÿ
|
|
4998
|
+
þrºÙz³n 8Kçî¨eMù!Ø{"ñzç@±d|¸ýÊÚuÙ£÷+U7ÀÄRì.)ûòuÚp¢x [ßFfÛ@è@ôÃÖt°SoÆsòS1±÷sØe¸;N¥»º©&Ï¥·D-}q§INüq7V?0a°ø×|' Ò#3Ó»4Á©¸ÖÙyÌ'°#_ÿ³v
|
|
4999
|
+
Oó3S¨û}=})í·ÄëÀí\xýZú¡:à5|ìÜT®)C38<¯³ù¢Ø¡ñ;ºw;çÕÀÆF¥r[&ù°hΫ9ªÒ³¡VÅP5¾ÿ4¼eín«êÅçiYíaZÙüdÙZIUuH¬öo*}ÀWë[@,?¢ØUTÔ"\²]Óö~y6Ë sû µöòcÈùRi3¹}#÷Z$ZóÚnvÈ{=}ín8EØÿÇäÎõ×¢CÒY¹1£KyÙ õWvA<R§ço|¤t[ÉjPÚÌ骫C~!7R´|ü´ÂÇð7p¯õNhñIïØnei"¬fUp= j"Æaxª-=Mw©¿Í é,7ûÔë&ÚéiÔ&Vð¨ñÍz
(%8;À®¬~J1°ÖëǤ:1|
&eµaevÞof uJw¬¥ÀÖÂáh¦ïM¸âJäÆsíhå!T=M¶sÝ)gbíü*¦ÿ·À(w©g OiVxD%Yÿj³
L?0ÉY?Ã4L¡fâÅÎÔã¿RM6¢ô^è
±¢ºÊãëàÕR<?ÀÒ3±ïwå´B2Iä òÅö%ÊÈn)xfØÍõ3h=M°×àO´õ\kÌÖ ut$ím?®sG£TLÿC.'Ȭ{¨wtYØáö«ÐÛ¨I\|d= $O×dóF·)@úzû$ìLÍëj|°5Yrä*ÞÉ÷j×Ðù|Eç°wxVÔ~
Hòq~ùÂ(ï½g÷9Ä*.Òe»¬È*î©È Y
|
|
5000
|
+
àòż]wí;»ãE$¿OÊD¼zALý&»Åº5¡kÄkÅO$¨cf;0Óûrô|)kþ×èøl=MSjà¨AüNFÎë³W¾Ì³·yÙËG¡
ô=MÕ.g9}û¶z¤¥ù²!Õü,P XZ<öÎþ¾¡6G×å@¯XÉûñT804&¥ÒäA±¼Æ÷ò¤Û!µL·'
¿'uÙT;å"ÿ_AS:L<àÜfÄægw_Ⱥal¼ yOv2í<u'¸z9¿õ@w*Ïóæ+G©ý³#OÆsÀ/cÛ¡{Á©ªä©SRA1&È(E£*¨åá®?4¢)Òû{2Ù¢Ø3_4nc·ÈWAqVÛðY<rÎ+k¨°4¤Rlðõ<+~äo<õ>Kj4ƱØÍË6À_5\
|
|
5001
|
+
BélÌר&í"¤ãÙh«-úUíÐÒq¨Õ®VìÒwTÔôuª¨ïI^þ(¶-ðja_\hðnÇgù»fÛÛȶZ±m¬O¡9!F'üWÙå þ©mw9gP¬N'ï¶
|
|
5002
|
+
³,°
|
|
5003
|
+
gXUÃïÛ(Ï´]iDòÚ?«EÈBl6ÝÖÍAäZ¢VYØ×íÊT®ÎU
|
|
5004
|
+
HÜ¿¬.WzÚö. ¹¿ú©)hB»9ø6ÛérAceL¯ç
|
|
5005
|
+
9g¢ya¦%®S+c§S9²×XÛ§Xl÷t ¢X,ãÎã¼QîÖöM§ÉeOG©F9Äe³e#+üBè7|0
|
|
5006
|
+
r ÐKä»I± ih£¾z]ÈØY,¿:ã&*»P&Yâù6VÃ>PµÚ8çºìêöø\s}Ê«»üh¾ã÷ù9VñÌ,³Ùµ©o{áVDOMøú¤uX3t:6í©5j%)ùÿeWÒsd{½±H¦]¸ä#%2-ýw¡{¦2c1¶ZÇô{~ oz¨õøFcó!S~Î8í¾w þ¨Ë&ص
|
|
5007
|
+
g¹¯´ì±Ñp·¯Æúj!Ùê3û|©Ña°9èóPSàj¨ÎZ®%WçÇ&Õ¹0 Á(d¤=M_¸tð÷û(×ÁÌ»Êú@\åPË}ãH:¥/vªËß®è" \Ð=Mî¤kÛ(ÝN¸µ[ì\Ú¢µ_<U¡C×·9öbsR¾5rqêïðÙd@Ý
|
|
5008
|
+
¸êÃUZ´=}ÆÉ
|
|
5009
|
+
CU¡ÍÌ]Âuf¸i^ÍN¸<ößiIÒzWHÈDkòPëKã.í»+{J¸
V0¸J¸J¸Ã³J#Ä8+KÉA¥NAú¬Í)ô¼¡%°|ù(JPsS±E¯j=M-2Þ[6+Ïû¿²h$ɳ0= êL,§D1ÌJÈBrÚ YÏxSòRFx¤ÚK+ÐÃ:&öôêGº´;ÌúÏà7Ðr´Í6I)ó÷~~àrOyE\ÔfËøª¬ÓFܧìpQ¯{¨EO:.ÆÔEÊm¢Ä¹#{±
|
|
5010
|
+
r÷|ú
|
|
5011
|
+
*ÔàñT' 8KpLjúwù@Q(HÎj{¥¦SÙ01TÀ7F<â<$êÐÉSLVa·ËEk´&[[Ê×zôEtF@Ë9KV©ÇEÙK¬)G4WÛWv3ýn§ÁçÂxârjz= phxdtl|\=}-M¥ìÉÜ\¾Ù%Á?vq³¾Ãð6æøÇ]\C"
3ú¹ï5ÞÞçpXç)z²^Rû÷üoõ{µ(âw]WT½Ïm§Cö4&t]Ât[bìÓ®\%óêëÌÔfìW´@¨ÁÚ_ª÷n xV½é9]MàËàUßÍ/»äµÝ<½äÙÝåáýõaY¿DÅìZÀìØüÛ£üÞÿÍ$Z-×8Ò\ Üb½RLhuñ®äâøþsBV_»ë»Um3
|
|
5012
|
+
½ÇaztÅò¬¼Åâ` });
|
|
5013
|
+
var imports = {
|
|
5014
|
+
"a": wasmImports
|
|
5015
|
+
};
|
|
5016
|
+
this.setModule = (data) => {
|
|
5017
|
+
WASMAudioDecoderCommon2.setModule(EmscriptenWASM, data);
|
|
5018
|
+
};
|
|
5019
|
+
this.getModule = () => WASMAudioDecoderCommon2.getModule(EmscriptenWASM);
|
|
5020
|
+
this.instantiate = () => {
|
|
5021
|
+
this.getModule().then((wasm) => WebAssembly.instantiate(wasm, imports)).then((instance) => {
|
|
5022
|
+
const wasmExports = instance.exports;
|
|
5023
|
+
assignWasmExports(wasmExports);
|
|
5024
|
+
wasmMemory = wasmExports["k"];
|
|
5025
|
+
updateMemoryViews();
|
|
5026
|
+
initRuntime(wasmExports);
|
|
5027
|
+
ready();
|
|
5028
|
+
});
|
|
5029
|
+
this.ready = new Promise((resolve) => {
|
|
5030
|
+
ready = resolve;
|
|
5031
|
+
}).then(() => {
|
|
5032
|
+
this.HEAP = wasmMemory.buffer;
|
|
5033
|
+
this.malloc = _malloc;
|
|
5034
|
+
this.free = _free;
|
|
5035
|
+
this.mpeg_decoder_feed = _mpeg_decoder_feed;
|
|
5036
|
+
this.mpeg_decoder_read = _mpeg_decoder_read;
|
|
5037
|
+
this.mpeg_frame_decoder_create = _mpeg_frame_decoder_create;
|
|
5038
|
+
this.mpeg_frame_decoder_destroy = _mpeg_frame_decoder_destroy;
|
|
5039
|
+
});
|
|
5040
|
+
return this;
|
|
5041
|
+
};
|
|
5042
|
+
}
|
|
5043
|
+
|
|
5044
|
+
// node_modules/mpg123-decoder/src/MPEGDecoder.js
|
|
5045
|
+
function MPEGDecoder(options = {}) {
|
|
5046
|
+
this._init = () => {
|
|
5047
|
+
return new this._WASMAudioDecoderCommon().instantiate(this._EmscriptenWASM, this._module).then((common) => {
|
|
5048
|
+
this._common = common;
|
|
5049
|
+
this._sampleRate = 0;
|
|
5050
|
+
this._inputBytes = 0;
|
|
5051
|
+
this._outputSamples = 0;
|
|
5052
|
+
this._frameNumber = 0;
|
|
5053
|
+
this._input = this._common.allocateTypedArray(
|
|
5054
|
+
this._inputSize,
|
|
5055
|
+
Uint8Array
|
|
5056
|
+
);
|
|
5057
|
+
this._output = this._common.allocateTypedArray(
|
|
5058
|
+
this._outputSize,
|
|
5059
|
+
Float32Array
|
|
5060
|
+
);
|
|
5061
|
+
const decoderPtr = this._common.allocateTypedArray(1, Uint32Array);
|
|
5062
|
+
this._samplesDecodedPtr = this._common.allocateTypedArray(
|
|
5063
|
+
1,
|
|
5064
|
+
Uint32Array
|
|
5065
|
+
);
|
|
5066
|
+
this._sampleRatePtr = this._common.allocateTypedArray(1, Uint32Array);
|
|
5067
|
+
this._errorStringPtr = this._common.allocateTypedArray(1, Uint32Array);
|
|
5068
|
+
const error = this._common.wasm.mpeg_frame_decoder_create(
|
|
5069
|
+
decoderPtr.ptr,
|
|
5070
|
+
options.enableGapless === false ? 0 : 1
|
|
5071
|
+
// default to enabled
|
|
5072
|
+
);
|
|
5073
|
+
if (error) {
|
|
5074
|
+
throw Error(this._getErrorMessage(error));
|
|
5075
|
+
}
|
|
5076
|
+
this._decoder = decoderPtr.buf[0];
|
|
5077
|
+
});
|
|
5078
|
+
};
|
|
5079
|
+
Object.defineProperty(this, "ready", {
|
|
5080
|
+
enumerable: true,
|
|
5081
|
+
get: () => this._ready
|
|
5082
|
+
});
|
|
5083
|
+
this._getErrorMessage = (error) => error + " " + this._common.codeToString(this._errorStringPtr.buf[0]);
|
|
5084
|
+
this.reset = () => {
|
|
5085
|
+
this.free();
|
|
5086
|
+
return this._init();
|
|
5087
|
+
};
|
|
5088
|
+
this.free = () => {
|
|
5089
|
+
this._common.wasm.mpeg_frame_decoder_destroy(this._decoder);
|
|
5090
|
+
this._common.wasm.free(this._decoder);
|
|
5091
|
+
this._common.free();
|
|
5092
|
+
};
|
|
5093
|
+
this.decode = (data) => {
|
|
5094
|
+
let output = [], errors = [], samples = 0;
|
|
5095
|
+
if (!(data instanceof Uint8Array))
|
|
5096
|
+
throw Error(
|
|
5097
|
+
"Data to decode must be Uint8Array. Instead got " + typeof data
|
|
5098
|
+
);
|
|
5099
|
+
feed: for (let dataOffset = 0, dataChunkLength = 0; dataOffset < data.length; dataOffset += dataChunkLength) {
|
|
5100
|
+
const dataChunk = data.subarray(dataOffset, this._input.len + dataOffset);
|
|
5101
|
+
dataChunkLength = dataChunk.length;
|
|
5102
|
+
this._inputBytes += dataChunkLength;
|
|
5103
|
+
this._input.buf.set(dataChunk);
|
|
5104
|
+
let error = this._common.wasm.mpeg_decoder_feed(
|
|
5105
|
+
this._decoder,
|
|
5106
|
+
this._input.ptr,
|
|
5107
|
+
dataChunkLength
|
|
5108
|
+
);
|
|
5109
|
+
if (error === -10) {
|
|
5110
|
+
continue feed;
|
|
5111
|
+
}
|
|
5112
|
+
read: while (true) {
|
|
5113
|
+
this._samplesDecodedPtr.buf[0] = 0;
|
|
5114
|
+
error = this._common.wasm.mpeg_decoder_read(
|
|
5115
|
+
this._decoder,
|
|
5116
|
+
this._output.ptr,
|
|
5117
|
+
this._output.len,
|
|
5118
|
+
this._samplesDecodedPtr.ptr,
|
|
5119
|
+
this._sampleRatePtr.ptr,
|
|
5120
|
+
this._errorStringPtr.ptr
|
|
5121
|
+
);
|
|
5122
|
+
const samplesDecoded = this._samplesDecodedPtr.buf[0];
|
|
5123
|
+
this._outputSamples += samplesDecoded;
|
|
5124
|
+
if (samplesDecoded) {
|
|
5125
|
+
samples += samplesDecoded;
|
|
5126
|
+
output.push([
|
|
5127
|
+
this._output.buf.slice(0, samplesDecoded),
|
|
5128
|
+
this._output.buf.slice(samplesDecoded, samplesDecoded * 2)
|
|
5129
|
+
]);
|
|
5130
|
+
}
|
|
5131
|
+
if (error == -11) {
|
|
5132
|
+
continue read;
|
|
5133
|
+
} else if (error === -10) {
|
|
5134
|
+
continue feed;
|
|
5135
|
+
} else if (error) {
|
|
5136
|
+
const message = this._getErrorMessage(error);
|
|
5137
|
+
console.error("mpg123-decoder: " + message);
|
|
5138
|
+
this._common.addError(
|
|
5139
|
+
errors,
|
|
5140
|
+
message,
|
|
5141
|
+
0,
|
|
5142
|
+
this._frameNumber,
|
|
5143
|
+
this._inputBytes,
|
|
5144
|
+
this._outputSamples
|
|
5145
|
+
);
|
|
5146
|
+
}
|
|
5147
|
+
}
|
|
5148
|
+
}
|
|
5149
|
+
return this._WASMAudioDecoderCommon.getDecodedAudioMultiChannel(
|
|
5150
|
+
errors,
|
|
5151
|
+
output,
|
|
5152
|
+
2,
|
|
5153
|
+
samples,
|
|
5154
|
+
this._sampleRatePtr.buf[0]
|
|
5155
|
+
);
|
|
5156
|
+
};
|
|
5157
|
+
this.decodeFrame = (mpegFrame) => {
|
|
5158
|
+
const decoded = this.decode(mpegFrame);
|
|
5159
|
+
this._frameNumber++;
|
|
5160
|
+
return decoded;
|
|
5161
|
+
};
|
|
5162
|
+
this.decodeFrames = (mpegFrames) => {
|
|
5163
|
+
let output = [], errors = [], samples = 0, i = 0;
|
|
5164
|
+
while (i < mpegFrames.length) {
|
|
5165
|
+
const decoded = this.decodeFrame(mpegFrames[i++]);
|
|
5166
|
+
output.push(decoded.channelData);
|
|
5167
|
+
errors = errors.concat(decoded.errors);
|
|
5168
|
+
samples += decoded.samplesDecoded;
|
|
5169
|
+
}
|
|
5170
|
+
return this._WASMAudioDecoderCommon.getDecodedAudioMultiChannel(
|
|
5171
|
+
errors,
|
|
5172
|
+
output,
|
|
5173
|
+
2,
|
|
5174
|
+
samples,
|
|
5175
|
+
this._sampleRatePtr.buf[0]
|
|
5176
|
+
);
|
|
5177
|
+
};
|
|
5178
|
+
this._isWebWorker = MPEGDecoder.isWebWorker;
|
|
5179
|
+
this._WASMAudioDecoderCommon = MPEGDecoder.WASMAudioDecoderCommon || WASMAudioDecoderCommon;
|
|
5180
|
+
this._EmscriptenWASM = MPEGDecoder.EmscriptenWASM || EmscriptenWASM;
|
|
5181
|
+
this._module = MPEGDecoder.module;
|
|
5182
|
+
this._inputSize = 2 ** 16;
|
|
5183
|
+
this._outputSize = 2889 * 16 * 2;
|
|
5184
|
+
this._ready = this._init();
|
|
5185
|
+
return this;
|
|
5186
|
+
}
|
|
5187
|
+
|
|
5188
|
+
// src/notification-codec.ts
|
|
5189
|
+
import { setImmediate as yieldTurn } from "node:timers/promises";
|
|
5190
|
+
var MAX_SOUND_BYTES = 4 * 1024 * 1024;
|
|
5191
|
+
var MAX_SOUND_SECONDS = 10;
|
|
5192
|
+
var MAX_RATE = 96e3;
|
|
5193
|
+
var MAX_SAMPLES = MAX_RATE * MAX_SOUND_SECONDS * 2;
|
|
5194
|
+
var SOUND_RMS = 0.1;
|
|
5195
|
+
var SOUND_PEAK = 10 ** (-3 / 20);
|
|
5196
|
+
function valid(audio) {
|
|
5197
|
+
if (!Number.isInteger(audio.rate) || audio.rate < 8e3 || audio.rate > MAX_RATE || ![1, 2].includes(audio.channels.length) || !audio.channels[0]?.length || audio.channels[0].length > audio.rate * MAX_SOUND_SECONDS || audio.channels.some((c) => c.length !== audio.channels[0].length)) throw new Error("Unsupported notification audio");
|
|
5198
|
+
return audio;
|
|
5199
|
+
}
|
|
5200
|
+
async function wav(bytes, signal) {
|
|
5201
|
+
if (bytes.length < 44 || bytes.toString("ascii", 0, 4) !== "RIFF" || bytes.toString("ascii", 8, 12) !== "WAVE" || bytes.readUInt32LE(4) + 8 > bytes.length) throw new Error("Invalid notification WAV");
|
|
5202
|
+
let format, data;
|
|
5203
|
+
const end = bytes.readUInt32LE(4) + 8;
|
|
5204
|
+
for (let offset = 12, chunks = 0; offset < end && chunks < 4096; chunks++) {
|
|
5205
|
+
signal.throwIfAborted();
|
|
5206
|
+
if (offset + 8 > end) throw new Error("Invalid notification WAV chunk");
|
|
5207
|
+
const size = bytes.readUInt32LE(offset + 4), next = offset + 8 + size;
|
|
5208
|
+
if (next > end) throw new Error("Invalid notification WAV chunk");
|
|
5209
|
+
const name = bytes.toString("ascii", offset, offset + 4);
|
|
5210
|
+
if (name === "fmt ") {
|
|
5211
|
+
if (format) throw new Error("Duplicate WAV format");
|
|
5212
|
+
format = bytes.subarray(offset + 8, next);
|
|
5213
|
+
}
|
|
5214
|
+
if (name === "data") {
|
|
5215
|
+
if (data) throw new Error("Duplicate WAV data");
|
|
5216
|
+
data = bytes.subarray(offset + 8, next);
|
|
5217
|
+
}
|
|
5218
|
+
offset = next + size % 2;
|
|
5219
|
+
}
|
|
5220
|
+
if (!format || format.length < 16 || !data) throw new Error("Missing notification WAV data");
|
|
5221
|
+
let kind = format.readUInt16LE(0);
|
|
5222
|
+
const count3 = format.readUInt16LE(2), rate2 = format.readUInt32LE(4), align = format.readUInt16LE(12), bits = format.readUInt16LE(14);
|
|
5223
|
+
if (kind === 65534) {
|
|
5224
|
+
if (format.length < 40 || format.readUInt16LE(16) < 22 || format.readUInt16LE(18) !== bits || format.subarray(28, 40).toString("hex") !== "00001000800000aa00389b71") throw new Error("Unsupported WAV extension");
|
|
5225
|
+
kind = format.readUInt32LE(24);
|
|
5226
|
+
}
|
|
5227
|
+
if (!([1, 2].includes(count3) && (kind === 1 && [8, 16, 24, 32].includes(bits) || kind === 3 && bits === 32)) || align !== count3 * bits / 8 || format.readUInt32LE(8) !== rate2 * align || data.length % align) throw new Error("Unsupported notification WAV encoding");
|
|
5228
|
+
const frames = data.length / align;
|
|
5229
|
+
const audio = valid({ rate: rate2, channels: Array.from({ length: count3 }, () => new Float32Array(frames)) });
|
|
5230
|
+
for (let i = 0; i < frames; i++) {
|
|
5231
|
+
if (i % 8192 === 0) {
|
|
5232
|
+
await yieldTurn();
|
|
5233
|
+
signal.throwIfAborted();
|
|
5234
|
+
}
|
|
5235
|
+
for (let channel = 0; channel < count3; channel++) {
|
|
5236
|
+
const offset = i * align + channel * bits / 8;
|
|
5237
|
+
audio.channels[channel][i] = kind === 3 ? data.readFloatLE(offset) : bits === 8 ? (data[offset] - 128) / 128 : data.readIntLE(offset, bits / 8) / 2 ** (bits - 1);
|
|
5238
|
+
}
|
|
5239
|
+
}
|
|
5240
|
+
return audio;
|
|
5241
|
+
}
|
|
5242
|
+
async function mp3(bytes, signal) {
|
|
5243
|
+
const decoder = new MPEGDecoder();
|
|
5244
|
+
let ready = false;
|
|
5245
|
+
try {
|
|
5246
|
+
await decoder.ready;
|
|
5247
|
+
ready = true;
|
|
5248
|
+
signal.throwIfAborted();
|
|
5249
|
+
const pieces = [];
|
|
5250
|
+
let frames = 0, rate2 = 0;
|
|
5251
|
+
for (let offset2 = 0; offset2 < bytes.length; offset2 += 4096) {
|
|
5252
|
+
await yieldTurn();
|
|
5253
|
+
signal.throwIfAborted();
|
|
5254
|
+
const part = decoder.decode(bytes.subarray(offset2, offset2 + 4096));
|
|
5255
|
+
if (part.errors.length) throw new Error("Invalid notification MP3");
|
|
5256
|
+
if (!part.samplesDecoded) continue;
|
|
5257
|
+
if (rate2 && rate2 !== part.sampleRate) throw new Error("Changing notification MP3 rate");
|
|
5258
|
+
rate2 = part.sampleRate;
|
|
5259
|
+
frames += part.samplesDecoded;
|
|
5260
|
+
if (frames * 2 > MAX_SAMPLES || frames > rate2 * MAX_SOUND_SECONDS) throw new Error("Notification sound is too long");
|
|
5261
|
+
pieces.push(part.channelData);
|
|
5262
|
+
}
|
|
5263
|
+
const audio = valid({ rate: rate2, channels: [new Float32Array(frames), new Float32Array(frames)] });
|
|
5264
|
+
let offset = 0;
|
|
5265
|
+
for (const part of pieces) {
|
|
5266
|
+
audio.channels[0].set(part[0], offset);
|
|
5267
|
+
audio.channels[1].set(part[1], offset);
|
|
5268
|
+
offset += part[0].length;
|
|
5269
|
+
}
|
|
5270
|
+
return audio;
|
|
5271
|
+
} finally {
|
|
5272
|
+
if (ready) decoder.free();
|
|
5273
|
+
}
|
|
5274
|
+
}
|
|
5275
|
+
async function normalizedSound(bytes, format, signal) {
|
|
5276
|
+
signal.throwIfAborted();
|
|
5277
|
+
if (!bytes.length || bytes.length > MAX_SOUND_BYTES) throw new Error("Notification sound size limit");
|
|
5278
|
+
const audio = format === "wav" ? await wav(Buffer.from(bytes), signal) : await mp3(bytes, signal);
|
|
5279
|
+
const length = audio.channels[0].length, count3 = audio.channels.length;
|
|
5280
|
+
let square = 0, peak = 0;
|
|
5281
|
+
for (let i = 0; i < length; i++) {
|
|
5282
|
+
if (i % 8192 === 0) {
|
|
5283
|
+
await yieldTurn();
|
|
5284
|
+
signal.throwIfAborted();
|
|
5285
|
+
}
|
|
5286
|
+
for (const channel of audio.channels) {
|
|
5287
|
+
const value = channel[i];
|
|
5288
|
+
if (!Number.isFinite(value)) throw new Error("Non-finite notification audio");
|
|
5289
|
+
square += value * value;
|
|
5290
|
+
peak = Math.max(peak, Math.abs(value));
|
|
5291
|
+
}
|
|
5292
|
+
}
|
|
5293
|
+
const rms = Math.sqrt(square / (length * count3));
|
|
5294
|
+
const gain = rms > 1e-8 && peak > 0 ? Math.min(SOUND_RMS / rms, SOUND_PEAK / peak) : 1;
|
|
5295
|
+
const dataBytes = length * count3 * 2;
|
|
5296
|
+
const result = Buffer.alloc(44 + dataBytes);
|
|
5297
|
+
result.write("RIFF", 0);
|
|
5298
|
+
result.writeUInt32LE(36 + dataBytes, 4);
|
|
5299
|
+
result.write("WAVEfmt ", 8);
|
|
5300
|
+
result.writeUInt32LE(16, 16);
|
|
5301
|
+
result.writeUInt16LE(1, 20);
|
|
5302
|
+
result.writeUInt16LE(count3, 22);
|
|
5303
|
+
result.writeUInt32LE(audio.rate, 24);
|
|
5304
|
+
result.writeUInt32LE(audio.rate * count3 * 2, 28);
|
|
5305
|
+
result.writeUInt16LE(count3 * 2, 32);
|
|
5306
|
+
result.writeUInt16LE(16, 34);
|
|
5307
|
+
result.write("data", 36);
|
|
5308
|
+
result.writeUInt32LE(dataBytes, 40);
|
|
5309
|
+
for (let i = 0; i < length; i++) {
|
|
5310
|
+
if (i % 8192 === 0) {
|
|
5311
|
+
await yieldTurn();
|
|
5312
|
+
signal.throwIfAborted();
|
|
5313
|
+
}
|
|
5314
|
+
for (let channel = 0; channel < count3; channel++) result.writeInt16LE(Math.round(audio.channels[channel][i] * gain * 32767), 44 + (i * count3 + channel) * 2);
|
|
5315
|
+
}
|
|
5316
|
+
return result;
|
|
5317
|
+
}
|
|
5318
|
+
|
|
5319
|
+
// src/notification-audio.ts
|
|
5320
|
+
var bundled = typeof define_REVIEW_SOUNDS_default === "undefined" ? {} : define_REVIEW_SOUNDS_default;
|
|
5321
|
+
var NotificationAudio = class {
|
|
5322
|
+
constructor(processes, directory, sounds = bundled) {
|
|
5323
|
+
this.processes = processes;
|
|
5324
|
+
this.directory = directory;
|
|
5325
|
+
this.sounds = sounds;
|
|
5326
|
+
}
|
|
5327
|
+
processes;
|
|
5328
|
+
directory;
|
|
5329
|
+
sounds;
|
|
5330
|
+
stopped = false;
|
|
5331
|
+
active = 0;
|
|
5332
|
+
preparing = 0;
|
|
5333
|
+
temporary;
|
|
5334
|
+
prepared = /* @__PURE__ */ new Map();
|
|
5335
|
+
transactions = /* @__PURE__ */ new Set();
|
|
5336
|
+
abort = new AbortController();
|
|
5337
|
+
async capture(file, signal) {
|
|
5338
|
+
const handle = await open5(file, constants5.O_RDONLY | constants5.O_NONBLOCK);
|
|
5339
|
+
try {
|
|
5340
|
+
signal.throwIfAborted();
|
|
5341
|
+
const stat = await handle.stat();
|
|
5342
|
+
if (!stat.isFile() || !stat.size || stat.size > MAX_SOUND_BYTES) throw new Error("Invalid notification sound file");
|
|
5343
|
+
const bytes = Buffer.alloc(stat.size + 1);
|
|
5344
|
+
let size = 0;
|
|
5345
|
+
while (size < bytes.length) {
|
|
5346
|
+
signal.throwIfAborted();
|
|
5347
|
+
const read = await handle.read(bytes, size, Math.min(65536, bytes.length - size), size);
|
|
5348
|
+
signal.throwIfAborted();
|
|
5349
|
+
if (!read.bytesRead) break;
|
|
5350
|
+
size += read.bytesRead;
|
|
5351
|
+
}
|
|
5352
|
+
if (size > stat.size) throw new Error("Notification sound changed during capture");
|
|
5353
|
+
return bytes.subarray(0, size);
|
|
5354
|
+
} finally {
|
|
5355
|
+
await handle.close();
|
|
5356
|
+
}
|
|
5357
|
+
}
|
|
5358
|
+
async prepare(kind, signal) {
|
|
5359
|
+
let pcm;
|
|
5360
|
+
if (this.directory) for (const format of ["wav", "mp3"]) {
|
|
5361
|
+
signal.throwIfAborted();
|
|
5362
|
+
try {
|
|
5363
|
+
pcm = await normalizedSound(await this.capture(path11.join(this.directory, `${kind}.${format}`), signal), format, signal);
|
|
5364
|
+
break;
|
|
5365
|
+
} catch {
|
|
5366
|
+
signal.throwIfAborted();
|
|
5367
|
+
}
|
|
5368
|
+
}
|
|
5369
|
+
if (!pcm) {
|
|
5370
|
+
const sound = this.sounds[kind];
|
|
5371
|
+
if (!sound) return;
|
|
5372
|
+
pcm = await normalizedSound(Buffer.from(sound.data, "base64"), sound.format, signal);
|
|
5373
|
+
}
|
|
5374
|
+
signal.throwIfAborted();
|
|
5375
|
+
this.temporary ??= mkdtemp(path11.join(tmpdir(), "opencode-reviewer-sounds-"));
|
|
5376
|
+
const directory = await this.temporary;
|
|
5377
|
+
signal.throwIfAborted();
|
|
5378
|
+
const file = path11.join(directory, `${kind}.wav`);
|
|
5379
|
+
await writeFile(file, pcm, { flag: "w", mode: 384 });
|
|
5380
|
+
signal.throwIfAborted();
|
|
5381
|
+
return file;
|
|
5382
|
+
}
|
|
5383
|
+
async file(kind, signal) {
|
|
5384
|
+
const existing = this.prepared.get(kind);
|
|
5385
|
+
if (existing) return withDeadline(signal, 2e3, () => existing);
|
|
5386
|
+
if (this.preparing >= 2) return;
|
|
5387
|
+
const preparation = withDeadline(this.abort.signal, 2e3, (bounded) => {
|
|
5388
|
+
this.preparing++;
|
|
5389
|
+
const worker = this.prepare(kind, bounded).finally(() => {
|
|
5390
|
+
this.preparing--;
|
|
5391
|
+
});
|
|
5392
|
+
this.transactions.add(worker);
|
|
5393
|
+
void worker.then(() => this.transactions.delete(worker), () => this.transactions.delete(worker));
|
|
5394
|
+
return worker;
|
|
5395
|
+
});
|
|
5396
|
+
this.prepared.set(kind, preparation);
|
|
5397
|
+
void preparation.catch(() => {
|
|
5398
|
+
if (this.prepared.get(kind) === preparation) this.prepared.delete(kind);
|
|
5399
|
+
});
|
|
5400
|
+
return withDeadline(signal, 2e3, () => preparation);
|
|
5401
|
+
}
|
|
5402
|
+
/** Decode/cache before desktop delivery, so a visible banner does not wait on WASM or file I/O. */
|
|
5403
|
+
async ready(kind, parent) {
|
|
5404
|
+
if (this.stopped || parent.aborted) return false;
|
|
5405
|
+
try {
|
|
5406
|
+
return !!await this.file(kind, AbortSignal.any([parent, this.abort.signal]));
|
|
5407
|
+
} catch {
|
|
5408
|
+
return false;
|
|
5409
|
+
}
|
|
5410
|
+
}
|
|
5411
|
+
async play(kind, parent) {
|
|
5412
|
+
if (this.stopped || parent.aborted || this.active >= 2) return;
|
|
5413
|
+
this.active++;
|
|
5414
|
+
const signal = AbortSignal.any([parent, this.abort.signal]);
|
|
5415
|
+
try {
|
|
5416
|
+
const file = await this.file(kind, signal);
|
|
5417
|
+
signal.throwIfAborted();
|
|
5418
|
+
if (!file) return;
|
|
5419
|
+
for (const player of ["paplay", "pw-play"]) {
|
|
5420
|
+
signal.throwIfAborted();
|
|
5421
|
+
const process2 = this.processes.start(player, [player === "paplay" ? "--latency-msec=50" : "--latency=50ms", file], 12e3, signal);
|
|
5422
|
+
if (!process2 || (await process2.result).code === 0) return;
|
|
5423
|
+
}
|
|
5424
|
+
} catch {
|
|
5425
|
+
} finally {
|
|
5426
|
+
this.active--;
|
|
5427
|
+
}
|
|
5428
|
+
}
|
|
5429
|
+
async dispose() {
|
|
5430
|
+
this.stopped = true;
|
|
5431
|
+
this.abort.abort();
|
|
5432
|
+
const cleanup = async () => {
|
|
5433
|
+
await Promise.allSettled([...this.prepared.values(), ...this.transactions]);
|
|
5434
|
+
const directory = await this.temporary?.catch(() => void 0);
|
|
5435
|
+
if (directory) await rm(directory, { recursive: true, force: true }).catch(() => {
|
|
5436
|
+
});
|
|
5437
|
+
};
|
|
5438
|
+
const worker = cleanup().catch(() => {
|
|
5439
|
+
});
|
|
5440
|
+
await withDeadline(new AbortController().signal, 2500, () => worker).catch(() => {
|
|
5441
|
+
});
|
|
5442
|
+
}
|
|
5443
|
+
};
|
|
5444
|
+
|
|
5445
|
+
// src/notification-process.ts
|
|
5446
|
+
init_define_REVIEW_PROMPTS();
|
|
5447
|
+
init_define_REVIEW_SOUNDS();
|
|
5448
|
+
import { spawn } from "node:child_process";
|
|
5449
|
+
var OwnedNotificationProcesses = class {
|
|
5450
|
+
children = /* @__PURE__ */ new Set();
|
|
5451
|
+
stopped = false;
|
|
5452
|
+
start(command, args, ms, signal, line) {
|
|
5453
|
+
if (this.stopped || signal.aborted || this.children.size >= 24) return;
|
|
5454
|
+
const executable = command === "notify-send" ? "stdbuf" : command;
|
|
5455
|
+
const argv = command === "notify-send" ? ["--output=L", "--error=L", command, ...args] : [...args];
|
|
5456
|
+
const child = spawn(executable, argv, {
|
|
5457
|
+
stdio: "pipe",
|
|
5458
|
+
shell: false,
|
|
5459
|
+
windowsHide: true,
|
|
5460
|
+
// libnotify's CLI exposes the click token only through its debug line.
|
|
5461
|
+
// Consume that bounded output internally; never log or persist the token.
|
|
5462
|
+
...command === "notify-send" ? { env: { ...process.env, G_MESSAGES_DEBUG: "all" } } : {}
|
|
5463
|
+
});
|
|
5464
|
+
this.children.add(child);
|
|
5465
|
+
child.stdin.end();
|
|
5466
|
+
let killTimer;
|
|
5467
|
+
const cancel = () => {
|
|
5468
|
+
if (child.exitCode !== null || child.signalCode !== null) return;
|
|
5469
|
+
child.kill("SIGTERM");
|
|
5470
|
+
killTimer ??= setTimeout(() => child.kill("SIGKILL"), 250);
|
|
5471
|
+
};
|
|
5472
|
+
const timeout = setTimeout(cancel, ms);
|
|
5473
|
+
signal.addEventListener("abort", cancel, { once: true });
|
|
5474
|
+
let stdout = "", buffer = "", bytes = 0;
|
|
5475
|
+
child.stdout.setEncoding("utf8");
|
|
5476
|
+
child.stdout.on("data", (text) => {
|
|
5477
|
+
bytes += Buffer.byteLength(text);
|
|
5478
|
+
if (bytes > 16384) {
|
|
5479
|
+
cancel();
|
|
5480
|
+
return;
|
|
5481
|
+
}
|
|
5482
|
+
stdout += text;
|
|
5483
|
+
buffer += text;
|
|
5484
|
+
let end;
|
|
5485
|
+
while ((end = buffer.indexOf("\n")) >= 0) {
|
|
5486
|
+
const value = buffer.slice(0, end).trim();
|
|
5487
|
+
buffer = buffer.slice(end + 1);
|
|
5488
|
+
try {
|
|
5489
|
+
line?.(value);
|
|
5490
|
+
} catch {
|
|
5491
|
+
}
|
|
5492
|
+
}
|
|
5493
|
+
});
|
|
5494
|
+
child.stderr.on("data", (data) => {
|
|
5495
|
+
bytes += data.length;
|
|
5496
|
+
if (bytes > 16384) cancel();
|
|
5497
|
+
});
|
|
5498
|
+
const result = new Promise((resolve) => {
|
|
5499
|
+
child.once("error", () => {
|
|
5500
|
+
});
|
|
5501
|
+
child.once("close", (code) => {
|
|
5502
|
+
clearTimeout(timeout);
|
|
5503
|
+
clearTimeout(killTimer);
|
|
5504
|
+
signal.removeEventListener("abort", cancel);
|
|
5505
|
+
this.children.delete(child);
|
|
5506
|
+
resolve({ code, stdout });
|
|
5507
|
+
});
|
|
5508
|
+
});
|
|
5509
|
+
return { result, cancel };
|
|
5510
|
+
}
|
|
5511
|
+
dispose() {
|
|
5512
|
+
this.stopped = true;
|
|
5513
|
+
for (const child of this.children) child.kill("SIGKILL");
|
|
5514
|
+
}
|
|
5515
|
+
};
|
|
5516
|
+
|
|
5517
|
+
// src/notification-terminal.ts
|
|
5518
|
+
init_define_REVIEW_PROMPTS();
|
|
5519
|
+
init_define_REVIEW_SOUNDS();
|
|
5520
|
+
function gnomeTerminalIdentity(env = process.env) {
|
|
5521
|
+
if (env.TMUX || env.STY || env.SSH_CONNECTION || env.SSH_TTY) return;
|
|
5522
|
+
const service = env.GNOME_TERMINAL_SERVICE, path14 = env.GNOME_TERMINAL_SCREEN;
|
|
5523
|
+
if (!service || !/^:[0-9]+\.[0-9]+$/.test(service) || !path14) return;
|
|
5524
|
+
const screen = /^\/org\/gnome\/Terminal\/screen\/([a-f0-9]{8}_[a-f0-9]{4}_[a-f0-9]{4}_[a-f0-9]{4}_[a-f0-9]{12})$/.exec(path14)?.[1];
|
|
5525
|
+
return screen ? { service, screen: screen.replaceAll("_", "-") } : void 0;
|
|
5526
|
+
}
|
|
5527
|
+
async function activateGnomeTerminal(processes, identity, signal, token) {
|
|
5528
|
+
if (!identity || signal.aborted) return false;
|
|
5529
|
+
const base = ["call", "--session", "--dest", identity.service, "--object-path", "/org/gnome/Terminal/SearchProvider", "--method"];
|
|
5530
|
+
const check = processes.start("gdbus", [...base, "org.gnome.Shell.SearchProvider2.GetSubsearchResultSet", JSON.stringify([identity.screen]), "[]"], 1500, signal);
|
|
5531
|
+
const result = await check?.result;
|
|
5532
|
+
if (signal.aborted || result?.code !== 0 || !result.stdout.includes(`'${identity.screen}'`)) return false;
|
|
5533
|
+
if (token && /^[\x21-\x7e]{1,4096}$/.test(token)) {
|
|
5534
|
+
const platform = `{'desktop-startup-id': <${JSON.stringify(token)}>, 'activation-token': <${JSON.stringify(token)}>}`;
|
|
5535
|
+
const prepare = processes.start("gdbus", [
|
|
5536
|
+
"call",
|
|
5537
|
+
"--session",
|
|
5538
|
+
"--dest",
|
|
5539
|
+
identity.service,
|
|
5540
|
+
"--object-path",
|
|
5541
|
+
"/org/gnome/Terminal",
|
|
5542
|
+
"--method",
|
|
5543
|
+
"org.gtk.Application.Activate",
|
|
5544
|
+
platform
|
|
5545
|
+
], 1500, signal);
|
|
5546
|
+
if ((await prepare?.result)?.code !== 0 || signal.aborted) return false;
|
|
5547
|
+
}
|
|
5548
|
+
const activation = processes.start("gdbus", [...base, "org.gnome.Shell.SearchProvider2.ActivateResult", identity.screen, "[]", "0"], 1500, signal);
|
|
5549
|
+
return (await activation?.result)?.code === 0 && !signal.aborted;
|
|
5550
|
+
}
|
|
5551
|
+
|
|
5552
|
+
// src/notification-icon.ts
|
|
5553
|
+
init_define_REVIEW_PROMPTS();
|
|
5554
|
+
init_define_REVIEW_SOUNDS();
|
|
5555
|
+
import { deflateSync } from "node:zlib";
|
|
5556
|
+
import { mkdtemp as mkdtemp2, rm as rm2, writeFile as writeFile2 } from "node:fs/promises";
|
|
5557
|
+
import { tmpdir as tmpdir2 } from "node:os";
|
|
5558
|
+
import path12 from "node:path";
|
|
5559
|
+
function crc32(bytes) {
|
|
5560
|
+
let crc = 4294967295;
|
|
5561
|
+
for (const byte of bytes) {
|
|
5562
|
+
crc ^= byte;
|
|
5563
|
+
for (let i = 0; i < 8; i++) crc = crc >>> 1 ^ (crc & 1 ? 3988292384 : 0);
|
|
5564
|
+
}
|
|
5565
|
+
return (crc ^ 4294967295) >>> 0;
|
|
5566
|
+
}
|
|
5567
|
+
function chunk(name, bytes) {
|
|
5568
|
+
const type = Buffer.from(name), result = Buffer.alloc(bytes.length + 12);
|
|
5569
|
+
result.writeUInt32BE(bytes.length);
|
|
5570
|
+
type.copy(result, 4);
|
|
5571
|
+
bytes.copy(result, 8);
|
|
5572
|
+
result.writeUInt32BE(crc32(Buffer.concat([type, bytes])), bytes.length + 8);
|
|
5573
|
+
return result;
|
|
5574
|
+
}
|
|
5575
|
+
var icons = {
|
|
5576
|
+
approved: { strokes: [[16.5, 24, 22, 29], [22, 29, 31.5, 19]], rgb: [46, 204, 113] },
|
|
5577
|
+
attention: { strokes: [[24, 17, 24, 25], [24, 31, 24, 31]], rgb: [245, 158, 11] },
|
|
5578
|
+
error: { strokes: [[18, 18, 30, 30], [30, 18, 18, 30]], rgb: [239, 68, 68] },
|
|
5579
|
+
ended: { strokes: [[18, 18, 30, 18], [30, 18, 30, 30], [30, 30, 18, 30], [18, 30, 18, 18]], rgb: [160, 160, 160] }
|
|
5580
|
+
};
|
|
5581
|
+
function insideStroke(x, y, [x1, y1, x2, y2]) {
|
|
5582
|
+
const dx = x2 - x1, dy = y2 - y1, length = dx * dx + dy * dy;
|
|
5583
|
+
const t2 = length ? Math.max(0, Math.min(1, ((x - x1) * dx + (y - y1) * dy) / length)) : 0;
|
|
5584
|
+
return (x - x1 - t2 * dx) ** 2 + (y - y1 - t2 * dy) ** 2 <= 1.5 ** 2;
|
|
5585
|
+
}
|
|
5586
|
+
function smallNotificationIcon(kind = "ended") {
|
|
5587
|
+
const { strokes, rgb } = icons[kind];
|
|
5588
|
+
const pixels = Buffer.alloc(48 * (1 + 48 * 4));
|
|
5589
|
+
for (let y = 14; y < 34; y++) for (let x = 14; x < 34; x++) {
|
|
5590
|
+
let coverage = 0;
|
|
5591
|
+
for (let sy = 0; sy < 4; sy++) for (let sx = 0; sx < 4; sx++) {
|
|
5592
|
+
if (strokes.some((stroke) => insideStroke(x + (sx + 0.5) / 4, y + (sy + 0.5) / 4, stroke))) coverage++;
|
|
5593
|
+
}
|
|
5594
|
+
if (!coverage) continue;
|
|
5595
|
+
const offset = y * (1 + 48 * 4) + 1 + x * 4;
|
|
5596
|
+
pixels.set([...rgb, Math.round(coverage * 255 / 16)], offset);
|
|
5597
|
+
}
|
|
5598
|
+
const header = Buffer.alloc(13);
|
|
5599
|
+
header.writeUInt32BE(48);
|
|
5600
|
+
header.writeUInt32BE(48, 4);
|
|
5601
|
+
header[8] = 8;
|
|
5602
|
+
header[9] = 6;
|
|
5603
|
+
return Buffer.concat([Buffer.from([137, 80, 78, 71, 13, 10, 26, 10]), chunk("IHDR", header), chunk("IDAT", deflateSync(pixels)), chunk("IEND", Buffer.alloc(0))]);
|
|
5604
|
+
}
|
|
5605
|
+
var NotificationIcon = class {
|
|
5606
|
+
stopped = false;
|
|
5607
|
+
directory;
|
|
5608
|
+
workers = /* @__PURE__ */ new Map();
|
|
5609
|
+
file(signal, kind = "ended") {
|
|
5610
|
+
if (this.stopped || signal.aborted) return Promise.resolve(void 0);
|
|
5611
|
+
let worker = this.workers.get(kind);
|
|
5612
|
+
if (!worker) {
|
|
5613
|
+
worker = (async () => {
|
|
5614
|
+
this.directory ??= mkdtemp2(path12.join(tmpdir2(), "opencode-reviewer-icon-"));
|
|
5615
|
+
const directory = await this.directory;
|
|
5616
|
+
if (this.stopped) return;
|
|
5617
|
+
const file = path12.join(directory, `${kind}.png`);
|
|
5618
|
+
await writeFile2(file, smallNotificationIcon(kind), { flag: "wx", mode: 384 });
|
|
5619
|
+
return this.stopped ? void 0 : file;
|
|
5620
|
+
})();
|
|
5621
|
+
this.workers.set(kind, worker);
|
|
5622
|
+
}
|
|
5623
|
+
return withDeadline(signal, 1500, () => worker).catch(() => void 0);
|
|
5624
|
+
}
|
|
5625
|
+
async dispose() {
|
|
5626
|
+
this.stopped = true;
|
|
5627
|
+
const worker = (async () => {
|
|
5628
|
+
await Promise.allSettled([...this.workers.values()]);
|
|
5629
|
+
const directory = await this.directory?.catch(() => void 0);
|
|
5630
|
+
if (directory) await rm2(directory, { recursive: true, force: true }).catch(() => {
|
|
5631
|
+
});
|
|
5632
|
+
})();
|
|
5633
|
+
await withDeadline(new AbortController().signal, 2e3, () => worker).catch(() => {
|
|
5634
|
+
});
|
|
5635
|
+
}
|
|
5636
|
+
};
|
|
5637
|
+
|
|
5638
|
+
// src/notification-linux.ts
|
|
5639
|
+
var LinuxNotifications = class {
|
|
5640
|
+
constructor(config, click, processes = new OwnedNotificationProcesses(), identity = gnomeTerminalIdentity() ?? null, platform = process.platform) {
|
|
5641
|
+
this.click = click;
|
|
5642
|
+
this.processes = processes;
|
|
5643
|
+
this.identity = identity;
|
|
5644
|
+
this.platform = platform;
|
|
5645
|
+
this.audio = new NotificationAudio(processes, config.notificationSoundDirectory);
|
|
5646
|
+
}
|
|
5647
|
+
click;
|
|
5648
|
+
processes;
|
|
5649
|
+
identity;
|
|
5650
|
+
platform;
|
|
5651
|
+
stopped = false;
|
|
5652
|
+
abort = new AbortController();
|
|
5653
|
+
audio;
|
|
5654
|
+
closers = /* @__PURE__ */ new Set();
|
|
5655
|
+
closing = /* @__PURE__ */ new Set();
|
|
5656
|
+
icon = new NotificationIcon();
|
|
5657
|
+
start(...args) {
|
|
5658
|
+
try {
|
|
5659
|
+
return this.processes.start(...args);
|
|
5660
|
+
} catch {
|
|
5661
|
+
return void 0;
|
|
5662
|
+
}
|
|
5663
|
+
}
|
|
5664
|
+
async show(message, parent) {
|
|
5665
|
+
if (this.stopped || parent.aborted || this.platform !== "linux") return;
|
|
5666
|
+
const preparation = AbortSignal.any([parent, this.abort.signal]);
|
|
5667
|
+
const [icon, soundReady] = await Promise.all([
|
|
5668
|
+
this.icon.file(preparation, message.kind),
|
|
5669
|
+
message.sound ? this.audio.ready(message.kind, preparation) : false
|
|
5670
|
+
]);
|
|
5671
|
+
if (this.stopped || parent.aborted) return;
|
|
5672
|
+
const local = new AbortController();
|
|
5673
|
+
const signal = AbortSignal.any([parent, local.signal, this.abort.signal]);
|
|
5674
|
+
let id, closed = false, delivered = false, clicked = false, token;
|
|
5675
|
+
let lateClose;
|
|
5676
|
+
let withdrawn = false;
|
|
5677
|
+
const withdraw = () => {
|
|
5678
|
+
if (!id || withdrawn) return;
|
|
5679
|
+
withdrawn = true;
|
|
5680
|
+
clearTimeout(lateClose);
|
|
5681
|
+
local.abort();
|
|
5682
|
+
const process3 = this.start(
|
|
5683
|
+
"gdbus",
|
|
5684
|
+
[
|
|
5685
|
+
"call",
|
|
5686
|
+
"--session",
|
|
5687
|
+
"--dest",
|
|
5688
|
+
"org.freedesktop.Notifications",
|
|
5689
|
+
"--object-path",
|
|
5690
|
+
"/org/freedesktop/Notifications",
|
|
5691
|
+
"--method",
|
|
5692
|
+
"org.freedesktop.Notifications.CloseNotification",
|
|
5693
|
+
id
|
|
5694
|
+
],
|
|
5695
|
+
1500,
|
|
5696
|
+
new AbortController().signal
|
|
5697
|
+
);
|
|
5698
|
+
if (process3) {
|
|
5699
|
+
this.closing.add(process3.result);
|
|
5700
|
+
void process3.result.finally(() => this.closing.delete(process3.result));
|
|
5701
|
+
}
|
|
5702
|
+
};
|
|
5703
|
+
const close = () => {
|
|
5704
|
+
if (closed) return;
|
|
5705
|
+
closed = true;
|
|
5706
|
+
this.closers.delete(close);
|
|
5707
|
+
if (id) withdraw();
|
|
5708
|
+
else lateClose = setTimeout(() => local.abort(), 1500);
|
|
5709
|
+
};
|
|
5710
|
+
this.closers.add(close);
|
|
5711
|
+
parent.addEventListener("abort", close, { once: true });
|
|
5712
|
+
const process2 = this.start(
|
|
5713
|
+
"notify-send",
|
|
5714
|
+
[
|
|
5715
|
+
"--app-name=Opencode",
|
|
5716
|
+
...icon ? [`--icon=${icon}`] : [],
|
|
5717
|
+
// GNOME uses the desktop-entry's source icon, ignoring --icon there.
|
|
5718
|
+
// image-path supplies the separate image beside the notification heading.
|
|
5719
|
+
...icon ? [`--hint=string:image-path:${icon}`] : [],
|
|
5720
|
+
"--urgency=normal",
|
|
5721
|
+
"--expire-time=-1",
|
|
5722
|
+
"--transient",
|
|
5723
|
+
"--hint=boolean:suppress-sound:true",
|
|
5724
|
+
"--print-id",
|
|
5725
|
+
// GNOME emits an activation token only for a recognized application.
|
|
5726
|
+
...this.identity ? ["--hint=string:desktop-entry:org.gnome.Terminal"] : [],
|
|
5727
|
+
...this.identity ? ["--action=default=Open session"] : [],
|
|
5728
|
+
"--wait",
|
|
5729
|
+
"--",
|
|
5730
|
+
"Opencode",
|
|
5731
|
+
// GNOME flattens newlines in collapsed banners. Keep an explicit separator
|
|
5732
|
+
// so the session title cannot run into the event message.
|
|
5733
|
+
`${notificationMarkup(message.title)} \xB7 ${notificationMarkup(message.body)}`.replaceAll("\\", "\\\\")
|
|
5734
|
+
],
|
|
5735
|
+
12e4,
|
|
5736
|
+
AbortSignal.any([local.signal, this.abort.signal]),
|
|
5737
|
+
(line) => {
|
|
5738
|
+
if (/^[1-9][0-9]{0,9}$/.test(line)) {
|
|
5739
|
+
id = line;
|
|
5740
|
+
if (closed || signal.aborted) {
|
|
5741
|
+
withdraw();
|
|
5742
|
+
return;
|
|
5743
|
+
}
|
|
5744
|
+
if (!delivered) {
|
|
5745
|
+
delivered = true;
|
|
5746
|
+
if (soundReady) void this.audio.play(message.kind, signal);
|
|
5747
|
+
}
|
|
5748
|
+
} else if (line === "default" && !closed && !signal.aborted) clicked = true;
|
|
5749
|
+
else {
|
|
5750
|
+
const match = /^(?:\*\* )?\(notify-send:\d+\): (?:libnotify-)?DEBUG: [\d:.]+: Activation Token: ([\x21-\x7e]{1,4096})$/.exec(line);
|
|
5751
|
+
if (match) token = match[1];
|
|
5752
|
+
}
|
|
5753
|
+
}
|
|
5754
|
+
);
|
|
5755
|
+
if (!process2) {
|
|
5756
|
+
close();
|
|
5757
|
+
parent.removeEventListener("abort", close);
|
|
5758
|
+
return;
|
|
5759
|
+
}
|
|
5760
|
+
void process2.result.then(() => {
|
|
5761
|
+
clearTimeout(lateClose);
|
|
5762
|
+
parent.removeEventListener("abort", close);
|
|
5763
|
+
closed = true;
|
|
5764
|
+
this.closers.delete(close);
|
|
5765
|
+
if (clicked && !this.stopped) void activateGnomeTerminal(this.processes, this.identity, this.abort.signal, token).then((ok) => {
|
|
5766
|
+
if (ok && !this.stopped) {
|
|
5767
|
+
try {
|
|
5768
|
+
this.click(message.sessionID);
|
|
5769
|
+
} catch {
|
|
5770
|
+
}
|
|
5771
|
+
}
|
|
5772
|
+
}).catch(() => {
|
|
5773
|
+
});
|
|
5774
|
+
});
|
|
5775
|
+
return { close, closed: process2.result.then(() => {
|
|
5776
|
+
}) };
|
|
5777
|
+
}
|
|
5778
|
+
async dispose() {
|
|
5779
|
+
this.stopped = true;
|
|
5780
|
+
for (const close of [...this.closers]) close();
|
|
5781
|
+
this.abort.abort();
|
|
5782
|
+
await Promise.allSettled([...this.closing, this.audio.dispose(), this.icon.dispose()]);
|
|
5783
|
+
this.processes.dispose();
|
|
5784
|
+
}
|
|
5785
|
+
};
|
|
5786
|
+
|
|
3862
5787
|
// src/tui.tsx
|
|
3863
5788
|
function ReviewLoading(props) {
|
|
3864
5789
|
const [frame, setFrame] = createSignal2(0);
|
|
@@ -4144,13 +6069,23 @@ function contextReader(api, trace) {
|
|
|
4144
6069
|
mcpServers: () => api.state.mcp()
|
|
4145
6070
|
};
|
|
4146
6071
|
}
|
|
4147
|
-
async function reviewTui(api, options, fileIO, observer) {
|
|
6072
|
+
async function reviewTui(api, options, fileIO, observer, notificationBackend) {
|
|
4148
6073
|
let config;
|
|
4149
6074
|
let reviewOptions;
|
|
4150
6075
|
let prompts = BUILTIN_PROMPTS;
|
|
4151
6076
|
let configError = "";
|
|
6077
|
+
let notificationConfig;
|
|
6078
|
+
try {
|
|
6079
|
+
notificationConfig = parseNotificationConfig(options);
|
|
6080
|
+
} catch {
|
|
6081
|
+
}
|
|
4152
6082
|
try {
|
|
4153
|
-
const parsed = parseConfig(options
|
|
6083
|
+
const parsed = parseConfig(notificationConfig ? options : {
|
|
6084
|
+
...options,
|
|
6085
|
+
notify: false,
|
|
6086
|
+
notifySound: false,
|
|
6087
|
+
notificationSoundDirectory: void 0
|
|
6088
|
+
});
|
|
4154
6089
|
reviewOptions = parsed;
|
|
4155
6090
|
prompts = await withDeadline(api.lifecycle.signal, parsed.timeoutMs, (signal) => loadPrompts(parsed.instructions, signal), "Prompt loading");
|
|
4156
6091
|
config = parsed;
|
|
@@ -4165,7 +6100,16 @@ async function reviewTui(api, options, fileIO, observer) {
|
|
|
4165
6100
|
const traces = observer ? /* @__PURE__ */ new WeakMap() : void 0;
|
|
4166
6101
|
let reviewSequence = 0;
|
|
4167
6102
|
const reader2 = contextReader(api, hostTrace);
|
|
4168
|
-
const modes = new SessionModes(new SessionModeStore(
|
|
6103
|
+
const modes = new SessionModes(new SessionModeStore(path13.join(api.state.path.state, "opencode-reviewer", "session-mode-v1"), api.state.path.directory), async (id, signal) => api.state.session.get(id) ?? reader2.session(id, signal));
|
|
6104
|
+
let notifications;
|
|
6105
|
+
if (notificationConfig?.notify) {
|
|
6106
|
+
try {
|
|
6107
|
+
const click = (id) => notifications?.click(id);
|
|
6108
|
+
const backend = notificationBackend ? notificationBackend(click, notificationConfig) : new LinuxNotifications(notificationConfig, click);
|
|
6109
|
+
notifications = new NotificationHost(api, new NotificationPolicy(notificationConfig, reviewOptions?.autoApprove === true, reviewOptions?.autoApproveDelaySeconds ?? 15, backend), (id, signal) => modes.root(id, signal));
|
|
6110
|
+
} catch {
|
|
6111
|
+
}
|
|
6112
|
+
}
|
|
4169
6113
|
const files = new FileAccess(fileIO);
|
|
4170
6114
|
const approval = approvalTransport(api.client, api.state.path.directory);
|
|
4171
6115
|
let visibleApproval = () => void 0;
|
|
@@ -4190,7 +6134,10 @@ async function reviewTui(api, options, fileIO, observer) {
|
|
|
4190
6134
|
await worker?.catch(() => {
|
|
4191
6135
|
});
|
|
4192
6136
|
}
|
|
4193
|
-
},
|
|
6137
|
+
}, (views2) => {
|
|
6138
|
+
setViews(views2);
|
|
6139
|
+
notifications?.snapshot(controller.views);
|
|
6140
|
+
}, reviewOptions, {
|
|
4194
6141
|
...observer ? {
|
|
4195
6142
|
list: (signal) => {
|
|
4196
6143
|
const pending = controller.views;
|
|
@@ -4200,7 +6147,7 @@ async function reviewTui(api, options, fileIO, observer) {
|
|
|
4200
6147
|
once: (request, signal) => measured(traces?.get(request), "approval-reply", () => approval.once(request, signal))
|
|
4201
6148
|
} : approval,
|
|
4202
6149
|
visibleID: () => visibleApproval()
|
|
4203
|
-
}, void 0, modes);
|
|
6150
|
+
}, void 0, modes, (fact) => notifications?.fact(fact));
|
|
4204
6151
|
api.event.on("permission.asked", (event) => controller.asked(event.properties));
|
|
4205
6152
|
api.event.on("permission.replied", (event) => controller.replied(event.properties.requestID));
|
|
4206
6153
|
api.event.on("session.deleted", (event) => {
|
|
@@ -4218,11 +6165,13 @@ async function reviewTui(api, options, fileIO, observer) {
|
|
|
4218
6165
|
api.event.on("session.idle", () => void refresh());
|
|
4219
6166
|
api.event.on("session.error", () => void refresh());
|
|
4220
6167
|
api.lifecycle.onDispose(async () => {
|
|
6168
|
+
const notificationCleanup = notifications?.dispose();
|
|
4221
6169
|
pendingRefresh.dispose();
|
|
4222
6170
|
clearInterval(interval);
|
|
4223
6171
|
setSidebar(void 0);
|
|
4224
6172
|
unregisterMode();
|
|
4225
|
-
|
|
6173
|
+
const reviewCleanup = controller.dispose();
|
|
6174
|
+
await Promise.allSettled([reviewCleanup, notificationCleanup]);
|
|
4226
6175
|
await modes.flush().catch(() => {
|
|
4227
6176
|
});
|
|
4228
6177
|
await lifetime.flush();
|
|
@@ -4241,6 +6190,10 @@ async function reviewTui(api, options, fileIO, observer) {
|
|
|
4241
6190
|
return null;
|
|
4242
6191
|
},
|
|
4243
6192
|
app: () => {
|
|
6193
|
+
if (notifications) createEffect(() => {
|
|
6194
|
+
const route = api.route.current;
|
|
6195
|
+
notifications?.visit(route.name === "session" ? route.params?.sessionID : void 0);
|
|
6196
|
+
});
|
|
4244
6197
|
const select = () => {
|
|
4245
6198
|
const mounted = sidebar();
|
|
4246
6199
|
const route = api.route.current;
|
|
@@ -4476,6 +6429,12 @@ function withFileAccess(io) {
|
|
|
4476
6429
|
function withDiagnostics(observer) {
|
|
4477
6430
|
return (api, options) => reviewTui(api, options, void 0, observer);
|
|
4478
6431
|
}
|
|
6432
|
+
function withNotifications(factory) {
|
|
6433
|
+
return (api, options) => reviewTui(api, options, void 0, void 0, factory);
|
|
6434
|
+
}
|
|
6435
|
+
function withNotificationProcesses(factory) {
|
|
6436
|
+
return (api, options) => reviewTui(api, options, void 0, void 0, (click, config) => new LinuxNotifications(config, click, factory()));
|
|
6437
|
+
}
|
|
4479
6438
|
var tui_default = {
|
|
4480
6439
|
id: "opencode-reviewer",
|
|
4481
6440
|
tui: (api, options) => reviewTui(api, options)
|
|
@@ -4483,5 +6442,7 @@ var tui_default = {
|
|
|
4483
6442
|
export {
|
|
4484
6443
|
tui_default as default,
|
|
4485
6444
|
withDiagnostics,
|
|
4486
|
-
withFileAccess
|
|
6445
|
+
withFileAccess,
|
|
6446
|
+
withNotificationProcesses,
|
|
6447
|
+
withNotifications
|
|
4487
6448
|
};
|