From 30bfaa0904477e4db09420fdd6a9b54425a69fe5 Mon Sep 17 00:00:00 2001 From: Jacob Kim Date: Sat, 28 Jun 2025 15:37:07 -0700 Subject: [PATCH 01/97] add initial fplab static contextualization code --- .../static-context/StaticContextService.ts | 181 ++++++++++++++++++ .../queries/hole-queries/typescript.scm | 36 ++++ .../queries/hole-queries/typescript.ts | 36 ++++ .../typescript-get-toplevel-headers.scm | 22 +++ .../typescript-get-toplevel-headers.ts | 22 +++ .../typescript-extract-identifiers.scm | 10 + .../typescript-extract-identifiers.ts | 10 + ...ipt-find-typedecl-given-typeidentifier.scm | 11 ++ ...ript-find-typedecl-given-typeidentifier.ts | 11 ++ .../context/static-context/types.ts | 23 +++ 10 files changed, 362 insertions(+) create mode 100644 core/autocomplete/context/static-context/StaticContextService.ts create mode 100644 core/autocomplete/context/static-context/queries/hole-queries/typescript.scm create mode 100644 core/autocomplete/context/static-context/queries/hole-queries/typescript.ts create mode 100644 core/autocomplete/context/static-context/queries/relevant-headers-queries/typescript-get-toplevel-headers.scm create mode 100644 core/autocomplete/context/static-context/queries/relevant-headers-queries/typescript-get-toplevel-headers.ts create mode 100644 core/autocomplete/context/static-context/queries/relevant-types-queries/typescript-extract-identifiers.scm create mode 100644 core/autocomplete/context/static-context/queries/relevant-types-queries/typescript-extract-identifiers.ts create mode 100644 core/autocomplete/context/static-context/queries/relevant-types-queries/typescript-find-typedecl-given-typeidentifier.scm create mode 100644 core/autocomplete/context/static-context/queries/relevant-types-queries/typescript-find-typedecl-given-typeidentifier.ts create mode 100644 core/autocomplete/context/static-context/types.ts diff --git a/core/autocomplete/context/static-context/StaticContextService.ts b/core/autocomplete/context/static-context/StaticContextService.ts new file mode 100644 index 00000000000..eb005d0cbcc --- /dev/null +++ b/core/autocomplete/context/static-context/StaticContextService.ts @@ -0,0 +1,181 @@ +import * as fs from "fs/promises"; +import { IDE, Position } from "../../.."; +import { AutocompleteCodeSnippet, AutocompleteStaticSnippet } from "../../snippets/types"; +import { HelperVars } from "../../util/HelperVars"; +import { HoleContext, RelevantHeaders, RelevantTypes } from "./types"; +import { getAst } from "../../util/ast"; +import { getFullLanguageName, getQueryForFile } from "../../../util/treeSitter"; +import path from "path"; + +export class StaticContextService { + private readonly ide: IDE; + + constructor(ide: IDE) { + this.ide = ide; + } + + public async getContext( + helper: HelperVars + ): Promise { + // Get the three contexts holeContext, relevantTypes, relevantHeaders. + const holeContext = await this.getHoleContext(helper.filepath, helper.pos); + + const relevantTypes = await this.extractRelevantTypes( + holeContext.fullHoverResult, + holeContext.functionName, + holeContext.range.start.line, + new Map(), + holeContext.source, + new Map(), + ); + + let repo: string[] = []; + if (this.language === "typescript") { + repo = getAllTSFiles(this.repoPath); + } else if (this.language === "ocaml") { + repo = getAllOCamlFiles(this.repoPath); + } + + const relevantHeaders = await this.extractRelevantHeaders( + repo, + relevantTypes, + holeContext.functionTypeSpan, + holeContext.functionName, + this.repoPath + ); + + const relevantTypesToReturn: Map = new Map(); + relevantTypes.forEach(({ typeSpan: v, sourceFile: src }, _) => { + if (relevantTypesToReturn.has(src)) { + const updated = relevantTypesToReturn.get(src)!; + updated.push(v); + relevantTypesToReturn.set(src, updated); + } else { + relevantTypesToReturn.set(src, [v]); + } + }) + + + const relevantHeadersToReturn: Map = new Map(); + relevantHeaders.forEach(({ typeSpan: v, sourceFile: src }) => { + if (relevantHeadersToReturn.has(src)) { + const updated = relevantHeadersToReturn.get(src)!; + if (!updated.includes(v)) { + updated.push(v); + } + relevantHeadersToReturn.set(src, updated); + } else { + relevantHeadersToReturn.set(src, [v]); + } + }) + + return { + holeType: "" + relevantTypes: "" + relevantHeaders: "" + }; + } + + private async getHoleContext( + sketchFilePath: string, + cursorPosition: Position + ): Promise { + // We need to inject the hole @ to trigger a treesitter error node. + const sketchFileContent = await fs.readFile(sketchFilePath, "utf8"); + const injectedContent = this.insertAtPosition( + sketchFileContent, + cursorPosition, + "@;" + ); + + // The hole's position is cursorPosition. + + // Use treesitter to parse. + const ast = await getAst(sketchFilePath, injectedContent); + if (!ast) { + throw new Error("failed to get ast"); + } + const language = getFullLanguageName(sketchFilePath); + const query = await getQueryForFile( + sketchFilePath, + path.join(`./queries/hole-queries/${language}.scm`) + ); + if (!query) { + throw new Error( + `failed to get query for file ${sketchFilePath} and language ${language}` + ); + } + + const captures = query.captures(ast.rootNode); + const res: HoleContext = { + fullHoverResult: "", + functionName: "", + functionTypeSpan: "", + range: { + start: { line: 0, character: 0 }, + end: { line: 0, character: 52 }, + }, + source: `file://${sketchFilePath}`, + }; + for (const c of captures) { + const { name, node } = c; + // console.log(`${name} โ†’`, node.text, node.startPosition, node.endPosition); + + switch (name) { + case "function.decl": { + res.fullHoverResult = node.text; + } + case "function.name": { + res.functionName = node.text; + } + case "function.type": { + res.functionTypeSpan = node.text; + res.range = { + start: { + line: node.startPosition.row, + character: node.startPosition.column, + }, + end: { + line: node.endPosition.row, + character: node.endPosition.column, + }, + }; + } + } + } + + return res; + } + + private async extractRelevantTypes(): Promise { + + } + + private async extractRelevantHeaders(): Promise { + + } + + + private insertAtPosition = ( + contents: string, + cursorPosition: { line: number, character: number }, + insertText: string + ): string => { + const lines = contents.split(/\r?\n/); // Handle both LF and CRLF line endings + const { line, character } = cursorPosition; + + if (line < 0 || line >= lines.length) { + throw new Error("Invalid line number"); + } + + const targetLine = lines[line]; + if (character < 0 || character > targetLine.length) { + throw new Error("Invalid character index"); + } + + // Insert the text + lines[line] = targetLine.slice(0, character) + insertText + targetLine.slice(character); + + return lines.join("\n"); // Reconstruct the file + } +} diff --git a/core/autocomplete/context/static-context/queries/hole-queries/typescript.scm b/core/autocomplete/context/static-context/queries/hole-queries/typescript.scm new file mode 100644 index 00000000000..e69122b078e --- /dev/null +++ b/core/autocomplete/context/static-context/queries/hole-queries/typescript.scm @@ -0,0 +1,36 @@ +;; Capture the variable/function name +(variable_declarator + name: (identifier) @function.name + type: (type_annotation + (function_type) @function.type)) + +;; Capture the full parameter list +(function_type + parameters: (formal_parameters) @function.params) + +;; Capture the type identifiers used in the parameters +(formal_parameters + (required_parameter + type: (type_annotation + (type_identifier) @param.type)) + (required_parameter + type: (type_annotation + (type_identifier) @param.type))) + +;; Capture the return type of the function +(function_type + return_type: (type_identifier) @return.type) + +;; Capture any parse errors (e.g., the `??`) +(ERROR) @error.node + +;; Capture the entire function declaration line +(lexical_declaration) @function.decl + +;; Matches import declarations like: import { A, B } from "module"; +(import_statement + (import_clause + (named_imports + (import_specifier + name: (identifier) @import.name))) + source: (string) @import.source) diff --git a/core/autocomplete/context/static-context/queries/hole-queries/typescript.ts b/core/autocomplete/context/static-context/queries/hole-queries/typescript.ts new file mode 100644 index 00000000000..b0b4ae8abc0 --- /dev/null +++ b/core/autocomplete/context/static-context/queries/hole-queries/typescript.ts @@ -0,0 +1,36 @@ +export const TYPESCRIPT_HOLE_QUERY = `;; Capture the variable/function name +(variable_declarator + name: (identifier) @function.name + type: (type_annotation + (function_type) @function.type)) + +;; Capture the full parameter list +(function_type + parameters: (formal_parameters) @function.params) + +;; Capture the type identifiers used in the parameters +(formal_parameters + (required_parameter + type: (type_annotation + (type_identifier) @param.type)) + (required_parameter + type: (type_annotation + (type_identifier) @param.type))) + +;; Capture the return type of the function +(function_type + return_type: (type_identifier) @return.type) + +;; Capture any parse errors (e.g., the '?? ') +(ERROR) @error.node + +;; Capture the entire function declaration line +(lexical_declaration) @function.decl + +;; Matches import declarations like: import { A, B } from "module"; +(import_statement + (import_clause + (named_imports + (import_specifier + name: (identifier) @import.name))) + source: (string) @import.source)`; diff --git a/core/autocomplete/context/static-context/queries/relevant-headers-queries/typescript-get-toplevel-headers.scm b/core/autocomplete/context/static-context/queries/relevant-headers-queries/typescript-get-toplevel-headers.scm new file mode 100644 index 00000000000..02b0bda7724 --- /dev/null +++ b/core/autocomplete/context/static-context/queries/relevant-headers-queries/typescript-get-toplevel-headers.scm @@ -0,0 +1,22 @@ +;; Match top-level `var`, `let`, or `const` declarations +(lexical_declaration + (variable_declarator + name: (identifier) @top.var.name + type: (type_annotation + (_) @top.var.type))) @top.var.decl + +(variable_declaration + (variable_declarator + name: (identifier) @top.var.name + type: (type_annotation + (_) @top.var.type))) @top.var.decl + +;; Match function declarations +(function_declaration + name: (identifier) @top.fn.name + parameters: (formal_parameters + (required_parameter + pattern: (identifier) @top.fn.param.name + type: (type_annotation (_) @top.fn.param.type)))* + + return_type: (type_annotation (_) @top.fn.type)?) @top.fn.decl diff --git a/core/autocomplete/context/static-context/queries/relevant-headers-queries/typescript-get-toplevel-headers.ts b/core/autocomplete/context/static-context/queries/relevant-headers-queries/typescript-get-toplevel-headers.ts new file mode 100644 index 00000000000..bd0213af75c --- /dev/null +++ b/core/autocomplete/context/static-context/queries/relevant-headers-queries/typescript-get-toplevel-headers.ts @@ -0,0 +1,22 @@ +export const TYPESCRIPT_GET_TOPLEVEL_HEADERS = `;; Match top-level 'var', 'let', or 'const' declarations +(lexical_declaration + (variable_declarator + name: (identifier) @top.var.name + type: (type_annotation + (_) @top.var.type))) @top.var.decl + +(variable_declaration + (variable_declarator + name: (identifier) @top.var.name + type: (type_annotation + (_) @top.var.type))) @top.var.decl + +;; Match function declarations +(function_declaration + name: (identifier) @top.fn.name + parameters: (formal_parameters + (required_parameter + pattern: (identifier) @top.fn.param.name + type: (type_annotation (_) @top.fn.param.type)))* + + return_type: (type_annotation (_) @top.fn.type)?) @top.fn.decl` diff --git a/core/autocomplete/context/static-context/queries/relevant-types-queries/typescript-extract-identifiers.scm b/core/autocomplete/context/static-context/queries/relevant-types-queries/typescript-extract-identifiers.scm new file mode 100644 index 00000000000..b5051cb7751 --- /dev/null +++ b/core/autocomplete/context/static-context/queries/relevant-types-queries/typescript-extract-identifiers.scm @@ -0,0 +1,10 @@ +;; Capture the type alias name (left-hand side) +; (type_alias_declaration +; name: (type_identifier) @type.name) + +;; Capture all identifiers on the right-hand side (value), recursively +; (type_alias_declaration +; value: (_) @type.value) + +;; Match all identifiers inside the type value โ€” deeply nested +(type_identifier) @type.identifier diff --git a/core/autocomplete/context/static-context/queries/relevant-types-queries/typescript-extract-identifiers.ts b/core/autocomplete/context/static-context/queries/relevant-types-queries/typescript-extract-identifiers.ts new file mode 100644 index 00000000000..6e76a0a787c --- /dev/null +++ b/core/autocomplete/context/static-context/queries/relevant-types-queries/typescript-extract-identifiers.ts @@ -0,0 +1,10 @@ +export const TYPESCRIPT_EXTRACT_IDENTIFIERS = `;; Capture the type alias name (left-hand side) +; (type_alias_declaration +; name: (type_identifier) @type.name) + +;; Capture all identifiers on the right-hand side (value), recursively +; (type_alias_declaration +; value: (_) @type.value) + +;; Match all identifiers inside the type value โ€” deeply nested +(type_identifier) @type.identifier`; diff --git a/core/autocomplete/context/static-context/queries/relevant-types-queries/typescript-find-typedecl-given-typeidentifier.scm b/core/autocomplete/context/static-context/queries/relevant-types-queries/typescript-find-typedecl-given-typeidentifier.scm new file mode 100644 index 00000000000..b26180e05c6 --- /dev/null +++ b/core/autocomplete/context/static-context/queries/relevant-types-queries/typescript-find-typedecl-given-typeidentifier.scm @@ -0,0 +1,11 @@ +(type_alias_declaration + name: (type_identifier) @type.identifier + value: (_) @type.value) + +(interface_declaration + name: (type_identifier) @type.identifier + body: (_) @type.value) + +(enum_declaration + name: (type_identifier) @type.identifier + body: (_) @type.value) diff --git a/core/autocomplete/context/static-context/queries/relevant-types-queries/typescript-find-typedecl-given-typeidentifier.ts b/core/autocomplete/context/static-context/queries/relevant-types-queries/typescript-find-typedecl-given-typeidentifier.ts new file mode 100644 index 00000000000..4e1eabd7f4a --- /dev/null +++ b/core/autocomplete/context/static-context/queries/relevant-types-queries/typescript-find-typedecl-given-typeidentifier.ts @@ -0,0 +1,11 @@ +export const TYPESCRIPT_FIND_TYPEDECL_GIVEN_TYPEIDENTIFIER = `(type_alias_declaration + name: (type_identifier) @type.identifier + value: (_) @type.value) + +(interface_declaration + name: (type_identifier) @type.identifier + body: (_) @type.value) + +(enum_declaration + name: (type_identifier) @type.identifier + body: (_) @type.value)`; diff --git a/core/autocomplete/context/static-context/types.ts b/core/autocomplete/context/static-context/types.ts new file mode 100644 index 00000000000..7ddefda9737 --- /dev/null +++ b/core/autocomplete/context/static-context/types.ts @@ -0,0 +1,23 @@ +import { Tree } from "web-tree-sitter"; +import { Range } from "../../.."; + +interface TypeSpanAndSourceFile { + typeSpan: string, + sourceFile: string, +} + +interface TypeSpanAndSourceFileAndAst extends TypeSpanAndSourceFile { + ast: Tree +} + +export interface HoleContext { + fullHoverResult: string; + functionName: string; + functionTypeSpan: string; + range: Range; + source: string; +} + +export type RelevantTypes = Map; +export type RelevantHeaders = Set; + From be46653d1efbfb00bb2fd36da76d4b9d24e6718a Mon Sep 17 00:00:00 2001 From: Jacob Kim Date: Sat, 28 Jun 2025 15:37:51 -0700 Subject: [PATCH 02/97] pull in static context --- .../context/ContextRetrievalService.ts | 10 ++++++++++ core/autocomplete/snippets/getAllSnippets.ts | 3 +++ core/autocomplete/snippets/types.ts | 14 +++++++++++++- 3 files changed, 26 insertions(+), 1 deletion(-) diff --git a/core/autocomplete/context/ContextRetrievalService.ts b/core/autocomplete/context/ContextRetrievalService.ts index 72e061fed10..c21473d65df 100644 --- a/core/autocomplete/context/ContextRetrievalService.ts +++ b/core/autocomplete/context/ContextRetrievalService.ts @@ -2,16 +2,19 @@ import { IDE } from "../.."; import { AutocompleteCodeSnippet, AutocompleteSnippetType, + AutocompleteStaticSnippet, } from "../snippets/types"; import { HelperVars } from "../util/HelperVars"; import { ImportDefinitionsService } from "./ImportDefinitionsService"; import { getSymbolsForSnippet } from "./ranking"; import { RootPathContextService } from "./root-path-context/RootPathContextService"; +import { StaticContextService } from "./static-context/StaticContextService"; export class ContextRetrievalService { private importDefinitionsService: ImportDefinitionsService; private rootPathContextService: RootPathContextService; + private staticContextService: StaticContextService; constructor(private readonly ide: IDE) { this.importDefinitionsService = new ImportDefinitionsService(this.ide); @@ -19,6 +22,7 @@ export class ContextRetrievalService { this.importDefinitionsService, this.ide, ); + this.staticContextService = new StaticContextService(this.ide); } public async getSnippetsFromImportDefinitions( @@ -70,4 +74,10 @@ export class ContextRetrievalService { helper.treePath, ); } + + public async getStaticContextSnippets( + helper: HelperVars + ): Promise { + return this.staticContextService.getContext(helper); + } } diff --git a/core/autocomplete/snippets/getAllSnippets.ts b/core/autocomplete/snippets/getAllSnippets.ts index eaf2875873b..3db2c2542bf 100644 --- a/core/autocomplete/snippets/getAllSnippets.ts +++ b/core/autocomplete/snippets/getAllSnippets.ts @@ -1,3 +1,4 @@ +import { context } from "esbuild"; import { IDE } from "../../index"; import { findUriInDirs } from "../../util/uri"; import { ContextRetrievalService } from "../context/ContextRetrievalService"; @@ -123,6 +124,7 @@ export const getAllSnippets = async ({ ideSnippets, diffSnippets, clipboardSnippets, + staticSnippets ] = await Promise.all([ racePromise(contextRetrievalService.getRootPathSnippets(helper)), racePromise( @@ -133,6 +135,7 @@ export const getAllSnippets = async ({ : [], [], // racePromise(getDiffSnippets(ide)) // temporarily disabled, see https://github.com/continuedev/continue/pull/5882, racePromise(getClipboardSnippets(ide)), + racePromise(contextRetrievalService.getStaticContextSnippets(helper)) ]); return { diff --git a/core/autocomplete/snippets/types.ts b/core/autocomplete/snippets/types.ts index e43b59862a3..3c2cddcb620 100644 --- a/core/autocomplete/snippets/types.ts +++ b/core/autocomplete/snippets/types.ts @@ -23,7 +23,19 @@ export interface AutocompleteClipboardSnippet extends BaseAutocompleteSnippet { copiedAt: string; } +type Filepath = string; +type RelevantType = string; +type RelevantHeader = string; + +export interface AutocompleteStaticSnippet extends BaseAutocompleteSnippet { + type: AutocompleteSnippetType.Code; + holeType: string, + relevantTypes: Map, + relevantHeaders: Map +} + export type AutocompleteSnippet = | AutocompleteCodeSnippet | AutocompleteDiffSnippet - | AutocompleteClipboardSnippet; + | AutocompleteClipboardSnippet + | AutocompleteStaticSnippet; From a70c0b78417e256787be91665cf36633b4b4a885 Mon Sep 17 00:00:00 2001 From: Jacob Kim Date: Sat, 28 Jun 2025 16:00:33 -0700 Subject: [PATCH 03/97] add treesitter utility functions that are exclusively used for static context retrieval --- .../static-context/tree-sitter-utils.ts | 164 ++++++++++++++++++ 1 file changed, 164 insertions(+) create mode 100644 core/autocomplete/context/static-context/tree-sitter-utils.ts diff --git a/core/autocomplete/context/static-context/tree-sitter-utils.ts b/core/autocomplete/context/static-context/tree-sitter-utils.ts new file mode 100644 index 00000000000..12872e17fe5 --- /dev/null +++ b/core/autocomplete/context/static-context/tree-sitter-utils.ts @@ -0,0 +1,164 @@ +import * as fs from "fs/promises"; +import Parser from "web-tree-sitter"; +import { getAst } from "../../util/ast"; +import { getFullLanguageName, getQueryForFile } from "../../../util/treeSitter"; +import path from "path"; + +export interface TypeDeclarationResult { + name: string; + fullText: string; + startLine: number; + startColumn: number; + endLine: number; + endColumn: number; + kind: string; +} + +export function findEnclosingTypeDeclaration( + sourceCode: string, + cursorLine: number, + cursorColumn: number, + ast: Parser.Tree +): TypeDeclarationResult | null { + const point = { row: cursorLine, column: cursorColumn }; + let node = ast.rootNode.descendantForPosition(point); + + while ( + node && + ![ + "type_alias_declaration", + "interface_declaration", + "enum_declaration", + ].includes(node.type) + ) { + if (!node.parent) return null; + node = node.parent; + } + + if (!node) return null; + + const nameNode = node.childForFieldName("name"); + const name = nameNode?.text ?? ""; + const fullText = sourceCode.slice(node.startIndex, node.endIndex); + + return { + name, + fullText, + startLine: node.startPosition.row, + startColumn: node.startPosition.column, + endLine: node.endPosition.row, + endColumn: node.endPosition.column, + kind: node.type, + }; +} + +export async function extractTopLevelDecls(currentFile: string, givenParser?: Parser) { + const ast = await getAst(currentFile, await fs.readFile(currentFile, "utf8")); + if (!ast) { + throw new Error(`failed to get ast for file ${currentFile}`); + } + let language; + if (givenParser) { + language = givenParser.getLanguage(); + } else { + language = getFullLanguageName(currentFile); + } + + const query = await getQueryForFile( + currentFile, + path.join( + __dirname, + "queries", + "relevant-headers-queries", + `${language}-get-toplevel-headers.scm` + ) + ); + if (!query) { + throw new Error( + `failed to get query for file ${currentFile} and language ${language}` + ); + } + return query.matches(ast.rootNode); +} + +export async function extractTopLevelDeclsWithFormatting(currentFile: string, givenParser?: Parser) { + const ast = await getAst(currentFile, await fs.readFile(currentFile, "utf8")); + if (!ast) { + throw new Error(`failed to get ast for file ${currentFile}`); + } + let language; + if (givenParser) { + language = givenParser.getLanguage(); + } else { + language = getFullLanguageName(currentFile); + } + + const query = await getQueryForFile( + currentFile, + path.join( + __dirname, + "queries", + "relevant-headers-queries", + `${language}-get-toplevel-headers.scm` + ) + ); + if (!query) { + throw new Error( + `failed to get query for file ${currentFile} and language ${language}` + ); + } + const matches = query.matches(ast.rootNode); + + const results = []; + + for (const match of matches) { + const item: { + declaration: string; + nodeType: string; + name: string; + declaredType: string; + returnType?: string; + } = { + declaration: "", + nodeType: "", + name: "", + declaredType: "", + }; + + for (const { name, node } of match.captures) { + if (name === "top.var.decl") { + item.nodeType = "variable"; + item.declaration = node.text; + + // Attempt to get the declared type (e.g., const x: string = ...) + const typeNode = node.descendantsOfType("type_annotation")[0]; + if (typeNode) { + item.declaredType = typeNode.text.replace(/^:\s*/, ""); + } + } else if (name === "top.var.name" || name === "top.fn.name") { + item.name = node.text; + } else if (name === "top.fn.decl") { + item.nodeType = "function"; + item.declaration = node.text; + + // Get the return type (e.g., function foo(): string) + const returnTypeNode = node.childForFieldName("return_type"); + if (returnTypeNode) { + item.returnType = returnTypeNode.text.replace(/^:\s*/, ""); + } + + // Get declaredType if needed (TypeScript style) + const nameNode = node.childForFieldName("name"); + if (nameNode && nameNode.nextSibling?.type === "type_annotation") { + item.declaredType = nameNode.nextSibling.text.replace(/^:\s*/, ""); + } + } + } + + if (item.name && item.declaration) { + results.push(item); + } + } + + return results; +} From e4b412acfeda3aac0e4683b1b308a2d07e91f009 Mon Sep 17 00:00:00 2001 From: Jacob Kim Date: Sat, 28 Jun 2025 16:01:00 -0700 Subject: [PATCH 04/97] export types --- core/autocomplete/context/static-context/types.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/autocomplete/context/static-context/types.ts b/core/autocomplete/context/static-context/types.ts index 7ddefda9737..03f1f839df4 100644 --- a/core/autocomplete/context/static-context/types.ts +++ b/core/autocomplete/context/static-context/types.ts @@ -1,12 +1,12 @@ import { Tree } from "web-tree-sitter"; import { Range } from "../../.."; -interface TypeSpanAndSourceFile { +export interface TypeSpanAndSourceFile { typeSpan: string, sourceFile: string, } -interface TypeSpanAndSourceFileAndAst extends TypeSpanAndSourceFile { +export interface TypeSpanAndSourceFileAndAst extends TypeSpanAndSourceFile { ast: Tree } From fed6ba1591d6608dfb93a643d251cfaca356fc4d Mon Sep 17 00:00:00 2001 From: Jacob Kim Date: Sat, 28 Jun 2025 16:04:46 -0700 Subject: [PATCH 05/97] add gotoTypeDefinition method --- core/index.d.ts | 47 +++++++++++++++--------------- extensions/vscode/src/VsCodeIde.ts | 11 +++++++ 2 files changed, 35 insertions(+), 23 deletions(-) diff --git a/core/index.d.ts b/core/index.d.ts index eb0de41d568..470b0eed9fc 100644 --- a/core/index.d.ts +++ b/core/index.d.ts @@ -49,13 +49,13 @@ export interface IndexingProgressUpdate { desc: string; shouldClearIndexes?: boolean; status: - | "loading" - | "indexing" - | "done" - | "failed" - | "paused" - | "disabled" - | "cancelled"; + | "loading" + | "indexing" + | "done" + | "failed" + | "paused" + | "disabled" + | "cancelled"; debugInfo?: string; } @@ -91,7 +91,7 @@ type RequiredLLMOptions = export interface ILLM extends Omit, - Required> { + Required> { get providerName(): string; get underlyingProviderName(): string; @@ -773,10 +773,10 @@ export interface IDE { getCurrentFile(): Promise< | undefined | { - isUntitled: boolean; - path: string; - contents: string; - } + isUntitled: boolean; + path: string; + contents: string; + } >; getPinnedFiles(): Promise; @@ -814,6 +814,7 @@ export interface IDE { // LSP gotoDefinition(location: Location): Promise; + gotoTypeDefinition(location: Location): Promise; // Callbacks onDidChangeActiveTextEditor(callback: (fileUri: string) => void): void; @@ -955,11 +956,11 @@ export interface CustomCommand { export interface Prediction { type: "content"; content: - | string - | { - type: "text"; - text: string; - }[]; + | string + | { + type: "text"; + text: string; + }[]; } export interface ToolExtras { @@ -1455,9 +1456,9 @@ export interface Config { embeddingsProvider?: EmbeddingsProviderDescription | ILLM; /** The model that Continue will use for tab autocompletions. */ tabAutocompleteModel?: - | CustomLLM - | JSONModelDescription - | (CustomLLM | JSONModelDescription)[]; + | CustomLLM + | JSONModelDescription + | (CustomLLM | JSONModelDescription)[]; /** Options for tab autocomplete */ tabAutocompleteOptions?: Partial; /** UI styles customization */ @@ -1551,9 +1552,9 @@ export type PackageDetailsSuccess = PackageDetails & { export type PackageDocsResult = { packageInfo: ParsedPackageInfo; } & ( - | { error: string; details?: never } - | { details: PackageDetailsSuccess; error?: never } -); + | { error: string; details?: never } + | { details: PackageDetailsSuccess; error?: never } + ); export interface TerminalOptions { reuseTerminal?: boolean; diff --git a/extensions/vscode/src/VsCodeIde.ts b/extensions/vscode/src/VsCodeIde.ts index 5ca51d18308..a9ea5d9c69d 100644 --- a/extensions/vscode/src/VsCodeIde.ts +++ b/extensions/vscode/src/VsCodeIde.ts @@ -88,6 +88,17 @@ class VsCodeIde implements IDE { return result; } + async gotoTypeDefinition(location: Location): Promise { + const result = await executeGotoProvider({ + uri: vscode.Uri.parse(location.filepath), + line: location.position.line, + character: location.position.character, + name: "vscode.executeTypeDefinitionProvider", + }); + + return result; + } + onDidChangeActiveTextEditor(callback: (uri: string) => void): void { vscode.window.onDidChangeActiveTextEditor((editor) => { if (editor) { From 1717fca23193b56e42e748218a10003e95b453b8 Mon Sep 17 00:00:00 2001 From: Jacob Kim Date: Sat, 28 Jun 2025 16:05:01 -0700 Subject: [PATCH 06/97] add method to extract relevant types --- .../static-context/StaticContextService.ts | 126 +++++++++++++++++- 1 file changed, 123 insertions(+), 3 deletions(-) diff --git a/core/autocomplete/context/static-context/StaticContextService.ts b/core/autocomplete/context/static-context/StaticContextService.ts index eb005d0cbcc..465be3456e5 100644 --- a/core/autocomplete/context/static-context/StaticContextService.ts +++ b/core/autocomplete/context/static-context/StaticContextService.ts @@ -2,10 +2,11 @@ import * as fs from "fs/promises"; import { IDE, Position } from "../../.."; import { AutocompleteCodeSnippet, AutocompleteStaticSnippet } from "../../snippets/types"; import { HelperVars } from "../../util/HelperVars"; -import { HoleContext, RelevantHeaders, RelevantTypes } from "./types"; +import { HoleContext, RelevantHeaders, RelevantTypes, TypeSpanAndSourceFileAndAst } from "./types"; import { getAst } from "../../util/ast"; import { getFullLanguageName, getQueryForFile } from "../../../util/treeSitter"; import path from "path"; +import { findEnclosingTypeDeclaration } from "./tree-sitter-utils"; export class StaticContextService { private readonly ide: IDE; @@ -24,7 +25,6 @@ export class StaticContextService { holeContext.fullHoverResult, holeContext.functionName, holeContext.range.start.line, - new Map(), holeContext.source, new Map(), ); @@ -147,10 +147,130 @@ export class StaticContextService { return res; } - private async extractRelevantTypes(): Promise { + private async extractRelevantTypes( + declText: string, + typeName: string, + startLine: number, + currentFile: string, + foundContents: Map, // uri -> contents + ): Promise { + const foundSoFar = new Map(); // identifier -> [full hover result, source] + await this.extractRelevantTypesHelper( + declText, + typeName, + startLine, + foundSoFar, + currentFile, + foundContents, + ); + + return foundSoFar; } + private async extractRelevantTypesHelper( + declText: string, + typeName: string, + startLine: number, + foundSoFar: Map, // identifier -> [full hover result, source] + currentFile: string, + foundContents: Map, // uri -> contents + ) { + if (!foundSoFar.has(typeName)) { + const ast = await getAst(currentFile, declText); + if (!ast) { + throw new Error(`failed to get ast for file ${currentFile}`); + } + foundSoFar.set(typeName, { + typeSpan: declText, + sourceFile: currentFile.slice(7), + ast: ast, + }); + + const language = getFullLanguageName(currentFile); + const query = await getQueryForFile( + currentFile, + path.join( + __dirname, + "queries", + "relevant-types-queries", + `${language}-extract-identifiers.scm` + ) + ); + if (!query) { + throw new Error( + `failed to get query for file ${currentFile} and language ${language}` + ); + } + + const identifiers = query.captures(ast.rootNode); + + for (const { name, node } of identifiers) { + if (!foundSoFar.has(node.text)) { + try { + const typeDefinitionResult = + await this.ide.gotoTypeDefinition({ + filepath: currentFile, + position: { + character: node.startPosition.column, + line: startLine + node.startPosition.row, + }, + }); + + if (typeDefinitionResult.length != 0) { + const tdLocation = typeDefinitionResult[0]; + + let content = ""; + + if (foundContents.has(tdLocation.filepath)) { + content = foundContents.get(tdLocation.filepath)!; + } else { + content = await fs.readFile(tdLocation.filepath, "utf8"); + foundContents.set(tdLocation.filepath, content); + } + + const ast = await getAst(tdLocation.filepath, content); + if (!ast) { + throw new Error( + `failed to get ast for file ${tdLocation.filepath}` + ); + } + const decl = findEnclosingTypeDeclaration( + content, + tdLocation.range.start.line, + tdLocation.range.start.character, + ast + ); + if (!decl) { + // throw new Error(`failed to get decl for file ${tdLocation.uri}`); + console.error(`failed to get decl for file ${tdLocation.filepath}`); + } + + if (decl) { + await this.extractRelevantTypesHelper( + decl.fullText, + node.text, + tdLocation.range.start.line, + foundSoFar, + tdLocation.filepath, + foundContents, + ); + } else { + // console.log("decl not found"); + } + } else { + // console.log("td not found"); + } + } catch (err) { + console.log(err); + } + } else { + } + } + } + } + + private async extractRelevantHeaders(): Promise { } From 4e97c922d5d2968b8f9513865c346af77df705a7 Mon Sep 17 00:00:00 2001 From: Jacob Kim Date: Sat, 28 Jun 2025 19:54:19 -0700 Subject: [PATCH 07/97] move queries to extensions/vscode --- .../queries/hole-queries/typescript.ts | 36 ------------------- .../typescript-get-toplevel-headers.ts | 22 ------------ .../typescript-extract-identifiers.ts | 10 ------ ...ript-find-typedecl-given-typeidentifier.ts | 11 ------ .../hole-queries/typescript.scm | 0 .../typescript-get-toplevel-headers.scm | 0 .../typescript-extract-identifiers.scm | 0 ...ipt-find-typedecl-given-typeidentifier.scm | 0 8 files changed, 79 deletions(-) delete mode 100644 core/autocomplete/context/static-context/queries/hole-queries/typescript.ts delete mode 100644 core/autocomplete/context/static-context/queries/relevant-headers-queries/typescript-get-toplevel-headers.ts delete mode 100644 core/autocomplete/context/static-context/queries/relevant-types-queries/typescript-extract-identifiers.ts delete mode 100644 core/autocomplete/context/static-context/queries/relevant-types-queries/typescript-find-typedecl-given-typeidentifier.ts rename {core/autocomplete/context/static-context/queries => extensions/vscode/tree-sitter/static-context-queries}/hole-queries/typescript.scm (100%) rename {core/autocomplete/context/static-context/queries => extensions/vscode/tree-sitter/static-context-queries}/relevant-headers-queries/typescript-get-toplevel-headers.scm (100%) rename {core/autocomplete/context/static-context/queries => extensions/vscode/tree-sitter/static-context-queries}/relevant-types-queries/typescript-extract-identifiers.scm (100%) rename {core/autocomplete/context/static-context/queries => extensions/vscode/tree-sitter/static-context-queries}/relevant-types-queries/typescript-find-typedecl-given-typeidentifier.scm (100%) diff --git a/core/autocomplete/context/static-context/queries/hole-queries/typescript.ts b/core/autocomplete/context/static-context/queries/hole-queries/typescript.ts deleted file mode 100644 index b0b4ae8abc0..00000000000 --- a/core/autocomplete/context/static-context/queries/hole-queries/typescript.ts +++ /dev/null @@ -1,36 +0,0 @@ -export const TYPESCRIPT_HOLE_QUERY = `;; Capture the variable/function name -(variable_declarator - name: (identifier) @function.name - type: (type_annotation - (function_type) @function.type)) - -;; Capture the full parameter list -(function_type - parameters: (formal_parameters) @function.params) - -;; Capture the type identifiers used in the parameters -(formal_parameters - (required_parameter - type: (type_annotation - (type_identifier) @param.type)) - (required_parameter - type: (type_annotation - (type_identifier) @param.type))) - -;; Capture the return type of the function -(function_type - return_type: (type_identifier) @return.type) - -;; Capture any parse errors (e.g., the '?? ') -(ERROR) @error.node - -;; Capture the entire function declaration line -(lexical_declaration) @function.decl - -;; Matches import declarations like: import { A, B } from "module"; -(import_statement - (import_clause - (named_imports - (import_specifier - name: (identifier) @import.name))) - source: (string) @import.source)`; diff --git a/core/autocomplete/context/static-context/queries/relevant-headers-queries/typescript-get-toplevel-headers.ts b/core/autocomplete/context/static-context/queries/relevant-headers-queries/typescript-get-toplevel-headers.ts deleted file mode 100644 index bd0213af75c..00000000000 --- a/core/autocomplete/context/static-context/queries/relevant-headers-queries/typescript-get-toplevel-headers.ts +++ /dev/null @@ -1,22 +0,0 @@ -export const TYPESCRIPT_GET_TOPLEVEL_HEADERS = `;; Match top-level 'var', 'let', or 'const' declarations -(lexical_declaration - (variable_declarator - name: (identifier) @top.var.name - type: (type_annotation - (_) @top.var.type))) @top.var.decl - -(variable_declaration - (variable_declarator - name: (identifier) @top.var.name - type: (type_annotation - (_) @top.var.type))) @top.var.decl - -;; Match function declarations -(function_declaration - name: (identifier) @top.fn.name - parameters: (formal_parameters - (required_parameter - pattern: (identifier) @top.fn.param.name - type: (type_annotation (_) @top.fn.param.type)))* - - return_type: (type_annotation (_) @top.fn.type)?) @top.fn.decl` diff --git a/core/autocomplete/context/static-context/queries/relevant-types-queries/typescript-extract-identifiers.ts b/core/autocomplete/context/static-context/queries/relevant-types-queries/typescript-extract-identifiers.ts deleted file mode 100644 index 6e76a0a787c..00000000000 --- a/core/autocomplete/context/static-context/queries/relevant-types-queries/typescript-extract-identifiers.ts +++ /dev/null @@ -1,10 +0,0 @@ -export const TYPESCRIPT_EXTRACT_IDENTIFIERS = `;; Capture the type alias name (left-hand side) -; (type_alias_declaration -; name: (type_identifier) @type.name) - -;; Capture all identifiers on the right-hand side (value), recursively -; (type_alias_declaration -; value: (_) @type.value) - -;; Match all identifiers inside the type value โ€” deeply nested -(type_identifier) @type.identifier`; diff --git a/core/autocomplete/context/static-context/queries/relevant-types-queries/typescript-find-typedecl-given-typeidentifier.ts b/core/autocomplete/context/static-context/queries/relevant-types-queries/typescript-find-typedecl-given-typeidentifier.ts deleted file mode 100644 index 4e1eabd7f4a..00000000000 --- a/core/autocomplete/context/static-context/queries/relevant-types-queries/typescript-find-typedecl-given-typeidentifier.ts +++ /dev/null @@ -1,11 +0,0 @@ -export const TYPESCRIPT_FIND_TYPEDECL_GIVEN_TYPEIDENTIFIER = `(type_alias_declaration - name: (type_identifier) @type.identifier - value: (_) @type.value) - -(interface_declaration - name: (type_identifier) @type.identifier - body: (_) @type.value) - -(enum_declaration - name: (type_identifier) @type.identifier - body: (_) @type.value)`; diff --git a/core/autocomplete/context/static-context/queries/hole-queries/typescript.scm b/extensions/vscode/tree-sitter/static-context-queries/hole-queries/typescript.scm similarity index 100% rename from core/autocomplete/context/static-context/queries/hole-queries/typescript.scm rename to extensions/vscode/tree-sitter/static-context-queries/hole-queries/typescript.scm diff --git a/core/autocomplete/context/static-context/queries/relevant-headers-queries/typescript-get-toplevel-headers.scm b/extensions/vscode/tree-sitter/static-context-queries/relevant-headers-queries/typescript-get-toplevel-headers.scm similarity index 100% rename from core/autocomplete/context/static-context/queries/relevant-headers-queries/typescript-get-toplevel-headers.scm rename to extensions/vscode/tree-sitter/static-context-queries/relevant-headers-queries/typescript-get-toplevel-headers.scm diff --git a/core/autocomplete/context/static-context/queries/relevant-types-queries/typescript-extract-identifiers.scm b/extensions/vscode/tree-sitter/static-context-queries/relevant-types-queries/typescript-extract-identifiers.scm similarity index 100% rename from core/autocomplete/context/static-context/queries/relevant-types-queries/typescript-extract-identifiers.scm rename to extensions/vscode/tree-sitter/static-context-queries/relevant-types-queries/typescript-extract-identifiers.scm diff --git a/core/autocomplete/context/static-context/queries/relevant-types-queries/typescript-find-typedecl-given-typeidentifier.scm b/extensions/vscode/tree-sitter/static-context-queries/relevant-types-queries/typescript-find-typedecl-given-typeidentifier.scm similarity index 100% rename from core/autocomplete/context/static-context/queries/relevant-types-queries/typescript-find-typedecl-given-typeidentifier.scm rename to extensions/vscode/tree-sitter/static-context-queries/relevant-types-queries/typescript-find-typedecl-given-typeidentifier.scm From 97788f2b9db43b906147fdbd9f251eae57cdab43 Mon Sep 17 00:00:00 2001 From: Jacob Kim Date: Sat, 28 Jun 2025 19:54:53 -0700 Subject: [PATCH 08/97] fix path to query --- .../static-context/tree-sitter-utils.ts | 69 +++++++++++++++---- 1 file changed, 57 insertions(+), 12 deletions(-) diff --git a/core/autocomplete/context/static-context/tree-sitter-utils.ts b/core/autocomplete/context/static-context/tree-sitter-utils.ts index 12872e17fe5..c7a9a20a331 100644 --- a/core/autocomplete/context/static-context/tree-sitter-utils.ts +++ b/core/autocomplete/context/static-context/tree-sitter-utils.ts @@ -66,12 +66,7 @@ export async function extractTopLevelDecls(currentFile: string, givenParser?: Pa const query = await getQueryForFile( currentFile, - path.join( - __dirname, - "queries", - "relevant-headers-queries", - `${language}-get-toplevel-headers.scm` - ) + `static-context-queries/relevant-headers-queries/${language}-get-toplevel-headers.scm` ); if (!query) { throw new Error( @@ -95,12 +90,7 @@ export async function extractTopLevelDeclsWithFormatting(currentFile: string, gi const query = await getQueryForFile( currentFile, - path.join( - __dirname, - "queries", - "relevant-headers-queries", - `${language}-get-toplevel-headers.scm` - ) + `static-context-queries/relevant-headers-queries/${language}-get-toplevel-headers.scm` ); if (!query) { throw new Error( @@ -162,3 +152,58 @@ export async function extractTopLevelDeclsWithFormatting(currentFile: string, gi return results; } + +export function extractFunctionTypeFromDecl(match: Parser.QueryMatch): string { + let paramsNode: Parser.SyntaxNode | undefined = undefined; + let returnNode: Parser.SyntaxNode | undefined = undefined; + + for (const capture of match.captures) { + if (capture.name === "top.fn.param.type") { + paramsNode = capture.node; + } else if (capture.name === "top.fn.type") { + returnNode = capture.node; + } + } + + if (!paramsNode) { + console.error(`extractFunctionTypeFromDecl: ${paramsNode} not found`); + throw new Error(`extractFunctionTypeFromDecl: ${paramsNode} not found`); + } + + if (!returnNode) { + console.error(`extractFunctionTypeFromDecl: ${returnNode} not found`); + throw new Error(`extractFunctionTypeFromDecl: ${returnNode} not found`); + } + + return `(${paramsNode!.text}) => ${returnNode!.text}`; +} + +export function unwrapToBaseType(node: Parser.SyntaxNode): Parser.SyntaxNode { + if ( + [ + "function_type", + "tuple_type", + "type_identifier", + "predefined_type", + ].includes(node.type) + ) { + return node; + } + + for (const child of node.namedChildren) { + const unwrapped = unwrapToBaseType(child!); + if ( + unwrapped !== child || + [ + "function_type", + "tuple_type", + "type_identifier", + "predefined_type", + ].includes(unwrapped.type) + ) { + return unwrapped; + } + } + + return node; +} From 408038275dbfd27adf9692469e095ff5e8d27d22 Mon Sep 17 00:00:00 2001 From: Jacob Kim Date: Sat, 28 Jun 2025 19:55:28 -0700 Subject: [PATCH 09/97] update types --- core/autocomplete/templating/filtering.ts | 17 +++++++++++++---- core/autocomplete/templating/formatting.ts | 9 +++++++++ 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/core/autocomplete/templating/filtering.ts b/core/autocomplete/templating/filtering.ts index 7f69398c605..e3eb6f1fe7a 100644 --- a/core/autocomplete/templating/filtering.ts +++ b/core/autocomplete/templating/filtering.ts @@ -3,6 +3,7 @@ import { SnippetPayload } from "../snippets"; import { AutocompleteCodeSnippet, AutocompleteSnippet, + AutocompleteStaticSnippet, } from "../snippets/types"; import { HelperVars } from "../util/HelperVars"; @@ -30,9 +31,9 @@ const shuffleArray = (array: T[]): T[] => { }; function filterSnippetsAlreadyInCaretWindow( - snippets: AutocompleteCodeSnippet[], + snippets: (AutocompleteCodeSnippet | AutocompleteStaticSnippet)[], caretWindow: string, -): AutocompleteCodeSnippet[] { +): (AutocompleteCodeSnippet | AutocompleteStaticSnippet)[] { return snippets.filter( (s) => s.content.trim() !== "" && !caretWindow.includes(s.content.trim()), ); @@ -49,7 +50,11 @@ export const getSnippets = ( diff: payload.diffSnippets, base: shuffleArray( filterSnippetsAlreadyInCaretWindow( - [...payload.rootPathSnippets, ...payload.importDefinitionSnippets], + [ + ...payload.rootPathSnippets, + ...payload.importDefinitionSnippets, + ...payload.staticSnippet, + ], helper.prunedCaretWindow, ), ), @@ -98,7 +103,11 @@ export const getSnippets = ( defaultPriority: 99, // make sure it's the last one to be processed, but still possible to override snippets: shuffleArray( filterSnippetsAlreadyInCaretWindow( - [...payload.rootPathSnippets, ...payload.importDefinitionSnippets], + [ + ...payload.rootPathSnippets, + ...payload.importDefinitionSnippets, + ...payload.staticSnippet, + ], helper.prunedCaretWindow, ), ), diff --git a/core/autocomplete/templating/formatting.ts b/core/autocomplete/templating/formatting.ts index 2a91ad4384e..583873c2d30 100644 --- a/core/autocomplete/templating/formatting.ts +++ b/core/autocomplete/templating/formatting.ts @@ -5,6 +5,7 @@ import { AutocompleteDiffSnippet, AutocompleteSnippet, AutocompleteSnippetType, + AutocompleteStaticSnippet, } from "../snippets/types"; import { HelperVars } from "../util/HelperVars"; @@ -51,6 +52,12 @@ const formatDiffSnippet = ( return snippet; }; +const formatStaticSnippet = ( + snippet: AutocompleteStaticSnippet, +): AutocompleteStaticSnippet => { + return snippet; +}; + const commentifySnippet = ( helper: HelperVars, snippet: AutocompleteSnippet, @@ -81,6 +88,8 @@ export const formatSnippets = ( return formatDiffSnippet(snippet); case AutocompleteSnippetType.Clipboard: return formatClipboardSnippet(snippet, workspaceDirs); + case AutocompleteSnippetType.Static: + return formatStaticSnippet(snippet); } }) .map((item) => { From 4e9690e058b9dfd275a92bafd46483addca83a25 Mon Sep 17 00:00:00 2001 From: Jacob Kim Date: Sat, 28 Jun 2025 19:55:42 -0700 Subject: [PATCH 10/97] move types from snippets to static --- core/autocomplete/context/static-context/types.ts | 15 ++++++++++++--- core/autocomplete/snippets/types.ts | 10 ++-------- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/core/autocomplete/context/static-context/types.ts b/core/autocomplete/context/static-context/types.ts index 03f1f839df4..2400c2a7a13 100644 --- a/core/autocomplete/context/static-context/types.ts +++ b/core/autocomplete/context/static-context/types.ts @@ -2,12 +2,12 @@ import { Tree } from "web-tree-sitter"; import { Range } from "../../.."; export interface TypeSpanAndSourceFile { - typeSpan: string, - sourceFile: string, + typeSpan: string; + sourceFile: string; } export interface TypeSpanAndSourceFileAndAst extends TypeSpanAndSourceFile { - ast: Tree + ast: Tree; } export interface HoleContext { @@ -21,3 +21,12 @@ export interface HoleContext { export type RelevantTypes = Map; export type RelevantHeaders = Set; +export type Filepath = string; +export type RelevantType = string; +export type RelevantHeader = string; + +export interface StaticContext { + holeType: string; + relevantTypes: Map; + relevantHeaders: Map; +} diff --git a/core/autocomplete/snippets/types.ts b/core/autocomplete/snippets/types.ts index 3c2cddcb620..c486c01063f 100644 --- a/core/autocomplete/snippets/types.ts +++ b/core/autocomplete/snippets/types.ts @@ -2,6 +2,7 @@ export enum AutocompleteSnippetType { Code = "code", Diff = "diff", Clipboard = "clipboard", + Static = "static", } interface BaseAutocompleteSnippet { @@ -23,15 +24,8 @@ export interface AutocompleteClipboardSnippet extends BaseAutocompleteSnippet { copiedAt: string; } -type Filepath = string; -type RelevantType = string; -type RelevantHeader = string; - export interface AutocompleteStaticSnippet extends BaseAutocompleteSnippet { - type: AutocompleteSnippetType.Code; - holeType: string, - relevantTypes: Map, - relevantHeaders: Map + type: AutocompleteSnippetType.Static; } export type AutocompleteSnippet = From a2c1c6312e722ca6673c3815de4f13a002283eb0 Mon Sep 17 00:00:00 2001 From: Jacob Kim Date: Sat, 28 Jun 2025 19:55:53 -0700 Subject: [PATCH 11/97] conform to interface --- core/autocomplete/context/ContextRetrievalService.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/autocomplete/context/ContextRetrievalService.ts b/core/autocomplete/context/ContextRetrievalService.ts index c21473d65df..8cf63d8b9f6 100644 --- a/core/autocomplete/context/ContextRetrievalService.ts +++ b/core/autocomplete/context/ContextRetrievalService.ts @@ -77,7 +77,7 @@ export class ContextRetrievalService { public async getStaticContextSnippets( helper: HelperVars - ): Promise { + ): Promise { return this.staticContextService.getContext(helper); } } From 29f9c726dd306af47ae78b5def6cdb074c0e227a Mon Sep 17 00:00:00 2001 From: Jacob Kim Date: Sat, 28 Jun 2025 19:56:02 -0700 Subject: [PATCH 12/97] static contextualization works --- .../static-context/StaticContextService.ts | 681 +++++++++++++++--- core/autocomplete/snippets/getAllSnippets.ts | 8 +- 2 files changed, 592 insertions(+), 97 deletions(-) diff --git a/core/autocomplete/context/static-context/StaticContextService.ts b/core/autocomplete/context/static-context/StaticContextService.ts index 465be3456e5..4b9b41917ec 100644 --- a/core/autocomplete/context/static-context/StaticContextService.ts +++ b/core/autocomplete/context/static-context/StaticContextService.ts @@ -1,12 +1,29 @@ import * as fs from "fs/promises"; +import path from "path"; +import Parser from "web-tree-sitter"; import { IDE, Position } from "../../.."; -import { AutocompleteCodeSnippet, AutocompleteStaticSnippet } from "../../snippets/types"; -import { HelperVars } from "../../util/HelperVars"; -import { HoleContext, RelevantHeaders, RelevantTypes, TypeSpanAndSourceFileAndAst } from "./types"; -import { getAst } from "../../util/ast"; +import { localPathOrUriToPath } from "../../../util/pathToUri"; import { getFullLanguageName, getQueryForFile } from "../../../util/treeSitter"; -import path from "path"; -import { findEnclosingTypeDeclaration } from "./tree-sitter-utils"; +import { + AutocompleteSnippetType, + AutocompleteStaticSnippet, +} from "../../snippets/types"; +import { getAst } from "../../util/ast"; +import { HelperVars } from "../../util/HelperVars"; +import { + extractFunctionTypeFromDecl, + extractTopLevelDecls, + findEnclosingTypeDeclaration, + unwrapToBaseType, +} from "./tree-sitter-utils"; +import { + HoleContext, + RelevantHeaders, + RelevantTypes, + StaticContext, + TypeSpanAndSourceFile, + TypeSpanAndSourceFileAndAst, +} from "./types"; export class StaticContextService { private readonly ide: IDE; @@ -15,9 +32,58 @@ export class StaticContextService { this.ide = ide; } + public logAutocompleteStaticSnippet( + ctx: StaticContext, + label = "Static Snippet", + ) { + console.log(`=== ${label} ===`); + console.log("Hole Type:", ctx.holeType); + + console.log(`\nRelevant Types (${ctx.relevantTypes.size} files):`); + ctx.relevantTypes.forEach((types, filepath) => { + console.log(` ๐Ÿ“ ${filepath}`); + types.forEach((type) => console.log(` โ€ข ${type}`)); + }); + + console.log(`\nRelevant Headers (${ctx.relevantHeaders.size} files):`); + ctx.relevantHeaders.forEach((headers, filepath) => { + console.log(` ๐Ÿ“ ${filepath}`); + headers.forEach((header) => console.log(` โ€ข ${header}`)); + }); + } + + public static formatAutocompleteStaticSnippet(ctx: StaticContext): string { + let output = `AutocompleteStaticSnippet:\n`; + output += ` holeType: ${ctx.holeType}\n`; + + output += ` relevantTypes:\n`; + if (ctx.relevantTypes.size === 0) { + output += ` (none)\n`; + } else { + ctx.relevantTypes.forEach((types, filepath) => { + output += ` ${filepath}: [${types.join(", ")}]\n`; + }); + } + + output += ` relevantHeaders:\n`; + if (ctx.relevantHeaders.size === 0) { + output += ` (none)\n`; + } else { + ctx.relevantHeaders.forEach((headers, filepath) => { + output += ` ${filepath}: [${headers.join(", ")}]\n`; + }); + } + + return output; + } + public async getContext( - helper: HelperVars - ): Promise { + helper: HelperVars, + ): Promise { + const start = Date.now(); + const tsFiles = await this.getTypeScriptFilesFromWorkspaces( + helper.workspaceUris, + ); // Get the three contexts holeContext, relevantTypes, relevantHeaders. const holeContext = await this.getHoleContext(helper.filepath, helper.pos); @@ -29,22 +95,23 @@ export class StaticContextService { new Map(), ); - let repo: string[] = []; - if (this.language === "typescript") { - repo = getAllTSFiles(this.repoPath); - } else if (this.language === "ocaml") { - repo = getAllOCamlFiles(this.repoPath); - } + // if (this.language === "typescript") { + // repo = getAllTSFiles(this.repoPath); + // } else if (this.language === "ocaml") { + // repo = getAllOCamlFiles(this.repoPath); + // } + // const relevantHeaders = await this.extractRelevantHeaders( - repo, + tsFiles, relevantTypes, holeContext.functionTypeSpan, - holeContext.functionName, - this.repoPath ); - const relevantTypesToReturn: Map = new Map(); + const relevantTypesToReturn: Map = new Map< + string, + string[] + >(); relevantTypes.forEach(({ typeSpan: v, sourceFile: src }, _) => { if (relevantTypesToReturn.has(src)) { const updated = relevantTypesToReturn.get(src)!; @@ -53,10 +120,12 @@ export class StaticContextService { } else { relevantTypesToReturn.set(src, [v]); } - }) + }); - - const relevantHeadersToReturn: Map = new Map(); + const relevantHeadersToReturn: Map = new Map< + string, + string[] + >(); relevantHeaders.forEach(({ typeSpan: v, sourceFile: src }) => { if (relevantHeadersToReturn.has(src)) { const updated = relevantHeadersToReturn.get(src)!; @@ -67,25 +136,38 @@ export class StaticContextService { } else { relevantHeadersToReturn.set(src, [v]); } - }) + }); - return { - holeType: "" - relevantTypes: "" - relevantHeaders: "" + const ctx = { + holeType: holeContext.functionTypeSpan, + relevantTypes: relevantTypesToReturn, + relevantHeaders: relevantHeadersToReturn, }; + const end = Date.now(); + + this.logAutocompleteStaticSnippet(ctx); + + console.log(end - start); + + return [ + { + type: AutocompleteSnippetType.Static, + content: StaticContextService.formatAutocompleteStaticSnippet(ctx), + }, + ]; } private async getHoleContext( sketchFilePath: string, - cursorPosition: Position + cursorPosition: Position, ): Promise { // We need to inject the hole @ to trigger a treesitter error node. + sketchFilePath = localPathOrUriToPath(sketchFilePath); const sketchFileContent = await fs.readFile(sketchFilePath, "utf8"); const injectedContent = this.insertAtPosition( sketchFileContent, cursorPosition, - "@;" + "@;", ); // The hole's position is cursorPosition. @@ -98,11 +180,11 @@ export class StaticContextService { const language = getFullLanguageName(sketchFilePath); const query = await getQueryForFile( sketchFilePath, - path.join(`./queries/hole-queries/${language}.scm`) + `static-context-queries/hole-queries/${language}.scm`, ); if (!query) { throw new Error( - `failed to get query for file ${sketchFilePath} and language ${language}` + `getHoleContext: failed to get query for file ${sketchFilePath} and language ${language}`, ); } @@ -190,96 +272,425 @@ export class StaticContextService { const language = getFullLanguageName(currentFile); const query = await getQueryForFile( currentFile, - path.join( - __dirname, - "queries", - "relevant-types-queries", - `${language}-extract-identifiers.scm` - ) + `static-context-queries/relevant-types-queries/${language}-extract-identifiers.scm`, ); if (!query) { throw new Error( - `failed to get query for file ${currentFile} and language ${language}` + `failed to get query for file ${currentFile} and language ${language}`, ); } const identifiers = query.captures(ast.rootNode); for (const { name, node } of identifiers) { - if (!foundSoFar.has(node.text)) { - try { - const typeDefinitionResult = - await this.ide.gotoTypeDefinition({ - filepath: currentFile, - position: { - character: node.startPosition.column, - line: startLine + node.startPosition.row, - }, - }); - - if (typeDefinitionResult.length != 0) { - const tdLocation = typeDefinitionResult[0]; - - let content = ""; - - if (foundContents.has(tdLocation.filepath)) { - content = foundContents.get(tdLocation.filepath)!; - } else { - content = await fs.readFile(tdLocation.filepath, "utf8"); - foundContents.set(tdLocation.filepath, content); - } - - const ast = await getAst(tdLocation.filepath, content); - if (!ast) { - throw new Error( - `failed to get ast for file ${tdLocation.filepath}` - ); - } - const decl = findEnclosingTypeDeclaration( - content, + if (foundSoFar.has(node.text)) continue; + + try { + const typeDefinitionResult = await this.ide.gotoTypeDefinition({ + filepath: currentFile, + position: { + character: node.startPosition.column, + line: startLine + node.startPosition.row, + }, + }); + + if (typeDefinitionResult.length > 0) { + const tdLocation = typeDefinitionResult[0]; + + let content = ""; + + if (foundContents.has(tdLocation.filepath)) { + content = foundContents.get(tdLocation.filepath)!; + } else { + content = await fs.readFile( + localPathOrUriToPath(tdLocation.filepath), + "utf8", + ); + foundContents.set(tdLocation.filepath, content); + } + + const ast = await getAst(tdLocation.filepath, content); + if (!ast) { + throw new Error( + `failed to get ast for file ${tdLocation.filepath}`, + ); + } + const decl = findEnclosingTypeDeclaration( + content, + tdLocation.range.start.line, + tdLocation.range.start.character, + ast, + ); + if (!decl) { + // throw new Error(`failed to get decl for file ${tdLocation.uri}`); + console.error( + `failed to get decl for file ${tdLocation.filepath}`, + ); + } + + if (decl) { + await this.extractRelevantTypesHelper( + decl.fullText, + node.text, tdLocation.range.start.line, - tdLocation.range.start.character, - ast + foundSoFar, + tdLocation.filepath, + foundContents, ); - if (!decl) { - // throw new Error(`failed to get decl for file ${tdLocation.uri}`); - console.error(`failed to get decl for file ${tdLocation.filepath}`); - } - - if (decl) { - await this.extractRelevantTypesHelper( - decl.fullText, - node.text, - tdLocation.range.start.line, - foundSoFar, - tdLocation.filepath, - foundContents, - ); - } else { - // console.log("decl not found"); - } } else { - // console.log("td not found"); + // console.log("decl not found"); } - } catch (err) { - console.log(err); + } else { + // console.log("td not found"); } + } catch (err) { + console.log(err); + } + } + } + } + + private async extractRelevantHeaders( + sources: string[], + relevantTypes: Map, + holeType: string, + ): Promise { + const relevantContext = new Set(); + // NOTE: This is necessary because TypeScript sucks. + // There is no way to compare objects by value, + // so sets of objects starts to accumulate tons of duplicates. + const relevantContextMap = new Map(); + const foundNormalForms = new Map(); + + const targetTypes = await this.generateTargetTypes(relevantTypes, holeType); + + for (const source of sources) { + const topLevelDecls = await extractTopLevelDecls(source); + for (const tld of topLevelDecls) { + // pattern 0 is let/const, 1 is var, 2 is fun + // if (!seenDecls.has(JSON.stringify()) { + const originalDeclText = + tld.pattern === 2 + ? tld.captures.find((d) => d.name === "top.fn.decl")!.node.text + : tld.captures.find((d) => d.name === "top.var.decl")!.node.text; + + if (tld.pattern === 2) { + // build a type span + // TODO: this fails sometimes with Cannot read properties of undefined (reading 'text') + // most likely due to my scm query and how I'm not attaching param name along with param type + const funcType = extractFunctionTypeFromDecl(tld); + const wrapped = `type __TMP = ${funcType};`; + + const ast = await getAst("file.ts", wrapped); + if (!ast) { + throw new Error(`failed to generate ast for ${wrapped}`); + } + + console.log(ast.rootNode); + const alias = ast.rootNode.namedChild(0); + console.log(alias); + if (!alias || alias.type !== "type_alias_declaration") { + throw new Error( + "extractRelevantHeaders: Failed to parse type alias", + ); + } + + const valueNode = alias.childForFieldName("value"); + if (!valueNode) throw new Error("No type value found"); + + const baseNode = unwrapToBaseType(valueNode); + + await this.extractRelevantHeadersHelper( + originalDeclText, + baseNode, + targetTypes, + relevantTypes, + relevantContext, + relevantContextMap, + foundNormalForms, + source, + ); } else { + const varTypNode = tld.captures.find( + (d) => d.name === "top.var.type", + )!.node; + await this.extractRelevantHeadersHelper( + originalDeclText, + varTypNode, + targetTypes, + relevantTypes, + relevantContext, + relevantContextMap, + foundNormalForms, + source, + ); } } } + + for (const v of relevantContextMap.values()) { + relevantContext.add(v); + } + + return relevantContext; } + private async extractRelevantHeadersHelper( + originalDeclText: string, + node: Parser.SyntaxNode, + targetTypes: Set, + relevantTypes: Map, + relevantContext: Set, + relevantContextMap: Map, + foundNormalForms: Map, + source: string, + ) { + for (const typ of targetTypes) { + if ( + await this.isTypeEquivalent(node, typ, relevantTypes, foundNormalForms) + ) { + const ctx = { typeSpan: originalDeclText, sourceFile: source }; + relevantContextMap.set(JSON.stringify(ctx), ctx); + } + + if (node.type === "function_type") { + const retTypeNode = node.namedChildren.find( + (c) => c && c.type === "return_type", + ); + if (retTypeNode) { + await this.extractRelevantHeadersHelper( + originalDeclText, + retTypeNode, + targetTypes, + relevantTypes, + relevantContext, + relevantContextMap, + foundNormalForms, + source, + ); + } + } else if (node.type === "tuple_type") { + for (const c of node.namedChildren) { + await this.extractRelevantHeadersHelper( + originalDeclText, + c!, + targetTypes, + relevantTypes, + relevantContext, + relevantContextMap, + foundNormalForms, + source, + ); + } + } + } + } - private async extractRelevantHeaders(): Promise { + private async generateTargetTypes( + relevantTypes: Map, + holeType: string, + ) { + const targetTypes = new Set(); + // const ast = relevantTypes.get(holeIdentifier)!.ast; + const ast = await getAst("file.ts", `type T = ${holeType};`); + if (!ast) { + throw new Error(`failed to generate ast for ${holeType}`); + } + const alias = ast.rootNode.namedChild(0); + if (!alias || alias.type !== "type_alias_declaration") { + throw new Error("generateTargetTypes: Failed to parse type alias"); + } + + const valueNode = alias.childForFieldName("value"); + if (!valueNode) throw new Error("No type value found"); + + const baseNode = unwrapToBaseType(valueNode); + targetTypes.add(baseNode); + await this.generateTargetTypesHelper( + relevantTypes, + holeType, + targetTypes, + baseNode, + ); + + return targetTypes; } + private async generateTargetTypesHelper( + relevantTypes: Map, + currType: string, + targetTypes: Set, + node: Parser.SyntaxNode | null, + ): Promise { + if (!node) return; + + if (node.type === "function_type") { + const returnType = node.childForFieldName("return_type"); + if (returnType) { + targetTypes.add(returnType); + await this.generateTargetTypesHelper( + relevantTypes, + currType, + targetTypes, + returnType, + ); + } + } + + if (node.type === "tuple_type") { + for (const child of node.namedChildren) { + if (child) { + targetTypes.add(child); + await this.generateTargetTypesHelper( + relevantTypes, + currType, + targetTypes, + child, + ); + } + } + } + + if (relevantTypes.has(node.text)) { + // const ast = relevantTypes.get(node.text)!.ast; + const typeSpan = relevantTypes.get(node.text)?.typeSpan; + + // const ast = await getAst("file.ts", `type T = ${typeSpan}`); + const ast = await getAst("file.ts", typeSpan!); + if (!ast) { + throw new Error(`failed to generate ast for ${typeSpan}`); + } + + const alias = ast.rootNode.namedChild(0); + if (!alias || alias.type !== "type_alias_declaration") { + throw new Error( + "generateTargetTypesHelper: Failed to parse type alias", + ); + } + + const valueNode = alias.childForFieldName("value"); + if (!valueNode) throw new Error("No type value found"); + + const baseNode = unwrapToBaseType(valueNode); + await this.generateTargetTypesHelper( + relevantTypes, + currType, + targetTypes, + baseNode, + ); + } + + // if (node.type === "type_identifier" || node.type === "predefined_type") { + // return [node.text]; + // } + + return; + } + + private async isTypeEquivalent( + node: Parser.SyntaxNode, + typ: Parser.SyntaxNode, + relevantTypes: Map, + foundNormalForms: Map, + ): Promise { + if (!node || !typ) { + return false; + } + let normT1 = ""; + let normT2 = ""; + if (foundNormalForms.has(node.text)) { + // console.log("found t1", true) + normT1 = foundNormalForms.get(node.text)!; + } else { + // console.log("not found t1", false) + normT1 = await this.normalize(node, relevantTypes); + foundNormalForms.set(node.text, normT1); + } + if (foundNormalForms.has(typ.text)) { + // console.log("found t2", true) + normT2 = foundNormalForms.get(typ.text)!; + } else { + // console.log("not found t2", false) + normT2 = await this.normalize(typ, relevantTypes); + foundNormalForms.set(typ.text, normT2); + } + // const normT1 = foundNormalForms.has(t1) ? foundNormalForms.get(t1) : this.normalize2(t1, relevantTypes); + // const normT2 = foundNormalForms.has(t2) ? foundNormalForms.get(t2) : this.normalize2(t2, relevantTypes); + // console.log(`normal forms: ${normT1} {}{} ${normT2}`) + return normT1 === normT2; + } + + private async normalize( + node: Parser.SyntaxNode, + relevantTypes: Map, + ): Promise { + if (!node) return ""; + + switch (node.type) { + case "function_type": { + const params = node.child(0); // formal_parameters + const returnType = + node.childForFieldName("type") || node.namedChildren[1]; // function_type โ†’ parameters, =>, return + + const paramTypes = + params?.namedChildren + .map((param) => + this.normalize( + param!.childForFieldName("type")! || + param!.namedChildren.at(-1), + relevantTypes, + ), + ) + .join(", ") || ""; + + const ret = this.normalize(returnType!, relevantTypes); + return `(${paramTypes}) => ${ret}`; + } + + case "tuple_type": { + const elements = node.namedChildren.map((c) => + this.normalize(c!, relevantTypes), + ); + return `[${elements.join(", ")}]`; + } + + case "union_type": { + const parts = node.namedChildren.map((c) => + this.normalize(c!, relevantTypes), + ); + return parts.join(" | "); + } + + case "type_identifier": { + const alias = relevantTypes.get(node.text); + if (!alias) return node.text; + + // Parse the alias's type span + const wrapped = `type __TMP = ${alias};`; + const tree = await getAst("file.ts", wrapped); + const valueNode = tree!.rootNode + .descendantsOfType("type_alias_declaration")[0] + ?.childForFieldName("value"); + + return this.normalize(valueNode!, relevantTypes); + } + + case "predefined_type": + case "number": + case "string": + return node.text; + + default: + // Fallback for types like array, etc. + return node.text; + } + } private insertAtPosition = ( contents: string, - cursorPosition: { line: number, character: number }, - insertText: string + cursorPosition: { line: number; character: number }, + insertText: string, ): string => { const lines = contents.split(/\r?\n/); // Handle both LF and CRLF line endings const { line, character } = cursorPosition; @@ -294,8 +705,90 @@ export class StaticContextService { } // Insert the text - lines[line] = targetLine.slice(0, character) + insertText + targetLine.slice(character); + lines[line] = + targetLine.slice(0, character) + insertText + targetLine.slice(character); return lines.join("\n"); // Reconstruct the file + }; + + private async getTypeScriptFilesFromWorkspaces( + workspaceUris: string[], + ): Promise { + const tsExtensions = [".ts"]; + const allTsFiles: string[] = []; + + for (const workspaceUri of workspaceUris) { + try { + // Convert URI to file path + const folderPath = workspaceUri.startsWith("file://") + ? new URL(workspaceUri).pathname + : workspaceUri; + + const tsFiles = await this.scanDirectoryForTypeScriptFiles( + folderPath, + tsExtensions, + ); + allTsFiles.push(...tsFiles); + } catch (error) { + console.error(`Error scanning workspace ${workspaceUri}:`, error); + } + } + + return allTsFiles; + } + + private async scanDirectoryForTypeScriptFiles( + dirPath: string, + tsExtensions: string[], + ): Promise { + const tsFiles: string[] = []; + + const shouldSkipDirectory = (dirName: string): boolean => { + const skipDirs = [ + "node_modules", + ".git", + ".vscode", + "dist", + "build", + "out", + ".next", + "coverage", + ".nyc_output", + "tmp", + "temp", + ".cache", + ]; + + return skipDirs.includes(dirName) || dirName.startsWith("."); + }; + + async function scanRecursively(currentPath: string): Promise { + try { + const entries = await fs.readdir(currentPath, { withFileTypes: true }); + + for (const entry of entries) { + const fullPath = localPathOrUriToPath( + path.join(currentPath, entry.name), + ); + + if (entry.isDirectory()) { + // Skip common directories that typically don't contain source files + if (!shouldSkipDirectory(entry.name)) { + await scanRecursively(fullPath); + } + } else if (entry.isFile()) { + const extension = path.extname(entry.name).toLowerCase(); + if (tsExtensions.includes(extension)) { + tsFiles.push(fullPath); + } + } + } + } catch (error) { + console.error(`Error reading directory ${currentPath}:`, error); + } + } + + await scanRecursively(dirPath); + return tsFiles; } } diff --git a/core/autocomplete/snippets/getAllSnippets.ts b/core/autocomplete/snippets/getAllSnippets.ts index 3db2c2542bf..681e2047814 100644 --- a/core/autocomplete/snippets/getAllSnippets.ts +++ b/core/autocomplete/snippets/getAllSnippets.ts @@ -1,4 +1,3 @@ -import { context } from "esbuild"; import { IDE } from "../../index"; import { findUriInDirs } from "../../util/uri"; import { ContextRetrievalService } from "../context/ContextRetrievalService"; @@ -11,6 +10,7 @@ import { AutocompleteCodeSnippet, AutocompleteDiffSnippet, AutocompleteSnippetType, + AutocompleteStaticSnippet, } from "./types"; const IDE_SNIPPETS_ENABLED = false; // ideSnippets is not used, so it's temporarily disabled @@ -23,6 +23,7 @@ export interface SnippetPayload { recentlyVisitedRangesSnippets: AutocompleteCodeSnippet[]; diffSnippets: AutocompleteDiffSnippet[]; clipboardSnippets: AutocompleteClipboardSnippet[]; + staticSnippet: AutocompleteStaticSnippet[]; } function racePromise(promise: Promise, timeout = 100): Promise { @@ -124,7 +125,7 @@ export const getAllSnippets = async ({ ideSnippets, diffSnippets, clipboardSnippets, - staticSnippets + staticSnippet, ] = await Promise.all([ racePromise(contextRetrievalService.getRootPathSnippets(helper)), racePromise( @@ -135,7 +136,7 @@ export const getAllSnippets = async ({ : [], [], // racePromise(getDiffSnippets(ide)) // temporarily disabled, see https://github.com/continuedev/continue/pull/5882, racePromise(getClipboardSnippets(ide)), - racePromise(contextRetrievalService.getStaticContextSnippets(helper)) + contextRetrievalService.getStaticContextSnippets(helper), ]); return { @@ -146,5 +147,6 @@ export const getAllSnippets = async ({ diffSnippets, clipboardSnippets, recentlyVisitedRangesSnippets: helper.input.recentlyVisitedRanges, + staticSnippet, }; }; From 61b389e5fb7947755da3215d31eaebff7cea9569 Mon Sep 17 00:00:00 2001 From: Jacob Kim Date: Sat, 28 Jun 2025 20:14:49 -0700 Subject: [PATCH 13/97] prettier --- .../context/static-context/StaticContextService.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/core/autocomplete/context/static-context/StaticContextService.ts b/core/autocomplete/context/static-context/StaticContextService.ts index 4b9b41917ec..6ba954fc735 100644 --- a/core/autocomplete/context/static-context/StaticContextService.ts +++ b/core/autocomplete/context/static-context/StaticContextService.ts @@ -764,7 +764,9 @@ export class StaticContextService { async function scanRecursively(currentPath: string): Promise { try { - const entries = await fs.readdir(currentPath, { withFileTypes: true }); + const entries = await fs.readdir(currentPath, { + withFileTypes: true, + }); for (const entry of entries) { const fullPath = localPathOrUriToPath( From 482ed61a5e9ffd0592b1e65c229299bdb7351ce3 Mon Sep 17 00:00:00 2001 From: Jacob Kim Date: Sat, 5 Jul 2025 08:49:59 -0700 Subject: [PATCH 14/97] resolve merge conflicts --- core/autocomplete/snippets/getAllSnippets.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/core/autocomplete/snippets/getAllSnippets.ts b/core/autocomplete/snippets/getAllSnippets.ts index 7ba487054b9..fccc8530b13 100644 --- a/core/autocomplete/snippets/getAllSnippets.ts +++ b/core/autocomplete/snippets/getAllSnippets.ts @@ -199,6 +199,7 @@ export const getAllSnippets = async ({ [], // racePromise(getDiffSnippets(ide)) // temporarily disabled, see https://github.com/continuedev/continue/pull/5882, racePromise(getClipboardSnippets(ide)), racePromise(getSnippetsFromRecentlyOpenedFiles(helper, ide)), // giving this one a little more time to complete + racePromise(contextRetrievalService.getStaticContextSnippets(helper)), ]); return { @@ -210,6 +211,7 @@ export const getAllSnippets = async ({ clipboardSnippets, recentlyVisitedRangesSnippets: helper.input.recentlyVisitedRanges, recentlyOpenedFileSnippets, + staticSnippet, }; }; @@ -234,6 +236,7 @@ export const getAllSnippetsWithoutRace = async ({ diffSnippets, clipboardSnippets, recentlyOpenedFileSnippets, + staticSnippet, ] = await Promise.all([ contextRetrievalService.getRootPathSnippets(helper), contextRetrievalService.getSnippetsFromImportDefinitions(helper), From b0b2de7dff9ddcbdce55f1e8a927a9f5c151453c Mon Sep 17 00:00:00 2001 From: Jacob Kim Date: Sat, 5 Jul 2025 17:28:16 -0700 Subject: [PATCH 15/97] add methods for go to type definitions and get signature help --- core/index.d.ts | 118 ++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 94 insertions(+), 24 deletions(-) diff --git a/core/index.d.ts b/core/index.d.ts index e173e9a58ff..5bd5de1adf8 100644 --- a/core/index.d.ts +++ b/core/index.d.ts @@ -49,13 +49,13 @@ export interface IndexingProgressUpdate { desc: string; shouldClearIndexes?: boolean; status: - | "loading" - | "indexing" - | "done" - | "failed" - | "paused" - | "disabled" - | "cancelled"; + | "loading" + | "indexing" + | "done" + | "failed" + | "paused" + | "disabled" + | "cancelled"; debugInfo?: string; warnings?: string[]; } @@ -92,7 +92,7 @@ type RequiredLLMOptions = export interface ILLM extends Omit, - Required> { + Required> { get providerName(): string; get underlyingProviderName(): string; @@ -778,10 +778,10 @@ export interface IDE { getCurrentFile(): Promise< | undefined | { - isUntitled: boolean; - path: string; - contents: string; - } + isUntitled: boolean; + path: string; + contents: string; + } >; getPinnedFiles(): Promise; @@ -819,7 +819,8 @@ export interface IDE { // LSP gotoDefinition(location: Location): Promise; - gotoTypeDefinition(location: Location): Promise; + gotoTypeDefinition(location: Location): Promise; // TODO: add to jetbrains + getSignatureHelp(location: Location): Promise; // TODO: add to jetbrains // Callbacks onDidChangeActiveTextEditor(callback: (fileUri: string) => void): void; @@ -989,11 +990,11 @@ export interface CustomCommand { export interface Prediction { type: "content"; content: - | string - | { - type: "text"; - text: string; - }[]; + | string + | { + type: "text"; + text: string; + }[]; } export interface ToolExtras { @@ -1156,6 +1157,7 @@ export interface TabAutocompleteOptions { experimental_includeRecentlyVisitedRanges: boolean | number; experimental_includeRecentlyEditedRanges: boolean | number; experimental_includeDiff: boolean | number; + experimental_enableStaticContextualization: boolean; } export interface StdioOptions { @@ -1355,6 +1357,68 @@ export interface RangeInFileWithNextEditInfo { export type SetCodeToEditPayload = RangeInFileWithContents | FileWithContents; +/** + * Signature help represents the signature of something + * callable. There can be multiple signatures but only one + * active and only one active parameter. + */ +export class SignatureHelp { + /** + * One or more signatures. + */ + signatures: SignatureInformation[]; + + /** + * The active signature. + */ + activeSignature: number; + + /** + * The active parameter of the active signature. + */ + activeParameter: number; +} + +/** + * Represents the signature of something callable. A signature + * can have a label, like a function-name, a doc-comment, and + * a set of parameters. + */ +export class SignatureInformation { + /** + * The label of this signature. Will be shown in + * the UI. + */ + label: string; + + /** + * The parameters of this signature. + */ + parameters: ParameterInformation[]; + + /** + * The index of the active parameter. + * + * If provided, this is used in place of {@linkcode SignatureHelp.activeParameter}. + */ + activeParameter?: number; +} + +/** + * Represents a parameter of a callable-signature. A parameter can + * have a label and a doc-comment. + */ +export class ParameterInformation { + /** + * The label of this signature. + * + * Either a string or inclusive start and exclusive end offsets within its containing + * {@link SignatureInformation.label signature label}. *Note*: A label of type string must be + * a substring of its containing signature information's {@link SignatureInformation.label label}. + */ + label: string | [number, number]; +} + /** * Represents the configuration for a quick action in the Code Lens. * Quick actions are custom commands that can be added to function and class declarations. @@ -1430,6 +1494,12 @@ export interface ExperimentalConfig { * instead of embeddings, FTS, recently edited files, etc. */ codebaseToolCallingOnly?: boolean; + + /** + * If enabled, static contextualization will be used to + * gather context for the model where necessary. + */ + enableStaticContextualization?: boolean; } export interface AnalyticsConfig { @@ -1529,9 +1599,9 @@ export interface Config { embeddingsProvider?: EmbeddingsProviderDescription | ILLM; /** The model that Continue will use for tab autocompletions. */ tabAutocompleteModel?: - | CustomLLM - | JSONModelDescription - | (CustomLLM | JSONModelDescription)[]; + | CustomLLM + | JSONModelDescription + | (CustomLLM | JSONModelDescription)[]; /** Options for tab autocomplete */ tabAutocompleteOptions?: Partial; /** UI styles customization */ @@ -1625,9 +1695,9 @@ export type PackageDetailsSuccess = PackageDetails & { export type PackageDocsResult = { packageInfo: ParsedPackageInfo; } & ( - | { error: string; details?: never } - | { details: PackageDetailsSuccess; error?: never } - ); + | { error: string; details?: never } + | { details: PackageDetailsSuccess; error?: never } +); export interface TerminalOptions { reuseTerminal?: boolean; From f04260a7efac3aeffc92a849fbc7bfdd0df5be33 Mon Sep 17 00:00:00 2001 From: Jacob Kim Date: Sat, 5 Jul 2025 17:28:32 -0700 Subject: [PATCH 16/97] enable static contextualization when needed --- core/autocomplete/CompletionProvider.ts | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/core/autocomplete/CompletionProvider.ts b/core/autocomplete/CompletionProvider.ts index 749b44e258a..4d4327bccee 100644 --- a/core/autocomplete/CompletionProvider.ts +++ b/core/autocomplete/CompletionProvider.ts @@ -10,7 +10,7 @@ import { BracketMatchingService } from "./filtering/BracketMatchingService.js"; import { CompletionStreamer } from "./generation/CompletionStreamer.js"; import { postprocessCompletion } from "./postprocessing/index.js"; import { shouldPrefilter } from "./prefiltering/index.js"; -import { getAllSnippets } from "./snippets/index.js"; +import { getAllSnippetsWithoutRace } from "./snippets/index.js"; import { renderPrompt } from "./templating/index.js"; import { GetLspDefinitionsFunction } from "./types.js"; import { AutocompleteDebouncer } from "./util/AutocompleteDebouncer.js"; @@ -121,6 +121,11 @@ export class CompletionProvider { ...config?.tabAutocompleteOptions, ...llm.autocompleteOptions, }; + + // Enable static contextualization if defined. + options.experimental_enableStaticContextualization = + config?.experimental?.enableStaticContextualization ?? false; + return options; } @@ -171,7 +176,7 @@ export class CompletionProvider { } const [snippetPayload, workspaceDirs] = await Promise.all([ - getAllSnippets({ + getAllSnippetsWithoutRace({ helper, ide: this.ide, getDefinitionsFromLsp: this.getDefinitionsFromLsp, From 8b03b9a67d9152dee1239c3c653edd31c9346f76 Mon Sep 17 00:00:00 2001 From: Jacob Kim Date: Sat, 5 Jul 2025 17:28:53 -0700 Subject: [PATCH 17/97] improve usability --- .../static-context/StaticContextService.ts | 90 +++++++++++++++++-- 1 file changed, 81 insertions(+), 9 deletions(-) diff --git a/core/autocomplete/context/static-context/StaticContextService.ts b/core/autocomplete/context/static-context/StaticContextService.ts index 6ba954fc735..fb6919d35dc 100644 --- a/core/autocomplete/context/static-context/StaticContextService.ts +++ b/core/autocomplete/context/static-context/StaticContextService.ts @@ -85,7 +85,11 @@ export class StaticContextService { helper.workspaceUris, ); // Get the three contexts holeContext, relevantTypes, relevantHeaders. - const holeContext = await this.getHoleContext(helper.filepath, helper.pos); + const holeContext = await this.getHoleContext( + helper.fileContents, + helper.filepath, + helper.pos, + ); const relevantTypes = await this.extractRelevantTypes( holeContext.fullHoverResult, @@ -106,6 +110,8 @@ export class StaticContextService { tsFiles, relevantTypes, holeContext.functionTypeSpan, + helper.pos, + holeContext.returnTypeIsAny, ); const relevantTypesToReturn: Map = new Map< @@ -158,12 +164,13 @@ export class StaticContextService { } private async getHoleContext( + sketchFileContent: string, sketchFilePath: string, cursorPosition: Position, ): Promise { // We need to inject the hole @ to trigger a treesitter error node. sketchFilePath = localPathOrUriToPath(sketchFilePath); - const sketchFileContent = await fs.readFile(sketchFilePath, "utf8"); + // const sketchFileContent = await fs.readFile(sketchFilePath, "utf8"); const injectedContent = this.insertAtPosition( sketchFileContent, cursorPosition, @@ -193,12 +200,14 @@ export class StaticContextService { fullHoverResult: "", functionName: "", functionTypeSpan: "", + returnTypeIsAny: false, range: { start: { line: 0, character: 0 }, - end: { line: 0, character: 52 }, + end: { line: 0, character: 0 }, }, source: `file://${sketchFilePath}`, }; + let paramsTypes = ""; for (const c of captures) { const { name, node } = c; // console.log(`${name} โ†’`, node.text, node.startPosition, node.endPosition); @@ -206,9 +215,25 @@ export class StaticContextService { switch (name) { case "function.decl": { res.fullHoverResult = node.text; + break; } case "function.name": { res.functionName = node.text; + break; + } + case "function.params": { + paramsTypes = node.text; + res.range = { + start: { + line: node.startPosition.row, + character: node.startPosition.column, + }, + end: { + line: node.endPosition.row, + character: node.endPosition.column, + }, + }; + break; } case "function.type": { res.functionTypeSpan = node.text; @@ -222,10 +247,16 @@ export class StaticContextService { character: node.endPosition.column, }, }; + break; } } } + if (res.functionTypeSpan === "") { + res.functionTypeSpan = `${paramsTypes} => any`; + res.returnTypeIsAny = true; + } + return res; } @@ -354,8 +385,11 @@ export class StaticContextService { sources: string[], relevantTypes: Map, holeType: string, + cursorPosition: Position, + returnTypeIsAny: boolean, ): Promise { const relevantContext = new Set(); + if (returnTypeIsAny) return relevantContext; // NOTE: This is necessary because TypeScript sucks. // There is no way to compare objects by value, // so sets of objects starts to accumulate tons of duplicates. @@ -378,7 +412,43 @@ export class StaticContextService { // build a type span // TODO: this fails sometimes with Cannot read properties of undefined (reading 'text') // most likely due to my scm query and how I'm not attaching param name along with param type - const funcType = extractFunctionTypeFromDecl(tld); + let funcType = ""; + try { + funcType = extractFunctionTypeFromDecl(tld); + } catch (err) { + // Most likely is the case that there is no explicit return type annotation. + const sigHelp = await this.ide.getSignatureHelp({ + filepath: source, + position: cursorPosition, + }); + if (!sigHelp) continue; + funcType = sigHelp.signatures[0].label; + + // TODO: This only works for TypeScript. + function convertToArrowType(signature: string): string { + // Handle various function declaration formats. + const patterns = [ + // Standard: functionName(params): returnType. + /^(\w+)\s*\((.*?)\)\s*:\s*(.+)$/, + // With generics: functionName(params): returnType. + /^(\w+)\s*<[^>]*>\s*\((.*?)\)\s*:\s*(.+)$/, + // With modifiers: export function functionName(params): returnType. + /^(?:export\s+)?(?:function\s+)?(\w+)\s*\((.*?)\)\s*:\s*(.+)$/, + ]; + + for (const pattern of patterns) { + const match = signature.match(pattern); + if (match) { + const [, , parameters, returnType] = match; + return `(${parameters}) => ${returnType}`; + } + } + + return signature; + } + + funcType = convertToArrowType(funcType); + } const wrapped = `type __TMP = ${funcType};`; const ast = await getAst("file.ts", wrapped); @@ -386,9 +456,9 @@ export class StaticContextService { throw new Error(`failed to generate ast for ${wrapped}`); } - console.log(ast.rootNode); + // console.log(ast.rootNode); const alias = ast.rootNode.namedChild(0); - console.log(alias); + // console.log(alias); if (!alias || alias.type !== "type_alias_declaration") { throw new Error( "extractRelevantHeaders: Failed to parse type alias", @@ -564,9 +634,11 @@ export class StaticContextService { const alias = ast.rootNode.namedChild(0); if (!alias || alias.type !== "type_alias_declaration") { - throw new Error( - "generateTargetTypesHelper: Failed to parse type alias", - ); + console.error("generateTargetTypesHelper: Failed to parse type alias"); + return; + // throw new Error( + // "generateTargetTypesHelper: Failed to parse type alias", + // ); } const valueNode = alias.childForFieldName("value"); From f1cdd5fb754b0eb5e1d930d44b0dc424749d9c52 Mon Sep 17 00:00:00 2001 From: Jacob Kim Date: Sat, 5 Jul 2025 17:29:14 -0700 Subject: [PATCH 18/97] prettier check --- .../static-context/tree-sitter-utils.ts | 39 ++++++++++++------- 1 file changed, 26 insertions(+), 13 deletions(-) diff --git a/core/autocomplete/context/static-context/tree-sitter-utils.ts b/core/autocomplete/context/static-context/tree-sitter-utils.ts index c7a9a20a331..6e751f54783 100644 --- a/core/autocomplete/context/static-context/tree-sitter-utils.ts +++ b/core/autocomplete/context/static-context/tree-sitter-utils.ts @@ -1,8 +1,7 @@ import * as fs from "fs/promises"; import Parser from "web-tree-sitter"; -import { getAst } from "../../util/ast"; import { getFullLanguageName, getQueryForFile } from "../../../util/treeSitter"; -import path from "path"; +import { getAst } from "../../util/ast"; export interface TypeDeclarationResult { name: string; @@ -18,7 +17,7 @@ export function findEnclosingTypeDeclaration( sourceCode: string, cursorLine: number, cursorColumn: number, - ast: Parser.Tree + ast: Parser.Tree, ): TypeDeclarationResult | null { const point = { row: cursorLine, column: cursorColumn }; let node = ast.rootNode.descendantForPosition(point); @@ -52,7 +51,10 @@ export function findEnclosingTypeDeclaration( }; } -export async function extractTopLevelDecls(currentFile: string, givenParser?: Parser) { +export async function extractTopLevelDecls( + currentFile: string, + givenParser?: Parser, +) { const ast = await getAst(currentFile, await fs.readFile(currentFile, "utf8")); if (!ast) { throw new Error(`failed to get ast for file ${currentFile}`); @@ -66,17 +68,20 @@ export async function extractTopLevelDecls(currentFile: string, givenParser?: Pa const query = await getQueryForFile( currentFile, - `static-context-queries/relevant-headers-queries/${language}-get-toplevel-headers.scm` + `static-context-queries/relevant-headers-queries/${language}-get-toplevel-headers.scm`, ); if (!query) { throw new Error( - `failed to get query for file ${currentFile} and language ${language}` + `failed to get query for file ${currentFile} and language ${language}`, ); } return query.matches(ast.rootNode); } -export async function extractTopLevelDeclsWithFormatting(currentFile: string, givenParser?: Parser) { +export async function extractTopLevelDeclsWithFormatting( + currentFile: string, + givenParser?: Parser, +) { const ast = await getAst(currentFile, await fs.readFile(currentFile, "utf8")); if (!ast) { throw new Error(`failed to get ast for file ${currentFile}`); @@ -90,11 +95,11 @@ export async function extractTopLevelDeclsWithFormatting(currentFile: string, gi const query = await getQueryForFile( currentFile, - `static-context-queries/relevant-headers-queries/${language}-get-toplevel-headers.scm` + `static-context-queries/relevant-headers-queries/${language}-get-toplevel-headers.scm`, ); if (!query) { throw new Error( - `failed to get query for file ${currentFile} and language ${language}` + `failed to get query for file ${currentFile} and language ${language}`, ); } const matches = query.matches(ast.rootNode); @@ -166,13 +171,21 @@ export function extractFunctionTypeFromDecl(match: Parser.QueryMatch): string { } if (!paramsNode) { - console.error(`extractFunctionTypeFromDecl: ${paramsNode} not found`); - throw new Error(`extractFunctionTypeFromDecl: ${paramsNode} not found`); + console.error( + `extractFunctionTypeFromDecl: paramsNode ${paramsNode} not found`, + ); + throw new Error( + `extractFunctionTypeFromDecl: paramsNode ${paramsNode} not found`, + ); } if (!returnNode) { - console.error(`extractFunctionTypeFromDecl: ${returnNode} not found`); - throw new Error(`extractFunctionTypeFromDecl: ${returnNode} not found`); + console.error( + `extractFunctionTypeFromDecl: returnNode ${returnNode} not found`, + ); + throw new Error( + `extractFunctionTypeFromDecl: returnNode ${returnNode} not found`, + ); } return `(${paramsNode!.text}) => ${returnNode!.text}`; From 0f7a0023770285b777051ce8ebb79aa95fb9528f Mon Sep 17 00:00:00 2001 From: Jacob Kim Date: Sat, 5 Jul 2025 17:29:27 -0700 Subject: [PATCH 19/97] check for config enable --- core/autocomplete/snippets/getAllSnippets.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/core/autocomplete/snippets/getAllSnippets.ts b/core/autocomplete/snippets/getAllSnippets.ts index fccc8530b13..079127abc44 100644 --- a/core/autocomplete/snippets/getAllSnippets.ts +++ b/core/autocomplete/snippets/getAllSnippets.ts @@ -199,7 +199,9 @@ export const getAllSnippets = async ({ [], // racePromise(getDiffSnippets(ide)) // temporarily disabled, see https://github.com/continuedev/continue/pull/5882, racePromise(getClipboardSnippets(ide)), racePromise(getSnippetsFromRecentlyOpenedFiles(helper, ide)), // giving this one a little more time to complete - racePromise(contextRetrievalService.getStaticContextSnippets(helper)), + helper.options.experimental_enableStaticContextualization + ? racePromise(contextRetrievalService.getStaticContextSnippets(helper)) + : [], ]); return { @@ -246,7 +248,9 @@ export const getAllSnippetsWithoutRace = async ({ [], // racePromise(getDiffSnippets(ide)) // temporarily disabled, see https://github.com/continuedev/continue/pull/5882, getClipboardSnippets(ide), getSnippetsFromRecentlyOpenedFiles(helper, ide), - contextRetrievalService.getStaticContextSnippets(helper), + helper.options.experimental_enableStaticContextualization + ? contextRetrievalService.getStaticContextSnippets(helper) + : [], ]); return { From e7a75a59031c3853cea6f1165ee1bd0bd89b44e3 Mon Sep 17 00:00:00 2001 From: Jacob Kim Date: Sat, 5 Jul 2025 17:29:45 -0700 Subject: [PATCH 20/97] check for any return type for quick optimization --- core/autocomplete/context/static-context/types.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/core/autocomplete/context/static-context/types.ts b/core/autocomplete/context/static-context/types.ts index 2400c2a7a13..1aa8b473ddd 100644 --- a/core/autocomplete/context/static-context/types.ts +++ b/core/autocomplete/context/static-context/types.ts @@ -14,6 +14,7 @@ export interface HoleContext { fullHoverResult: string; functionName: string; functionTypeSpan: string; + returnTypeIsAny: boolean; range: Range; source: string; } From 068b7f28327ffa737679f51824987277278ef7a2 Mon Sep 17 00:00:00 2001 From: Jacob Kim Date: Sat, 5 Jul 2025 17:30:06 -0700 Subject: [PATCH 21/97] add defs for static contextualization --- core/config/sharedConfig.ts | 5 +++++ core/util/parameters.ts | 1 + gui/src/pages/config/UserSettingsForm.tsx | 13 +++++++++++++ 3 files changed, 19 insertions(+) diff --git a/core/config/sharedConfig.ts b/core/config/sharedConfig.ts index 5d7053cf8a3..87f923f3ce5 100644 --- a/core/config/sharedConfig.ts +++ b/core/config/sharedConfig.ts @@ -23,6 +23,7 @@ export const sharedConfigSchema = z optInNextEditFeature: z.boolean(), enableExperimentalTools: z.boolean(), codebaseToolCallingOnly: z.boolean(), + enableStaticContextualization: z.boolean(), // `ui` in `ContinueConfig` showSessionTabs: z.boolean(), @@ -192,6 +193,10 @@ export function modifyAnyConfigWithSharedConfig< configCopy.experimental.codebaseToolCallingOnly = sharedConfig.codebaseToolCallingOnly; } + if (sharedConfig.enableStaticContextualization !== undefined) { + configCopy.experimental.enableStaticContextualization = + sharedConfig.enableStaticContextualization; + } return configCopy; } diff --git a/core/util/parameters.ts b/core/util/parameters.ts index cadbe9a4735..147c3979ad0 100644 --- a/core/util/parameters.ts +++ b/core/util/parameters.ts @@ -24,6 +24,7 @@ export const DEFAULT_AUTOCOMPLETE_OPTS: TabAutocompleteOptions = { experimental_includeRecentlyVisitedRanges: true, experimental_includeRecentlyEditedRanges: true, experimental_includeDiff: true, + experimental_enableStaticContextualization: false, }; export const COUNT_COMPLETION_REJECTED_AFTER = 10_000; diff --git a/gui/src/pages/config/UserSettingsForm.tsx b/gui/src/pages/config/UserSettingsForm.tsx index 04405f1be94..54783c254cd 100644 --- a/gui/src/pages/config/UserSettingsForm.tsx +++ b/gui/src/pages/config/UserSettingsForm.tsx @@ -97,6 +97,8 @@ export function UserSettingsForm() { config.experimental?.optInNextEditFeature ?? false; const codebaseToolCallingOnly = config.experimental?.codebaseToolCallingOnly ?? false; + const enableStaticContextualization = + config.experimental?.enableStaticContextualization ?? false; const allowAnonymousTelemetry = config.allowAnonymousTelemetry ?? true; const disableIndexing = config.disableIndexing ?? false; @@ -434,6 +436,17 @@ export function UserSettingsForm() { text="@Codebase: use tool calling only" /> + + handleUpdate({ + enableStaticContextualization: + !enableStaticContextualization, + }) + } + text="Use Static Contextualization" + /> + {hasContinueEmail && ( Date: Sat, 5 Jul 2025 17:30:21 -0700 Subject: [PATCH 22/97] add methods for get signature help --- extensions/vscode/src/VsCodeIde.ts | 17 ++++++- extensions/vscode/src/autocomplete/lsp.ts | 54 ++++++++++++++++++++++- 2 files changed, 69 insertions(+), 2 deletions(-) diff --git a/extensions/vscode/src/VsCodeIde.ts b/extensions/vscode/src/VsCodeIde.ts index 01246e35ff9..ec68fb06557 100644 --- a/extensions/vscode/src/VsCodeIde.ts +++ b/extensions/vscode/src/VsCodeIde.ts @@ -6,7 +6,10 @@ import { EXTENSION_NAME } from "core/control-plane/env"; import * as URI from "uri-js"; import * as vscode from "vscode"; -import { executeGotoProvider } from "./autocomplete/lsp"; +import { + executeGotoProvider, + executeSignatureHelpProvider, +} from "./autocomplete/lsp"; import { Repository } from "./otherExtensions/git"; import { SecretStorage } from "./stubs/SecretStorage"; import { VsCodeIdeUtils } from "./util/ideUtils"; @@ -24,6 +27,7 @@ import type { Location, Problem, RangeInFile, + SignatureHelp, TerminalOptions, Thread, } from "core"; @@ -97,6 +101,17 @@ class VsCodeIde implements IDE { return result; } + async getSignatureHelp(location: Location): Promise { + const result = await executeSignatureHelpProvider({ + uri: vscode.Uri.parse(location.filepath), + line: location.position.line, + character: location.position.character, + name: "vscode.executeSignatureHelpProvider", + }); + + return result; + } + onDidChangeActiveTextEditor(callback: (uri: string) => void): void { vscode.window.onDidChangeActiveTextEditor((editor) => { if (editor) { diff --git a/extensions/vscode/src/autocomplete/lsp.ts b/extensions/vscode/src/autocomplete/lsp.ts index a6900291af3..c3d5c11a49f 100644 --- a/extensions/vscode/src/autocomplete/lsp.ts +++ b/extensions/vscode/src/autocomplete/lsp.ts @@ -13,7 +13,13 @@ import { intersection } from "core/util/ranges"; import * as URI from "uri-js"; import * as vscode from "vscode"; -import type { IDE, Range, RangeInFile, RangeInFileWithContents } from "core"; +import type { + IDE, + Range, + RangeInFile, + RangeInFileWithContents, + SignatureHelp, +} from "core"; import type Parser from "web-tree-sitter"; type GotoProviderName = @@ -23,6 +29,8 @@ type GotoProviderName = | "vscode.executeImplementationProvider" | "vscode.executeReferenceProvider"; +type SignatureHelpProviderName = "vscode.executeSignatureHelpProvider"; + interface GotoInput { uri: vscode.Uri; line: number; @@ -33,8 +41,19 @@ function gotoInputKey(input: GotoInput) { return `${input.name}${input.uri.toString()}${input.line}${input.character}`; } +interface SignatureHelpInput { + uri: vscode.Uri; + line: number; + character: number; + name: SignatureHelpProviderName; +} +function signatureHelpKey(input: SignatureHelpInput) { + return `${input.name}${input.uri.toString()}${input.line}${input.character}`; +} + const MAX_CACHE_SIZE = 500; const gotoCache = new Map(); +const signatureHelpCache = new Map(); export async function executeGotoProvider( input: GotoInput, @@ -382,3 +401,36 @@ export const getDefinitionsFromLsp: GetLspDefinitionsFunction = async ( return []; } }; + +export async function executeSignatureHelpProvider( + input: SignatureHelpInput, +): Promise { + const cacheKey = signatureHelpKey(input); + const cached = signatureHelpCache.get(cacheKey); + if (cached) { + return cached; + } + + try { + const definitions = (await vscode.commands.executeCommand( + input.name, + input.uri, + new vscode.Position(input.line, input.character), + )) as SignatureHelp; + + // Add to cache + if (signatureHelpCache.size >= MAX_CACHE_SIZE) { + // Remove the oldest item from the cache + const oldestKey = signatureHelpCache.keys().next().value; + if (oldestKey) { + signatureHelpCache.delete(oldestKey); + } + } + signatureHelpCache.set(cacheKey, definitions); + + return definitions; + } catch (e) { + console.warn(`Error executing ${input.name}:`, e); + return null; + } +} From 3edf8097b3eb75f2aca80d8e55ca301558ee8fd5 Mon Sep 17 00:00:00 2001 From: Jacob Kim Date: Sat, 5 Jul 2025 17:30:37 -0700 Subject: [PATCH 23/97] handle cases where function declarations have no body --- .../hole-queries/typescript.scm | 25 ++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/extensions/vscode/tree-sitter/static-context-queries/hole-queries/typescript.scm b/extensions/vscode/tree-sitter/static-context-queries/hole-queries/typescript.scm index e69122b078e..02de3446601 100644 --- a/extensions/vscode/tree-sitter/static-context-queries/hole-queries/typescript.scm +++ b/extensions/vscode/tree-sitter/static-context-queries/hole-queries/typescript.scm @@ -21,7 +21,7 @@ (function_type return_type: (type_identifier) @return.type) -;; Capture any parse errors (e.g., the `??`) +;; Capture any parse errors (e.g., the `@`) (ERROR) @error.node ;; Capture the entire function declaration line @@ -34,3 +34,26 @@ (import_specifier name: (identifier) @import.name))) source: (string) @import.source) + +;; Capture standalone function declarations +(function_declaration + name: (identifier) @function.name) @function.decl + +;; Capture the function signature including parameters and return type +(function_declaration + parameters: (formal_parameters) @function.params + return_type: (type_annotation)? @function.type) + +;; For function expressions or arrow functions +(function_type + parameters: (formal_parameters) @function.params) @function.decl + +;; For arrow functions +(arrow_function + parameters: (formal_parameters) @function.params) @function.decl + +;; For function signatures without a body (like in your example) +(function_signature + name: (identifier) @function.name + parameters: (formal_parameters) @function.params + return_type: (type_annotation)? @function.type) @function.decl From be10c078c7c57789a2c23b29bfdf89648e497547 Mon Sep 17 00:00:00 2001 From: Jacob Kim Date: Sat, 5 Jul 2025 17:52:27 -0700 Subject: [PATCH 24/97] match type definition parity with vscode --- .../continue/IntelliJIde.kt | 8 +++ .../continueintellijextension/types.kt | 64 +++++++++++++++++++ 2 files changed, 72 insertions(+) diff --git a/extensions/intellij/src/main/kotlin/com/github/continuedev/continueintellijextension/continue/IntelliJIde.kt b/extensions/intellij/src/main/kotlin/com/github/continuedev/continueintellijextension/continue/IntelliJIde.kt index 2dfc3e3e1e2..782a878d693 100644 --- a/extensions/intellij/src/main/kotlin/com/github/continuedev/continueintellijextension/continue/IntelliJIde.kt +++ b/extensions/intellij/src/main/kotlin/com/github/continuedev/continueintellijextension/continue/IntelliJIde.kt @@ -592,6 +592,14 @@ class IntelliJIDE( throw NotImplementedError("gotoDefinition not implemented yet") } + override suspend fun gotoTypeDefinition(location: Location): List { + throw NotImplementedError("gotoTypeDefinition not implemented yet") + } + + override suspend fun getSignatureHelp(location: Location): SignatureHelp? { + throw NotImplementedError("getSignatureHelp not implemented yet") + } + override fun onDidChangeActiveTextEditor(callback: (filepath: String) -> Unit) { throw NotImplementedError("onDidChangeActiveTextEditor not implemented yet") } diff --git a/extensions/intellij/src/main/kotlin/com/github/continuedev/continueintellijextension/types.kt b/extensions/intellij/src/main/kotlin/com/github/continuedev/continueintellijextension/types.kt index 5ff9e9454dc..dd898eca2ca 100644 --- a/extensions/intellij/src/main/kotlin/com/github/continuedev/continueintellijextension/types.kt +++ b/extensions/intellij/src/main/kotlin/com/github/continuedev/continueintellijextension/types.kt @@ -63,6 +63,68 @@ data class RangeInFileWithContents( val contents: String ) +/** + * Signature help represents the signature of something + * callable. There can be multiple signatures but only one + * active and only one active parameter. + */ +data class SignatureHelp( + /** + * One or more signatures. + */ + val signatures: List, + + /** + * The active signature. + */ + val activeSignature: Int, + + /** + * The active parameter of the active signature. + */ + val activeParameter: Int +) + +/** + * Represents the signature of something callable. A signature + * can have a label, like a function-name, a doc-comment, and + * a set of parameters. + */ +data class SignatureInformation( + /** + * The label of this signature. Will be shown in + * the UI. + */ + val label: String, + + /** + * The parameters of this signature. + */ + val parameters: List, + + /** + * The index of the active parameter. + * + * If provided, this is used in place of [SignatureHelp.activeParameter]. + */ + val activeParameter: Int? = null +) + +/** + * Represents a parameter of a callable-signature. A parameter can + * have a label and a doc-comment. + */ +data class ParameterInformation( + /** + * The label of this signature. + * + * Either a string or inclusive start and exclusive end offsets within its containing + * [SignatureInformation.label] signature label. *Note*: A label of type string must be + * a substring of its containing signature information's [SignatureInformation.label] label. + */ + val label: String // Note: Kotlin doesn't have union types, so this represents the string case +) + data class ControlPlaneSessionInfo( val accessToken: String, val account: Account @@ -191,6 +253,8 @@ interface IDE { // LSP suspend fun gotoDefinition(location: Location): List + suspend fun gotoTypeDefinition(location: Location): List + suspend fun getSignatureHelp(location: Location): SignatureHelp? // Callbacks fun onDidChangeActiveTextEditor(callback: (filepath: String) -> Unit) From 6a2ede397179b7ee3033e4533f3a772ac556c340 Mon Sep 17 00:00:00 2001 From: Jacob Kim Date: Sat, 5 Jul 2025 20:28:02 -0700 Subject: [PATCH 25/97] add a flag to check if static contextualization was enabled --- packages/config-yaml/src/schemas/data/autocomplete/index.ts | 3 +++ packages/config-yaml/src/schemas/data/autocomplete/v0.2.0.ts | 3 +++ 2 files changed, 6 insertions(+) diff --git a/packages/config-yaml/src/schemas/data/autocomplete/index.ts b/packages/config-yaml/src/schemas/data/autocomplete/index.ts index 8ae073e2efa..4d2a0b91b97 100644 --- a/packages/config-yaml/src/schemas/data/autocomplete/index.ts +++ b/packages/config-yaml/src/schemas/data/autocomplete/index.ts @@ -36,6 +36,9 @@ export const autocompleteEventAllSchema = baseDevDataAllSchema.extend({ uniqueId: z.string(), timestamp: z.number(), + // For static contextualization. + enabledStaticContextualization: z.boolean().optional(), + // DEPRECATED - no more nested objects after v0.1.0, all flat values completionOptions: completionOptionsSchema.optional(), disableInFiles: z.array(z.string()).optional(), diff --git a/packages/config-yaml/src/schemas/data/autocomplete/v0.2.0.ts b/packages/config-yaml/src/schemas/data/autocomplete/v0.2.0.ts index 5866b986529..123a05b7535 100644 --- a/packages/config-yaml/src/schemas/data/autocomplete/v0.2.0.ts +++ b/packages/config-yaml/src/schemas/data/autocomplete/v0.2.0.ts @@ -38,6 +38,9 @@ export const autocompleteEventSchema_0_2_0 = autocompleteEventAllSchema.pick({ completionId: true, uniqueId: true, + // For static contextualization. + enabledStaticContextualization: true, + // Note objects (completionOptions and disableInfiles) removed from 0.1.0 => 0.2.0 }); From 53b28146ebbbfc282cca74b429dec9d48a7277f2 Mon Sep 17 00:00:00 2001 From: Jacob Kim Date: Sat, 5 Jul 2025 20:32:06 -0700 Subject: [PATCH 26/97] log static contextualization --- core/autocomplete/CompletionProvider.ts | 9 +++- .../util/AutocompleteLoggingService.ts | 44 +++++++++++-------- core/autocomplete/util/types.ts | 1 + 3 files changed, 33 insertions(+), 21 deletions(-) diff --git a/core/autocomplete/CompletionProvider.ts b/core/autocomplete/CompletionProvider.ts index 4d4327bccee..2e3cd320d90 100644 --- a/core/autocomplete/CompletionProvider.ts +++ b/core/autocomplete/CompletionProvider.ts @@ -123,8 +123,9 @@ export class CompletionProvider { }; // Enable static contextualization if defined. - options.experimental_enableStaticContextualization = - config?.experimental?.enableStaticContextualization ?? false; + if (config?.experimental?.enableStaticContextualization) { + options.experimental_enableStaticContextualization = true; + } return options; } @@ -263,6 +264,10 @@ export class CompletionProvider { ...helper.options, }; + if (options.experimental_enableStaticContextualization) { + outcome.enabledStaticContextualization = true; + } + ////////// // Save to cache diff --git a/core/autocomplete/util/AutocompleteLoggingService.ts b/core/autocomplete/util/AutocompleteLoggingService.ts index 2e4d19844ef..4f600a8c5b8 100644 --- a/core/autocomplete/util/AutocompleteLoggingService.ts +++ b/core/autocomplete/util/AutocompleteLoggingService.ts @@ -105,24 +105,30 @@ export class AutocompleteLoggingService { }); const { prompt, completion, prefix, suffix, ...restOfOutcome } = outcome; - void Telemetry.capture( - "autocomplete", - { - accepted: restOfOutcome.accepted, - cacheHit: restOfOutcome.cacheHit, - completionId: restOfOutcome.completionId, - completionOptions: restOfOutcome.completionOptions, - debounceDelay: restOfOutcome.debounceDelay, - fileExtension: getUriFileExtension(restOfOutcome.filepath), - maxPromptTokens: restOfOutcome.maxPromptTokens, - modelName: restOfOutcome.modelName, - modelProvider: restOfOutcome.modelProvider, - multilineCompletions: restOfOutcome.multilineCompletions, - time: restOfOutcome.time, - useRecentlyEdited: restOfOutcome.useRecentlyEdited, - numLines: restOfOutcome.numLines, - }, - true, - ); + const toLog = { + accepted: restOfOutcome.accepted, + cacheHit: restOfOutcome.cacheHit, + completionId: restOfOutcome.completionId, + completionOptions: restOfOutcome.completionOptions, + debounceDelay: restOfOutcome.debounceDelay, + fileExtension: getUriFileExtension(restOfOutcome.filepath), + maxPromptTokens: restOfOutcome.maxPromptTokens, + modelName: restOfOutcome.modelName, + modelProvider: restOfOutcome.modelProvider, + multilineCompletions: restOfOutcome.multilineCompletions, + time: restOfOutcome.time, + useRecentlyEdited: restOfOutcome.useRecentlyEdited, + numLines: restOfOutcome.numLines, + }; + + outcome.enabledStaticContextualization + ? void Telemetry.capture("autocomplete", { + ...toLog, + enabledStaticContextualization: true, + prefix, + suffix, + prompt, + }) + : void Telemetry.capture("autocomplete", toLog); } } diff --git a/core/autocomplete/util/types.ts b/core/autocomplete/util/types.ts index 3959bff9c5d..32be50e2f0b 100644 --- a/core/autocomplete/util/types.ts +++ b/core/autocomplete/util/types.ts @@ -42,4 +42,5 @@ export interface AutocompleteOutcome extends TabAutocompleteOptions { completionId: string; uniqueId: string; timestamp: number; + enabledStaticContextualization?: boolean; } From 031ad9dc0b11d788f327e885160e20a4559fb5f6 Mon Sep 17 00:00:00 2001 From: Jacob Kim Date: Mon, 7 Jul 2025 18:53:49 -0700 Subject: [PATCH 27/97] move to continue-only feature for internal testing --- gui/src/pages/config/ContinueFeaturesMenu.tsx | 14 +++++++++++++ gui/src/pages/config/UserSettingsForm.tsx | 21 +++++++++---------- 2 files changed, 24 insertions(+), 11 deletions(-) diff --git a/gui/src/pages/config/ContinueFeaturesMenu.tsx b/gui/src/pages/config/ContinueFeaturesMenu.tsx index f3cb738ca49..c83b5a33443 100644 --- a/gui/src/pages/config/ContinueFeaturesMenu.tsx +++ b/gui/src/pages/config/ContinueFeaturesMenu.tsx @@ -6,6 +6,8 @@ interface ContinueFeaturesMenuProps { handleLogEditingDataToggle: (value: boolean) => void; optInNextEditFeature: boolean; handleOptInNextEditToggle: (value: boolean) => void; + enableStaticContextualization: boolean; + handleEnableStaticContextualizationToggle: (value: boolean) => void; } export function ContinueFeaturesMenu({ @@ -13,6 +15,8 @@ export function ContinueFeaturesMenu({ handleLogEditingDataToggle, optInNextEditFeature, handleOptInNextEditToggle, + enableStaticContextualization, + handleEnableStaticContextualizationToggle, }: ContinueFeaturesMenuProps) { return (
@@ -42,6 +46,16 @@ export function ContinueFeaturesMenu({ onToggle={() => handleOptInNextEditToggle(!optInNextEditFeature)} text="Enable Next Edit Over Autocomplete" /> + + + handleEnableStaticContextualizationToggle( + !enableStaticContextualization, + ) + } + text="Use Static Contextualization" + />
); diff --git a/gui/src/pages/config/UserSettingsForm.tsx b/gui/src/pages/config/UserSettingsForm.tsx index 54783c254cd..ea6b27cfd53 100644 --- a/gui/src/pages/config/UserSettingsForm.tsx +++ b/gui/src/pages/config/UserSettingsForm.tsx @@ -75,6 +75,10 @@ export function UserSettingsForm() { handleUpdate({ optInNextEditFeature: value }); }; + const handleEnableStaticContextualizationToggle = (value: boolean) => { + handleUpdate({ enableStaticContextualization: value }); + }; + useEffect(() => { // Necessary so that reformatted/trimmed values don't cause dirty state setFormPromptPath(promptPath); @@ -436,23 +440,18 @@ export function UserSettingsForm() { text="@Codebase: use tool calling only" /> - - handleUpdate({ - enableStaticContextualization: - !enableStaticContextualization, - }) - } - text="Use Static Contextualization" - /> - {hasContinueEmail && ( )} From 367e6672ca4de6eddf4f79816f8287d803744f13 Mon Sep 17 00:00:00 2001 From: Jacob Kim Date: Mon, 7 Jul 2025 19:20:17 -0700 Subject: [PATCH 28/97] refactor: :art: format snippets so that it's more model prefix-friendly --- .../static-context/StaticContextService.ts | 32 +++++++++++++++---- core/autocomplete/snippets/types.ts | 1 + 2 files changed, 27 insertions(+), 6 deletions(-) diff --git a/core/autocomplete/context/static-context/StaticContextService.ts b/core/autocomplete/context/static-context/StaticContextService.ts index fb6919d35dc..b955a38ff4c 100644 --- a/core/autocomplete/context/static-context/StaticContextService.ts +++ b/core/autocomplete/context/static-context/StaticContextService.ts @@ -1,5 +1,6 @@ import * as fs from "fs/promises"; import path from "path"; +import { pathToFileURL } from "url"; import Parser from "web-tree-sitter"; import { IDE, Position } from "../../.."; import { localPathOrUriToPath } from "../../../util/pathToUri"; @@ -153,14 +154,33 @@ export class StaticContextService { this.logAutocompleteStaticSnippet(ctx); - console.log(end - start); + // console.log(end - start); - return [ - { + const snippets: AutocompleteStaticSnippet[] = []; + + snippets.push({ + type: AutocompleteSnippetType.Static, + filepath: pathToFileURL(path.resolve(holeContext.source)).toString(), + content: holeContext.fullHoverResult, + }); + + for (const [filepath, typs] of ctx.relevantTypes.entries()) { + snippets.push({ type: AutocompleteSnippetType.Static, - content: StaticContextService.formatAutocompleteStaticSnippet(ctx), - }, - ]; + filepath: pathToFileURL(path.resolve(filepath)).toString(), + content: typs.join("\n"), + }); + } + + for (const [filepath, headers] of ctx.relevantHeaders.entries()) { + snippets.push({ + type: AutocompleteSnippetType.Static, + filepath: pathToFileURL(path.resolve(filepath)).toString(), + content: headers.join("\n"), + }); + } + + return snippets; } private async getHoleContext( diff --git a/core/autocomplete/snippets/types.ts b/core/autocomplete/snippets/types.ts index c486c01063f..be820609b10 100644 --- a/core/autocomplete/snippets/types.ts +++ b/core/autocomplete/snippets/types.ts @@ -26,6 +26,7 @@ export interface AutocompleteClipboardSnippet extends BaseAutocompleteSnippet { export interface AutocompleteStaticSnippet extends BaseAutocompleteSnippet { type: AutocompleteSnippetType.Static; + filepath: string; } export type AutocompleteSnippet = From 9472bb1e4562e64e0ab4752aecbf4b3f1cb723bd Mon Sep 17 00:00:00 2001 From: Jacob Kim Date: Wed, 9 Jul 2025 21:07:31 -0700 Subject: [PATCH 29/97] bug: satisfy IDE --- core/protocol/ide.ts | 3 +++ core/protocol/messenger/messageIde.ts | 9 +++++++++ core/util/filesystem.ts | 9 +++++++++ 3 files changed, 21 insertions(+) diff --git a/core/protocol/ide.ts b/core/protocol/ide.ts index ba4cf4f880b..c67b8c94a3d 100644 --- a/core/protocol/ide.ts +++ b/core/protocol/ide.ts @@ -10,6 +10,7 @@ import type { Problem, Range, RangeInFile, + SignatureHelp, TerminalOptions, Thread, } from "../"; @@ -82,6 +83,8 @@ export type ToIdeFromWebviewOrCoreProtocol = { getFileStats: [{ files: string[] }, FileStatsMap]; gotoDefinition: [{ location: Location }, RangeInFile[]]; + gotoTypeDefinition: [{ location: Location }, RangeInFile[]]; + getSignatureHelp: [{ location: Location }, SignatureHelp | null]; getControlPlaneSessionInfo: [ { silent: boolean; useOnboarding: boolean }, diff --git a/core/protocol/messenger/messageIde.ts b/core/protocol/messenger/messageIde.ts index 30d9b817740..2365117c095 100644 --- a/core/protocol/messenger/messageIde.ts +++ b/core/protocol/messenger/messageIde.ts @@ -13,6 +13,7 @@ import type { Problem, Range, RangeInFile, + SignatureHelp, TerminalOptions, Thread, } from "../.."; @@ -45,6 +46,14 @@ export class MessageIde implements IDE { return this.request("gotoDefinition", { location }); } + async gotoTypeDefinition(location: Location): Promise { + return this.request("gotoTypeDefinition", { location }); + } + + async getSignatureHelp(location: Location): Promise { + return this.request("getSignatureHelp", { location }); + } + onDidChangeActiveTextEditor(callback: (fileUri: string) => void): void { this.on("didChangeActiveTextEditor", (data) => callback(data.filepath)); } diff --git a/core/util/filesystem.ts b/core/util/filesystem.ts index f415e5e8683..959ea939f03 100644 --- a/core/util/filesystem.ts +++ b/core/util/filesystem.ts @@ -13,6 +13,7 @@ import { Problem, Range, RangeInFile, + SignatureHelp, TerminalOptions, Thread, ToastType, @@ -44,6 +45,14 @@ class FileSystemIde implements IDE { return Promise.resolve([]); } + gotoTypeDefinition(location: Location): Promise { + return Promise.resolve([]); + } + + getSignatureHelp(location: Location): Promise { + return Promise.resolve(null); + } + onDidChangeActiveTextEditor(callback: (fileUri: string) => void): void { return; } From 5b1848d2f179e7b078814260b86bfd33ebdd0ef1 Mon Sep 17 00:00:00 2001 From: Jacob Kim Date: Wed, 9 Jul 2025 21:10:02 -0700 Subject: [PATCH 30/97] bump: version --- binary/package-lock.json | 2 ++ packages/config-yaml/package-lock.json | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/binary/package-lock.json b/binary/package-lock.json index 51e6f5cf941..11dd6505b87 100644 --- a/binary/package-lock.json +++ b/binary/package-lock.json @@ -121,6 +121,8 @@ "@babel/preset-env": "^7.24.7", "@biomejs/biome": "1.6.4", "@google/generative-ai": "^0.11.4", + "@shikijs/colorized-brackets": "^3.7.0", + "@shikijs/transformers": "^3.7.0", "@types/diff": "^7.0.1", "@types/follow-redirects": "^1.14.4", "@types/jest": "^29.5.12", diff --git a/packages/config-yaml/package-lock.json b/packages/config-yaml/package-lock.json index 014ecac95f6..51091ea04fa 100644 --- a/packages/config-yaml/package-lock.json +++ b/packages/config-yaml/package-lock.json @@ -1,12 +1,12 @@ { "name": "@continuedev/config-yaml", - "version": "1.0.95", + "version": "1.0.96", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@continuedev/config-yaml", - "version": "1.0.95", + "version": "1.0.96", "license": "Apache-2.0", "dependencies": { "@continuedev/config-types": "^1.0.14", From b72fc0ea8f8dc0e1f88934e18b1b9ab5d34826ef Mon Sep 17 00:00:00 2001 From: Jakub Blach Date: Thu, 10 Jul 2025 18:47:06 +0200 Subject: [PATCH 31/97] fix: Send the process exit reason to Sentry + add OS info --- .../continue/IdeProtocolClient.kt | 1 - .../continue/IntelliJIde.kt | 1 - .../continue/process/ContinueBinaryProcess.kt | 9 ++++----- .../error/ContinueErrorService.kt | 12 +++++++++++- 4 files changed, 15 insertions(+), 8 deletions(-) diff --git a/extensions/intellij/src/main/kotlin/com/github/continuedev/continueintellijextension/continue/IdeProtocolClient.kt b/extensions/intellij/src/main/kotlin/com/github/continuedev/continueintellijextension/continue/IdeProtocolClient.kt index 08a5e8d1846..6b2da617977 100644 --- a/extensions/intellij/src/main/kotlin/com/github/continuedev/continueintellijextension/continue/IdeProtocolClient.kt +++ b/extensions/intellij/src/main/kotlin/com/github/continuedev/continueintellijextension/continue/IdeProtocolClient.kt @@ -13,7 +13,6 @@ import com.github.continuedev.continueintellijextension.utils.* import com.google.gson.Gson import com.intellij.openapi.application.ApplicationManager import com.intellij.openapi.command.WriteCommandAction -import com.intellij.openapi.components.ServiceManager import com.intellij.openapi.components.service import com.intellij.openapi.editor.SelectionModel import com.intellij.openapi.fileEditor.FileEditorManager diff --git a/extensions/intellij/src/main/kotlin/com/github/continuedev/continueintellijextension/continue/IntelliJIde.kt b/extensions/intellij/src/main/kotlin/com/github/continuedev/continueintellijextension/continue/IntelliJIde.kt index 2dfc3e3e1e2..52161f2e365 100644 --- a/extensions/intellij/src/main/kotlin/com/github/continuedev/continueintellijextension/continue/IntelliJIde.kt +++ b/extensions/intellij/src/main/kotlin/com/github/continuedev/continueintellijextension/continue/IntelliJIde.kt @@ -26,7 +26,6 @@ import com.intellij.openapi.fileEditor.FileDocumentManager import com.intellij.openapi.fileEditor.FileEditorManager import com.intellij.openapi.project.Project import com.intellij.openapi.project.guessProjectDir -import com.intellij.openapi.util.IconLoader import com.intellij.openapi.vfs.LocalFileSystem import com.intellij.openapi.vfs.VirtualFileManager import com.intellij.psi.PsiDocumentManager diff --git a/extensions/intellij/src/main/kotlin/com/github/continuedev/continueintellijextension/continue/process/ContinueBinaryProcess.kt b/extensions/intellij/src/main/kotlin/com/github/continuedev/continueintellijextension/continue/process/ContinueBinaryProcess.kt index eb45cc4da4d..f10dd9d6542 100644 --- a/extensions/intellij/src/main/kotlin/com/github/continuedev/continueintellijextension/continue/process/ContinueBinaryProcess.kt +++ b/extensions/intellij/src/main/kotlin/com/github/continuedev/continueintellijextension/continue/process/ContinueBinaryProcess.kt @@ -1,5 +1,6 @@ package com.github.continuedev.continueintellijextension.`continue`.process +import com.github.continuedev.continueintellijextension.error.ContinueErrorService import com.github.continuedev.continueintellijextension.services.TelemetryService import com.github.continuedev.continueintellijextension.utils.OS import com.github.continuedev.continueintellijextension.utils.getContinueBinaryPath @@ -44,11 +45,8 @@ class ContinueBinaryProcess(private val onExit: () -> Unit) : ContinueProcess { err = err.substring(doneIndex + delimiter.length) } } - - println("Core process exited with output: $err") - - val telemetryService = service() - telemetryService.capture("jetbrains_core_exit", mapOf("error" to err)) + service().reportMessage("Core process exited with output: $err") + service().capture("jetbrains_core_exit", mapOf("error" to err)) } private companion object { @@ -67,6 +65,7 @@ class ContinueBinaryProcess(private val onExit: () -> Unit) : ContinueProcess { elevatePermissions() } + // todo: consider setting permissions ahead-of-time during build/packaging, not at runtime private fun elevatePermissions() { val path = getContinueBinaryPath() val permissions = setOf( diff --git a/extensions/intellij/src/main/kotlin/com/github/continuedev/continueintellijextension/error/ContinueErrorService.kt b/extensions/intellij/src/main/kotlin/com/github/continuedev/continueintellijextension/error/ContinueErrorService.kt index 21f920ef9fd..35e23d8a266 100644 --- a/extensions/intellij/src/main/kotlin/com/github/continuedev/continueintellijextension/error/ContinueErrorService.kt +++ b/extensions/intellij/src/main/kotlin/com/github/continuedev/continueintellijextension/error/ContinueErrorService.kt @@ -6,6 +6,7 @@ import com.intellij.openapi.components.Service import com.intellij.openapi.diagnostic.Attachment import com.intellij.openapi.diagnostic.Logger import com.intellij.openapi.extensions.PluginId +import com.intellij.openapi.util.SystemInfo import com.intellij.ui.jcef.JBCefApp import io.sentry.Hint import io.sentry.Sentry @@ -26,6 +27,8 @@ class ContinueErrorService { config.setTag("ide_version", ApplicationInfo.getInstance().build.asString()) config.setTag("jcef_supported", JBCefApp.isSupported().toString()) config.setTag("plugin_version", PluginManagerCore.getPlugin(PluginId.getId(PLUGIN_ID))?.version) + config.setTag("system", SystemInfo.OS_NAME) + config.setTag("system_version", SystemInfo.OS_VERSION) } } @@ -39,7 +42,14 @@ class ContinueErrorService { sentryEvent.message = Message().apply { this.message = message } val hint = Hint.withAttachments(attachments?.map { SentryAttachment(it.bytes, it.path) }) Sentry.captureEvent(sentryEvent, hint) - log.warn("Problem sent to Sentry: $message", throwable) + log.warn("Exception sent to Sentry: $message", throwable) + } + + fun reportMessage( + message: String, + ) { + Sentry.captureMessage(message) + log.warn("Message sent to Sentry: $message") } private companion object { From b3e4d368bd457401eff9d5eb0f5713efa1f56b1e Mon Sep 17 00:00:00 2001 From: Jacob Kim Date: Thu, 10 Jul 2025 16:57:47 -0700 Subject: [PATCH 32/97] feat: remove logging code to telemetry --- core/autocomplete/util/AutocompleteLoggingService.ts | 3 --- 1 file changed, 3 deletions(-) diff --git a/core/autocomplete/util/AutocompleteLoggingService.ts b/core/autocomplete/util/AutocompleteLoggingService.ts index 4f600a8c5b8..58b3d2d0dbc 100644 --- a/core/autocomplete/util/AutocompleteLoggingService.ts +++ b/core/autocomplete/util/AutocompleteLoggingService.ts @@ -125,9 +125,6 @@ export class AutocompleteLoggingService { ? void Telemetry.capture("autocomplete", { ...toLog, enabledStaticContextualization: true, - prefix, - suffix, - prompt, }) : void Telemetry.capture("autocomplete", toLog); } From 00fc90badca92b6d03c40eb2e2e3462ba3213aaf Mon Sep 17 00:00:00 2001 From: chezsmithy Date: Fri, 27 Jun 2025 16:00:29 -0700 Subject: [PATCH 33/97] fix: :bug: Project structure creation with bare codeblocks is breaking markdown display and creation --- .../utils/isOpeningNestedBlock.test.ts | 157 ++++++++++++++++++ .../utils/isOpeningNestedBlock.ts | 66 ++++++++ .../utils/patchNestedMarkdown.test.ts | 8 + .../utils/patchNestedMarkdown.ts | 15 +- 4 files changed, 242 insertions(+), 4 deletions(-) create mode 100644 gui/src/components/StyledMarkdownPreview/utils/isOpeningNestedBlock.test.ts create mode 100644 gui/src/components/StyledMarkdownPreview/utils/isOpeningNestedBlock.ts diff --git a/gui/src/components/StyledMarkdownPreview/utils/isOpeningNestedBlock.test.ts b/gui/src/components/StyledMarkdownPreview/utils/isOpeningNestedBlock.test.ts new file mode 100644 index 00000000000..e5eb02f0cc7 --- /dev/null +++ b/gui/src/components/StyledMarkdownPreview/utils/isOpeningNestedBlock.test.ts @@ -0,0 +1,157 @@ +import { expect, test } from "vitest"; +import { isOpeningNestedBlock } from "./isOpeningNestedBlock"; + +test("isOpeningNestedBlock should return true when odd number of bare backticks ahead", () => { + const trimmedLines = [ + "```markdown", + "# Header", + + "```", // <- index 2: should be opening (1 ``` ahead = odd) + "content", + + "```", // <- index 4: closing (0 ``` ahead = even) + ]; + + expect(isOpeningNestedBlock(trimmedLines, 2, 1)).toBe(true); + expect(isOpeningNestedBlock(trimmedLines, 4, 2)).toBe(false); +}); + +test("isOpeningNestedBlock should return false when even number (zero) of bare backticks ahead", () => { + const trimmedLines = [ + "```markdown", + "# Header", + + "```", // <- index 2: should be closing (0 ``` ahead = even) + ]; + + expect(isOpeningNestedBlock(trimmedLines, 2, 1)).toBe(false); +}); + +test("isOpeningNestedBlock should handle multiple nested pairs", () => { + const trimmedLines = [ + "```markdown", + "# Header", + + "```", // <- index 2: opening (3 ``` ahead = odd) + "```", // <- index 3: opening (2 ``` ahead = even) -> should be false + "content", + + "```", // <- index 5: closing (1 ``` ahead = odd) -> should be true + "```", // <- index 6: closing (0 ``` ahead = even) -> should be false + ]; + + expect(isOpeningNestedBlock(trimmedLines, 2, 1)).toBe(true); // 3 ahead = odd + expect(isOpeningNestedBlock(trimmedLines, 3, 2)).toBe(false); // 2 ahead = even + expect(isOpeningNestedBlock(trimmedLines, 5, 2)).toBe(true); // 1 ahead = odd + expect(isOpeningNestedBlock(trimmedLines, 6, 1)).toBe(false); // 0 ahead = even +}); + +test("isOpeningNestedBlock should return false when reaching end of markdown block via ~~~", () => { + const trimmedLines = [ + "```markdown", + "# Header", + + "```", // <- index 2: should be closing since ~~~ terminates the block + "content", + + "~~~", // <- terminator stops counting + "```", // <- this one is after the markdown block ends + ]; + + expect(isOpeningNestedBlock(trimmedLines, 2, 1)).toBe(false); +}); + +test("isOpeningNestedBlock should return false when reaching new markdown block", () => { + const trimmedLines = [ + "```markdown", + "# Header", + + "```", // <- index 2: should be closing since new markdown block starts + "content", + + "```md", // <- new markdown block terminates counting + "```", // <- this one belongs to the new block + ]; + + expect(isOpeningNestedBlock(trimmedLines, 2, 1)).toBe(false); +}); + +test("isOpeningNestedBlock should handle empty content between backticks", () => { + const trimmedLines = [ + "```markdown", + + "```", // <- index 1: opening (1 ``` ahead = odd) + "", + + "```", // <- index 3: closing (0 ``` ahead = even) + ]; + + expect(isOpeningNestedBlock(trimmedLines, 1, 1)).toBe(true); + expect(isOpeningNestedBlock(trimmedLines, 3, 2)).toBe(false); +}); + +test("isOpeningNestedBlock should handle case where currentIndex is last line", () => { + const trimmedLines = [ + "```markdown", + "# Header", + + "```", // <- index 2: last line, should be closing (0 ahead = even) + ]; + + expect(isOpeningNestedBlock(trimmedLines, 2, 1)).toBe(false); +}); + +test("isOpeningNestedBlock should not be confused by backticks in content", () => { + const trimmedLines = [ + "```markdown", + "Some `code` with backticks", + + "```", // <- index 2: should be closing (0 bare ``` ahead = even) + ]; + + expect(isOpeningNestedBlock(trimmedLines, 2, 1)).toBe(false); +}); + +test("isOpeningNestedBlock should handle GitHub markdown variants as terminators", () => { + const trimmedLines = [ + "```markdown", + "# Header", + + "```", // <- index 2: should be closing (terminator stops counting) + "content", + + "```gfm", // <- GitHub markdown variant starts new block + "```", + ]; + + expect(isOpeningNestedBlock(trimmedLines, 2, 1)).toBe(false); +}); + +test("isOpeningNestedBlock should only check terminators at nest level 1", () => { + const trimmedLines = [ + "```markdown", + + "```", // <- index 1: at nest level 1, ~~~ should terminate counting + "~~~", // <- terminator found, stops counting + "```", // <- this doesn't count towards the logic + ]; + + expect(isOpeningNestedBlock(trimmedLines, 1, 1)).toBe(false); +}); + +test("isOpeningNestedBlock should handle complex realistic markdown structure", () => { + const trimmedLines = [ + "```markdown README.md", + "# Project Structure", + "", + "```", // <- index 3: has 2 ``` ahead (even), so should be closing + ".", + "โ”‚ โ””โ”€โ”€ file.ts", + "```", // <- index 7: has 1 ``` ahead (odd), so should be opening + "```", // <- index 8: has 0 ``` ahead (even), so should be closing + ]; + + expect(isOpeningNestedBlock(trimmedLines, 3, 1)).toBe(false); // 2 ahead = even + expect(isOpeningNestedBlock(trimmedLines, 7, 2)).toBe(true); // 1 ahead = odd + expect(isOpeningNestedBlock(trimmedLines, 8, 1)).toBe(false); // 0 ahead = even +}); diff --git a/gui/src/components/StyledMarkdownPreview/utils/isOpeningNestedBlock.ts b/gui/src/components/StyledMarkdownPreview/utils/isOpeningNestedBlock.ts new file mode 100644 index 00000000000..8327ed219b0 --- /dev/null +++ b/gui/src/components/StyledMarkdownPreview/utils/isOpeningNestedBlock.ts @@ -0,0 +1,66 @@ +import { headerIsMarkdown } from "./headerIsMarkdown"; + +/** + * Determines if a line with bare backticks (```) should be treated as opening + * a nested code block rather than closing the current block. + * + * Uses look-ahead to check if there are more bare backtick lines ahead, + * which would indicate this is opening a nested block. + * + * @param trimmedLines - Array of trimmed lines from the source + * @param currentIndex - Index of the current line with bare backticks + * @param nestCount - Current nesting level + * @returns true if this should open a nested block, false if it should close + */ +export function isOpeningNestedBlock( + trimmedLines: string[], + currentIndex: number, + nestCount: number, +): boolean { + // Simulate what would happen if we continue processing from this point + // Count how many blocks would need to be closed vs opened + + let simulatedNestCount = nestCount; + let bareBackticksAhead = 0; + + for (let j = currentIndex + 1; j < trimmedLines.length; j++) { + const line = trimmedLines[j]; + + // Count bare backticks lines + if (line.match(/^`+$/)) { + bareBackticksAhead++; + } else if (line.startsWith("```")) { + // Non-bare backticks (with language/type) always open + simulatedNestCount++; + } + + // Stop looking if we hit what appears to be the end of current markdown block + if (nestCount === 1) { + // At top level of markdown block - check for block terminators + if ( + line.startsWith("~~~") || + (line.startsWith("```") && headerIsMarkdown(line.replaceAll("`", ""))) + ) { + break; + } + } + } + + // The key insight: if we need the current backticks to close to get back to nestCount=1, + // and there are more bare backticks ahead than what we'd need to close everything, + // then this should open + + if (nestCount > 1) { + // We're deeply nested, usually should close + return bareBackticksAhead > nestCount - 1; + } + + // At top level (nestCount === 1), if there are exactly 2 ahead and we're at top level, + // this suggests: current=open, first_ahead=close, second_ahead=close_markdown + if (nestCount === 1 && bareBackticksAhead === 2) { + return true; + } + + // Default to the original logic + return bareBackticksAhead % 2 === 1; +} diff --git a/gui/src/components/StyledMarkdownPreview/utils/patchNestedMarkdown.test.ts b/gui/src/components/StyledMarkdownPreview/utils/patchNestedMarkdown.test.ts index af94f118dc6..4e347a9e224 100644 --- a/gui/src/components/StyledMarkdownPreview/utils/patchNestedMarkdown.test.ts +++ b/gui/src/components/StyledMarkdownPreview/utils/patchNestedMarkdown.test.ts @@ -6,6 +6,14 @@ describe("patchNestedMarkdown", () => { expect(patchNestedMarkdown(source)).toBe(source); }); + it("should handle nested blocks without a type", () => { + const source = + "```markdown README.md\n# Project Structure\n\n```\n.\nโ”œโ”€โ”€ AdvancedPage.tsx\nโ”œโ”€โ”€ Calculator.java\nโ”œโ”€โ”€ Dockerfile\nโ”œโ”€โ”€ calculator_test/\nโ”‚ โ”œโ”€โ”€ Calculator.java\nโ”‚ โ””โ”€โ”€ Main.java\nโ”œโ”€โ”€ data.json\nโ”œโ”€โ”€ example.ipynb\nโ”œโ”€โ”€ logs/\nโ”œโ”€โ”€ nested-folder/\nโ”‚ โ”œโ”€โ”€ helloNested.py\nโ”‚ โ”œโ”€โ”€ package.json\nโ”‚ โ””โ”€โ”€ rules.md\nโ”œโ”€โ”€ program.cs\nโ”œโ”€โ”€ query.sql\nโ”œโ”€โ”€ react-calculator/\nโ”œโ”€โ”€ readme.md\nโ”œโ”€โ”€ requirements.txt\nโ”œโ”€โ”€ test.css\nโ”œโ”€โ”€ test.html\nโ”œโ”€โ”€ test.js\nโ”œโ”€โ”€ test.kt\nโ”œโ”€โ”€ test.php\nโ”œโ”€โ”€ test.py\nโ”œโ”€โ”€ test.rb\nโ”œโ”€โ”€ test.rs\nโ”œโ”€โ”€ test.sh\nโ””โ”€โ”€ test.ts\n```\n```"; + const expected = + "~~~markdown README.md\n# Project Structure\n\n```\n.\nโ”œโ”€โ”€ AdvancedPage.tsx\nโ”œโ”€โ”€ Calculator.java\nโ”œโ”€โ”€ Dockerfile\nโ”œโ”€โ”€ calculator_test/\nโ”‚ โ”œโ”€โ”€ Calculator.java\nโ”‚ โ””โ”€โ”€ Main.java\nโ”œโ”€โ”€ data.json\nโ”œโ”€โ”€ example.ipynb\nโ”œโ”€โ”€ logs/\nโ”œโ”€โ”€ nested-folder/\nโ”‚ โ”œโ”€โ”€ helloNested.py\nโ”‚ โ”œโ”€โ”€ package.json\nโ”‚ โ””โ”€โ”€ rules.md\nโ”œโ”€โ”€ program.cs\nโ”œโ”€โ”€ query.sql\nโ”œโ”€โ”€ react-calculator/\nโ”œโ”€โ”€ readme.md\nโ”œโ”€โ”€ requirements.txt\nโ”œโ”€โ”€ test.css\nโ”œโ”€โ”€ test.html\nโ”œโ”€โ”€ test.js\nโ”œโ”€โ”€ test.kt\nโ”œโ”€โ”€ test.php\nโ”œโ”€โ”€ test.py\nโ”œโ”€โ”€ test.rb\nโ”œโ”€โ”€ test.rs\nโ”œโ”€โ”€ test.sh\nโ””โ”€โ”€ test.ts\n```\n~~~"; + expect(patchNestedMarkdown(source)).toBe(expected); + }); + it("should replace backticks with tildes for markdown codeblocks", () => { const source = "```markdown\n# Header\nSome text\n```"; const expected = "~~~markdown\n# Header\nSome text\n~~~"; diff --git a/gui/src/components/StyledMarkdownPreview/utils/patchNestedMarkdown.ts b/gui/src/components/StyledMarkdownPreview/utils/patchNestedMarkdown.ts index 9be5bfbb225..30bd8fa1f0a 100644 --- a/gui/src/components/StyledMarkdownPreview/utils/patchNestedMarkdown.ts +++ b/gui/src/components/StyledMarkdownPreview/utils/patchNestedMarkdown.ts @@ -8,6 +8,7 @@ Note, this was benchmarked at sub-millisecond */ import { headerIsMarkdown } from "./headerIsMarkdown"; +import { isOpeningNestedBlock } from "./isOpeningNestedBlock"; export const patchNestedMarkdown = (source: string): string => { // Early return if no markdown codeblock pattern is found (including GitHub variants) @@ -24,10 +25,16 @@ export const patchNestedMarkdown = (source: string): string => { if (nestCount > 0) { // Inside a markdown block if (line.match(/^`+$/)) { - // Ending a block with just backticks (```) - nestCount--; - if (nestCount === 0) { - lines[i] = "~~~"; // End of markdown block + // Found bare backticks - determine if opening or closing + if (isOpeningNestedBlock(trimmedLines, i, nestCount)) { + // Opening a nested codeblock + nestCount++; + } else { + // Closing a block + nestCount--; + if (nestCount === 0) { + lines[i] = "~~~"; // End of markdown block + } } } else if (line.startsWith("```")) { // Going into a nested codeblock From 9cd2f8b34b2ef814b2d1f386c024f993cc66274a Mon Sep 17 00:00:00 2001 From: chezsmithy Date: Mon, 30 Jun 2025 17:43:32 -0700 Subject: [PATCH 34/97] enhancing the solution --- .../filtering/streamTransforms/lineStream.ts | 116 ++++- .../streamTransforms/lineStream.vitest.ts | 144 ++++++ core/edit/lazy/replace.ts | 14 +- core/edit/lazy/streamLazyApply.test.ts | 459 ++++++++++++++++++ core/edit/lazy/streamLazyApply.ts | 118 ++++- core/edit/recursiveStream.ts | 3 +- .../utils/isOpeningNestedBlock.test.ts | 157 ------ .../utils/isOpeningNestedBlock.ts | 66 --- .../utils/patchNestedMarkdown.ts | 25 +- 9 files changed, 836 insertions(+), 266 deletions(-) create mode 100644 core/edit/lazy/streamLazyApply.test.ts delete mode 100644 gui/src/components/StyledMarkdownPreview/utils/isOpeningNestedBlock.test.ts delete mode 100644 gui/src/components/StyledMarkdownPreview/utils/isOpeningNestedBlock.ts diff --git a/core/autocomplete/filtering/streamTransforms/lineStream.ts b/core/autocomplete/filtering/streamTransforms/lineStream.ts index bc193cb127a..eabfca5a75f 100644 --- a/core/autocomplete/filtering/streamTransforms/lineStream.ts +++ b/core/autocomplete/filtering/streamTransforms/lineStream.ts @@ -16,6 +16,23 @@ export type CharacterFilter = (args: { multiline: boolean; }) => AsyncGenerator; +// Duplicated from gui/src/components/StyledMarkdownPreview/utils/headerIsMarkdown.ts +function headerIsMarkdown(header: string): boolean { + return ( + header === "md" || + header === "markdown" || + header === "gfm" || + header === "github-markdown" || + header.includes(" md") || + header.includes(" markdown") || + header.includes(" gfm") || + header.includes(" github-markdown") || + header.split(" ")[0]?.split(".").pop() === "md" || + header.split(" ")[0]?.split(".").pop() === "markdown" || + header.split(" ")[0]?.split(".").pop() === "gfm" + ); +} + function isBracketEnding(line: string): boolean { return line .trim() @@ -331,25 +348,52 @@ export async function* removeTrailingWhitespace( /** * Filters and processes lines from a code block, removing unnecessary markers and handling edge cases. + * Now includes markdown-aware processing to handle nested markdown blocks properly. * * @param {LineStream} rawLines - The input stream of lines to filter. + * @param {string} filepath - Optional filepath to determine if this is a markdown file. * @yields {string} Filtered and processed lines from the code block. * * @description * This generator function performs the following tasks: * 1. Removes initial lines that should be removed before the actual code starts. - * 2. Filters out ending code block markers (```) unless they are the last line. - * 3. Handles special cases where lines should be changed and the stream should stop. - * 4. Yields processed lines that are part of the actual code block content. + * 2. For markdown files, applies nested markdown block logic to avoid premature termination. + * 3. For non-markdown files, uses original stopping behavior. + * 4. Handles special cases where lines should be changed and the stream should stop. + * 5. Yields processed lines that are part of the actual code block content. */ -export async function* filterCodeBlockLines(rawLines: LineStream): LineStream { +export async function* filterCodeBlockLines( + rawLines: LineStream, + filepath?: string, +): LineStream { let seenFirstFence = false; // nestCount is set to 1 when the entire code block is wrapped with ``` or START blocks. It's then incremented - // when an inner code block is discovered to avoid exiting the function prematurly. The function will exit early + // when an inner code block is discovered to avoid exiting the function prematurely. The function will exit early // when all blocks are matched. When no outer fence is discovered the function will always continue to the end. let nestCount = 0; + // Check if this is a markdown file and collect lines for analysis + const isMarkdownFile = + filepath && + ["md", "markdown", "gfm"].includes( + filepath.split(".").pop()?.toLowerCase() || "", + ); + + const allLines: string[] = []; for await (const line of rawLines) { + allLines.push(line); + } + + // Check if it has nested markdown blocks (like ```markdown or ```md) + const firstLine = allLines[0] || ""; + const hasNestedMarkdown = + (firstLine.startsWith("```") && + headerIsMarkdown(firstLine.replace(/`/g, ""))) || + (filepath && headerIsMarkdown(filepath)); + + for (let i = 0; i < allLines.length; i++) { + const line = allLines[i]; + if (!seenFirstFence) { if (shouldRemoveLineBeforeStart(line)) { // Filter out starting ``` or START block @@ -365,14 +409,66 @@ export async function* filterCodeBlockLines(rawLines: LineStream): LineStream { const changedEndLine = shouldChangeLineAndStop(line); if (typeof changedEndLine === "string") { // Ending a block with just backticks (```) or STOP + + // For markdown files with nested markdown blocks, apply special logic + if (hasNestedMarkdown && line.trim() === "```") { + // Apply the same nested markdown logic as patchNestedMarkdown + const trimmedLines = allLines.map((l) => l.trim()); + + let markdownNestCount = 0; + let shouldStop = false; + + for (let j = 0; j <= i; j++) { + const currentLine = trimmedLines[j]; + + if (markdownNestCount > 0) { + // Inside a markdown block + if (currentLine.match(/^`+$/)) { + // Found bare backticks - count remaining ones + let remainingBareBackticks = 0; + for (let k = j + 1; k < trimmedLines.length; k++) { + if (trimmedLines[k].match(/^`+$/)) { + remainingBareBackticks++; + } + } + + // If this is the last bare backticks and we're at position i, stop + if (remainingBareBackticks === 0 && j === i) { + markdownNestCount = 0; + shouldStop = true; + break; + } + } else if (currentLine.startsWith("```")) { + // Going into a nested codeblock + markdownNestCount++; + } + } else { + // Not inside a markdown block yet + if (currentLine.startsWith("```")) { + const header = currentLine.replaceAll("`", ""); + if (headerIsMarkdown(header)) { + markdownNestCount = 1; + } + } + } + } + + if (shouldStop) { + return; // Stop without yielding the final closing ``` + } else { + // This is an inner block delimiter, yield it as content + yield line; + continue; + } + } + + // Original logic for non-markdown files or simple cases nestCount--; if (nestCount === 0) { - // if we are closing the outer block then exit early - // only exit early if the outer block was started with a block - // it it was text, we will never exit early + // We've closed the outer wrapper - stop without yielding the closing ``` return; } else { - // otherwise just yield the line + // This is a nested block closing, yield it as content yield line; } } else if (line.startsWith("```")) { @@ -380,7 +476,7 @@ export async function* filterCodeBlockLines(rawLines: LineStream): LineStream { nestCount++; yield line; } else { - // otherwise just yield the line + // Otherwise just yield the line as content yield line; } } diff --git a/core/autocomplete/filtering/streamTransforms/lineStream.vitest.ts b/core/autocomplete/filtering/streamTransforms/lineStream.vitest.ts index 8861b968c29..f68447c3910 100644 --- a/core/autocomplete/filtering/streamTransforms/lineStream.vitest.ts +++ b/core/autocomplete/filtering/streamTransforms/lineStream.vitest.ts @@ -301,6 +301,37 @@ describe("lineStream", () => { ]); }); + it("should ignore ticks inside of code blocks such as tests", async () => { + const linesGenerator = await getLineGenerator([ + "```typescript", + 'it("should handle included inner ticks", async () => {', + " const linesGenerator = await getLineGenerator([`", + ' "```md"', + ' "const x = 5;"', + ' "```bash"', + ' "echo ```test```"', + ' "```"', + ' "```"', + "]);", + "```", + ]); + + const result = lineStream.filterCodeBlockLines(linesGenerator); + const filteredLines = await getFilteredLines(result); + + expect(filteredLines).toEqual([ + 'it("should handle included inner ticks", async () => {', + " const linesGenerator = await getLineGenerator([`", + ' "```md"', + ' "const x = 5;"', + ' "```bash"', + ' "echo ```test```"', + ' "```"', + ' "```"', + "]);", + ]); + }); + it("should handle included inner ticks", async () => { const linesGenerator = await getLineGenerator([ "```md", @@ -395,6 +426,119 @@ describe("lineStream", () => { "```", ]); }); + + // Markdown-aware tests + it("should handle markdown files with nested code blocks and a filename is included", async () => { + const linesGenerator = await getLineGenerator([ + "```markdown README.md", + "# Project Structure", + "", + "```", + "debug-test-folder/", + "โ”œโ”€โ”€ AdvancedPage.tsx", + "โ”œโ”€โ”€ Calculator.java", + "โ””โ”€โ”€ test.ts", + "```", + "```", + ]); + + const result = lineStream.filterCodeBlockLines( + linesGenerator, + "README.md", + ); + const filteredLines = await getFilteredLines(result); + + // Should include all content up to the final closing ``` + expect(filteredLines).toEqual([ + "# Project Structure", + "", + "```", + "debug-test-folder/", + "โ”œโ”€โ”€ AdvancedPage.tsx", + "โ”œโ”€โ”€ Calculator.java", + "โ””โ”€โ”€ test.ts", + "```", + ]); + }); + + // Markdown-aware tests + it("should handle markdown files with nested code blocks and a filename is excluded", async () => { + const linesGenerator = await getLineGenerator([ + "```markdown README.md", + "# Project Structure", + "", + "```", + "debug-test-folder/", + "โ”œโ”€โ”€ AdvancedPage.tsx", + "โ”œโ”€โ”€ Calculator.java", + "โ””โ”€โ”€ test.ts", + "```", + "```", + ]); + + const result = lineStream.filterCodeBlockLines(linesGenerator); + const filteredLines = await getFilteredLines(result); + + // Should include all content up to the final closing ``` + expect(filteredLines).toEqual([ + "# Project Structure", + "", + "```", + "debug-test-folder/", + "โ”œโ”€โ”€ AdvancedPage.tsx", + "โ”œโ”€โ”€ Calculator.java", + "โ””โ”€โ”€ test.ts", + "```", + ]); + }); + + it("should handle non-markdown files normally with filepath parameter", async () => { + const linesGenerator = await getLineGenerator([ + "```", + "function test() {", + " return 'hello';", + "}", + "```", + ]); + + const result = lineStream.filterCodeBlockLines(linesGenerator, "test.js"); + const filteredLines = await getFilteredLines(result); + + expect(filteredLines).toEqual([ + "function test() {", + " return 'hello';", + "}", + ]); + }); + + it("should handle simple markdown code blocks", async () => { + const linesGenerator = await getLineGenerator([ + "```", + "Here's some code:", + "```", + "function example() {", + " console.log('test');", + "}", + "```", + ]); + + const result = lineStream.filterCodeBlockLines( + linesGenerator, + "README.md", + ); + const filteredLines = await getFilteredLines(result); + + // Should remove the outer markdown wrapper, and return just the inner content. + // The lack of an end tag should cause it to return all remaining lines. + expect(filteredLines).toEqual([ + "Here's some code:", + "```", + "function example() {", + " console.log('test');", + "}", + "```", + ]); + }); }); describe("filterEnglishLinesAtStart", () => { diff --git a/core/edit/lazy/replace.ts b/core/edit/lazy/replace.ts index 1a5ba704df3..e7ec47dc9f5 100644 --- a/core/edit/lazy/replace.ts +++ b/core/edit/lazy/replace.ts @@ -1,8 +1,5 @@ import { ILLM } from "../.."; -import { - filterLeadingNewline, - stopAtLines, -} from "../../autocomplete/filtering/streamTransforms/lineStream"; +import { filterLeadingNewline } from "../../autocomplete/filtering/streamTransforms/lineStream"; import { streamLines } from "../../diff/util"; import { dedent } from "../../util"; @@ -90,11 +87,18 @@ export async function* getReplacementWithLlm( { role: "assistant", content: assistantPrompt }, ], abortController.signal, + { + raw: true, + prediction: undefined, + reasoning: false, + }, ); let lines = streamLines(completion); lines = filterLeadingNewline(lines); - lines = stopAtLines(lines, () => {}, ["```"]); + // We want to retrive everything from the llm + // then let the filterCodeBlocks function clean up for any trailing text. + // if we stop here early, we run the risk of loosing inner markdown content. for await (const line of lines) { yield line; diff --git a/core/edit/lazy/streamLazyApply.test.ts b/core/edit/lazy/streamLazyApply.test.ts new file mode 100644 index 00000000000..3a829b5f47c --- /dev/null +++ b/core/edit/lazy/streamLazyApply.test.ts @@ -0,0 +1,459 @@ +import { streamLazyApply } from "./streamLazyApply"; + +// Mock LLM for testing +class MockLLM { + model = "claude-3-5-sonnet-20241022"; + providerName = "anthropic"; + + async *streamChat(messages: any[], signal?: AbortSignal) { + // Simulate LLM response for markdown file with nested blocks + const lines = [ + "# Project Structure", + "", + "```markdown README.md", + "# Project Structure", + "", + "```", + ".", + "โ”œโ”€โ”€ src/", + "โ”‚ โ””โ”€โ”€ main.js", + "โ””โ”€โ”€ package.json", + "```", + "```", + ]; + + // Yield each line separately (more realistic streaming) + for (const line of lines) { + yield line; + } + } +} + +class MockJavaScriptLLM { + model = "claude-3-5-sonnet-20241022"; + providerName = "anthropic"; + + async *streamChat(messages: any[], signal?: AbortSignal) { + // Simulate LLM response for JavaScript file + const lines = [ + "function calculateSum(a, b) {", + " return a + b;", + "}", + "", + "function calculateProduct(a, b) {", + " return a * b;", + "}", + ]; + + for (const line of lines) { + yield line; + } + } +} + +class MockPythonLLM { + model = "claude-3-5-sonnet-20241022"; + providerName = "anthropic"; + + async *streamChat(messages: any[], signal?: AbortSignal) { + // Simulate LLM response for Python file + const lines = [ + "def calculate_sum(a, b):", + " return a + b", + "", + "def calculate_product(a, b):", + " return a * b", + ]; + + for (const line of lines) { + yield line; + } + } +} + +class MockWithUnchangedCodeLLM { + model = "claude-3-5-sonnet-20241022"; + providerName = "anthropic"; + + async *streamChat(messages: any[], signal?: AbortSignal) { + // Simulate LLM response with UNCHANGED_CODE markers + const lines = [ + "function newFunction() {", + " return 'new';", + "}", + "", + "// ... unchanged code ...", + "", + "function anotherFunction() {", + " return 'updated';", + "}", + ]; + + for (const line of lines) { + yield line; + } + } +} + +class MockTypeScriptLLM { + model = "claude-3-5-sonnet-20241022"; + providerName = "anthropic"; + + async *streamChat(messages: any[], signal?: AbortSignal) { + const lines = [ + "interface User {", + " id: number;", + " name: string;", + "}", + "", + "function getUser(id: number): User {", + " return { id, name: 'Test User' };", + "}", + ]; + + for (const line of lines) { + yield line; + } + } +} + +class MockEmptyLLM { + model = "claude-3-5-sonnet-20241022"; + providerName = "anthropic"; + + async *streamChat(messages: any[], signal?: AbortSignal) { + // Empty response + return; + } +} + +class MockSimpleLLM { + model = "claude-3-5-sonnet-20241022"; + providerName = "anthropic"; + + async *streamChat(messages: any[], signal?: AbortSignal) { + const lines = ["function test() {", " return true;", "}"]; + for (const line of lines) { + yield line; + } + } +} + +class MockRegularMarkdownLLM { + model = "claude-3-5-sonnet-20241022"; + providerName = "anthropic"; + + async *streamChat(messages: any[], signal?: AbortSignal) { + // Simulate regular markdown with simple code block + const lines = [ + "# Debug Test Folder", + "The sole purpose of this folder is to open it when debugging.", + "", + "## File Structure", + "```", + "debug-test-folder/", + "โ”œโ”€โ”€ AdvancedPage.tsx", + "โ”œโ”€โ”€ Calculator.java", + "โ”œโ”€โ”€ Dockerfile", + "โ””โ”€โ”€ test.ts", + "```", + ]; + + for (const line of lines) { + yield line; + } + } +} + +describe("streamLazyApply", () => { + test("should handle markdown files with nested blocks without stopping early", async () => { + const oldCode = "# Project\n\nBasic readme content."; + const newCode = `# Project Structure + +\`\`\`markdown README.md +# Project Structure + +\`\`\` +. +โ”œโ”€โ”€ src/ +โ”‚ โ””โ”€โ”€ main.js +โ””โ”€โ”€ package.json +\`\`\` +\`\`\``; + const filename = "README.md"; + const llm = new MockLLM() as any; + const abortController = new AbortController(); + + const diffLines = []; + for await (const diffLine of streamLazyApply( + oldCode, + filename, + newCode, + llm, + abortController, + )) { + diffLines.push(diffLine); + } + + // Should have received diff lines (not empty) + expect(diffLines.length).toBeGreaterThan(0); + + // Should contain the nested markdown content + const allContent = diffLines.map((d) => d.line).join("\n"); + expect(allContent).toContain("```markdown README.md"); + expect(allContent).toContain("โ””โ”€โ”€ package.json"); + + // Should not have been truncated at the first ``` + expect(allContent).toContain("src/"); + }); + + test("should handle JavaScript files correctly", async () => { + const oldCode = "function calculateSum(a, b) {\n return a + b;\n}"; + const newCode = `function calculateSum(a, b) { + return a + b; +} + +function calculateProduct(a, b) { + return a * b; +}`; + const filename = "calculator.js"; + const llm = new MockJavaScriptLLM() as any; + const abortController = new AbortController(); + + const diffLines = []; + for await (const diffLine of streamLazyApply( + oldCode, + filename, + newCode, + llm, + abortController, + )) { + diffLines.push(diffLine); + } + + // Should have received diff lines + expect(diffLines.length).toBeGreaterThan(0); + + // Should contain the JavaScript functions + const allContent = diffLines.map((d) => d.line).join("\n"); + expect(allContent).toContain("calculateSum"); + expect(allContent).toContain("calculateProduct"); + }); + + test("should handle Python files correctly", async () => { + const oldCode = "def calculate_sum(a, b):\n return a + b"; + const newCode = `def calculate_sum(a, b): + return a + b + +def calculate_product(a, b): + return a * b`; + const filename = "calculator.py"; + const llm = new MockPythonLLM() as any; + const abortController = new AbortController(); + + const diffLines = []; + for await (const diffLine of streamLazyApply( + oldCode, + filename, + newCode, + llm, + abortController, + )) { + diffLines.push(diffLine); + } + + // Should have received diff lines + expect(diffLines.length).toBeGreaterThan(0); + + // Should contain the Python functions + const allContent = diffLines.map((d) => d.line).join("\n"); + expect(allContent).toContain("calculate_sum"); + expect(allContent).toContain("calculate_product"); + }); + + test("should handle UNCHANGED_CODE markers in responses", async () => { + const oldCode = `function oldFunction() { + return 'old'; +} + +function existingFunction() { + return 'existing'; +}`; + const newCode = `function newFunction() { + return 'new'; +} + +function existingFunction() { + return 'existing'; +} + +function anotherFunction() { + return 'updated'; +}`; + const filename = "example.js"; + const llm = new MockWithUnchangedCodeLLM() as any; + const abortController = new AbortController(); + + const diffLines = []; + for await (const diffLine of streamLazyApply( + oldCode, + filename, + newCode, + llm, + abortController, + )) { + diffLines.push(diffLine); + } + + // Should have received diff lines + expect(diffLines.length).toBeGreaterThan(0); + + // Should contain new and updated functions + const allContent = diffLines.map((d) => d.line).join("\n"); + expect(allContent).toContain("newFunction"); + expect(allContent).toContain("anotherFunction"); + }); + + test("should handle TypeScript files correctly", async () => { + const oldCode = "interface User {\n id: number;\n}"; + const newCode = `interface User { + id: number; + name: string; +} + +function getUser(id: number): User { + return { id, name: 'Test User' }; +}`; + const filename = "user.ts"; + const llm = new MockTypeScriptLLM() as any; + const abortController = new AbortController(); + + const diffLines = []; + for await (const diffLine of streamLazyApply( + oldCode, + filename, + newCode, + llm, + abortController, + )) { + diffLines.push(diffLine); + } + + // Should have received diff lines + expect(diffLines.length).toBeGreaterThan(0); + + // Should contain TypeScript interface and function + const allContent = diffLines.map((d) => d.line).join("\n"); + expect(allContent).toContain("interface User"); + expect(allContent).toContain("getUser"); + expect(allContent).toContain("name: string"); + }); + + test("should work with empty LLM responses", async () => { + const oldCode = "function test() { return 1; }"; + const newCode = "function test() { return 2; }"; + const filename = "test.js"; + const llm = new MockEmptyLLM() as any; + const abortController = new AbortController(); + + const diffLines = []; + for await (const diffLine of streamLazyApply( + oldCode, + filename, + newCode, + llm, + abortController, + )) { + diffLines.push(diffLine); + } + + // Should handle empty response gracefully + expect(diffLines).toBeDefined(); + }); + + test("should correctly identify markdown vs non-markdown files", async () => { + // Test that our isMarkdownFile logic works + const markdownFiles = ["README.md", "docs.markdown", "example.gfm"]; + const nonMarkdownFiles = [ + "script.js", + "code.py", + "style.css", + "component.tsx", + ]; + + // This is more of a unit test, but verifies our file detection logic + // We can test this indirectly by checking that different file types + // are processed through different code paths + + const oldCode = "function test() { return false; }"; + const newCode = "function test() { return true; }"; + const llm = new MockSimpleLLM() as any; + + // Test each file type + for (const filename of [...markdownFiles, ...nonMarkdownFiles]) { + const abortController = new AbortController(); + const diffLines = []; + + for await (const diffLine of streamLazyApply( + oldCode, + filename, + newCode, + llm, + abortController, + )) { + diffLines.push(diffLine); + } + + // Should work for all file types + expect(diffLines.length).toBeGreaterThan(0); + + const allContent = diffLines.map((d) => d.line).join("\n"); + expect(allContent).toContain("test"); + } + }); + + test("should handle regular markdown files with simple code blocks", async () => { + const oldCode = "# Old Content"; + const newCode = `# Debug Test Folder +The sole purpose of this folder is to open it when debugging. + +## File Structure +\`\`\` +debug-test-folder/ +โ”œโ”€โ”€ AdvancedPage.tsx +โ”œโ”€โ”€ Calculator.java +โ”œโ”€โ”€ Dockerfile +โ””โ”€โ”€ test.ts +\`\`\``; + + const filename = "README.md"; + const llm = new MockRegularMarkdownLLM() as any; + const abortController = new AbortController(); + + const diffLines = []; + for await (const diffLine of streamLazyApply( + oldCode, + filename, + newCode, + llm, + abortController, + )) { + diffLines.push(diffLine); + } + + // Should have received diff lines (not empty) + expect(diffLines.length).toBeGreaterThan(0); + + // Should contain the full file structure + const allContent = diffLines.map((d) => d.line).join("\n"); + expect(allContent).toContain("Debug Test Folder"); + expect(allContent).toContain("File Structure"); + expect(allContent).toContain("debug-test-folder/"); + expect(allContent).toContain("โ”œโ”€โ”€ AdvancedPage.tsx"); + expect(allContent).toContain("โ””โ”€โ”€ test.ts"); + + // Should not have been truncated at the opening ``` + expect(allContent).toContain("Calculator.java"); + expect(allContent).toContain("Dockerfile"); + }); +}); diff --git a/core/edit/lazy/streamLazyApply.ts b/core/edit/lazy/streamLazyApply.ts index f8ec0905c69..1186ca6dee8 100644 --- a/core/edit/lazy/streamLazyApply.ts +++ b/core/edit/lazy/streamLazyApply.ts @@ -2,7 +2,6 @@ import { filterLeadingAndTrailingNewLineInsertion, filterLeadingNewline, removeTrailingWhitespace, - stopAtLines, } from "../../autocomplete/filtering/streamTransforms/lineStream.js"; import { streamDiff } from "../../diff/streamDiff.js"; import { LineStream, streamLines } from "../../diff/util.js"; @@ -11,6 +10,102 @@ import { DiffLine, ILLM } from "../../index.js"; import { lazyApplyPromptForModel, UNCHANGED_CODE } from "./prompts.js"; import { BUFFER_LINES_BELOW, getReplacementWithLlm } from "./replace.js"; +function headerIsMarkdown(header: string): boolean { + return ( + header === "md" || + header === "markdown" || + header === "gfm" || + header === "github-markdown" || + header.includes(" md") || + header.includes(" markdown") || + header.includes(" gfm") || + header.includes(" github-markdown") || + header.split(" ")[0]?.split(".").pop() === "md" || + header.split(" ")[0]?.split(".").pop() === "markdown" || + header.split(" ")[0]?.split(".").pop() === "gfm" + ); +} + +function isMarkdownFile(filename: string): boolean { + const ext = filename.split(".").pop()?.toLowerCase(); + return ["md", "markdown", "gfm"].includes(ext || ""); +} + +async function* stopAtLinesWithMarkdownSupport( + lines: LineStream, + filename: string, +): LineStream { + if (!isMarkdownFile(filename)) { + for await (const line of lines) { + if (line.trim() === "```") { + return; + } + yield line; + } + return; + } + + const allLines: string[] = []; + for await (const line of lines) { + allLines.push(line); + } + + const source = allLines.join("\n"); + if (!source.match(/```(\w*|.*)(md|markdown|gfm|github-markdown)/)) { + for (let i = 0; i < allLines.length; i++) { + if (allLines[i].trim() === "```") { + for (let j = 0; j < i; j++) { + yield allLines[j]; + } + return; + } + yield allLines[i]; + } + return; + } + + let nestCount = 0; + const trimmedLines = allLines.map((l) => l.trim()); + + for (let i = 0; i < trimmedLines.length; i++) { + const line = trimmedLines[i]; + + if (nestCount > 0) { + if (line.match(/^`+$/)) { + let remainingBareBackticks = 0; + for (let j = i + 1; j < trimmedLines.length; j++) { + if (trimmedLines[j].match(/^`+$/)) { + remainingBareBackticks++; + } + } + + if (remainingBareBackticks === 0) { + nestCount = 0; + for (let j = 0; j < i; j++) { + yield allLines[j]; + } + return; + } + } else if (line.startsWith("```")) { + nestCount++; + } + } else { + if (line.startsWith("```")) { + const header = line.replaceAll("`", ""); + const isMarkdown = headerIsMarkdown(header); + + if (isMarkdown) { + nestCount = 1; + } + } + } + } + + for (const line of allLines) { + yield line; + } +} + export async function* streamLazyApply( oldCode: string, filename: string, @@ -26,7 +121,6 @@ export async function* streamLazyApply( const promptMessages = promptFactory(oldCode, filename, newCode); const lazyCompletion = llm.streamChat(promptMessages, abortController.signal); - // Do find and replace over the lazy edit response async function* replacementFunction( oldCode: string, linesBefore: string[], @@ -44,20 +138,21 @@ export async function* streamLazyApply( } let lazyCompletionLines = streamLines(lazyCompletion, true); - // Process line output - // lazyCompletionLines = filterEnglishLinesAtStart(lazyCompletionLines); - lazyCompletionLines = stopAtLines(lazyCompletionLines, () => {}, ["```"]); + + lazyCompletionLines = stopAtLinesWithMarkdownSupport( + lazyCompletionLines, + filename, + ); + lazyCompletionLines = filterLeadingNewline(lazyCompletionLines); lazyCompletionLines = removeTrailingWhitespace(lazyCompletionLines); - // Fill in unchanged code let lines = streamFillUnchangedCode( lazyCompletionLines, oldCode, replacementFunction, ); - // Convert output to diff const oldLines = oldCode.split(/\r?\n/); let diffLines = streamDiff(oldLines, lines); diffLines = filterLeadingAndTrailingNewLineInsertion(diffLines); @@ -78,13 +173,11 @@ async function* streamFillUnchangedCode( const newLines = []; let buffer = []; let waitingForBuffer = false; - for await (const line of lines) { if (waitingForBuffer) { buffer.push(line); if (buffer.length >= BUFFER_LINES_BELOW) { - // Find the replacement and continue streaming once we have it const replacementLines = replacementFunction(oldCode, newLines, buffer); let replacement = ""; for await (const replacementLine of replacementLines) { @@ -92,8 +185,6 @@ async function* streamFillUnchangedCode( newLines.push(replacementLine); replacement += replacementLine + "\n"; } - - // Yield the buffered lines for (const bufferedLine of buffer) { yield bufferedLine; newLines.push(bufferedLine); @@ -108,9 +199,7 @@ async function* streamFillUnchangedCode( } if (line.includes(UNCHANGED_CODE)) { - // Buffer so we can give the context of BUFFER_LINES_BELOW lines below waitingForBuffer = true; - // TODO: If the UNCHANGED CODE is at the very top of the file we need to handle a bit differently } else { yield line; newLines.push(line); @@ -118,14 +207,11 @@ async function* streamFillUnchangedCode( } if (waitingForBuffer) { - // If we're still waiting for a buffer, we've reached the end of the stream - // and we should just look for the replacement with what we have const replacementLines = replacementFunction(oldCode, newLines, buffer); for await (const replacementLine of replacementLines) { yield replacementLine; newLines.push(replacementLine); } - // Yield the buffered lines for (const bufferedLine of buffer) { yield bufferedLine; newLines.push(bufferedLine); diff --git a/core/edit/recursiveStream.ts b/core/edit/recursiveStream.ts index 004563cdb42..d249755f4ac 100644 --- a/core/edit/recursiveStream.ts +++ b/core/edit/recursiveStream.ts @@ -63,7 +63,8 @@ export async function* recursiveStream( } } else { const generator = llm.streamChat(prompt, abortController.signal, { - prediction, + raw: true, + prediction: undefined, reasoning: false, }); diff --git a/gui/src/components/StyledMarkdownPreview/utils/isOpeningNestedBlock.test.ts b/gui/src/components/StyledMarkdownPreview/utils/isOpeningNestedBlock.test.ts deleted file mode 100644 index e5eb02f0cc7..00000000000 --- a/gui/src/components/StyledMarkdownPreview/utils/isOpeningNestedBlock.test.ts +++ /dev/null @@ -1,157 +0,0 @@ -import { expect, test } from "vitest"; -import { isOpeningNestedBlock } from "./isOpeningNestedBlock"; - -test("isOpeningNestedBlock should return true when odd number of bare backticks ahead", () => { - const trimmedLines = [ - "```markdown", - "# Header", - - "```", // <- index 2: should be opening (1 ``` ahead = odd) - "content", - - "```", // <- index 4: closing (0 ``` ahead = even) - ]; - - expect(isOpeningNestedBlock(trimmedLines, 2, 1)).toBe(true); - expect(isOpeningNestedBlock(trimmedLines, 4, 2)).toBe(false); -}); - -test("isOpeningNestedBlock should return false when even number (zero) of bare backticks ahead", () => { - const trimmedLines = [ - "```markdown", - "# Header", - - "```", // <- index 2: should be closing (0 ``` ahead = even) - ]; - - expect(isOpeningNestedBlock(trimmedLines, 2, 1)).toBe(false); -}); - -test("isOpeningNestedBlock should handle multiple nested pairs", () => { - const trimmedLines = [ - "```markdown", - "# Header", - - "```", // <- index 2: opening (3 ``` ahead = odd) - "```", // <- index 3: opening (2 ``` ahead = even) -> should be false - "content", - - "```", // <- index 5: closing (1 ``` ahead = odd) -> should be true - "```", // <- index 6: closing (0 ``` ahead = even) -> should be false - ]; - - expect(isOpeningNestedBlock(trimmedLines, 2, 1)).toBe(true); // 3 ahead = odd - expect(isOpeningNestedBlock(trimmedLines, 3, 2)).toBe(false); // 2 ahead = even - expect(isOpeningNestedBlock(trimmedLines, 5, 2)).toBe(true); // 1 ahead = odd - expect(isOpeningNestedBlock(trimmedLines, 6, 1)).toBe(false); // 0 ahead = even -}); - -test("isOpeningNestedBlock should return false when reaching end of markdown block via ~~~", () => { - const trimmedLines = [ - "```markdown", - "# Header", - - "```", // <- index 2: should be closing since ~~~ terminates the block - "content", - - "~~~", // <- terminator stops counting - "```", // <- this one is after the markdown block ends - ]; - - expect(isOpeningNestedBlock(trimmedLines, 2, 1)).toBe(false); -}); - -test("isOpeningNestedBlock should return false when reaching new markdown block", () => { - const trimmedLines = [ - "```markdown", - "# Header", - - "```", // <- index 2: should be closing since new markdown block starts - "content", - - "```md", // <- new markdown block terminates counting - "```", // <- this one belongs to the new block - ]; - - expect(isOpeningNestedBlock(trimmedLines, 2, 1)).toBe(false); -}); - -test("isOpeningNestedBlock should handle empty content between backticks", () => { - const trimmedLines = [ - "```markdown", - - "```", // <- index 1: opening (1 ``` ahead = odd) - "", - - "```", // <- index 3: closing (0 ``` ahead = even) - ]; - - expect(isOpeningNestedBlock(trimmedLines, 1, 1)).toBe(true); - expect(isOpeningNestedBlock(trimmedLines, 3, 2)).toBe(false); -}); - -test("isOpeningNestedBlock should handle case where currentIndex is last line", () => { - const trimmedLines = [ - "```markdown", - "# Header", - - "```", // <- index 2: last line, should be closing (0 ahead = even) - ]; - - expect(isOpeningNestedBlock(trimmedLines, 2, 1)).toBe(false); -}); - -test("isOpeningNestedBlock should not be confused by backticks in content", () => { - const trimmedLines = [ - "```markdown", - "Some `code` with backticks", - - "```", // <- index 2: should be closing (0 bare ``` ahead = even) - ]; - - expect(isOpeningNestedBlock(trimmedLines, 2, 1)).toBe(false); -}); - -test("isOpeningNestedBlock should handle GitHub markdown variants as terminators", () => { - const trimmedLines = [ - "```markdown", - "# Header", - - "```", // <- index 2: should be closing (terminator stops counting) - "content", - - "```gfm", // <- GitHub markdown variant starts new block - "```", - ]; - - expect(isOpeningNestedBlock(trimmedLines, 2, 1)).toBe(false); -}); - -test("isOpeningNestedBlock should only check terminators at nest level 1", () => { - const trimmedLines = [ - "```markdown", - - "```", // <- index 1: at nest level 1, ~~~ should terminate counting - "~~~", // <- terminator found, stops counting - "```", // <- this doesn't count towards the logic - ]; - - expect(isOpeningNestedBlock(trimmedLines, 1, 1)).toBe(false); -}); - -test("isOpeningNestedBlock should handle complex realistic markdown structure", () => { - const trimmedLines = [ - "```markdown README.md", - "# Project Structure", - "", - "```", // <- index 3: has 2 ``` ahead (even), so should be closing - ".", - "โ”‚ โ””โ”€โ”€ file.ts", - "```", // <- index 7: has 1 ``` ahead (odd), so should be opening - "```", // <- index 8: has 0 ``` ahead (even), so should be closing - ]; - - expect(isOpeningNestedBlock(trimmedLines, 3, 1)).toBe(false); // 2 ahead = even - expect(isOpeningNestedBlock(trimmedLines, 7, 2)).toBe(true); // 1 ahead = odd - expect(isOpeningNestedBlock(trimmedLines, 8, 1)).toBe(false); // 0 ahead = even -}); diff --git a/gui/src/components/StyledMarkdownPreview/utils/isOpeningNestedBlock.ts b/gui/src/components/StyledMarkdownPreview/utils/isOpeningNestedBlock.ts deleted file mode 100644 index 8327ed219b0..00000000000 --- a/gui/src/components/StyledMarkdownPreview/utils/isOpeningNestedBlock.ts +++ /dev/null @@ -1,66 +0,0 @@ -import { headerIsMarkdown } from "./headerIsMarkdown"; - -/** - * Determines if a line with bare backticks (```) should be treated as opening - * a nested code block rather than closing the current block. - * - * Uses look-ahead to check if there are more bare backtick lines ahead, - * which would indicate this is opening a nested block. - * - * @param trimmedLines - Array of trimmed lines from the source - * @param currentIndex - Index of the current line with bare backticks - * @param nestCount - Current nesting level - * @returns true if this should open a nested block, false if it should close - */ -export function isOpeningNestedBlock( - trimmedLines: string[], - currentIndex: number, - nestCount: number, -): boolean { - // Simulate what would happen if we continue processing from this point - // Count how many blocks would need to be closed vs opened - - let simulatedNestCount = nestCount; - let bareBackticksAhead = 0; - - for (let j = currentIndex + 1; j < trimmedLines.length; j++) { - const line = trimmedLines[j]; - - // Count bare backticks lines - if (line.match(/^`+$/)) { - bareBackticksAhead++; - } else if (line.startsWith("```")) { - // Non-bare backticks (with language/type) always open - simulatedNestCount++; - } - - // Stop looking if we hit what appears to be the end of current markdown block - if (nestCount === 1) { - // At top level of markdown block - check for block terminators - if ( - line.startsWith("~~~") || - (line.startsWith("```") && headerIsMarkdown(line.replaceAll("`", ""))) - ) { - break; - } - } - } - - // The key insight: if we need the current backticks to close to get back to nestCount=1, - // and there are more bare backticks ahead than what we'd need to close everything, - // then this should open - - if (nestCount > 1) { - // We're deeply nested, usually should close - return bareBackticksAhead > nestCount - 1; - } - - // At top level (nestCount === 1), if there are exactly 2 ahead and we're at top level, - // this suggests: current=open, first_ahead=close, second_ahead=close_markdown - if (nestCount === 1 && bareBackticksAhead === 2) { - return true; - } - - // Default to the original logic - return bareBackticksAhead % 2 === 1; -} diff --git a/gui/src/components/StyledMarkdownPreview/utils/patchNestedMarkdown.ts b/gui/src/components/StyledMarkdownPreview/utils/patchNestedMarkdown.ts index 30bd8fa1f0a..224ed18bf02 100644 --- a/gui/src/components/StyledMarkdownPreview/utils/patchNestedMarkdown.ts +++ b/gui/src/components/StyledMarkdownPreview/utils/patchNestedMarkdown.ts @@ -8,7 +8,6 @@ Note, this was benchmarked at sub-millisecond */ import { headerIsMarkdown } from "./headerIsMarkdown"; -import { isOpeningNestedBlock } from "./isOpeningNestedBlock"; export const patchNestedMarkdown = (source: string): string => { // Early return if no markdown codeblock pattern is found (including GitHub variants) @@ -25,19 +24,23 @@ export const patchNestedMarkdown = (source: string): string => { if (nestCount > 0) { // Inside a markdown block if (line.match(/^`+$/)) { - // Found bare backticks - determine if opening or closing - if (isOpeningNestedBlock(trimmedLines, i, nestCount)) { - // Opening a nested codeblock - nestCount++; - } else { - // Closing a block - nestCount--; - if (nestCount === 0) { - lines[i] = "~~~"; // End of markdown block + // Found bare backticks + // Count how many bare backticks are remaining after this one + let remainingBareBackticks = 0; + for (let j = i + 1; j < trimmedLines.length; j++) { + if (trimmedLines[j].match(/^`+$/)) { + remainingBareBackticks++; } } + + // If this is the last bare backticks, it closes the markdown block + if (remainingBareBackticks === 0) { + nestCount = 0; + lines[i] = "~~~"; // Convert final closing delimiter to tildes + } + // Otherwise, keep as backticks (inner nested block delimiter) } else if (line.startsWith("```")) { - // Going into a nested codeblock + // Going into a nested codeblock (with language identifier) nestCount++; } } else { From 370b68ca1a12b777df43c7d5bf02207018f7e9d3 Mon Sep 17 00:00:00 2001 From: chezsmithy Date: Mon, 30 Jun 2025 17:58:29 -0700 Subject: [PATCH 35/97] linting fixes --- .../filtering/streamTransforms/lineStream.ts | 185 +++++++++------ .../streamTransforms/lineStream.vitest.ts | 213 ++++++++++++++++++ 2 files changed, 335 insertions(+), 63 deletions(-) diff --git a/core/autocomplete/filtering/streamTransforms/lineStream.ts b/core/autocomplete/filtering/streamTransforms/lineStream.ts index eabfca5a75f..b603bc9ea87 100644 --- a/core/autocomplete/filtering/streamTransforms/lineStream.ts +++ b/core/autocomplete/filtering/streamTransforms/lineStream.ts @@ -88,6 +88,118 @@ function isUselessLine(line: string): boolean { return hasUselessLine || trimmed.startsWith("// end"); } +/** + * Determines if a file is a markdown file based on its filepath. + */ +export function isMarkdownFile(filepath?: string): boolean { + if (!filepath) { + return false; + } + + return ["md", "markdown", "gfm"].includes( + filepath.split(".").pop()?.toLowerCase() || "", + ); +} + +/** + * Determines if the code block has nested markdown blocks. + */ +export function hasNestedMarkdownBlocks( + firstLine: string, + filepath?: string, +): boolean { + return ( + (firstLine.startsWith("```") && + headerIsMarkdown(firstLine.replace(/`/g, ""))) || + Boolean(filepath && headerIsMarkdown(filepath)) + ); +} + +/** + * Collects all lines from a LineStream into an array for analysis. + */ +export async function collectAllLines(rawLines: LineStream): Promise { + const allLines: string[] = []; + for await (const line of rawLines) { + allLines.push(line); + } + return allLines; +} + +/** + * Determines if we should stop at a markdown block based on nested markdown logic. + * This handles the complex case where markdown blocks contain other markdown blocks. + */ +export function shouldStopAtMarkdownBlock( + allLines: string[], + currentIndex: number, + hasNestedMarkdown: boolean, +): boolean { + if (!hasNestedMarkdown || allLines[currentIndex].trim() !== "```") { + return false; + } + + // Apply the same nested markdown logic as patchNestedMarkdown + const trimmedLines = allLines.map((l) => l.trim()); + let markdownNestCount = 0; + let shouldStop = false; + + for (let j = 0; j <= currentIndex; j++) { + const currentLine = trimmedLines[j]; + + if (markdownNestCount > 0) { + // Inside a markdown block + if (currentLine.match(/^`+$/)) { + // Found bare backticks - count remaining ones + let remainingBareBackticks = 0; + for (let k = j + 1; k < trimmedLines.length; k++) { + if (trimmedLines[k].match(/^`+$/)) { + remainingBareBackticks++; + } + } + + // If this is the last bare backticks and we're at position currentIndex, stop + if (remainingBareBackticks === 0 && j === currentIndex) { + markdownNestCount = 0; + shouldStop = true; + break; + } + } else if (currentLine.startsWith("```")) { + // Going into a nested codeblock + markdownNestCount++; + } + } else { + // Not inside a markdown block yet + if (currentLine.startsWith("```")) { + const header = currentLine.replaceAll("`", ""); + if (headerIsMarkdown(header)) { + markdownNestCount = 1; + } + } + } + } + + return shouldStop; +} + +/** + * Processes block nesting logic and returns updated state. + */ +export function processBlockNesting( + line: string, + seenFirstFence: boolean, +): { newSeenFirstFence: boolean; shouldSkip: boolean } { + if (!seenFirstFence && shouldRemoveLineBeforeStart(line)) { + return { newSeenFirstFence: false, shouldSkip: true }; + } + + if (!seenFirstFence) { + return { newSeenFirstFence: true, shouldSkip: false }; + } + + return { newSeenFirstFence: seenFirstFence, shouldSkip: false }; +} + export const USELESS_LINES = [""]; export const CODE_KEYWORDS_ENDING_IN_SEMICOLON = ["def"]; export const CODE_STOP_BLOCK = "[/CODE]"; @@ -372,34 +484,22 @@ export async function* filterCodeBlockLines( // when all blocks are matched. When no outer fence is discovered the function will always continue to the end. let nestCount = 0; - // Check if this is a markdown file and collect lines for analysis - const isMarkdownFile = - filepath && - ["md", "markdown", "gfm"].includes( - filepath.split(".").pop()?.toLowerCase() || "", - ); - - const allLines: string[] = []; - for await (const line of rawLines) { - allLines.push(line); - } + // Collect all lines for analysis + const allLines = await collectAllLines(rawLines); // Check if it has nested markdown blocks (like ```markdown or ```md) const firstLine = allLines[0] || ""; - const hasNestedMarkdown = - (firstLine.startsWith("```") && - headerIsMarkdown(firstLine.replace(/`/g, ""))) || - (filepath && headerIsMarkdown(filepath)); + const hasNestedMarkdown = hasNestedMarkdownBlocks(firstLine, filepath); for (let i = 0; i < allLines.length; i++) { const line = allLines[i]; - if (!seenFirstFence) { - if (shouldRemoveLineBeforeStart(line)) { - // Filter out starting ``` or START block - continue; - } - // Regardless of a fence or START block start tracking the nesting level + // Process block nesting logic for the first fence + const nesting = processBlockNesting(line, seenFirstFence); + if (nesting.shouldSkip) { + continue; // Filter out starting ``` or START block + } + if (!seenFirstFence && nesting.newSeenFirstFence) { seenFirstFence = true; nestCount = 1; } @@ -412,48 +512,7 @@ export async function* filterCodeBlockLines( // For markdown files with nested markdown blocks, apply special logic if (hasNestedMarkdown && line.trim() === "```") { - // Apply the same nested markdown logic as patchNestedMarkdown - const trimmedLines = allLines.map((l) => l.trim()); - - let markdownNestCount = 0; - let shouldStop = false; - - for (let j = 0; j <= i; j++) { - const currentLine = trimmedLines[j]; - - if (markdownNestCount > 0) { - // Inside a markdown block - if (currentLine.match(/^`+$/)) { - // Found bare backticks - count remaining ones - let remainingBareBackticks = 0; - for (let k = j + 1; k < trimmedLines.length; k++) { - if (trimmedLines[k].match(/^`+$/)) { - remainingBareBackticks++; - } - } - - // If this is the last bare backticks and we're at position i, stop - if (remainingBareBackticks === 0 && j === i) { - markdownNestCount = 0; - shouldStop = true; - break; - } - } else if (currentLine.startsWith("```")) { - // Going into a nested codeblock - markdownNestCount++; - } - } else { - // Not inside a markdown block yet - if (currentLine.startsWith("```")) { - const header = currentLine.replaceAll("`", ""); - if (headerIsMarkdown(header)) { - markdownNestCount = 1; - } - } - } - } - - if (shouldStop) { + if (shouldStopAtMarkdownBlock(allLines, i, hasNestedMarkdown)) { return; // Stop without yielding the final closing ``` } else { // This is an inner block delimiter, yield it as content diff --git a/core/autocomplete/filtering/streamTransforms/lineStream.vitest.ts b/core/autocomplete/filtering/streamTransforms/lineStream.vitest.ts index f68447c3910..c37e853b552 100644 --- a/core/autocomplete/filtering/streamTransforms/lineStream.vitest.ts +++ b/core/autocomplete/filtering/streamTransforms/lineStream.vitest.ts @@ -757,4 +757,217 @@ describe("lineStream", () => { expect(mockFullStop).toHaveBeenCalledTimes(1); }); }); + + // Tests for new helper functions + describe("isMarkdownFile", () => { + it("should return true for markdown file extensions", () => { + expect(lineStream.isMarkdownFile("README.md")).toBe(true); + expect(lineStream.isMarkdownFile("docs.markdown")).toBe(true); + expect(lineStream.isMarkdownFile("notes.gfm")).toBe(true); + expect(lineStream.isMarkdownFile("path/to/file.md")).toBe(true); + }); + + it("should return false for non-markdown file extensions", () => { + expect(lineStream.isMarkdownFile("script.js")).toBe(false); + expect(lineStream.isMarkdownFile("styles.css")).toBe(false); + expect(lineStream.isMarkdownFile("document.txt")).toBe(false); + expect(lineStream.isMarkdownFile("config.json")).toBe(false); + }); + + it("should return false for undefined or empty filepath", () => { + expect(lineStream.isMarkdownFile(undefined)).toBe(false); + expect(lineStream.isMarkdownFile("")).toBe(false); + }); + + it("should handle case insensitive extensions", () => { + expect(lineStream.isMarkdownFile("README.MD")).toBe(true); + expect(lineStream.isMarkdownFile("docs.MARKDOWN")).toBe(true); + expect(lineStream.isMarkdownFile("notes.GFM")).toBe(true); + }); + }); + + describe("hasNestedMarkdownBlocks", () => { + it("should detect nested markdown blocks from first line", () => { + expect(lineStream.hasNestedMarkdownBlocks("```markdown", undefined)).toBe( + true, + ); + expect(lineStream.hasNestedMarkdownBlocks("```md", undefined)).toBe(true); + expect(lineStream.hasNestedMarkdownBlocks("```gfm", undefined)).toBe( + true, + ); + }); + + it("should detect nested markdown blocks from filepath", () => { + expect( + lineStream.hasNestedMarkdownBlocks("```typescript", "README.md"), + ).toBe(true); + expect( + lineStream.hasNestedMarkdownBlocks("```javascript", "docs.markdown"), + ).toBe(true); + }); + + it("should return false for non-markdown scenarios", () => { + expect( + lineStream.hasNestedMarkdownBlocks("```typescript", "script.js"), + ).toBe(false); + expect(lineStream.hasNestedMarkdownBlocks("```python", undefined)).toBe( + false, + ); + expect( + lineStream.hasNestedMarkdownBlocks("const x = 5;", undefined), + ).toBe(false); + }); + + it("should handle complex first line scenarios", () => { + expect( + lineStream.hasNestedMarkdownBlocks("```markdown README.md", undefined), + ).toBe(true); + expect( + lineStream.hasNestedMarkdownBlocks("```md with extra text", undefined), + ).toBe(true); + }); + }); + + describe("collectAllLines", () => { + it("should collect all lines from a stream", async () => { + const linesGenerator = await getLineGenerator([ + "line1", + "line2", + "line3", + ]); + + const result = await lineStream.collectAllLines(linesGenerator); + + expect(result).toEqual(["line1", "line2", "line3"]); + }); + + it("should handle empty stream", async () => { + const linesGenerator = await getLineGenerator([]); + + const result = await lineStream.collectAllLines(linesGenerator); + + expect(result).toEqual([]); + }); + + it("should handle stream with empty lines", async () => { + const linesGenerator = await getLineGenerator(["", "line2", "", "line4"]); + + const result = await lineStream.collectAllLines(linesGenerator); + + expect(result).toEqual(["", "line2", "", "line4"]); + }); + }); + + describe("shouldStopAtMarkdownBlock", () => { + it("should return false when hasNestedMarkdown is false", () => { + const allLines = ["```markdown", "content", "```"]; + expect(lineStream.shouldStopAtMarkdownBlock(allLines, 2, false)).toBe( + false, + ); + }); + + it("should return false when current line is not closing backticks", () => { + const allLines = ["```markdown", "content", "more content"]; + expect(lineStream.shouldStopAtMarkdownBlock(allLines, 2, true)).toBe( + false, + ); + }); + + it("should handle simple nested markdown case", () => { + const allLines = ["```markdown", "# Title", "```"]; + expect(lineStream.shouldStopAtMarkdownBlock(allLines, 2, true)).toBe( + true, + ); + }); + + it("should handle complex nested markdown with inner code blocks", () => { + const allLines = [ + "```markdown", + "# Title", + "```javascript", + "console.log('hello');", + "```", + "```", + ]; + // At index 4 (first inner closing), should not stop + expect(lineStream.shouldStopAtMarkdownBlock(allLines, 4, true)).toBe( + false, + ); + // At index 5 (outer closing), should stop + expect(lineStream.shouldStopAtMarkdownBlock(allLines, 5, true)).toBe( + true, + ); + }); + + it("should handle multiple bare backticks scenario", () => { + const allLines = [ + "```markdown", + "Content with ```inline code```", + "```", + "More content", + "```", + ]; + // At index 2, should not stop (not the last bare backticks) + expect(lineStream.shouldStopAtMarkdownBlock(allLines, 2, true)).toBe( + false, + ); + // At index 4, should stop (last bare backticks) + expect(lineStream.shouldStopAtMarkdownBlock(allLines, 4, true)).toBe( + true, + ); + }); + }); + + describe("processBlockNesting", () => { + it("should skip lines that should be removed before start", () => { + const result = lineStream.processBlockNesting("```typescript", false); + expect(result).toEqual({ + newSeenFirstFence: false, + shouldSkip: true, + }); + }); + + it("should skip [CODE] blocks", () => { + const result = lineStream.processBlockNesting("[CODE]", false); + expect(result).toEqual({ + newSeenFirstFence: false, + shouldSkip: true, + }); + }); + + it("should set first fence when not seen yet", () => { + const result = lineStream.processBlockNesting("const x = 5;", false); + expect(result).toEqual({ + newSeenFirstFence: true, + shouldSkip: false, + }); + }); + + it("should not change state when first fence already seen", () => { + const result = lineStream.processBlockNesting("const x = 5;", true); + expect(result).toEqual({ + newSeenFirstFence: true, + shouldSkip: false, + }); + }); + + it("should handle prefix", () => { + const result = lineStream.processBlockNesting("", false); + expect(result).toEqual({ + newSeenFirstFence: false, + shouldSkip: true, + }); + }); + + it("should handle START EDITING HERE blocks", () => { + const result = lineStream.processBlockNesting( + "", + false, + ); + expect(result).toEqual({ + newSeenFirstFence: false, + shouldSkip: true, + }); + }); + }); }); From 49cf77997cfab9eccb0012a66f967f2684d762c4 Mon Sep 17 00:00:00 2001 From: chezsmithy Date: Mon, 30 Jun 2025 22:02:36 -0700 Subject: [PATCH 36/97] performance enhancements --- .../filtering/streamTransforms/lineStream.ts | 123 ++++++---- .../streamTransforms/lineStream.vitest.ts | 228 ++++++++++++++++-- 2 files changed, 281 insertions(+), 70 deletions(-) diff --git a/core/autocomplete/filtering/streamTransforms/lineStream.ts b/core/autocomplete/filtering/streamTransforms/lineStream.ts index b603bc9ea87..b36d3e3a42e 100644 --- a/core/autocomplete/filtering/streamTransforms/lineStream.ts +++ b/core/autocomplete/filtering/streamTransforms/lineStream.ts @@ -127,59 +127,82 @@ export async function collectAllLines(rawLines: LineStream): Promise { } /** - * Determines if we should stop at a markdown block based on nested markdown logic. - * This handles the complex case where markdown blocks contain other markdown blocks. + * State tracker for markdown block analysis to avoid recomputing on each call. */ -export function shouldStopAtMarkdownBlock( - allLines: string[], - currentIndex: number, - hasNestedMarkdown: boolean, -): boolean { - if (!hasNestedMarkdown || allLines[currentIndex].trim() !== "```") { - return false; +export class MarkdownBlockState { + private trimmedLines: string[]; + private bareBacktickPositions: number[]; + private markdownNestCount: number = 0; + private lastProcessedIndex: number = -1; + + constructor(allLines: string[]) { + this.trimmedLines = allLines.map((l) => l.trim()); + // Pre-compute positions of all bare backtick lines for faster lookup + this.bareBacktickPositions = []; + for (let i = 0; i < this.trimmedLines.length; i++) { + if (this.trimmedLines[i].match(/^`+$/)) { + this.bareBacktickPositions.push(i); + } + } } - // Apply the same nested markdown logic as patchNestedMarkdown - const trimmedLines = allLines.map((l) => l.trim()); - let markdownNestCount = 0; - let shouldStop = false; - - for (let j = 0; j <= currentIndex; j++) { - const currentLine = trimmedLines[j]; - - if (markdownNestCount > 0) { - // Inside a markdown block - if (currentLine.match(/^`+$/)) { - // Found bare backticks - count remaining ones - let remainingBareBackticks = 0; - for (let k = j + 1; k < trimmedLines.length; k++) { - if (trimmedLines[k].match(/^`+$/)) { - remainingBareBackticks++; - } - } + /** + * Determines if we should stop at the given markdown block position. + * Maintains state across calls to avoid redundant computation. + */ + shouldStopAtPosition(currentIndex: number): boolean { + if (this.trimmedLines[currentIndex] !== "```") { + return false; + } - // If this is the last bare backticks and we're at position currentIndex, stop - if (remainingBareBackticks === 0 && j === currentIndex) { - markdownNestCount = 0; - shouldStop = true; - break; + // Process any lines we haven't seen yet up to currentIndex + for (let j = this.lastProcessedIndex + 1; j <= currentIndex; j++) { + const currentLine = this.trimmedLines[j]; + + if (this.markdownNestCount > 0) { + // Inside a markdown block + if (currentLine.match(/^`+$/)) { + // Found bare backticks - check if this is the last one + if (j === currentIndex) { + const remainingBareBackticks = this.bareBacktickPositions.filter( + (pos) => pos > j, + ).length; + if (remainingBareBackticks === 0) { + this.markdownNestCount = 0; + this.lastProcessedIndex = j; + return true; + } + } + } else if (currentLine.startsWith("```")) { + // Going into a nested codeblock + this.markdownNestCount++; } - } else if (currentLine.startsWith("```")) { - // Going into a nested codeblock - markdownNestCount++; - } - } else { - // Not inside a markdown block yet - if (currentLine.startsWith("```")) { - const header = currentLine.replaceAll("`", ""); - if (headerIsMarkdown(header)) { - markdownNestCount = 1; + } else { + // Not inside a markdown block yet + if (currentLine.startsWith("```")) { + const header = currentLine.replaceAll("`", ""); + if (headerIsMarkdown(header)) { + this.markdownNestCount = 1; + } } } } + + this.lastProcessedIndex = currentIndex; + return false; } +} - return shouldStop; +/** + * Determines if we should stop at a markdown block based on nested markdown logic. + * This handles the complex case where markdown blocks contain other markdown blocks. + * Uses optimized state tracking to avoid redundant computation. + */ +export function shouldStopAtMarkdownBlock( + stateTracker: MarkdownBlockState, + currentIndex: number, +): boolean { + return stateTracker.shouldStopAtPosition(currentIndex); } /** @@ -491,6 +514,12 @@ export async function* filterCodeBlockLines( const firstLine = allLines[0] || ""; const hasNestedMarkdown = hasNestedMarkdownBlocks(firstLine, filepath); + // Create optimized state tracker for markdown block analysis if needed + let markdownStateTracker: MarkdownBlockState | undefined; + if (hasNestedMarkdown) { + markdownStateTracker = new MarkdownBlockState(allLines); + } + for (let i = 0; i < allLines.length; i++) { const line = allLines[i]; @@ -511,8 +540,12 @@ export async function* filterCodeBlockLines( // Ending a block with just backticks (```) or STOP // For markdown files with nested markdown blocks, apply special logic - if (hasNestedMarkdown && line.trim() === "```") { - if (shouldStopAtMarkdownBlock(allLines, i, hasNestedMarkdown)) { + if ( + hasNestedMarkdown && + line.trim() === "```" && + markdownStateTracker + ) { + if (shouldStopAtMarkdownBlock(markdownStateTracker, i)) { return; // Stop without yielding the final closing ``` } else { // This is an inner block delimiter, yield it as content diff --git a/core/autocomplete/filtering/streamTransforms/lineStream.vitest.ts b/core/autocomplete/filtering/streamTransforms/lineStream.vitest.ts index c37e853b552..709b744d9b8 100644 --- a/core/autocomplete/filtering/streamTransforms/lineStream.vitest.ts +++ b/core/autocomplete/filtering/streamTransforms/lineStream.vitest.ts @@ -859,25 +859,16 @@ describe("lineStream", () => { }); describe("shouldStopAtMarkdownBlock", () => { - it("should return false when hasNestedMarkdown is false", () => { - const allLines = ["```markdown", "content", "```"]; - expect(lineStream.shouldStopAtMarkdownBlock(allLines, 2, false)).toBe( - false, - ); - }); - it("should return false when current line is not closing backticks", () => { const allLines = ["```markdown", "content", "more content"]; - expect(lineStream.shouldStopAtMarkdownBlock(allLines, 2, true)).toBe( - false, - ); + const state = new lineStream.MarkdownBlockState(allLines); + expect(lineStream.shouldStopAtMarkdownBlock(state, 2)).toBe(false); }); it("should handle simple nested markdown case", () => { const allLines = ["```markdown", "# Title", "```"]; - expect(lineStream.shouldStopAtMarkdownBlock(allLines, 2, true)).toBe( - true, - ); + const state = new lineStream.MarkdownBlockState(allLines); + expect(lineStream.shouldStopAtMarkdownBlock(state, 2)).toBe(true); }); it("should handle complex nested markdown with inner code blocks", () => { @@ -889,14 +880,11 @@ describe("lineStream", () => { "```", "```", ]; + const state = new lineStream.MarkdownBlockState(allLines); // At index 4 (first inner closing), should not stop - expect(lineStream.shouldStopAtMarkdownBlock(allLines, 4, true)).toBe( - false, - ); + expect(lineStream.shouldStopAtMarkdownBlock(state, 4)).toBe(false); // At index 5 (outer closing), should stop - expect(lineStream.shouldStopAtMarkdownBlock(allLines, 5, true)).toBe( - true, - ); + expect(lineStream.shouldStopAtMarkdownBlock(state, 5)).toBe(true); }); it("should handle multiple bare backticks scenario", () => { @@ -907,14 +895,11 @@ describe("lineStream", () => { "More content", "```", ]; + const state = new lineStream.MarkdownBlockState(allLines); // At index 2, should not stop (not the last bare backticks) - expect(lineStream.shouldStopAtMarkdownBlock(allLines, 2, true)).toBe( - false, - ); + expect(lineStream.shouldStopAtMarkdownBlock(state, 2)).toBe(false); // At index 4, should stop (last bare backticks) - expect(lineStream.shouldStopAtMarkdownBlock(allLines, 4, true)).toBe( - true, - ); + expect(lineStream.shouldStopAtMarkdownBlock(state, 4)).toBe(true); }); }); @@ -970,4 +955,197 @@ describe("lineStream", () => { }); }); }); + + describe("MarkdownBlockState", () => { + it("should initialize with correct state", () => { + const allLines = ["```markdown", "content", "```", "more content", "```"]; + const state = new lineStream.MarkdownBlockState(allLines); + + // Test basic initialization - we can't directly test private properties, + // but we can test the behavior through shouldStopAtPosition + expect(state).toBeDefined(); + }); + + it("should correctly identify bare backticks positions", () => { + const allLines = ["```markdown", "```", "content", "```"]; + const state = new lineStream.MarkdownBlockState(allLines); + + // At position 1 (first bare backticks), should not stop + expect(state.shouldStopAtPosition(1)).toBe(false); + // At position 3 (last bare backticks), should stop + expect(state.shouldStopAtPosition(3)).toBe(true); + }); + + it("should maintain state across multiple calls", () => { + const allLines = [ + "```markdown", + "# Title", + "```javascript", + "console.log('test');", + "```", + "More content", + "```", + ]; + const state = new lineStream.MarkdownBlockState(allLines); + + // Process positions incrementally + expect(state.shouldStopAtPosition(2)).toBe(false); // Start of inner block + expect(state.shouldStopAtPosition(4)).toBe(false); // End of inner block + expect(state.shouldStopAtPosition(6)).toBe(true); // End of outer block + }); + + it("should handle complex nesting scenarios efficiently", () => { + const allLines = [ + "```markdown", + "# Documentation", + "```typescript", + "interface Config {", + " name: string;", + "}", + "```", + "", + "```bash", + "npm install", + "```", + "", + "Final notes", + "```", + ]; + const state = new lineStream.MarkdownBlockState(allLines); + + // Test multiple positions in sequence + expect(state.shouldStopAtPosition(6)).toBe(false); // End of first inner block + expect(state.shouldStopAtPosition(10)).toBe(false); // End of second inner block + expect(state.shouldStopAtPosition(13)).toBe(true); // End of outer markdown block + }); + + it("should handle non-backtick lines correctly", () => { + const allLines = ["```markdown", "regular content", "```"]; + const state = new lineStream.MarkdownBlockState(allLines); + + // Position 1 is not backticks, should return false + expect(state.shouldStopAtPosition(1)).toBe(false); + }); + + it("should handle empty lines and edge cases", () => { + const allLines = ["```markdown", "", "```"]; + const state = new lineStream.MarkdownBlockState(allLines); + + expect(state.shouldStopAtPosition(1)).toBe(false); // Empty line + expect(state.shouldStopAtPosition(2)).toBe(true); // Closing backticks + }); + + it("should reset nest count when reaching final bare backticks", () => { + const allLines = ["```markdown", "content", "```"]; + const state = new lineStream.MarkdownBlockState(allLines); + + // First call should stop and reset count + expect(state.shouldStopAtPosition(2)).toBe(true); + + // If we had more content, it should start fresh + // (This tests the internal state management) + }); + }); + + describe("shouldStopAtMarkdownBlock optimization", () => { + it("should maintain performance benefits with state reuse", () => { + const allLines = Array.from({ length: 100 }, (_, i) => { + if (i === 0) return "```markdown"; + if (i === 99) return "```"; + if (i % 10 === 0) return "```javascript"; + if (i % 10 === 5) return "```"; + return `line ${i}`; + }); + + const state = new lineStream.MarkdownBlockState(allLines); + + // Test that we can call multiple times without recomputing everything + const start = performance.now(); + + // Test several positions in sequence + for (let i = 10; i < 90; i += 10) { + if (allLines[i].trim() === "```") { + lineStream.shouldStopAtMarkdownBlock(state, i); + } + } + + const duration = performance.now() - start; + expect(duration).toBeLessThan(10); // Should be very fast due to state caching + }); + }); + + describe("filterCodeBlockLines with optimized MarkdownBlockState", () => { + it("should use optimized state tracker for markdown files", async () => { + const linesGenerator = await getLineGenerator([ + "```markdown", + "# Documentation", + "```typescript", + "const config = { name: 'test' };", + "```", + "Final notes", + "```", + ]); + + const result = lineStream.filterCodeBlockLines( + linesGenerator, + "README.md", + ); + const filteredLines = await getFilteredLines(result); + + expect(filteredLines).toEqual([ + "# Documentation", + "```typescript", + "const config = { name: 'test' };", + "```", + "Final notes", + ]); + }); + + it("should fall back to legacy behavior when no markdown nesting detected", async () => { + const linesGenerator = await getLineGenerator([ + "```typescript", + "const x = 5;", + "```", + ]); + + const result = lineStream.filterCodeBlockLines( + linesGenerator, + "script.ts", + ); + const filteredLines = await getFilteredLines(result); + + expect(filteredLines).toEqual(["const x = 5;"]); + }); + + it("should handle mixed markdown and code scenarios with optimization", async () => { + const linesGenerator = await getLineGenerator([ + "```md", + "## API Reference", + "", + "```javascript", + "async function fetchData() {", + " return await fetch('/api/data');", + "}", + "```", + "", + "Usage notes and more documentation.", + "```", + ]); + + const result = lineStream.filterCodeBlockLines(linesGenerator); + const filteredLines = await getFilteredLines(result); + + expect(filteredLines).toEqual([ + "## API Reference", + "", + "```javascript", + "async function fetchData() {", + " return await fetch('/api/data');", + "}", + "```", + "", + "Usage notes and more documentation.", + ]); + }); + }); }); From 0a29810ee038d4494664e664563d9d3f5a3dc003 Mon Sep 17 00:00:00 2001 From: chezsmithy Date: Mon, 30 Jun 2025 22:19:51 -0700 Subject: [PATCH 37/97] add checks to avoid stopping prematurely on stop constants --- .../filtering/streamTransforms/lineStream.ts | 87 +++++++++++- .../streamTransforms/lineStream.vitest.ts | 134 ++++++++++++++++++ 2 files changed, 218 insertions(+), 3 deletions(-) diff --git a/core/autocomplete/filtering/streamTransforms/lineStream.ts b/core/autocomplete/filtering/streamTransforms/lineStream.ts index b36d3e3a42e..a674c7d1b73 100644 --- a/core/autocomplete/filtering/streamTransforms/lineStream.ts +++ b/core/autocomplete/filtering/streamTransforms/lineStream.ts @@ -67,13 +67,47 @@ function shouldRemoveLineBeforeStart(line: string): boolean { ); } -function shouldChangeLineAndStop(line: string): string | undefined { +export function shouldChangeLineAndStop(line: string): string | undefined { if (line.trimStart() === "```") { return line; } + // Check if [/CODE] appears in the line if (line.includes(CODE_STOP_BLOCK)) { - return line.split(CODE_STOP_BLOCK)[0].trimEnd(); + const stopBlockIndex = line.indexOf(CODE_STOP_BLOCK); + + // Check if [/CODE] is preceded by a non-whitespace character + // If so, it might be part of an identifier, so don't handle it + if (stopBlockIndex > 0) { + const charBefore = line[stopBlockIndex - 1]; + if (charBefore && !charBefore.match(/\s/)) { + return undefined; // Don't handle [/CODE] that's part of an identifier + } + } + + // Check if [/CODE] appears to be inside quotes + // Simple heuristic: count unmatched quotes before the stop block + const beforeStopBlock = line.substring(0, stopBlockIndex); + const singleQuotes = (beforeStopBlock.match(/'/g) || []).length; + const doubleQuotes = (beforeStopBlock.match(/"/g) || []).length; + + // If there's an odd number of quotes before [/CODE], we're likely inside quotes + if (singleQuotes % 2 !== 0 || doubleQuotes % 2 !== 0) { + return undefined; // Don't handle [/CODE] inside quotes + } + + // Get the trimmed line to check if [/CODE] is at logical start + const trimmedLine = line.trimStart(); + + if (trimmedLine.startsWith(CODE_STOP_BLOCK)) { + // [/CODE] is at the logical start (after whitespace only) + if (trimmedLine === CODE_STOP_BLOCK) { + return line; // Return the whole line including leading whitespace + } + } + + // [/CODE] appears after some content (separated by whitespace) - return part before + return beforeStopBlock.trimEnd(); } return undefined; @@ -413,7 +447,54 @@ export async function* stopAtLines( linesToStopAt: string[] = LINES_TO_STOP_AT, ): LineStream { for await (const line of stream) { - if (linesToStopAt.some((stopAt) => line.trim().includes(stopAt))) { + let shouldStop = false; + + // Check each stop phrase + for (const stopAt of linesToStopAt) { + if (line.includes(stopAt)) { + const stopAtIndex = line.indexOf(stopAt); + + // Check if stop phrase is preceded by a non-whitespace character + // If so, it might be part of an identifier, so don't handle it + if (stopAtIndex > 0) { + const charBefore = line[stopAtIndex - 1]; + if (charBefore && !charBefore.match(/\s/)) { + continue; // Don't handle stop phrase that's part of an identifier + } + } + + // Check if stop phrase appears to be inside quotes + // Simple heuristic: count unmatched quotes before the stop phrase + const beforeStopPhrase = line.substring(0, stopAtIndex); + const singleQuotes = (beforeStopPhrase.match(/'/g) || []).length; + const doubleQuotes = (beforeStopPhrase.match(/"/g) || []).length; + + // If there's an odd number of quotes before stop phrase, we're likely inside quotes + if (singleQuotes % 2 !== 0 || doubleQuotes % 2 !== 0) { + continue; // Don't handle stop phrase inside quotes + } + + // Get the trimmed line to check if stop phrase is at logical start + const trimmedLine = line.trimStart(); + + if (trimmedLine.startsWith(stopAt)) { + // Stop phrase is at the logical start (after whitespace only) - should stop + shouldStop = true; + break; + } else { + // Stop phrase appears after some content - check if it's separated by whitespace + const contentBeforeStopPhrase = beforeStopPhrase.trimEnd(); + if (contentBeforeStopPhrase.length < beforeStopPhrase.length) { + // There's whitespace before the stop phrase, so it's properly separated + shouldStop = true; + break; + } + // If no whitespace separation, it's part of larger text, so continue + } + } + } + + if (shouldStop) { fullStop(); break; } diff --git a/core/autocomplete/filtering/streamTransforms/lineStream.vitest.ts b/core/autocomplete/filtering/streamTransforms/lineStream.vitest.ts index 709b744d9b8..ff137f442a6 100644 --- a/core/autocomplete/filtering/streamTransforms/lineStream.vitest.ts +++ b/core/autocomplete/filtering/streamTransforms/lineStream.vitest.ts @@ -174,6 +174,93 @@ describe("lineStream", () => { expect(filteredLines).toEqual(["const x = 5;", "let y = 10;"]); expect(mockFullStop).toHaveBeenCalledTimes(1); }); + + it("should stop at lines with leading whitespace", async () => { + const linesGenerator = await getLineGenerator([ + "const x = 5;", + "let y = 10;", + ` ${lineStream.LINES_TO_STOP_AT[0]}`, + "const z = 15;", + ]); + + const result = lineStream.stopAtLines(linesGenerator, mockFullStop); + const filteredLines = await getFilteredLines(result); + + expect(filteredLines).toEqual(["const x = 5;", "let y = 10;"]); + expect(mockFullStop).toHaveBeenCalledTimes(1); + }); + + it("should NOT stop when stop phrase is inside quotes", async () => { + const linesGenerator = await getLineGenerator([ + "const x = 5;", + 'console.log("# End of file. not really");', + "let y = 10;", + "const z = 15;", + ]); + + const result = lineStream.stopAtLines(linesGenerator, mockFullStop); + const filteredLines = await getFilteredLines(result); + + // Should not stop, should yield all lines + expect(filteredLines).toEqual([ + "const x = 5;", + 'console.log("# End of file. not really");', + "let y = 10;", + "const z = 15;", + ]); + expect(mockFullStop).toHaveBeenCalledTimes(0); + }); + + it("should NOT stop when stop phrase is inside single quotes", async () => { + const linesGenerator = await getLineGenerator([ + "const x = 5;", + "const message = '# End of file. not really';", + "let y = 10;", + ]); + + const result = lineStream.stopAtLines(linesGenerator, mockFullStop); + const filteredLines = await getFilteredLines(result); + + expect(filteredLines).toEqual([ + "const x = 5;", + "const message = '# End of file. not really';", + "let y = 10;", + ]); + expect(mockFullStop).toHaveBeenCalledTimes(0); + }); + + it("should NOT stop when stop phrase is part of larger text", async () => { + const linesGenerator = await getLineGenerator([ + "const x = 5;", + "// This function stopsafter processing", + "let y = 10;", + ]); + + const result = lineStream.stopAtLines(linesGenerator, mockFullStop); + const filteredLines = await getFilteredLines(result); + + expect(filteredLines).toEqual([ + "const x = 5;", + "// This function stopsafter processing", + "let y = 10;", + ]); + expect(mockFullStop).toHaveBeenCalledTimes(0); + }); + + it("should stop when stop phrase appears properly at start of content", async () => { + const linesGenerator = await getLineGenerator([ + "const x = 5;", + "let y = 10;", + "# End of file. Done here", + "const z = 15;", + ]); + + const result = lineStream.stopAtLines(linesGenerator, mockFullStop); + const filteredLines = await getFilteredLines(result); + + expect(filteredLines).toEqual(["const x = 5;", "let y = 10;"]); + expect(mockFullStop).toHaveBeenCalledTimes(1); + }); }); describe("skipPrefixes", () => { @@ -903,6 +990,53 @@ describe("lineStream", () => { }); }); + describe("shouldChangeLineAndStop", () => { + it("should handle [/CODE] at start of line", () => { + const result = lineStream.shouldChangeLineAndStop("[/CODE]"); + expect(result).toBe("[/CODE]"); + }); + + it("should handle [/CODE] with leading whitespace", () => { + const result = lineStream.shouldChangeLineAndStop(" [/CODE]"); + expect(result).toBe(" [/CODE]"); + }); + + it("should return partial line before [/CODE] when at start/after whitespace", () => { + const result = lineStream.shouldChangeLineAndStop( + "some code [/CODE] more text", + ); + expect(result).toBe("some code"); + }); + + it("should NOT trigger on [/CODE] within quotes or non-whitespace preceded", () => { + // This test demonstrates the current bug - it WILL fail initially + const result = lineStream.shouldChangeLineAndStop( + 'console.log("test [/CODE] end");', + ); + expect(result).toBeUndefined(); // Should not trigger stopping + }); + + it("should NOT trigger on [/CODE] in middle of identifier", () => { + // Another case that shows the bug + const result = lineStream.shouldChangeLineAndStop( + 'const var[/CODE]Name = "test";', + ); + expect(result).toBeUndefined(); // Should not trigger stopping + }); + + it("should handle ``` with trimStart correctly", () => { + const result = lineStream.shouldChangeLineAndStop(" ```"); + expect(result).toBe(" ```"); + }); + + it("should NOT handle ``` in middle of line", () => { + const result = lineStream.shouldChangeLineAndStop( + 'console.log("test ``` end");', + ); + expect(result).toBeUndefined(); + }); + }); + describe("processBlockNesting", () => { it("should skip lines that should be removed before start", () => { const result = lineStream.processBlockNesting("```typescript", false); From 938b7506cf73dfda8f794e9fab0a713e5c7a682a Mon Sep 17 00:00:00 2001 From: chezsmithy Date: Wed, 2 Jul 2025 14:21:16 -0700 Subject: [PATCH 38/97] Optimize for more tests and nova --- .../streamTransforms/filterCodeBlock.ts | 139 ++++++ .../filterCodeBlock.vitest.ts | 452 ++++++++++++++++++ .../filtering/streamTransforms/lineStream.ts | 96 +--- core/edit/lazy/streamLazyApply.ts | 80 +++- core/llm/autodetect.ts | 3 +- .../utils/patchNestedMarkdown.ts | 50 +- 6 files changed, 707 insertions(+), 113 deletions(-) create mode 100644 core/autocomplete/filtering/streamTransforms/filterCodeBlock.ts create mode 100644 core/autocomplete/filtering/streamTransforms/filterCodeBlock.vitest.ts diff --git a/core/autocomplete/filtering/streamTransforms/filterCodeBlock.ts b/core/autocomplete/filtering/streamTransforms/filterCodeBlock.ts new file mode 100644 index 00000000000..28af7d372da --- /dev/null +++ b/core/autocomplete/filtering/streamTransforms/filterCodeBlock.ts @@ -0,0 +1,139 @@ +import { LineStream } from "../../../diff/util"; + +import { + collectAllLines, + hasNestedMarkdownBlocks, + MarkdownBlockState, + processBlockNesting, + shouldChangeLineAndStop, + shouldStopAtMarkdownBlock, +} from "./lineStream"; + +/** + * Filters and processes lines from a code block, removing unnecessary markers and handling edge cases. + * Now includes markdown-aware processing to handle nested markdown blocks properly. + * + * @param {LineStream} rawLines - The input stream of lines to filter. + * @param {string} filepath - Optional filepath to determine if this is a markdown file. + * @yields {string} Filtered and processed lines from the code block. + * + * @description + * This generator function performs the following tasks: + * 1. Removes initial lines that should be removed before the actual code starts. + * 2. For markdown files, applies nested markdown block logic to avoid premature termination. + * 3. For mixed content, uses simplified processing to avoid premature termination. + * 4. For traditional code blocks, uses original logic. + * 5. Yields processed lines that are part of the actual code block content. + */ +export async function* filterCodeBlockLines( + rawLines: LineStream, + filepath?: string, +): LineStream { + // Collect all lines for analysis + const allLines = await collectAllLines(rawLines); + + // Check if it has nested markdown blocks (like ```markdown or ```md) + const firstLine = allLines[0] || ""; + const hasNestedMarkdown = hasNestedMarkdownBlocks(firstLine, filepath); + + // TARGETED FIX: Detect if this is mixed content (markdown headers + code blocks) + // But exclude cases where we have nested markdown blocks + const hasMarkdownHeaders = allLines.some( + (line) => line.trim().startsWith("#") && !line.trim().startsWith("```"), + ); + + const hasCodeBlocks = allLines.some( + (line) => line.trim().startsWith("```") && line.trim().length >= 3, + ); + const isMixedContent = + hasMarkdownHeaders && hasCodeBlocks && !hasNestedMarkdown; + + // If this is mixed content, use simplified processing + if (isMixedContent) { + for (let i = 0; i < allLines.length; i++) { + const line = allLines[i]; + + // Skip initial wrapper lines if they exist + if (i === 0 && shouldRemoveLineBeforeStart(line)) { + continue; + } + + yield line; + } + return; + } + + // Original logic for non-mixed content + let seenFirstFence = false; + let nestCount = 0; + + // Create optimized state tracker for markdown block analysis if needed + let markdownStateTracker: MarkdownBlockState | undefined; + if (hasNestedMarkdown) { + markdownStateTracker = new MarkdownBlockState(allLines); + } + + for (let i = 0; i < allLines.length; i++) { + const line = allLines[i]; + + // Process block nesting logic for the first fence + const nesting = processBlockNesting(line, seenFirstFence); + if (nesting.shouldSkip) { + continue; // Filter out starting ``` or START block + } + if (!seenFirstFence && nesting.newSeenFirstFence) { + seenFirstFence = true; + nestCount = 1; + } + + if (nestCount > 0) { + // Inside a block including the outer block + const changedEndLine = shouldChangeLineAndStop(line); + if (typeof changedEndLine === "string") { + // Ending a block with just backticks (```) or STOP + + // For markdown files with nested markdown blocks, apply special logic + if ( + hasNestedMarkdown && + line.trim() === "```" && + markdownStateTracker + ) { + if (shouldStopAtMarkdownBlock(markdownStateTracker, i)) { + return; // Stop without yielding the final closing ``` + } else { + // This is an inner block delimiter, yield it as content + yield line; + continue; + } + } + + // Original logic for non-markdown files or simple cases + nestCount--; + if (nestCount === 0) { + // We've closed the outer wrapper - stop without yielding the closing ``` + return; + } else { + // This is a nested block closing, yield it as content + yield line; + } + } else if (line.startsWith("```")) { + // Going into a nested codeblock + nestCount++; + yield line; + } else { + // Otherwise just yield the line as content + yield line; + } + } + } +} + +function shouldRemoveLineBeforeStart(line: string): boolean { + return ( + line.trimStart().startsWith("```") || + line.trim() === "[CODE]" || + line.trim() === "" || + line.trim() === "" || + line.trim() === "{{FILL_HERE}}" + ); +} diff --git a/core/autocomplete/filtering/streamTransforms/filterCodeBlock.vitest.ts b/core/autocomplete/filtering/streamTransforms/filterCodeBlock.vitest.ts new file mode 100644 index 00000000000..78936a28c21 --- /dev/null +++ b/core/autocomplete/filtering/streamTransforms/filterCodeBlock.vitest.ts @@ -0,0 +1,452 @@ +// eslint-disable-next-line max-lines-per-function +import { beforeEach, describe, expect, it, Mock, vi } from "vitest"; + +import * as lineStream from "./lineStream"; + +describe("filterCodeBlock", () => { + let mockFullStop: Mock; + + async function getLineGenerator(lines: any) { + return (async function* () { + for (const line of lines) { + yield line; + } + })(); + } + + async function getFilteredLines(results: any) { + const output = []; + + for await (const line of results) { + output.push(line); + } + + return output; + } + + beforeEach(() => { + mockFullStop = vi.fn(); + }); + + it("should handle unfenced code", async () => { + const linesGenerator = await getLineGenerator(["const x = 5;"]); + + const result = lineStream.filterCodeBlockLines(linesGenerator); + const filteredLines = await getFilteredLines(result); + + expect(filteredLines).toEqual(["const x = 5;"]); + }); + + it("should handle unfenced code with a code block", async () => { + const linesGenerator = await getLineGenerator([ + "const x = 5;", + "```bash", + "ls -al", + "```", + ]); + + const result = lineStream.filterCodeBlockLines(linesGenerator); + const filteredLines = await getFilteredLines(result); + + expect(filteredLines).toEqual(["const x = 5;", "```bash", "ls -al", "```"]); + }); + + it("should handle unfenced code with a complex code block", async () => { + const linesGenerator = await getLineGenerator([ + "# Manual Testing Sandbox", + "", + "## Project Structure", + "", + "```", + "manual-testing-sandbox/", + "โ”œโ”€โ”€ readme.md # Project documentation", + "โ”œโ”€โ”€ package.json # Node.js dependencies and scripts", + "โ”œโ”€โ”€ tsconfig.json # TypeScript configuration", + "โ”œโ”€โ”€ jest.config.js # Jest testing configuration", + "โ”œโ”€โ”€ requirements.txt # Python dependencies", + "โ”œโ”€โ”€ Dockerfile # Docker container configuration", + "โ”œโ”€โ”€ data.json # Sample JSON data", + "โ”œโ”€โ”€ example.ipynb # Jupyter notebook example", + "โ”‚", + "โ”œโ”€โ”€ src/ # Source code directory", + "โ”‚ โ”œโ”€โ”€ example.ts # TypeScript example", + "โ”‚ โ”œโ”€โ”€ JsonToMarkdownConverter.ts # JSON to Markdown converter", + "โ”‚ โ”œโ”€โ”€ JsonToMarkdownConverter.test.ts # Tests for JSON converter", + "โ”‚ โ”œโ”€โ”€ MarkdownProcessor.ts # Markdown processing utility", + "โ”‚ โ””โ”€โ”€ MarkdownProcessor.test.ts # Tests for Markdown processor", + "โ”‚", + "โ”œโ”€โ”€ react-calculator/ # React calculator application", + "โ”œโ”€โ”€ calculator_test/ # Java calculator implementation", + "โ”‚ โ”œโ”€โ”€ Calculator.java # Calculator class", + "โ”‚ โ””โ”€โ”€ Main.java # Main application entry", + "โ”‚", + "โ”œโ”€โ”€ nested-folder/ # Nested project example", + "โ”‚ โ”œโ”€โ”€ helloNested.py # Python script", + "โ”‚ โ”œโ”€โ”€ package.json # Nested package configuration", + "โ”‚ โ””โ”€โ”€ rules.md # Documentation", + "โ”‚", + "โ”œโ”€โ”€ coverage/ # Test coverage reports", + "โ”œโ”€โ”€ logs/ # Application logs", + "โ”‚", + "โ””โ”€โ”€ Test Files # Various language examples", + " โ”œโ”€โ”€ AdvancedPage.tsx # React TypeScript component", + " โ”œโ”€โ”€ Calculator.java # Java calculator", + " โ”œโ”€โ”€ program.cs # C# program", + " โ”œโ”€โ”€ query.sql # SQL query example", + " โ”œโ”€โ”€ test.css # CSS styles", + " โ”œโ”€โ”€ test.html # HTML page", + " โ”œโ”€โ”€ test.js # JavaScript code", + " โ”œโ”€โ”€ test.kt # Kotlin example", + " โ”œโ”€โ”€ test.php # PHP script", + " โ”œโ”€โ”€ test.py # Python script", + " โ”œโ”€โ”€ test.rb # Ruby script", + " โ”œโ”€โ”€ test.rs # Rust code", + " โ”œโ”€โ”€ test.sh # Shell script", + " โ””โ”€โ”€ test.ts # TypeScript code", + "```", + ]); + + const result = lineStream.filterCodeBlockLines(linesGenerator); + const filteredLines = await getFilteredLines(result); + + expect(filteredLines).toEqual([ + "# Manual Testing Sandbox", + "", + "## Project Structure", + "", + "```", + "manual-testing-sandbox/", + "โ”œโ”€โ”€ readme.md # Project documentation", + "โ”œโ”€โ”€ package.json # Node.js dependencies and scripts", + "โ”œโ”€โ”€ tsconfig.json # TypeScript configuration", + "โ”œโ”€โ”€ jest.config.js # Jest testing configuration", + "โ”œโ”€โ”€ requirements.txt # Python dependencies", + "โ”œโ”€โ”€ Dockerfile # Docker container configuration", + "โ”œโ”€โ”€ data.json # Sample JSON data", + "โ”œโ”€โ”€ example.ipynb # Jupyter notebook example", + "โ”‚", + "โ”œโ”€โ”€ src/ # Source code directory", + "โ”‚ โ”œโ”€โ”€ example.ts # TypeScript example", + "โ”‚ โ”œโ”€โ”€ JsonToMarkdownConverter.ts # JSON to Markdown converter", + "โ”‚ โ”œโ”€โ”€ JsonToMarkdownConverter.test.ts # Tests for JSON converter", + "โ”‚ โ”œโ”€โ”€ MarkdownProcessor.ts # Markdown processing utility", + "โ”‚ โ””โ”€โ”€ MarkdownProcessor.test.ts # Tests for Markdown processor", + "โ”‚", + "โ”œโ”€โ”€ react-calculator/ # React calculator application", + "โ”œโ”€โ”€ calculator_test/ # Java calculator implementation", + "โ”‚ โ”œโ”€โ”€ Calculator.java # Calculator class", + "โ”‚ โ””โ”€โ”€ Main.java # Main application entry", + "โ”‚", + "โ”œโ”€โ”€ nested-folder/ # Nested project example", + "โ”‚ โ”œโ”€โ”€ helloNested.py # Python script", + "โ”‚ โ”œโ”€โ”€ package.json # Nested package configuration", + "โ”‚ โ””โ”€โ”€ rules.md # Documentation", + "โ”‚", + "โ”œโ”€โ”€ coverage/ # Test coverage reports", + "โ”œโ”€โ”€ logs/ # Application logs", + "โ”‚", + "โ””โ”€โ”€ Test Files # Various language examples", + " โ”œโ”€โ”€ AdvancedPage.tsx # React TypeScript component", + " โ”œโ”€โ”€ Calculator.java # Java calculator", + " โ”œโ”€โ”€ program.cs # C# program", + " โ”œโ”€โ”€ query.sql # SQL query example", + " โ”œโ”€โ”€ test.css # CSS styles", + " โ”œโ”€โ”€ test.html # HTML page", + " โ”œโ”€โ”€ test.js # JavaScript code", + " โ”œโ”€โ”€ test.kt # Kotlin example", + " โ”œโ”€โ”€ test.php # PHP script", + " โ”œโ”€โ”€ test.py # Python script", + " โ”œโ”€โ”€ test.rb # Ruby script", + " โ”œโ”€โ”€ test.rs # Rust code", + " โ”œโ”€โ”€ test.sh # Shell script", + " โ””โ”€โ”€ test.ts # TypeScript code", + "```", + ]); + }); + + it("should handle unfenced code with two code blocks", async () => { + const linesGenerator = await getLineGenerator([ + "const x = 5;", + "```bash", + "ls -al", + "```", + "```bash", + "ls -al", + "```", + ]); + + const result = lineStream.filterCodeBlockLines(linesGenerator); + const filteredLines = await getFilteredLines(result); + + expect(filteredLines).toEqual([ + "const x = 5;", + "```bash", + "ls -al", + "```", + "```bash", + "ls -al", + "```", + ]); + }); + + it("should remove lines before the first valid line", async () => { + const linesGenerator = await getLineGenerator(["```ts", "const x = 5;"]); + + const result = lineStream.filterCodeBlockLines(linesGenerator); + const filteredLines = await getFilteredLines(result); + + expect(filteredLines).toEqual(["const x = 5;"]); + }); + + it("should remove outer blocks", async () => { + const linesGenerator = await getLineGenerator([ + "```ts", + "const x = 5;", + "```", + ]); + + const result = lineStream.filterCodeBlockLines(linesGenerator); + const filteredLines = await getFilteredLines(result); + + expect(filteredLines).toEqual(["const x = 5;"]); + }); + + it("should leave inner blocks intact", async () => { + const linesGenerator = await getLineGenerator([ + "```md", + "const x = 5;", + "```bash", + "ls -al", + "```", + "```", + ]); + + const result = lineStream.filterCodeBlockLines(linesGenerator); + const filteredLines = await getFilteredLines(result); + + expect(filteredLines).toEqual(["const x = 5;", "```bash", "ls -al", "```"]); + }); + + it("should ignore ticks inside of code blocks such as tests", async () => { + const linesGenerator = await getLineGenerator([ + "```typescript", + 'it("should handle included inner ticks", async () => {', + " const linesGenerator = await getLineGenerator([`", + ' "```md"', + ' "const x = 5;"', + ' "```bash"', + ' "echo ```test```"', + ' "```"', + ' "```"', + "]);", + "```", + ]); + + const result = lineStream.filterCodeBlockLines(linesGenerator); + const filteredLines = await getFilteredLines(result); + + expect(filteredLines).toEqual([ + 'it("should handle included inner ticks", async () => {', + " const linesGenerator = await getLineGenerator([`", + ' "```md"', + ' "const x = 5;"', + ' "```bash"', + ' "echo ```test```"', + ' "```"', + ' "```"', + "]);", + ]); + }); + + it("should handle included inner ticks", async () => { + const linesGenerator = await getLineGenerator([ + "```md", + "const x = 5;", + "```bash", + "echo ```test```", + "```", + "```", + ]); + + const result = lineStream.filterCodeBlockLines(linesGenerator); + const filteredLines = await getFilteredLines(result); + + expect(filteredLines).toEqual([ + "const x = 5;", + "```bash", + "echo ```test```", + "```", + ]); + }); + + it("should leave single inner blocks intact but not return trailing text", async () => { + const linesGenerator = await getLineGenerator([ + "```md", + "const x = 5;", + "```bash", + "ls -al", + "```", + "```", + "trailing text", + ]); + + const result = lineStream.filterCodeBlockLines(linesGenerator); + const filteredLines = await getFilteredLines(result); + + expect(filteredLines).toEqual(["const x = 5;", "```bash", "ls -al", "```"]); + }); + + it("should leave double inner blocks intact but not return trailing text", async () => { + const linesGenerator = await getLineGenerator([ + "```md", + "const x = 5;", + "```bash", + "ls -al", + "```", + "const y = 10;", + "```sh", + "echo `hello world`", + "```", + "```", + "trailing text", + ]); + + const result = lineStream.filterCodeBlockLines(linesGenerator); + const filteredLines = await getFilteredLines(result); + + expect(filteredLines).toEqual([ + "const x = 5;", + "```bash", + "ls -al", + "```", + "const y = 10;", + "```sh", + "echo `hello world`", + "```", + ]); + }); + + it("should leave inner blocks intact but not return trailing or leading text", async () => { + const linesGenerator = await getLineGenerator([ + "[CODE]", + "const x = 5;", + "```bash", + "ls -al", + "```", + "[/CODE]", + "trailing text", + ]); + + const result = lineStream.filterCodeBlockLines(linesGenerator); + const filteredLines = await getFilteredLines(result); + + expect(filteredLines).toEqual(["const x = 5;", "```bash", "ls -al", "```"]); + }); + + // Markdown-aware tests + it("should handle markdown files with nested code blocks and a filename is included", async () => { + const linesGenerator = await getLineGenerator([ + "```markdown README.md", + "# Project Structure", + "", + "```", + "debug-test-folder/", + "โ”œโ”€โ”€ AdvancedPage.tsx", + "โ”œโ”€โ”€ Calculator.java", + "โ””โ”€โ”€ test.ts", + "```", + "```", + ]); + + const result = lineStream.filterCodeBlockLines(linesGenerator, "README.md"); + const filteredLines = await getFilteredLines(result); + + // Should include all content up to the final closing ``` + expect(filteredLines).toEqual([ + "# Project Structure", + "", + "```", + "debug-test-folder/", + "โ”œโ”€โ”€ AdvancedPage.tsx", + "โ”œโ”€โ”€ Calculator.java", + "โ””โ”€โ”€ test.ts", + "```", + ]); + }); + + // Markdown-aware tests + it("should handle markdown files with nested code blocks and a filename is excluded", async () => { + const linesGenerator = await getLineGenerator([ + "```markdown README.md", + "# Project Structure", + "", + "```", + "debug-test-folder/", + "โ”œโ”€โ”€ AdvancedPage.tsx", + "โ”œโ”€โ”€ Calculator.java", + "โ””โ”€โ”€ test.ts", + "```", + "```", + ]); + + const result = lineStream.filterCodeBlockLines(linesGenerator); + const filteredLines = await getFilteredLines(result); + + // Should include all content up to the final closing ``` + expect(filteredLines).toEqual([ + "# Project Structure", + "", + "```", + "debug-test-folder/", + "โ”œโ”€โ”€ AdvancedPage.tsx", + "โ”œโ”€โ”€ Calculator.java", + "โ””โ”€โ”€ test.ts", + "```", + ]); + }); + + it("should handle non-markdown files normally with filepath parameter", async () => { + const linesGenerator = await getLineGenerator([ + "```", + "function test() {", + " return 'hello';", + "}", + "```", + ]); + + const result = lineStream.filterCodeBlockLines(linesGenerator, "test.js"); + const filteredLines = await getFilteredLines(result); + + expect(filteredLines).toEqual([ + "function test() {", + " return 'hello';", + "}", + ]); + }); + + it("should handle simple markdown code blocks", async () => { + const linesGenerator = await getLineGenerator([ + "```", + "Here's some code:", + "```", + "function example() {", + " console.log('test');", + "}", + "```", + ]); + + const result = lineStream.filterCodeBlockLines(linesGenerator, "README.md"); + const filteredLines = await getFilteredLines(result); + + // Should remove the outer markdown wrapper, and return just the inner content. + // The lack of an end tag should cause it to return all remaining lines. + expect(filteredLines).toEqual([ + "Here's some code:", + "```", + "function example() {", + " console.log('test');", + "}", + "```", + ]); + }); +}); diff --git a/core/autocomplete/filtering/streamTransforms/lineStream.ts b/core/autocomplete/filtering/streamTransforms/lineStream.ts index a674c7d1b73..182990fef5b 100644 --- a/core/autocomplete/filtering/streamTransforms/lineStream.ts +++ b/core/autocomplete/filtering/streamTransforms/lineStream.ts @@ -3,6 +3,8 @@ import { distance } from "fastest-levenshtein"; import { DiffLine } from "../../.."; import { LineStream } from "../../../diff/util"; +export { filterCodeBlockLines } from "./filterCodeBlock"; + export type LineFilter = (args: { lines: LineStream; fullStop: () => void; @@ -562,100 +564,6 @@ export async function* removeTrailingWhitespace( } } -/** - * Filters and processes lines from a code block, removing unnecessary markers and handling edge cases. - * Now includes markdown-aware processing to handle nested markdown blocks properly. - * - * @param {LineStream} rawLines - The input stream of lines to filter. - * @param {string} filepath - Optional filepath to determine if this is a markdown file. - * @yields {string} Filtered and processed lines from the code block. - * - * @description - * This generator function performs the following tasks: - * 1. Removes initial lines that should be removed before the actual code starts. - * 2. For markdown files, applies nested markdown block logic to avoid premature termination. - * 3. For non-markdown files, uses original stopping behavior. - * 4. Handles special cases where lines should be changed and the stream should stop. - * 5. Yields processed lines that are part of the actual code block content. - */ -export async function* filterCodeBlockLines( - rawLines: LineStream, - filepath?: string, -): LineStream { - let seenFirstFence = false; - // nestCount is set to 1 when the entire code block is wrapped with ``` or START blocks. It's then incremented - // when an inner code block is discovered to avoid exiting the function prematurely. The function will exit early - // when all blocks are matched. When no outer fence is discovered the function will always continue to the end. - let nestCount = 0; - - // Collect all lines for analysis - const allLines = await collectAllLines(rawLines); - - // Check if it has nested markdown blocks (like ```markdown or ```md) - const firstLine = allLines[0] || ""; - const hasNestedMarkdown = hasNestedMarkdownBlocks(firstLine, filepath); - - // Create optimized state tracker for markdown block analysis if needed - let markdownStateTracker: MarkdownBlockState | undefined; - if (hasNestedMarkdown) { - markdownStateTracker = new MarkdownBlockState(allLines); - } - - for (let i = 0; i < allLines.length; i++) { - const line = allLines[i]; - - // Process block nesting logic for the first fence - const nesting = processBlockNesting(line, seenFirstFence); - if (nesting.shouldSkip) { - continue; // Filter out starting ``` or START block - } - if (!seenFirstFence && nesting.newSeenFirstFence) { - seenFirstFence = true; - nestCount = 1; - } - - if (nestCount > 0) { - // Inside a block including the outer block - const changedEndLine = shouldChangeLineAndStop(line); - if (typeof changedEndLine === "string") { - // Ending a block with just backticks (```) or STOP - - // For markdown files with nested markdown blocks, apply special logic - if ( - hasNestedMarkdown && - line.trim() === "```" && - markdownStateTracker - ) { - if (shouldStopAtMarkdownBlock(markdownStateTracker, i)) { - return; // Stop without yielding the final closing ``` - } else { - // This is an inner block delimiter, yield it as content - yield line; - continue; - } - } - - // Original logic for non-markdown files or simple cases - nestCount--; - if (nestCount === 0) { - // We've closed the outer wrapper - stop without yielding the closing ``` - return; - } else { - // This is a nested block closing, yield it as content - yield line; - } - } else if (line.startsWith("```")) { - // Going into a nested codeblock - nestCount++; - yield line; - } else { - // Otherwise just yield the line as content - yield line; - } - } - } -} - /** * Filters out English explanations at the start of a code block. * diff --git a/core/edit/lazy/streamLazyApply.ts b/core/edit/lazy/streamLazyApply.ts index 1186ca6dee8..4aa746e79e8 100644 --- a/core/edit/lazy/streamLazyApply.ts +++ b/core/edit/lazy/streamLazyApply.ts @@ -31,6 +31,73 @@ function isMarkdownFile(filename: string): boolean { return ["md", "markdown", "gfm"].includes(ext || ""); } +/** + * Optimized state tracker for markdown block analysis to avoid recomputing on each call. + */ +class MarkdownBlockStateTracker { + private trimmedLines: string[]; + private bareBacktickPositions: number[]; + private markdownNestCount: number = 0; + private lastProcessedIndex: number = -1; + + constructor(allLines: string[]) { + this.trimmedLines = allLines.map((l) => l.trim()); + // Pre-compute positions of all bare backtick lines for faster lookup + this.bareBacktickPositions = []; + for (let i = 0; i < this.trimmedLines.length; i++) { + if (this.trimmedLines[i].match(/^`+$/)) { + this.bareBacktickPositions.push(i); + } + } + } + + /** + * Determines if we should stop at the given markdown block position. + * Maintains state across calls to avoid redundant computation. + */ + shouldStopAtPosition(currentIndex: number): boolean { + if (this.trimmedLines[currentIndex] !== "```") { + return false; + } + + // Process any lines we haven't seen yet up to currentIndex + for (let j = this.lastProcessedIndex + 1; j <= currentIndex; j++) { + const currentLine = this.trimmedLines[j]; + + if (this.markdownNestCount > 0) { + // Inside a markdown block + if (currentLine.match(/^`+$/)) { + // Found bare backticks - check if this is the last one + if (j === currentIndex) { + const remainingBareBackticks = this.bareBacktickPositions.filter( + (pos) => pos > j, + ).length; + if (remainingBareBackticks === 0) { + this.markdownNestCount = 0; + this.lastProcessedIndex = j; + return true; + } + } + } else if (currentLine.startsWith("```")) { + // Going into a nested codeblock + this.markdownNestCount++; + } + } else { + // Not inside a markdown block yet + if (currentLine.startsWith("```")) { + const header = currentLine.replaceAll("`", ""); + if (headerIsMarkdown(header)) { + this.markdownNestCount = 1; + } + } + } + } + + this.lastProcessedIndex = currentIndex; + return false; + } +} + async function* stopAtLinesWithMarkdownSupport( lines: LineStream, filename: string, @@ -64,6 +131,8 @@ async function* stopAtLinesWithMarkdownSupport( return; } + // Use optimized state tracker for markdown block analysis + const stateTracker = new MarkdownBlockStateTracker(allLines); let nestCount = 0; const trimmedLines = allLines.map((l) => l.trim()); @@ -72,15 +141,8 @@ async function* stopAtLinesWithMarkdownSupport( if (nestCount > 0) { if (line.match(/^`+$/)) { - let remainingBareBackticks = 0; - for (let j = i + 1; j < trimmedLines.length; j++) { - if (trimmedLines[j].match(/^`+$/)) { - remainingBareBackticks++; - } - } - - if (remainingBareBackticks === 0) { - nestCount = 0; + // Use optimized state tracker for markdown block logic + if (stateTracker.shouldStopAtPosition(i)) { for (let j = 0; j < i; j++) { yield allLines[j]; } diff --git a/core/llm/autodetect.ts b/core/llm/autodetect.ts index a220b5dbd53..df575bfed7b 100644 --- a/core/llm/autodetect.ts +++ b/core/llm/autodetect.ts @@ -400,5 +400,6 @@ export { autodetectTemplateType, llmCanGenerateInParallel, modelSupportsImages, - modelSupportsTools, + modelSupportsTools }; + diff --git a/gui/src/components/StyledMarkdownPreview/utils/patchNestedMarkdown.ts b/gui/src/components/StyledMarkdownPreview/utils/patchNestedMarkdown.ts index 224ed18bf02..562c7008625 100644 --- a/gui/src/components/StyledMarkdownPreview/utils/patchNestedMarkdown.ts +++ b/gui/src/components/StyledMarkdownPreview/utils/patchNestedMarkdown.ts @@ -9,6 +9,40 @@ */ import { headerIsMarkdown } from "./headerIsMarkdown"; +/** + * Optimized state tracker for markdown patch operations to avoid recomputing on each call. + */ +class MarkdownPatchStateTracker { + private trimmedLines: string[]; + private bareBacktickPositions: number[]; + + constructor(lines: string[]) { + this.trimmedLines = lines.map((l) => l.trim()); + // Pre-compute positions of all bare backtick lines for faster lookup + this.bareBacktickPositions = []; + for (let i = 0; i < this.trimmedLines.length; i++) { + if (this.trimmedLines[i].match(/^`+$/)) { + this.bareBacktickPositions.push(i); + } + } + } + + /** + * Efficiently determines if there are remaining bare backticks after the given position. + */ + getRemainingBareBackticksAfter(currentIndex: number): number { + return this.bareBacktickPositions.filter((pos) => pos > currentIndex) + .length; + } + + /** + * Checks if the line at the given index is a bare backtick line. + */ + isBareBacktickLine(index: number): boolean { + return this.bareBacktickPositions.includes(index); + } +} + export const patchNestedMarkdown = (source: string): string => { // Early return if no markdown codeblock pattern is found (including GitHub variants) if (!source.match(/```(\w*|.*)(md|markdown|gfm|github-markdown)/)) @@ -18,20 +52,18 @@ export const patchNestedMarkdown = (source: string): string => { const lines = source.split("\n"); const trimmedLines = lines.map((l) => l.trim()); + // Use optimized state tracker for efficient bare backtick analysis + const stateTracker = new MarkdownPatchStateTracker(lines); + for (let i = 0; i < trimmedLines.length; i++) { const line = trimmedLines[i]; if (nestCount > 0) { // Inside a markdown block - if (line.match(/^`+$/)) { - // Found bare backticks - // Count how many bare backticks are remaining after this one - let remainingBareBackticks = 0; - for (let j = i + 1; j < trimmedLines.length; j++) { - if (trimmedLines[j].match(/^`+$/)) { - remainingBareBackticks++; - } - } + if (stateTracker.isBareBacktickLine(i)) { + // Found bare backticks - use optimized lookup for remaining count + const remainingBareBackticks = + stateTracker.getRemainingBareBackticksAfter(i); // If this is the last bare backticks, it closes the markdown block if (remainingBareBackticks === 0) { From f6d6c4fb81dd81eddd68691fb9fcc4c54539649e Mon Sep 17 00:00:00 2001 From: chezsmithy Date: Fri, 4 Jul 2025 13:57:49 -0700 Subject: [PATCH 39/97] deduplicate code --- .../filtering/streamTransforms/lineStream.ts | 156 +++-------------- .../streamTransforms/lineStream.vitest.ts | 79 --------- core/edit/lazy/streamLazyApply.ts | 159 +----------------- core/utils/markdownUtils.ts | 113 +++++++++++++ core/utils/markdownUtils.vitest.ts | 80 +++++++++ core/utils/streamMarkdownUtils.ts | 122 ++++++++++++++ core/utils/streamMarkdownUtils.vitest.ts | 102 +++++++++++ 7 files changed, 441 insertions(+), 370 deletions(-) create mode 100644 core/utils/markdownUtils.ts create mode 100644 core/utils/markdownUtils.vitest.ts create mode 100644 core/utils/streamMarkdownUtils.ts create mode 100644 core/utils/streamMarkdownUtils.vitest.ts diff --git a/core/autocomplete/filtering/streamTransforms/lineStream.ts b/core/autocomplete/filtering/streamTransforms/lineStream.ts index 182990fef5b..70ef1d20ea5 100644 --- a/core/autocomplete/filtering/streamTransforms/lineStream.ts +++ b/core/autocomplete/filtering/streamTransforms/lineStream.ts @@ -3,6 +3,17 @@ import { distance } from "fastest-levenshtein"; import { DiffLine } from "../../.."; import { LineStream } from "../../../diff/util"; +import { + headerIsMarkdown, + isMarkdownFile, + MarkdownBlockStateTracker, + collectAllLines, +} from "../../../utils/markdownUtils"; +import { + shouldStopAtMarkdownBlock, + processBlockNesting as processBlockNestingUtil, +} from "../../../utils/streamMarkdownUtils"; + export { filterCodeBlockLines } from "./filterCodeBlock"; export type LineFilter = (args: { @@ -18,23 +29,6 @@ export type CharacterFilter = (args: { multiline: boolean; }) => AsyncGenerator; -// Duplicated from gui/src/components/StyledMarkdownPreview/utils/headerIsMarkdown.ts -function headerIsMarkdown(header: string): boolean { - return ( - header === "md" || - header === "markdown" || - header === "gfm" || - header === "github-markdown" || - header.includes(" md") || - header.includes(" markdown") || - header.includes(" gfm") || - header.includes(" github-markdown") || - header.split(" ")[0]?.split(".").pop() === "md" || - header.split(" ")[0]?.split(".").pop() === "markdown" || - header.split(" ")[0]?.split(".").pop() === "gfm" - ); -} - function isBracketEnding(line: string): boolean { return line .trim() @@ -124,19 +118,6 @@ function isUselessLine(line: string): boolean { return hasUselessLine || trimmed.startsWith("// end"); } -/** - * Determines if a file is a markdown file based on its filepath. - */ -export function isMarkdownFile(filepath?: string): boolean { - if (!filepath) { - return false; - } - - return ["md", "markdown", "gfm"].includes( - filepath.split(".").pop()?.toLowerCase() || "", - ); -} - /** * Determines if the code block has nested markdown blocks. */ @@ -147,116 +128,25 @@ export function hasNestedMarkdownBlocks( return ( (firstLine.startsWith("```") && headerIsMarkdown(firstLine.replace(/`/g, ""))) || - Boolean(filepath && headerIsMarkdown(filepath)) + Boolean(filepath && isMarkdownFile(filepath)) ); } -/** - * Collects all lines from a LineStream into an array for analysis. - */ -export async function collectAllLines(rawLines: LineStream): Promise { - const allLines: string[] = []; - for await (const line of rawLines) { - allLines.push(line); - } - return allLines; -} - -/** - * State tracker for markdown block analysis to avoid recomputing on each call. - */ -export class MarkdownBlockState { - private trimmedLines: string[]; - private bareBacktickPositions: number[]; - private markdownNestCount: number = 0; - private lastProcessedIndex: number = -1; - - constructor(allLines: string[]) { - this.trimmedLines = allLines.map((l) => l.trim()); - // Pre-compute positions of all bare backtick lines for faster lookup - this.bareBacktickPositions = []; - for (let i = 0; i < this.trimmedLines.length; i++) { - if (this.trimmedLines[i].match(/^`+$/)) { - this.bareBacktickPositions.push(i); - } - } - } - - /** - * Determines if we should stop at the given markdown block position. - * Maintains state across calls to avoid redundant computation. - */ - shouldStopAtPosition(currentIndex: number): boolean { - if (this.trimmedLines[currentIndex] !== "```") { - return false; - } - - // Process any lines we haven't seen yet up to currentIndex - for (let j = this.lastProcessedIndex + 1; j <= currentIndex; j++) { - const currentLine = this.trimmedLines[j]; - - if (this.markdownNestCount > 0) { - // Inside a markdown block - if (currentLine.match(/^`+$/)) { - // Found bare backticks - check if this is the last one - if (j === currentIndex) { - const remainingBareBackticks = this.bareBacktickPositions.filter( - (pos) => pos > j, - ).length; - if (remainingBareBackticks === 0) { - this.markdownNestCount = 0; - this.lastProcessedIndex = j; - return true; - } - } - } else if (currentLine.startsWith("```")) { - // Going into a nested codeblock - this.markdownNestCount++; - } - } else { - // Not inside a markdown block yet - if (currentLine.startsWith("```")) { - const header = currentLine.replaceAll("`", ""); - if (headerIsMarkdown(header)) { - this.markdownNestCount = 1; - } - } - } - } - - this.lastProcessedIndex = currentIndex; - return false; - } -} - -/** - * Determines if we should stop at a markdown block based on nested markdown logic. - * This handles the complex case where markdown blocks contain other markdown blocks. - * Uses optimized state tracking to avoid redundant computation. - */ -export function shouldStopAtMarkdownBlock( - stateTracker: MarkdownBlockState, - currentIndex: number, -): boolean { - return stateTracker.shouldStopAtPosition(currentIndex); -} +// Re-export shared utilities +export { collectAllLines, isMarkdownFile }; +export { MarkdownBlockStateTracker as MarkdownBlockState }; +export { shouldStopAtMarkdownBlock }; -/** - * Processes block nesting logic and returns updated state. - */ +// Wrapper for processBlockNesting with local shouldRemoveLineBeforeStart function export function processBlockNesting( line: string, seenFirstFence: boolean, ): { newSeenFirstFence: boolean; shouldSkip: boolean } { - if (!seenFirstFence && shouldRemoveLineBeforeStart(line)) { - return { newSeenFirstFence: false, shouldSkip: true }; - } - - if (!seenFirstFence) { - return { newSeenFirstFence: true, shouldSkip: false }; - } - - return { newSeenFirstFence: seenFirstFence, shouldSkip: false }; + return processBlockNestingUtil( + line, + seenFirstFence, + shouldRemoveLineBeforeStart, + ); } export const USELESS_LINES = [""]; @@ -326,7 +216,7 @@ export async function* avoidPathLine( // Sometimes the model with copy this pattern, which is unwanted for await (const line of stream) { if (line.startsWith(`${comment} Path: `)) { - continue; + continue; // continue in the Continue codebase! How meta! } yield line; } diff --git a/core/autocomplete/filtering/streamTransforms/lineStream.vitest.ts b/core/autocomplete/filtering/streamTransforms/lineStream.vitest.ts index ff137f442a6..1cd569ae4ca 100644 --- a/core/autocomplete/filtering/streamTransforms/lineStream.vitest.ts +++ b/core/autocomplete/filtering/streamTransforms/lineStream.vitest.ts @@ -846,32 +846,6 @@ describe("lineStream", () => { }); // Tests for new helper functions - describe("isMarkdownFile", () => { - it("should return true for markdown file extensions", () => { - expect(lineStream.isMarkdownFile("README.md")).toBe(true); - expect(lineStream.isMarkdownFile("docs.markdown")).toBe(true); - expect(lineStream.isMarkdownFile("notes.gfm")).toBe(true); - expect(lineStream.isMarkdownFile("path/to/file.md")).toBe(true); - }); - - it("should return false for non-markdown file extensions", () => { - expect(lineStream.isMarkdownFile("script.js")).toBe(false); - expect(lineStream.isMarkdownFile("styles.css")).toBe(false); - expect(lineStream.isMarkdownFile("document.txt")).toBe(false); - expect(lineStream.isMarkdownFile("config.json")).toBe(false); - }); - - it("should return false for undefined or empty filepath", () => { - expect(lineStream.isMarkdownFile(undefined)).toBe(false); - expect(lineStream.isMarkdownFile("")).toBe(false); - }); - - it("should handle case insensitive extensions", () => { - expect(lineStream.isMarkdownFile("README.MD")).toBe(true); - expect(lineStream.isMarkdownFile("docs.MARKDOWN")).toBe(true); - expect(lineStream.isMarkdownFile("notes.GFM")).toBe(true); - }); - }); describe("hasNestedMarkdownBlocks", () => { it("should detect nested markdown blocks from first line", () => { @@ -1037,59 +1011,6 @@ describe("lineStream", () => { }); }); - describe("processBlockNesting", () => { - it("should skip lines that should be removed before start", () => { - const result = lineStream.processBlockNesting("```typescript", false); - expect(result).toEqual({ - newSeenFirstFence: false, - shouldSkip: true, - }); - }); - - it("should skip [CODE] blocks", () => { - const result = lineStream.processBlockNesting("[CODE]", false); - expect(result).toEqual({ - newSeenFirstFence: false, - shouldSkip: true, - }); - }); - - it("should set first fence when not seen yet", () => { - const result = lineStream.processBlockNesting("const x = 5;", false); - expect(result).toEqual({ - newSeenFirstFence: true, - shouldSkip: false, - }); - }); - - it("should not change state when first fence already seen", () => { - const result = lineStream.processBlockNesting("const x = 5;", true); - expect(result).toEqual({ - newSeenFirstFence: true, - shouldSkip: false, - }); - }); - - it("should handle prefix", () => { - const result = lineStream.processBlockNesting("", false); - expect(result).toEqual({ - newSeenFirstFence: false, - shouldSkip: true, - }); - }); - - it("should handle START EDITING HERE blocks", () => { - const result = lineStream.processBlockNesting( - "", - false, - ); - expect(result).toEqual({ - newSeenFirstFence: false, - shouldSkip: true, - }); - }); - }); - describe("MarkdownBlockState", () => { it("should initialize with correct state", () => { const allLines = ["```markdown", "content", "```", "more content", "```"]; diff --git a/core/edit/lazy/streamLazyApply.ts b/core/edit/lazy/streamLazyApply.ts index 4aa746e79e8..77d952e7bfc 100644 --- a/core/edit/lazy/streamLazyApply.ts +++ b/core/edit/lazy/streamLazyApply.ts @@ -6,168 +6,11 @@ import { import { streamDiff } from "../../diff/streamDiff.js"; import { LineStream, streamLines } from "../../diff/util.js"; import { DiffLine, ILLM } from "../../index.js"; +import { stopAtLinesWithMarkdownSupport } from "../../utils/streamMarkdownUtils.js"; import { lazyApplyPromptForModel, UNCHANGED_CODE } from "./prompts.js"; import { BUFFER_LINES_BELOW, getReplacementWithLlm } from "./replace.js"; -function headerIsMarkdown(header: string): boolean { - return ( - header === "md" || - header === "markdown" || - header === "gfm" || - header === "github-markdown" || - header.includes(" md") || - header.includes(" markdown") || - header.includes(" gfm") || - header.includes(" github-markdown") || - header.split(" ")[0]?.split(".").pop() === "md" || - header.split(" ")[0]?.split(".").pop() === "markdown" || - header.split(" ")[0]?.split(".").pop() === "gfm" - ); -} - -function isMarkdownFile(filename: string): boolean { - const ext = filename.split(".").pop()?.toLowerCase(); - return ["md", "markdown", "gfm"].includes(ext || ""); -} - -/** - * Optimized state tracker for markdown block analysis to avoid recomputing on each call. - */ -class MarkdownBlockStateTracker { - private trimmedLines: string[]; - private bareBacktickPositions: number[]; - private markdownNestCount: number = 0; - private lastProcessedIndex: number = -1; - - constructor(allLines: string[]) { - this.trimmedLines = allLines.map((l) => l.trim()); - // Pre-compute positions of all bare backtick lines for faster lookup - this.bareBacktickPositions = []; - for (let i = 0; i < this.trimmedLines.length; i++) { - if (this.trimmedLines[i].match(/^`+$/)) { - this.bareBacktickPositions.push(i); - } - } - } - - /** - * Determines if we should stop at the given markdown block position. - * Maintains state across calls to avoid redundant computation. - */ - shouldStopAtPosition(currentIndex: number): boolean { - if (this.trimmedLines[currentIndex] !== "```") { - return false; - } - - // Process any lines we haven't seen yet up to currentIndex - for (let j = this.lastProcessedIndex + 1; j <= currentIndex; j++) { - const currentLine = this.trimmedLines[j]; - - if (this.markdownNestCount > 0) { - // Inside a markdown block - if (currentLine.match(/^`+$/)) { - // Found bare backticks - check if this is the last one - if (j === currentIndex) { - const remainingBareBackticks = this.bareBacktickPositions.filter( - (pos) => pos > j, - ).length; - if (remainingBareBackticks === 0) { - this.markdownNestCount = 0; - this.lastProcessedIndex = j; - return true; - } - } - } else if (currentLine.startsWith("```")) { - // Going into a nested codeblock - this.markdownNestCount++; - } - } else { - // Not inside a markdown block yet - if (currentLine.startsWith("```")) { - const header = currentLine.replaceAll("`", ""); - if (headerIsMarkdown(header)) { - this.markdownNestCount = 1; - } - } - } - } - - this.lastProcessedIndex = currentIndex; - return false; - } -} - -async function* stopAtLinesWithMarkdownSupport( - lines: LineStream, - filename: string, -): LineStream { - if (!isMarkdownFile(filename)) { - for await (const line of lines) { - if (line.trim() === "```") { - return; - } - yield line; - } - return; - } - - const allLines: string[] = []; - for await (const line of lines) { - allLines.push(line); - } - - const source = allLines.join("\n"); - if (!source.match(/```(\w*|.*)(md|markdown|gfm|github-markdown)/)) { - for (let i = 0; i < allLines.length; i++) { - if (allLines[i].trim() === "```") { - for (let j = 0; j < i; j++) { - yield allLines[j]; - } - return; - } - yield allLines[i]; - } - return; - } - - // Use optimized state tracker for markdown block analysis - const stateTracker = new MarkdownBlockStateTracker(allLines); - let nestCount = 0; - const trimmedLines = allLines.map((l) => l.trim()); - - for (let i = 0; i < trimmedLines.length; i++) { - const line = trimmedLines[i]; - - if (nestCount > 0) { - if (line.match(/^`+$/)) { - // Use optimized state tracker for markdown block logic - if (stateTracker.shouldStopAtPosition(i)) { - for (let j = 0; j < i; j++) { - yield allLines[j]; - } - return; - } - } else if (line.startsWith("```")) { - nestCount++; - } - } else { - if (line.startsWith("```")) { - const header = line.replaceAll("`", ""); - const isMarkdown = headerIsMarkdown(header); - - if (isMarkdown) { - nestCount = 1; - } - } - } - } - - for (const line of allLines) { - yield line; - } -} - export async function* streamLazyApply( oldCode: string, filename: string, diff --git a/core/utils/markdownUtils.ts b/core/utils/markdownUtils.ts new file mode 100644 index 00000000000..e292d8bf8bf --- /dev/null +++ b/core/utils/markdownUtils.ts @@ -0,0 +1,113 @@ +/** + * Utility functions for working with markdown files and code blocks + */ + +/** + * Determines if a code block header indicates markdown content + */ +export function headerIsMarkdown(header: string): boolean { + return ( + header === "md" || + header === "markdown" || + header === "gfm" || + header === "github-markdown" || + header.includes(" md") || + header.includes(" markdown") || + header.includes(" gfm") || + header.includes(" github-markdown") || + header.split(" ")[0]?.split(".").pop() === "md" || + header.split(" ")[0]?.split(".").pop() === "markdown" || + header.split(" ")[0]?.split(".").pop() === "gfm" + ); +} + +/** + * Determines if a file is a markdown file based on its filepath. + */ +export function isMarkdownFile(filepath?: string): boolean { + if (!filepath) { + return false; + } + + const ext = filepath.split(".").pop()?.toLowerCase() || ""; + return ["md", "markdown", "gfm"].includes(ext); +} + +/** + * State tracker for markdown block analysis to avoid recomputing on each call. + * Optimized to handle nested markdown code blocks. + */ +export class MarkdownBlockStateTracker { + private trimmedLines: string[]; + private bareBacktickPositions: number[]; + private markdownNestCount: number = 0; + private lastProcessedIndex: number = -1; + + constructor(allLines: string[]) { + this.trimmedLines = allLines.map((l) => l.trim()); + // Pre-compute positions of all bare backtick lines for faster lookup + this.bareBacktickPositions = []; + for (let i = 0; i < this.trimmedLines.length; i++) { + if (this.trimmedLines[i].match(/^`+$/)) { + this.bareBacktickPositions.push(i); + } + } + } + + /** + * Determines if we should stop at the given markdown block position. + * Maintains state across calls to avoid redundant computation. + */ + shouldStopAtPosition(currentIndex: number): boolean { + if (this.trimmedLines[currentIndex] !== "```") { + return false; + } + + // Process any lines we haven't seen yet up to currentIndex + for (let j = this.lastProcessedIndex + 1; j <= currentIndex; j++) { + const currentLine = this.trimmedLines[j]; + + if (this.markdownNestCount > 0) { + // Inside a markdown block + if (currentLine.match(/^`+$/)) { + // Found bare backticks - check if this is the last one + if (j === currentIndex) { + const remainingBareBackticks = this.bareBacktickPositions.filter( + (pos) => pos > j, + ).length; + if (remainingBareBackticks === 0) { + this.markdownNestCount = 0; + this.lastProcessedIndex = j; + return true; + } + } + } else if (currentLine.startsWith("```")) { + // Going into a nested codeblock + this.markdownNestCount++; + } + } else { + // Not inside a markdown block yet + if (currentLine.startsWith("```")) { + const header = currentLine.replaceAll("`", ""); + if (headerIsMarkdown(header)) { + this.markdownNestCount = 1; + } + } + } + } + + this.lastProcessedIndex = currentIndex; + return false; + } +} + +/** + * Collects all lines from a LineStream into an array for analysis. + */ +export async function collectAllLines(stream: AsyncGenerator): Promise { + const allLines: T[] = []; + for await (const line of stream) { + allLines.push(line); + } + return allLines; +} \ No newline at end of file diff --git a/core/utils/markdownUtils.vitest.ts b/core/utils/markdownUtils.vitest.ts new file mode 100644 index 00000000000..e1380e08eff --- /dev/null +++ b/core/utils/markdownUtils.vitest.ts @@ -0,0 +1,80 @@ +import { test, expect } from 'vitest'; +import { headerIsMarkdown, isMarkdownFile, MarkdownBlockStateTracker } from './markdownUtils'; + +test('headerIsMarkdown correctly identifies markdown headers', () => { + // Should return true for markdown headers + expect(headerIsMarkdown('md')).toBe(true); + expect(headerIsMarkdown('markdown')).toBe(true); + expect(headerIsMarkdown('gfm')).toBe(true); + expect(headerIsMarkdown('github-markdown')).toBe(true); + expect(headerIsMarkdown('language md')).toBe(true); + expect(headerIsMarkdown('language markdown')).toBe(true); + expect(headerIsMarkdown('filename.md')).toBe(true); + expect(headerIsMarkdown('path/to/file.md language')).toBe(true); + + // Should return false for non-markdown headers + expect(headerIsMarkdown('javascript')).toBe(false); + expect(headerIsMarkdown('typescript')).toBe(false); + expect(headerIsMarkdown('python')).toBe(false); + expect(headerIsMarkdown('')).toBe(false); +}); + +test('isMarkdownFile correctly identifies markdown files', () => { + // Should return true for markdown files + expect(isMarkdownFile('test.md')).toBe(true); + expect(isMarkdownFile('path/to/file.markdown')).toBe(true); + expect(isMarkdownFile('README.md')).toBe(true); + + // Should return false for non-markdown files + expect(isMarkdownFile('test.js')).toBe(false); + expect(isMarkdownFile('script.ts')).toBe(false); + expect(isMarkdownFile('')).toBe(false); + expect(isMarkdownFile(undefined)).toBe(false); +}); + +test('MarkdownBlockStateTracker correctly tracks nested markdown blocks', () => { + const lines = [ + '# Header', + '', + 'Some text', + '', + '```md', + 'Nested markdown content', + '```javascript', + 'function test() {', + ' return true;', + '}', + '```', + 'More nested markdown', + '```', + '', + 'End of file' + ]; + + const stateTracker = new MarkdownBlockStateTracker(lines); + + // First backtick closure is within nested block (not markdown end) + expect(stateTracker.shouldStopAtPosition(10)).toBe(false); + + // This is the backtick that closes the outer markdown block + expect(stateTracker.shouldStopAtPosition(12)).toBe(true); +}); + +test('MarkdownBlockStateTracker handles simple code blocks correctly', () => { + const lines = [ + 'Some code:', + '', + '```javascript', + 'function test() {', + ' return true;', + '}', + '```', + '', + 'More text' + ]; + + const stateTracker = new MarkdownBlockStateTracker(lines); + + // This is just a simple code block, not nested markdown + expect(stateTracker.shouldStopAtPosition(6)).toBe(false); +}); \ No newline at end of file diff --git a/core/utils/streamMarkdownUtils.ts b/core/utils/streamMarkdownUtils.ts new file mode 100644 index 00000000000..b1c8c765864 --- /dev/null +++ b/core/utils/streamMarkdownUtils.ts @@ -0,0 +1,122 @@ +import { LineStream } from "../diff/util"; +import { + isMarkdownFile, + MarkdownBlockStateTracker, + headerIsMarkdown, +} from "./markdownUtils"; + +/** + * Determines if we should stop at a markdown block based on nested markdown logic. + * This handles the complex case where markdown blocks contain other markdown blocks. + * Uses optimized state tracking to avoid redundant computation. + */ +export function shouldStopAtMarkdownBlock( + stateTracker: MarkdownBlockStateTracker, + currentIndex: number, +): boolean { + return stateTracker.shouldStopAtPosition(currentIndex); +} + +/** + * Processes block nesting logic and returns updated state. + */ +export function processBlockNesting( + line: string, + seenFirstFence: boolean, + shouldRemoveLineBeforeStart: (line: string) => boolean, +): { newSeenFirstFence: boolean; shouldSkip: boolean } { + if (!seenFirstFence && shouldRemoveLineBeforeStart(line)) { + return { newSeenFirstFence: false, shouldSkip: true }; + } + + if (!seenFirstFence) { + return { newSeenFirstFence: true, shouldSkip: false }; + } + + return { newSeenFirstFence: seenFirstFence, shouldSkip: false }; +} + +/** + * Stream transformation that stops when encountering a markdown code block ending. + * Handles nested markdown blocks in markdown files. + */ +export async function* stopAtLinesWithMarkdownSupport( + lines: LineStream, + filename: string, +): LineStream { + if (!isMarkdownFile(filename)) { + for await (const line of lines) { + if (line.trim() === "```") { + return; + } + yield line; + } + return; + } + + const allLines: string[] = []; + for await (const line of lines) { + allLines.push(line); + } + + const source = allLines.join("\n"); + if (!source.match(/```(\w*|.*)(md|markdown|gfm|github-markdown)/)) { + // No nested markdown blocks detected, check for simple ``` stopping condition + let foundStandaloneBackticks = false; + for (let i = 0; i < allLines.length; i++) { + if (allLines[i].trim() === "```") { + // Found standalone backticks, yield lines up to this point + for (let j = 0; j < i; j++) { + yield allLines[j]; + } + foundStandaloneBackticks = true; + return; + } + } + + // No standalone backticks found, yield all lines + if (!foundStandaloneBackticks) { + for (const line of allLines) { + yield line; + } + } + return; + } + + // Use optimized state tracker for markdown block analysis + const stateTracker = new MarkdownBlockStateTracker(allLines); + let nestCount = 0; + const trimmedLines = allLines.map((l) => l.trim()); + + for (let i = 0; i < trimmedLines.length; i++) { + const line = trimmedLines[i]; + + if (nestCount > 0) { + if (line.match(/^`+$/)) { + // Use optimized state tracker for markdown block logic + if (stateTracker.shouldStopAtPosition(i)) { + for (let j = 0; j < i; j++) { + yield allLines[j]; + } + return; + } + } else if (line.startsWith("```")) { + nestCount++; + } + } else { + if (line.startsWith("```")) { + const header = line.replaceAll("`", ""); + const isMarkdown = headerIsMarkdown(header); + + if (isMarkdown) { + nestCount = 1; + } + } + } + } + + // If we get here, yield all lines + for (const line of allLines) { + yield line; + } +} diff --git a/core/utils/streamMarkdownUtils.vitest.ts b/core/utils/streamMarkdownUtils.vitest.ts new file mode 100644 index 00000000000..097b1fbd57a --- /dev/null +++ b/core/utils/streamMarkdownUtils.vitest.ts @@ -0,0 +1,102 @@ +import { expect, test } from "vitest"; +import { LineStream } from "../diff/util"; +import { + processBlockNesting, + stopAtLinesWithMarkdownSupport, +} from "./streamMarkdownUtils"; + +test("processBlockNesting correctly handles starting blocks", () => { + // Mock function to determine which lines should be removed + const shouldRemoveLineBeforeStart = (line: string) => + line === "[CODE]" || line === "```"; + + // Test not seeing first fence yet + const result1 = processBlockNesting( + "[CODE]", + false, + shouldRemoveLineBeforeStart, + ); + expect(result1.newSeenFirstFence).toBe(false); + expect(result1.shouldSkip).toBe(true); + + // Test not seeing first fence but line shouldn't be removed + const result2 = processBlockNesting( + "normal code", + false, + shouldRemoveLineBeforeStart, + ); + expect(result2.newSeenFirstFence).toBe(true); + expect(result2.shouldSkip).toBe(false); + + // Test already seen first fence + const result3 = processBlockNesting( + "more code", + true, + shouldRemoveLineBeforeStart, + ); + expect(result3.newSeenFirstFence).toBe(true); + expect(result3.shouldSkip).toBe(false); +}); + +test("stopAtLinesWithMarkdownSupport handles non-markdown files", async () => { + // Create a mock line stream + const mockLines = ["line 1", "line 2", "```", "line 4"]; + const lineStream: LineStream = (async function* () { + for (const line of mockLines) { + yield line; + } + })(); + + // Test with a non-markdown file + const filename = "test.js"; + const result = stopAtLinesWithMarkdownSupport(lineStream, filename); + + // Should only yield lines up to the backticks + const collected = []; + for await (const line of result) { + collected.push(line); + } + + expect(collected).toEqual(["line 1", "line 2"]); +}); + +test("stopAtLinesWithMarkdownSupport handles markdown files with no nested blocks", async () => { + // Create a mock line stream with markdown content - but NOT nested markdown blocks + const mockLines = [ + "Some markdown text", + "", + "```javascript", + "function test() {", + " return true;", + "}", + "```", + "More text", + ]; + + const lineStream: LineStream = (async function* () { + for (const line of mockLines) { + yield line; + } + })(); + + // Test with a markdown file + const filename = "test.md"; + const result = stopAtLinesWithMarkdownSupport(lineStream, filename); + + // Should yield everything since there's no nested markdown blocks + const collected = []; + for await (const line of result) { + collected.push(line); + } + + // The function should stop at the standalone ``` line (not yield it or lines after) + // This is the correct behavior - it stops when it encounters standalone backticks + expect(collected).toEqual([ + "Some markdown text", + "", + "```javascript", + "function test() {", + " return true;", + "}", + ]); +}); From db25f4a89b6d0f035d21fe08e6c0e6f48bae9114 Mon Sep 17 00:00:00 2001 From: chezsmithy Date: Fri, 4 Jul 2025 14:03:37 -0700 Subject: [PATCH 40/97] prettier fixes --- core/utils/markdownUtils.ts | 6 +- core/utils/markdownUtils.vitest.ts | 108 +++++++++++++++-------------- 2 files changed, 60 insertions(+), 54 deletions(-) diff --git a/core/utils/markdownUtils.ts b/core/utils/markdownUtils.ts index e292d8bf8bf..edf827a0878 100644 --- a/core/utils/markdownUtils.ts +++ b/core/utils/markdownUtils.ts @@ -104,10 +104,12 @@ export class MarkdownBlockStateTracker { /** * Collects all lines from a LineStream into an array for analysis. */ -export async function collectAllLines(stream: AsyncGenerator): Promise { +export async function collectAllLines( + stream: AsyncGenerator, +): Promise { const allLines: T[] = []; for await (const line of stream) { allLines.push(line); } return allLines; -} \ No newline at end of file +} diff --git a/core/utils/markdownUtils.vitest.ts b/core/utils/markdownUtils.vitest.ts index e1380e08eff..211bcd8e107 100644 --- a/core/utils/markdownUtils.vitest.ts +++ b/core/utils/markdownUtils.vitest.ts @@ -1,80 +1,84 @@ -import { test, expect } from 'vitest'; -import { headerIsMarkdown, isMarkdownFile, MarkdownBlockStateTracker } from './markdownUtils'; +import { test, expect } from "vitest"; +import { + headerIsMarkdown, + isMarkdownFile, + MarkdownBlockStateTracker, +} from "./markdownUtils"; -test('headerIsMarkdown correctly identifies markdown headers', () => { +test("headerIsMarkdown correctly identifies markdown headers", () => { // Should return true for markdown headers - expect(headerIsMarkdown('md')).toBe(true); - expect(headerIsMarkdown('markdown')).toBe(true); - expect(headerIsMarkdown('gfm')).toBe(true); - expect(headerIsMarkdown('github-markdown')).toBe(true); - expect(headerIsMarkdown('language md')).toBe(true); - expect(headerIsMarkdown('language markdown')).toBe(true); - expect(headerIsMarkdown('filename.md')).toBe(true); - expect(headerIsMarkdown('path/to/file.md language')).toBe(true); + expect(headerIsMarkdown("md")).toBe(true); + expect(headerIsMarkdown("markdown")).toBe(true); + expect(headerIsMarkdown("gfm")).toBe(true); + expect(headerIsMarkdown("github-markdown")).toBe(true); + expect(headerIsMarkdown("language md")).toBe(true); + expect(headerIsMarkdown("language markdown")).toBe(true); + expect(headerIsMarkdown("filename.md")).toBe(true); + expect(headerIsMarkdown("path/to/file.md language")).toBe(true); // Should return false for non-markdown headers - expect(headerIsMarkdown('javascript')).toBe(false); - expect(headerIsMarkdown('typescript')).toBe(false); - expect(headerIsMarkdown('python')).toBe(false); - expect(headerIsMarkdown('')).toBe(false); + expect(headerIsMarkdown("javascript")).toBe(false); + expect(headerIsMarkdown("typescript")).toBe(false); + expect(headerIsMarkdown("python")).toBe(false); + expect(headerIsMarkdown("")).toBe(false); }); -test('isMarkdownFile correctly identifies markdown files', () => { +test("isMarkdownFile correctly identifies markdown files", () => { // Should return true for markdown files - expect(isMarkdownFile('test.md')).toBe(true); - expect(isMarkdownFile('path/to/file.markdown')).toBe(true); - expect(isMarkdownFile('README.md')).toBe(true); + expect(isMarkdownFile("test.md")).toBe(true); + expect(isMarkdownFile("path/to/file.markdown")).toBe(true); + expect(isMarkdownFile("README.md")).toBe(true); // Should return false for non-markdown files - expect(isMarkdownFile('test.js')).toBe(false); - expect(isMarkdownFile('script.ts')).toBe(false); - expect(isMarkdownFile('')).toBe(false); + expect(isMarkdownFile("test.js")).toBe(false); + expect(isMarkdownFile("script.ts")).toBe(false); + expect(isMarkdownFile("")).toBe(false); expect(isMarkdownFile(undefined)).toBe(false); }); -test('MarkdownBlockStateTracker correctly tracks nested markdown blocks', () => { +test("MarkdownBlockStateTracker correctly tracks nested markdown blocks", () => { const lines = [ - '# Header', - '', - 'Some text', - '', - '```md', - 'Nested markdown content', - '```javascript', - 'function test() {', - ' return true;', - '}', - '```', - 'More nested markdown', - '```', - '', - 'End of file' + "# Header", + "", + "Some text", + "", + "```md", + "Nested markdown content", + "```javascript", + "function test() {", + " return true;", + "}", + "```", + "More nested markdown", + "```", + "", + "End of file", ]; const stateTracker = new MarkdownBlockStateTracker(lines); - + // First backtick closure is within nested block (not markdown end) expect(stateTracker.shouldStopAtPosition(10)).toBe(false); - + // This is the backtick that closes the outer markdown block expect(stateTracker.shouldStopAtPosition(12)).toBe(true); }); -test('MarkdownBlockStateTracker handles simple code blocks correctly', () => { +test("MarkdownBlockStateTracker handles simple code blocks correctly", () => { const lines = [ - 'Some code:', - '', - '```javascript', - 'function test() {', - ' return true;', - '}', - '```', - '', - 'More text' + "Some code:", + "", + "```javascript", + "function test() {", + " return true;", + "}", + "```", + "", + "More text", ]; const stateTracker = new MarkdownBlockStateTracker(lines); - + // This is just a simple code block, not nested markdown expect(stateTracker.shouldStopAtPosition(6)).toBe(false); -}); \ No newline at end of file +}); From 361685dc9da5b0a643b2ac038d76df61220f09f5 Mon Sep 17 00:00:00 2001 From: chezsmithy Date: Fri, 4 Jul 2025 21:38:22 -0700 Subject: [PATCH 41/97] remove nova change --- core/edit/streamDiffLines.ts | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/core/edit/streamDiffLines.ts b/core/edit/streamDiffLines.ts index c2cd32b0e2c..7cf1af2f741 100644 --- a/core/edit/streamDiffLines.ts +++ b/core/edit/streamDiffLines.ts @@ -55,11 +55,7 @@ export async function* addIndentation( } function modelIsInept(model: string): boolean { - return !( - model.includes("gpt") || - model.includes("claude") || - model.includes("nova") - ); + return !(model.includes("gpt") || model.includes("claude")); } export async function* streamDiffLines({ From 1bd49276c09d1e65a86fc91441e9244034e2752e Mon Sep 17 00:00:00 2001 From: chezsmithy Date: Sun, 13 Jul 2025 12:15:45 -0700 Subject: [PATCH 42/97] fix re-exports --- .../streamTransforms/filterCodeBlock.ts | 18 +++++--- .../filtering/streamTransforms/lineStream.ts | 12 +---- .../streamTransforms/lineStream.vitest.ts | 46 ++++++++++--------- 3 files changed, 38 insertions(+), 38 deletions(-) diff --git a/core/autocomplete/filtering/streamTransforms/filterCodeBlock.ts b/core/autocomplete/filtering/streamTransforms/filterCodeBlock.ts index 28af7d372da..31e37b844e4 100644 --- a/core/autocomplete/filtering/streamTransforms/filterCodeBlock.ts +++ b/core/autocomplete/filtering/streamTransforms/filterCodeBlock.ts @@ -2,11 +2,17 @@ import { LineStream } from "../../../diff/util"; import { collectAllLines, - hasNestedMarkdownBlocks, - MarkdownBlockState, + MarkdownBlockStateTracker, +} from "../../../utils/markdownUtils"; + +import { processBlockNesting, - shouldChangeLineAndStop, shouldStopAtMarkdownBlock, +} from "../../../utils/streamMarkdownUtils"; + +import { + hasNestedMarkdownBlocks, + shouldChangeLineAndStop, } from "./lineStream"; /** @@ -68,16 +74,16 @@ export async function* filterCodeBlockLines( let nestCount = 0; // Create optimized state tracker for markdown block analysis if needed - let markdownStateTracker: MarkdownBlockState | undefined; + let markdownStateTracker: MarkdownBlockStateTracker | undefined; if (hasNestedMarkdown) { - markdownStateTracker = new MarkdownBlockState(allLines); + markdownStateTracker = new MarkdownBlockStateTracker(allLines); } for (let i = 0; i < allLines.length; i++) { const line = allLines[i]; // Process block nesting logic for the first fence - const nesting = processBlockNesting(line, seenFirstFence); + const nesting = processBlockNesting(line, seenFirstFence, shouldRemoveLineBeforeStart); if (nesting.shouldSkip) { continue; // Filter out starting ``` or START block } diff --git a/core/autocomplete/filtering/streamTransforms/lineStream.ts b/core/autocomplete/filtering/streamTransforms/lineStream.ts index 70ef1d20ea5..b355a2aa19a 100644 --- a/core/autocomplete/filtering/streamTransforms/lineStream.ts +++ b/core/autocomplete/filtering/streamTransforms/lineStream.ts @@ -5,13 +5,10 @@ import { LineStream } from "../../../diff/util"; import { headerIsMarkdown, - isMarkdownFile, - MarkdownBlockStateTracker, - collectAllLines, + isMarkdownFile } from "../../../utils/markdownUtils"; import { - shouldStopAtMarkdownBlock, - processBlockNesting as processBlockNestingUtil, + processBlockNesting as processBlockNestingUtil } from "../../../utils/streamMarkdownUtils"; export { filterCodeBlockLines } from "./filterCodeBlock"; @@ -132,11 +129,6 @@ export function hasNestedMarkdownBlocks( ); } -// Re-export shared utilities -export { collectAllLines, isMarkdownFile }; -export { MarkdownBlockStateTracker as MarkdownBlockState }; -export { shouldStopAtMarkdownBlock }; - // Wrapper for processBlockNesting with local shouldRemoveLineBeforeStart function export function processBlockNesting( line: string, diff --git a/core/autocomplete/filtering/streamTransforms/lineStream.vitest.ts b/core/autocomplete/filtering/streamTransforms/lineStream.vitest.ts index 1cd569ae4ca..994b47b1a75 100644 --- a/core/autocomplete/filtering/streamTransforms/lineStream.vitest.ts +++ b/core/autocomplete/filtering/streamTransforms/lineStream.vitest.ts @@ -1,5 +1,7 @@ import { beforeEach, describe, expect, it, Mock, vi } from "vitest"; +import { collectAllLines, MarkdownBlockStateTracker } from "../../../utils/markdownUtils"; +import { shouldStopAtMarkdownBlock } from "../../../utils/streamMarkdownUtils"; import * as lineStream from "./lineStream"; // eslint-disable-next-line max-lines-per-function @@ -897,7 +899,7 @@ describe("lineStream", () => { "line3", ]); - const result = await lineStream.collectAllLines(linesGenerator); + const result = await collectAllLines(linesGenerator); expect(result).toEqual(["line1", "line2", "line3"]); }); @@ -905,7 +907,7 @@ describe("lineStream", () => { it("should handle empty stream", async () => { const linesGenerator = await getLineGenerator([]); - const result = await lineStream.collectAllLines(linesGenerator); + const result = await collectAllLines(linesGenerator); expect(result).toEqual([]); }); @@ -913,7 +915,7 @@ describe("lineStream", () => { it("should handle stream with empty lines", async () => { const linesGenerator = await getLineGenerator(["", "line2", "", "line4"]); - const result = await lineStream.collectAllLines(linesGenerator); + const result = await collectAllLines(linesGenerator); expect(result).toEqual(["", "line2", "", "line4"]); }); @@ -922,14 +924,14 @@ describe("lineStream", () => { describe("shouldStopAtMarkdownBlock", () => { it("should return false when current line is not closing backticks", () => { const allLines = ["```markdown", "content", "more content"]; - const state = new lineStream.MarkdownBlockState(allLines); - expect(lineStream.shouldStopAtMarkdownBlock(state, 2)).toBe(false); + const state = new MarkdownBlockStateTracker(allLines); + expect(shouldStopAtMarkdownBlock(state, 2)).toBe(false); }); it("should handle simple nested markdown case", () => { const allLines = ["```markdown", "# Title", "```"]; - const state = new lineStream.MarkdownBlockState(allLines); - expect(lineStream.shouldStopAtMarkdownBlock(state, 2)).toBe(true); + const state = new MarkdownBlockStateTracker(allLines); + expect(shouldStopAtMarkdownBlock(state, 2)).toBe(true); }); it("should handle complex nested markdown with inner code blocks", () => { @@ -941,11 +943,11 @@ describe("lineStream", () => { "```", "```", ]; - const state = new lineStream.MarkdownBlockState(allLines); + const state = new MarkdownBlockStateTracker(allLines); // At index 4 (first inner closing), should not stop - expect(lineStream.shouldStopAtMarkdownBlock(state, 4)).toBe(false); + expect(shouldStopAtMarkdownBlock(state, 4)).toBe(false); // At index 5 (outer closing), should stop - expect(lineStream.shouldStopAtMarkdownBlock(state, 5)).toBe(true); + expect(shouldStopAtMarkdownBlock(state, 5)).toBe(true); }); it("should handle multiple bare backticks scenario", () => { @@ -956,11 +958,11 @@ describe("lineStream", () => { "More content", "```", ]; - const state = new lineStream.MarkdownBlockState(allLines); + const state = new MarkdownBlockStateTracker(allLines); // At index 2, should not stop (not the last bare backticks) - expect(lineStream.shouldStopAtMarkdownBlock(state, 2)).toBe(false); + expect(shouldStopAtMarkdownBlock(state, 2)).toBe(false); // At index 4, should stop (last bare backticks) - expect(lineStream.shouldStopAtMarkdownBlock(state, 4)).toBe(true); + expect(shouldStopAtMarkdownBlock(state, 4)).toBe(true); }); }); @@ -1014,7 +1016,7 @@ describe("lineStream", () => { describe("MarkdownBlockState", () => { it("should initialize with correct state", () => { const allLines = ["```markdown", "content", "```", "more content", "```"]; - const state = new lineStream.MarkdownBlockState(allLines); + const state = new MarkdownBlockStateTracker(allLines); // Test basic initialization - we can't directly test private properties, // but we can test the behavior through shouldStopAtPosition @@ -1023,7 +1025,7 @@ describe("lineStream", () => { it("should correctly identify bare backticks positions", () => { const allLines = ["```markdown", "```", "content", "```"]; - const state = new lineStream.MarkdownBlockState(allLines); + const state = new MarkdownBlockStateTracker(allLines); // At position 1 (first bare backticks), should not stop expect(state.shouldStopAtPosition(1)).toBe(false); @@ -1041,7 +1043,7 @@ describe("lineStream", () => { "More content", "```", ]; - const state = new lineStream.MarkdownBlockState(allLines); + const state = new MarkdownBlockStateTracker(allLines); // Process positions incrementally expect(state.shouldStopAtPosition(2)).toBe(false); // Start of inner block @@ -1066,7 +1068,7 @@ describe("lineStream", () => { "Final notes", "```", ]; - const state = new lineStream.MarkdownBlockState(allLines); + const state = new MarkdownBlockStateTracker(allLines); // Test multiple positions in sequence expect(state.shouldStopAtPosition(6)).toBe(false); // End of first inner block @@ -1076,7 +1078,7 @@ describe("lineStream", () => { it("should handle non-backtick lines correctly", () => { const allLines = ["```markdown", "regular content", "```"]; - const state = new lineStream.MarkdownBlockState(allLines); + const state = new MarkdownBlockStateTracker(allLines); // Position 1 is not backticks, should return false expect(state.shouldStopAtPosition(1)).toBe(false); @@ -1084,7 +1086,7 @@ describe("lineStream", () => { it("should handle empty lines and edge cases", () => { const allLines = ["```markdown", "", "```"]; - const state = new lineStream.MarkdownBlockState(allLines); + const state = new MarkdownBlockStateTracker(allLines); expect(state.shouldStopAtPosition(1)).toBe(false); // Empty line expect(state.shouldStopAtPosition(2)).toBe(true); // Closing backticks @@ -1092,7 +1094,7 @@ describe("lineStream", () => { it("should reset nest count when reaching final bare backticks", () => { const allLines = ["```markdown", "content", "```"]; - const state = new lineStream.MarkdownBlockState(allLines); + const state = new MarkdownBlockStateTracker(allLines); // First call should stop and reset count expect(state.shouldStopAtPosition(2)).toBe(true); @@ -1112,7 +1114,7 @@ describe("lineStream", () => { return `line ${i}`; }); - const state = new lineStream.MarkdownBlockState(allLines); + const state = new MarkdownBlockStateTracker(allLines); // Test that we can call multiple times without recomputing everything const start = performance.now(); @@ -1120,7 +1122,7 @@ describe("lineStream", () => { // Test several positions in sequence for (let i = 10; i < 90; i += 10) { if (allLines[i].trim() === "```") { - lineStream.shouldStopAtMarkdownBlock(state, i); + shouldStopAtMarkdownBlock(state, i); } } From 7cd725264ab35ed9b79816e844ffdec7a8700c43 Mon Sep 17 00:00:00 2001 From: chezsmithy Date: Sun, 13 Jul 2025 12:47:28 -0700 Subject: [PATCH 43/97] fix duplicate logic --- core/utils/streamMarkdownUtils.ts | 33 ++++++------------------------- 1 file changed, 6 insertions(+), 27 deletions(-) diff --git a/core/utils/streamMarkdownUtils.ts b/core/utils/streamMarkdownUtils.ts index b1c8c765864..94505dfdfc3 100644 --- a/core/utils/streamMarkdownUtils.ts +++ b/core/utils/streamMarkdownUtils.ts @@ -1,8 +1,7 @@ import { LineStream } from "../diff/util"; import { isMarkdownFile, - MarkdownBlockStateTracker, - headerIsMarkdown, + MarkdownBlockStateTracker } from "./markdownUtils"; /** @@ -85,33 +84,13 @@ export async function* stopAtLinesWithMarkdownSupport( // Use optimized state tracker for markdown block analysis const stateTracker = new MarkdownBlockStateTracker(allLines); - let nestCount = 0; - const trimmedLines = allLines.map((l) => l.trim()); - for (let i = 0; i < trimmedLines.length; i++) { - const line = trimmedLines[i]; - - if (nestCount > 0) { - if (line.match(/^`+$/)) { - // Use optimized state tracker for markdown block logic - if (stateTracker.shouldStopAtPosition(i)) { - for (let j = 0; j < i; j++) { - yield allLines[j]; - } - return; - } - } else if (line.startsWith("```")) { - nestCount++; - } - } else { - if (line.startsWith("```")) { - const header = line.replaceAll("`", ""); - const isMarkdown = headerIsMarkdown(header); - - if (isMarkdown) { - nestCount = 1; - } + for (let i = 0; i < allLines.length; i++) { + if (stateTracker.shouldStopAtPosition(i)) { + for (let j = 0; j < i; j++) { + yield allLines[j]; } + return; } } From f604c17c27951119f33e1a5bc0f8c23850416c3d Mon Sep 17 00:00:00 2001 From: chezsmithy Date: Sun, 13 Jul 2025 13:07:08 -0700 Subject: [PATCH 44/97] fix rundundant trimming --- .../StyledMarkdownPreview/utils/patchNestedMarkdown.ts | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/gui/src/components/StyledMarkdownPreview/utils/patchNestedMarkdown.ts b/gui/src/components/StyledMarkdownPreview/utils/patchNestedMarkdown.ts index 562c7008625..b054f0bd9c0 100644 --- a/gui/src/components/StyledMarkdownPreview/utils/patchNestedMarkdown.ts +++ b/gui/src/components/StyledMarkdownPreview/utils/patchNestedMarkdown.ts @@ -41,6 +41,13 @@ class MarkdownPatchStateTracker { isBareBacktickLine(index: number): boolean { return this.bareBacktickPositions.includes(index); } + + /** + * Gets the trimmed lines array. + */ + getTrimmedLines(): string[] { + return this.trimmedLines; + } } export const patchNestedMarkdown = (source: string): string => { @@ -50,10 +57,10 @@ export const patchNestedMarkdown = (source: string): string => { let nestCount = 0; const lines = source.split("\n"); - const trimmedLines = lines.map((l) => l.trim()); // Use optimized state tracker for efficient bare backtick analysis const stateTracker = new MarkdownPatchStateTracker(lines); + const trimmedLines = stateTracker.getTrimmedLines(); for (let i = 0; i < trimmedLines.length; i++) { const line = trimmedLines[i]; From ad2bbc28c9256bf16c2918e6a81225d4860fbcb6 Mon Sep 17 00:00:00 2001 From: chezsmithy Date: Sun, 13 Jul 2025 13:20:31 -0700 Subject: [PATCH 45/97] add back comments --- core/edit/lazy/streamLazyApply.ts | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/core/edit/lazy/streamLazyApply.ts b/core/edit/lazy/streamLazyApply.ts index 77d952e7bfc..f806e956f4c 100644 --- a/core/edit/lazy/streamLazyApply.ts +++ b/core/edit/lazy/streamLazyApply.ts @@ -26,6 +26,7 @@ export async function* streamLazyApply( const promptMessages = promptFactory(oldCode, filename, newCode); const lazyCompletion = llm.streamChat(promptMessages, abortController.signal); + // Do find and replace over the lazy edit response async function* replacementFunction( oldCode: string, linesBefore: string[], @@ -52,12 +53,14 @@ export async function* streamLazyApply( lazyCompletionLines = filterLeadingNewline(lazyCompletionLines); lazyCompletionLines = removeTrailingWhitespace(lazyCompletionLines); + // Fill in unchanged code let lines = streamFillUnchangedCode( lazyCompletionLines, oldCode, replacementFunction, ); + // Convert output to diff const oldLines = oldCode.split(/\r?\n/); let diffLines = streamDiff(oldLines, lines); diffLines = filterLeadingAndTrailingNewLineInsertion(diffLines); @@ -78,11 +81,13 @@ async function* streamFillUnchangedCode( const newLines = []; let buffer = []; let waitingForBuffer = false; + for await (const line of lines) { if (waitingForBuffer) { buffer.push(line); if (buffer.length >= BUFFER_LINES_BELOW) { + // Find the replacement and continue streaming once we have it const replacementLines = replacementFunction(oldCode, newLines, buffer); let replacement = ""; for await (const replacementLine of replacementLines) { @@ -90,6 +95,7 @@ async function* streamFillUnchangedCode( newLines.push(replacementLine); replacement += replacementLine + "\n"; } + // Yield the buffered lines for (const bufferedLine of buffer) { yield bufferedLine; newLines.push(bufferedLine); @@ -104,7 +110,9 @@ async function* streamFillUnchangedCode( } if (line.includes(UNCHANGED_CODE)) { + // Buffer so we can give the context of BUFFER_LINES_BELOW lines below waitingForBuffer = true; + // TODO: If the UNCHANGED CODE is at the very top of the file we need to handle a bit differently } else { yield line; newLines.push(line); @@ -112,11 +120,14 @@ async function* streamFillUnchangedCode( } if (waitingForBuffer) { + // If we're still waiting for a buffer, we've reached the end of the stream + // and we should just look for the replacement with what we have const replacementLines = replacementFunction(oldCode, newLines, buffer); for await (const replacementLine of replacementLines) { yield replacementLine; newLines.push(replacementLine); } + // Yield the buffered lines for (const bufferedLine of buffer) { yield bufferedLine; newLines.push(bufferedLine); From 948246dc443815e6a722334179dcde6ab6f87102 Mon Sep 17 00:00:00 2001 From: chezsmithy Date: Sun, 13 Jul 2025 14:47:54 -0700 Subject: [PATCH 46/97] prettier and code cleanup --- .../streamTransforms/filterCodeBlock.ts | 11 +- .../filtering/streamTransforms/lineStream.ts | 102 ++--- .../streamTransforms/lineStream.vitest.ts | 95 ++++- core/llm/autodetect.ts | 3 +- core/utils/markdownUtils.ts | 31 +- core/utils/markdownUtils.vitest.ts | 364 ++++++++++++++---- core/utils/streamMarkdownUtils.ts | 5 +- .../utils/headerIsMarkdown.test.ts | 67 ---- .../utils/headerIsMarkdown.ts | 26 -- .../utils/patchNestedMarkdown.ts | 48 +-- 10 files changed, 480 insertions(+), 272 deletions(-) delete mode 100644 gui/src/components/StyledMarkdownPreview/utils/headerIsMarkdown.test.ts delete mode 100644 gui/src/components/StyledMarkdownPreview/utils/headerIsMarkdown.ts diff --git a/core/autocomplete/filtering/streamTransforms/filterCodeBlock.ts b/core/autocomplete/filtering/streamTransforms/filterCodeBlock.ts index 31e37b844e4..d9cb8e8acbe 100644 --- a/core/autocomplete/filtering/streamTransforms/filterCodeBlock.ts +++ b/core/autocomplete/filtering/streamTransforms/filterCodeBlock.ts @@ -10,10 +10,7 @@ import { shouldStopAtMarkdownBlock, } from "../../../utils/streamMarkdownUtils"; -import { - hasNestedMarkdownBlocks, - shouldChangeLineAndStop, -} from "./lineStream"; +import { hasNestedMarkdownBlocks, shouldChangeLineAndStop } from "./lineStream"; /** * Filters and processes lines from a code block, removing unnecessary markers and handling edge cases. @@ -83,7 +80,11 @@ export async function* filterCodeBlockLines( const line = allLines[i]; // Process block nesting logic for the first fence - const nesting = processBlockNesting(line, seenFirstFence, shouldRemoveLineBeforeStart); + const nesting = processBlockNesting( + line, + seenFirstFence, + shouldRemoveLineBeforeStart, + ); if (nesting.shouldSkip) { continue; // Filter out starting ``` or START block } diff --git a/core/autocomplete/filtering/streamTransforms/lineStream.ts b/core/autocomplete/filtering/streamTransforms/lineStream.ts index b355a2aa19a..3cf1cec9f74 100644 --- a/core/autocomplete/filtering/streamTransforms/lineStream.ts +++ b/core/autocomplete/filtering/streamTransforms/lineStream.ts @@ -3,13 +3,8 @@ import { distance } from "fastest-levenshtein"; import { DiffLine } from "../../.."; import { LineStream } from "../../../diff/util"; -import { - headerIsMarkdown, - isMarkdownFile -} from "../../../utils/markdownUtils"; -import { - processBlockNesting as processBlockNestingUtil -} from "../../../utils/streamMarkdownUtils"; +import { headerIsMarkdown, isMarkdownFile } from "../../../utils/markdownUtils"; +import { processBlockNesting as processBlockNestingUtil } from "../../../utils/streamMarkdownUtils"; export { filterCodeBlockLines } from "./filterCodeBlock"; @@ -60,6 +55,47 @@ function shouldRemoveLineBeforeStart(line: string): boolean { ); } +/** + * Shared utility for validating patterns in lines to avoid code duplication. + * Checks if a pattern appears in a valid context (not inside quotes or identifiers). + */ +export function validatePatternInLine( + line: string, + pattern: string, +): { + isValid: boolean; + patternIndex: number; + beforePattern: string; +} { + const patternIndex = line.indexOf(pattern); + + if (patternIndex === -1) { + return { isValid: false, patternIndex: -1, beforePattern: "" }; + } + + // Check if pattern is preceded by a non-whitespace character + // If so, it might be part of an identifier, so don't handle it + if (patternIndex > 0) { + const charBefore = line[patternIndex - 1]; + if (charBefore && !charBefore.match(/\s/)) { + return { isValid: false, patternIndex, beforePattern: "" }; + } + } + + // Check if pattern appears to be inside quotes + // Simple heuristic: count unmatched quotes before the pattern + const beforePattern = line.substring(0, patternIndex); + const singleQuotes = (beforePattern.match(/'/g) || []).length; + const doubleQuotes = (beforePattern.match(/"/g) || []).length; + + // If there's an odd number of quotes before pattern, we're likely inside quotes + if (singleQuotes % 2 !== 0 || doubleQuotes % 2 !== 0) { + return { isValid: false, patternIndex, beforePattern }; + } + + return { isValid: true, patternIndex, beforePattern }; +} + export function shouldChangeLineAndStop(line: string): string | undefined { if (line.trimStart() === "```") { return line; @@ -67,26 +103,10 @@ export function shouldChangeLineAndStop(line: string): string | undefined { // Check if [/CODE] appears in the line if (line.includes(CODE_STOP_BLOCK)) { - const stopBlockIndex = line.indexOf(CODE_STOP_BLOCK); - - // Check if [/CODE] is preceded by a non-whitespace character - // If so, it might be part of an identifier, so don't handle it - if (stopBlockIndex > 0) { - const charBefore = line[stopBlockIndex - 1]; - if (charBefore && !charBefore.match(/\s/)) { - return undefined; // Don't handle [/CODE] that's part of an identifier - } - } + const validation = validatePatternInLine(line, CODE_STOP_BLOCK); - // Check if [/CODE] appears to be inside quotes - // Simple heuristic: count unmatched quotes before the stop block - const beforeStopBlock = line.substring(0, stopBlockIndex); - const singleQuotes = (beforeStopBlock.match(/'/g) || []).length; - const doubleQuotes = (beforeStopBlock.match(/"/g) || []).length; - - // If there's an odd number of quotes before [/CODE], we're likely inside quotes - if (singleQuotes % 2 !== 0 || doubleQuotes % 2 !== 0) { - return undefined; // Don't handle [/CODE] inside quotes + if (!validation.isValid) { + return undefined; } // Get the trimmed line to check if [/CODE] is at logical start @@ -100,7 +120,7 @@ export function shouldChangeLineAndStop(line: string): string | undefined { } // [/CODE] appears after some content (separated by whitespace) - return part before - return beforeStopBlock.trimEnd(); + return validation.beforePattern.trimEnd(); } return undefined; @@ -336,26 +356,10 @@ export async function* stopAtLines( // Check each stop phrase for (const stopAt of linesToStopAt) { if (line.includes(stopAt)) { - const stopAtIndex = line.indexOf(stopAt); - - // Check if stop phrase is preceded by a non-whitespace character - // If so, it might be part of an identifier, so don't handle it - if (stopAtIndex > 0) { - const charBefore = line[stopAtIndex - 1]; - if (charBefore && !charBefore.match(/\s/)) { - continue; // Don't handle stop phrase that's part of an identifier - } - } - - // Check if stop phrase appears to be inside quotes - // Simple heuristic: count unmatched quotes before the stop phrase - const beforeStopPhrase = line.substring(0, stopAtIndex); - const singleQuotes = (beforeStopPhrase.match(/'/g) || []).length; - const doubleQuotes = (beforeStopPhrase.match(/"/g) || []).length; + const validation = validatePatternInLine(line, stopAt); - // If there's an odd number of quotes before stop phrase, we're likely inside quotes - if (singleQuotes % 2 !== 0 || doubleQuotes % 2 !== 0) { - continue; // Don't handle stop phrase inside quotes + if (!validation.isValid) { + continue; } // Get the trimmed line to check if stop phrase is at logical start @@ -367,8 +371,10 @@ export async function* stopAtLines( break; } else { // Stop phrase appears after some content - check if it's separated by whitespace - const contentBeforeStopPhrase = beforeStopPhrase.trimEnd(); - if (contentBeforeStopPhrase.length < beforeStopPhrase.length) { + const contentBeforeStopPhrase = validation.beforePattern.trimEnd(); + if ( + contentBeforeStopPhrase.length < validation.beforePattern.length + ) { // There's whitespace before the stop phrase, so it's properly separated shouldStop = true; break; diff --git a/core/autocomplete/filtering/streamTransforms/lineStream.vitest.ts b/core/autocomplete/filtering/streamTransforms/lineStream.vitest.ts index 994b47b1a75..741c2b12541 100644 --- a/core/autocomplete/filtering/streamTransforms/lineStream.vitest.ts +++ b/core/autocomplete/filtering/streamTransforms/lineStream.vitest.ts @@ -1,6 +1,9 @@ import { beforeEach, describe, expect, it, Mock, vi } from "vitest"; -import { collectAllLines, MarkdownBlockStateTracker } from "../../../utils/markdownUtils"; +import { + collectAllLines, + MarkdownBlockStateTracker, +} from "../../../utils/markdownUtils"; import { shouldStopAtMarkdownBlock } from "../../../utils/streamMarkdownUtils"; import * as lineStream from "./lineStream"; @@ -1205,4 +1208,94 @@ describe("lineStream", () => { ]); }); }); + + describe("validatePatternInLine", () => { + it("should return false when pattern is not found", () => { + const result = lineStream.validatePatternInLine( + "const x = 5;", + "[/CODE]", + ); + expect(result.isValid).toBe(false); + expect(result.patternIndex).toBe(-1); + expect(result.beforePattern).toBe(""); + }); + + it("should return false when pattern is preceded by non-whitespace", () => { + const result = lineStream.validatePatternInLine( + 'const var[/CODE]Name = "test";', + "[/CODE]", + ); + expect(result.isValid).toBe(false); + expect(result.patternIndex).toBe(9); + }); + + it("should return false when pattern is inside double quotes", () => { + const result = lineStream.validatePatternInLine( + 'console.log("test [/CODE] end");', + "[/CODE]", + ); + expect(result.isValid).toBe(false); + expect(result.patternIndex).toBe(18); + }); + + it("should return false when pattern is inside single quotes", () => { + const result = lineStream.validatePatternInLine( + "const message = 'test [/CODE] end';", + "[/CODE]", + ); + expect(result.isValid).toBe(false); + expect(result.patternIndex).toBe(22); + }); + + it("should return true when pattern is properly separated by whitespace", () => { + const result = lineStream.validatePatternInLine( + "some code [/CODE] more text", + "[/CODE]", + ); + expect(result.isValid).toBe(true); + expect(result.patternIndex).toBe(10); + expect(result.beforePattern).toBe("some code "); + }); + + it("should return true when pattern is at start of line", () => { + const result = lineStream.validatePatternInLine("[/CODE]", "[/CODE]"); + expect(result.isValid).toBe(true); + expect(result.patternIndex).toBe(0); + expect(result.beforePattern).toBe(""); + }); + + it("should return true when pattern has only whitespace before it", () => { + const result = lineStream.validatePatternInLine(" [/CODE]", "[/CODE]"); + expect(result.isValid).toBe(true); + expect(result.patternIndex).toBe(4); + expect(result.beforePattern).toBe(" "); + }); + + it("should handle complex quote scenarios correctly", () => { + // Unmatched quote should make it invalid + const result1 = lineStream.validatePatternInLine( + 'const x = "unclosed quote [/CODE]', + "[/CODE]", + ); + expect(result1.isValid).toBe(false); + + // Matched quotes should make it valid + const result2 = lineStream.validatePatternInLine( + 'const x = "closed"; [/CODE]', + "[/CODE]", + ); + expect(result2.isValid).toBe(true); + }); + + it("should work with different patterns", () => { + const result1 = lineStream.validatePatternInLine( + "# End of file. Done", + "# End of file.", + ); + expect(result1.isValid).toBe(true); + + const result2 = lineStream.validatePatternInLine(" ```", "```"); + expect(result2.isValid).toBe(true); + }); + }); }); diff --git a/core/llm/autodetect.ts b/core/llm/autodetect.ts index df575bfed7b..a220b5dbd53 100644 --- a/core/llm/autodetect.ts +++ b/core/llm/autodetect.ts @@ -400,6 +400,5 @@ export { autodetectTemplateType, llmCanGenerateInParallel, modelSupportsImages, - modelSupportsTools + modelSupportsTools, }; - diff --git a/core/utils/markdownUtils.ts b/core/utils/markdownUtils.ts index edf827a0878..365f728119d 100644 --- a/core/utils/markdownUtils.ts +++ b/core/utils/markdownUtils.ts @@ -38,8 +38,8 @@ export function isMarkdownFile(filepath?: string): boolean { * Optimized to handle nested markdown code blocks. */ export class MarkdownBlockStateTracker { - private trimmedLines: string[]; - private bareBacktickPositions: number[]; + protected trimmedLines: string[]; + protected bareBacktickPositions: number[]; private markdownNestCount: number = 0; private lastProcessedIndex: number = -1; @@ -72,9 +72,8 @@ export class MarkdownBlockStateTracker { if (currentLine.match(/^`+$/)) { // Found bare backticks - check if this is the last one if (j === currentIndex) { - const remainingBareBackticks = this.bareBacktickPositions.filter( - (pos) => pos > j, - ).length; + const remainingBareBackticks = + this.getRemainingBareBackticksAfter(j); if (remainingBareBackticks === 0) { this.markdownNestCount = 0; this.lastProcessedIndex = j; @@ -99,6 +98,28 @@ export class MarkdownBlockStateTracker { this.lastProcessedIndex = currentIndex; return false; } + + /** + * Efficiently determines if there are remaining bare backticks after the given position. + */ + getRemainingBareBackticksAfter(currentIndex: number): number { + return this.bareBacktickPositions.filter((pos) => pos > currentIndex) + .length; + } + + /** + * Checks if the line at the given index is a bare backtick line. + */ + isBareBacktickLine(index: number): boolean { + return this.bareBacktickPositions.includes(index); + } + + /** + * Gets the trimmed lines array. + */ + getTrimmedLines(): string[] { + return this.trimmedLines; + } } /** diff --git a/core/utils/markdownUtils.vitest.ts b/core/utils/markdownUtils.vitest.ts index 211bcd8e107..c21c275877b 100644 --- a/core/utils/markdownUtils.vitest.ts +++ b/core/utils/markdownUtils.vitest.ts @@ -1,84 +1,306 @@ -import { test, expect } from "vitest"; +import { describe, expect, it } from "vitest"; import { + collectAllLines, headerIsMarkdown, isMarkdownFile, MarkdownBlockStateTracker, } from "./markdownUtils"; -test("headerIsMarkdown correctly identifies markdown headers", () => { - // Should return true for markdown headers - expect(headerIsMarkdown("md")).toBe(true); - expect(headerIsMarkdown("markdown")).toBe(true); - expect(headerIsMarkdown("gfm")).toBe(true); - expect(headerIsMarkdown("github-markdown")).toBe(true); - expect(headerIsMarkdown("language md")).toBe(true); - expect(headerIsMarkdown("language markdown")).toBe(true); - expect(headerIsMarkdown("filename.md")).toBe(true); - expect(headerIsMarkdown("path/to/file.md language")).toBe(true); - - // Should return false for non-markdown headers - expect(headerIsMarkdown("javascript")).toBe(false); - expect(headerIsMarkdown("typescript")).toBe(false); - expect(headerIsMarkdown("python")).toBe(false); - expect(headerIsMarkdown("")).toBe(false); +describe("headerIsMarkdown", () => { + // Test exact match with common Markdown identifiers + it("should identify exact matches with common Markdown identifiers", () => { + expect(headerIsMarkdown("md")).toBe(true); + expect(headerIsMarkdown("markdown")).toBe(true); + expect(headerIsMarkdown("gfm")).toBe(true); + expect(headerIsMarkdown("github-markdown")).toBe(true); + }); + + // Test identifiers preceded by a space + it("should identify identifiers preceded by a space", () => { + expect(headerIsMarkdown("lang md")).toBe(true); + expect(headerIsMarkdown("something markdown")).toBe(true); + expect(headerIsMarkdown("language gfm")).toBe(true); + expect(headerIsMarkdown("spec github-markdown")).toBe(true); + }); + + // Test file extensions + it("should identify file names with markdown extensions", () => { + expect(headerIsMarkdown("example.md")).toBe(true); + expect(headerIsMarkdown("document.markdown")).toBe(true); + expect(headerIsMarkdown("readme.gfm")).toBe(true); + }); + + // Test more complex cases with extensions + it("should identify file names with markdown extensions followed by other text", () => { + expect(headerIsMarkdown("example.md additional text")).toBe(true); + expect(headerIsMarkdown("document.markdown with some description")).toBe( + true, + ); + expect(headerIsMarkdown("readme.gfm v2.0")).toBe(true); + }); + + // Test non-markdown cases + it("should not identify non-markdown headers", () => { + expect(headerIsMarkdown("javascript")).toBe(false); + expect(headerIsMarkdown("typescript")).toBe(false); + expect(headerIsMarkdown("plain")).toBe(false); + expect(headerIsMarkdown("python")).toBe(false); + }); + + // Test edge cases + it("should handle edge cases correctly", () => { + expect(headerIsMarkdown("")).toBe(false); + expect(headerIsMarkdown("mdx")).toBe(false); // Similar but not exactly "md" + expect(headerIsMarkdown("readme md")).toBe(true); + expect(headerIsMarkdown("md.js")).toBe(false); // "md" is not the extension + }); + + // Test case sensitivity + it("should respect case sensitivity", () => { + expect(headerIsMarkdown("MD")).toBe(false); + expect(headerIsMarkdown("MARKDOWN")).toBe(false); + expect(headerIsMarkdown("example.MD")).toBe(false); + expect(headerIsMarkdown("lang MD")).toBe(false); + }); + + // Test with special characters and spacing + it("should handle special characters and spacing correctly", () => { + expect(headerIsMarkdown(" md")).toBe(true); // Space before "md" + expect(headerIsMarkdown("md ")).toBe(true); // Space after "md" + expect(headerIsMarkdown("hello-md")).toBe(false); // "md" with hyphen prefix + expect(headerIsMarkdown("markdown:")).toBe(false); // "markdown" with suffix + }); }); -test("isMarkdownFile correctly identifies markdown files", () => { - // Should return true for markdown files - expect(isMarkdownFile("test.md")).toBe(true); - expect(isMarkdownFile("path/to/file.markdown")).toBe(true); - expect(isMarkdownFile("README.md")).toBe(true); - - // Should return false for non-markdown files - expect(isMarkdownFile("test.js")).toBe(false); - expect(isMarkdownFile("script.ts")).toBe(false); - expect(isMarkdownFile("")).toBe(false); - expect(isMarkdownFile(undefined)).toBe(false); +describe("isMarkdownFile", () => { + it("should identify markdown files by .md extension", () => { + expect(isMarkdownFile("README.md")).toBe(true); + expect(isMarkdownFile("docs/guide.md")).toBe(true); + expect(isMarkdownFile("/path/to/file.md")).toBe(true); + }); + + it("should identify markdown files by .markdown extension", () => { + expect(isMarkdownFile("README.markdown")).toBe(true); + expect(isMarkdownFile("docs/guide.markdown")).toBe(true); + expect(isMarkdownFile("/path/to/file.markdown")).toBe(true); + }); + + it("should identify markdown files by .gfm extension", () => { + expect(isMarkdownFile("README.gfm")).toBe(true); + expect(isMarkdownFile("docs/guide.gfm")).toBe(true); + expect(isMarkdownFile("/path/to/file.gfm")).toBe(true); + }); + + it("should handle case insensitive extensions", () => { + expect(isMarkdownFile("README.MD")).toBe(true); + expect(isMarkdownFile("guide.MARKDOWN")).toBe(true); + expect(isMarkdownFile("file.GFM")).toBe(true); + }); + + it("should return false for non-markdown files", () => { + expect(isMarkdownFile("script.js")).toBe(false); + expect(isMarkdownFile("style.css")).toBe(false); + expect(isMarkdownFile("data.json")).toBe(false); + expect(isMarkdownFile("document.txt")).toBe(false); + }); + + it("should return false for undefined or empty filepath", () => { + expect(isMarkdownFile(undefined)).toBe(false); + expect(isMarkdownFile("")).toBe(false); + }); + + it("should return false for files without extensions", () => { + expect(isMarkdownFile("README")).toBe(false); + expect(isMarkdownFile("Dockerfile")).toBe(false); + }); + + it("should handle files with multiple dots", () => { + expect(isMarkdownFile("file.backup.md")).toBe(true); + expect(isMarkdownFile("config.test.js")).toBe(false); + }); }); -test("MarkdownBlockStateTracker correctly tracks nested markdown blocks", () => { - const lines = [ - "# Header", - "", - "Some text", - "", - "```md", - "Nested markdown content", - "```javascript", - "function test() {", - " return true;", - "}", - "```", - "More nested markdown", - "```", - "", - "End of file", - ]; - - const stateTracker = new MarkdownBlockStateTracker(lines); - - // First backtick closure is within nested block (not markdown end) - expect(stateTracker.shouldStopAtPosition(10)).toBe(false); - - // This is the backtick that closes the outer markdown block - expect(stateTracker.shouldStopAtPosition(12)).toBe(true); +describe("MarkdownBlockStateTracker", () => { + it("should initialize correctly with empty lines", () => { + const tracker = new MarkdownBlockStateTracker([]); + expect(tracker.shouldStopAtPosition(0)).toBe(false); + }); + + it("should initialize correctly with non-markdown lines", () => { + const tracker = new MarkdownBlockStateTracker([ + "const x = 5;", + "console.log(x);", + ]); + expect(tracker.shouldStopAtPosition(0)).toBe(false); + expect(tracker.shouldStopAtPosition(1)).toBe(false); + }); + + it("should detect simple markdown blocks", () => { + const tracker = new MarkdownBlockStateTracker([ + "```markdown", + "# Title", + "```", + ]); + expect(tracker.shouldStopAtPosition(0)).toBe(false); // Opening + expect(tracker.shouldStopAtPosition(1)).toBe(false); // Content + expect(tracker.shouldStopAtPosition(2)).toBe(true); // Closing + }); + + it("should handle nested code blocks within markdown", () => { + const tracker = new MarkdownBlockStateTracker([ + "```md", + "Here's some code:", + "```javascript", + "console.log('hello');", + "```", + "More content", + "```", + ]); + expect(tracker.shouldStopAtPosition(2)).toBe(false); // Inner opening + expect(tracker.shouldStopAtPosition(4)).toBe(false); // Inner closing + expect(tracker.shouldStopAtPosition(6)).toBe(true); // Outer closing + }); + + it("should handle multiple bare backticks", () => { + const tracker = new MarkdownBlockStateTracker([ + "```markdown", + "Content with ```inline``` code", + "```", + "More content", + "```", + ]); + expect(tracker.shouldStopAtPosition(2)).toBe(false); // First bare backticks + expect(tracker.shouldStopAtPosition(4)).toBe(true); // Last bare backticks + }); + + it("should handle non-markdown code blocks", () => { + const tracker = new MarkdownBlockStateTracker([ + "```javascript", + "console.log('hello');", + "```", + ]); + expect(tracker.shouldStopAtPosition(2)).toBe(false); // Not a markdown block + }); + + it("should handle mixed markdown types", () => { + const tracker = new MarkdownBlockStateTracker([ + "```gfm", + "# GitHub Flavored Markdown", + "```", + ]); + expect(tracker.shouldStopAtPosition(2)).toBe(true); + }); + + it("should handle state persistence across multiple calls", () => { + const tracker = new MarkdownBlockStateTracker([ + "```markdown", + "# Documentation", + "```typescript", + "interface Config {}", + "```", + "Final notes", + "```", + ]); + + // Process incrementally + expect(tracker.shouldStopAtPosition(2)).toBe(false); // Inner opening + expect(tracker.shouldStopAtPosition(4)).toBe(false); // Inner closing + expect(tracker.shouldStopAtPosition(6)).toBe(true); // Outer closing + }); + + it("should handle lines that are not closing backticks", () => { + const tracker = new MarkdownBlockStateTracker([ + "```markdown", + "Regular content line", + "```", + ]); + expect(tracker.shouldStopAtPosition(1)).toBe(false); // Not backticks + }); + + it("should provide access to trimmed lines", () => { + const tracker = new MarkdownBlockStateTracker([ + " ```markdown ", + " # Title ", + " ``` ", + ]); + const trimmedLines = tracker.getTrimmedLines(); + expect(trimmedLines).toEqual(["```markdown", "# Title", "```"]); + }); + + it("should identify bare backtick lines correctly", () => { + const tracker = new MarkdownBlockStateTracker([ + "```markdown", + "```", + "content", + "```", + ]); + expect(tracker.isBareBacktickLine(0)).toBe(false); // Has language + expect(tracker.isBareBacktickLine(1)).toBe(true); // Bare backticks + expect(tracker.isBareBacktickLine(2)).toBe(false); // Content + expect(tracker.isBareBacktickLine(3)).toBe(true); // Bare backticks + }); + + it("should count remaining bare backticks correctly", () => { + const tracker = new MarkdownBlockStateTracker([ + "```markdown", + "```", + "content", + "```", + "more content", + "```", + ]); + expect(tracker.getRemainingBareBackticksAfter(0)).toBe(3); // After opening + expect(tracker.getRemainingBareBackticksAfter(1)).toBe(2); // After first bare + expect(tracker.getRemainingBareBackticksAfter(3)).toBe(1); // After second bare + expect(tracker.getRemainingBareBackticksAfter(5)).toBe(0); // After last bare + }); }); -test("MarkdownBlockStateTracker handles simple code blocks correctly", () => { - const lines = [ - "Some code:", - "", - "```javascript", - "function test() {", - " return true;", - "}", - "```", - "", - "More text", - ]; - - const stateTracker = new MarkdownBlockStateTracker(lines); - - // This is just a simple code block, not nested markdown - expect(stateTracker.shouldStopAtPosition(6)).toBe(false); +describe("collectAllLines", () => { + async function* createAsyncGenerator(items: T[]): AsyncGenerator { + for (const item of items) { + yield item; + } + } + + it("should collect all lines from a stream", async () => { + const stream = createAsyncGenerator(["line1", "line2", "line3"]); + const result = await collectAllLines(stream); + expect(result).toEqual(["line1", "line2", "line3"]); + }); + + it("should handle empty streams", async () => { + const stream = createAsyncGenerator([]); + const result = await collectAllLines(stream); + expect(result).toEqual([]); + }); + + it("should handle streams with mixed types", async () => { + const stream = createAsyncGenerator([1, "text", null, true]); + const result = await collectAllLines(stream); + expect(result).toEqual([1, "text", null, true]); + }); + + it("should handle streams with empty strings", async () => { + const stream = createAsyncGenerator(["", "line2", "", "line4"]); + const result = await collectAllLines(stream); + expect(result).toEqual(["", "line2", "", "line4"]); + }); + + it("should handle large streams", async () => { + const largeArray = Array.from({ length: 1000 }, (_, i) => `line${i}`); + const stream = createAsyncGenerator(largeArray); + const result = await collectAllLines(stream); + expect(result).toEqual(largeArray); + }); + + it("should handle object streams", async () => { + const objects = [ + { type: "new", line: "const x = 5;" }, + { type: "old", line: "let y = 10;" }, + ]; + const stream = createAsyncGenerator(objects); + const result = await collectAllLines(stream); + expect(result).toEqual(objects); + }); }); diff --git a/core/utils/streamMarkdownUtils.ts b/core/utils/streamMarkdownUtils.ts index 94505dfdfc3..88e8eabec39 100644 --- a/core/utils/streamMarkdownUtils.ts +++ b/core/utils/streamMarkdownUtils.ts @@ -1,8 +1,5 @@ import { LineStream } from "../diff/util"; -import { - isMarkdownFile, - MarkdownBlockStateTracker -} from "./markdownUtils"; +import { isMarkdownFile, MarkdownBlockStateTracker } from "./markdownUtils"; /** * Determines if we should stop at a markdown block based on nested markdown logic. diff --git a/gui/src/components/StyledMarkdownPreview/utils/headerIsMarkdown.test.ts b/gui/src/components/StyledMarkdownPreview/utils/headerIsMarkdown.test.ts deleted file mode 100644 index 51649c2513f..00000000000 --- a/gui/src/components/StyledMarkdownPreview/utils/headerIsMarkdown.test.ts +++ /dev/null @@ -1,67 +0,0 @@ -import { headerIsMarkdown } from "./headerIsMarkdown"; - -describe("headerIsMarkdown", () => { - // Test exact match with common Markdown identifiers - it("should identify exact matches with common Markdown identifiers", () => { - expect(headerIsMarkdown("md")).toBe(true); - expect(headerIsMarkdown("markdown")).toBe(true); - expect(headerIsMarkdown("gfm")).toBe(true); - expect(headerIsMarkdown("github-markdown")).toBe(true); - }); - - // Test identifiers preceded by a space - it("should identify identifiers preceded by a space", () => { - expect(headerIsMarkdown("lang md")).toBe(true); - expect(headerIsMarkdown("something markdown")).toBe(true); - expect(headerIsMarkdown("language gfm")).toBe(true); - expect(headerIsMarkdown("spec github-markdown")).toBe(true); - }); - - // Test file extensions - it("should identify file names with markdown extensions", () => { - expect(headerIsMarkdown("example.md")).toBe(true); - expect(headerIsMarkdown("document.markdown")).toBe(true); - expect(headerIsMarkdown("readme.gfm")).toBe(true); - }); - - // Test more complex cases with extensions - it("should identify file names with markdown extensions followed by other text", () => { - expect(headerIsMarkdown("example.md additional text")).toBe(true); - expect(headerIsMarkdown("document.markdown with some description")).toBe( - true, - ); - expect(headerIsMarkdown("readme.gfm v2.0")).toBe(true); - }); - - // Test non-markdown cases - it("should not identify non-markdown headers", () => { - expect(headerIsMarkdown("javascript")).toBe(false); - expect(headerIsMarkdown("typescript")).toBe(false); - expect(headerIsMarkdown("plain")).toBe(false); - expect(headerIsMarkdown("python")).toBe(false); - }); - - // Test edge cases - it("should handle edge cases correctly", () => { - expect(headerIsMarkdown("")).toBe(false); - expect(headerIsMarkdown("mdx")).toBe(false); // Similar but not exactly "md" - expect(headerIsMarkdown("readme md")).toBe(true); - expect(headerIsMarkdown("md.js")).toBe(false); // "md" is not the extension - }); - - // Test case sensitivity - it("should respect case sensitivity", () => { - expect(headerIsMarkdown("MD")).toBe(false); - expect(headerIsMarkdown("MARKDOWN")).toBe(false); - expect(headerIsMarkdown("example.MD")).toBe(false); - expect(headerIsMarkdown("lang MD")).toBe(false); - }); - - // Test with special characters and spacing - it("should handle special characters and spacing correctly", () => { - expect(headerIsMarkdown(" md")).toBe(true); // Space before "md" - expect(headerIsMarkdown("md ")).toBe(true); // Space after "md" - expect(headerIsMarkdown("hello-md")).toBe(false); // "md" with hyphen prefix - expect(headerIsMarkdown("markdown:")).toBe(false); // "markdown" with suffix - }); -}); diff --git a/gui/src/components/StyledMarkdownPreview/utils/headerIsMarkdown.ts b/gui/src/components/StyledMarkdownPreview/utils/headerIsMarkdown.ts deleted file mode 100644 index cfdba2fde45..00000000000 --- a/gui/src/components/StyledMarkdownPreview/utils/headerIsMarkdown.ts +++ /dev/null @@ -1,26 +0,0 @@ -/** - * Determines if a given header string represents Markdown content. - * - * The function checks various patterns to identify Markdown headers: - * - Exact match with common Markdown identifiers (md, markdown, gfm, github-markdown) - * - Contains these identifiers preceded by a space - * - First word has a file extension of md, markdown, or gfm - * - * @param header - The string to check for Markdown indicators - * @returns True if the header represents Markdown content, false otherwise - */ -export function headerIsMarkdown(header: string): boolean { - return ( - header === "md" || - header === "markdown" || - header === "gfm" || - header === "github-markdown" || - header.includes(" md") || - header.includes(" markdown") || - header.includes(" gfm") || - header.includes(" github-markdown") || - header.split(" ")[0]?.split(".").pop() === "md" || - header.split(" ")[0]?.split(".").pop() === "markdown" || - header.split(" ")[0]?.split(".").pop() === "gfm" - ); -} diff --git a/gui/src/components/StyledMarkdownPreview/utils/patchNestedMarkdown.ts b/gui/src/components/StyledMarkdownPreview/utils/patchNestedMarkdown.ts index b054f0bd9c0..380c1a18a7c 100644 --- a/gui/src/components/StyledMarkdownPreview/utils/patchNestedMarkdown.ts +++ b/gui/src/components/StyledMarkdownPreview/utils/patchNestedMarkdown.ts @@ -7,48 +7,10 @@ Note, this was benchmarked at sub-millisecond */ -import { headerIsMarkdown } from "./headerIsMarkdown"; - -/** - * Optimized state tracker for markdown patch operations to avoid recomputing on each call. - */ -class MarkdownPatchStateTracker { - private trimmedLines: string[]; - private bareBacktickPositions: number[]; - - constructor(lines: string[]) { - this.trimmedLines = lines.map((l) => l.trim()); - // Pre-compute positions of all bare backtick lines for faster lookup - this.bareBacktickPositions = []; - for (let i = 0; i < this.trimmedLines.length; i++) { - if (this.trimmedLines[i].match(/^`+$/)) { - this.bareBacktickPositions.push(i); - } - } - } - - /** - * Efficiently determines if there are remaining bare backticks after the given position. - */ - getRemainingBareBackticksAfter(currentIndex: number): number { - return this.bareBacktickPositions.filter((pos) => pos > currentIndex) - .length; - } - - /** - * Checks if the line at the given index is a bare backtick line. - */ - isBareBacktickLine(index: number): boolean { - return this.bareBacktickPositions.includes(index); - } - - /** - * Gets the trimmed lines array. - */ - getTrimmedLines(): string[] { - return this.trimmedLines; - } -} +import { + headerIsMarkdown, + MarkdownBlockStateTracker, +} from "../../../../../core/utils/markdownUtils"; export const patchNestedMarkdown = (source: string): string => { // Early return if no markdown codeblock pattern is found (including GitHub variants) @@ -59,7 +21,7 @@ export const patchNestedMarkdown = (source: string): string => { const lines = source.split("\n"); // Use optimized state tracker for efficient bare backtick analysis - const stateTracker = new MarkdownPatchStateTracker(lines); + const stateTracker = new MarkdownBlockStateTracker(lines); const trimmedLines = stateTracker.getTrimmedLines(); for (let i = 0; i < trimmedLines.length; i++) { From 7858389a93c5a499c121f79fb4118ae90201b5cd Mon Sep 17 00:00:00 2001 From: Patrick Erichsen Date: Sun, 13 Jul 2025 19:00:35 -0700 Subject: [PATCH 47/97] docs: add note about demos on PRs --- .github/pull_request_template.md | 2 +- CONTRIBUTING.md | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index 2497e28dc9c..2261fe549ea 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -10,7 +10,7 @@ ## Screenshots -[ For visual changes, include screenshots. Screen recordings are particularly helpful, and appreciated! ] +[ For visual changes, include screenshots. **For new features, please include a short screen recording** - this makes it much easier for us as contributors to review and understand your changes. See [this PR](https://github.com/continuedev/continue/pull/6455) as a good example. ] ## Tests diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 6d89e465518..4fd31893aeb 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -192,6 +192,7 @@ To keep the Continue codebase clean and maintainable, we expect the following fr - Keep changes focused. Multiple unrelated fixes should be opened as separate PRs - Write or update tests for new functionality - Update relevant documentation in the `docs` folder +- **For new features**: Include a short screen recording demonstrating the new functionality. This makes it much easier for us as contributors to review and understand your changes. See [this PR](https://github.com/continuedev/continue/pull/6455) as a good example - Open a PR against the `main` branch. Make sure to fill in the PR template ### Formatting From 6e3344ea59103d594aebd6fee0122c13f3128e23 Mon Sep 17 00:00:00 2001 From: Patrick Erichsen Date: Sun, 13 Jul 2025 19:03:38 -0700 Subject: [PATCH 48/97] update pr template title text --- .github/pull_request_template.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index 2261fe549ea..9e5c7e03b39 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -8,9 +8,9 @@ - [] The relevant docs, if any, have been updated or created - [] The relevant tests, if any, have been updated or created -## Screenshots +## Screen recording (for new features) -[ For visual changes, include screenshots. **For new features, please include a short screen recording** - this makes it much easier for us as contributors to review and understand your changes. See [this PR](https://github.com/continuedev/continue/pull/6455) as a good example. ] +[ For new features, please include a short screen recording - this makes it much easier for us as contributors to review and understand your changes. See [this PR](https://github.com/continuedev/continue/pull/6455) as a good example. ] ## Tests From e17da82016d37e2f37bd4aa30a1b4eea7743b20c Mon Sep 17 00:00:00 2001 From: Patrick Erichsen Date: Sun, 13 Jul 2025 19:05:31 -0700 Subject: [PATCH 49/97] Update pull_request_template.md --- .github/pull_request_template.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index 9e5c7e03b39..2ecb662fde9 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -8,9 +8,9 @@ - [] The relevant docs, if any, have been updated or created - [] The relevant tests, if any, have been updated or created -## Screen recording (for new features) +## Screen recording -[ For new features, please include a short screen recording - this makes it much easier for us as contributors to review and understand your changes. See [this PR](https://github.com/continuedev/continue/pull/6455) as a good example. ] +[ When applicable, please include a short screen recording - this makes it much easier for us as contributors to review and understand your changes. See [this PR](https://github.com/continuedev/continue/pull/6455) as a good example. ] ## Tests From 33681db3310435e2a226cc274da0e4533188e4b9 Mon Sep 17 00:00:00 2001 From: Patrick Erichsen Date: Sun, 13 Jul 2025 20:52:03 -0700 Subject: [PATCH 50/97] Update CONTRIBUTING.md --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 4fd31893aeb..9824071c127 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -192,7 +192,7 @@ To keep the Continue codebase clean and maintainable, we expect the following fr - Keep changes focused. Multiple unrelated fixes should be opened as separate PRs - Write or update tests for new functionality - Update relevant documentation in the `docs` folder -- **For new features**: Include a short screen recording demonstrating the new functionality. This makes it much easier for us as contributors to review and understand your changes. See [this PR](https://github.com/continuedev/continue/pull/6455) as a good example +- **For new features**: Include a short screen recording or screenshot demonstrating the new functionality. This makes it much easier for us as contributors to review and understand your changes. See [this PR](https://github.com/continuedev/continue/pull/6455) as a good example - Open a PR against the `main` branch. Make sure to fill in the PR template ### Formatting From 653ed978fbb84ea018b62f59922a8257a60e1a5a Mon Sep 17 00:00:00 2001 From: Patrick Erichsen Date: Sun, 13 Jul 2025 20:52:25 -0700 Subject: [PATCH 51/97] Update pull_request_template.md --- .github/pull_request_template.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index 2ecb662fde9..348566cd889 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -8,9 +8,9 @@ - [] The relevant docs, if any, have been updated or created - [] The relevant tests, if any, have been updated or created -## Screen recording +## Screen recording or screenshot -[ When applicable, please include a short screen recording - this makes it much easier for us as contributors to review and understand your changes. See [this PR](https://github.com/continuedev/continue/pull/6455) as a good example. ] +[ When applicable, please include a short screen recording or screenshot - this makes it much easier for us as contributors to review and understand your changes. See [this PR](https://github.com/continuedev/continue/pull/6455) as a good example. ] ## Tests From 48b48b122f503cf9cdee2ed08b636a1d177747ce Mon Sep 17 00:00:00 2001 From: Patrick Erichsen Date: Tue, 15 Jul 2025 08:53:15 -0700 Subject: [PATCH 52/97] Create typescript-enum-usage.md --- .continue/rules/typescript-enum-usage.md | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 .continue/rules/typescript-enum-usage.md diff --git a/.continue/rules/typescript-enum-usage.md b/.continue/rules/typescript-enum-usage.md new file mode 100644 index 00000000000..34728c1d5af --- /dev/null +++ b/.continue/rules/typescript-enum-usage.md @@ -0,0 +1,6 @@ +--- +globs: "**/*.{ts,tsx}" +alwaysApply: false +--- + +Use enums instead of simple string unions when possible in TypeScript code From 58c721b8528b231f6499ae93935aa8f8b0f845c9 Mon Sep 17 00:00:00 2001 From: uinstinct <61635505+uinstinct@users.noreply.github.com> Date: Wed, 16 Jul 2025 12:42:24 +0530 Subject: [PATCH 53/97] fix: internal permalinks with file extensions --- docs/customize/context/documentation.mdx | 2 +- docs/customize/deep-dives/slash-commands.mdx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/customize/context/documentation.mdx b/docs/customize/context/documentation.mdx index d2bb0f5f00b..38403eedb61 100644 --- a/docs/customize/context/documentation.mdx +++ b/docs/customize/context/documentation.mdx @@ -54,7 +54,7 @@ The `@Docs` context provider works by ### Hub `docs` Blocks -@Docs uses [`docs` blocks](../../hub/blocks/block-types.md#docs) in Assistants from the hub. Visit the hub to [explore `docs` blocks](https://hub.continue.dev/explore/docs) or [create your own](https://hub.continue.dev/new?type=block&blockType=docs). +@Docs uses [`docs` blocks](../../hub/blocks/block-types#docs) in Assistants from the hub. Visit the hub to [explore `docs` blocks](https://hub.continue.dev/explore/docs) or [create your own](https://hub.continue.dev/new?type=block&blockType=docs). ### Through the `@Docs` Context Provider diff --git a/docs/customize/deep-dives/slash-commands.mdx b/docs/customize/deep-dives/slash-commands.mdx index 7057575bd88..81579d3ed67 100644 --- a/docs/customize/deep-dives/slash-commands.mdx +++ b/docs/customize/deep-dives/slash-commands.mdx @@ -15,7 +15,7 @@ Slash commands can be combined with additional instructions, including [context ### Assistant prompt blocks -The easiest way to add a slash command is by adding [`prompt` blocks](../../hub/blocks/block-types.md#prompts) to your assistant, which show up as slash commands in [Chat](../../features/chat/how-it-works.mdx). +The easiest way to add a slash command is by adding [`prompt` blocks](../../hub/blocks/block-types#prompts) to your assistant, which show up as slash commands in [Chat](../../features/chat/how-it-works.mdx). ### Prompt files From 7c82166a5ab9758edf1a53a95e930f966b47667f Mon Sep 17 00:00:00 2001 From: uinstinct <61635505+uinstinct@users.noreply.github.com> Date: Wed, 16 Jul 2025 12:45:25 +0530 Subject: [PATCH 54/97] fix .mdx links --- docs/customize/context/codebase.mdx | 2 +- docs/customize/model-roles/embeddings.mdx | 22 +++++++++++----------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/docs/customize/context/codebase.mdx b/docs/customize/context/codebase.mdx index 674167045a2..5cad74c5991 100644 --- a/docs/customize/context/codebase.mdx +++ b/docs/customize/context/codebase.mdx @@ -94,4 +94,4 @@ If you need to force a refresh of the index, reload the VS Code window with Date: Thu, 17 Jul 2025 16:10:21 +0200 Subject: [PATCH 55/97] remove YAML maxDepth --- core/config/yaml/loadYaml.ts | 1 - docs/customize/context/documentation.mdx | 1 - docs/reference.mdx | 3 --- packages/config-yaml/src/schemas/index.ts | 1 - 4 files changed, 6 deletions(-) diff --git a/core/config/yaml/loadYaml.ts b/core/config/yaml/loadYaml.ts index 04c19b32622..9398e377d3f 100644 --- a/core/config/yaml/loadYaml.ts +++ b/core/config/yaml/loadYaml.ts @@ -235,7 +235,6 @@ async function configYamlToContinueConfig(options: { startUrl: doc.startUrl, rootUrl: doc.rootUrl, faviconUrl: doc.faviconUrl, - maxDepth: doc.maxDepth, useLocalCrawling: doc.useLocalCrawling, })); diff --git a/docs/customize/context/documentation.mdx b/docs/customize/context/documentation.mdx index d2bb0f5f00b..433b96d300f 100644 --- a/docs/customize/context/documentation.mdx +++ b/docs/customize/context/documentation.mdx @@ -354,7 +354,6 @@ The following configuration example includes: - title: My Private Docs startUrl: http://10.2.1.2/docs faviconUrl: http://10.2.1.2/docs/assets/favicon.ico - maxDepth: 4 useLocalCrawling: true ``` diff --git a/docs/reference.mdx b/docs/reference.mdx index 9a9381622af..931bb3f54ca 100644 --- a/docs/reference.mdx +++ b/docs/reference.mdx @@ -357,8 +357,6 @@ List of documentation sites to index. - `name` (**required**): Name of the documentation site, displayed in dropdowns, etc. - `startUrl` (**required**): Start page for crawling - usually root or intro page for docs - -- `maxDepth`: Maximum link depth for crawling. Default `4` - `favicon`: URL for site favicon (default is `/favicon.ico` from `startUrl`). - `useLocalCrawling`: Skip the default crawler and only crawl using a local crawler. @@ -507,7 +505,6 @@ context: params: startUrl: https://docs.example.com/introduction rootUrl: https://docs.example.com - maxDepth: 3 mcpServers: - name: DevServer command: npm diff --git a/packages/config-yaml/src/schemas/index.ts b/packages/config-yaml/src/schemas/index.ts index 4ac2aa1f54e..cca4fcf3264 100644 --- a/packages/config-yaml/src/schemas/index.ts +++ b/packages/config-yaml/src/schemas/index.ts @@ -42,7 +42,6 @@ const docSchema = z.object({ startUrl: z.string(), rootUrl: z.string().optional(), faviconUrl: z.string().optional(), - maxDepth: z.number().optional(), useLocalCrawling: z.boolean().optional(), }); From c82d1fa1caf3b7928d3e5042426cb8b1ddf49aba Mon Sep 17 00:00:00 2001 From: Huy Huynh Date: Thu, 17 Jul 2025 17:05:29 -0300 Subject: [PATCH 56/97] docs: Fix Codestral autocomplete setup - Azure AI Foundry FIM endpoint deprecated --- docs/customize/model-providers/top-level/azure.mdx | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/docs/customize/model-providers/top-level/azure.mdx b/docs/customize/model-providers/top-level/azure.mdx index 26392fe1b1b..c91404df988 100644 --- a/docs/customize/model-providers/top-level/azure.mdx +++ b/docs/customize/model-providers/top-level/azure.mdx @@ -48,7 +48,13 @@ We recommend configuring **GPT-4o** as your chat model. ## Autocomplete model -We recommend configuring **Codestral** as your autocomplete model. If you use Azure AI Foundry to deploy Codestral: +We recommend configuring **Codestral** as your autocomplete model. + + +**Note:** Azure AI Foundry does not provide the FIM (Fill-in-Middle) endpoint required for autocomplete functionality. To use Codestral for autocomplete, deploy it through **Azure Machine Learning Studio** instead, which provides the necessary `/v1/fim/completions` endpoint. + + +If you use Azure Machine Learning Studio to deploy Codestral: From ce26a8439d9acaf13c37875265a4071c1552fc04 Mon Sep 17 00:00:00 2001 From: Dallin Romney Date: Fri, 18 Jul 2025 11:40:55 +0200 Subject: [PATCH 57/97] fix: don't stringify os methods --- core/tools/definitions/runTerminalCommand.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/tools/definitions/runTerminalCommand.ts b/core/tools/definitions/runTerminalCommand.ts index f9ddd4f9a5c..fe5e032de5c 100644 --- a/core/tools/definitions/runTerminalCommand.ts +++ b/core/tools/definitions/runTerminalCommand.ts @@ -20,7 +20,7 @@ export function getPreferredShell(): string { } } -export const PLATFORM_INFO = `Choose terminal commands and scripts optimized for ${os.platform} and ${os.arch} and shell ${getPreferredShell()}.`; +export const PLATFORM_INFO = `Choose terminal commands and scripts optimized for ${os.platform()} and ${os.arch()} and shell ${getPreferredShell()}.`; export const runTerminalCommandTool: Tool = { type: "function", From bcc8c5264d7f8e6b9b1a884c8793aa23d5c10496 Mon Sep 17 00:00:00 2001 From: Patrick Erichsen Date: Sat, 19 Jul 2025 15:31:08 -0700 Subject: [PATCH 58/97] feat: add `slug` to rule obj on dev data --- gui/src/redux/thunks/streamNormalInput.ts | 1 + packages/config-yaml/src/schemas/data/chatInteraction/index.ts | 1 + 2 files changed, 2 insertions(+) diff --git a/gui/src/redux/thunks/streamNormalInput.ts b/gui/src/redux/thunks/streamNormalInput.ts index 6c722817bbd..6e95191c4d4 100644 --- a/gui/src/redux/thunks/streamNormalInput.ts +++ b/gui/src/redux/thunks/streamNormalInput.ts @@ -253,6 +253,7 @@ export const streamNormalInput = createAsyncThunk< rules: appliedRules.map((rule) => ({ id: getRuleId(rule), rule: rule.rule, + slug: rule.slug, })), }), }, diff --git a/packages/config-yaml/src/schemas/data/chatInteraction/index.ts b/packages/config-yaml/src/schemas/data/chatInteraction/index.ts index f13b630af99..14bb36ba9ba 100644 --- a/packages/config-yaml/src/schemas/data/chatInteraction/index.ts +++ b/packages/config-yaml/src/schemas/data/chatInteraction/index.ts @@ -13,6 +13,7 @@ export const chatInteractionEventAllSchema = baseDevDataAllSchema.extend({ z.object({ id: z.string(), rule: z.string(), + slug: z.string().optional(), }), ) .optional(), From 6af35548c8c80e244b4e81ba297d0ae98d817fbb Mon Sep 17 00:00:00 2001 From: Dallin Romney Date: Sun, 20 Jul 2025 14:13:15 +0200 Subject: [PATCH 59/97] fix: throw error if tool call args are missing --- core/tools/definitions/createRuleBlock.ts | 2 +- core/tools/definitions/ls.ts | 3 +-- core/tools/implementations/codebaseTool.ts | 10 ++-------- core/tools/implementations/createNewFile.ts | 8 ++++++++ core/tools/implementations/createRuleBlock.ts | 5 +++++ core/tools/implementations/fetchUrlContent.ts | 4 ++++ core/tools/implementations/globSearch.ts | 6 ++++++ core/tools/implementations/grepSearch.ts | 6 ++++++ core/tools/implementations/readFile.ts | 6 ++++++ core/tools/implementations/requestRule.ts | 6 ++++++ core/tools/implementations/runTerminalCommand.ts | 6 ++++++ core/tools/implementations/searchWeb.ts | 6 ++++++ core/tools/implementations/viewSubdirectory.ts | 6 ++++++ gui/src/util/clientTools/editImpl.ts | 5 +++++ 14 files changed, 68 insertions(+), 11 deletions(-) diff --git a/core/tools/definitions/createRuleBlock.ts b/core/tools/definitions/createRuleBlock.ts index 92aecb15862..8f19c5955eb 100644 --- a/core/tools/definitions/createRuleBlock.ts +++ b/core/tools/definitions/createRuleBlock.ts @@ -16,7 +16,7 @@ export const createRuleBlock: Tool = { 'Creates a "rule" that can be referenced in future conversations. This should be used whenever you want to establish code standards / preferences that should be applied consistently, or when you want to avoid making a mistake again. To modify existing rules, use the edit tool instead.\n\nRule Types:\n- Always: Include only "rule" (always included in model context)\n- Auto Attached: Include "rule", "globs", and/or "regex" (included when files match patterns)\n- Agent Requested: Include "rule" and "description" (AI decides when to apply based on description)\n- Manual: Include only "rule" (only included when explicitly mentioned using @ruleName)', parameters: { type: "object", - required: ["name", "rule", "description"], + required: ["name", "rule"], properties: { name: { type: "string", diff --git a/core/tools/definitions/ls.ts b/core/tools/definitions/ls.ts index 979f9450b4d..71f4e5cf97f 100644 --- a/core/tools/definitions/ls.ts +++ b/core/tools/definitions/ls.ts @@ -16,12 +16,11 @@ export const lsTool: Tool = { description: "List files and folders in a given directory", parameters: { type: "object", - required: ["dirPath", "recursive"], properties: { dirPath: { type: "string", description: - "The directory path relative to the root of the project. Always use forward slash paths like '/'. rather than e.g. '.'", + "The directory path relative to the root of the project. Use forward slash paths like '/'. rather than e.g. '.'", }, recursive: { type: "boolean", diff --git a/core/tools/implementations/codebaseTool.ts b/core/tools/implementations/codebaseTool.ts index fe4f77aceb9..9ea0ecdc701 100644 --- a/core/tools/implementations/codebaseTool.ts +++ b/core/tools/implementations/codebaseTool.ts @@ -3,14 +3,8 @@ import { RangeInFile } from "../.."; import { retrieveContextItemsFromEmbeddings } from "../../context/retrieval/retrieval"; export const codebaseToolImpl: ToolImpl = async (args, extras) => { - if (!args.query || args.query.trim() === "") { - return [ - { - name: "Error", - description: "Codebase search error", - content: "Query parameter is required and cannot be empty.", - }, - ]; + if (!args?.query || args.query.trim() === "") { + throw new Error("`query` parameter is required and cannot be empty."); } try { diff --git a/core/tools/implementations/createNewFile.ts b/core/tools/implementations/createNewFile.ts index 5b18f03d3ab..d1849025e56 100644 --- a/core/tools/implementations/createNewFile.ts +++ b/core/tools/implementations/createNewFile.ts @@ -4,6 +4,14 @@ import { ToolImpl } from "."; import { getCleanUriPath, getUriPathBasename } from "../../util/uri"; export const createNewFileImpl: ToolImpl = async (args, extras) => { + if (!args?.filepath) { + throw new Error("`filepath` argument is required and cannot be empty."); + } + if (args?.contents === undefined) { + throw new Error( + "`contents` argument is required to create a new file (can be empty).", + ); + } const resolvedFileUri = await inferResolvedUriFromRelativePath( args.filepath, extras.ide, diff --git a/core/tools/implementations/createRuleBlock.ts b/core/tools/implementations/createRuleBlock.ts index e433c233db3..2e7a646aa6d 100644 --- a/core/tools/implementations/createRuleBlock.ts +++ b/core/tools/implementations/createRuleBlock.ts @@ -13,6 +13,11 @@ export const createRuleBlockImpl: ToolImpl = async ( { name, rule, ...otherArgs }: CreateRuleBlockArgs, extras, ) => { + if (!name || !rule) { + throw new Error( + "`name` and `rule` arguments are required to create a rule.", + ); + } const fileContent = createRuleMarkdown(name, rule, otherArgs); const [localContinueDir] = await extras.ide.getWorkspaceDirs(); diff --git a/core/tools/implementations/fetchUrlContent.ts b/core/tools/implementations/fetchUrlContent.ts index 16259780a68..802be2e7cfe 100644 --- a/core/tools/implementations/fetchUrlContent.ts +++ b/core/tools/implementations/fetchUrlContent.ts @@ -4,6 +4,10 @@ import { getUrlContextItems } from "../../context/providers/URLContextProvider"; const DEFAULT_FETCH_URL_CHAR_LIMIT = 20000; export const fetchUrlContentImpl: ToolImpl = async (args, extras) => { + if (!args?.url) { + throw new Error("`url` argument is required and cannot be empty"); + } + const contextItems = await getUrlContextItems(args.url, extras.fetch); // Track truncated content diff --git a/core/tools/implementations/globSearch.ts b/core/tools/implementations/globSearch.ts index 1e551d9e2d7..03a061b5722 100644 --- a/core/tools/implementations/globSearch.ts +++ b/core/tools/implementations/globSearch.ts @@ -2,7 +2,13 @@ import { ToolImpl } from "."; import { ContextItem } from "../.."; const MAX_AGENT_GLOB_RESULTS = 100; + export const fileGlobSearchImpl: ToolImpl = async (args, extras) => { + if (!args?.pattern) { + throw new Error( + "`pattern` argument is required for a glob search, and cannot be empty", + ); + } const results = await extras.ide.getFileResults( args.pattern, MAX_AGENT_GLOB_RESULTS, diff --git a/core/tools/implementations/grepSearch.ts b/core/tools/implementations/grepSearch.ts index b1383966930..d9dd3df20a8 100644 --- a/core/tools/implementations/grepSearch.ts +++ b/core/tools/implementations/grepSearch.ts @@ -41,6 +41,12 @@ function splitGrepResultsByFile(content: string): ContextItem[] { } export const grepSearchImpl: ToolImpl = async (args, extras) => { + if (!args?.query) { + throw new Error( + "`query` argument is required for a grep search, and cannot be empty", + ); + } + const results = await extras.ide.getSearchResults( args.query, DEFAULT_GREP_SEARCH_RESULTS_LIMIT, diff --git a/core/tools/implementations/readFile.ts b/core/tools/implementations/readFile.ts index 4736d0b4c8d..89e9ccbdce4 100644 --- a/core/tools/implementations/readFile.ts +++ b/core/tools/implementations/readFile.ts @@ -5,6 +5,12 @@ import { ToolImpl } from "."; import { throwIfFileExceedsHalfOfContext } from "./readFileLimit"; export const readFileImpl: ToolImpl = async (args, extras) => { + if (!args?.filepath) { + throw new Error( + "`filepath` argument is required to read a file, and cannot be empty", + ); + } + const firstUriMatch = await resolveRelativePathInDir( args.filepath, extras.ide, diff --git a/core/tools/implementations/requestRule.ts b/core/tools/implementations/requestRule.ts index a8801f344a1..f61d6328c8f 100644 --- a/core/tools/implementations/requestRule.ts +++ b/core/tools/implementations/requestRule.ts @@ -1,6 +1,12 @@ import { ToolImpl } from "."; export const requestRuleImpl: ToolImpl = async (args, extras) => { + if (!args?.name) { + throw new Error( + "`name` argument is required to request a rule, and cannot be empty", + ); + } + // Find the rule by name in the config const rule = extras.config.rules.find((r) => r.name === args.name); diff --git a/core/tools/implementations/runTerminalCommand.ts b/core/tools/implementations/runTerminalCommand.ts index 3336a100685..b57a9572dd8 100644 --- a/core/tools/implementations/runTerminalCommand.ts +++ b/core/tools/implementations/runTerminalCommand.ts @@ -50,6 +50,12 @@ const ENABLED_FOR_REMOTES = [ ]; export const runTerminalCommandImpl: ToolImpl = async (args, extras) => { + if (!args?.command) { + throw new Error( + "`command` argument is required to run a terminal command, and cannot be empty", + ); + } + // Default to waiting for completion if not specified const waitForCompletion = args.waitForCompletion !== false; const ideInfo = await extras.ide.getIdeInfo(); diff --git a/core/tools/implementations/searchWeb.ts b/core/tools/implementations/searchWeb.ts index c7b64feb367..4a5d277c3aa 100644 --- a/core/tools/implementations/searchWeb.ts +++ b/core/tools/implementations/searchWeb.ts @@ -4,6 +4,12 @@ import { fetchSearchResults } from "../../context/providers/WebContextProvider"; const DEFAULT_WEB_SEARCH_CHAR_LIMIT = 8000; export const searchWebImpl: ToolImpl = async (args, extras) => { + if (!args?.query) { + throw new Error( + "`query` argument is required to search the web, and cannot be empty", + ); + } + const webResults = await fetchSearchResults(args.query, 5, extras.fetch); // Track truncated results diff --git a/core/tools/implementations/viewSubdirectory.ts b/core/tools/implementations/viewSubdirectory.ts index c62887dc5be..bbda7143f56 100644 --- a/core/tools/implementations/viewSubdirectory.ts +++ b/core/tools/implementations/viewSubdirectory.ts @@ -4,7 +4,13 @@ import { resolveRelativePathInDir } from "../../util/ideUtils"; import { ToolImpl } from "."; export const viewSubdirectoryImpl: ToolImpl = async (args: any, extras) => { + if (!args?.directory_path) { + throw new Error( + "`directory_path` argument is required to view a map of a subdirectory, and cannot be empty", + ); + } const { directory_path } = args; + const uri = await resolveRelativePathInDir(directory_path, extras.ide); if (!uri) { diff --git a/gui/src/util/clientTools/editImpl.ts b/gui/src/util/clientTools/editImpl.ts index 6873e0512f3..a6f56e7c9f6 100644 --- a/gui/src/util/clientTools/editImpl.ts +++ b/gui/src/util/clientTools/editImpl.ts @@ -6,6 +6,11 @@ export const editToolImpl: ClientToolImpl = async ( toolCallId, extras, ) => { + if (!args.filepath || !args.changes) { + throw new Error( + "`filepath` and `changes` arguments are required to edit an existing file.", + ); + } const firstUriMatch = await resolveRelativePathInDir( args.filepath, extras.ideMessenger.ide, From ae29787bd2d0724244275cccf97ae2628c829772 Mon Sep 17 00:00:00 2001 From: Dallin Romney Date: Sun, 20 Jul 2025 14:18:21 +0200 Subject: [PATCH 60/97] fix: handle args for function specific tool call divs --- .../FunctionSpecificToolCallDiv.tsx | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/gui/src/pages/gui/ToolCallDiv/FunctionSpecificToolCallDiv.tsx b/gui/src/pages/gui/ToolCallDiv/FunctionSpecificToolCallDiv.tsx index 378483d71f2..251a32e4e0a 100644 --- a/gui/src/pages/gui/ToolCallDiv/FunctionSpecificToolCallDiv.tsx +++ b/gui/src/pages/gui/ToolCallDiv/FunctionSpecificToolCallDiv.tsx @@ -18,25 +18,30 @@ function FunctionSpecificToolCallDiv({ case BuiltInToolNames.CreateNewFile: return ( ); case BuiltInToolNames.EditExistingFile: return ( ); case BuiltInToolNames.SearchAndReplaceInFile: + const changes = args.diffs + ? Array.isArray(args.diffs) + ? args.diffs.join("\n\n---\n\n") + : args.diffs + : ""; return ( @@ -44,7 +49,7 @@ function FunctionSpecificToolCallDiv({ case BuiltInToolNames.RunTerminalCommand: return ( From 18623446053d55c4ec238e46bb94dfc7cf62167d Mon Sep 17 00:00:00 2001 From: zimu Date: Fri, 18 Jul 2025 17:21:17 +0800 Subject: [PATCH 61/97] feat: support getTerminalContents in InteliJIde.kt, which could only read content from the latest terminal tab for now --- .../continue/IntelliJIde.kt | 41 +++++++++++++++---- .../src/main/resources/META-INF/plugin.xml | 1 + 2 files changed, 34 insertions(+), 8 deletions(-) diff --git a/extensions/intellij/src/main/kotlin/com/github/continuedev/continueintellijextension/continue/IntelliJIde.kt b/extensions/intellij/src/main/kotlin/com/github/continuedev/continueintellijextension/continue/IntelliJIde.kt index d6980afb819..ef9ba0e7d66 100644 --- a/extensions/intellij/src/main/kotlin/com/github/continuedev/continueintellijextension/continue/IntelliJIde.kt +++ b/extensions/intellij/src/main/kotlin/com/github/continuedev/continueintellijextension/continue/IntelliJIde.kt @@ -27,12 +27,13 @@ import com.intellij.openapi.fileEditor.FileDocumentManager import com.intellij.openapi.fileEditor.FileEditorManager import com.intellij.openapi.project.Project import com.intellij.openapi.project.guessProjectDir -import com.intellij.openapi.util.IconLoader import com.intellij.openapi.vfs.LocalFileSystem import com.intellij.openapi.vfs.VirtualFileManager import com.intellij.psi.PsiDocumentManager import com.intellij.testFramework.LightVirtualFile import kotlinx.coroutines.* +import org.jetbrains.plugins.terminal.ShellTerminalWidget +import org.jetbrains.plugins.terminal.TerminalView import java.awt.Toolkit import java.awt.datatransfer.DataFlavor import java.io.BufferedReader @@ -54,7 +55,7 @@ class IntelliJIDE( init { try { val os = getOS() - + if (os == OS.LINUX || os == OS.MAC) { val file = File(ripgrep) if (!file.canExecute()) { @@ -135,7 +136,30 @@ class IntelliJIDE( } override suspend fun getTerminalContents(): String { - return "" + return withContext(Dispatchers.EDT) { + try { + val terminalView = TerminalView.getInstance(project) + // Find the first terminal widget available, whatever its state. + val widget = + terminalView.getWidgets().filterIsInstance().firstOrNull { it.isEnabled } + + if (widget != null) { + val textBuffer = widget.terminalTextBuffer + val stringBuilder = StringBuilder() + // Iterate through all lines in the buffer (history + screen) + for (i in 0 until textBuffer.historyLinesCount + textBuffer.screenLinesCount) { + stringBuilder.append(textBuffer.getLine(i).text).append('\n') + } + stringBuilder.toString() + } else { + "" // Return empty if no terminal is available + } + } catch (e: Exception) { + println("Error getting terminal contents: ${e.message}") + e.printStackTrace() + "" // Return empty on error + } + } } override suspend fun getDebugLocals(threadIndex: Int): String { @@ -343,7 +367,7 @@ class IntelliJIDE( } val command = GeneralCommandLine(commandArgs) - + command.setWorkDirectory(project.basePath) val results = ExecUtil.execAndGetOutput(command).stdout return results.split("\n") @@ -357,11 +381,12 @@ class IntelliJIDE( throw NotImplementedError("Ripgrep not supported, this workspace is remote") } } + override suspend fun getSearchResults(query: String, maxResults: Int?): String { val ideInfo = this.getIdeInfo() if (ideInfo.remoteName == "local") { try { - val commandArgs = mutableListOf( + val commandArgs = mutableListOf( ripgrep, "-i", "--ignore-file", @@ -372,20 +397,20 @@ class IntelliJIDE( "2", "--heading" ) - + // Conditionally add maxResults flag if (maxResults != null) { commandArgs.add("-m") commandArgs.add(maxResults.toString()) } - + // Add the search query and path commandArgs.add("-e") commandArgs.add(query) commandArgs.add(".") val command = GeneralCommandLine(commandArgs) - + command.setWorkDirectory(project.basePath) return ExecUtil.execAndGetOutput(command).stdout } catch (exception: Exception) { diff --git a/extensions/intellij/src/main/resources/META-INF/plugin.xml b/extensions/intellij/src/main/resources/META-INF/plugin.xml index 951338698cd..15a0dd86454 100644 --- a/extensions/intellij/src/main/resources/META-INF/plugin.xml +++ b/extensions/intellij/src/main/resources/META-INF/plugin.xml @@ -7,6 +7,7 @@ GitHub]]> com.intellij.modules.platform + org.jetbrains.plugins.terminal From 10e4c325a2ee483a0cc1e907c5e65b0b435cd5d3 Mon Sep 17 00:00:00 2001 From: zimu Date: Fri, 18 Jul 2025 17:51:53 +0800 Subject: [PATCH 62/97] feat: optimize getTerminalContents in InteliJIde.kt, which reads content from the selected terminal panel --- .../continueintellijextension/continue/IntelliJIde.kt | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/extensions/intellij/src/main/kotlin/com/github/continuedev/continueintellijextension/continue/IntelliJIde.kt b/extensions/intellij/src/main/kotlin/com/github/continuedev/continueintellijextension/continue/IntelliJIde.kt index ef9ba0e7d66..0f2a280ee4b 100644 --- a/extensions/intellij/src/main/kotlin/com/github/continuedev/continueintellijextension/continue/IntelliJIde.kt +++ b/extensions/intellij/src/main/kotlin/com/github/continuedev/continueintellijextension/continue/IntelliJIde.kt @@ -29,6 +29,7 @@ import com.intellij.openapi.project.Project import com.intellij.openapi.project.guessProjectDir import com.intellij.openapi.vfs.LocalFileSystem import com.intellij.openapi.vfs.VirtualFileManager +import com.intellij.openapi.wm.ToolWindowManager import com.intellij.psi.PsiDocumentManager import com.intellij.testFramework.LightVirtualFile import kotlinx.coroutines.* @@ -138,10 +139,13 @@ class IntelliJIDE( override suspend fun getTerminalContents(): String { return withContext(Dispatchers.EDT) { try { + val toolWindow = ToolWindowManager.getInstance(project).getToolWindow("Terminal") + val terminalView = TerminalView.getInstance(project) - // Find the first terminal widget available, whatever its state. - val widget = - terminalView.getWidgets().filterIsInstance().firstOrNull { it.isEnabled } + // Find the first terminal widget selected, whatever its state, running command or not. + val widget = terminalView.getWidgets().filterIsInstance().firstOrNull { + toolWindow?.getContentManager()?.getContent(it)?.isSelected ?: false + } if (widget != null) { val textBuffer = widget.terminalTextBuffer From bb049e8f8659f818e001522aa161687bf8c2dae8 Mon Sep 17 00:00:00 2001 From: zimu Date: Fri, 18 Jul 2025 20:01:23 +0800 Subject: [PATCH 63/97] feat: implement runCommand() method in IntelijIde.kt, and update a interface signature for runCommand by providing TerminalOptions.class, which aligns to how VS COde Extension implemented --- .../continue/IdeProtocolClient.kt | 18 +++++--- .../continue/IntelliJIde.kt | 42 ++++++++++++++++++- .../continueintellijextension/protocol/ide.kt | 7 +++- .../continueintellijextension/types.kt | 9 +++- .../RunInTerminalButton.tsx | 6 --- 5 files changed, 65 insertions(+), 17 deletions(-) diff --git a/extensions/intellij/src/main/kotlin/com/github/continuedev/continueintellijextension/continue/IdeProtocolClient.kt b/extensions/intellij/src/main/kotlin/com/github/continuedev/continueintellijextension/continue/IdeProtocolClient.kt index 08a5e8d1846..66ea992a46d 100644 --- a/extensions/intellij/src/main/kotlin/com/github/continuedev/continueintellijextension/continue/IdeProtocolClient.kt +++ b/extensions/intellij/src/main/kotlin/com/github/continuedev/continueintellijextension/continue/IdeProtocolClient.kt @@ -8,12 +8,13 @@ import com.github.continuedev.continueintellijextension.editor.DiffStreamService import com.github.continuedev.continueintellijextension.editor.EditorUtils import com.github.continuedev.continueintellijextension.error.ContinueErrorService import com.github.continuedev.continueintellijextension.protocol.* -import com.github.continuedev.continueintellijextension.services.* -import com.github.continuedev.continueintellijextension.utils.* +import com.github.continuedev.continueintellijextension.services.ContinueExtensionSettings +import com.github.continuedev.continueintellijextension.services.ContinuePluginService +import com.github.continuedev.continueintellijextension.utils.getMachineUniqueID +import com.github.continuedev.continueintellijextension.utils.uuid import com.google.gson.Gson import com.intellij.openapi.application.ApplicationManager import com.intellij.openapi.command.WriteCommandAction -import com.intellij.openapi.components.ServiceManager import com.intellij.openapi.components.service import com.intellij.openapi.editor.SelectionModel import com.intellij.openapi.fileEditor.FileEditorManager @@ -21,7 +22,10 @@ import com.intellij.openapi.project.DumbAware import com.intellij.openapi.project.Project import com.intellij.openapi.vfs.VirtualFileManager import com.intellij.openapi.wm.ToolWindowManager -import kotlinx.coroutines.* +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.ExperimentalCoroutinesApi +import kotlinx.coroutines.launch import java.awt.Toolkit import java.awt.datatransfer.StringSelection @@ -323,7 +327,11 @@ class IdeProtocolClient( } "runCommand" -> { - // Running commands not yet supported in JetBrains + val params = Gson().fromJson( + dataElement.toString(), + RunCommandParams::class.java + ) + ide.runCommand(params.command, params.options) respond(null) } diff --git a/extensions/intellij/src/main/kotlin/com/github/continuedev/continueintellijextension/continue/IntelliJIde.kt b/extensions/intellij/src/main/kotlin/com/github/continuedev/continueintellijextension/continue/IntelliJIde.kt index 0f2a280ee4b..ad30a5c43ad 100644 --- a/extensions/intellij/src/main/kotlin/com/github/continuedev/continueintellijextension/continue/IntelliJIde.kt +++ b/extensions/intellij/src/main/kotlin/com/github/continuedev/continueintellijextension/continue/IntelliJIde.kt @@ -248,8 +248,46 @@ class IntelliJIDE( } } - override suspend fun runCommand(command: String) { - throw NotImplementedError("runCommand not implemented in IntelliJ") + override suspend fun runCommand(command: String, options: TerminalOptions) { + println("Continue-Debug: runCommand called with command: $command") + ApplicationManager.getApplication().invokeLater { + try { + println("Continue-Debug: Activating Terminal tool window.") + val toolWindow = ToolWindowManager.getInstance(project).getToolWindow("Terminal") + toolWindow?.activate({ + try { + val terminalView = TerminalView.getInstance(project) + println("Continue-Debug: Searching for an existing, non-busy terminal widget.") + + var widget = terminalView.getWidgets().filterIsInstance() + .firstOrNull { !it.hasRunningCommands() } + + if (widget == null) { + println("Continue-Debug: No non-busy widget found. Creating a new one.") + widget = terminalView.createLocalShellWidget(project.basePath, "Continue Terminal", true) + } else { + println("Continue-Debug: Found an existing widget. Bringing it to the front.") + val contentManager = toolWindow.contentManager + val content = contentManager.getContent(widget) + if (content != null) { + contentManager.setSelectedContent(content, true) + } + } + + println("Continue-Debug: Writing command to terminal: $command") + widget.ttyConnector?.write(command) + println("Continue-Debug: Command successfully written to terminal.") + + } catch (e: Exception) { + println("Continue-Debug: Error during terminal widget handling: ${e.message}") + e.printStackTrace() + } + }, true) + } catch (e: Exception) { + println("Continue-Debug: Error activating terminal tool window: ${e.message}") + e.printStackTrace() + } + } } override suspend fun saveFile(filepath: String) { diff --git a/extensions/intellij/src/main/kotlin/com/github/continuedev/continueintellijextension/protocol/ide.kt b/extensions/intellij/src/main/kotlin/com/github/continuedev/continueintellijextension/protocol/ide.kt index bf377e675bc..3ff7b92be51 100644 --- a/extensions/intellij/src/main/kotlin/com/github/continuedev/continueintellijextension/protocol/ide.kt +++ b/extensions/intellij/src/main/kotlin/com/github/continuedev/continueintellijextension/protocol/ide.kt @@ -1,6 +1,7 @@ package com.github.continuedev.continueintellijextension.protocol -import com.github.continuedev.continueintellijextension.* +import com.github.continuedev.continueintellijextension.Range +import com.github.continuedev.continueintellijextension.TerminalOptions data class GetControlPlaneSessionInfoParams(val silent: Boolean, val useOnboarding: Boolean) @@ -59,4 +60,6 @@ data class GetGitRootPathParams(val dir: String) data class ListDirParams(val dir: String) -data class GetFileStatsParams(val files: List) \ No newline at end of file +data class GetFileStatsParams(val files: List) + +data class RunCommandParams(val command: String, val options: TerminalOptions) diff --git a/extensions/intellij/src/main/kotlin/com/github/continuedev/continueintellijextension/types.kt b/extensions/intellij/src/main/kotlin/com/github/continuedev/continueintellijextension/types.kt index b7680fceb9f..85230172948 100644 --- a/extensions/intellij/src/main/kotlin/com/github/continuedev/continueintellijextension/types.kt +++ b/extensions/intellij/src/main/kotlin/com/github/continuedev/continueintellijextension/types.kt @@ -91,6 +91,11 @@ data class ContinueRcJson( val mergeBehavior: ConfigMergeType ) +data class TerminalOptions( + val reuseTerminal: Boolean, + val terminalName: String, + val waitForCompletion: Boolean +) interface IDE { suspend fun getIdeInfo(): IdeInfo @@ -134,7 +139,7 @@ interface IDE { suspend fun openUrl(url: String) - suspend fun runCommand(command: String) + suspend fun runCommand(command: String, options: TerminalOptions) suspend fun saveFile(filepath: String) @@ -253,4 +258,4 @@ data class ShowFilePayload( sealed class FimResult { data class FimEdit(val fimText: String) : FimResult() object NotFimEdit : FimResult() -} \ No newline at end of file +} diff --git a/gui/src/components/StyledMarkdownPreview/StepContainerPreToolbar/RunInTerminalButton.tsx b/gui/src/components/StyledMarkdownPreview/StepContainerPreToolbar/RunInTerminalButton.tsx index da0e439c066..4d6aa97bd89 100644 --- a/gui/src/components/StyledMarkdownPreview/StepContainerPreToolbar/RunInTerminalButton.tsx +++ b/gui/src/components/StyledMarkdownPreview/StepContainerPreToolbar/RunInTerminalButton.tsx @@ -2,7 +2,6 @@ import { CommandLineIcon } from "@heroicons/react/24/outline"; import { useContext } from "react"; import { lightGray, vscForeground } from "../.."; import { IdeMessengerContext } from "../../../context/IdeMessenger"; -import { isJetBrains } from "../../../util"; import { extractCommand } from "../utils/commandExtractor"; interface RunInTerminalButtonProps { @@ -12,11 +11,6 @@ interface RunInTerminalButtonProps { export function RunInTerminalButton({ command }: RunInTerminalButtonProps) { const ideMessenger = useContext(IdeMessengerContext); - if (isJetBrains()) { - // JetBrains plugin doesn't currently have a way to run the command in the terminal for the user - return null; - } - function runInTerminal() { // Extract just the command line const extractedCommand = extractCommand(command); From 76bbb67dba0d7648028442d489d7a8d6e0e729ab Mon Sep 17 00:00:00 2001 From: zimu Date: Fri, 18 Jul 2025 21:25:43 +0800 Subject: [PATCH 64/97] feat: reuse terminal and find by terminalName before running command --- .../continue/IntelliJIde.kt | 55 +++++++++++++------ .../continueintellijextension/protocol/ide.kt | 2 +- .../continueintellijextension/types.kt | 8 +-- 3 files changed, 42 insertions(+), 23 deletions(-) diff --git a/extensions/intellij/src/main/kotlin/com/github/continuedev/continueintellijextension/continue/IntelliJIde.kt b/extensions/intellij/src/main/kotlin/com/github/continuedev/continueintellijextension/continue/IntelliJIde.kt index ad30a5c43ad..1fc4b4fda57 100644 --- a/extensions/intellij/src/main/kotlin/com/github/continuedev/continueintellijextension/continue/IntelliJIde.kt +++ b/extensions/intellij/src/main/kotlin/com/github/continuedev/continueintellijextension/continue/IntelliJIde.kt @@ -248,43 +248,62 @@ class IntelliJIDE( } } - override suspend fun runCommand(command: String, options: TerminalOptions) { - println("Continue-Debug: runCommand called with command: $command") + override suspend fun runCommand(command: String, options: TerminalOptions?) { + val terminalOptions = + options ?: TerminalOptions(reuseTerminal = true, terminalName = null, waitForCompletion = false) + ApplicationManager.getApplication().invokeLater { try { - println("Continue-Debug: Activating Terminal tool window.") val toolWindow = ToolWindowManager.getInstance(project).getToolWindow("Terminal") toolWindow?.activate({ try { val terminalView = TerminalView.getInstance(project) - println("Continue-Debug: Searching for an existing, non-busy terminal widget.") - - var widget = terminalView.getWidgets().filterIsInstance() - .firstOrNull { !it.hasRunningCommands() } + var widget: ShellTerminalWidget? = null + + // 1. Handle reuseTerminal option + if (terminalOptions.reuseTerminal == true && terminalView.getWidgets().isNotEmpty()) { + // 2. Find by terminalName if provided + if (terminalOptions.terminalName != null) { + widget = terminalView.getWidgets().filterIsInstance() + .firstOrNull { + toolWindow.contentManager.getContent(it).tabName == terminalOptions.terminalName + && !it.hasRunningCommands() + } + } else { + // 3. Find active terminal, or fall back to the first one + widget = terminalView.getWidgets().filterIsInstance() + .firstOrNull { toolWindow.contentManager.getContent(it).isSelected } + ?: terminalView.getWidgets().filterIsInstance().firstOrNull { + !it.hasRunningCommands() + } + } + } + // 4. Create a new terminal if needed if (widget == null) { - println("Continue-Debug: No non-busy widget found. Creating a new one.") - widget = terminalView.createLocalShellWidget(project.basePath, "Continue Terminal", true) + widget = terminalView.createLocalShellWidget( + project.basePath, + terminalOptions.terminalName, + true + ) } else { - println("Continue-Debug: Found an existing widget. Bringing it to the front.") - val contentManager = toolWindow.contentManager - val content = contentManager.getContent(widget) + // Ensure the found widget is visible + val content = toolWindow.contentManager.getContent(widget) if (content != null) { - contentManager.setSelectedContent(content, true) + toolWindow.contentManager.setSelectedContent(content, true) } } - println("Continue-Debug: Writing command to terminal: $command") + // 5. Show and send text widget.ttyConnector?.write(command) - println("Continue-Debug: Command successfully written to terminal.") } catch (e: Exception) { - println("Continue-Debug: Error during terminal widget handling: ${e.message}") + println("Error during terminal widget handling: ${e.message}") e.printStackTrace() } }, true) } catch (e: Exception) { - println("Continue-Debug: Error activating terminal tool window: ${e.message}") + println("Error activating terminal tool window: ${e.message}") e.printStackTrace() } } @@ -666,7 +685,7 @@ class IntelliJIDE( } private fun setFileOpen(filepath: String, open: Boolean = true) { - val file = LocalFileSystem.getInstance().findFileByPath(UriUtils.uriToFile(filepath).path) + val file = LocalFileSystem.getInstance().findFileByPath(UriUtils.parseUri(filepath).path) file?.let { if (open) { diff --git a/extensions/intellij/src/main/kotlin/com/github/continuedev/continueintellijextension/protocol/ide.kt b/extensions/intellij/src/main/kotlin/com/github/continuedev/continueintellijextension/protocol/ide.kt index 3ff7b92be51..bc199b35a57 100644 --- a/extensions/intellij/src/main/kotlin/com/github/continuedev/continueintellijextension/protocol/ide.kt +++ b/extensions/intellij/src/main/kotlin/com/github/continuedev/continueintellijextension/protocol/ide.kt @@ -62,4 +62,4 @@ data class ListDirParams(val dir: String) data class GetFileStatsParams(val files: List) -data class RunCommandParams(val command: String, val options: TerminalOptions) +data class RunCommandParams(val command: String, val options: TerminalOptions?) diff --git a/extensions/intellij/src/main/kotlin/com/github/continuedev/continueintellijextension/types.kt b/extensions/intellij/src/main/kotlin/com/github/continuedev/continueintellijextension/types.kt index 85230172948..549afd91b34 100644 --- a/extensions/intellij/src/main/kotlin/com/github/continuedev/continueintellijextension/types.kt +++ b/extensions/intellij/src/main/kotlin/com/github/continuedev/continueintellijextension/types.kt @@ -92,9 +92,9 @@ data class ContinueRcJson( ) data class TerminalOptions( - val reuseTerminal: Boolean, - val terminalName: String, - val waitForCompletion: Boolean + val reuseTerminal: Boolean?, + val terminalName: String?, + val waitForCompletion: Boolean? ) interface IDE { @@ -139,7 +139,7 @@ interface IDE { suspend fun openUrl(url: String) - suspend fun runCommand(command: String, options: TerminalOptions) + suspend fun runCommand(command: String, options: TerminalOptions?) suspend fun saveFile(filepath: String) From ebd5154b8c8f7f606194d424a1f330cc8b22a94e Mon Sep 17 00:00:00 2001 From: zimu Date: Mon, 21 Jul 2025 09:46:25 +0800 Subject: [PATCH 65/97] fix: recover non-related change in InteliJIde.kt --- .../continueintellijextension/continue/IntelliJIde.kt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/extensions/intellij/src/main/kotlin/com/github/continuedev/continueintellijextension/continue/IntelliJIde.kt b/extensions/intellij/src/main/kotlin/com/github/continuedev/continueintellijextension/continue/IntelliJIde.kt index 1fc4b4fda57..98792ffe6d9 100644 --- a/extensions/intellij/src/main/kotlin/com/github/continuedev/continueintellijextension/continue/IntelliJIde.kt +++ b/extensions/intellij/src/main/kotlin/com/github/continuedev/continueintellijextension/continue/IntelliJIde.kt @@ -1,4 +1,3 @@ - package com.github.continuedev.continueintellijextension.`continue` import com.github.continuedev.continueintellijextension.* @@ -685,7 +684,7 @@ class IntelliJIDE( } private fun setFileOpen(filepath: String, open: Boolean = true) { - val file = LocalFileSystem.getInstance().findFileByPath(UriUtils.parseUri(filepath).path) + val file = LocalFileSystem.getInstance().findFileByPath(UriUtils.uriToFile(filepath).path) file?.let { if (open) { From 89a7d9a0c2fc2c56859af2f50c14e357caa6b2fb Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Thu, 22 May 2025 11:02:31 +0200 Subject: [PATCH 66/97] fix: open the proper config file Signed-off-by: Fred Bricon --- core/commands/slash/customSlashCommand.ts | 1 + .../commands/slash/promptBlockSlashCommand.ts | 1 + core/config/ConfigHandler.ts | 9 ++- core/config/load.ts | 1 + core/config/yaml/loadYaml.ts | 3 + core/core.ts | 5 +- core/index.d.ts | 7 +++ core/llm/index.ts | 4 ++ core/protocol/core.ts | 5 +- .../mainInput/Lump/EditBlockButton.tsx | 3 + .../Lump/sections/PromptsSection.tsx | 2 +- .../mainInput/Lump/sections/RulesSection.tsx | 1 + .../Lump/sections/docs/DocsIndexingStatus.tsx | 6 +- .../Lump/sections/mcp/MCPSection.tsx | 6 +- .../components/modelSelection/ModelSelect.tsx | 5 +- gui/src/pages/config/ModelRoleSelector.tsx | 11 +++- gui/src/pages/gui/StreamError.tsx | 1 + packages/config-types/src/index.ts | 1 + packages/config-yaml/src/load/unroll.ts | 63 +++++++++++++++++-- .../src/markdown/markdownToRule.ts | 1 + packages/config-yaml/src/schemas/index.ts | 4 ++ packages/config-yaml/src/schemas/models.ts | 1 + 22 files changed, 125 insertions(+), 16 deletions(-) diff --git a/core/commands/slash/customSlashCommand.ts b/core/commands/slash/customSlashCommand.ts index c27a41f4cde..9526cbca89c 100644 --- a/core/commands/slash/customSlashCommand.ts +++ b/core/commands/slash/customSlashCommand.ts @@ -11,5 +11,6 @@ export function convertCustomCommandToSlashCommand( description: customCommand.description ?? "", prompt: customCommand.prompt, source: "json-custom-command", + promptFile: customCommand.sourceFile, // TODO refactor promptFile to align with sourceFile }; } diff --git a/core/commands/slash/promptBlockSlashCommand.ts b/core/commands/slash/promptBlockSlashCommand.ts index 00530b8bda4..4f3446a21dd 100644 --- a/core/commands/slash/promptBlockSlashCommand.ts +++ b/core/commands/slash/promptBlockSlashCommand.ts @@ -9,5 +9,6 @@ export function convertPromptBlockToSlashCommand( description: prompt.description ?? "", prompt: prompt.prompt, source: "yaml-prompt-block", + promptFile: prompt.sourceFile, // Align with the sourceFile property }; } diff --git a/core/config/ConfigHandler.ts b/core/config/ConfigHandler.ts index a50e72c24bc..1ca09b1e23a 100644 --- a/core/config/ConfigHandler.ts +++ b/core/config/ConfigHandler.ts @@ -522,7 +522,10 @@ export class ConfigHandler { return config; } - async openConfigProfile(profileId?: string) { + async openConfigProfile( + profileId?: string, + element?: { sourceFile?: string }, + ) { let openProfileId = profileId || this.currentProfile?.profileDescription.id; if (!openProfileId) { return; @@ -530,8 +533,10 @@ export class ConfigHandler { const profile = this.currentOrg.profiles.find( (p) => p.profileDescription.id === openProfileId, ); + if (profile?.profileDescription.profileType === "local") { - await this.ide.openFile(profile.profileDescription.uri); + const configFile = element?.sourceFile ?? profile.profileDescription.uri; + await this.ide.openFile(configFile); } else { const env = await getControlPlaneEnv(this.ide.getIdeSettings()); await this.ide.openUrl(`${env.APP_URL}${openProfileId}`); diff --git a/core/config/load.ts b/core/config/load.ts index a5da010f96b..5206bb8bb04 100644 --- a/core/config/load.ts +++ b/core/config/load.ts @@ -652,6 +652,7 @@ function llmToSerializedModelDescription(llm: ILLM): ModelDescription { configurationStatus: llm.getConfigurationStatus(), apiKeyLocation: llm.apiKeyLocation, envSecretLocations: llm.envSecretLocations, + sourceFile: llm.sourceFile, }; } diff --git a/core/config/yaml/loadYaml.ts b/core/config/yaml/loadYaml.ts index 04c19b32622..83c6384ba3c 100644 --- a/core/config/yaml/loadYaml.ts +++ b/core/config/yaml/loadYaml.ts @@ -56,6 +56,7 @@ function convertYamlRuleToContinueRule(rule: Rule): RuleWithSource { rule: rule.rule, globs: rule.globs, name: rule.name, + ruleFile: rule.sourceFile, }; } } @@ -237,6 +238,7 @@ async function configYamlToContinueConfig(options: { faviconUrl: doc.faviconUrl, maxDepth: doc.maxDepth, useLocalCrawling: doc.useLocalCrawling, + sourceFile: doc.sourceFile, })); config.mcpServers?.forEach((mcpServer) => { @@ -429,6 +431,7 @@ async function configYamlToContinueConfig(options: { (config.mcpServers ?? []).map((server) => ({ id: server.name, name: server.name, + sourceFile: server.sourceFile, transport: { type: "stdio", args: [], diff --git a/core/core.ts b/core/core.ts index a3fe4cab59e..d8275b8ff2e 100644 --- a/core/core.ts +++ b/core/core.ts @@ -349,7 +349,10 @@ export class Core { }); on("config/openProfile", async (msg) => { - await this.configHandler.openConfigProfile(msg.data.profileId); + await this.configHandler.openConfigProfile( + msg.data.profileId, + msg.data?.element, + ); }); on("config/reload", async (msg) => { diff --git a/core/index.d.ts b/core/index.d.ts index c2bc7487b2e..50fd9653476 100644 --- a/core/index.d.ts +++ b/core/index.d.ts @@ -237,6 +237,7 @@ export interface SiteIndexingConfig { maxDepth?: number; faviconUrl?: string; useLocalCrawling?: boolean; + sourceFile?: string; } export interface DocsIndexingDetails { @@ -660,6 +661,8 @@ export interface LLMOptions { deploymentId?: string; env?: Record; + + sourceFile?: string; } type RequireAtLeastOne = Pick< @@ -1035,6 +1038,7 @@ export interface CustomCommand { name: string; prompt: string; description?: string; + sourceFile?: string; } export interface Prediction { @@ -1152,6 +1156,8 @@ export interface ModelDescription { capabilities?: ModelCapability; roles?: ModelRole[]; configurationStatus?: LLMConfigurationStatuses; + + sourceFile?: string; } export interface JSONEmbedOptions { @@ -1306,6 +1312,7 @@ export interface MCPServerStatus extends MCPOptions { tools: MCPTool[]; resources: MCPResource[]; resourceTemplates: MCPResourceTemplate[]; + sourceFile?: string; } export interface ContinueUIConfig { diff --git a/core/llm/index.ts b/core/llm/index.ts index fa16b8591d6..0df366bbf25 100644 --- a/core/llm/index.ts +++ b/core/llm/index.ts @@ -187,6 +187,9 @@ export abstract class BaseLLM implements ILLM { maxEmbeddingChunkSize: number; maxEmbeddingBatchSize: number; + //URI to local block defining this LLM + sourceFile?: string; + private _llmOptions: LLMOptions; protected openaiAdapter?: BaseLlmApi; @@ -290,6 +293,7 @@ export abstract class BaseLLM implements ILLM { this.embeddingId = `${this.constructor.name}::${this.model}::${this.maxEmbeddingChunkSize}`; this.autocompleteOptions = options.autocompleteOptions; + this.sourceFile = options.sourceFile; } getConfigurationStatus() { diff --git a/core/protocol/core.ts b/core/protocol/core.ts index 251922696fc..743556d1591 100644 --- a/core/protocol/core.ts +++ b/core/protocol/core.ts @@ -102,7 +102,10 @@ export type ToCoreFromIdeOrWebviewProtocol = { ), void, ]; - "config/openProfile": [{ profileId: string | undefined }, void]; + "config/openProfile": [ + { profileId: string | undefined; element?: { sourceFile?: string } }, + void, + ]; "config/updateSharedConfig": [SharedConfigSchema, SharedConfigSchema]; "config/updateSelectedModel": [ { diff --git a/gui/src/components/mainInput/Lump/EditBlockButton.tsx b/gui/src/components/mainInput/Lump/EditBlockButton.tsx index 6cdcac4b018..5705deba278 100644 --- a/gui/src/components/mainInput/Lump/EditBlockButton.tsx +++ b/gui/src/components/mainInput/Lump/EditBlockButton.tsx @@ -13,6 +13,7 @@ interface EditBlockButtonProps { blockType: T; block?: NonNullable[number]; className?: string; + sourceFile?: string; } function isUsesBlock(block: any): block is { uses: string } { @@ -23,6 +24,7 @@ export default function EditBlockButton({ block, blockType, className = "", + sourceFile, }: EditBlockButtonProps) { const ideMessenger = useContext(IdeMessengerContext); const { selectedProfile } = useAuth(); @@ -37,6 +39,7 @@ export default function EditBlockButton({ if (selectedProfile?.profileType === "local") { ideMessenger.post("config/openProfile", { profileId: undefined, + element: { sourceFile }, }); } else if (block && isUsesBlock(block)) { openUrl(`${block.uses}/new-version`); diff --git a/gui/src/components/mainInput/Lump/sections/PromptsSection.tsx b/gui/src/components/mainInput/Lump/sections/PromptsSection.tsx index c277d7d926a..10fb767b330 100644 --- a/gui/src/components/mainInput/Lump/sections/PromptsSection.tsx +++ b/gui/src/components/mainInput/Lump/sections/PromptsSection.tsx @@ -121,6 +121,7 @@ export function PromptsSection() { } else { ideMessenger.post("config/openProfile", { profileId: undefined, + element: { sourceFile: (prompt as any).sourceFile }, }); } }; @@ -149,7 +150,6 @@ export function PromptsSection() { index = index + 1; } } - return promptsWithSlug.sort((a, b) => { const aBookmarked = isCommandBookmarked(a.name); const bBookmarked = isCommandBookmarked(b.name); diff --git a/gui/src/components/mainInput/Lump/sections/RulesSection.tsx b/gui/src/components/mainInput/Lump/sections/RulesSection.tsx index 5f145a169d4..f632cb10a6d 100644 --- a/gui/src/components/mainInput/Lump/sections/RulesSection.tsx +++ b/gui/src/components/mainInput/Lump/sections/RulesSection.tsx @@ -60,6 +60,7 @@ const RuleCard: React.FC = ({ rule }) => { } else { ideMessenger.post("config/openProfile", { profileId: undefined, + element: { sourceFile: (rule as any).sourceFile }, }); } }; diff --git a/gui/src/components/mainInput/Lump/sections/docs/DocsIndexingStatus.tsx b/gui/src/components/mainInput/Lump/sections/docs/DocsIndexingStatus.tsx index 9189a794c31..4b946a1fd30 100644 --- a/gui/src/components/mainInput/Lump/sections/docs/DocsIndexingStatus.tsx +++ b/gui/src/components/mainInput/Lump/sections/docs/DocsIndexingStatus.tsx @@ -123,7 +123,11 @@ function DocsIndexingStatus({ /> )} - + {["aborted", "complete", "failed"].includes( status?.status ?? "", diff --git a/gui/src/components/mainInput/Lump/sections/mcp/MCPSection.tsx b/gui/src/components/mainInput/Lump/sections/mcp/MCPSection.tsx index 75c0f0725c5..76fb338e9da 100644 --- a/gui/src/components/mainInput/Lump/sections/mcp/MCPSection.tsx +++ b/gui/src/components/mainInput/Lump/sections/mcp/MCPSection.tsx @@ -132,7 +132,11 @@ function MCPServerPreview({ server, serverFromYaml }: MCPServerStatusProps) { {/* Refresh button */}
- +
ideMessenger.post("config/openProfile", { profileId: undefined, + element: { sourceFile: selectedModel?.sourceFile }, }) } /> diff --git a/gui/src/pages/config/ModelRoleSelector.tsx b/gui/src/pages/config/ModelRoleSelector.tsx index 1b73751b91e..5bdac5b4a92 100644 --- a/gui/src/pages/config/ModelRoleSelector.tsx +++ b/gui/src/pages/config/ModelRoleSelector.tsx @@ -48,10 +48,13 @@ const ModelRoleSelector = ({ onSelect(models.find((m) => m.title === title) ?? null); } - function onClickGear(e: MouseEvent) { + function onClickGear(e: MouseEvent, model: ModelDescription) { e.stopPropagation(); e.preventDefault(); - ideMessenger.post("config/openProfile", { profileId: undefined }); + ideMessenger.post("config/openProfile", { + profileId: undefined, + element: model, + }); } function handleOptionClick( @@ -169,7 +172,9 @@ const ModelRoleSelector = ({ {hoveredIdx === idx && ( ) => + onClickGear(e, option) + } /> )} {option.title === selectedModel?.title && ( diff --git a/gui/src/pages/gui/StreamError.tsx b/gui/src/pages/gui/StreamError.tsx index 58fcaf97bfe..6af15333880 100644 --- a/gui/src/pages/gui/StreamError.tsx +++ b/gui/src/pages/gui/StreamError.tsx @@ -77,6 +77,7 @@ const StreamErrorDialog = ({ error }: StreamErrorProps) => { onClick={() => { ideMessenger.post("config/openProfile", { profileId: undefined, + element: selectedModel ?? undefined, }); }} > diff --git a/packages/config-types/src/index.ts b/packages/config-types/src/index.ts index 8591c6b746b..fbc2d45fc40 100644 --- a/packages/config-types/src/index.ts +++ b/packages/config-types/src/index.ts @@ -210,6 +210,7 @@ export const siteIndexingConfigSchema = z.object({ maxDepth: z.number().optional(), faviconUrl: z.string().optional(), useLocalCrawling: z.boolean().optional(), + sourceFile: z.string().optional(), }); export const controlPlaneConfigSchema = z.object({ diff --git a/packages/config-yaml/src/load/unroll.ts b/packages/config-yaml/src/load/unroll.ts index 80403b5448a..adbe453244e 100644 --- a/packages/config-yaml/src/load/unroll.ts +++ b/packages/config-yaml/src/load/unroll.ts @@ -452,7 +452,15 @@ export async function unrollBlocks( registry, ); - return { blockType, resolvedBlock, error: null }; + return { + blockType, + resolvedBlock, + source: + injectBlock.uriType === "file" + ? injectBlock.filePath + : undefined, + error: null, + }; } catch (err) { let msg = ""; if (injectBlock.uriType === "file") { @@ -475,7 +483,11 @@ export async function unrollBlocks( const injectedResults = await Promise.all(injectedBlockPromises); const injectedErrors: ConfigValidationError[] = []; - const injectedBlocks: { blockType: string; resolvedBlock: any }[] = []; + const injectedBlocks: { + blockType: string; + resolvedBlock: any; + source?: string; + }[] = []; for (const result of injectedResults) { if (result.error) { @@ -484,6 +496,7 @@ export async function unrollBlocks( injectedBlocks.push({ blockType: result.blockType, resolvedBlock: result.resolvedBlock, + source: result.source, }); } } @@ -521,12 +534,21 @@ export async function unrollBlocks( } // Add injected blocks - for (const { blockType, resolvedBlock } of injectedResult.injectedBlocks) { + for (const { + blockType, + resolvedBlock, + source, + } of injectedResult.injectedBlocks) { const key = blockType as BlockType; if (!unrolledAssistant[key]) { unrolledAssistant[key] = []; } - unrolledAssistant[key]?.push(...((resolvedBlock[blockType] ?? []) as any)); + const blocksWithSourceFiles = injectLocalSourceFile( + key, + resolvedBlock, + source, + ); + unrolledAssistant[key]?.push(...blocksWithSourceFiles); } const configResult: ConfigResult = { @@ -541,6 +563,39 @@ export async function unrollBlocks( return configResult; } +function injectLocalSourceFile( + blockType: BlockType, + resolvedBlock: any, + source?: string, +): (any & { source?: string })[] { + const blocks: any[] = resolvedBlock[blockType] ?? []; + if (source === undefined) { + // If no source is provided, return blocks as is + return blocks; + } + if (blockType === "rules") { + // For rules, we need to ensure they are wrapped in an object with a `source + return blocks.map((block) => { + if (typeof block === "string") { + const rule = { + sourceFile: source, + name: block, + rule: block, + } as Rule; + return rule; + } else if (typeof block === "object") { + block.sourceFile = source; + } + return block; + }); + } + // For other block types, we can directly inject the source file + return blocks.map((block) => ({ + ...block, + sourceFile: source, + })); +} + export async function resolveBlock( id: PackageIdentifier, inputs: Record | undefined, diff --git a/packages/config-yaml/src/markdown/markdownToRule.ts b/packages/config-yaml/src/markdown/markdownToRule.ts index 231b2ab4a30..f584a0549e4 100644 --- a/packages/config-yaml/src/markdown/markdownToRule.ts +++ b/packages/config-yaml/src/markdown/markdownToRule.ts @@ -112,5 +112,6 @@ export function markdownToRule( regex: frontmatter.regex, description: frontmatter.description, alwaysApply: frontmatter.alwaysApply, + sourceFile: id.uriType === "file" ? id.filePath : undefined, }; } diff --git a/packages/config-yaml/src/schemas/index.ts b/packages/config-yaml/src/schemas/index.ts index 4ac2aa1f54e..e7d56d82f58 100644 --- a/packages/config-yaml/src/schemas/index.ts +++ b/packages/config-yaml/src/schemas/index.ts @@ -25,6 +25,7 @@ const mcpServerSchema = z.object({ cwd: z.string().optional(), connectionTimeout: z.number().gt(0).optional(), requestOptions: requestOptionsSchema.optional(), + sourceFile: z.string().optional(), }); export type MCPServer = z.infer; @@ -33,6 +34,7 @@ const promptSchema = z.object({ name: z.string(), description: z.string().optional(), prompt: z.string(), + sourceFile: z.string().optional(), }); export type Prompt = z.infer; @@ -44,6 +46,7 @@ const docSchema = z.object({ faviconUrl: z.string().optional(), maxDepth: z.number().optional(), useLocalCrawling: z.boolean().optional(), + sourceFile: z.string().optional(), }); export type DocsConfig = z.infer; @@ -55,6 +58,7 @@ const ruleObjectSchema = z.object({ globs: z.union([z.string(), z.array(z.string())]).optional(), regex: z.union([z.string(), z.array(z.string())]).optional(), alwaysApply: z.boolean().optional(), + sourceFile: z.string().optional(), //TODO refactor RuleWithSource.ruleFile to align with sourceFile }); const ruleSchema = z.union([z.string(), ruleObjectSchema]); diff --git a/packages/config-yaml/src/schemas/models.ts b/packages/config-yaml/src/schemas/models.ts index 8bdb6b66d82..283ec67812e 100644 --- a/packages/config-yaml/src/schemas/models.ts +++ b/packages/config-yaml/src/schemas/models.ts @@ -163,6 +163,7 @@ export const modelSchema = z.union([ z.object({ ...baseModelFields, provider: z.string().refine((val) => val !== "continue-proxy"), + sourceFile: z.string().optional(), }), ]); From 1ee5c54151a2f109f99e1ca30d9949993db0c14a Mon Sep 17 00:00:00 2001 From: Dallin Romney Date: Mon, 21 Jul 2025 15:31:52 +0200 Subject: [PATCH 67/97] feat: more thorough tool arg checking utils with tests --- core/tools/implementations/codebaseTool.ts | 9 +- core/tools/implementations/createNewFile.ts | 18 +- core/tools/implementations/createRuleBlock.ts | 32 ++- core/tools/implementations/fetchUrlContent.ts | 9 +- core/tools/implementations/globSearch.ts | 9 +- core/tools/implementations/grepSearch.ts | 11 +- core/tools/implementations/readFile.ts | 20 +- core/tools/implementations/requestRule.ts | 13 +- .../implementations/runTerminalCommand.ts | 20 +- core/tools/implementations/searchWeb.ts | 9 +- .../tools/implementations/viewSubdirectory.ts | 8 +- core/tools/parseArgs.ts | 49 ++++ core/tools/parseArgs.vitest.ts | 248 ++++++++++++++++++ 13 files changed, 365 insertions(+), 90 deletions(-) create mode 100644 core/tools/parseArgs.vitest.ts diff --git a/core/tools/implementations/codebaseTool.ts b/core/tools/implementations/codebaseTool.ts index 9ea0ecdc701..4af0579bfd0 100644 --- a/core/tools/implementations/codebaseTool.ts +++ b/core/tools/implementations/codebaseTool.ts @@ -1,16 +1,15 @@ import { ToolImpl } from "."; import { RangeInFile } from "../.."; import { retrieveContextItemsFromEmbeddings } from "../../context/retrieval/retrieval"; +import { getStringArg } from "../parseArgs"; export const codebaseToolImpl: ToolImpl = async (args, extras) => { - if (!args?.query || args.query.trim() === "") { - throw new Error("`query` parameter is required and cannot be empty."); - } + const query = getStringArg(args, "query"); try { const contextExtras = { config: extras.config, - fullInput: args.query, + fullInput: query, embeddingsProvider: extras.config.selectedModelByRole.embed, reranker: extras.config.selectedModelByRole.rerank, llm: extras.llm, @@ -33,7 +32,7 @@ export const codebaseToolImpl: ToolImpl = async (args, extras) => { { name: "No Results", description: "Codebase search", - content: `No relevant code found for query: "${args.query}". This could mean: + content: `No relevant code found for query: "${query}". This could mean: - The codebase hasn't been indexed yet - No code matches the search criteria - Embeddings provider is not configured diff --git a/core/tools/implementations/createNewFile.ts b/core/tools/implementations/createNewFile.ts index d1849025e56..0677e7dcd0f 100644 --- a/core/tools/implementations/createNewFile.ts +++ b/core/tools/implementations/createNewFile.ts @@ -2,28 +2,24 @@ import { inferResolvedUriFromRelativePath } from "../../util/ideUtils"; import { ToolImpl } from "."; import { getCleanUriPath, getUriPathBasename } from "../../util/uri"; +import { getStringArg } from "../parseArgs"; export const createNewFileImpl: ToolImpl = async (args, extras) => { - if (!args?.filepath) { - throw new Error("`filepath` argument is required and cannot be empty."); - } - if (args?.contents === undefined) { - throw new Error( - "`contents` argument is required to create a new file (can be empty).", - ); - } + const filepath = getStringArg(args, "filepath"); + const contents = getStringArg(args, "contents", true); + const resolvedFileUri = await inferResolvedUriFromRelativePath( - args.filepath, + filepath, extras.ide, ); if (resolvedFileUri) { const exists = await extras.ide.fileExists(resolvedFileUri); if (exists) { throw new Error( - `File ${args.filepath} already exists. Use the edit tool to edit this file`, + `File ${filepath} already exists. Use the edit tool to edit this file`, ); } - await extras.ide.writeFile(resolvedFileUri, args.contents); + await extras.ide.writeFile(resolvedFileUri, contents); await extras.ide.openFile(resolvedFileUri); await extras.ide.saveFile(resolvedFileUri); if (extras.codeBaseIndexer) { diff --git a/core/tools/implementations/createRuleBlock.ts b/core/tools/implementations/createRuleBlock.ts index 2e7a646aa6d..8e8ebcf9019 100644 --- a/core/tools/implementations/createRuleBlock.ts +++ b/core/tools/implementations/createRuleBlock.ts @@ -2,6 +2,11 @@ import { createRuleMarkdown } from "@continuedev/config-yaml"; import { ToolImpl } from "."; import { RuleWithSource } from "../.."; import { createRuleFilePath } from "../../config/markdown/utils"; +import { + getBooleanArg, + getOptionalStringArg, + getStringArg, +} from "../parseArgs"; export type CreateRuleBlockArgs = Pick< Required, @@ -9,16 +14,21 @@ export type CreateRuleBlockArgs = Pick< > & Pick; -export const createRuleBlockImpl: ToolImpl = async ( - { name, rule, ...otherArgs }: CreateRuleBlockArgs, - extras, -) => { - if (!name || !rule) { - throw new Error( - "`name` and `rule` arguments are required to create a rule.", - ); - } - const fileContent = createRuleMarkdown(name, rule, otherArgs); +export const createRuleBlockImpl: ToolImpl = async (args, extras) => { + const name = getStringArg(args, "name"); + const rule = getStringArg(args, "rule"); + + const description = getOptionalStringArg(args, "description"); + const regex = getOptionalStringArg(args, "regex"); + const globs = getOptionalStringArg(args, "globs"); + const alwaysApply = getBooleanArg(args, "alwaysApply", false); + + const fileContent = createRuleMarkdown(name, rule, { + alwaysApply, + description, + globs, + regex, + }); const [localContinueDir] = await extras.ide.getWorkspaceDirs(); const ruleFilePath = createRuleFilePath(localContinueDir, name); @@ -29,7 +39,7 @@ export const createRuleBlockImpl: ToolImpl = async ( return [ { name: "New Rule Block", - description: otherArgs.description || "", + description: description || "", uri: { type: "file", value: ruleFilePath, diff --git a/core/tools/implementations/fetchUrlContent.ts b/core/tools/implementations/fetchUrlContent.ts index 802be2e7cfe..95b5b216b05 100644 --- a/core/tools/implementations/fetchUrlContent.ts +++ b/core/tools/implementations/fetchUrlContent.ts @@ -1,14 +1,13 @@ import { ToolImpl } from "."; import { getUrlContextItems } from "../../context/providers/URLContextProvider"; +import { getStringArg } from "../parseArgs"; const DEFAULT_FETCH_URL_CHAR_LIMIT = 20000; export const fetchUrlContentImpl: ToolImpl = async (args, extras) => { - if (!args?.url) { - throw new Error("`url` argument is required and cannot be empty"); - } + const url = getStringArg(args, "url"); - const contextItems = await getUrlContextItems(args.url, extras.fetch); + const contextItems = await getUrlContextItems(url, extras.fetch); // Track truncated content const truncatedUrls: string[] = []; @@ -16,7 +15,7 @@ export const fetchUrlContentImpl: ToolImpl = async (args, extras) => { // Check and truncate each context item const processedItems = contextItems.map((item) => { if (item.content.length > DEFAULT_FETCH_URL_CHAR_LIMIT) { - truncatedUrls.push(args.url); + truncatedUrls.push(url); return { ...item, content: item.content.substring(0, DEFAULT_FETCH_URL_CHAR_LIMIT), diff --git a/core/tools/implementations/globSearch.ts b/core/tools/implementations/globSearch.ts index 03a061b5722..04a105556a4 100644 --- a/core/tools/implementations/globSearch.ts +++ b/core/tools/implementations/globSearch.ts @@ -1,16 +1,13 @@ import { ToolImpl } from "."; import { ContextItem } from "../.."; +import { getStringArg } from "../parseArgs"; const MAX_AGENT_GLOB_RESULTS = 100; export const fileGlobSearchImpl: ToolImpl = async (args, extras) => { - if (!args?.pattern) { - throw new Error( - "`pattern` argument is required for a glob search, and cannot be empty", - ); - } + const pattern = getStringArg(args, "pattern"); const results = await extras.ide.getFileResults( - args.pattern, + pattern, MAX_AGENT_GLOB_RESULTS, ); const contextItems: ContextItem[] = [ diff --git a/core/tools/implementations/grepSearch.ts b/core/tools/implementations/grepSearch.ts index d9dd3df20a8..b75c21891d9 100644 --- a/core/tools/implementations/grepSearch.ts +++ b/core/tools/implementations/grepSearch.ts @@ -1,6 +1,7 @@ import { ToolImpl } from "."; import { ContextItem } from "../.."; import { formatGrepSearchResults } from "../../util/grepSearch"; +import { getStringArg } from "../parseArgs"; const DEFAULT_GREP_SEARCH_RESULTS_LIMIT = 100; const DEFAULT_GREP_SEARCH_CHAR_LIMIT = 5000; // ~1000 tokens, will keep truncation simply for now @@ -41,14 +42,10 @@ function splitGrepResultsByFile(content: string): ContextItem[] { } export const grepSearchImpl: ToolImpl = async (args, extras) => { - if (!args?.query) { - throw new Error( - "`query` argument is required for a grep search, and cannot be empty", - ); - } + const query = getStringArg(args, "query"); const results = await extras.ide.getSearchResults( - args.query, + query, DEFAULT_GREP_SEARCH_RESULTS_LIMIT, ); const { formatted, numResults, truncated } = formatGrepSearchResults( @@ -69,7 +66,7 @@ export const grepSearchImpl: ToolImpl = async (args, extras) => { let contextItems: ContextItem[] = []; - const splitByFile: boolean = args.splitByFile || false; + const splitByFile: boolean = args?.splitByFile || false; if (splitByFile) { contextItems = splitGrepResultsByFile(formatted); } else { diff --git a/core/tools/implementations/readFile.ts b/core/tools/implementations/readFile.ts index 89e9ccbdce4..a026d0f47d3 100644 --- a/core/tools/implementations/readFile.ts +++ b/core/tools/implementations/readFile.ts @@ -2,34 +2,28 @@ import { resolveRelativePathInDir } from "../../util/ideUtils"; import { getUriPathBasename } from "../../util/uri"; import { ToolImpl } from "."; +import { getStringArg } from "../parseArgs"; import { throwIfFileExceedsHalfOfContext } from "./readFileLimit"; export const readFileImpl: ToolImpl = async (args, extras) => { - if (!args?.filepath) { - throw new Error( - "`filepath` argument is required to read a file, and cannot be empty", - ); - } + const filepath = getStringArg(args, "filepath"); - const firstUriMatch = await resolveRelativePathInDir( - args.filepath, - extras.ide, - ); + const firstUriMatch = await resolveRelativePathInDir(filepath, extras.ide); if (!firstUriMatch) { - throw new Error(`Could not find file ${args.filepath}`); + throw new Error(`Could not find file ${filepath}`); } const content = await extras.ide.readFile(firstUriMatch); await throwIfFileExceedsHalfOfContext( - args.filepath, + filepath, content, extras.config.selectedModelByRole.chat, ); return [ { - name: getUriPathBasename(args.filepath), - description: args.filepath, + name: getUriPathBasename(firstUriMatch), + description: filepath, content, uri: { type: "file", diff --git a/core/tools/implementations/requestRule.ts b/core/tools/implementations/requestRule.ts index f61d6328c8f..61467e429e9 100644 --- a/core/tools/implementations/requestRule.ts +++ b/core/tools/implementations/requestRule.ts @@ -1,19 +1,14 @@ import { ToolImpl } from "."; +import { getStringArg } from "../parseArgs"; export const requestRuleImpl: ToolImpl = async (args, extras) => { - if (!args?.name) { - throw new Error( - "`name` argument is required to request a rule, and cannot be empty", - ); - } + const name = getStringArg(args, "name"); // Find the rule by name in the config - const rule = extras.config.rules.find((r) => r.name === args.name); + const rule = extras.config.rules.find((r) => r.name === name); if (!rule || !rule.ruleFile) { - throw new Error( - `Rule with name "${args.name}" not found or has no file path`, - ); + throw new Error(`Rule with name "${name}" not found or has no file path`); } return [ diff --git a/core/tools/implementations/runTerminalCommand.ts b/core/tools/implementations/runTerminalCommand.ts index b57a9572dd8..201d7635817 100644 --- a/core/tools/implementations/runTerminalCommand.ts +++ b/core/tools/implementations/runTerminalCommand.ts @@ -24,6 +24,7 @@ import { isProcessBackgrounded, removeBackgroundedProcess, } from "../../util/processTerminalBackgroundStates"; +import { getBooleanArg, getStringArg } from "../parseArgs"; const asyncExec = util.promisify(childProcess.exec); @@ -50,14 +51,11 @@ const ENABLED_FOR_REMOTES = [ ]; export const runTerminalCommandImpl: ToolImpl = async (args, extras) => { - if (!args?.command) { - throw new Error( - "`command` argument is required to run a terminal command, and cannot be empty", - ); - } - + const command = getStringArg(args, "command"); // Default to waiting for completion if not specified - const waitForCompletion = args.waitForCompletion !== false; + const waitForCompletion = + getBooleanArg(args, "waitForCompletion", false) ?? true; + const ideInfo = await extras.ide.getIdeInfo(); const toolCallId = extras.toolCallId || ""; @@ -90,7 +88,7 @@ export const runTerminalCommandImpl: ToolImpl = async (args, extras) => { } // Use spawn with color environment - const childProc = childProcess.spawn(args.command, { + const childProc = childProcess.spawn(command, { cwd, shell: true, env: getColorEnv(), // Add enhanced environment for colors @@ -235,7 +233,7 @@ export const runTerminalCommandImpl: ToolImpl = async (args, extras) => { // Standard execution, waiting for completion try { // Use color environment for exec as well - const output = await asyncExec(args.command, { + const output = await asyncExec(command, { cwd, env: getColorEnv(), }); @@ -264,7 +262,7 @@ export const runTerminalCommandImpl: ToolImpl = async (args, extras) => { // but don't attach any listeners other than error try { // Use spawn with color environment - const childProc = childProcess.spawn(args.command, { + const childProc = childProcess.spawn(command, { cwd, shell: true, env: getColorEnv(), // Add color environment @@ -315,7 +313,7 @@ export const runTerminalCommandImpl: ToolImpl = async (args, extras) => { // For remote environments, just run the command // Note: waitForCompletion is not supported in remote environments yet - await extras.ide.runCommand(args.command); + await extras.ide.runCommand(command); return [ { name: "Terminal", diff --git a/core/tools/implementations/searchWeb.ts b/core/tools/implementations/searchWeb.ts index 4a5d277c3aa..3d331ebfd62 100644 --- a/core/tools/implementations/searchWeb.ts +++ b/core/tools/implementations/searchWeb.ts @@ -1,16 +1,13 @@ import { ToolImpl } from "."; import { fetchSearchResults } from "../../context/providers/WebContextProvider"; +import { getStringArg } from "../parseArgs"; const DEFAULT_WEB_SEARCH_CHAR_LIMIT = 8000; export const searchWebImpl: ToolImpl = async (args, extras) => { - if (!args?.query) { - throw new Error( - "`query` argument is required to search the web, and cannot be empty", - ); - } + const query = getStringArg(args, "query"); - const webResults = await fetchSearchResults(args.query, 5, extras.fetch); + const webResults = await fetchSearchResults(query, 5, extras.fetch); // Track truncated results const truncatedResults: string[] = []; diff --git a/core/tools/implementations/viewSubdirectory.ts b/core/tools/implementations/viewSubdirectory.ts index bbda7143f56..b7897aae8a4 100644 --- a/core/tools/implementations/viewSubdirectory.ts +++ b/core/tools/implementations/viewSubdirectory.ts @@ -2,14 +2,10 @@ import generateRepoMap from "../../util/generateRepoMap"; import { resolveRelativePathInDir } from "../../util/ideUtils"; import { ToolImpl } from "."; +import { getStringArg } from "../parseArgs"; export const viewSubdirectoryImpl: ToolImpl = async (args: any, extras) => { - if (!args?.directory_path) { - throw new Error( - "`directory_path` argument is required to view a map of a subdirectory, and cannot be empty", - ); - } - const { directory_path } = args; + const directory_path = getStringArg(args, "directory_path"); const uri = await resolveRelativePathInDir(directory_path, extras.ide); diff --git a/core/tools/parseArgs.ts b/core/tools/parseArgs.ts index 8ee794eb5cb..1e7709ddc26 100644 --- a/core/tools/parseArgs.ts +++ b/core/tools/parseArgs.ts @@ -12,3 +12,52 @@ export function safeParseToolCallArgs( return {}; } } + +export function getStringArg( + args: any, + argName: string, + allowEmpty = false, +): string { + if (!args || !(argName in args) || typeof args[argName] !== "string") { + throw new Error( + `\`${argName}\` argument is required${allowEmpty ? "" : " and must not be empty"}. (type string)`, + ); + } + if (!allowEmpty && !args[argName].trim()) { + throw new Error(`Argument ${argName} must not be empty`); + } + return args[argName]; +} + +export function getOptionalStringArg( + args: any, + argName: string, + allowEmpty = false, +) { + if (typeof args?.[argName] === "undefined") { + return undefined; + } + return getStringArg(args, argName, allowEmpty); +} + +export function getBooleanArg(args: any, argName: string, required = false) { + if (!args || !(argName in args)) { + if (required) { + throw new Error(`Argument \`${argName}\` is required (type boolean)`); + } else { + return undefined; + } + } + if (typeof args[argName] === "string") { + if (args[argName].toLowerCase() === "false") { + return false; + } + if (args[argName].toLowerCase() === "true") { + return true; + } + } + if (typeof args[argName] !== "boolean") { + throw new Error(`Argument \`${argName}\` must be a boolean true or false`); + } + return args[argName]; +} diff --git a/core/tools/parseArgs.vitest.ts b/core/tools/parseArgs.vitest.ts new file mode 100644 index 00000000000..b501191f0f6 --- /dev/null +++ b/core/tools/parseArgs.vitest.ts @@ -0,0 +1,248 @@ +import { describe, expect, it } from "vitest"; +import { ToolCallDelta } from ".."; +import { + getBooleanArg, + getOptionalStringArg, + getStringArg, + safeParseToolCallArgs, +} from "./parseArgs"; + +describe("safeParseToolCallArgs", () => { + it("should parse valid JSON arguments", () => { + const toolCall: ToolCallDelta = { + id: "1", + function: { + name: "testFunction", + arguments: '{"name": "test", "value": 123}', + }, + }; + + const result = safeParseToolCallArgs(toolCall); + expect(result).toEqual({ name: "test", value: 123 }); + }); + + it("should parse valid JSON arguments with whitespace", () => { + const toolCall: ToolCallDelta = { + id: "1", + function: { + name: "testFunction", + arguments: ' {"name": "test", "value": 123} ', + }, + }; + + const result = safeParseToolCallArgs(toolCall); + expect(result).toEqual({ name: "test", value: 123 }); + }); + + it("should return empty object for invalid JSON", () => { + const toolCall: ToolCallDelta = { + id: "1", + function: { + name: "testFunction", + arguments: '{"name": "test", value: 123', // Invalid JSON + }, + }; + + const result = safeParseToolCallArgs(toolCall); + expect(result).toEqual({}); + }); + + it("should return empty object when arguments is empty", () => { + const toolCall: ToolCallDelta = { + id: "1", + function: { + name: "testFunction", + arguments: "", + }, + }; + + const result = safeParseToolCallArgs(toolCall); + expect(result).toEqual({}); + }); + + it("should return empty object when arguments is null or undefined", () => { + const toolCall1: ToolCallDelta = { + id: "1", + function: { + name: "testFunction", + arguments: null as any, + }, + }; + + const toolCall2: ToolCallDelta = { + id: "1", + function: { + name: "testFunction", + arguments: undefined, + }, + }; + + expect(safeParseToolCallArgs(toolCall1)).toEqual({}); + expect(safeParseToolCallArgs(toolCall2)).toEqual({}); + }); + + it("should handle case when function is undefined", () => { + const toolCall: ToolCallDelta = { + id: "1", + function: undefined, + }; + + const result = safeParseToolCallArgs(toolCall); + expect(result).toEqual({}); + }); +}); + +describe("getStringArg", () => { + it("should return string argument when valid", () => { + const args = { name: "test" }; + const result = getStringArg(args, "name"); + expect(result).toBe("test"); + }); + + it("should throw error when argument is missing", () => { + const args = { otherArg: "test" }; + expect(() => getStringArg(args, "name")).toThrowError( + "`name` argument is required and must not be empty. (type string)", + ); + }); + + it("should throw error when argument is not a string", () => { + const args = { name: 123 }; + expect(() => getStringArg(args, "name")).toThrowError( + "`name` argument is required and must not be empty. (type string)", + ); + }); + + it("should throw error when argument is empty and empty not allowed", () => { + const args = { name: "" }; + expect(() => getStringArg(args, "name")).toThrowError( + "Argument name must not be empty", + ); + + const argsWithSpace = { name: " " }; + expect(() => getStringArg(argsWithSpace, "name")).toThrowError( + "Argument name must not be empty", + ); + }); + + it("should accept empty string when allowEmpty is true", () => { + const args = { name: "" }; + const result = getStringArg(args, "name", true); + expect(result).toBe(""); + + const argsWithSpace = { name: " " }; + const resultWithSpace = getStringArg(argsWithSpace, "name", true); + expect(resultWithSpace).toBe(" "); + }); + + it("should handle null or undefined args", () => { + expect(() => getStringArg(null, "name")).toThrowError( + "`name` argument is required and must not be empty. (type string)", + ); + expect(() => getStringArg(undefined, "name")).toThrowError( + "`name` argument is required and must not be empty. (type string)", + ); + }); +}); + +describe("getOptionalStringArg", () => { + it("should return undefined when argument is not provided", () => { + const args = { otherArg: "test" }; + const result = getOptionalStringArg(args, "name"); + expect(result).toBeUndefined(); + }); + + it("should return string argument when valid", () => { + const args = { name: "test" }; + const result = getOptionalStringArg(args, "name"); + expect(result).toBe("test"); + }); + + it("should throw error when argument is not a string", () => { + const args = { name: 123 }; + expect(() => getOptionalStringArg(args, "name")).toThrowError( + "`name` argument is required and must not be empty. (type string)", + ); + }); + + it("should throw error when argument is empty and empty not allowed", () => { + const args = { name: "" }; + expect(() => getOptionalStringArg(args, "name")).toThrowError( + "Argument name must not be empty", + ); + }); + + it("should accept empty string when allowEmpty is true", () => { + const args = { name: "" }; + const result = getOptionalStringArg(args, "name", true); + expect(result).toBe(""); + }); + + it("should handle null or undefined args", () => { + expect(getOptionalStringArg(null, "name")).toBeUndefined(); + expect(getOptionalStringArg(undefined, "name")).toBeUndefined(); + }); +}); + +describe("getBooleanArg", () => { + it("should return boolean argument when valid", () => { + const argsTrue = { flag: true }; + const argsFalse = { flag: false }; + + expect(getBooleanArg(argsTrue, "flag")).toBe(true); + expect(getBooleanArg(argsFalse, "flag")).toBe(false); + }); + + it("should return undefined when argument is not provided and not required", () => { + const args = { otherArg: true }; + const result = getBooleanArg(args, "flag"); + expect(result).toBeUndefined(); + }); + + it("should throw error when argument is not provided and required", () => { + const args = { otherArg: true }; + expect(() => getBooleanArg(args, "flag", true)).toThrowError( + "Argument `flag` is required (type boolean)", + ); + }); + + it('should handle string "true" and "false" values', () => { + const argsStringTrue = { flag: "true" }; + const argsStringFalse = { flag: "false" }; + const argsStringTrueUppercase = { flag: "TRUE" }; + const argsStringFalseUppercase = { flag: "FALSE" }; + + expect(getBooleanArg(argsStringTrue, "flag")).toBe(true); + expect(getBooleanArg(argsStringFalse, "flag")).toBe(false); + expect(getBooleanArg(argsStringTrueUppercase, "flag")).toBe(true); + expect(getBooleanArg(argsStringFalseUppercase, "flag")).toBe(false); + }); + + it("should throw error when argument is not a boolean or valid boolean string", () => { + const argsNumber = { flag: 1 }; + const argsInvalidString = { flag: "yes" }; + const argsObject = { flag: {} }; + + expect(() => getBooleanArg(argsNumber, "flag")).toThrowError( + "Argument `flag` must be a boolean true or false", + ); + expect(() => getBooleanArg(argsInvalidString, "flag")).toThrowError( + "Argument `flag` must be a boolean true or false", + ); + expect(() => getBooleanArg(argsObject, "flag")).toThrowError( + "Argument `flag` must be a boolean true or false", + ); + }); + + it("should handle null or undefined args", () => { + expect(getBooleanArg(null, "flag")).toBeUndefined(); + expect(getBooleanArg(undefined, "flag")).toBeUndefined(); + + expect(() => getBooleanArg(null, "flag", true)).toThrowError( + "Argument `flag` is required (type boolean)", + ); + expect(() => getBooleanArg(undefined, "flag", true)).toThrowError( + "Argument `flag` is required (type boolean)", + ); + }); +}); From 8b44a468a66874c9130d67b4438731f4bc034a55 Mon Sep 17 00:00:00 2001 From: Tomasz Stefaniak Date: Mon, 21 Jul 2025 09:10:15 -0700 Subject: [PATCH 68/97] improv: ui --- gui/src/components/mainInput/ContextStatus.tsx | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/gui/src/components/mainInput/ContextStatus.tsx b/gui/src/components/mainInput/ContextStatus.tsx index a52327dc73c..3a4fea83607 100644 --- a/gui/src/components/mainInput/ContextStatus.tsx +++ b/gui/src/components/mainInput/ContextStatus.tsx @@ -35,9 +35,9 @@ const ContextStatus = () => { }} clickable > -
+
- {`${percent}% of context filled`} + {`${percent}% of context filled.`} {isPruned && ( @@ -48,15 +48,14 @@ const ContextStatus = () => {
compactConversation(history.length - 1)} > Compact conversation {"\n"} - or {"\n"} { dispatch( saveCurrentSession({ From 7a43ce58ed340bcea7ea0b8022b96900f8eb837d Mon Sep 17 00:00:00 2001 From: Tomasz Stefaniak Date: Mon, 21 Jul 2025 09:17:24 -0700 Subject: [PATCH 69/97] improv: ui --- gui/src/components/mainInput/ContextStatus.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gui/src/components/mainInput/ContextStatus.tsx b/gui/src/components/mainInput/ContextStatus.tsx index 3a4fea83607..fe4eff2bc99 100644 --- a/gui/src/components/mainInput/ContextStatus.tsx +++ b/gui/src/components/mainInput/ContextStatus.tsx @@ -41,21 +41,21 @@ const ContextStatus = () => { {isPruned && ( - {`Oldest messages are being removed`} + {`Oldest messages are being removed.`} )} {history.length > 0 && (
compactConversation(history.length - 1)} > Compact conversation {"\n"} { dispatch( saveCurrentSession({ From d47c1f5b4dfbf30294c1c9964a350b95b401fabf Mon Sep 17 00:00:00 2001 From: Tomasz Stefaniak Date: Mon, 21 Jul 2025 09:18:35 -0700 Subject: [PATCH 70/97] improv: ui --- gui/src/components/mainInput/ContextStatus.tsx | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/gui/src/components/mainInput/ContextStatus.tsx b/gui/src/components/mainInput/ContextStatus.tsx index fe4eff2bc99..7a97c276848 100644 --- a/gui/src/components/mainInput/ContextStatus.tsx +++ b/gui/src/components/mainInput/ContextStatus.tsx @@ -17,11 +17,7 @@ const ContextStatus = () => { return null; } - const barColorClass = isPruned - ? "bg-error" - : percent > 80 - ? "bg-warning" - : "bg-description"; + const barColorClass = isPruned ? "bg-error" : "bg-description"; return (
From 40b1a588c04ed52ce542de0d5703a26985575028 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20B=C5=82ach?= Date: Mon, 21 Jul 2025 23:12:14 +0200 Subject: [PATCH 71/97] build: Add *-eap postfix to JetBrains Early Access releases (#6728) Extra cleanup: * Remove unused log4j dependency We don't have any dependency that uses it, so this dependency was unnecessarily added to the release. * Remove explicit version in patchPluginXml The version is already retrieved from the project-level version / it was redundant. * Remove commented-out publishPlugin.hidden + some noisy/redundant comments I removed the commented-out code which doesn't work anyway (the hidden field is not available in this version of the JetBrains Gradle plugin). ### Test > ./gradlew buildPlugin Outputs distributions/continue-intellij-extension-1.0.28.zip > export RELEASE_CHANNEL=eap > ./gradlew buildPlugin Outputs distributions/continue-intellij-extension-1.0.28-eap.zip --- extensions/intellij/build.gradle.kts | 53 ++++++++-------------------- 1 file changed, 14 insertions(+), 39 deletions(-) diff --git a/extensions/intellij/build.gradle.kts b/extensions/intellij/build.gradle.kts index fb85ded90b2..244253c8b45 100644 --- a/extensions/intellij/build.gradle.kts +++ b/extensions/intellij/build.gradle.kts @@ -9,6 +9,8 @@ fun Sync.prepareSandbox() { } val remoteRobotVersion = "0.11.23" +val isEap get() = environment("RELEASE_CHANNEL").orNull == "eap" +val pluginVersion = properties("pluginVersion").get() plugins { id("java") @@ -22,17 +24,13 @@ plugins { } group = properties("pluginGroup").get() +version = if (isEap) "$pluginVersion-eap" else pluginVersion -version = properties("pluginVersion").get() - -// Configure project's dependencies repositories { mavenCentral() maven { url = uri("https://packages.jetbrains.team/maven/p/ij/intellij-dependencies") } } -// Dependencies are managed with Gradle version catalog - read more: -// https://docs.gradle.org/current/userguide/platforms.html#sub:version-catalog dependencies { implementation("com.squareup.okhttp3:okhttp:4.12.0") { exclude(group = "org.jetbrains.kotlin", module = "kotlin-stdlib") @@ -48,22 +46,6 @@ dependencies { testImplementation("com.squareup.okhttp3:logging-interceptor:4.12.0") testImplementation("com.automation-remarks:video-recorder-junit5:2.0") testImplementation("org.jetbrains.kotlinx:kotlinx-coroutines-test:1.7.3") - - - // Exclude vulnerable Log4j from all dependencies - configurations.all { - resolutionStrategy { - eachDependency { - if (requested.group == "log4j" && requested.name == "log4j") { - useTarget("org.slf4j:log4j-over-slf4j:1.7.36") - } - } - } - } - - // Add Log4j 2.x explicitly - implementation("org.apache.logging.log4j:log4j-core:2.20.0") - implementation("org.apache.logging.log4j:log4j-api:2.20.0") testImplementation(kotlin("test")) } @@ -105,7 +87,7 @@ koverReport { defaults { xml { onCheck = true } } } tasks { downloadRobotServerPlugin { - version.set(remoteRobotVersion) + version = remoteRobotVersion } prepareSandbox { @@ -120,13 +102,14 @@ tasks { prepareSandbox() } - wrapper { gradleVersion = properties("gradleVersion").get() } + wrapper { + gradleVersion = properties("gradleVersion").get() + } patchPluginXml { - version.set(properties("pluginVersion")) - sinceBuild.set(properties("pluginSinceBuild")) - untilBuild.set(properties("pluginUntilBuild")) - pluginDescription.set( + sinceBuild = properties("pluginSinceBuild") + untilBuild = properties("pluginUntilBuild") + pluginDescription = providers.fileContents(layout.projectDirectory.file("README.md")).asText.map { val start = "" val end = "" @@ -140,7 +123,6 @@ tasks { subList(indexOf(start) + 1, indexOf(end)).joinToString("\n").let(::markdownToHTML) } } - ) } // Configure UI tests plugin @@ -167,7 +149,7 @@ tasks { // See ContinueExtensionSettingsService.kt for more info. // Currently commented out however since test fail in CI with this version // intellij { -// version.set("2024.1") +// version = "2024.1" // } } @@ -178,17 +160,10 @@ tasks { } publishPlugin { - // dependsOn("patchChangelog") token = environment("PUBLISH_TOKEN") - // The pluginVersion is based on the SemVer (https://semver.org) and supports pre-release - // labels, like 2.1.7-alpha.3 - // Specify pre-release label to publish the plugin in a custom Release Channel automatically. - // Read more: - // https://plugins.jetbrains.com/docs/intellij/deployment.html#specifying-a-release-channel - channels.set(listOf(environment("RELEASE_CHANNEL").getOrElse("eap"))) - - // We always hide the stable releases until a few days of EAP have proven them stable - // hidden = environment("RELEASE_CHANNEL").map { it == "stable" }.getOrElse(false) + + val channel = if (isEap) "eap" else "default" + channels = listOf(channel) } runIde { From 67c1c4f63949b7183dad6c8e8e77ca23b719da76 Mon Sep 17 00:00:00 2001 From: Aditya Mitra <61635505+uinstinct@users.noreply.github.com> Date: Tue, 22 Jul 2025 02:48:26 +0530 Subject: [PATCH 72/97] chore: fix react warning (#6687) * chore: fix react warning * fix the other warning as well * fix div inside tr warning --- gui/src/components/History/HistoryTableRow.tsx | 8 ++++---- gui/src/components/console/Message.tsx | 4 +++- .../Lump/sections/tool-policies/ToolPolicyItem.tsx | 4 ++-- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/gui/src/components/History/HistoryTableRow.tsx b/gui/src/components/History/HistoryTableRow.tsx index 65c99233c6e..0143b1488db 100644 --- a/gui/src/components/History/HistoryTableRow.tsx +++ b/gui/src/components/History/HistoryTableRow.tsx @@ -79,7 +79,7 @@ export function HistoryTableRow({ navigate("/"); }} > -
+ {editing ? (
*/}
-
+ {hovered && !editing && ( -
+ { @@ -136,7 +136,7 @@ export function HistoryTableRow({ > -
+ )} ); diff --git a/gui/src/components/console/Message.tsx b/gui/src/components/console/Message.tsx index 8c5c35bc625..b15ca3e4aaf 100644 --- a/gui/src/components/console/Message.tsx +++ b/gui/src/components/console/Message.tsx @@ -48,7 +48,9 @@ export function renderMessage(message: ChatMessage, includeRole: boolean) { {includeRole ? renderMessageRole(message.role) : ""} {message.toolCalls ? message.toolCalls.map((toolCall) => ( -
Tool call: {JSON.stringify(toolCall, undefined, 2)}
+
+                  Tool call: {JSON.stringify(toolCall, undefined, 2)}
+                
)) : ""} {renderMessageContent(message)} diff --git a/gui/src/components/mainInput/Lump/sections/tool-policies/ToolPolicyItem.tsx b/gui/src/components/mainInput/Lump/sections/tool-policies/ToolPolicyItem.tsx index ad4d289c9ca..28b8d048e7d 100644 --- a/gui/src/components/mainInput/Lump/sections/tool-policies/ToolPolicyItem.tsx +++ b/gui/src/components/mainInput/Lump/sections/tool-policies/ToolPolicyItem.tsx @@ -161,8 +161,8 @@ function ToolPolicyItem(props: ToolDropdownItemProps) { {parameters ? ( <> Arguments: - {parameters.map((param) => ( -
+ {parameters.map((param, idx) => ( +
{param[0]} {`(${param[1].type}):`} {param[1].description} From 60aa531650bed4f8393c6a4244e6446f4ca6e6d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20B=C5=82ach?= Date: Mon, 21 Jul 2025 23:25:20 +0200 Subject: [PATCH 73/97] fix: Follow JetBrains IDE proxy settings (#6531) * fix: use HttpRequests in ContinueAuthService * wip * fix: Use HttpRequests everywhere in Jetbrains plugin * build: Remove OkHttp from release (note: it's still used for testing) * fix time * remove todo * remove todo (fixed) --- extensions/intellij/build.gradle.kts | 3 - .../auth/ContinueAuthService.kt | 98 ++++++++----------- .../ContinueExtensionSettingsService.kt | 82 +++++----------- 3 files changed, 68 insertions(+), 115 deletions(-) diff --git a/extensions/intellij/build.gradle.kts b/extensions/intellij/build.gradle.kts index 244253c8b45..8dc8ce73812 100644 --- a/extensions/intellij/build.gradle.kts +++ b/extensions/intellij/build.gradle.kts @@ -32,9 +32,6 @@ repositories { } dependencies { - implementation("com.squareup.okhttp3:okhttp:4.12.0") { - exclude(group = "org.jetbrains.kotlin", module = "kotlin-stdlib") - } implementation("org.jetbrains.kotlin:kotlin-stdlib:1.4.32") implementation("com.posthog.java:posthog:1.+") implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.5.0") diff --git a/extensions/intellij/src/main/kotlin/com/github/continuedev/continueintellijextension/auth/ContinueAuthService.kt b/extensions/intellij/src/main/kotlin/com/github/continuedev/continueintellijextension/auth/ContinueAuthService.kt index 13ceaf81072..4538b877139 100644 --- a/extensions/intellij/src/main/kotlin/com/github/continuedev/continueintellijextension/auth/ContinueAuthService.kt +++ b/extensions/intellij/src/main/kotlin/com/github/continuedev/continueintellijextension/auth/ContinueAuthService.kt @@ -1,5 +1,6 @@ package com.github.continuedev.continueintellijextension.auth +import com.github.continuedev.continueintellijextension.error.ContinueErrorService import com.github.continuedev.continueintellijextension.services.ContinueExtensionSettings import com.github.continuedev.continueintellijextension.services.ContinuePluginService import com.google.gson.Gson @@ -10,24 +11,22 @@ import com.intellij.ide.util.PropertiesComponent import com.intellij.openapi.application.ApplicationManager import com.intellij.openapi.components.Service import com.intellij.openapi.components.service +import com.intellij.openapi.diagnostic.Logger import com.intellij.openapi.project.Project import com.intellij.remoteServer.util.CloudConfigurationUtil.createCredentialAttributes +import com.intellij.util.io.HttpRequests import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.delay import kotlinx.coroutines.launch -import kotlinx.coroutines.withContext -import okhttp3.MediaType.Companion.toMediaType -import okhttp3.OkHttpClient -import okhttp3.Request -import okhttp3.RequestBody.Companion.toRequestBody -import java.net.URL +import kotlin.time.Duration.Companion.minutes @Service class ContinueAuthService { private val coroutineScope = CoroutineScope(Dispatchers.IO) + private val log = Logger.getInstance(ContinueAuthService::class.java) companion object { - fun getInstance(): ContinueAuthService = service() private const val CREDENTIALS_USER = "ContinueAuthUser" private const val ACCESS_TOKEN_KEY = "ContinueAccessToken" private const val REFRESH_TOKEN_KEY = "ContinueRefreshToken" @@ -77,73 +76,47 @@ class ContinueAuthService { } private fun updateRefreshToken(token: String) { - // Launch a coroutine to call the suspend function - coroutineScope.launch { - try { - val response = refreshToken(token) - val accessToken = response["accessToken"] as? String - val refreshToken = response["refreshToken"] as? String - val user = response["user"] as? Map<*, *> - val firstName = user?.get("firstName") as? String - val lastName = user?.get("lastName") as? String - val label = "$firstName $lastName" - val id = user?.get("id") as? String - val email = user?.get("email") as? String - - // Persist the session info - setRefreshToken(refreshToken!!) - val sessionInfo = - ControlPlaneSessionInfo(accessToken!!, ControlPlaneSessionInfo.Account(email!!, label)) - setControlPlaneSessionInfo(sessionInfo) - - // Notify listeners - ApplicationManager.getApplication().messageBus.syncPublisher(AuthListener.TOPIC) - .handleUpdatedSessionInfo(sessionInfo) - - } catch (e: Exception) { - // Handle any exceptions - println("Exception while refreshing token: ${e.message}") - } + try { + val response = refreshToken(token) + val accountLabel = "${response.user.firstName} ${response.user.lastName}" + + // Persist the session info + setRefreshToken(response.refreshToken) + val account = ControlPlaneSessionInfo.Account(response.user.email, accountLabel) + val sessionInfo = ControlPlaneSessionInfo(response.accessToken, account) + setControlPlaneSessionInfo(sessionInfo) + + // Notify listeners + ApplicationManager.getApplication().messageBus.syncPublisher(AuthListener.TOPIC) + .handleUpdatedSessionInfo(sessionInfo) + } catch (e: Exception) { + service().report(e, "Exception while refreshing token ${e.message}") } } private fun setupRefreshTokenInterval() { - // Launch a coroutine to refresh the token every 30 minutes coroutineScope.launch { while (true) { val refreshToken = getRefreshToken() if (refreshToken != null) { updateRefreshToken(refreshToken) } - - kotlinx.coroutines.delay(15 * 60 * 1000) // 15 minutes in milliseconds + log.info("Token refreshed, retrying in 15 minutes") + delay(15.minutes) } } } - private suspend fun refreshToken(refreshToken: String) = withContext(Dispatchers.IO) { - val client = OkHttpClient() - val url = URL(getControlPlaneUrl()).toURI().resolve("/auth/refresh").toURL() - val jsonBody = mapOf("refreshToken" to refreshToken) - val jsonString = Gson().toJson(jsonBody) - val requestBody = jsonString.toRequestBody("application/json".toMediaType()) - - val request = Request.Builder() - .url(url) - .post(requestBody) - .header("Content-Type", "application/json") - .build() - - val response = client.newCall(request).execute() - - val responseBody = response.body?.string() + private fun refreshToken(refreshToken: String): RefreshTokenResponse { val gson = Gson() - val responseMap = gson.fromJson(responseBody, Map::class.java) - - responseMap + val jsonBody = gson.toJson(mapOf("refreshToken" to refreshToken)) + val url = getControlPlaneUrl() + "/auth/refresh" + val response = HttpRequests.post(url, HttpRequests.JSON_CONTENT_TYPE) + .connect { connection -> connection.write(jsonBody.toByteArray()) } + .toString() + return gson.fromJson(response, RefreshTokenResponse::class.java) } - private fun openSignInPage(project: Project, useOnboarding: Boolean): String? { var authUrl: String? = null val coreMessenger = project.service().coreMessenger @@ -256,6 +229,17 @@ class ContinueAuthService { setAccountLabel(info.account.label) } + private data class RefreshTokenResponse( + val accessToken: String, + val refreshToken: String, + val user: User, + ) { + data class User( + val firstName: String, + val lastName: String, + val email: String + ) + } } // Data class to represent the ControlPlaneSessionInfo diff --git a/extensions/intellij/src/main/kotlin/com/github/continuedev/continueintellijextension/services/ContinueExtensionSettingsService.kt b/extensions/intellij/src/main/kotlin/com/github/continuedev/continueintellijextension/services/ContinueExtensionSettingsService.kt index 4e41179851c..057a8759393 100644 --- a/extensions/intellij/src/main/kotlin/com/github/continuedev/continueintellijextension/services/ContinueExtensionSettingsService.kt +++ b/extensions/intellij/src/main/kotlin/com/github/continuedev/continueintellijextension/services/ContinueExtensionSettingsService.kt @@ -1,25 +1,25 @@ package com.github.continuedev.continueintellijextension.services -import com.github.continuedev.continueintellijextension.constants.getConfigJsPath import com.github.continuedev.continueintellijextension.constants.getConfigJsonPath -import com.intellij.execution.target.value.constant +import com.github.continuedev.continueintellijextension.error.ContinueErrorService import com.intellij.openapi.application.ApplicationInfo import com.intellij.openapi.application.ApplicationManager -import com.intellij.openapi.components.* +import com.intellij.openapi.components.PersistentStateComponent +import com.intellij.openapi.components.State +import com.intellij.openapi.components.Storage +import com.intellij.openapi.components.service import com.intellij.openapi.options.Configurable import com.intellij.openapi.project.DumbAware -import com.intellij.openapi.util.SystemInfo import com.intellij.util.concurrency.AppExecutorUtil +import com.intellij.util.io.HttpRequests import com.intellij.util.messages.Topic -import kotlinx.serialization.Serializable import kotlinx.serialization.decodeFromString import kotlinx.serialization.json.Json -import okhttp3.OkHttpClient -import okhttp3.Request import java.awt.GridBagConstraints import java.awt.GridBagLayout import java.io.File import java.io.IOException +import java.net.URL import java.util.concurrent.ScheduledFuture import java.util.concurrent.TimeUnit import javax.swing.* @@ -72,11 +72,10 @@ class ContinueSettingsComponent : DumbAware { } } -@Serializable -class ContinueRemoteConfigSyncResponse { - var configJson: String? = null - var configJs: String? = null -} +data class ContinueRemoteConfigSyncResponse( + var configJson: String?, + var configJs: String? +) @State( name = "com.github.continuedev.continueintellijextension.services.ContinueExtensionSettings", @@ -117,50 +116,23 @@ open class ContinueExtensionSettings : PersistentStateComponent - if (!response.isSuccessful) throw IOException("Unexpected code $response") - - response.body?.string()?.let { responseBody -> - try { - configResponse = - Json.decodeFromString(responseBody) - } catch (e: Exception) { - e.printStackTrace() - return - } - } - } + val url = "$baseUrl/sync" + val responseBody = HttpRequests.post(url, HttpRequests.JSON_CONTENT_TYPE) + .tuner { connection -> + if (token != null) + connection.addRequestProperty("Authorization", "Bearer $token") + }.readString() + val response = Json.decodeFromString(responseBody) + val file = File(getConfigJsonPath(URL(url).host)) + response.configJs.let { file.writeText(it!!) } + response.configJson.let { file.writeText(it!!) } } catch (e: IOException) { - e.printStackTrace() - return - } - - if (configResponse?.configJson?.isNotEmpty()!!) { - val file = File(getConfigJsonPath(request.url.host)) - file.writeText(configResponse!!.configJson!!) - } - - if (configResponse?.configJs?.isNotEmpty()!!) { - val file = File(getConfigJsPath(request.url.host)) - file.writeText(configResponse!!.configJs!!) + service().report(e, "Unexpected exception during remote config sync") } } } @@ -174,7 +146,7 @@ open class ContinueExtensionSettings : PersistentStateComponent Date: Mon, 21 Jul 2025 14:26:26 -0700 Subject: [PATCH 74/97] chore(deps): bump esbuild and vitest in /packages/openai-adapters (#6689) Bumps [esbuild](https://github.com/evanw/esbuild) to 0.25.6 and updates ancestor dependency [vitest](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest). These dependencies need to be updated together. Updates `esbuild` from 0.21.5 to 0.25.6 - [Release notes](https://github.com/evanw/esbuild/releases) - [Changelog](https://github.com/evanw/esbuild/blob/main/CHANGELOG-2024.md) - [Commits](https://github.com/evanw/esbuild/compare/v0.21.5...v0.25.6) Updates `vitest` from 1.6.1 to 3.2.4 - [Release notes](https://github.com/vitest-dev/vitest/releases) - [Commits](https://github.com/vitest-dev/vitest/commits/v3.2.4/packages/vitest) --- updated-dependencies: - dependency-name: esbuild dependency-version: 0.25.6 dependency-type: indirect - dependency-name: vitest dependency-version: 3.2.4 dependency-type: direct:development ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Patrick Erichsen --- packages/openai-adapters/package-lock.json | 1014 ++++++++++---------- packages/openai-adapters/package.json | 2 +- 2 files changed, 505 insertions(+), 511 deletions(-) diff --git a/packages/openai-adapters/package-lock.json b/packages/openai-adapters/package-lock.json index 06d32e3726b..966273fad3b 100644 --- a/packages/openai-adapters/package-lock.json +++ b/packages/openai-adapters/package-lock.json @@ -35,7 +35,7 @@ "semantic-release": "^24.2.7", "ts-jest": "^29.2.3", "ts-node": "^10.9.2", - "vitest": "^1.6.1" + "vitest": "^3.2.4" } }, "node_modules/@ampproject/remapping": { @@ -1386,9 +1386,9 @@ } }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", - "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.6.tgz", + "integrity": "sha512-ShbM/3XxwuxjFiuVBHA+d3j5dyac0aEVVq1oluIDf71hUw0aRF59dV/efUsIwFnR6m8JNM2FjZOzmaZ8yG61kw==", "cpu": [ "ppc64" ], @@ -1399,13 +1399,13 @@ "aix" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/android-arm": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", - "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.6.tgz", + "integrity": "sha512-S8ToEOVfg++AU/bHwdksHNnyLyVM+eMVAOf6yRKFitnwnbwwPNqKr3srzFRe7nzV69RQKb5DgchIX5pt3L53xg==", "cpu": [ "arm" ], @@ -1416,13 +1416,13 @@ "android" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/android-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", - "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.6.tgz", + "integrity": "sha512-hd5zdUarsK6strW+3Wxi5qWws+rJhCCbMiC9QZyzoxfk5uHRIE8T287giQxzVpEvCwuJ9Qjg6bEjcRJcgfLqoA==", "cpu": [ "arm64" ], @@ -1433,13 +1433,13 @@ "android" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/android-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", - "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.6.tgz", + "integrity": "sha512-0Z7KpHSr3VBIO9A/1wcT3NTy7EB4oNC4upJ5ye3R7taCc2GUdeynSLArnon5G8scPwaU866d3H4BCrE5xLW25A==", "cpu": [ "x64" ], @@ -1450,13 +1450,13 @@ "android" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", - "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.6.tgz", + "integrity": "sha512-FFCssz3XBavjxcFxKsGy2DYK5VSvJqa6y5HXljKzhRZ87LvEi13brPrf/wdyl/BbpbMKJNOr1Sd0jtW4Ge1pAA==", "cpu": [ "arm64" ], @@ -1467,13 +1467,13 @@ "darwin" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", - "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.6.tgz", + "integrity": "sha512-GfXs5kry/TkGM2vKqK2oyiLFygJRqKVhawu3+DOCk7OxLy/6jYkWXhlHwOoTb0WqGnWGAS7sooxbZowy+pK9Yg==", "cpu": [ "x64" ], @@ -1484,13 +1484,13 @@ "darwin" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", - "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.6.tgz", + "integrity": "sha512-aoLF2c3OvDn2XDTRvn8hN6DRzVVpDlj2B/F66clWd/FHLiHaG3aVZjxQX2DYphA5y/evbdGvC6Us13tvyt4pWg==", "cpu": [ "arm64" ], @@ -1501,13 +1501,13 @@ "freebsd" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", - "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.6.tgz", + "integrity": "sha512-2SkqTjTSo2dYi/jzFbU9Plt1vk0+nNg8YC8rOXXea+iA3hfNJWebKYPs3xnOUf9+ZWhKAaxnQNUf2X9LOpeiMQ==", "cpu": [ "x64" ], @@ -1518,13 +1518,13 @@ "freebsd" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-arm": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", - "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.6.tgz", + "integrity": "sha512-SZHQlzvqv4Du5PrKE2faN0qlbsaW/3QQfUUc6yO2EjFcA83xnwm91UbEEVx4ApZ9Z5oG8Bxz4qPE+HFwtVcfyw==", "cpu": [ "arm" ], @@ -1535,13 +1535,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", - "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.6.tgz", + "integrity": "sha512-b967hU0gqKd9Drsh/UuAm21Khpoh6mPBSgz8mKRq4P5mVK8bpA+hQzmm/ZwGVULSNBzKdZPQBRT3+WuVavcWsQ==", "cpu": [ "arm64" ], @@ -1552,13 +1552,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", - "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.6.tgz", + "integrity": "sha512-aHWdQ2AAltRkLPOsKdi3xv0mZ8fUGPdlKEjIEhxCPm5yKEThcUjHpWB1idN74lfXGnZ5SULQSgtr5Qos5B0bPw==", "cpu": [ "ia32" ], @@ -1569,13 +1569,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", - "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.6.tgz", + "integrity": "sha512-VgKCsHdXRSQ7E1+QXGdRPlQ/e08bN6WMQb27/TMfV+vPjjTImuT9PmLXupRlC90S1JeNNW5lzkAEO/McKeJ2yg==", "cpu": [ "loong64" ], @@ -1586,13 +1586,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", - "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.6.tgz", + "integrity": "sha512-WViNlpivRKT9/py3kCmkHnn44GkGXVdXfdc4drNmRl15zVQ2+D2uFwdlGh6IuK5AAnGTo2qPB1Djppj+t78rzw==", "cpu": [ "mips64el" ], @@ -1603,13 +1603,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", - "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.6.tgz", + "integrity": "sha512-wyYKZ9NTdmAMb5730I38lBqVu6cKl4ZfYXIs31Baf8aoOtB4xSGi3THmDYt4BTFHk7/EcVixkOV2uZfwU3Q2Jw==", "cpu": [ "ppc64" ], @@ -1620,13 +1620,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", - "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.6.tgz", + "integrity": "sha512-KZh7bAGGcrinEj4qzilJ4hqTY3Dg2U82c8bv+e1xqNqZCrCyc+TL9AUEn5WGKDzm3CfC5RODE/qc96OcbIe33w==", "cpu": [ "riscv64" ], @@ -1637,13 +1637,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", - "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.6.tgz", + "integrity": "sha512-9N1LsTwAuE9oj6lHMyyAM+ucxGiVnEqUdp4v7IaMmrwb06ZTEVCIs3oPPplVsnjPfyjmxwHxHMF8b6vzUVAUGw==", "cpu": [ "s390x" ], @@ -1654,13 +1654,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", - "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.6.tgz", + "integrity": "sha512-A6bJB41b4lKFWRKNrWoP2LHsjVzNiaurf7wyj/XtFNTsnPuxwEBWHLty+ZE0dWBKuSK1fvKgrKaNjBS7qbFKig==", "cpu": [ "x64" ], @@ -1671,13 +1671,30 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.6.tgz", + "integrity": "sha512-IjA+DcwoVpjEvyxZddDqBY+uJ2Snc6duLpjmkXm/v4xuS3H+3FkLZlDm9ZsAbF9rsfP3zeA0/ArNDORZgrxR/Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", - "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.6.tgz", + "integrity": "sha512-dUXuZr5WenIDlMHdMkvDc1FAu4xdWixTCRgP7RQLBOkkGgwuuzaGSYcOpW4jFxzpzL1ejb8yF620UxAqnBrR9g==", "cpu": [ "x64" ], @@ -1688,13 +1705,30 @@ "netbsd" ], "engines": { - "node": ">=12" + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.6.tgz", + "integrity": "sha512-l8ZCvXP0tbTJ3iaqdNf3pjaOSd5ex/e6/omLIQCVBLmHTlfXW3zAxQ4fnDmPLOB1x9xrcSi/xtCWFwCZRIaEwg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", - "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.6.tgz", + "integrity": "sha512-hKrmDa0aOFOr71KQ/19JC7az1P0GWtCN1t2ahYAf4O007DHZt/dW8ym5+CUdJhQ/qkZmI1HAF8KkJbEFtCL7gw==", "cpu": [ "x64" ], @@ -1705,13 +1739,30 @@ "openbsd" ], "engines": { - "node": ">=12" + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.6.tgz", + "integrity": "sha512-+SqBcAWoB1fYKmpWoQP4pGtx+pUUC//RNYhFdbcSA16617cchuryuhOCRpPsjCblKukAckWsV+aQ3UKT/RMPcA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", - "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.6.tgz", + "integrity": "sha512-dyCGxv1/Br7MiSC42qinGL8KkG4kX0pEsdb0+TKhmJZgCUDBGmyo1/ArCjNGiOLiIAgdbWgmWgib4HoCi5t7kA==", "cpu": [ "x64" ], @@ -1722,13 +1773,13 @@ "sunos" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", - "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.6.tgz", + "integrity": "sha512-42QOgcZeZOvXfsCBJF5Afw73t4veOId//XD3i+/9gSkhSV6Gk3VPlWncctI+JcOyERv85FUo7RxuxGy+z8A43Q==", "cpu": [ "arm64" ], @@ -1739,13 +1790,13 @@ "win32" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", - "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.6.tgz", + "integrity": "sha512-4AWhgXmDuYN7rJI6ORB+uU9DHLq/erBbuMoAuB4VWJTu5KtCgcKYPynF0YI1VkBNuEfjNlLrFr9KZPJzrtLkrQ==", "cpu": [ "ia32" ], @@ -1756,13 +1807,13 @@ "win32" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/win32-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", - "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.6.tgz", + "integrity": "sha512-NgJPHHbEpLQgDH2MjQu90pzW/5vvXIZ7KOnPyNBm92A6WgZ/7b6fJyUBjoumLqeOQQGqY2QjQxRo97ah4Sj0cA==", "cpu": [ "x64" ], @@ -1773,7 +1824,7 @@ "win32" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@istanbuljs/load-nyc-config": { @@ -3859,6 +3910,23 @@ "@babel/types": "^7.20.7" } }, + "node_modules/@types/chai": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.2.tgz", + "integrity": "sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/deep-eql": "*" + } + }, + "node_modules/@types/deep-eql": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz", + "integrity": "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/estree": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", @@ -3926,11 +3994,12 @@ "dev": true }, "node_modules/@types/node": { - "version": "18.19.39", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.39.tgz", - "integrity": "sha512-nPwTRDKUctxw3di5b4TfT3I0sWDiWoPQCZjXhvdkINntwr8lcoVCKsTgnXeRubKIlfnV+eN/HYk6Jb40tbcEAQ==", + "version": "24.0.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.0.14.tgz", + "integrity": "sha512-4zXMWD91vBLGRtHK3YbIoFMia+1nqEz72coM42C5ETjnNCa/heoj7NT1G67iAfOqMmcfhuCZ4uNpyz8EjlAejw==", + "license": "MIT", "dependencies": { - "undici-types": "~5.26.4" + "undici-types": "~7.8.0" } }, "node_modules/@types/node-fetch": { @@ -3976,103 +4045,115 @@ "dev": true }, "node_modules/@vitest/expect": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-1.6.1.tgz", - "integrity": "sha512-jXL+9+ZNIJKruofqXuuTClf44eSpcHlgj3CiuNihUF3Ioujtmc0zIa3UJOW5RjDK1YLBJZnWBlPuqhYycLioog==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.2.4.tgz", + "integrity": "sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/spy": "1.6.1", - "@vitest/utils": "1.6.1", - "chai": "^4.3.10" + "@types/chai": "^5.2.2", + "@vitest/spy": "3.2.4", + "@vitest/utils": "3.2.4", + "chai": "^5.2.0", + "tinyrainbow": "^2.0.0" }, "funding": { "url": "https://opencollective.com/vitest" } }, - "node_modules/@vitest/runner": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-1.6.1.tgz", - "integrity": "sha512-3nSnYXkVkf3mXFfE7vVyPmi3Sazhb/2cfZGGs0JRzFsPFvAMBEcrweV1V1GsrstdXeKCTXlJbvnQwGWgEIHmOA==", + "node_modules/@vitest/mocker": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.2.4.tgz", + "integrity": "sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/utils": "1.6.1", - "p-limit": "^5.0.0", - "pathe": "^1.1.1" + "@vitest/spy": "3.2.4", + "estree-walker": "^3.0.3", + "magic-string": "^0.30.17" }, "funding": { "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "msw": "^2.4.9", + "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0" + }, + "peerDependenciesMeta": { + "msw": { + "optional": true + }, + "vite": { + "optional": true + } } }, - "node_modules/@vitest/runner/node_modules/p-limit": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-5.0.0.tgz", - "integrity": "sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==", + "node_modules/@vitest/pretty-format": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.2.4.tgz", + "integrity": "sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==", "dev": true, "license": "MIT", "dependencies": { - "yocto-queue": "^1.0.0" - }, - "engines": { - "node": ">=18" + "tinyrainbow": "^2.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://opencollective.com/vitest" } }, - "node_modules/@vitest/runner/node_modules/yocto-queue": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.1.tgz", - "integrity": "sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==", + "node_modules/@vitest/runner": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.2.4.tgz", + "integrity": "sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ==", "dev": true, "license": "MIT", - "engines": { - "node": ">=12.20" + "dependencies": { + "@vitest/utils": "3.2.4", + "pathe": "^2.0.3", + "strip-literal": "^3.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://opencollective.com/vitest" } }, "node_modules/@vitest/snapshot": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-1.6.1.tgz", - "integrity": "sha512-WvidQuWAzU2p95u8GAKlRMqMyN1yOJkGHnx3M1PL9Raf7AQ1kwLKg04ADlCa3+OXUZE7BceOhVZiuWAbzCKcUQ==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.2.4.tgz", + "integrity": "sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ==", "dev": true, "license": "MIT", "dependencies": { - "magic-string": "^0.30.5", - "pathe": "^1.1.1", - "pretty-format": "^29.7.0" + "@vitest/pretty-format": "3.2.4", + "magic-string": "^0.30.17", + "pathe": "^2.0.3" }, "funding": { "url": "https://opencollective.com/vitest" } }, "node_modules/@vitest/spy": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-1.6.1.tgz", - "integrity": "sha512-MGcMmpGkZebsMZhbQKkAf9CX5zGvjkBTqf8Zx3ApYWXr3wG+QvEu2eXWfnIIWYSJExIp4V9FCKDEeygzkYrXMw==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.2.4.tgz", + "integrity": "sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==", "dev": true, "license": "MIT", "dependencies": { - "tinyspy": "^2.2.0" + "tinyspy": "^4.0.3" }, "funding": { "url": "https://opencollective.com/vitest" } }, "node_modules/@vitest/utils": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-1.6.1.tgz", - "integrity": "sha512-jOrrUvXM4Av9ZWiG1EajNto0u96kWAhJ1LmPmJhXXQx/32MecEKd10pOLYgS2BQx1TgkGhloPU1ArDW2vvaY6g==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.2.4.tgz", + "integrity": "sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==", "dev": true, "license": "MIT", "dependencies": { - "diff-sequences": "^29.6.3", - "estree-walker": "^3.0.3", - "loupe": "^2.3.7", - "pretty-format": "^29.7.0" + "@vitest/pretty-format": "3.2.4", + "loupe": "^3.1.4", + "tinyrainbow": "^2.0.0" }, "funding": { "url": "https://opencollective.com/vitest" @@ -4238,13 +4319,13 @@ "dev": true }, "node_modules/assertion-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", + "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", "dev": true, "license": "MIT", "engines": { - "node": "*" + "node": ">=12" } }, "node_modules/async": { @@ -4530,32 +4611,20 @@ "peer": true }, "node_modules/chai": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.5.0.tgz", - "integrity": "sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/chai/-/chai-5.2.1.tgz", + "integrity": "sha512-5nFxhUrX0PqtyogoYOA8IPswy5sZFTOsBFl/9bNsmDLgsxYTzSZQJDPppDnZPTQbzSEm0hqGjWPzRemQCYbD6A==", "dev": true, "license": "MIT", "dependencies": { - "assertion-error": "^1.1.0", - "check-error": "^1.0.3", - "deep-eql": "^4.1.3", - "get-func-name": "^2.0.2", - "loupe": "^2.3.6", - "pathval": "^1.1.1", - "type-detect": "^4.1.0" + "assertion-error": "^2.0.1", + "check-error": "^2.1.1", + "deep-eql": "^5.0.1", + "loupe": "^3.1.0", + "pathval": "^2.0.0" }, "engines": { - "node": ">=4" - } - }, - "node_modules/chai/node_modules/type-detect": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz", - "integrity": "sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" + "node": ">=18" } }, "node_modules/chalk": { @@ -4584,16 +4653,13 @@ } }, "node_modules/check-error": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", - "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz", + "integrity": "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==", "dev": true, "license": "MIT", - "dependencies": { - "get-func-name": "^2.0.2" - }, "engines": { - "node": "*" + "node": ">= 16" } }, "node_modules/ci-info": { @@ -4778,13 +4844,6 @@ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true }, - "node_modules/confbox": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.8.tgz", - "integrity": "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==", - "dev": true, - "license": "MIT" - }, "node_modules/config-chain": { "version": "1.1.13", "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", @@ -5026,11 +5085,12 @@ } }, "node_modules/debug": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", - "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "license": "MIT", "dependencies": { - "ms": "2.1.2" + "ms": "^2.1.3" }, "engines": { "node": ">=6.0" @@ -5041,11 +5101,6 @@ } } }, - "node_modules/debug/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, "node_modules/dedent": { "version": "1.5.3", "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz", @@ -5062,14 +5117,11 @@ } }, "node_modules/deep-eql": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.4.tgz", - "integrity": "sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz", + "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==", "dev": true, "license": "MIT", - "dependencies": { - "type-detect": "^4.0.0" - }, "engines": { "node": ">=6" } @@ -5397,10 +5449,17 @@ "is-arrayish": "^0.2.1" } }, + "node_modules/es-module-lexer": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", + "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", + "dev": true, + "license": "MIT" + }, "node_modules/esbuild": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", - "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.6.tgz", + "integrity": "sha512-GVuzuUwtdsghE3ocJ9Bs8PNoF13HNQ5TXbEi2AhvVb8xU1Iwt9Fos9FEamfoee+u/TOsn7GUWc04lz46n2bbTg==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -5408,32 +5467,35 @@ "esbuild": "bin/esbuild" }, "engines": { - "node": ">=12" + "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.21.5", - "@esbuild/android-arm": "0.21.5", - "@esbuild/android-arm64": "0.21.5", - "@esbuild/android-x64": "0.21.5", - "@esbuild/darwin-arm64": "0.21.5", - "@esbuild/darwin-x64": "0.21.5", - "@esbuild/freebsd-arm64": "0.21.5", - "@esbuild/freebsd-x64": "0.21.5", - "@esbuild/linux-arm": "0.21.5", - "@esbuild/linux-arm64": "0.21.5", - "@esbuild/linux-ia32": "0.21.5", - "@esbuild/linux-loong64": "0.21.5", - "@esbuild/linux-mips64el": "0.21.5", - "@esbuild/linux-ppc64": "0.21.5", - "@esbuild/linux-riscv64": "0.21.5", - "@esbuild/linux-s390x": "0.21.5", - "@esbuild/linux-x64": "0.21.5", - "@esbuild/netbsd-x64": "0.21.5", - "@esbuild/openbsd-x64": "0.21.5", - "@esbuild/sunos-x64": "0.21.5", - "@esbuild/win32-arm64": "0.21.5", - "@esbuild/win32-ia32": "0.21.5", - "@esbuild/win32-x64": "0.21.5" + "@esbuild/aix-ppc64": "0.25.6", + "@esbuild/android-arm": "0.25.6", + "@esbuild/android-arm64": "0.25.6", + "@esbuild/android-x64": "0.25.6", + "@esbuild/darwin-arm64": "0.25.6", + "@esbuild/darwin-x64": "0.25.6", + "@esbuild/freebsd-arm64": "0.25.6", + "@esbuild/freebsd-x64": "0.25.6", + "@esbuild/linux-arm": "0.25.6", + "@esbuild/linux-arm64": "0.25.6", + "@esbuild/linux-ia32": "0.25.6", + "@esbuild/linux-loong64": "0.25.6", + "@esbuild/linux-mips64el": "0.25.6", + "@esbuild/linux-ppc64": "0.25.6", + "@esbuild/linux-riscv64": "0.25.6", + "@esbuild/linux-s390x": "0.25.6", + "@esbuild/linux-x64": "0.25.6", + "@esbuild/netbsd-arm64": "0.25.6", + "@esbuild/netbsd-x64": "0.25.6", + "@esbuild/openbsd-arm64": "0.25.6", + "@esbuild/openbsd-x64": "0.25.6", + "@esbuild/openharmony-arm64": "0.25.6", + "@esbuild/sunos-x64": "0.25.6", + "@esbuild/win32-arm64": "0.25.6", + "@esbuild/win32-ia32": "0.25.6", + "@esbuild/win32-x64": "0.25.6" } }, "node_modules/escalade": { @@ -5535,6 +5597,16 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/expect-type": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.2.2.tgz", + "integrity": "sha512-JhFGDVJ7tmDJItKhYgJCGLOWjuK9vPxiXoUFLwLDc99NlmklilbiQJwoctZtt13+xMw91MCk/REan6MWHqDjyA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.0.0" + } + }, "node_modules/fast-content-type-parse": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/fast-content-type-parse/-/fast-content-type-parse-3.0.0.tgz", @@ -5889,16 +5961,6 @@ "node": "6.* || 8.* || >= 10.*" } }, - "node_modules/get-func-name": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", - "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "*" - } - }, "node_modules/get-package-type": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", @@ -7290,23 +7352,6 @@ "node": ">=4" } }, - "node_modules/local-pkg": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.5.1.tgz", - "integrity": "sha512-9rrA30MRRP3gBD3HTGnC6cDFpaE1kVDWxWgqWJUN0RvDNAo+Nz/9GxB+nHOH0ifbVFy0hSA1V6vFDvnx54lTEQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "mlly": "^1.7.3", - "pkg-types": "^1.2.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, "node_modules/locate-path": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", @@ -7369,14 +7414,11 @@ "dev": true }, "node_modules/loupe": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", - "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.4.tgz", + "integrity": "sha512-wJzkKwJrheKtknCOKNEtDK4iqg/MxmZheEMtSTYvnzRdEYaZzmgH976nenp8WdJRdx5Vc1X/9MO0Oszl6ezeXg==", "dev": true, - "license": "MIT", - "dependencies": { - "get-func-name": "^2.0.1" - } + "license": "MIT" }, "node_modules/lru-cache": { "version": "5.1.1", @@ -7619,26 +7661,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/mlly": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.7.4.tgz", - "integrity": "sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==", - "dev": true, - "license": "MIT", - "dependencies": { - "acorn": "^8.14.0", - "pathe": "^2.0.1", - "pkg-types": "^1.3.0", - "ufo": "^1.5.4" - } - }, - "node_modules/mlly/node_modules/pathe": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", - "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", - "dev": true, - "license": "MIT" - }, "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -10573,6 +10595,15 @@ } } }, + "node_modules/openai/node_modules/@types/node": { + "version": "18.19.119", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.119.tgz", + "integrity": "sha512-d0F6m9itIPaKnrvEMlzE48UjwZaAnFW7Jwibacw9MNdqadjKNpUm9tfJYDwmShJmgqcoqYUX3EMKO1+RWiuuNg==", + "license": "MIT", + "dependencies": { + "undici-types": "~5.26.4" + } + }, "node_modules/openai/node_modules/node-fetch": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", @@ -10592,6 +10623,12 @@ } } }, + "node_modules/openai/node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "license": "MIT" + }, "node_modules/p-each-series": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-3.0.0.tgz", @@ -10816,20 +10853,20 @@ } }, "node_modules/pathe": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", - "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", "dev": true, "license": "MIT" }, "node_modules/pathval": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", - "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.1.tgz", + "integrity": "sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==", "dev": true, "license": "MIT", "engines": { - "node": "*" + "node": ">= 14.16" } }, "node_modules/picocolors": { @@ -10963,25 +11000,6 @@ "node": ">=8" } }, - "node_modules/pkg-types": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.3.1.tgz", - "integrity": "sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "confbox": "^0.1.8", - "mlly": "^1.7.4", - "pathe": "^2.0.1" - } - }, - "node_modules/pkg-types/node_modules/pathe": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", - "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", - "dev": true, - "license": "MIT" - }, "node_modules/postcss": { "version": "8.5.6", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", @@ -12055,9 +12073,9 @@ } }, "node_modules/strip-literal": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-2.1.1.tgz", - "integrity": "sha512-631UJ6O00eNGfMiWG78ck80dfBab8X6IVFB51jZK5Icd7XAs60Z5y7QdSd/wGIklnWvRbUNloVzhOKKmutxQ6Q==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-3.0.0.tgz", + "integrity": "sha512-TcccoMhJOM3OebGhSBEmp3UZ2SfDMZUEBdRA/9ynfLi8yYajyWX3JiXArcJt4Umh4vISpspkQIY8ZZoCqjbviA==", "dev": true, "license": "MIT", "dependencies": { @@ -12262,10 +12280,72 @@ "dev": true, "license": "MIT" }, + "node_modules/tinyexec": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz", + "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/tinyglobby": { + "version": "0.2.14", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz", + "integrity": "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.4.4", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tinyglobby/node_modules/fdir": { + "version": "6.4.6", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.6.tgz", + "integrity": "sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/tinyglobby/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/tinypool": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-0.8.4.tgz", - "integrity": "sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.1.1.tgz", + "integrity": "sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.0.0 || >=20.0.0" + } + }, + "node_modules/tinyrainbow": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-2.0.0.tgz", + "integrity": "sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==", "dev": true, "license": "MIT", "engines": { @@ -12273,9 +12353,9 @@ } }, "node_modules/tinyspy": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-2.2.1.tgz", - "integrity": "sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-4.0.3.tgz", + "integrity": "sha512-t2T/WLB2WRgZ9EpE4jgPJ9w+i66UZfDc8wHh0xrwiRNN+UwH98GIJkTeZqX9rg0i0ptwzqW+uYeIF0T4F8LR7A==", "dev": true, "license": "MIT", "engines": { @@ -12442,6 +12522,7 @@ "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", "dev": true, + "peer": true, "engines": { "node": ">=4" } @@ -12473,13 +12554,6 @@ "node": ">=14.17" } }, - "node_modules/ufo": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.6.1.tgz", - "integrity": "sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==", - "dev": true, - "license": "MIT" - }, "node_modules/uglify-js": { "version": "3.19.3", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz", @@ -12494,9 +12568,10 @@ } }, "node_modules/undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.8.0.tgz", + "integrity": "sha512-9UJ2xGDvQ43tYyVMpuHlsgApydB8ZKfVYTsLDhXkFL/6gfkp+U8xTGdh8pMJv1SpZna0zxG1DwsKZsreLbXBxw==", + "license": "MIT" }, "node_modules/unicode-emoji-modifier-base": { "version": "1.0.0", @@ -12639,21 +12714,24 @@ } }, "node_modules/vite": { - "version": "5.4.19", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.19.tgz", - "integrity": "sha512-qO3aKv3HoQC8QKiNSTuUM1l9o/XX3+c+VTgLHbJWHZGeTPVAg2XwazI9UWzoxjIJCGCV2zU60uqMzjeLZuULqA==", + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.0.5.tgz", + "integrity": "sha512-1mncVwJxy2C9ThLwz0+2GKZyEXuC3MyWtAAlNftlZZXZDP3AJt5FmwcMit/IGGaNZ8ZOB2BNO/HFUB+CpN0NQw==", "dev": true, "license": "MIT", "dependencies": { - "esbuild": "^0.21.3", - "postcss": "^8.4.43", - "rollup": "^4.20.0" + "esbuild": "^0.25.0", + "fdir": "^6.4.6", + "picomatch": "^4.0.2", + "postcss": "^8.5.6", + "rollup": "^4.40.0", + "tinyglobby": "^0.2.14" }, "bin": { "vite": "bin/vite.js" }, "engines": { - "node": "^18.0.0 || >=20.0.0" + "node": "^20.19.0 || >=22.12.0" }, "funding": { "url": "https://github.com/vitejs/vite?sponsor=1" @@ -12662,19 +12740,25 @@ "fsevents": "~2.3.3" }, "peerDependencies": { - "@types/node": "^18.0.0 || >=20.0.0", - "less": "*", + "@types/node": "^20.19.0 || >=22.12.0", + "jiti": ">=1.21.0", + "less": "^4.0.0", "lightningcss": "^1.21.0", - "sass": "*", - "sass-embedded": "*", - "stylus": "*", - "sugarss": "*", - "terser": "^5.4.0" + "sass": "^1.70.0", + "sass-embedded": "^1.70.0", + "stylus": ">=0.54.8", + "sugarss": "^5.0.0", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" }, "peerDependenciesMeta": { "@types/node": { "optional": true }, + "jiti": { + "optional": true + }, "less": { "optional": true }, @@ -12695,74 +12779,112 @@ }, "terser": { "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true } } }, "node_modules/vite-node": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-1.6.1.tgz", - "integrity": "sha512-YAXkfvGtuTzwWbDSACdJSg4A4DZiAqckWe90Zapc/sEX3XvHcw1NdurM/6od8J207tSDqNbSsgdCacBgvJKFuA==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.2.4.tgz", + "integrity": "sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==", "dev": true, "license": "MIT", "dependencies": { "cac": "^6.7.14", - "debug": "^4.3.4", - "pathe": "^1.1.1", - "picocolors": "^1.0.0", - "vite": "^5.0.0" + "debug": "^4.4.1", + "es-module-lexer": "^1.7.0", + "pathe": "^2.0.3", + "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0" }, "bin": { "vite-node": "vite-node.mjs" }, "engines": { - "node": "^18.0.0 || >=20.0.0" + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" }, "funding": { "url": "https://opencollective.com/vitest" } }, - "node_modules/vitest": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-1.6.1.tgz", - "integrity": "sha512-Ljb1cnSJSivGN0LqXd/zmDbWEM0RNNg2t1QW/XUhYl/qPqyu7CsqeWtqQXHVaJsecLPuDoak2oJcZN2QoRIOag==", + "node_modules/vite/node_modules/fdir": { + "version": "6.4.6", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.6.tgz", + "integrity": "sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==", "dev": true, "license": "MIT", - "dependencies": { - "@vitest/expect": "1.6.1", - "@vitest/runner": "1.6.1", - "@vitest/snapshot": "1.6.1", - "@vitest/spy": "1.6.1", - "@vitest/utils": "1.6.1", - "acorn-walk": "^8.3.2", - "chai": "^4.3.10", - "debug": "^4.3.4", - "execa": "^8.0.1", - "local-pkg": "^0.5.0", - "magic-string": "^0.30.5", - "pathe": "^1.1.1", - "picocolors": "^1.0.0", - "std-env": "^3.5.0", - "strip-literal": "^2.0.0", - "tinybench": "^2.5.1", - "tinypool": "^0.8.3", - "vite": "^5.0.0", - "vite-node": "1.6.1", - "why-is-node-running": "^2.2.2" + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/vite/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/vitest": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.2.4.tgz", + "integrity": "sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/chai": "^5.2.2", + "@vitest/expect": "3.2.4", + "@vitest/mocker": "3.2.4", + "@vitest/pretty-format": "^3.2.4", + "@vitest/runner": "3.2.4", + "@vitest/snapshot": "3.2.4", + "@vitest/spy": "3.2.4", + "@vitest/utils": "3.2.4", + "chai": "^5.2.0", + "debug": "^4.4.1", + "expect-type": "^1.2.1", + "magic-string": "^0.30.17", + "pathe": "^2.0.3", + "picomatch": "^4.0.2", + "std-env": "^3.9.0", + "tinybench": "^2.9.0", + "tinyexec": "^0.3.2", + "tinyglobby": "^0.2.14", + "tinypool": "^1.1.1", + "tinyrainbow": "^2.0.0", + "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0", + "vite-node": "3.2.4", + "why-is-node-running": "^2.3.0" }, "bin": { "vitest": "vitest.mjs" }, "engines": { - "node": "^18.0.0 || >=20.0.0" + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" }, "funding": { "url": "https://opencollective.com/vitest" }, "peerDependencies": { "@edge-runtime/vm": "*", - "@types/node": "^18.0.0 || >=20.0.0", - "@vitest/browser": "1.6.1", - "@vitest/ui": "1.6.1", + "@types/debug": "^4.1.12", + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "@vitest/browser": "3.2.4", + "@vitest/ui": "3.2.4", "happy-dom": "*", "jsdom": "*" }, @@ -12770,6 +12892,9 @@ "@edge-runtime/vm": { "optional": true }, + "@types/debug": { + "optional": true + }, "@types/node": { "optional": true }, @@ -12787,148 +12912,17 @@ } } }, - "node_modules/vitest/node_modules/execa": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", - "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", - "dev": true, - "license": "MIT", - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^8.0.1", - "human-signals": "^5.0.0", - "is-stream": "^3.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", - "signal-exit": "^4.1.0", - "strip-final-newline": "^3.0.0" - }, - "engines": { - "node": ">=16.17" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/vitest/node_modules/get-stream": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", - "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/vitest/node_modules/human-signals": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", - "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=16.17.0" - } - }, - "node_modules/vitest/node_modules/is-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/vitest/node_modules/mimic-fn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", - "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/vitest/node_modules/npm-run-path": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", - "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/vitest/node_modules/onetime": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", - "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "mimic-fn": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/vitest/node_modules/path-key": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", - "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/vitest/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/vitest/node_modules/strip-final-newline": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", - "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "node_modules/vitest/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "dev": true, "license": "MIT", "engines": { "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/jonschlinkert" } }, "node_modules/walker": { diff --git a/packages/openai-adapters/package.json b/packages/openai-adapters/package.json index 0771c7d8737..75865720fc3 100644 --- a/packages/openai-adapters/package.json +++ b/packages/openai-adapters/package.json @@ -38,6 +38,6 @@ "semantic-release": "^24.2.7", "ts-jest": "^29.2.3", "ts-node": "^10.9.2", - "vitest": "^1.6.1" + "vitest": "^3.2.4" } } From 52e2f3c4e002ebc8f3da08126f54a3a160a3b16b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20B=C5=82ach?= Date: Mon, 21 Jul 2025 23:37:06 +0200 Subject: [PATCH 75/97] fix: Ignore invalid JSON messages (like NODE_ENV undefined) (#6576) Fixes: https://continue-xd.sentry.io/issues/6731751693 Co-authored-by: Patrick Erichsen --- .../continue/CoreMessenger.kt | 21 +++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/extensions/intellij/src/main/kotlin/com/github/continuedev/continueintellijextension/continue/CoreMessenger.kt b/extensions/intellij/src/main/kotlin/com/github/continuedev/continueintellijextension/continue/CoreMessenger.kt index 8ccb078380a..1c0ab242a14 100644 --- a/extensions/intellij/src/main/kotlin/com/github/continuedev/continueintellijextension/continue/CoreMessenger.kt +++ b/extensions/intellij/src/main/kotlin/com/github/continuedev/continueintellijextension/continue/CoreMessenger.kt @@ -7,9 +7,11 @@ import com.github.continuedev.continueintellijextension.`continue`.process.Conti import com.github.continuedev.continueintellijextension.services.ContinuePluginService import com.github.continuedev.continueintellijextension.utils.uuid import com.google.gson.Gson +import com.google.gson.JsonSyntaxException import com.intellij.openapi.components.service +import com.intellij.openapi.diagnostic.Logger import com.intellij.openapi.project.Project -import kotlinx.coroutines.* +import kotlinx.coroutines.CoroutineScope class CoreMessenger( private val project: Project, @@ -20,6 +22,7 @@ class CoreMessenger( private val gson = Gson() private val responseListeners = mutableMapOf Unit>() private val process = startContinueProcess() + private val log = Logger.getInstance(CoreMessenger::class.java) fun request(messageType: String, data: Any?, messageId: String?, onResponse: (Any?) -> Unit) { val id = messageId ?: uuid() @@ -38,13 +41,13 @@ class CoreMessenger( } private fun handleMessage(json: String) { - val responseMap = gson.fromJson(json, Map::class.java) + val responseMap = tryToParse(json) ?: return val messageId = responseMap["messageId"].toString() val messageType = responseMap["messageType"].toString() val data = responseMap["data"] // IDE listeners - if (MessageTypes.IDE_MESSAGE_TYPES.contains(messageType)) { + if (messageType in MessageTypes.IDE_MESSAGE_TYPES) { ideProtocolClient.handleMessage(json) { data -> val message = gson.toJson(mapOf("messageId" to messageId, "messageType" to messageType, "data" to data)) process.write(message) @@ -52,8 +55,9 @@ class CoreMessenger( } // Forward to webview - if (MessageTypes.PASS_THROUGH_TO_WEBVIEW.contains(messageType)) { + if (messageType in MessageTypes.PASS_THROUGH_TO_WEBVIEW) { val continuePluginService = project.service() + // todo: is this a bug below (messageType = ID)? verify continuePluginService.sendToWebview(messageType, responseMap["data"], messageType) } @@ -68,6 +72,15 @@ class CoreMessenger( } } + // todo: map<*, *> = code smell + private fun tryToParse(json: String): Map<*, *>? = + try { + gson.fromJson(json, Map::class.java) + } catch (_: JsonSyntaxException) { + log.warn("Invalid message JSON: $json") // example: NODE_ENV undefined + null + } + fun killSubProcess() { process.close() } From 791423b559cbc29e7e8fa6fbe77511831f44bb4e Mon Sep 17 00:00:00 2001 From: Brian Douglas Date: Mon, 21 Jul 2025 14:37:15 -0700 Subject: [PATCH 76/97] docs: cmd + i to Edit update (#6660) * docs: cmd + i update * Update docs/features/edit/quick-start.mdx Co-authored-by: Patrick Erichsen --------- Co-authored-by: Patrick Erichsen --- docs/features/edit/context-selection.mdx | 6 +----- docs/features/edit/how-to-customize.mdx | 2 ++ docs/features/edit/quick-start.mdx | 19 ++++--------------- docs/getting-started/overview.mdx | 2 +- docs/images/edit-model.png | Bin 0 -> 130086 bytes docs/images/edit.gif | Bin 6262163 -> 3748198 bytes 6 files changed, 8 insertions(+), 21 deletions(-) create mode 100644 docs/images/edit-model.png diff --git a/docs/features/edit/context-selection.mdx b/docs/features/edit/context-selection.mdx index a7c3459c9e3..0cbff11c59c 100644 --- a/docs/features/edit/context-selection.mdx +++ b/docs/features/edit/context-selection.mdx @@ -4,8 +4,4 @@ The input you provide is included in the prompt. ## Code to Edit -The **entire contents** of each file (the current file for Jetbrains inline Edit, the `Code to Edit` item for VS Code Edit mode) are included in the prompt for context. The model will only attempt to edit the highlighted/specified ranges. - -## Context Providers - -In VS Code Edit mode, you can use `@` to add context using [Context Providers](/customize/custom-providers), similar to [Chat](/features/chat/context-selection). Some context providers may be disabled in Edit mode. +The **entire contents** of the current file are included in the prompt for context. The model will only attempt to edit the highlighted/specified ranges. diff --git a/docs/features/edit/how-to-customize.mdx b/docs/features/edit/how-to-customize.mdx index 1375d7b9d15..74f06a5496a 100644 --- a/docs/features/edit/how-to-customize.mdx +++ b/docs/features/edit/how-to-customize.mdx @@ -6,4 +6,6 @@ You can configure particular models from your Assistant to be used for Edit and 2. Click the cube icon to expand the "Models" section 3. Use the dropdowns to select models for Edit and Apply +![Edit model selection](/images/edit-model.png) + Learn more about the [Edit role](/customize/model-roles/edit) and [Apply role](/customize/model-roles/apply). diff --git a/docs/features/edit/quick-start.mdx b/docs/features/edit/quick-start.mdx index 087ac5e1562..aa2d9b5d494 100644 --- a/docs/features/edit/quick-start.mdx +++ b/docs/features/edit/quick-start.mdx @@ -14,7 +14,7 @@ Edit is recommended for small, targeted changes, such as ## Highlight code and activate -Highlight the block of code you would like to modify and press `cmd/ctrl` + `i` to active Edit mode. You can also enter Edit mode by pressing `cmd/ctrl` + `i` with no code highlighted, which will default to editing the current file. +Highlight the block of code you would like to modify and press `Cmd+I` (Mac) or `Ctrl+I` (Windows/Linux) to activate Edit mode. You can also press `Cmd/Ctrl+I` with no code highlighted, which will default to inserting code at the current cursor location. ## Describe code changes @@ -24,23 +24,12 @@ Describe the changes you would like the model to make to your highlighted code. Proposed changes appear as inline diffs within your highlighted text. -You can navigate through each proposed change, accepting or rejecting them using `cmd/ctrl` + `opt` + `y` (to accept) or `cmd/ctrl` + `opt` + `n` (to reject). +You can navigate through each proposed change, accepting or rejecting them using `Cmd+Opt+Y` (Mac) or `Ctrl+Alt+Y` (Windows/Linux) to accept, or `Cmd+Opt+N` (Mac) or `Ctrl+Alt+N` (Windows/Linux) to reject. -You can also accept or reject all changes at once using `cmd/ctrl` + `shift` + `enter` (to accept) or `cmd/ctrl` + `shift` + `delete/backspace` (to reject). +You can also accept or reject all changes at once using `Cmd+Shift+Enter` (Mac) or `Ctrl+Shift+Enter` (Windows/Linux) to accept, or `Cmd+Shift+Delete` (Mac) or `Ctrl+Shift+Backspace` (Windows/Linux) to reject. -If you want to request a new suggestion for the same highlighted code section, you can use `cmd/ctrl` + `i` to re-prompt the model. +If you want to request a new suggestion for the same highlighted code section, you can use `Cmd+I` (Mac) or `Ctrl+I` (Windows/Linux) to re-prompt the model. -## VS Code - -In VS Code, Edit is implemented in the extension sidebar with a similar interface to [Chat](/features/chat/how-it-works), and you can also enter Edit mode by using the Mode Selector below the main Chat input to select `Edit`. - -![edit mode selected](/images/features/edit/images/select-edit-mode-75c8f01861ebe03177986a5b7f21f746.png) - -You can also reject and accept diffs using the `Reject All` and `Accept All` buttons that show up in the Chat when diffs are present (see examples below). - -### Adding Code to Edit - -Along with adding highlighted code, you can also manually add files to edit using the `Add file` combobox or by clicking the dropdown and selecting `Add all open files` to add all files that are currently open in the editor. ## Jetbrains diff --git a/docs/getting-started/overview.mdx b/docs/getting-started/overview.mdx index b0de6d490a4..d3b6b3269ca 100644 --- a/docs/getting-started/overview.mdx +++ b/docs/getting-started/overview.mdx @@ -27,7 +27,7 @@ description: "To quickly understand what you can do with Continue, check out eac [Edit](/features/edit/quick-start) is a convenient way to modify code without leaving your current file -![edit](/images/edit-d522442f88e715924b4c9f4c83900e3a.gif) +![edit](/images/edit.gif) Learn more about [Edit](/features/edit/quick-start) diff --git a/docs/images/edit-model.png b/docs/images/edit-model.png new file mode 100644 index 0000000000000000000000000000000000000000..f6886495631de1b237c40d002f4bb2e89bd42dd7 GIT binary patch literal 130086 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 JBCO;6e*ih^Nkjku literal 0 HcmV?d00001 diff --git a/docs/images/edit.gif b/docs/images/edit.gif index a1629930c6d22ac59f03ae69a38ef00a72710022..7f7cd0b15790cd6e4c7e5cb801044aec0da17486 100644 GIT binary patch literal 3748198 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 Tue;IrHXdoD|AB4=>*Pc=G1Uqff7X{dxB8 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

-h&_1PCf;IRm&86`6mDPU8~cfMS`?*;8kAN|&6 zuMPt6WFEU)nVi?L|DRAWg(_Sj3prIc^UVquNYWlbMDxH`A!dUtNuJGGcRmmnVi$$j z8u~Ce5h4CUh%V}&OSsmQ7D6$KQk>$FMpcCPWeNQ~9g%-^W1~mn;K?}LAe6?-oc``u6FvShm8x82AE_2JEF~hAGt?vp z`+*>MoTGaWS)^7P8NQZ;&{P(aB!TEw$v0|}M6{Hl@kaTJIM`w$Pke||@W{lEpb~s( z)S@t1>CJC~|8r-6@Pv!DY0h(^la$^VM@M)mHLCeiCY+>FWv&UOi)Exsu(2dJsfoMI zAVe69xE&VdH%%hm(VEurCqLhGNo|tyE-au;I4f$=iw=@UK+ISE5W))zkO2)3(B)R3 zu?B2h<9&bWLBt~FJIwG2jm4xELD8o*WwK8p^w8L9Fv7*{Wg-O#5LFVYfP$|LNJQC$ zNkenx1SMFo1L@%({j`J8t70{)?@>SzuBb+;?lYn39P2hS@-Lzwk|}Cf12dRm0A37F zFj+`~D4^4;P04gX1bK``H0Fy`U;-8!NyRYi0TC-qgPI4i#02hwfW|tETN9gs2tM}% zMImGg{{i@01%NaFqLJrE5_pJ*L;=Qf-ASveT`g+?v($c2?E)Df8n=*1*4yG1ennuK zzyhNMEeMh@F0kuEkp-NM@U$HED91s>(hpYkV;$~5NIZmwkx%d|gPci7xcc0{5`V1^+0Sg*E zfDS$Z8Uqm>ogNS|A2biWVP!IxTkUEsAMkd@R4|5th)>rp^Ns(4Fm1c_(kPJ-Y&6_3 zK~g~wOvD2epooV%HfNA^z#-+{Y~JDnIG`+# z)CGY^%P7Grs4rH8u(AktWD2v`v|8vZ1(?PxE={Px8EUR>haCV1XK2}OAOgyRV?FDA ztV<@5=RpzXHtgmcf>ftq7!6oL(0&Q`0(v!1CvCC|`)jHZHA)axq{6zZP&SI!CX7?e ztskQxLn3CEQ-{H&d<*|tM%aK^{0f|owE#k}A;N$Hh{_;Nm{W)tkQ=&wZ2`UufU1K~ zSKnCx14QME+cUQego-`(vY$QeYj6A8<39Jg-#zbp@B7~aKls59b16Pi|D_m$J$YOc z{!BAjkSUlQF^<6X+);-tukg;Cdxma7_?$yts| z2ml*`Z3WQ?Kx;k!`llWo#r6kJyaE6oLjrApoH0k`F;zc-+S3V!Iov}&oI|&$0D@7U z4mF8Sz+U)CfGmW9nG_L0DFQ*9LcO?AK@pL5xd!q96D@hfcAd`tj0ET?9IJI5^V#4H z;$RNy;12R&5BlH_0^tvOf9c^+hF9wj}2Te{SpGsQU-n%py^f~i4Ou6 z5kwu{4!I!AaT5cT1whRp-38$pqG1}U;Tp1G8@k~e2Hz_Y0`Ewf|3;7vPD}><JA(J7KGu6-5Y!o8C7Qx91Hl0#39nt<#VkJsW|0Pup#6>Lq&8$eE zM#xquiej%VS@2;5HzY$Y6^0so(GorqO-Q1}d{q~&TA&42{i%x`X^`FYP|}>BB?4nG z;tVDxRU*t<3)W!p@I*wtjzOHmI-HhYJYYVoL1HO}#yJV8s2CZ6VcnfyQ^gA*3FA1D zV>l9H`cREm5!6AkV_>KXX&D9^;9r}?)Sh*iwzZ%odEqAUqd6vAIRa!r%A(Rx!1Y)T zL+wJBNufN2Aws;v4FSeGfPos^i6u-2np6OYC?HD^fa$?N|6SQep)F*Rm;fW3LMIFq zHzExjvSdrTa;(qs@OkahjRfYDhf(b47T5jM)oGI7I!1jSGs(pHQ{KgIXl4V)e-t}z4D_FtMBw_t5 z-#xw^BX!h4tkXEmLx=R%R$NUn_>0;&5ltk)7wAYPTtMi!&PDmPd`EU@V?NI8ckN9TjLo7ldY0z8MbyOAn-(ql5@n5(Fx4V`3s)WXk4j z(q?Vi=4~nsMwCHL>?VMeSyhx-^SI+i_QQdA177AO|5NY|Z26A<^ieRljVZ+@Zc=A; zTIY3QXB!fPb$OH{6j&xu6o7Qs0FY;yB^u*I;#~F#Hyo#7ltvW%4LEfIH~gZ0W#@h3 zXMXDEe$pP6kW)XDf&=Ua2IPbz7^p$eKqwOEWOy58Ea+q`X9B9{D<;N-j-=EyB1txe za~abhPA7kYXo!mFh*IaQ6<=CzLJ%kdE&M@b(13wT#&6!qcb-|fbij??=rSrG3=E}~ z^pP$kLnqi;f01aB8tIWD=~o8Vf4V{tU6*?^ZRJ|)&NPIdE_!GgT4+z)X`?Pt4RKD?6x^Tc33DWBp<-&LYAQ`!kv7&;G9pnE zHR`BtQVaHIK`e;pz{@+z2c_!crow8h%Brjk+$+HiBbtz?!sR`F1eiX}^R){uUMl8@ z7&rt-veb5X2%FME|M+ok=8To?a-ReB_OmqV8;!s&v=E zvTVz0>N4oTK{NsfZ~_MqLCwnBq;LX{G(yextOGQ{%>L}q`fSkx?a&G>(#pWl62#Bq zERX?@}*`mvu?b+_%4I~6H6of6X!kqv> z8Px3DS^&<{?cAbPYRyI6-U%n@#NF0y;L>d=Wfs2fQbJrU9#kzhaaN^vZBKO8yeY}R zqHX0`ZvKf(gJN9{LLqst|zU+C#CM`vM%c~YSb!J;T|q&yvpL{ z>8-@>`9-b^FbUaS?(YIG)&T-RghBvr0{=l6qocU#l`(JgI`8vBZ}dv<^g3_GZegU@ zF1^w2(_}A4e3nJFx5u@sr>vl!$gmJ+GjX|)!NK|G|#DlW``u}FBP zN5DZ!X|WRfZdgU}8nZF^C_pi6!vC~*RD`V`iTETx{@0M6LWJ_H~KvdL`kA9qAMNYMd5g(lo7Bb)Lm z>kN~PQ?nw_Y&j)D++q5?);Z21{H>ZVE=)lrh!;Z*7z?sS0P(MSL|ZX~n_2PmU@@tp z@-j1XuwK~*q$rA}C}lXnb$MMaJMjuyh$?WVA(2Ed6LLn}10}ST8EY5+Ve`f{^E$Kh zJ=H~5u*qu{6j;sTo7VF^BPJdjM0gGALjNvo^dM-oM}u@o=fXjB^d&%H4pZ%*ZE!z7gdVuGOOM)3 z*;Mp^<1t6{P2)6sxB@a5Loh4?BKWE#bi#5_G%_GVC-C%9gThcFwJ{uZQaiO!BLhK5 z!a<;dF&M*DUv*Yv^;UazS7XE}m_jkA*g=d#53_V2TkT5cqrI|;QfX`>pJOiPbY0tZ zVR(TnIQ5AILtkTpBm@I2NCIGgNieKKV7o(MD|TSR0%N!0K?K8KJM~Uac2ZL|GF-MR z9E35Pf@K@EQ(rFV)5PJmH26R4i>07H^<7jL$)Ae1`c5VB`C71$kn{+>v z^d+RiN1K933-@q;wEr>WHb>_|ax3?8do**8bU|!1LOAy#>S>=^Z608Etc)QYGgCt2 zu3Z1XHbjE;POEL3_jz+FEgS+t$#X4LFdqLCDIe2(&$pFvWhEVg3{%o*14A-G>h{>~ z90+(F5IA=Gn7h5i2-N2p+3zyQgQzGY-J$n{Q@Bc8Mt>g-qT;G(4|$QJ zv`u#=_h4;!w0Mid_(+%mMa7vq%QZpB1MKa1mTNgk=*NC^fpCrLLj8AMt~iS~`HOEd z%MV$M_l``W<{Z zg*r|iqpW%0d8A8vCaDL2>LdxWD=O8iv0P)M{BbZ7dZ7n1$-Z(1?TjN81d%o4q_g^+ zJ0&j!Xsiq9faPQcERZUk>Zfb6Kf5@Zhp|bpL7XP>F#3cZM1nTJ>*(x&Tef<$=Qu9U z=qp5qERmUc(ywOnsIT(r(}21=wL}&KK`o$(TL}e<`0%c8 zMgKXNz`jdo*Thwc*hQwlSe>iMUCDm*^L&b8N$)6Fh3d+lS_DbaggG3<8k~bCiqDNR zOavr>1;{Ra%MwL31YE`ROv1Zk}m1|e8Up0ynE2`jF24E%T zoLGfxytD;LGHmcds>%x&Xb#cq;zJV#k8qmE8Bu3?LmRTuW7ktCB(8c}G7c!GF@ z>A`||0)aWYqGspMp+}cKoqBca*Rf}>-5D`3T)j{V4lTEGqKB?mXU+ExUcqvlC7cLM zA|}+Bc#|mH(4%Z(!y`Sb z=5c18f}Ej%mM7!G>ObR#8t*w5kIV9xT}tYb%P+aaQOq&PEYr+0(F9GTi2s0M0KX@C zh*QqrSg5Tuh%U-#tDP!v(@%#?1dGZ8u>|u5L%mG&%QP8n)X_&FjkGcdfA9rRU$pd3 zz$u%1EVoYkfoG8_^wf$(g+^3mu$1b{s!$=ddlk_`XRTGzTXD@**Ijwt=nsV$!W2AK z2c1vDhVB`)wX8IWW5i}Ou|(QwcapC}`wA@)Km;>2RMl@4owe6-$t~C1a~=Gn2=9Uw zme_6kxd~Xz;CbhP)mX!d9ei5BryYE@!3SDr<14O&;_7;6yce@0$vfmAmbI5#!kvUx zFrNw(-Hkc!*yE3lQlykmB&3ib3l`{LgM;2Z&N5icF(({Y@;$PuX8+o$L?4~o(Wf0F zn#m2&t~9=G-G`f-PvX6fF2rf(!gR`Ikg2ZP>Z^0*>>)xTq(C5o8v1kS%2ew|5_gc; zGYW{>VMtno58gAevFPHq>8HI*WQB-4IYihOpx#C5ogTs3@WT;LyvAXZ*n}m=%c4Ss z#u1v)X9Ix@g@8HS;995RwBRa?=Sl85ji9PSakV&RJqRumdK59&#!9#)2FUgmFl;bXB!VMUJ$oU{DmEvj(Ep^skr>AfPXX?J<2c=vdf)=<1;kojCsQe&e^ zlvec7rw!4lSY1b=L7hDwP~0jAlXVJmXTg&b9^xhu2w?y^ z7*0W&kc6C6Km-k}iG>hCJq>PI2SqRopu-h&AFNL7_+u_Ge?iox67RlV!1 zgAwVF1w-gz4@|sb7^&z;Ea0+%Eo^~RMEMi~H4=szR1Oj;@Iyg-@&Ew{VMG+Hf&d^O z0U0nP1p)Bj7r_`t>Fs5BnCj0?w$r`R42vQ5!j}@P(g-$0L?5Ypo3VPOJsp8!7?yHK zE-+yaMz|s#slY|MKy|U_O$7%Iu|Y#DAhZ_bW&t*Ef(sA;h6>uC3V#vfCqWrXkSSs# zgF2Q&M%55FazqSEG-5&a!8SX#k7|z~#5?+Sh-B1b9sj{7h!5KsEY3_UdyA@)Lm)sA zDtw^^25bUFY*w2A%t8k`5al(onax{yf)@$w(*-zUz&kbM9m*O~M_TE;g0!t6`iSN6 zMp(W0Ne3{rNX0ugk_%y`WC#8e98x&If)so(1(^U+KLij3NYEfRofHZbB>)5F5n+oF zVL=rRs!feiig?5$9qTaU-$vsIGnm0A%qhwis5pR!SYRSOn85%Zshfw?34(k{K^2-X zg;I8utYtN8be_b1FPwPt02iJ z$S8!7ic@r?8o-@Lj@=zU}bSAbE{&Rva49tZ#8eC1bVDam#|+ z;qeb?-BRQ~tF)@IX|F%ULe4{rIY|jjP?Rn9gUh~mn73_7dSXyMKQx>G0t7HpN zh@0K(UQE0vkkl>0gExzXtB7wo$xXKdPeEjbs_J#{gCWe3VQ#4*oA3lT69Kk~x0xzTlJCWt?DZnnK@spt(<)nPqPhBWk7w$TdyJTR?modjU#(~erAmJ}ZepHf0 z7!?GUup@wTvXtQ*XE`4aux(y*WxUaz;Jz4FXm(XR;hDUp4Vut}HuRwpooGcbn$eAR z^rImiX-Q9-(v`OKr7@jpO>dgho%VF2H$bc$95^uZ^#+lVfWp_fGL(L1a*ONcyid=X z*0r|vt#O@eUGJLLz4rC5fgS9+`Kbu)#Z-HhtVa@7hBhaxYpYi*Pv5opBtg)GZRebA zZAW>+3^|1?D3Id|t(96`X-0;S1;1P~IAz4eRyBZ?}6Gp*ADK6e-35TQ~j3Bvyg`ISz zFP-U4cly(z9(Act{n1`vz~6>PYRr6xLvMU`nP^_XkaAWzcg7Y|7(tI$Lw!xzF($|FQxbOEEB?|mn$O-5bd<|Uh9mdS@NhqP)|gFRD)$$$k^;2%>>oZ>ii z2q^r>h;_ii7pJISJaWMZ>Ho_2LEWtw)lr{%)vuoQt#|$FVV~(8QD{Q7KL+91Y8iK| z)a#2U)2kdW`N=B<5D^+l7lK~&bhv{d!w4iM=+_jy7sTi#_xts+e@$7uf}7C|%UGf_ z1&lDXg#F1hTdiY`$4GDZdjAy@wXq+CH$VDiauat;yhgt0I&l+P=nNJ=-ACMFd)@bNp$`T zONKArxS&M_Y*>H+F3M;X+#wbEsJ2=zdDKB2bb;sw?*oA_2s>sHSf)$-DBcQBLnz=J z#Ht@wsVmBjPeg$PGXJAhphFRWAi-K@x9Cg@WzBDp&c-;{CSp1yAp`jG_<`aSau55gD-&9q|z% z5z{2cYXIR7Xm1Y(f&zfx0$2v3^e71hg${dXHJWhGszRLVa0;yuWQb|9+zi1&PzYsl z7PYAqGy?K~%$q1r+N{JO@X!e-?-Si-*$f8;Uy&A(F&Uu^J_w<4xTdlSLQaSgen4?Z zN^#ZXW=E!Ra2iENVr_5;O&P^;9M5FIpy>x)(5dDy2@i=BOUzY1>=w)o(4;R-dd&RH zPS7H8ANjE#{r~YF0kR*1BCX_Y8{N-)*pVTA5gV`KpyZ?jUPz?SQE}*y94+!95y#=2 zCn6(m9ec4Io$wmVhb!cu%-Ae(@CYMSawS<27lyzVivr**$H>@mdkzq|@(U}%00*$B z4@&Dc+KLJYXj6o;BQFC$bioz>kR_S2DbM94M1uqUW1TQy2FBiio2{R`;U;$`A<<64p`az$Fg)vF9 zG;hQ)&HvJf#slfjqIfD03}N5H?)1D3wu&=3)3h>S>)6{U{!OI-?2rOZ1J zleV5_J`*!gIW-v-zzuOrVd9Z1Bh^kP6`%^lL(ODlZg4o6Vgx%iR)etSfYb?A z=P!t`fX)6iTnX0yzT_o?K-}okAT%s&i0$RNR3c=QHAWH&PYP0RMa({@Awr?;VqqPI zXI=cO4sVZL3-)BQPrD)jauUc*{jDLEKpGh~Vl5&`zXCJMY8cib9W*Z%+D;;JhatW| z4W@x0G z@NpF&THcUVe4!Yigj{O7&fDmTs(7 zdNOryf+v0>HM5BjTgGH1OfIZ9hP3y6 z%c_7#sJccJB^FoWqVO&bY8Pj#c^AYGtMgDw)M??jfMF|e^R#|X;(pWl>$7sP`~#qn<5OrabPWD zX&RGuB{v3!Qvv!&&>SKTds+KcTQFF0c07X9^N4p zo{?@jP8fV)epn2Q1^Ilt%fJS8>l#!d#x#Q_vVqYu3Yw|}98XLx?&6|vBQS*{*H zt?Lul*+I@h81#oB0tt5()^|^#93ntOVD(l-`Jyp8qcwV?2aO|%bBE6e4nONC`&s6$ zVooy)15}X;Z8P^~WEeQEs3-!aVOpeLm7{Swr*(R#_frPTD2S^gMoG+7etD{PBRN}I zb7Z86#)B_DZb`%c}HYt8B}@sZSt7sKxrEjg$01fC2bJH_R7$%(2M` zae5!Ft|j|%`>n91@&hWTO$orDkl7(h>Mr&&tn+Ymvi}F5vlIhj)+a#FTNR88C;PQu zOBUGFKYdps2tYX47)}fD)sEDkc{O7UI)MU(12kx*hpAc55w?{(e(84_byHNCCbWB7 z-F|z91thZuj>4!XOP0I4BP=%>mwVU}*8bF3d3!Bq6RoteQg z{FJpyH~LLo4%{JlLp<9!FWWV2tOa)gBg0kv5YbXB*l4^rnN+8nViT|`h?_|O8^t*V zt9iV~eLR#0@=~6bq-UJQt6M56K>RAf5VQ!XG5>b~7Iej>Jl=Sr2sCbo3wL(+qK3m- z)s7s=-3H5mI(rp-%FR3_Fq0|`6+B_M$Q6&bFBk-nmf+63&Z+l;c?=8lx@3*IO@=p1 zkr%za{L7!hN+WJ78MDmwFUsw_(WzV!Sa<{WEz%Q#3Np-VFg+7f=D`^@@^aP9IrtQr zMwnkK0^7XCuG`U79rq%SPZI?)1DG>TyjT-atuzZ~AD5z0sS)()*)A zB805}JK6NH*4^FNfx86g9D3t=gRq@|@&D0;KRq*lyx;x(-#@tsRJd^{oyFVT-ItxY z?t`skv(;4bRa$%8CBDy2A{Gyvh@R4ID=TiRRT}0c# z{qk{NI$YrtTp@fKA{Zn=61c(`T)`EH-xyBe_> zsa6IiX5XdLaqn|K{1Jo~jN$kt0TzT`{=A|Skb(V;K@#3S{^5WAkwO07f0ZTT%|D*{ zI}{*b^c&c(1Pm$*E=1Yz!$b*!5F<*QNU@^Dix?pe5e37cM-vmnY0{KKkjYw;GOAq3 zvZc$HFk{M`NwcQSn>cgo+{v@2&!0ep3LQ$csLMgd2Bo@`>(bJQPJuQZ#I)*Et5~lN z+8R;8q^}q8(gJkgv|ZIEVi188l{Kdpm2)h^KW8n`BFvZS0b+ zZMw8;bMz>=E+9sM_#dunOYg*wTQ^wESMhA85QB$jC6iH5l%i808y!s3f6nzEvbFCtSTi>^Ru zl!QfG2-7b>7NXdD{r_Ef7kejJ=3$b(bkz%n`9&$@kG`R3<&{`wspXdNAtMPaU%~=Q zFkl)(P%J*F=*lT7vdLzPEuIqRny$piriud#evlQVf24z4Y2lx9swZ3ZfL-V+_&tKn1cf5Y)vB2PNUbTly9B!b_WyI)qAJU0P|7 zYkjL$P2pC0QLv<@tM0n&wp*OI;$nc`Xs2OTh$a&Cg-dU~a66K4kCG(tz2psS@F4>? z8dDxHAwjH0#{V|!ECUl?Kt%(?R#)z%?zXgTOz@T)GEJAVS5c=Or>yeIEVs;U$YoJl zS-rJ5XMXWH;DC||>^guGSz@$Mhi;VK8 zAIoGNy*wdY^w`%lBIY;K`DQHq6kD3EF{qf7({{dxSSSk=_7;- zj;^m_BwokjVbml_zFvT#h8lZRfHOg5G(;iRZFfbo&0_Or(<+qZ-1+IKr>;7RZ=V$R z+z{2h0R{st)VBqEcaXcrf2B23;vkd9(6SLn>`3et@G=Y|5SjV+wX1hMlRK%bBa|mi zuCD#|-2Zp)TqAgMM|6M+Nt>7jCPo!$*ia&y;av1c#({yH;}n*OMLl3K5a!iH7)6xS2A9ah zCOYv@A+UlwugUz{EOU!3cV=A{X@-NIXC>kve{G6=ev+6sq;aMmqA57i^uyjy1FL^h0x3 zWdGm7YV(VMJnoY8tAH1mHOfYCENfbW5okToAC|U3zIlc>v3YB1yI(!a|R2XH%yx0i+RYV&7+FUBz z6OjuXkYs>c2P68(iiyM{6~l1FJ0-%1d62Om>!_mX`r!m6BJ-aB4JfI=M~hMnL~a$k zf(rWfuESYG4g*mFdU!I*=r;hYF7))|U*q~o3gfrT7PHxVVMF{f~it6Tvj$<39nlOQ81 z79SeXiT>&)#IuAaHL*NRqy`ur)V!-eyCbH39GyZnISba{-&C6qm{pw~VvGNX9X1AhO}H6pOsXE2jgZQbuk(qci?gn0ya> zB&}tVz)mJ^l1*{~8JkUGH`8*2&TOs6?)c4cZls?;`GeZhVzw%gKs499SJt?8AdG7q zwhF*a4Sg}n8IcAzFu@I7bXLt<=5m3diNBi!*Q#R%pQ0>LIAPhCgEIbGoJUP+3<~yx zPtxapt>$7RnK{$2F6w!h4CwfI(v+V3Q$+CCSXYbeWJh)Z+MsE<>Hq3=q~=MsW-(2e z_e3mMmoBxmr@b~Hd=kKrjx-|yvuBqy8Gdaff=fKw4_z!z)o%-&v&bSf0z^S#$GHU< zjScGJt|J#eq*kO2#VtN%c>_pjLTuJT?SdPeWlVFx#8%;e41_e)+?I7*jwg{uFts0L znAiwDI5csBtE)O2hzOFP1I%4<-U*I)dki@cOf!K71)ngU?A!%kQRLcKzh;}Sn( zOkt!01^meX5Rj1CVF2|mi?#U2PyX_o|NQ7rzxvnD{`R~7{qT>!{O6x(nO!aGmqatG zS*>;Ohh+{ZRBIknb>oF=A}4ot@OmbqjtmrEC_aSK+$Pe zlSLFU3^gDNzOV}RU`LV>U}?r}mm?Su7jG_Bhjti;T)0le%OWnW*g)Z zh*^jcfS8DexQL9{h>rM(kQj-QNF>E10f^XYzGi0HHi=u;J{kr*0w@#Bzz+1YgcfHD z5n%}BL=d&-Mf=wfScijF!xB8j0^J8nNf?VXxLx$4Zz>jx9auyWQFG<+2M{3(DTs5j z2ycm^i_W-=&=`%89NwI3=|=eYKf5JGgRBic|{c)Fnd7HWkmW7#^Jz<$b8I~($n8%5nx|x?X_?*Dinos-A^;qoRVN z<9VOx8I-OWp@fozD6jy9fdmAx42{4JOh|U9h&fI`b`h}*|Je$pxSA0~6G_0M9XXcY z$)qjHb&k0JG(dU~+HiytqqReH4B8J;0HYQ`oB(o`Fgl)WHxNSLqk)MSSm~w+00tF- zJ4jk&j4GBd3Y~ok69kp#^^p#Kn|4PgqYK%fI*Far?a1g+W<5Wt(L`l|SNtDCx}eMzH3 z3Zw@~19&5s`zR3s01<{D1O=d{CL#a{@vi$=1$RoYwHls0fdmjR0rr}(1hEBRu#^%} za{Sc;dby~p`k-~W5&|FqBG5xCu>c346E=VZdIOoi(**zOqL?EDHZTL`x}AV#0~uNX zxlCUTcrtbn-?FL|znO0hhfqp~Wp^dSUrw*XsIJ0w>TEE}(( z5|{EhqYxpbCcB-++L(jtZ5Z}#%<8chu?$vfiW8BgV;7+R37{6y1SP8&57|_GV*@yV z077t~FYy5p(Kle=1pibctXCkUQd0wMa0WeKtNI!MDG;)rsU}`K z1Abt*AIY8cQ50KX16xoNVDPutx;J~E1MIq?Kp?mhai=?h0TTcQsEY#&U_qcNqUeaP z7y$vcyAnQN1~w2888}ldyQd3Kv~&uss>%{)Fa>rn1)JNv5@7}+K(tVs6AilsvmkmI zAp$AOPq;G+1K|S%sJCfJ5axQS)0>+!s-oYi1{T{7g?qY0AhGbb4ly3Qi!p5Wx=1;H7ih3Kln%7v%&gfEWwVcp%#W zC!C7D%MwWdzyGsav57;uK@kNjFbmh91}agu7C?{!83m4qR1+`*AA6*N*#mqq0cYU2 zaq+xDivv}Ffo4F&WxEqVfMH;ntyMs?KEVPv0kjhl1+O~>wA+>d+?inPqc+e4`+5R&<2Yv0H-SgYaq$Z zdABifJ`3PJZ9Ejp924T3y!$A|tfa+$u&BRUyFh9?>ioVxe8_DOn-oz40k8(uFa=QWx6>-8ht+N>6kCqC_{_)F!N|$(3JCzE|s=Uq2A;BKItV27c+EBqs zNwXb1x7(l%Ak3w?kn**nAy+A49|6K z%l`wQ1_Pj;B)Uq@(7J79c$aGvVmt%(D3k;t1#T+F6tM+D0Gvs%1}AI={XEF>Jf{rs z0spMeI$F7FaM%zX&SUzu2z=DnpwmKW1`zPQ5KR$NunoD)r8*fveq7rn_U@xuK;$12*!1yBX@JOkA19220y{`$)kkpjDl&=kF=SlI)B zoE$BDtiK7wgyFCy-2{znoFJ{gXIvCPz^dJC5eC4}Ey2|gQP$!x5FE@7>|o%_zzJO{ zx69D27MC2`oV%mEHzsXAHK5s10Hrg<49;+;FkQD%fW1zz+CR&^7(vgl``8(Y-v1z3 zP2WwiYwg19tG89)xSe|z$+3=;t4 z?kwK?bOyOg(&(7lpIXqmo1yn(a#U@h0bb)0!P@gn%D_r%ZM6`t?ZSWzvin`gVtx~T zJOER$29+JS1*y7KuFGwfl*4OA*UJ4EVs{2s#j68WCSjcIIRp zc?`dWovq<4zZ4PT{eb8FFurEq%@D?rd{x~DKi_y3*gVJD z7Vu|aDYU{4!zzu)yo@`DH>`V^Pyz5)9R3n3K&uhD;Z1dz{8G(wyGMmafvmJ@Yexu>@a_98Lp#lj|Z1?q!S^ z{P_|%AZUzyLhW#%6QK_*(ZQmiq>Ld0QIG<(%})?ft~uS!IG^0w4DbTT_#h5UKfx2Rggpfi{R9pqSkT}>gb5WIw7_DZgMtX65Nu-M&q9huEOOw{ zM8tq7940=zvQUT)Cl<>LKuNJ6iv!_}}k zMD*m}aYfYZAienau&P}j6hf2Y$b*p4LPi1pp>gr8qc=>l;X?NgY%r+!;QI*%271WC zJp!A8;ZIzx_Gx0>{Dx_(E z`ldorvjB{<ZfdjAro_PNz&qYhkimltnE)Yi zv`H1h2n$+9n@0BJ)J+}rEU775i@X(Al4iv!S7068i9=uitP=X0u9k- z8?0C*XcfV_`Y=xZ(n}r7+Pi zK{om1IJrbQM`>3^Syz{f6=RM$Fyi9?P(@Wpj7kg%Ip%aV4pz@Kfi)NCH}!i!~w@3q{S6yym7}Nk9=~Z`Z@dg=4V{(9NF=X87Qy{~xs0v!|oeA%~0zry9$Uq}h~Z})xe zwcUo~r-5cR01rG0GIj1M{I3cFG{^(81GE(+P=O0%U;`caKnN<(eG{ahig@6c2t;s! z6$F_C*~dW;LM;;-WMBvlvq2N)4|lnvSy66w0H^G4e*#g0@CGP{0@7wIM>t>#efUEl zh9!eT#7P8$=q3UXk$pq-;1QkpJtjs`ic=(E6{&c|6(CKDDdgYG43ahlEd++BkzxGc zR}dtm@gzIsU=rQv#wW&6js`&k8vo{aM?B_HkG`to594Mn{rL_L)lh<|2qFhWB9c5O zpAaUo7;?yrw~#@ZiZ8w<0NM}&1tq2yf2W=G~*eciNi)}Aq4W2=Q-_pPkiQ6pQ#&F z+P>(`gSbp(2 zq$X9OYb2#oo%&Q?(X^lVf@)Q*dR46MF(3dT`2+<70Q~?g00000Xavv#00{p8`w1LK zuwXwm1I-v*$WYCeJqaI5l*rKF#61uzYTU@NBSSwJLHg17(Bnsw1VN%)$+D$MiYY_N zoH^6wK$;aV>ZHkYr_YH6F~$T#)Z><*M3X9A%2eslrcj}FTxv7o&#OI)=Db;wtIMM~ z!B!nhwyfE+8^xks`!uUtk#FM)WgB*6TC8(zc3r5Ju3xKo!3dn|kf}wgeehmaoXQp1%@z9X#@Iq!9@gRB>IUvdxah^( zjy?YF@%HJL%lF-0@?+!n<=V$hn{?i@wDsf_S30#d-+?{FSKorHCCD6uo$)3UUx%4T zR(y6Dhv9p@-Sk>N>}i*wbD*VUTX)lCH7MYWfM!L79hUxh?B7L|a z_aAvecIoDoO`-`Rjc+PgUuZ_%1|mt+p@h(3c{=4`S#;Xz21+$57iXImwdrViJwD1| zn0Z=R=a?jYR%n@&{)nZM3Hl}JhXh_q)1jT#Rp)0mV*2T%lE(jfsjQbmHYKbAc-f1-R)la^t6BT8(6W-uZqGgk<*$Z22d(wY{A&GM)nAFM z^1sFwE9aaUw`*~}!=_9q%Qt)dv&%a7D-a*fZkF}deE0v|x89?+?daNaOT4$=h$jy7 zuZrXS_Tf33XerNVi?-UID5ltF*(rJRyxO? z#~p8@W9P1W;8Z6@`rlPKUeNDDpDsMF#KX>d-g*xt`gw~-$kxurDT7u!b@dADRDZRGT=(=pcJ(pAt8>rrvH_FhA zBYfZUHUh#n;_;6o45J#Y$VWg9kRXrU_5jh@_xM!%^GC6??WB6%3e9a3_OxXdLXKbXm0-r<*(jAbZc z`A1^zvTkw|A@k;!OjklsYredpCX@CNLBcVOYZ+w(S)$8mVsVq+?4}~cNwGc(@SHmI zK|0CV$YX9YQje4$3rSc@bv|;I)4b#fl?4Af@J1m^kJ>UWl(KdK)9I-DBMw) zvRs5H%~W%bNiAtiYueF`de5bAD61BK`Ou&8lA~#bD_Jdi$GEbyt`N?T&V-CgH-o66kew)UPU z-R$(HYhLP>m%bP^OHN^WN$(c*xMECaP&-mx{BqZ58(6Z^J#b7@RbRU@ z#J|GK=U=r;&<3f7tI`pOLlWvllTs4ExSc0@Pix)nUU)nVelUGM7-JdRIJDZkv5xUe z+vcv-!OrdPj+J`f#WEJMVofk|H_YF+c5}2w9v&JWTV&LJH^-&@ah4nD*cwY1EjYgL zkjETXFPquS;AAj(4a{N-Yft|pVOX%3$voyOhMC4+zV4Z~jNd#*7bQ+L@&?>Nl{wzQ_{%-SJ)bkpHgFnl4`Bt*&r=`P%2*#2C+@&b6+0&FfzK`q#h?wy=kN>VAZQz;RBtvOx`;WjmYL&)#*A z=h&R7 zMmE0d&1{c28{GR=w~;m-@PgOj;0VWo!VO+*V>A5W5SKHYBTn&%v-;OyUbc|wU2rQO znUII=8df)w9pF;tEDHd8K!m^lm$*qP&hnHi{5LK)xDr~P?1j+$<~YxJ!SP%WW!pK< zeAM_rfS&GtPh8VHH^|Iqo&u(amg)NDH-lqN^=HG<=K|5W)`gD9s<*o;$yS2c$4>TC zRUyt*0DHm_?(cOEo$W{Wy4=@Jcb6w-?sdmIg}FX;qHo-^+DTYaOuiWg7~TsS*Z>A7 z!1%^H{_%=;dt@@O0mLVM-6~Ll!0$ltfxnX68~^yoPrmXAqWOWyUir|s{aI*#dy`O~ z`WSfIS5V~k5_tdn-rs%yRbKFY@zW9f;HMP&$X(04F9!XeStdatMW2NEcf8hk&?-f!F|pScAn< zh=`boinxf3*oZm*xQ9WghG*!AMA(OK#DWX4f|ke-f;fqu_=%v%gKo%(oT!5AH-0oo zV*E5HCO962;Dw_Yhntufl=z7KpoI%ki=l{tCNK%T_=~<6jKDaI!dQ&Nc#OuFjL5i* z%Giv|_>9gNjnFuaz6gM`=z+v|jfeP#27!KosEy#5iJ`a>Rag<TY?kODc71X+*3nQK z1l}5CgSP2-Vnzbf^F>p^Psmjlp=6+o*}R$PpK5luY@85vYf^_ySMqe?KUW zH;9oWz>fXYAQU5yP5G5z8J07tlg-$TIk}T)nU-p~ldedVJt>y;af(q{esEcrxk!?+ zh?F1*gY$Tmb9s`4xRnK^EmLThhS`1O7z2k1jxo@WWDo?Ew-97m3mlk}KDn4+DT~a9 znVcDqDhM2(iIcZ;7ZsBO(SVLi*_o<&770*>HZg~-iH1Yzmb6)$wt1UtnVY(ao4lEp zWS|8RumS>61e1A|lnH`GxtdHFng+lJcaR6l8J$tN8G)IU!2y`|W;FDoEvwL%>gbNr z8J^_-=z~;X0%O5`t=SPju$%1Jp6>ac@EM=-IiK`dpZ2MnL68OInUfI^1lVYtKpBB( zIh;Bvo?{7>0+DtGs+)q0^Ws#@nc>>OgnzTxz zi>H+uv7QAg5Hz5Zt{JV}cMCC~0tBFlQYUWf_XuZkpLSJ z2hS?7LTay4$%)vy5DuH38cRo=*RI$YtPCK0IFJS{sspOn5n`|cknjKmpaXgTK&2xK zLC4t-N1z6C(4Ynpra9Y^1$zq#$^a$M1({c#uvid=3I!a>1CcSS4m+Hc$XPISD%Lh` zoAC_P@U>w3wWs;4vpTeY+NXHwhB!$BCCaB}TQONM0BBICYKaGU;H{0RZbFa+!wCUW zyAoKy2L^xyI-s9y`L^29s1VtWh}(TdO9Hu?vccL9Ov{DldW$N61Tip&Q9HE*QMC}e zu=+%?mE$Ow<#8;b1(sk5G9VDkke35N4M1A9jjNogIJ=Q3tfpGK5Ynhr`nyI8u_2HG zJrD#+&;wIY1)zGb1VI1=;h~{Q1!#~5Tl%Q#iUZ2a14lrXysK)SIy@@>@UY!0c_yHy zipjGV@B}MRp8vXzI|-~ii?B9905uT4M7RP3fPTa(5Ni6MyIV^S5K z5DkqGlFs^+v^&0bxsyyfs0GosF$%#8g0$u+zhc0@p!&HUQ3Nz#umhn4I?#Ixiox}< z0Sv*bX{*8{D+g1`zcd`GIHArF*53G(0r>fE9eUDzpY)f&i?y_wko$k>G~&z7CaNcb1BDI+aW zw&W}UA=VG_KnHZ-1gwjvqZrybOW3rH*hid~NqF15EtA}Mo&OtE#QOxQ{Lx%PUVRDjIa6RMETMW=(P0zj1qYL=Zr1^j{fM79_f-k>6BjSJ6;t( zVCj%vc*IHOp8n~e9_qh+bl~I?2rSNWFcA6h4)9%89UzCPvE9gRUr=+G#IbAIgZH|zB5eZBg|zuxGY9_`XT?Ez_i>nZBkp6%LR;$}{C zXWnGi7t)WK0^yJX)j(=`yt>Lx=g{8n?*8uZ9`Ew*>>XW@doJ(LKAc_(jKeMn{{HU| z+ksY$vAhA)73kyQDc29#y%3-8N}Zew5AeJHz>5Vhpfb}zkDm2-|Msd~EM3p%1C8~(arv7bgD_C`bZMQpN$_W1fuLXPl1cfTKlzu> z(F>XRd7p=UKl`+w?JsuwU zN01>!jwD&qeOr<`hTGc8|m|3-Mg*oI_K`IEZR^|F~>R7Z?# zrMeYs!mumP+8tcjZcM^_o8o2s(GD63TgKoXtQV5~X|s^dzn& z9^y^g)vZ~+iSimg+okRQ-nh4E4+hNJAmPRf*+xuR-1u?i$(1i>-rRU_=vmXSjM9^6 zA?(*BBgK7KY;?B4ht!Rp)vNBrOTiWk4Bje(-Dqzo(rZ3F_o-a(hi9zVKiS6G6Rx(` z^pgucrRY;oJp_v=Z>!0ES}h^WD7@jq%0lx@L(opk?iUah{+-0fv2D>nsQ_V z3N8roL+yaVFRf$hDljI&z@jTZ9F;upH!uq#gvz050~*puf`MBw?UJZ3uUe(Y@yxoDT83x{OtETL z3L*>?!29ai^b%4hnR?Uw(JEVHs33_M6t1f$8f7BFkR<4RYS@Z-40bk|=;8!Ei_2)n zC%~Xv%)lrji9`mi>U5NW6@+o%2WAIb1(;H#-Sf{OF-3@&9|UP+3JWuPRh34zQOLA+ zVMyA7f=E^Wb+ge{jlp@sc|f&@wWMkr3tLzw>nx$!X0e2EmY^29 zPOPALtCmZVS8jCH+R?-{{BXn*SA0n)om|}St`J&ba(0P(H{Sh%C`g@QY81@#yY1VU zV3hIA7lQKEe6gT#lDUAVU+ABOj9J$ptc@0vbG_ za#5>=@(R@tb>zZ346y(el7Is~gn>#*5P%OR5Ck3gAt6E7fff#ckSI(sS&V^30R;B8 zo`gdZ>R?Y>7E%d@aH1Inp+hBzQHDxTq9Cm>L_s1^jeH?wfV|R;Eh0we+1IEew;%gtVoFZgn^E8yds3e zqlF5!1(`UstP#Gjj4Z0AnS^w2Xxd;&9Ja9yZE!-7$5du8vzE((EW<+#;X@QUz%{@B zcx({}!2~1dv&4R^Lm{P1NIg`E5OYQgZ!94t0z%=7bG))F=d@cwBG!*kAVe6fs7JI$ zDU5X7tOcuhMHT9akbD*d9aW&0ESkVU6`svdg_~hTEqYOmHt9)2@&P0uQIHgb0S9l< z#PhO30}5n~h-xdwDZ+6IP0(&3)T2^D-T+dN3SbFtLWmAJil~}=u^>~RfkK|Z2Y(4w zWdoa0LP|OnGZw@S39-W>6%xr-IDsLRkb+eeQVn)Ufes9DSTiP22>={Y56xT&T3eA2 zhsBj4#OUKfLb=Df*kY{xkU~Pdst~#&q#7gZVI-&84~C+VFFP6oLgGL?PDH~02(ujB zD;)|4Rv{CEQmON;z~uVlSem9T?yh~he(`eYkY%RWtz5(WjL)M z+rVx78X-)-Dx`i{;cadg5+cxS1Cua;z!Xp>wG@pq9_EP0B1R!xgpd;<{A9&JCy-ek zu%e&{5v>Dm23myll_3jV2|6;H-B+wc7_VRjI%E+FA*>|6>dG$SA|Fc0DQDXC2QJ`MmT~JNd|KnnA{JYlsU?2F38cOFvpd!<8~D&fE||t z=dB{-tqDd59in-!T{8Q7+?vg z)7~{r_#h!?(0fr0RaY8uyJqaw31}ts$@I-fyPB1&t>AK)13io6HDeabl|a-5+YBQJ z!H%{l1JI}NGCVSo4$DB96y)Y)^-7N=PTw*ePUhrY>j14?MM0oCzN`WY5CGZ+&O&U) z?v?aS79m{aN-!O72V~X)eM`#v#13BSb$pfLj>_@O!x@{6AkLS00}!yU9!gbuL(tlZ(oLT@N;Gzr^fGV)Lt)Ky#TPnqJ1a&ZlBBKflObB+sBOyquO-Zn+ zBLY3BD?Mgpy2@H=}0zj}BDS!hLqx<2uGg?K7H1w*A!5U-Wc#d69%oDjc+ zDg*Ul1?P#kGSDuyqda6(2w7qU>Z>&9TY!WJ1$Og=R2-#(V1@kRIQ?j_`};<43`Yu4 zsiDY-@&G^q6e-5gymEkrU;ou++d0SYJj6;EQl_vBRv>8tm74~l7ULdNFOA# zG?4)yJR~Y}1WBTUDagV)+A1(?B<|bBaf2i}NCGazIzy`%M>{ii zKr5^ho-}Mg?&uNplAl=;jx8d!gjxs((kBTBg&BB-C@`mU$~0lhDd-lALPPei#1uJH3@;0Uvh!OOtgepgm@?j zZ-R?gB&B+&r-cf{gm9;AbT7MTf$TCU{=%nKfCKGHC|IhzRRBcgL(A)v0Bw9XIGC@6 zqr6y3sCqcff(V6l+cY7NC0hu@Dlkj`${QUvqpSj4Kyge?<-EU!J1+lQ2$jo<0KBk% z2r1S`3TuQ4b!Y~jh$+NOG%GMM&Y_eoI+Wc(flLsAb*YIrl*YVL0Sm|kE@Fb0%YYsL zf(wW}fuxcin3E@12q97|ejy#aL5e3p0+?z+swe{^FoICCiNRS4Gou0y;JVxiwf3k9 z1aJZ~+Z`|>kAm3HGElz|<(2kuP&x}yOw061$H8HfZ! zI8O%UGlR%N2AD%lIUYwMlthz?O^XB_NS<*!FT3~vPaqzaa{%2rltWW&D*{_wA(xNCKdG7*;?q z!owF?Akr%A!|MZ~@8cU`lz^N}F<1qv3I$6%4AoNw1Z)#8BJeb#M;xdFYHbW!NCaS@1x;uKc2Ea=U?Tz=lGg}=$ow2SS($Ss zPa|cD4p4##Py%GhPn}{d@>Ga)HKGAs9VA*1BU7;Cp_qT|n3+MIL!%0t{0)bp7*Rk~ zFq4mGkxC5x#6}_lDX6Rez(`o9XrxD@B?}sh)alGQ1XDzXphi)c6*4bHI4D|@mIXMc zc_Y4o5Do$>9|8p*CP~y`>kysYSw8#|+3{HSm=-9t+~whw#B~U{hyoVi7zC+Z^uQLQ zn5N@$7t8n`U}C-h#H86($h8(g6}r?~irSDzRaDx;IRIJ1w~5}!y^jJz)%Zjd3X00< zMO|5K7VLSAb&WiGnZLFzU-N~bxBWkftJb>d=V65TbJMQ2S36StXTNLY!vqg;hFyQYc z6GXn<^Ic>{2FLU@l00~^8kl6fXahPRhke+G&DkUqS|BxSpYpY00H$FrRvY}t;X<|# z-|-bO9_3N~SW?bVkIAM0uBc4J3p~DMJKp15&W@tp1;rVZ6z)cjK&9w2}uNCFjbVw`JagOEs9PUBeioO3p3bzWz6hGkL~ zXF7chYvp5l&gI16-rERfeAbrzg=c^MXN!7d#z+B-yynIjnK%GTs?cD7hTL-A-*jeY ziJoZxik4`1reQj5XeFs<5xM7l)o8|P9FeAGk}heJK53NR2x~@S@USMOQCpCX$TB{n zR<3B9zG3r_#BXQ=GK5C>+YNd7#x|jonxT%%!$C%6JRUig* zKnG@^gf_rtqV5lJe(3y(=$syFvYzORcHpj#p`We{!~qh3OKZ4}Yq^dNfzAr2wyA>l z3rM`fP}vd?nd`3bnzBw#VTM%v&EF*DX}}g2w$@`jZfi4M?8Y!^%C2n7zHH3SY|Y+m z&hBi_{%p_=ZP6ZW(!T7npjNuw3IkZ})qV+ISO{uBhuEg$5Rq*Ahykz2ZQK?iwczdl z-5vOB& zg%a7O?GlOS=B4iaN$-pDnm#r-_6Fx}N$*&Rze|yCRcM#@#&7$EZ|+`Xzg`u|=x+fZ zaF9OlsXp+W@>`gAEGlS#&Ik%|MB$98XZJ4eD&Fsv0`5oP79zs%i{QlAOCS64{~oYam2y{BY&|W zmy2sH0vCVra6Zh#xgU%YZ2bmq`Wu2E@IZ!65*&vYk|_!{*6}V0SM3mTGe2|xG*9z+ zrmzZAl40`Vtv7%WV{ALLr_~sFi;~1hG zp#XwyoT;2JIrE0{U!HGD-*sN^_5L<-cddfxe$d(aPk z(dTY&=mrIeh+e>`vwxfl7{O0mfG-%q2bco9HyoPD0>n+2p7(qI6Pk`}4qg~ImLnmm zc8B^A^m?l-_o4xF^_-y!(1J`@ftSdH(XW2%zkYG<2A_Fwp@@!J-~ci3w_#qK4ft*i z!}N=PAuTcf9e@Gx4~`EY00ZbC>7au5P7+VVQd|jlh6jj#0<#D-A@Cr=gbEijZ0Jzo z7a%L-a0pU`#>0#nH*)Og@gvBPB1e)eY4Rk>lqy%UZ0YhP%$PD~(mV-o+)a3h3U+Dm z;^zyM4?=!f@WWtDksU5HY1*(yQiT-`W)k?JCXEY^NWka{BLmAIR5%RKA@Bl27!5g; zK-y2jqo^8n6dl4;$C57!2gvQ~_b=eUf(H{WZ1^zZ#DLBJjlP?E6HjwzbYlboz${rdYC6{@spBfAue!6-~^z`+VFtE?i(3GE8$Yq1ck8|=MY zvOC{Kz{vYknlWgi2{0F@dos!?tGqJHExY{xGR!f{JTuKT+k7+5IqSSL&prG6v&#p0 z;=xl1Huo*93DwakOX#4JPd=0|?27|N2T3u!%vwC`yIs(d-^b8uM9VO=98@+gX(P*H z7i_R0u(CkQJvZHT+kH3QdF#D5-+lZ2x7`Ri43<@n2((*|gKjWI6-qdc2ObRNQAbPp z(4&wAGT<2xLfhf;sRE(LeXfh5i`fq#oA|;pyQY`iBrwAWL`bpsYVw4R|LVRw@4fr3 zJ5rk@_(2j+7~YQ~G5C439EjGSH01})G5JaPIE~ITr&$6qDFqZPp)Wxkln#_pvc^+; zt_zM{`rtui^{)w*J^vw_)Ii8P<#_J@*}YU8wB7FlD8K;{uz(b*%vAc3gtN2`Im#jw z(rhJ$$t^7fjG~@Op3w-zC96Wh6UZpc))0EY;%o?!MLg({41uhIbF-73Lf}CUdkBLe z>#&DH-XV}w)WZ|?z(Nkh1v>5>q!{%A91@eL#3eGZiB5bX6r(7`ohgC>A5g>}fS`gM zY_W?RAi@`eqeTXQaR-zUL{#R5wL(cyQ50O-1rK(THc$c`%7}v~0`{WZfiEGebKya9 zp%5Gj1Qe3#gbJyakn3Oq6qtaAA_PK@bO@413y}pV>>&$Abgl&c8={#6q7IU&ZHlHm zB`Q;?%2l$mm9G3-5nh217Ko4kDgo$0@n{)^T`qu@MCgke`xBZry0L<`LdiASpa)Cj zk%*!KpO*et1bbj2A?rw?J+31!Ow?m_sUW047=fXF%rFrLp}^_{vWaz6avh+6VM5}O zim#!qWD3AQ2htQyxV^HU{`@CE11ivg60~j-2m%jQP&|P+AqfP?gb0e)Pz0!xp#dOR zeQ<=i=FzH{Z#1$ zxxj=u9+pWd9i)V)TgN#2!O0!+=mlK>CF{sAGWis=s#d)!R)t5%BC_! zAf7tE3Ra8uvbJXBWdSrJ0oJJ1KWs$^8#_8dxca9NaTwdgKqZTV0J0zEpod=_QV&Ly z;)Z9#Z0C505O6AFh2cEH5Q~V>L#X2v(;#iySgYRkvbVkNt(XuI;x;xgbO{4MKtf|{ z--sfhq`z4!*oG-wH_k*8s4`g&DqAK?)l-~5wa4o00#$mZv>%c&muE_Awb7wTO=W5u zo8Bwp5tF#Y{BrI8SRFwFUM2yzyeyn;cNyOs{q~$3bzU)FvIi| z03&Z!k`stAVIqaxwtzn~u8_tW2;TvztqZ*PbNT2L%t3GEW7{(Adk)d8E;G8(j()Up zTtjG+)i_4~Sx9h`mXvGE!UC>wK%I@mx@2vw)RP9)K|bU$Qg6jwr_NTXKLV(CLAutq zzBR60@*+ydOE4wcqksb=4@xj&nS@f+tkF1OEAJVq%RXJMqb==eQ~M?Bs-3Sdy-~u* z;~K=s4iJ$4o$O^f+dN{+SdL7+plY+b-R^$(m{_!{)>Ya~+HR|x0YeUX$fFIB=!I*< zy){w2ZgmE)aG4BFGKD<0Vy132ydy60iB~%YczsLZz6P3KWBOa*5)3Qiuw#KgB5kMG zL@5ela7MgtJG_F;q#%-rlRufm5G!P^@=EcY^StNl1$YJk@d-dcX%!nVCzuO#Z{RZS z<8tBVK_ao^Po_#sMK}mOy3lY~u)ImILr5-Qw`zsJ0uyjy=7c-JN1wC3?QSPv3^Wjg zR|H`d!?2>zr9z;=aD1apcREeNVN^=AK?)-`cTIFa0aBG5bH4b5yb_Xgh9K4+p;$*O zzGjL4G(a^DouF(w-!A&mlU`py-$W8*fdPlb+c$(w`xaMNO?$xCDdF3<2eSu-u(EhoX7T@eKnZ*h7+8);G-)D69kRV2M{~kDPRZF^pXWCZQ58p#vfR zR6;3~MB!2vRD}YmlV~B{48~rtr4f@b$@y3s3q}F|DA0jG92h>CFKAX##X==9;FGYL zAcz7Il$(b!p&i~K9%kWu5Xy?x5(UIqTX8@P>KtuoVVeO)YdDL1=o$h|L=!O77w}gi zzTdJWpD-j1D~6*uj$_3j6hl1066BH;5N*=w&7aoqh0pA&R+(#@82BAbdh=VrN)jRT;6gf*rg2c0s zBv1zB1m1@`I-p``%C>ogOg;}wr~(M;r1u4e$p|G?R;5r@N< zWo5MpLhNmeUM?nMPM}>}RD`r;M!aQ8V9(*H$z5HGt2HKPb|&~4%R*HDk%RzdR|@7z zPy_r3L>xqA)yzHwwe*&!7$!kq>_Me+3CcOr(NoS_b8{1F3=ksCXQgYW`%8MyZqz z&@mbsU^GtSAVhf%hK!CBo9UWzk`C(JsQannQC{birm33BM0eUBct*u|qQM*z#y;?a zCiIxQbSRB9$EFBpy_G4qpy`?pDxr3YfGCKW`o&cs4~u#WU~GXIFqA4Z6OC%kho%J9 zIMBm=XWRtp5iMGwhN_ef$S09#VW^Ax>E}{ZsH3)OQdp4Q{o0qdW-6v9y?E-Yah0y_ zDzEmcul}klvE-oPYM9t!7_I90$)B=Dg%bDxG%y1*Oar*R7U%#^mqc23_ta zm=Y_OY*FDLD~o!Z67)q4tbrduYdI9=L0G{CC=Wb}9WqmJgC6|41}MZpSX}gVZukg^cumro}iHBzGkd~#+?et>r_4)REDg` zjx70sNUEyp`I)2hAflhq(^IY8#12XgRV;?_orG#E&SvKyJ^@A?j`o}engMOl0&PtQ zEz!OO%91O2cGOI~k)n`6F=WT^P-n~z;RCD#3S9@;V8ST4f+t+;aOSMoV&{s=mf2dt z*?yInc>&=}Xwt4<1Z*kf)QU`qr=OJ%+tw%Ybff9L3UjGcCURX%2}C{Q0ww~J>5Q%7 z!e#`ZfkJUX2t?vRL~bM=0eDSrW~ko0ayS5yr^8!L?qbXL(CIZUFz%(+(X0^BcQ`#t<(-Kl?2Byp`tJ5CPea1 zF8dxY7U*qZXmCZysiAyuUl2}oC0eCU3rH&en=>vJ(QQJ*^+PJK0w#C@lmz6B7?@GY zuoe#_4KD=yCPX=Cfh_@tz?SjAQouxPXJ=nCLK*@_>j%;ICW|L)5xLJ>LNCOOoBocow7EW1e!ixwU!Z6riNM$Q3UvnO+G8zm-4!5rbe{uX~F6oXl zIghg~&&MFZLNN<5G6GKszl&!mJ})5`Ry1TUbiY$b#n=CZ0$8D8f$N$0nOPdJ5FxP5Pc2PES; z?eHJC>$3GTZbREhnCpNGF-%}^C(ZYg{?4U(HiVxvjO(RsYt1D|lt=Piz3p~yKh9t9 zuuo7K>)bVIug*_(LM|l#aEvE8XU;f)_?h68u|tT$7-n0k^uu?jbr1K1KCjjZV55?M z`C>BpnK*euR1M~s6>l+KrR4)}Zv+mo#5G_;oSP74Mw4nSw~&Lmo?qpqJc>wD8je@_ zJG41qT*E=MtDpTi*W9zeELj%>gCXs?q*o=Aw+G*b>6#OIpx*o%Y6Dp0R3NF>THmjt3~ z`Jyv=zkErqH@i66ws2T#g8(~27;H!syKkFB3BUMDL_-36yFhrmxPLpjkGr{-dvct6 zxv#sppU6h2JGm?W1iEuXG`zdK$9uR#K>|EPy)#6=vpc-6`~L`hKkU1egnLF9e8DUH zy?4&NlRF9Ed%gpFz*D@%S3JgFyvAod$8WsHcRa{{yvT<<$&b9rmpsa!yvnCM%dfo4 zw>-?hyv)Zu&Aa@|MWl!GI{xu#y%s|<48kb;_HPenFh2ygXQ@Z5!C5#qDYpbT^m|Hx zgVaww)mOdMUp>}mz1DAi)l20;L<2Z91lWuF(?9(~d;`?edqRZ0PacHSdpp~IJxZi~ zNW}d~*uA`e1lR99-}k-W|2^ObzTgi&;TOK)A3owIzTz)F<2SzJKR)C$em%Qd5ujd& zcfkTQ?m{j9$9KrPF39qnV!3YD|Z17n_$crsRzL$a7UMv01P zDmDcF=!>Hq6EaK^K7AD5BWI7XW-V<;&(j_=FiGhr_7;JbV2a6~L zX+j7U+pkDQ3=?`JrBEY84=zeXVWg7OY{w-k9;l!)MMw#ZJUlWGl5yhS5;Ue<$Vm_h zZVC(p4;GQe@d_mb@dQEGyI(C)LTLOY$l@mr12h;Ec@#tmkHfNO*e+pJvJfC0Rcl;M zfVjfHN;oL3`yPIL`Sa=5w|^ghe*Gtl4*v7UvmbugkH4id`s9>gB>4y`f}{e8DvZDz zsR$~l&_omq!Lkm%wg_tPhu?TmVSo&VdMT$AZzGT+wgef%xsBN3udiPQtEh$rhC;&s z2OB2HV~Nuy2v7$d<_eLs9r##luq23^pgRn3ATJ{^p0fdk7B>1Z02XRfAx7B*SpuV5 z%4A4~34;0%f)1z%Gr2eW`OyXzf`XvUBduIdj3N6eaRwiu>*tIgWfR2*jLv|-04ReP z)T8p?lmG&Zq8KnaI9c43(@s786x2{f9n~aXbP`Y~Oi2Z8sY!tGs0!jviV(M}L}I~~ zBw7iu!Uo=xRJJU{`#^-Xh$2-creLJ0)n?suP{-x4j6o=jh_Ffm&m^pXJQmsv>W7M? z+p{AMtSSRb2L}^SMk;0?U?>=P6QQXgzL?eoQA9|WO%9f0qB zjM0AJp}UVcNMQ!9b&%o!3uHLM-`q616l&o(hyns9oPZzz0VA%l78st^wx22PMnED4 z>WJ0B0nm%eNj^ub66zG1_^|-qlXEs};)$Oc`Q(*fp84k8Dhhg{D%gPkdIwJJ*+7iA zA!wX;hPGXRs3hdDii0P02(sxvwLBULK_QWB zg4a4H)Ji-sxLu@V6{iMn&MD97%<%l;CEB%M09G+VP;^iMs|k*5LYTp@>Sni02q=I3 z(2>?Y^nl3431VlmT6Nek10^)UHXlF@oOHCg3Z!WYmqI}kptb`Q8Si~bRN@ku*hJ(- zPerTwPt1Ily?%@X9>ECT7V-0g>hPs5EOcT?;@6V(wW>f4tKtzq#>O_X@P96OQU5~b zEW$SxZ~q5|_DbSw+@G3tW7L zRiMhGseqA)Ae`fV1QJ5Fh6hGnqOWRpL1j~*x5}R(tB=_%o;JD3&1ZfSoZ%GbI0>nd zRRF`6xX@WBL*+9u;i4+#yN{em5El=Hu`jnYD?!$wHj)#e303Gq zzZry8Fdzv_;K4(ZU^q_&Q%n*{CW|ESC=bf7iu#P^N}eT3SEsf=z7(c0 zmFdh>@P{D0!V8i4PyyI^(c{Gvd`bvke6GO^qqac`4?V{Jc%b>yM(&f4D-CEOr8-lq zUKOiZ4d(?Y;0YioVrPZ9fMSk?Nv8?~X`h_W8jh-?u!w>N?YjvbUGPn)nhyqy$VDD) zDb;TN6|jL7>|hC7Si>F`v58geVj0_5$37Oak(KOZDO*{~UKWYZ@oFN%1<&Duq^$D^ zDTC@mhgr;m4y>q9uj)CNqeRp=@+wO$?~0RN^dc1mVMGpexlPRe7P!F`?r@1)T;m=W zxye=Ta)-O2Gu;*!FOaTFYo04j>-WR|5HLMrA@K8*BV5}NKfd@(d)*|pi7MtMuNj+V;x=F~Wc(yIf z0I=KF^pa$t&(-gSIox3ne;C9e7V(Hl%uP>hViPL>L>DsB91Q=qBx;r4Lpl2sD(s~N z7O1GEnt9;xw$Hqabk;weH4Il^A{RI=@sgR`WG6ov%2AfGem@|KB*+4+4sflE2nu1x z!ekCddBA}zb(YTh7|nhB!llea+Y7_bx5Kc4F?12#Dc>2-dDiou`P}Cw6U3{E2y_<) zj1mrHfWR7NEST#;4+}6;yk|`Fq??rifEARKL$+hluc_9Kig{Q!W77tZ&xe4EKb$^i88ul`^ zYEgB^KOXXtA15{UD1l^L9`niYh$}XMcCvfE^Pd-e+rgd@NyHr^nOFVlS>O6(@Ivpd zI_XA`K)X#b*hPlqw5V&#uwWZ_mXa6#@QGji_fbCg{m?u~M$!DzbA$j(K(xON7!f@| zTmcJ=NaEA3*Z%5rary3V`38mPNbUEthFr6@;ugnrR%;90EgK*H@t6PnRVtU%(LL*0 z&p$@GP7t%7BNk#I3j**QkfHf9LhUf390(#9I?e0!FA*3a|0FO1>2511@a`^<0u`Xn zRN;_l&-Uh{4LE|eh_2{(PwCW8_Wa1p|LD&JUl0ak&?d5`3kJakO#uf@!4(F9BMi_7 zk-->#&k#|w5ac=y`#J&FAfLs z1`E**+t3hi@DLa5h&aV7%%cm>%l^=8)GqG3SV$eZApBVAyU@@RKM@p*FV5156l0Go z$N&wnKovPj6}5m1o*)7UfDKep)>3f=&_Mdwj+4GZ;S|6Z8Ltz%j9D1T5|{2d|ByfvG=brMkMFwi!9o!n!%-YfO$|*j<@Qbix_|;u zj2&0Q?P6{nH)j)`3mtV%y$*rvhS8tuLT4&sX*OoTsD*V*Y7(W9>WD`Z)FB+Q5uL`- zAs-SV!4Ua6f)H)+4VTarPN5D{Vh{V_2#sM61yK+Yaru<*21haxZLlPJEI#_N1a!tc zPUUG7Op zCl!q-^HMMO(w0`s>sG4^{~~}DZLt+gFBLfn7FPo!Hev0ALG1pb8OsDPIRrAdYcjWs z5i|iV_s%6AZv5!yCEL<1N7F6s$s7-?E`3iDrXlh8(luWbHkC)=RBrDMVY_^>0^c$M zF*5>nO6#_Z|8f&9`KdN_p$PDiGe-hB@&;D!M|0w(9|uF)6rm$-Z2bsoejLxb!l5Up zEBRs*Ji}8wKV?NW5p|dm8I$qokk15f@-)rS1NA69v-2q$C2#ToKgk8Cp3@&i(*gKE z4YJ@btuxf3kvN6_pz(h5oH-u_J|DZFLN+#^^Cir~sBj{2)Wg{@Bfg#cIL3fl#d-Q6~ap5k&yM}Hr ziZtbr%^QJq;og%;0jeZwKn(J;MCU+C9|$+Zq#rTmww%EkZt)MW;1iA#?GT6pD;gPoZm1_Y_Z`rM<>yIZHGupp<+PsA0n8 z1biU}MoE;Ij`-flF?4iEvvEz44o)*wQ+ss%yfeCnz!O$L7KFhQPH{0|F%}o#4~~RF z=O{^=6jt{rMpvRirUDNR)ih$#m(cK_YRy0~byI^?SRZr+UtkCf1I3Px6vu5nKQvaE zv_1y4_Dn;%|ERSsBV|qEuUAEM1&7sJzqL*EDi_3+5D5_@I&uzeFc6ipBTNA!1`%H4 zRbJ;+UhCpPYE@bjs9K$|+ZxqT0rK}E6^?!pTnpAKS2dgJ0Tc40TCo&dq0n) z(i=KL8dw*7T^Ds*w|duieOGsOkGCcUHFuq{8G^uf_2C}$w|DhH9hlWUg?D)QqXL3J z3nBueN-23c5zgMWdCMbZPaqDamx3$U_}Vvq`(bkl;&VkeBR*Grt+FF*wjZQn5jx?7 z|F@TQ+qZf%SiR%}Op?Q6mPH*fLVt~FfA?Wbd(AFL^T}5&*ocqV@jT5K zN>2xoL19rZ7^E_aBi0?Jc#2`60Wl(rF`|4oqI9oP2VEfu#rPDK*cg;pj6IDHcQ6?e z;TX5^Jz`iO%A^_aVI%Y*IAvgm1z0^HEx}g)efg2im5aAG%=~eMsGLT$A6P|!~`xlQhVkh)?k9~_J z*r|lbbAbVQE}6HGT`Cd?0(uo0n1h*|fTj@ER2z@^5csYb`mN<21r=`&nq^HP{}RHP zpWuOoQ4`cu{FqJ?#3Y%&`BhUYj;$qCexMoD!FMs@cl)80y~2xr;#d1vC15cNM4&RL ztGa}Ec?nq(fh7*)VHx7!mxY<23);fo$sQf(PY9C>goPl`U@%ct7U_9b<&HLmaTCFr z?=)Jv+|!h0*l5{79o88m?t!GYOjSJ6U|RM(L_QJ}WumKo1yERt=h` zdm51#)fdk4Eb*}zF3$=$ZxfcU?Tk7ZWQ`X9t*Z#a0A1nrx?t;o;SlOftAQcwvYM;E z`YZ<{sDWCeD;gzER3u{f8!x7gLqZgAuLx553sGuWgchIk15g=wc|%6S|Kea3d>XI= zyOFq}7z*34i<%5buk)Uu^hj?V7aPS$@AI55sSn$-tNO4R!LW0o7y#`PG+VQW)XrD} zt(#Mhbr&NvfgL~sLoQ;FsVQ0HRzLC@mqAN2cbKw&3n-Oe6vw@LK3Bnu9VIICGsH~JZZ8v1o_O#vB zQnOJV8r)J5Z+YdJyklCuS|BK*s1t!Ws=DdDKODsI>c1^%SxdYg{}m3x{Pj-_(mfTR ztTjStf-0y8cS;}RNpLlg9QOh+1j03eyJg51;~BQcsJuOn1)0XfLtM$19DaJ~#PdzX zqkQKsF@RTGNzrkD5lBUEw?1(kq~F#O96T$=ygM_b8S&g3{^4JK$s=BQ&0`}FtvXy9-E;oS_{yeF!ejB1cr{bG zKjPqX=s6s36aKN-T^{C}{=H>>;q1<)P<^WO9C&5^+h#%?bfK_E)&+nd6Kq53J|P%# zftX@>M4evkc^m3=bU>lr-l5gaRr)|x0@j0`5!3;b|4onJ-I?(+K-K{GiQI=-@`Xu6 zBFPk`38Fpc*WU5lyY1cHQc6JsyZ{md?4#oTJ+Gebqkf*2J0rs39wgx&wqD@Sf;#41 zW|TwYt_GDv!Wa_&PSO4GYhSP<|1mZ~6*D3PTJE8@4Lh5Z^O-$A9M>%Mz9X`6dS=Z; zsAw*MsU}hoe!8Fr%s|Lh-}bW~iE;mtw)s@8ARgzq<~2Xn=brfIX&Kd_8`R+*w&(I0 z|E{}8oCAqG2;cP&A1hMe`mrC$0m6j9fdmU0Jcux%!i5YQI(!H*qQr?5D_XpWF{8$f z96Nga2r{I|kt9o++}JOr%6=MDV(6eEgUbR$|75IODJZATojh;)yxA+L(4h)S4E>4p zW}T!=lNM2_OOraO>Y_#+l5&JmttFaz{R-CSK%6^^45@_{#-u{O+6ttiwrAL|YhM%; zn-;IbxqSO(Jqb9l;K76o8$OIUvEs#y8#|`xGXRUpEN1q&oXJTNTbs)`a>T&WuF<4R zo8C3|(ZQ6sh=#>eV`ZJ$etn*$r73srsG1ar`k|7m*4o7Bn$WA-Y>ef%nE#dVqlI*} zeq(rLo)+!R=t&_K|Ni{3`0?b+n?H{}z54a+0S8aHAgP4~lQF0aO)Aa}Qv2PW{-4@v z{j_$}YbwpL6nLzqB+3PeB;rMA$_?>U|3AX%q+o_X2}BldNu*>$C6(Aw(=i#uv;m4K z$rM(KF%<`d3fDcPA#n)Rh+~dA?#N@0KK=+~kU|bgWRXT5iDZ&Q62)X)tp!)h1zv41 zQwBwB1&m!5J12nRu*0;h>{AnK?xnU1mOXn zK~O*g4e@fbX{DB4ifN{Xa>?a;O}(^9N~aL8qJ#uy z*(Il`uF7ecw76!VnHoNM6E@e}C(2*KS=!ZHw(Qv_24oETM6r~5r(~luV);>x%wmLQ zTpWI-YXysyy5}Am6q!Ws!3;B6SkmAL zbn?m+G)NUogRsOJJ1MeY#g*f4()Rij!r$FE>$4Iqs^G%PQY#9>nr_T-#~yzSa>yMw z31KqH6l3zqVYwpeO0kTB49u>iOf${Je3#5hC+~b^fnb%%BQ{L^z`(x8YV6WVV986z#0TA`b}H+HSuMcieK%4L6fX zgmyIpih(@lKw#vhM- z^3^q|5+hEfG>k50siaBt)-$3D_Jc5j{V>;i?|r%1qsyB0;+s4E_t%eqAFA8UxA(JAV>zo zEkY8Z3Q`4F)SM4qpaZ$u(AX~KD&YJiMvtJ-OWKB$Fs+Da9C#5+VB(+|TB$jYSmAAE z7o!t_g$gXvmF|#YrMYl`V*P;Oi4@kut-*kZ7Ep}|h!KIG2*xmO>@-~{ zV{eLr##0T0EdxB2|NGqdMls28j%=)>8-X&HDk$YZIiiG5ke~?${N+ak5yAs9wgeqC zK@0;B-a!_Cf!i?P17KMOCs^^T`4CEK5{%$V{stB+Fh!K8LlOve2t!3RjBHGi5?&ev z#TcrRB|0qP4IlAAD8b+-7^uMPZlR(fuJVYsaS#uUvP)Vv1#Bw;n*mJ-OQTePi7P1~ zOXMWRY-)3x-0bGVaOI0bw1#{G5@#Hdc}`Wqk&f(K6>*eM1=tv%2K1Z*kM8kD>uhL8 z=*)lsSfCaPi9!bk5THT!7fA;6fC@gT#7_VKfNgY=J{EM^ur~Q8g8j>BfcnXYQi6%s z0ZgMgnxgNT|EL1E48fIN8>T_1cb^W_qG1={PVmmg0W41PiGqx&NjoqlgOZJC4H}^@ zozhF7hDTakoM8iXDa(c#aiubXR|$Tg0v?`Ch758hYc}A>Zi#iQWG$;%&kC5c{SZ~y zagIu+b3&86GoJL6mt9lBxwn>)1fbKAG@meotUAmFA5e%WDC5eokd76c=o3Xp3NTMf zu!4hx9dmm~B4Amj2MG%F1b!ZUfe68W*k1ZLV{l3thApp{akctYvJ+TAo-WZh}Ih zK7}Mr|5p)U086le5>mNTs;UKnE79XmN|zD4%B!QeXEm@d>k)wc}g&?I0*AUuD zwn2_4lVcgIm@m^v%Cx=&L!_LXWx`6>s1agw$aEnsu4sB4R~a=rW3DE8kwXyHz{OM- zm}V=DsT$e(v^iXjt()V5)0TQlrD@5nfK{1A>Y#YhjBd1};}(cbNcs2o#Z(Km}4k4$QcT5oDnfWzZM09v$hGyF5zx1OpaHxa>@M zq>#7P{h);3Ca(L97Q!YA&BIge6ow+4Mt$bdEIhD?J6TH`cGAubBYbX?|H zS%ZW@s5MHk4zaL<{^>fCH>Ig_m`RAs_@% z*hN>kg`WtDp-3EMEO~G;p}qgOgW_Oks%vh$e* z0zYY#11TGGFb$FD2Ra#fooJ6$X_Z%rm09@^8$fkI;Bq}V{{S?=dR26aVVEpzCy+yu z4T!K3+~7T9aB-Dl0ntF0DuE4MKzAF+N$<#b_ytOK2o@{Qdrk2LE3pEYP!GqL60$G~ z^gs{saFTWC4jPFG?;s4QkeD1 z`HZ8fnnqbHZejp@5R|gg4{0C=TyO+J5CMECio;2q#VJNZr%x2{3Y0b|`4t6%Mi!1T zcFUL~<6sSlfC$;p34^d;(OEEbNtX%0S9FOBDv(hY>3p+Bee*>IfRbOIWPC1hiy?_M zv7n1daSHDc58;B56@&&3Z7OgK(jh9}1!&DxxDQ9w*`=ZdPDwb2K}F0Z4!Z-yu)15l`6Y6~C zQ7N}4F~SlB2RMgzn4TNOV(S?eSl}1-pf&5T3HQkbzBmu-fC-pj55k}lu%MWW*`Gw% zm1yvkE0LGU_>8ro1nJlmv)2z%=}`gz4T#tjeh_&=Z~!7OPiRVjT)+mGNCRkNoPFx2 ze+n|Dwh34hb9$vx0;MSlrxG+urZGCBUZD%iLrjVCOvhHF{|9?|xq-Hbi;y>;yGV7X zP!I2b2{$nhpb!DRNDnEopEpqtfT$Aha1OFi|B+ZT1$$tjGzcD>NSn^spdRG}B5(%( zat4ev1CUUYdyokYS_Mvk2R=Zj%jlp;0S$A?bZ-Wz*{ZGEDxD4T3i_3e3%~P6Yw+uI^YIh zKzyy!25rEymxZm|O0zX&=4im5{C ze;n9<|K=BRC@LrEuqy!yRKu9-kPfi`{|YRl609JS{SXgbORI~xs4O{~3L*tqmUplD z6)(DshQzWd0iphymWH^j35uE+G?WB-vwJtXw605XOj=bT zA|t5vnyHZmeI%8+`f8D!h?7s}bXFUAc=&i$@SmgN48pJpt{|~b`+953eKaUp)##ZM z2%mR)yKE?dvpI&IOSr!ayun+bow))O`2;Bikc^wRi%SY~Q@KrhSv=T)130|@T6a=M zx;`jUuQLs-%cWeFbp1+!9@w%4dVzg`sQ?q4!ppwx>%LPWEYzZ+N0JlE5DCSR2eM%! zFhEJhAu&LAmO()UKgxs%ICW}h|A6J|ub?ZKx*BkUntUGBrHdz|eEF%dn}K}6gpP;6 zo9lt!M+DgPz9US+f67pJ8&odPXRD|&bPx&W;9ftYzkZ=FF!3e-3vB`13j^G52JE^H ze7Olca1>j?J;;lB*tzgA!Pz^p+2|t?s2~~`fiJ{UHD|?FY@%6wb3rt7Cso2<493KH zuG6SQLY0PuCkULN5|I!ILHka%VFF%>Ob3I*g~z-*Ouz<=fcV!%NX=umhy@k>_2FE!<=`?$BfMB zXHroRzem~w6i|M*r6i@Wymm`Sf2_)@?8!q?ARc_Zw#dk_OugtU$h91j9mEDIdBh4F zS)=kgne{SD___qxnK;-Z=a|g-tk0D^#>M+UGnpB^nh7ERnnDShNgzN*;&Jq_2u$e} zIDjLO1Rq)AvlaKh$@@NfjDUTauNLgcQd`fVw2VRMSq~hE?_iX^`^dyH4Jn`_u#Af$ z49A(a&oyn+DK|-}%&FB!Q6E5PXPiGi0T1p#v_%aYNdc7cQ;=}X7uw8lES%BP>&G#O z%^F`ovvZR!|LR_Hb+!Tm8tEUhG z^)L^!nhayx59a`@DecL88+WEOMl5rkp0oQE7DF2 zyWgFlPwHQ>kfjY93t-(3^biZM@VQ*(FAFSygSnfySJ=>`%+iIO<6a?l593$lIS2JM&yZF-bq zodR1xo7??$eZAmK?&Oy|z=LgLI~ic`+6?$&;jHXefEEQ>Fw6@#3E}&|QS946%C9;t zy##X#?l8*8&6uFj6k09gYD>Xl{;|O60n3Qb!C3`8KDQMrjx5Us5P;`msRexw2}Q2f zz{TWG?&yy`!XMzGMf)>##d6TW4w=pls*ton-9#&ZWZQh;B#y$-TfI9S)*XGw2A&dD z+7ED${}Sckwev8_M2dqBJ;;B<1R|gVocNSazy*2W1LLLN{cxJ}ouJUbt3kj6M-T!w z@CHJO&)MAQkZ$eQF1V8JqDNAGNVF^bq~+C4$H7-o9VNc}`j8sJWe7{Kt}fcK4hOQT zy612XBwdlkVgPF3#-TcI2QcE#*xItutTg}$2T%vS4)BnG2Wdb6Vo;bX0pwF~l#&{d z*lzI`Pd8=6oIVt};bAF;MCnRlPkhuPSAO9*t6LQl=GzQ+p-yr_VGFZVKbHBr3MhW*Kf7v2qV4bg?+^d+FCHSM0WncvfriD$lhk6MApk+6U%xa`n6!#9|4`vV zh7BD)YzV_diHQ_pK*X3)qe3!IJbv`pu;WOLPdJ*~xG?0&ksv>&RO!;?DTpXpvglz` zp{OA}ef|U*RA|tR7Aqb_npEjhrcIqbg&I}rRH{|2Ud5VK>sGE^y?zB7R_s`^WzC*N z+qA+3DhhGY0@mV|i@9~_!o-_buU;H=@`%~%kie5AnFwfM^28F)6M-E+hRm=fNQaY4 z1{t_A@5obRI&ZRKIdVUcpHr3rP=*GXhjm9gR{C1@Y}&PL-^QI=_io<3eg6g?T=;O` zFfL$-5@bPg=E^BFUryZjoPpFw^BAxq4GT6^22v?Ye^93#-NqaCd{Am5~X$goHM0b+DYU}0sQ6&9*tPstSG1c8XSg*j%Kom#hMn{UQBXPtM3sLL)N zkxgBm&07rK78DwxgfEpw5GheSsw)E?E|_)_4q1B6MJuw_%!*kzQ2PeF6|HBVQJn`a+Ud-n<9js`G zOoI44n`RAvt1NZj1e-Z26C0q~cq}C* zf$@-nZj=*A%I2QE?64o@7=`H|*biCQtvxbXjVcM!BV5Wt7VyJ~l8RE4q-fHZ$3$i_ zm5GDf+yff}xyKp1;0Q-3K#h}n9-UIDLy(YefqYwKO(a-7I`S(}xMbfH(Ko$Q_FylQ zAm+7{IZt}l)1LZc=0otXkSfRlCfHyGHm<=x|8=NC7w-DfrAW!Ib-posaV#bD1T)Sc z(kG7SL}e*+iBX&2DI*&w!n>js1CkDNH6m9{i6C*9XQWja%uj)_&DctsFA zafKI#u_@)+XR`dcku@;n9+yC4^Ng1?N-flf;DnxNJ_ybU62@+oxhO}qS}1jvW~&W6 ziF3p{RHF3WkxiB2$;uG~%Z1jbbza`UT~MW+KX`=-^1!c}kuZD>WCE`^{$tia6cQuZoT zyktX$3ekmNuh}7|GPa!#ozooOqg#qH|CFJ)JlSoMbW6}V6t|c~ZgL?DqlAvuxzB~} zOM4Pey^<@a1LLANVW&pV^LUu5fE;p^MmRg3M+{ zV-XTTO)tGlfNT2fVNKlChdL$#|LZMoIp2_n2k>DUp_xV)d=RoJ3-iQGNorMAS zBMc1rPzX@+moVVrFmvF8Hs|mFkFcSXcj#+FK(tCHVs|54NP+tYqFO^i&Tv`+|h z-m1WbkVRQpcsalk1bqNQDk0ox!eB}rvWB=@(V3<BEb4`klTh2mscMt~IU|zVOiY!r{~0geSgZfrzAbTzOM$c>+)oe&CSe=ZO%xt{~H&qv)IT8p&{HZXQQLt;(_czV31I9fiqD9KiI$qd$55L zDqZ9rGu-JvD88 zE^iQTGU(aNAO*aEz_zCV1|H0sAY?zf0s1L|FYw_EML$DfM1pguH{S7Hl)4yc-jEKQ zOY4Z61*F|FMgtFr3K`fk0q!!JCr=xzBuF9dcLK7;Y8i$UHx{0FCb)hy&Qs0S%h}ng^1BYqO*? zeWjh^&c8h6U5g_Y|K8vRG1S5A9qKa<_`q*-ABYEM@PYhwu!1lM0K32qw&N4P0lc5r z`5{IdfSbz~i9npfqdrH&gL(jidEf#UaG`z(FHuSlsv<7qx(R?mIq(}NT=JY-qOmNn zwo5q^9tZ-RD-ZXo0v+f!CSyS@Dy^9#z#P=U-5H%IpgiaxBbBI^HY1!w5QbU6Hv=dK z15g7BY@E1Kp5JJw~%UuFT2Wzz!e?fh8D5KKw~VM8q}%%3Uf-R6Mm6+B>)$!FsIA&jiiln8>^w zj%xXYQb>lic`wiN8NysD#LUUqBumIxf`RygFUWx22+3HWN4%f`o|dOcD&u z<3!He&^pyh9#-;Ni~(pA;6I05wCGkCGmuyFQhr}6T|e((bP+cc?d8}|64Tm z8&i?|KlvikjZn5Z^;FR0sM_4qUf_mB=+k5YRND{*Hgpb=i!hs97ZFWH^gKO$T(?$y zEJbC;Nb*MlBT_9`187LG6#dju99W2O$QTN%PTnw)3IRqXDb!8PRb0hX zT7@~~^45|x)^HV9Z+SyD`~VAJLu}$Og{TK4Kmz^TjSN{TbTtk_Jwr$h%JV$2W9(HA z70+=6SZhSXC&f<4e2{7Jg*AIueiFP6O_$GmgeB+z=dn^)CDKZKlaeS-eNC)y)hgZ5 z(ts6N9UM%O;!_YKEPZOx(V&_NxEFn~oUu$3#<y&&7yZN&{+|9aEk45N`1 zS~6^vHTjYu_<)6l)`mry(FlTw> zm`D{s8n+dfkj+Aa*$cVd3@D4%$W#v$Y|5Ll0+~aMI?!2&$iQan+tI}}12R}mnbL*G zr@f$>lC?>)4Ny+Gnu6(9t^L>}y0)w)Vh&fAJvYN4pX;6b7ot4L|7Sd&2 zg=5JiC70FJ3(Rrdh|my=-IS2>t$dZUxRVUE#0#0@v)gD)B&dNp{}58b0L&~P12iB$ zojKmyRo-lB-ukUFLFJUy6t%y2j1r(;Ewh*As?x;`l_Cg18D%GEJ3U6k+N^aCZ@i88 zBe*}&(1q24ooPr+CDgsO-wtN5TL4=Xd`ZEr4#@D|lxoeNXs%GfjLNbek%-U|oUs9Yn1>3jy`<+1R;SGFAvN z(76)H;RQ*7-s{j2_T4AQJ*8ENE+_;(W@YC>4*M`L11ekK7=RFnMa_Y@VqOz*GN>FiJ_? z-H4))DS+yGFq^fM>S3{v!L~!YvG?0C-pz>eP1OeZ0_q$QdM3S7(&m1KE00r-&;`W~ zSy|kGfP?-H0uUyD&D{hcKO1dSw38zQjz$=nUtIL(j6SBzL*3tifGuDMC_Y)9ao`5I zT|K^xynWM1b~eMrXpM$xdK&04Dd^kKy$LXbDX3;^|9x9Z* znM(=hcol;M$cz^q>3_6abK&Kb&K(-AtE~2vqvmQ#;^<7N>D^$46jbC|lbRcEu+|L*xCSPeLp|IS_goNdtzje+YWt}mxR_13Hf&9rY2Hb|F6MzG zh=Rnf6uS*Ab1uY7u@7mTTX2Q4{wpJ`Qf1D5 z>Ccw!N`mafS%R;P)jE3+%~?P$%850sZN$lC zTt1g7UOD}uM%QV(1QN-QtO^N%ksy_hPb$BhbwIS zZfO+>NFUm9ehc(gNI1PyYCv|F_O7U3Y{p`BUBWj6kYH0I!v2d5Eu|QiSMO3GxJ9 zOA!6#e&DntzAV9cg7asp=n`kl1(p7(j{z_^ADTvYBEG=i5yNF(B*aM`?+ z&Ec1(&sJ}uFha`p4Hw2T+7A z=&)NJdzdVHmlW+ebi*N}g@Jhc*!-444-Iaz`-pD#yf?7}h9ES^n+xVS=@zy5(wUhj z@`KL5yvUn^Kvl^1ecG6&BkqiYZWUL6Zc=1U>jX^F3QTXwqz={|}S~U4l zA{mDvT|Ob%ucg2U4O2{E$WbECo<4s9O(;eQLjnh;tcU=nN>Bnid&G>%;8)P9RMlV_df%$Sf@P>;?YPHt71>-J62}1IlPTDaI;DCY?lhiH;q^&y50&m^3=K&z4Tjp`~}2;kYH71Eah z3Ns7!QB$F8fjZK3|9k-LchWRMYDP`2oXR8<&Ywe%E`2)n>ejDg&#rwt_wL@mgAXr$ zJo)nG&!bPTem(p4?%#(OSOoFaLiX=Rr|)no0|*P@CG5INYQ}7Jxw{gcx9m#zt&;@KMJKt|b-GaBoN? zLPk(Ur9^KL$g$9g3-yr38xV}9#2jMuF`9Bu_P`u`Q&L%_l~-b!rIuTA*`=3Xf?3^; zp!G8!f)C-BrUJK|xsVes^!J}YYpnBwKqtI~P@5*4^&n$E?ZlU#VmzRkZ4XWH#ZCs8 zm>3g5*7T?x|42L#fm07<0pg@pAmLjLNJK!BZz&q*Pzp25Fy@nw9^s~G2{nnF`OlYMf~Hfv?Jy%Vh+H`{5`UANtL1xwon?!yI!^3eJ?)NS}iqy6B+iI=bnnqyCcRtFzv^ z>#xIZbaNUf^mi_Rk8(=x5)D#&GJ_5yzXx#=gjjy4E7xIa1EYg|76xE+- zyTsDvENA3J##?0^zWC#lU;Yp=U^QU+Kd^s(`|sN+5&Z5CNWb~^*B^t$vGd=*|NjFp zfP8{pLv}|rM(BbO!w|^R4iPQH!H*MqctrqYAqx(OtP4XpLFFDcy&aX!Y!L%XXJ!JW z|8`|>E|pW7nz|Df7X~nfGMpg|Ye=^jD8v-57{m^DxR6*tWD%VRMkg+Di5;3EiN;7` z5`8!p9qRCJiKyB@5Va6S31tpmu^+}TW(nhMYjR}c9^9;#vTsd@XFUR8=Vo%gX4!Bn zFpMJ|>uAS2;_)oE%SG=5VhUtPVj-?D1~QEC5LY157=!BvG87WLehh+-VHrd*iV-!5 z*NDKo%42IZ8xlpZd7 z>C0aN6PJ2fQ(n+llg}h1UN!2+DX^eBe>p-`j!?xyim8hIRYiZq)Fv&s39*J`|57Mw zvB(N^CbG8#fLnq%(=BVZx$D)7b7un-E$iv5VD@B}yTm6y`{~br!j1~$ED7f>!i9^R zf&zKEW?QQHtah%CVsM$LTtsw5v;4s`7x*G`EP#Ts392q^fhbR?0HJ!JP*qrvXJU8& zv{^nBpbpWeE@f)do8mO5z8YFjG~m-e09BNrJO)tDhZX}VfG6PuObs~s!Y)K;Ca2g5 z1q#C-htUTEY*CsjwIYjGsk5OvRUu7zIo7kHHLYq*pM9+Ln4Zb9mi3h7JdX-TOkT06 zW61!f(`)_DmuW#a0uPLI{ndu9=gGMHB+d3XTh#I<0KU zHf!ADBDbH$REYb;=1}6|C3^R)Vv6$W)VqAfq`Tq)ZCiE{k5DEipL1+!Py!{!zBIiV zc_?ui=HB0b_r??8fUBcO?5Sgyrop&km$i7%i$Vj*!r|0;f~Y~?FsIm=q! zGMBr2p7)^%q%vh0D7$qxB`=wta7A-NE_`Dz!#U1!o->{6Z09>u2go!1F+ex6$bNXQ z%&0uGE62j*j%4b)L5ql+-<+NvLpsuuo;0JW?9VRz^a8vn27x{q+p?Is%`0qMp$!eU z@-jpN&&4yVTkYys!#dWo=2A(eG}2E4^T3@xvSCb_mQhy|Lasb?soxb~TyNQdS>CTglYHJLns!4sHZfrSd)ohIDe3DY%W z6Fy;)h!DugIbQhhC_eYP-~FXA00>WH^k`TIXF@7}{}xs#Lm+oBX)-R1r>vl^=UGC6A&c5`j>P?SdUkm4{`bQ_j;p8$AQW+R$!Gnd zX?aFELh%g#Q`|w|nvXfh4}jG`Fvk#ZhOJ%2cfD0^6&*;3iqVx#RH4KQAi^RD!zRSu zj&#Aq*qhLJ%mz1;`HmSyWkgo$~$P|AoRr*xI0p1+p~3M)iPz z4ATOzL1A1NR?OHD8kTZ2)|ycuk@Ns^K#jjvO7#O4EW&L#A4J`ocbH%nYT*_x4GMN4 z3^GKgP+qQ_Q(?W)Pe8{@u~ZYn9+W5)szo3fxI!!hga0P2ffk|Ob#UPx@?jt5%?DT; z-Auu@i3NfQMDr=c@_C!MAxIO101-f+Pe8}C#o;``*!Cm_yuFm}EW|u8gN(3X(+!^= zl42>EqOkBl6!1VQ>P#@vLL97u=P^WFNWfoxp>wd&-NBQwMPT);83)Ef$f3f7fPon( zN*=OTew^YmGGjC9ht5C-2GG?njZ6zX!woLP(|8)XMP30WRvQ`}^{9(9_6)o|iQs|4 zDY!!HEdd)PqnJ2jJj&xdf`tnzLMaXGZom@0p3E>|(M2Q^ za-d6M05Za3M$%+Wo}vkK8osd~u;CHpAz=IX9OWdjfxUQEd( zPibTkjwDqQC06R?UcTQgXyw!4lGQB0Rw83h(3XPLWi33Wh(%^cX69?cW)}XXPTCM?e&kPR zmnJYoGVp>W?AK1+9t?DwKGj-Yu%BY8W&dls83S}eDm={q#%6R%XUpM27YKwwGUj2f zWenLSYx%?*9)bf^(+pCMS?vj1uuqgpWw8vW(-r4VB4<7|TCv#QblT^ALR~LF)h1kL zC~akO&d??i1y49aA~cv7TIR{=%Fbnitqs8kBmqUX=O{h|MN&t6O5%Mm0)BF6heldK z00X9Z0tEmc0SRXs(hwd9Xh{h~G87mRgaa%r66Bc7gFZolKP1r?-SKWG9nOami?Cl@Ri34k84cw>aBK!oBO zk6N7k=;(z4DS)=-h9c>k!f9qz4F3xJfPQupvi)Rw)@GE-PeX)fH1MXbxn+V?#|K;= za=mDC$wa^Ym#9xUSn$#+E3_~Y$Lbu^6aq11QitD(NYq|dFeh^4vDP&wh;J+-W zlOEOhMB^J4rdZ~n4ypw=-pzDL$+zZNxMmrq3Tz3oAmmNon!;<-OyUPn3b(xvl4U2J zCS)d%K@K7YisDU=dgl6}7XQFv*}#IV`%zR5v_<($<(YzMvxq_m+(lhHtOhZio10L9R$zDCB|kf(TeTZl5N@A7uDuTT%7EGE^5;V1S%jyk!qa`_G3Sk!zhG6 zEadGutN_ePn-G#Io7z;OidAa%EZF|6*(&bhGH&B;Nya$9rX5)Q?0~&et)j9mbTVy1 zj6+o{$=2a!)t&-^io}5d0peCFK5b^q&Zp0EEdHUaz@=t<)EJ~X?(O1k?&>ZUW?T!# zVFyI5&H0s6p65ci1OMrENM7Z^@`{01u2xXYL)YYjsuB=&{Xh_8f%ai7KNXuSa0>z?T&zX?*!5skraQC>t zyVe3XB*Z(6;X^ntQ!(!XTOMNNkS<(;E<^~f_*_z8&{^eA_)3Q`yn`p4gD`~W6)NcX za&RpO#5=G8DrlsQ(9#xAX{wZo(NZ3B(6Afj+wSV{4)d_smV_cK+|88%vKHtLd23#izh#DPlWP4ZZZB=FJ<-X zLqOFV3#KQ;12Ff4J;Z}2B!oSr0w}mcD!2jztphI;0zWfQDZE7psKIfJ@8dNbG>F6i z{4w>pK>rq00drJ9fEY11i}a=5LI>2TF;h`p2xV|;?uVW5IVUdzhk>-z!Pd32L{M)+ z=t4JW3#ewo4pbw=g)!Y#2SpL|D!A!P}y>vfN%BDmq7HQH<=buj$LoQV4$~s&U;}o0_HFltJ zKQKZ(1oSN0aXREeDy%~)q=H~`q#&g7YFdW{8~|N|O&B;qTL$S@Yc_{Ehbqnzu?B(u ze%p8gOEUUq0!zd?GsI2zg(Ufr1a}=r)f7GV^>tuEJ;=geCqz>VL@XfoIt+t5{E$6h zLjNexgDjjc#UQiz&V?T*1`tGONSA~}AMIva_jGzAWVGP@f)))ptxuEA(ea9D$7Dnt z4q!~n@@9o5P*eIkr6up+^@>2OsK5Y=X4N%H>x0+Y@nG^a&w$o|8#VQNm00DYGcth8)wTPRF zY6r#nbRDwV0uj&o_#PWc;!&Tsz&F*db|Ph=o4T1>`J%g~n{Ucle9;%B)L7PSb-xgE z_fp{=?yZIMpq_fKUpSr<4N@rt0;4ux7=aGZfIZ5`N=IA?3sXw_*P4TxuTy)q^9|0z z13WB(At3KzAb}wUwXq0wC)xUnhhSxLwO#4>pi3e|q`I}k`@oKkH;ltL%mYZH#Un4o zEFb|XD6PAo))e9zi zLcl{f6v|m#if-zJm-;KdazzM;M5QQ-qUO;FptQT+Nhx*uDd7dyX(|lZ3R|x`#rwR6 zy|F92LRI-(sD8jSs``JJ!y=&bU9bZiI0FCn4HZzTv-2bWHryjBd`}JoCa{7-@OFzL zxK|*6BL>F+V2~U5LLU9Rf_8nQu(t@i zqZc27K6#awfhuTKG~lb%lSPq)k%irnbMwlz9#3$b55v91#CK0zpkcK&8}x0Cd1@zU8~ee)-Fkb13O1ENS5^ z#Jb9ko{vH>NWwW3`^7?mt+HR_CmS7|0zlYf)Q@06UKMG=y_&~^m4<9A=6XK(!4lNmGB!Tfjz#|hkao$9kl4nn!KY<1nI+SQp zqeqb@Rl1aEQ>Ra%MwL31YE`ROsnQz8lh%)}MI>NtT0-YYIaOvT5!(;!*BEU@Q8_`D zE?uc2AU<(HD=(U8_I3oiX(#uf84LR)4!w*3WQACJ-pg@*Q zPDIgzi7Er6%?So1>Vbj1%)F&8<^NXDA(Jz;I0LonE+8l~BA5K2 zhv;z90yjYborKRp2`$vnLlI3>(M1_;)X_&Fja1S}DXrAfOEJw<(@i<;)YDHvy=e%+ z`XNM-gl6+`msMBYFvgFzLg=i&I>-;2$@)29jx4-TbuI~oyoEa^MRh^VCY_`z)_$Oj zD3SM6eaxWxM5)UsOX6~otLCb;DLUCc5`hosj2(enK9K-p2V=1dG}L$DjaS}z>8;n^ zd-2Uz-+k}(#Kcmv%wV-?S>44|U#jZ{79RVUJyQO-Gfj>_c5mRS<;cSr|d9{9uNea$?Xt z$gv_rHPy-K>uYe#89j=WKzmwV^u`?z9pT?*@80|G!4F^j@yVZ^$Rj;IJ?y6?_hzU% ztZL&LW~QNqRIjZSlKIDd)Hd?l*Cbl?LaxHnq(>lL2( z#44VrHuiaoAl?{<)YQ@w_=#l*#p$ynVzw{4zvFNpX&ooaGc-+rUDQz(p&OpXAM&9s{LhOoM8+k(hP> zGlV;3VgRBD30^2Ej9}!VFqm)$CQ^}ug2aL+pg;&cu7ryqM2I=s1EwgdLCiDY(Frw} zg%Fl-rbBkL2?Sz-^kBdM9Vj8BB`9QhT2PP~EZ~U+X-!Ncat4G1p$SN+RzikQLX{wZ zquVSVJ6V&M*03tAc#Xt)et{%B`+5E2m)pR0VE87AS~d6 z7$S6?p3Guq%FzLSCWHWI31FBA5kNw0Z~!;eG*=Z6Rtf~L5;F zwY`|h7!ZULO*OYX=m8Ca5QPg_6FE-h6IbP+IJm&YJGj|_5!ILwbHFtr@hFEx+(8g` z#KT8{V-6WY=*z2?&a`TB>;h~O1Y8loSy}Ld1nN`}9@yYa6rhY4^aGIzaKJ%HOMwM& ziV*ZfZUFREpkqx-k%BY%Cu!03ppu-{N zk#U=5iLQFJYG8$kYX71V)V6rZHlsP>BvL}Of^c`ofX%K%))9|*tU``J>Mn^^mbrxN zSB#GB8b&w(lA=vWr*+(3KVm}#f~@yH55}?p3ZxP;p^*y9Nw0;3H7=EGIm*$3NF)K3 zVL8v4&PkQzHUpQOT0GBK$MOyK{JCb^Kou;*q8Kx;qM*JhTEl%&XhiCP3W6Xa6!E}B zF5;1nTr4CZ1EG$014Vb1?7;}@bLuBU;7v_1Kn0lapC-K5y%LFnd|5=GGNi@J z3vxn$>L@1}2>7#|q;MDn)WQWu;+u7L_Oqd#L>qDmK0gFx3R9fkDQvsNVI=?;xPV9Q z+@=YXq+UPP0sj%}+Eu%mhDR`lF$#OY0u!(p1}b7<(0G)>Y~Uft8st#s0phqHh8 zOk;qOy5KSwG65Bmo2%F);Q+S!!2q^K9fY`8KtkBvex@J+&JZXj5-Ij9o8Xl%$k(d0 zRKXV@5QbSCNSSfi#v|i!oM`Wy=RKETO7R@SN(C+3mMF*+y6yA7#OzFM1Ijwq0Sa00 zTgs&>2qrLL4@?l`60g>lMF3>wUDcu3g z_Bv|0A8+dO4w59B0Pp~)QZ^O~oN#xa&C6dTCfXU=)eXNtY;UxO?iF1(d9rddL#z0XO-K&3eN_t zI7_h$11N_u90Ndi`Vo?=V0`Bg4Z7lAuF*SL;muN}YwD<0kd7x#fbqf!`V?>h88BEX zsvp2^BA#Fcc);y?4fy&j12xcCz@^5zkBpuJ11v(7j^~_|Y?j)|U7)3L9%8&U=h_5N zkj|}SB&UYlOnXR&PxLRF1nJ5e@CSh~2zLlaEGQW)Xh%vz1(2{ou!$!|Oa}ru@2#rh#-S7?JFei#&BF+RU zpsE7yu<7c?AckQWav>L7;T$3kI11oTWXWgB(37UAVBie(yiX}!(2RN^{ot??EwKUR za7!SA3y~#_8m$(hEBZQ7A=bfRl;9LE5p4KR4CQZ-QVgZK@DL-26CW@YZSfWzuit7B z2WhDnnNJiS5Q`uRI2wWPN{{&;E}a4HDz8uKQU((q;OOp3lp8tJhf?eRl&>(ijn5~L&BV*jxF zv~lUSXC9`8i)f=B!of}qEdjB@0?_LB@TLtr;T?BKo9^)DC zDKM+5u|gs=`p%{xA`9*axFmBAd%_gqQZBpbYLsFMCg5r;BB%tiXueJF+W*nt`XLy& z;nAo~F<~<{WwY}<#)2wn6T*_KM9>j32uRVXmB;PVA z_I7Yj5+RWwC2kyxgX&rA;k`O%X+Fd{(6 zAm2%xLKK%wt0%6rLRU0Mg)}ycp=l{DM@u{YY%EyL>#cmI@+dX%u(aY(T= zOA!+acaIidux-FJOu>|r@)^;L6nS#Y!Z9N-E9KuI<=A;5_sz^PYDz*k8S zSw>ON0An8DfFOj24geu9De+>I4W4)}Lspd{uM}3T^;$DB?IK58y9Uk z8i5lC)?g3T0S<0843-mQ;9(;cIPDOPV1OG06)K{XfV^TARzWY31HKsYDke}w=(XDN zHDy)y2g6LlA_2DgVZzMQ7C3#=uqabGq0uUN=B5)QEaF!Ez)@O6? zmu|KodbR+h2^$k)5RqbIITl+YDP&K8R_rM5K;&dSQEFFqY{?edqDaEll@$O$ZEeA5 z4XbFr$^IZ|Zt1pexiz1-^%s63aU#NtB*JRBLJ5a37Mue3xoD#;hMsp(CTp5g-#%_4H1^bP?&dQ6M5Y zQL$>9NnZPb9<=u(L^l7D2z*sRcazL~5jcS-i7*|)yENf};WvII*iR|Af(wX`powZX zlRkrjb@xsp@?i~_K^SsXoak44-&KKCc!eQo6&S&VqY7;-)q-cIgAhkEH?%0IHYh?^ z3O<&ckO_DCK^+)D6Wo-AkvNGLjTcVg6d*!Nn*VM|X*g{ZkyH8)L0oJOfFdbP?h9-z zC8VH)F=>H-g#wDfi1$>9)p(5)sBBh&0$d?M|K~VlSbirsar5+2dLm<|mUXpwZ_%Ov z2XMH4LIOtC+{hR{G=Ys7xsgRAeigw8#S&m@^%#otJl|ItSv3Wx_=SFA956JHBf@It zAP=@!l!1yq;ERS1cS*;~kzqNO(<6Sl3PDw51F|F`)YHQ{fPs~aYm1Q}bwHe#KbRwW-j!{&0fC3(pbCm7#Z#NT_ z_wI|U3?Y~y63$qf*RQ!G@dl)~@wPdi_5XPr$z~1{LK-^Z5(L^53gQxS!Jr2Lp%r=% z5}F_w`k@zkp&|O98QP#FI-x5%qcJ+8xdLOyVI1I7Lp`gMQv$5uQk{9i2<%{`*%bi1 zU`t|jG?Eu4k3`C6M}lFecBiZ0vQUT zrzJtEojM_Sx~Q+(7_NG&vAV0f8X0)n6);aCQkN&_(yUtyr8!kb|1M;fNr1g~L%^vY zak{SU+5rvM6@+>bg25evAs8e98U9)l_G&d@L9T+~un#*J5+bqx8W#F`5&ZhE6C0|F zqNn|;AHaIEc^a&Z0rS#$6!W)lOaD0>7bMyG;iQ?FQ(ak}UAsnsV|tc0Z11|ZZM!H= z$Ds$o7!ul||F9r58X-(!xHbBri+i|vo1y=3xf9~Ibz8ZY8@i)=x(VV$)3L0%2#2rc zkM&Ex(4u*e%op+bFIK?M3=w-gXBp(-o+IqG-TS>G_yvS2avB)an6w|m6f(SP6ZyNp z`CEDX`w;Y7hETR^s5dC+vJMoSq*L27r}nmJqm|^5pILAjB0&NeZ~cA|zB##Z$chK=~xixgQdI!TpwltrvOBg*K8v*--Tn^t7blAoXQ#8##4K>*Sv72nKsXx{7&^>#XQh$T2EJ!S$sLo z^JUFF`o)!U$rhxv7u-ItoQq-cA8$k8sF^miY8g^k&^p5s z2q-*y4f`B|~hAnm+x{^^4 z8bNONNC(~h;#n9Jd4XVx>|;(HgAK7Dydm31S#($&yj7kHTS*xY6Q=oeRShp!K_qac2Gk9aUgMgGlie3>8T zgy4D>Ne$7FzUzCJa0p`R%vh>)YXMdyfe->YNuuhdu$o#(+FrCDfVJX{-s|oDUSTLx zxz3C?fC8T0C$ccM(>|nmL&gl*aWcJ#YEc3J0Fr3XKkq*BT~!Vzd6KJ9C_yko(lMmf z8auw?M}{3$x&J3^8unc+Uh+}jT5)0@IniRVx!84HFj$*$=>U*dX?l}W z|My{aPp7?XNXMym9)uh{Xyh4x;=U?!&M~;MvB*?124~IX>`8@)O+2n|Nik6MR7ZZz8E0-2^>hUpuvL( z6CO0t3z$JX1Cr7qNLKdx8Iu> za1QZJ^@ZYvrIRaP&b+zv=g^}|pU(6p2L^LPYu|giIm}_nj2UAi=b*%`EAG}dV2jW{~?mjneRvI;GVQ1n+V zL;q5?%OuEm}Hh|=9y@wDIJUk zc0~|8izs1ULUTmrP+gDNr{_zXDHeyHiUm5PppztY!;ynxx#yycHtHy$YDOyQq?A@_ z=}}t_6of1Ub)jhwBC>#%KvAF-g=KCIG*6sL8sMrJu-4gBM-?z&D=l0__UM)RDM;vk z+(D{nm#U~T?5@Zr`>U9jHtX!O&_;VEFxq8mWlh*#J6U&+6ci2;5Iz)Z9psX`lqG+X zGS`N>R@R-C%ib36yQU3l>_W=s>)X7`O6%{x00%6vWwkXV@4+zD%Mhvry%Xnza{u-- zkwD|p8C1HOG{Tj-QSRFoy{Ha~aD9{TSx~X|cB`=UAgmen`1{j1@YFZcUwQ>pD z;zAHI5SJ(J9I{fJ$M8aFQieWI_d|(3bm+s~e7)(1Tyo3`R7zdc7J)0gCI9Oz3_+g6 zGK?&#GRSE45?2$aMoR&4UYr=o_6Ru3n0mo6UE4^t>^Nrp=x z@DMk=1_H%Nw$R7&C_zC=?4up*FcI`Vl$V~l%XWtHKs-|M4pt;02So_N=L}K|U$`(9 z^9V)H!ZtdP8ESo|i=Pg6$ip6Xupb-B!CrXQGnVjWQ6C)0InJSwiY28H$I}Nh2x38e zSb`%!<6u&5F_$GIfk-l`LKI>^vTap>NYkrdKk6|MP{acv%fe3^*7}AHB%>Se&d3dA@6s#dL zG)e9h@Q~hFBzO|zNwHd?kSlJma!O%97CcD+fygolj67oQ&N!?EtRolcNX7Q-5f4nb zVi>O=2muF@2uuj190TFS9=4DHShi9IHV7BR3^EHLh`?51n7|AKP$~#OU=}t=LE|9w zA_(Ci1ri`aIwt@D8f@~O_{`_&I$5PhZVXGB0c9yEhBT*Wf|Uu0LqDeig9@-A6H&+l zsRlqA?rBj+4b2jNfHsg(xR8hj0gpWh@lotmU<#k>PemS)NG(l32pj{V;wZNS91wv= z{pf)hq#%GKK)?c`@n;!qV1$RvN1sSds#5(mgd&szEY@?|{{N^`C?y?`A`2{@K$15Q zeaK@UR`jQxhM>p+2!RTabOKu8C7JtZbfYShX+K7K2w#+99SN}q_T*KoyIoWvJFvkR z4U&Q~yr`&Jl7J2-zWZeAG4;UZ4UA zv6X6T=Pqt|9y)&7@*1-THprP#DW-3l>})9I{?5A zPDl=ALHsLJ8k;S_*w8ySNEa}o0E&TpFPh0rsi0&Tf>)9R1%j}E4(7rEBM3pQfB9`A zbIg$i5Fr2(kWZn#7~FO07_|nW0uI`+f;aE?)1VGDMoqI<0paHl~;Lgez<7xR}rhCFtxzEQ=_OhG(>}XHB+Sg92 zu|ySa-nLaiGB9@_u(mRb5O+R2PB?WR#Q$7PVa5Y4P?N25z24PP3fQNXs^YBu@sN+a z}$S(l6&cP zKGSs)`vDJ!p_=M`uZYNp;s-U5y7W|{f(B1SsXZFS5t;z8>Ss^=>RbQ%*w4Q8Rom?! z5nB1mKW$%^?flBX<6B#K=Q{TyT*Z|M&4xvp;TjQPZowxNVDL_E&<0FEO7J%oJ@5rgM|ee&CW|K| zB%uicp$pL`a{<_bF8G36H-HisbpQIJKV*>sv%^1{GCTjZEdrr;tdbQqkOFuB33-4A zU|!)jS4yNzv5;wWgb9f-3SL+cXUIhT zu!S$M077yv_tteVIEQpthv%Yv>+)ftp>;sCe13RxBGVW;(+|D}d==;v;zST&(0)vK zZ@hH@4p>||(0QH*FE@dCRNx+27#SYsVYJ{0c*INw5f7*!5V^n#@8BcrP-p#sR|CN* zz9tZ;podSe2aIJX^>M|Cgi3SYTyII;{yl43~PV}@AgW@ z@rWXl2@f!dn`kHwB^YTz7yoT_di}r%#RO~uF$}JF5O2gxoj?!1Fbcw00q$WaWEGC9 z*NgUekNB8zR(NH>mMvLCdXHfa4l{w~Ruz3PUw|QvDW`ZlLN}F&FE)V_!clncQepOx z3IY)i1lWoS@mz#Jj%{Q<_CW<500fQ56)2c1`M8oSX@~5lJ!AoQaI*@>;5Hc`es@QI zLDPA<*B0a8djxri;&L+r;RnzV25;a4wqz3=buL*V3P3;s6PArPR124w8GkZ}=>QKF zx0EOpiUY9-v3L;96o(BF1hxo09t1=y=tnL2mT>8R*is6cAapkvBs-{pqtYXl*pok` zC7(bDgWv&1!xONA6#q}BlL`rQ^x=j%#SvoTNMA<~^k5G5U=O~K2kPD#@4C$abgc6fNRDd8=j^5V~G^uU0FfY2qAL_x6vRR(y znN;_2T;EBZC2}HwNPd*aRv$Bsq(Yp-M--`-EtKOjjF~c#S$~j0EG2^g=crrMvR5C~ z3#%|f3A%YW#G042LgzW56nalB;Rw8;APxF8{>XXX$V?vqE`|v__bC)c^oLStddiYq zBsmsegL~6gGXKifF9w2_2MN)nCFxshRT{p7ZcRj@acZLQNs&44A+Rv+5|f8m-cbdWdla62PJQ zrVy}N8vnge1REd(C>0UH=cvSL5o$qt$2v+Z;~k!2pzH>%(;BbxTBlx61Rr*u_5(lx<*ofH zF{nxuiz=`xsTCoBal~dzeUxZ@#H}R*kzx9>FdMTnJF_%vaESDoZWB$03U!A%swyz2 z&cS740)hm<0&J#7-58PE#j+rV3YcIFS{idTJGE3>wN`tzUixrBR|+->2;S+f3c+*+ zs~q9#ud?MTgp+DJ@of~<7!OqfkZ6)ZN&}LXvdOA9DTfT5kPDe3wGJAwfE&2cf_a+< zq5pamw5kzus0w;og>91511=D^CWALWFkHc9xT8c6+~6XlBejD2xuB~iaU~S6`Yzkb z9E2kjs74gVoSy&P$z3 ziKoe8z3>~q=35`6Vt{1oXa%tr`RkadTfV165Q2j*6`=yaDZse9u2;jJjDW2I+9>k- zz!2;ozt|a_;Q(Dg3))r@P)T>vA+#3JcM(yxRA>?Uy03RTnYrkT4VsL|nv&QF~cpFq$V;cPfXFp~D|1uEbls zK0Kr@Xr)5jJx096T#T$evI;%|BxhQvtA)ByjH=}dtW?~KScs7d7N5I6mMXvi(JapYb_fZT^%~Qe0;{6EEIxlkAjN9Uh`o{aX+S<%cqPB z8bE*3lW~ElsII(CL{VZUnqP?^4A7(ypO6D9APd>q520WWtdKQH09cR^kN>*7&4Swy zyr4b)c%a&fqn{V7MPa<+X~2|vx+H;-9~o+H#oXK4`=ff*Oto0Sm*B z3!x}O17Qzj=#E*Vd4PZhwYO3opwKccuMd|$WqJ(rl@>f$l1qCTBiLmyhrXi$nHi`P^5lon%kt&_egGdrz5C#Fj)&GRer`M`EP5jdp zDWz;(9DKRXL9q_#KtQbUQNzFr@VpMfv5A@8$$2_R-W*P7#y{Y}& z&>h{R_-+7|i4S{&O*0UXdJ;DGfsyZD_BB_ZEpjurBdN(d)J*mv9h?2nG zUD))UI$hDJMdt}^qX_@(0b_m1{;ii7;L{lW-LyU4_C4Pr6$+m%lI@nh=7X2s3CAi- zzn5`b^_}5G-K~MyHUyZnKD)C|7ZxbMv+62*z)3l@LXoI*rT-^8o|$Jb>3b)xiQGZz zw;G<~Y@BZj@CP=XKL$andI>55k#s6l$}aAFvyr~Qyg4;qLo{lsIzHtt`Esmvojaq% zthyHPHZJh}wnJ2hr(d&yuo*9hlVJDpn=YgK-n!f3r&SahX zsaBA^-CNcXumlA1Dg=Q8o1p^o5uhHrYxFi(=?#)uj;wnU2V5}%E8OY4-s`^p>pbo@ z`aR%5?gvIf2hnUj88#5CKo48^nS;8v8;|Rl9`>R?`lN4jh~9_4n)vV*cPM`ph_Cn-O4=uI z0zZ=R%#@v&fDQ)XLcIN-FTV4oAN;~U{7$wpB6$~oA0SHV`p*8#dMXjW5 zlqprNWZBZ?OPDcb&ZJq>W=V)Sb;1}jr2orLpg&f5DZ+p#&Uz_w6tEWK=4VFAS|MeC7YF`uY?ZMYDI`k=RvnnL&7Mbimu(VdG+q)+t=@3z<~u1 zCS2IC#$Rv=CH%CCLJ+Ss5{6x}A}kBZ7LCTZySD^k&Rhu&@p{?A5mX#@20DG7R6|{d@TF<3@`w%3rz*( ztgFwrxn6s4LJBLi@InkT)bOSP3I9StyILm7p#g|IVn{*rPOQs7zZ7&4yBMfYZ$l1g zwDCq9bJTH19^1pu!L<-eurt?I)K5hu*^BAG7X1rRL=t+0X}pv!m|=>{q||atF1z&d zOZa}l&nguTI>saA3P=+Jun@{%2r*Sm5lNYt^v%W1MvD^6l&D0Bff|Ge00+p*@{dnM z6IFCkMlY-jxJ?jRg}99@SO9|zCIc&qH>qF%&b5-PlRB$rKu8oSNU*a}6IY^Q3K62H zf`jVFI+RshbJcZMUh_J!2v1}Y>A5!hS)e&$;T$qaKV4e&Bm+?TA)!@@>J_#1I_!sv zCd42jx+Qn0qlZ+RHBAdyum4qdU3S~WO{WW#oy0o+2AY#d7y--;j~X_bN{nbvvV;g5 zCh*YRjLhwmt}1HK_h8s=*+2{yZZ++U(f+#*VU9cY_~V7?>Xc54M%?L9W|frh-+)sR z!b}-KR#;lPv=GBnGUc#TfFxl1fM-!)$n;&1i#Gabq|sZ*qG2+IYqTN;oHkVH;uC|Q ztNYZf=$ZSB0*5L@SfYZTO82{Lzj1eu)$FoP@vwW^0HG9lOEj@ZOt zh$sj+ZtU)83xL~ijsL3^aNKj(T}nJl@x3ucfPz>9gdXc)cm^2&vnS@sG`j25P!<_g z0;zBT)jdsOD7(46039Md?P1U*{j$jjdA|TWF{+BG=x&1sYkwiiXHnw#{|$Z8Va}#4vB`x zA{`MTF$;nw$XLu~rc<5kbeCLE1jtU*_2|bzE4{+e~lLV>47=1F6Eab3&shkZuw*}DasAC%H z&;=izsQ*xy##E+XV(3HcWtOo-aan({Xhwzzr2|nx4A4kI5pZdyH9m84C}UkWTa`zF zs>7x*oM~09dQ}#ovdW5*+#Nnt}345 zoM5PW0q;a7ELb6CUO$q{8zxq@t7UC#UHe+t##Xkom7r^i;R=huA{dz1?QSI@iD2kf zxWNssZaZQOWT1kv2SJ7;m@5h7Lf5$j`7L#kf!24TWUL2i8HG{?+72Wk2%xf!NvB59 ze*fIVoR-9Dd)@n9-aIOv{cwd>x0;GeTmrxP-RdAN;oq);M63Vp?;r>=-~uC9s|hBs ze+&Fos+|M}W6cANBna9CD9fqfOqe<(p^o)Z#DVZ7afwa*myz03jA%I$YwA_6ha#qF z^lE91HDO~M-&n^vK7;~V+T)fM)Sx8EEWoIOIeVHWN%E2}UO61&aHt~@uoUr$t$bxH z_b|n@Sn-R!%uO?z^P-$dgpNZ~FLSOp#Ae3DnjeXaM}~9AL@x4?(OXY9#fS$_j9BHc zTfy?0wuzdsLfwv(Wke@h(I@d{7Y-8HOBllx#*j2i@_T7aLs-+7CP=2e>Qzs3mH!~D z;iFi&d(nh_l$LpZ0V)Rx*Oxl^pGwn2F-Ey)T<2QX$<)YnSJDYe2RqofC5S5|VT$F_ z7qXOQY-F2_Txc_vv8OOaF&gPomCS*=nvHS)PQ{tYB*77=a*m4VYXcBTmQe&1iSp@ z7sEvpVm9R@i}d0ir=7}$SaaLgzVT7Rib|$lE~W)Yk@?*At+(7oSifzsok~m!zccPC@29pDdK^Ui(LJ%&iLnl zFePq02o6Rcss(L94QiN&3}ny@OHiaJ9}q8-5%^~wDIOb^Yilic`yyz~oI{&rr`3?M|p5ViP zeg$z4`#Q(GJ^tGLnb~W2%X2QKBIT1F^AzAP|8!AeSld16uh%9o)g( zI6gv<1uHn52a+G+S-$%@mdNRW9!S8`8mXwLf(f(;yGw|PBRMgG8Vt;wC^(2M7z(1` zhJ)w?xX6Jxkh}`yiJsXO(&)O|6Nyb&hg7f!OkfL`5C(f_j=jl%6o|nncz{{Jg9U&9 zFrbyT;z2_^M9{dfG0XuM%L%KHD3ap82#msh2)*i~LXD6E#z=_Fu>=Wd1f$@DB#;FQ zsDMV$FKI|cYp{k;0XY}gfE`i4kq{g}IEPP2Aea~3?EbO1O z!a_-8mM6rBDy+mXxJL4D8c(Di@cTwlXaq|*#mhoJg7^XxWJ45Oqkqw+ZM^rn!^CO5j!~~TP2$LxhT#T`TSb-GyfGL0gQPBTG5ui!6T+0Xvxq~2t zWO$zeY>f5sg5r6g@DNG~l)~-e2)rYZ0>HozDTWJhgkq?*q&Q4o@B(h&25H!cXN*dz z94O|XN{u+LSrj0YBM3}L2Tr`Hn#>PgtUD)Q0vXgmwoFacF(94au#wpB*zodx31jT0X5XG#ugJ6WhyokpnB(%cA9FfHcNs(0`h^)B5ddvVxYz_?U|q<3^1PKMx_%GTVwSXi9<@hjG|X z^t_<|Y(o=aFDz`t{w$?xQcy#Iryq^eMWY~sI0a#l%Y(=Q5lDhes0=?{fnQ96JyRea zYODPzZkNKqj{truO=_=wRn6&yM9g~-g&)5^WbvlXb6 zL^(~>s`A0YDV+C-pUfGWO+n4(yA+F?jYUNWJNy5LI65nZ7|x8WNJ#b7gMcuENQZ8~ zQKj3m5JDwi*{P?%%rm4UAf?tks@64q#1E~CHEqQSr7ds`S8*LzaxGVL-6ELL(v(aD zEIiWrQ3@l)nHIo}T_sA1ONd2X&l_ll3aH2=(>sI!L4@dpZfMK{9aB1W(UPQ@dz=zz zjm8AkrMHvVRLd7}(y7`T74K11jzzSIJt83CN>KI1Z%q*Tz(!q-qgiP^f@lQ#q|FXZ zh-Y8~H61Bt<)DQ{w}yQQj78N>MN|2Ms*S+W&Rf$FXaS_vvbw-Ple^h-eOjoETB)5{ zs(r1mJI`{|kb6zpID*A~aMa@L2Tib2DroUumKwwR)QD?UC;%QHCm@78TuQq zhyY52sLY)`!)JBNmax`?00pFdMp;-rciX+T7>0US9Bi!%g25W_aTa{#fR|B-j=kJ^ z``Ag~o~WsoRq(>)j3L^by(F@cl`RNP)JO(M%CiLkPOyN3IDzPUIwOM4(MSU1_=3FE zf=m!To$Xr)tU9W@D0&d;gzkS&M z71e`S2La6iqq>NCkb`mGMrx_W{3-D z0_7Pf(9!}OXrNytkdOghstVwfNrX+Hg#}QAdf5bfP}awplyk@kOrT=IEL~%ffNpJK z4j5Et`GJ1y2k{y@%#CBLN-etUADe6_>_b}0xsZB|Au_(dA*lX!i617p;8iyrJ+ue12No-bgeZq{h$e(U1$XQRq9xiHM1dhW z+JwwSi_=zF_E|ZuWoP=X{e%C+ro9~mm5(>Tnuw&pjL-yjsDL;y+Z&bwf}n&0Fa!&= z1%BmEA;yWR9I@+lWNAj)Bj)4>JY!qwPg2qd2Cj!qU|@@|hgYaso0{cpO$Pt@c6VCg;ni1Rw)irXw%&QhtF ziw_|>&xoMlOHLZ4)KODjMHq%xfWx+3g>|6Wf;_V&VAPw2&qDMmQqV#ns9gN~%%>LU z>e*_p?rN|8YOoG#u@3*fvEFLhD{HYX476Trw%$~-ervdnYq_3lx~^-xzH7YBYrWoU zzV2(k{%gPv?7f-kuf7w^x`;ct#uV7Lj@}53#K&qd03CqTW>^Mx(1vBu27KtdcQp#7 zD2Wdt0u+!ZjtFh07;TL>ZPi|F)^2UrW{SLk&DS0S**-wH^jcnE4BVW{E&zlUrr=VX z?bH4Ubi~W6CT*D6fdUwd*0vGTe(u#yZsDG8=&o++zV7NaPV3%o?Cx&v{%-FMZ}A>) z@-A=lK5z6+Z`R(G^{x`yes2eW?=iqn&jtzCZVBktjHM8X#5Rdz)<_mG0-O0ojM(gc z(1v2Z?vdaCjZ4F<{pODQ@ zK=Iz5%?=H57YA?n)NTpjfYkQB2;W2yckv9t@X~(n68CT*Z*ae;?ic59OAhi12kjzH zazx|qbpdZEmv1SbawN|HD@X0xh-&uyh%l(WBI^i^Y=kl>O|y}LG{^|dCWZ$`h$gs{ z_x2DQ7i}XKT{*XK(XDYL-#{Xe?$BjzI~R%J)^jIk2@x-J5g#`uPo6rDZz?x*5C3tf zX7aKSZ9t#%7SHn^2l9~kZkecZPZ#kL=Zh$3@F?H(PbYO$A9W$8^FgPL56^T=_j5DR zbTsL1{eJ&+LU-^?k8~_Ym^lCSDd+V*&uI&Z$gTZ|8+L>~)d4eaSriCcf>;L5K5YcB z0b%5G`4;pgKlLh~bxVi!LZ|Of&+$etavv^oWJ!VyXLUyp^41Z8D~Y5%Hx>TVM25uXTQ3_t@rkTvzoQ7x&_3cZr91hrjTA z|BH#&?uJ)*jE8XIer|*Rcu7ZzRL^cY2b^+`Zi@Hzk+)uz`1Y7E_P*Q*O*n{Tw*^5> z16$Z%vt<& zHPCagZ*Vuy`?%jiKi2kB|C3c$6HABi*QDTCANl2`bH2}dO;Hp34t3&2K>b#7xes!U z;1qjbzFCF*tB<6@pLvZhefn1VG%R^ozi_^{eIS5pqlfz3w~fR9bIX@=T4no|r*g>8 zO_?W)5RZy3*VT+z27I_-=|9^f_<5h_dG>7v13w6SSO(8N?IuWpDnJ_!n1SZM^Gc*~ zZ?DY7=W-G7ae8O>9ESG+K>d`b`GkjgtA~I528at|u5ciDWkJ7${VWtz`{Fvp~WC zM11N*;c^F0f-i~gM4E6#K?_14%vkWzDAS#@z|5%Gg9z9j2bN~-XQM3Iv@F2_5rG4T z2#*V@2$&)?qKE+n9|(!UCm{}nQF^LXD5kFknF0Y9j-n*)&B!=IGL>vN$xxySN%c$}wNAPWX#U~fI?_xC>UxUBz^woxNT zPg^CiRi@=K+GrDCEBOg@-~~~bgqsBiAh424qm{SOOBhs;8xR+Mpp;-Vb+Fck4OtjK z4G<*plo`Tta2kdpHuO>tU@Q?{h!@%jM0thbU==|OF)+XcZSa8^Wf6jiQ&Ntx#!?l1 zU4d2&C63ike}O3$MHtXQ7hP->GSuRiE6frBi0t(k#CtthDHKsD9K{j>KCLlJSx&;# z1~XGIqy!jirDtSQ8A=Fd2i&ow#w-HNa>j{SefcE=BK>5*789tE!U9e(W|N?s*4Ntv z=1Jv*gn^2u&;e%D5NK~HtP#|Tas?;YUkeqa)(j$?XKQUfed*<`ykh^A6%K}gu>}hX zHL=E9Z76}j1UQ&+h8Rr@7Ft4KLIf#W1u!B6SRtPQ-`I@q=yQmF%ldL<>FaAtHQ z*cMBgb%u<)x@3kKED(X^1Qtq{;lS`3>?^8$$t1$G6YPOrSy6E-P@y6gw%r8IS!Y2T zT43;nAD9X8n+h%-Oq2mps%&3q^qFNPQ_U#UOn&?IV2exm2q+*i_<8X&f=f7)Z9-M} zi7iJw0Xc>RO(daUT0pM4P)z+G3hi}WzQ&PiPxnwX$t+nrz-=uK0NKGdbi~6J*T@*@ zliT@vuS-LfHQhYCBW(0o3~)4rescga93-AVqhNW@+_h9NF?a6|@x#D^s?iixy`w zmD#oB4893K5~>(C*qMuPg2Wz6UT7FPb*EfYOWeJFc`*op(lM9HBTJ|?m?@=)L`-1_ z3#yVE+<{?sucA_)E~b!Kq>v^TT1y3zDIq7|ONEDGlHU}0$$DAEQO`sa7~0@O4me>3 zs?uRLId#u|7-9-rs3kb{=1Per;R($2P*`BeFO>f*N{TcQK&qHimJbR5C1KD@P81R; z(#TU;E>R^{wB{>5()EHiDSQkND0I8FgiEz{DV05rm=8m#jGhT6%~SoDP*W$QBw zIDiwoSrY>!bDt>rBU5)GL@(B%t~42AFPSnRcBGMJH6tB62DGznEW|Ke^Q7eNG#({o#DVHjL@eGQ6%(=RnJ*5l|%6Q3?ZFy zP_%rBg8_SpYv7^-R-SN6Nf3cO#lT4OSg!wyRDvZR6IV?OAV5aH?GAMeX-r0mv?#L- zN=+^_g$E)oyByGBbwAn}>ZoB2Iw-?sv!fUUtU*CNHK#w5;!_iq>wAe0X5$1~3&owy!8HX#;k*39$n}W~pT;V|uL?uqnt>jw`&5SK6=zNOp{RR3b_e zoHexxyzoEoNr7D?wgL8HG z3~F_T8#-?JWm+>ej)KP2flEfN3LXCqbA7~MnE8+qlXaZ~P1+%#gy5qQ%V0`?wBeFw z0PR2+C<`57Ot>|~GON8b!*{6yQ31x3errIhDs=*9WP%ErxAbKcSYTcoFiTPF@@PNW zS!N_UD9bH*Y>Lc7#i4BpZqF3uC==H>EakT>@LLW#jM2YpuH`T zvvI#Y3r9ZEk8w$hNuY+qBthVTi8*cgM29(uaX<)=y)NtmdJqMAwz<)@tu1B%hu?*= z0#cPplC@f{W_u-fYG|QV1{`Epw);1l`2dh%X90F{td@;h4+F5IN{PD!LP;eLC(+a! zGXofL`D7CF{;U^9DzkQ`iirPhhv*(M*MytvQB|80!VHBpSpxs_NpsJuViZXsB~H$D zcM1n6!3-BwlYJyNTk>w2OiMXqbF*14%YheiV1I@Y(qlVooh;^tt5hj5OXTT8t3^{G znpVxP%%hs7&%lg;mJbU|e#7q6YL~HgsMhnFQ>`CrHMkiA%0j53aw2}v@c!7_E~SKF zry8n||9j-VXjd^7+VAMh8GzW~k^uo|8QnXqScF>g#O6*RV9+96divm8X*w&dGlC$6 zp!;bt49;+_kh2=JP09sc(~M#vgEZt%1n_`&i}xFZ*yjN!n0Ii~=DB<{WZb$q`SVbc zaSo4cd0!<#m&R$YGmHNg_~ksmABHWvcM%!JQiG0Ai(bIK~hB++)W*}X&pOV zPIWMkN#xsW#99aNKu=i!1A3F~#nxarOWFzFb*Mr5=$r8*V5x{4to)7^J=l3wfu0#0 zj`0`;u>jcNkoQ!TAB4>51(@Pw3#-kZ8_^A%6RFd>~XtxsddX&$lU2Sw&YEip@>%S(!1(&oRmYm`k}x zK^V*vhNu_l$%iwvV2c0&orP6_nI#h8XcpHsoj3X+V%?DJGkewkgIpZU-4wVT(nm z8_Y?gB%}XW4nxEgFRg)v$HON0>Ld=1uTUlx}4@hXoLuSMK#vM^T=c`KFDk`mwk!g5}{lX zs?Gk*;!dcLD`geIoXv2#B*D~?b<)vs%?NCsCLKLji^ZCChK**d-_iWR3dm;OVNliR z4R`1{`sGr~zfDs%h191v-s@QwxU}X{px&&Tckj7VyCVzp1iu^=@0tKv4Xk5S& zP{pT!8rg2Hh={R^S#jkBcwf^9fffpehUiLIi5Tz+ML}hlL>>tg&dP?MrGq_T0Qlzw zY6ni<#FHu_P+_FC(GiIfXr{1BUJ#09+K>);=xHbpxebSPJxYu0 zTE&!%+QDYvJ;ls@1xK*yG=|w`X2o5C9%!<}GQ8qV5Ym2TCplUKc8;K=66MYPfeio6 zQl(OAr&j6@ZmOj+C!pcRZ?>nJvB`0j%J;44r(V~qdTOg$p@)i~Mf~7;vT+^XN<($oM{b_>Zf90rh3mEcI8B9 zT**{Mq*g?Z{GAtNjv+*XktxK^>`YCpqO{(~ofZkfRx741=es!TvwrLdk|Vqx);Gar zuYl||K19K(E5>F8%C_srf@{l~PI{b5dd8}Cd>(AEYe4C%&(>^~c5BTFs15)9Yy%qY z#ky={z=zE8D$0gy9#X5+er0Rn>rVl!yuz#sAnnN@TG~{{qAtZo}La+7{QA$p@lev?aVyYexB{yI%G47F4}%7p_Fd;r7r9C>wB#0 z>rU?JM((p-uHf3O#q#a!rY!H0tnc>j;M(rkrmXN5uknT%g-OcT9&hEkF7nDQ^ggcE z4lMKX-}Sr)TMeXtY%lkA@Ajr>V}wYE{Dk<9ucMSN`YP3)u5bF{DW3mYru)Y4qqGM! z)i3?FN12pwS=lfDzOOyX?*{;I`wlPxi*NNFFu~&Q{<<#$H*oqku)dlv1W&N-O7H>~ zumK~l00*$QaPS6q@CR?*{f@8)lQ4^zaQ|X3{RSupw+8y&Z((FFr2beJRV4;hLKWaJ zQMH5~NP!RgaGDfULH*s$6tNNCOq}745GSYbF7XnlsuM@C6hATGMRAxpF$HI_7H{z} zPO%p&@fTY$7mxA5gs~ZaF&T6186Pnlx3L?qu^1zr88cO0)UmScR-IJA-Bb?gm0A~x z9xC=^(co}DF`yhY$sr>FMlSLfyaxdQYW2m{;!N@iP;w<-GA93LvL+31cvM%p3FZZ%9`?4+8@-Gv> zBcDtNXaO>R!89DfGBbh3oF7M)VrF7*@Dws47fm8_1Yg8ic@ncXe=|7evN(@3IT!Qa zt#TxXA}8On(TX!W&_ zOSg1A6SGSrFh9pMP1m$d*U&zHGX*nqb0~5m>v2bSbm;#D8bw?58_??7ZL}eTLqCNB zQ2+EHmz+bVvPygNOLY5xR3uh zkO#St4>^!?xRK{Kk^lFRFZr1!b1OS}euZiLIs_X!fG4`7CwdwWw|f7pMd{IbS}3?>FY;7x@t`|;co({;Ble{8 zIjX0+s;@e$w>qmkx~fOIGLuH4yE>nfahzYePqv9s8`_(fcp!5m9x%mtYjHy#JF?rl zvM)QcH@mYVd#RiGvrjvS33|OUQ*=rgKw=&gZ<*7d_G+z0xN=(=WZ#H$BupeauI_ z)Kh)cU%l05J=Sl%)_1+qkNo@qy3Omk*K@tu=Xon5{mnDUn76&fXK~MOe7Xl3_J%ye zkulY~z25IV-}k-W|9##AzTgi&;TOK)A3owIe#@^t<7;!^D?a4&eJQ(r35lWm$v7*I`7$IWZ z$g!hGWm_PI6iKq=NRuKzW<<$ykIIQBU&>r4aAZx2Cv!5~sIwu-nFM|I6bcllP@6@Q zS{&N4sne%^luDfnvMJT8JWFs zcJt1KiV`eWom0;SK1vubNVa;1sv)}YZ(+xP$r9Fkm#^i^m@`|Z%(?T@t9~@1J)F?9 z>C-Q{a&DuBHP**!DThWaQ7dhwp+&#G{qd)1$dG5kj@VnX@1Sydcg}6RFHGhop*NSF zJ8eqNQT<-m9#=O|?;H)o|INM>d|RtL!>=rDHul)XYGmIQ@0q$Ak8a2-H)`FyRQtB! zN8f%AA?KJ^CjFP$Zv-Moopt~|xD`Uq?G@l)5?0keRT}^nN zPkEUEpBb!~0osN&owyu9CW=_wKqk`2BXd1wm0w*!3YQ^*(-7dFiL5k?E<2 z$5FPJrenEzS|6~o{~8#qw8q*crGlcF>xi-*iYSS#?lxMl3Kn@QkhtzzUZH#88fLP} z5*ui((PC$)tX0>za%I&Zqb}L}0lD&9Qe2oz&Ess8siX*ibDcc9D)Yc1at=UG} ztG2?W8(pISTiL9@aRQo{ruN>OthdGrOlGkMVvRCro^N_9w)sUhLt+ zv{qIxLVWm_9%rg5>$=@j)^m^O= zt8iXQJDnTJQCF=rgIgUyHOK|y9P-0F@}#ZNMDDzG#}&Wp^|odsO(@SJx4kt-J9DVB zL1rKAHrqGv|4684PS%#3;OGhjvy0%SZL-faXOu8|9cg_)&UgQIGRJ){mwCkFHO#lw z8czy3zx#UbIM|=dy*AqvNv`_qkZ%M@klc|={Yvy(CoC%EQm4u06vo&$Tv!5R{ff)lh~2g8)HyrB$$ z;fvD$|3(PG*U1kfMtmHBk|@C&CJJt~+o27e$Uh5G(SILgR~8dE#oTQXi+uPZSdQnJ z8J4kUNtqo7J-9{?D)5DB++n=Lh&K{yF^Aman!#>$uELp1BGCg?;6C;}yFda*hty#l z6S=`F8ZV1mW$-2FkeYMeVOotVp(DI3iq6&=*f+3B;_sHwM$|? zQku2IWiY2n&5CR@ml8DKRk8^}f>d&xLX2b;(|NyCiqL%XQwlIi2|i$cvxY?>Cp7PA z|H>b_@|@?4qCK}+PB8NGm#`d*HB~ZDbsmJ9SS%$%^(oMRPV}D*%_v08iP1PdbcAv& zs8>jrlx3>0ATS#Vd{FqG`Y8va_3WqwEjrGB&P1aUz2im=szx`8lPchR0lREA9^9=)hdOC;2gJ`|@JrQ`->I?;i=K`#W2Xiht7Pmd&2p*c0pJg@rI zUH%EC95pLhx!St4aoCQ*(~GpVs67QAL)RM7s?PPSM|~}9Rr@>H|Jv58 zlFe;y(Fs(@u2!TOtcyLv&{*9X_qet-Ze6FEz~b?bDkkj?%>;9r)5=P>ol&ep7sy@Y zCilDGg@Aa+OWyK^*SzRWuX@*e-u9Z8EY_83e5K`H@7nji_|30=9ZShD_;Serm|WO{gOi86w!^YvY``w=sIjf(vU_7 zjQ6}3lTw#J8wmBfG@t@fn|cGBPPMEuQ0i8*`qi$EHLPbX>ss6T*0|2Ku6NDrUif{B43swEgXFk2~DwF88|A{qA$~uL$8y(Gj`p&1eezQ$HppQf_M8xF^PVxf z(JN2-myrAxrBA);(Y|?-qa5g~?-k`&9&@OhJ$4m4#KdFI``w*81`H5LEqbr@x)Yz= z;1>DoVSoJQD=r5IpOf#MPkn>`fC|+QI^wsVedI@98PHdI|M$oLZSl*@_qu03`PbhW z5)6U;3g5o`-41_pi@N^!w|v(1MlM#J015=5bNP3C>Zf7zcYp|(fC{*P4A_7U_<#@? zfrv*Lg*SlGrUMq}arZ}Tdn7G6fN}$|dl{&DFjosyz<47_eRx*{G0=hvkb*E6gKa?p zRZxS{)`2pZgP{ilPw)kgpo6`4fCGUAK$tdf5CkY#gyTj4*ryB|kO0efW&Ou0tndu~ z*8oabdbdCWc%T9W*mzm!VJtX?VOWM{C=nfS5E0M?RG z25G1abwC3vfDlYjh>d6$wGaebPz4kraY$H--_`+4a0?~S1wwEEO{feB(C3QmX9Yiijiw=sEw}+p zSO~*c5mAr@5WogJ5C*|W5S$nW4-fRH@0R}LI5~q(e5{mj8pfC;?IS%=74Qs%W<)8_c&aML|UnvXGJE01pDuj3HnNXekhp zfDnY3mCCo2$M*w4(1`~Lmr|hvp*WLE5Cu)S5h3sZb_fXsAP`T$lUdLKM@R)|AOI{~?pn=$dI0a|)mV_#}N<(o|*yh034_0?`Np zfe6_^5Nogo=)wTaP@8eknTSY|y!oBnWdbUI1W!;4r|A)1IGO~i5^l!;>!=L!mz@HE z0cju*RREPkxMhGzgEcsz4+<2Qh-xEx8XItr2En0Yp@3I`o~qeRspFo$rFNo#mT1Wf zh_IuJFc8e(h614pEE$dLzz&=c2ZNZT@L7^4TA(Cw0pa+CO%-;Xb_^{nd<_hOBEu-$XAIJake<0MUV&wp$?7! zl6I)1AsCe>DWGiXfolh$;s=q3|4I=}6#zmAkfUsg zxRmRCf9taWICF&?uufOGo?CGEifMASVovC$q+mD#K?mXB47@`C6{)x2cez;Cdzu@& zn0LFlo4dNZyM_y|IOmpv3#zg^yu@3)ylah@=a9Eyyv$p+pKF1kOQolK5c%LDeUJvP zdjrmEy8#z_$r-Go|N6b+JHF&wzUF(r=$pRkyT0t(zV2(j1{<~C*O_bw7qWW4_?y4_ z`@YBt7RWh<;7b<#d%mW-ZO41S2%NwQyub|Hzz)2iUPYz&ND%Rm5AQG!eUJqCIs)2@ zZq*m27QwP248Q;^gCl&xBOI@eCye5Vuvf9aFdW0zC##hw0XBTYIQ+jljK9x2fYI9) zIEt1OD-ic!4)k!u1G#+nmZ-hQvRpclC>+HkoWoLF#a4X9Se(ULyv1DH#aXPvch`_D zOnCl#!Wcotu#3iMyk~0M#xfkk$@jo=JjZlg$98 zkk#tNH*CUM{~W)9AZ{N)##8ae`#YQYipXs2#+VGlJ)D0(ELJnI1GFl+PDlfdE31O| z3*0ua?1#uKsK{STu#N1<9s$XbEXnt~rIW06nf%6^jDMXxQ(D^*K|IXF?35$0x$u|E zP;AA^47(h$%Q)Q3iQJ_*tT|{<%+9PS zS6svz1dwI*yjA%2Fs5Ikq=j008tRAr`^4`VF4mK5z5UOa4pS;T*4O-lbYP6w+-9l z$(@zG+x7k5WPK3DT@(b)%U404Gsy|b&DA!|-Q`W!-A&=a2jF?J&xBd35?~7kVFK3q z2&6#bEZy7?jSI4Dw@gXdoA3$T?Fl9-u>`?tw;iTK4Z;%f)w^xs$IYrF+SUW92+Mrq z)@t5Qy9n^G2C$ITDgcUwJILM0vOVz56(QcN4cNCDlYolJAF<$6+}j5cwi5o+2yU(Y zoZp>|iJ)5ks zhLL{AeopCZj^v+e(io8m8m!MA%+CT*0~dPb8cx+HY!K>D47%MB?X9v_T>+Vl;f>%3 z)!+m&pvHO5)Bf$InLQPipaYIT=TcA!v8@!99tz_L0I@yU=dR@dUg>d7*;kFjryvYO zuGdphsex#B_s-b5E{oEQ+NmxpmcR%Iq2KIS)WMDrs1E1q{^bMt3LFsV15fIzp5_w4 z0{Q9)!oUi)2a#BB9q+4vS`g+S z5Z+)APCx@ekOnm1f>N$l@+f5k(ex7m1XCacS)S%eEeYy?;W*rh2B8Ns;RtlV4l*zh zb|4T^KnJ!U11PWqkGm1X&=E*a43SU`2VwKdKn%nn{mRe?WiX$C|4;lF5%kWi2L%8C zD%$S<{%n>m53E4v2vH7`PZ7fK3bIcS5>F7UP!FuY3i6H+84nQagsocjLqb7e0~sh| zSdbwVh7l!Bq*yUx3qckc`ij%*mqulgmMz=1EY3ENDOIjy*>YkLi6z8c5~o?Mq!?->%2qQYEUWY`Q%%prGR^2LV_@N73y{VE zfHsS^eMEMV&Ofy4!k}!JB+^ZpI2drCkw}&+$Ud4FLdQLZLUG`wRic=voWszPrJh$L zT16IgULhz#bgpnPwg9h!%ruoc66A(mD2k*Ji)fTcBpa1EVWLPh;)J9)Dk23jmn?AM zml8^d3pR>i0p$}~7+fWx5d{R~Erz^mXa%x5Jgh=5DdMT3b;6XWo>j=2P#Ix3u>c){ zmTHKD5QRyHh&3-#3J|PhQ3)$} zgVZgC2Jj&YDl8iyvxp{;$g+qyT}c2xzL>}W4mL2&P}Cwy#8wntgYW`Tnu(|xB8ZWw zkw&VS?;$-Z;Y5mdc%=h6kit`DJ6n>ak0CmIRpwdai0Dq++6vHvREn0fsJ&;ALrsSL zB&x)v?og9%TH}OhWk9<8t5v0V^@xO(0vT-ZtCWPY$dVsc`AiwA#IgW^seTBB!#&d! zMh3JdQY5r(Geu8p@(8~tf3>4|DsA6EW9w39~e@K==)ao~GV|P?>rf z0c0sv&wb@VKC4tlmZrE2F-@WwoM_oZ zfFvX#y{sZkxJwZTF%eKOq6-xfMkvA;|DCaHMMPA&5=Ah^l2E{b70;LmIyh92bD%>C zp@^X^96%PUg~9?a93GkmHj$__#1`j}nuy9!B8i|QLlFt0GNyttfn82hccWqzt$0N& zCdvnT*&CbAvA>kmVq}VXj55xExQP_t0YX4Q_A2570YHETNl+X^z>tXyu;2`JNC9D# zkpj|0>SIz20xV9UiA40TZ4;@4AtW*{02HedMkr3IDlo}rI8q|kTahw`m#Riqf(}B6 z$h)G)n2TW25%LkGk64hp21+D2m5@&E(l`-e5#?T~$=82sLJ@QTAPzqm&?*9UkR}X7 zEft!dO3tCBf-&TaSE(BLBxIk6|LE@=_%qNC{lbYzgaTzD;lv4Cbb~lF@ELLFQA!d> zJd&(LBpM+gMO^eMDkMo1O*qVw0)(lE#BeGpJcrCoc(Q_kNC?nuAw!+$v=*#leHOq< zL(~*B82|zuastEz9KtXldg&Ff@MuMqp|$nR;2dzEh}5=ezbH!4jaj5=O>KHpyYW${ zd6OJo{xb~MB$6e!5S*hbP@ma=syzkxKqeOOfd}B=19=2O1%z;h3s{W@pm~CUED!{n zTp$B@oMK+2$hfWsHCGHM!vKun2(L;DG7_-G2JT}*=~ZT7W$=O+0s)uJ@nSY%iCq z;DpWM#UP3vgrZrK?a?>@l2ybiPoQbbr;)OwZ%?ks-tt5LA1@8DPz=|k9F>45TNCkk4 zwvG+Vd=B6MD~_cM6)pg#fDp!@3ZmQGCN_N)$XXdJ@Cpu8=)kh5?48CComJ$B2o|`4 z1EK)m_uz`Z5ss-$XNpr4r&z@+#>-A|5Rp4fiWbAb#c*hA6)chk+3>2g ze`V2GPpS?LUJhdn|3KKj;MU~sT%^erNX?Q*`z;3Ln95t8BHT`s-+?vgwZo#qk~z!E zig=94sCg|azntdO_6N0besjrKJ5IMXsKiooK+l9Bi=IX4qY(Thp>P$&M5?t=eVK#_ zl+@3QgjYx2rL-U_ed$X3s1cavG^WitiMrkDA&GVkEdtGFY<5x^&)wIm36-!5-I8I4 z{ix>Nau7aSRIjC!h(YJ~l%{2Iv5kFfWWNf=VR%Ec_rehsyZP3wP8CQpz+*_s zG{jiSvtRc-XA`Fu&8qIU!0Hq3UrHIa0~qXF4~?soz{SgQ!5*FU{A#o``P+vLGglQ6 z(3klUWYoMl^)+s*%6 zYfJ-h*@z%OshJyhs)=0g4@AfTdd_jV^Q~uFD>~eZPIk|I{&OtOL6CpsqC}gBQ)v?% z+vnbK%}=bios(MU(k}VU_Z{^(TV3DS2KTsGp1rD1o$6TUIitJ2^Q)U%dm(2#s@JOC zvaj7VkESlhUlj3*pEK_-iZn1JJ?V4So$mn@e8-J!@YgJ8*g8l2!TF7EYHyqEnVV}1 zqWEzfe_iY*272c`|M^A}XH><<52Znm1m{+%Eg(zpZpyCFaDf zFY!>P|9#qdGxuYHC%)Z{fBfPnANj?v_{JrOsU$@|Npk*Y+d&@F*Mptsmp4nt(oOyB zXa3x$Cx7|P@ADx@L=6m~#6HNu4}P$N9p69yqsV@LZ~9X8==LW|mhMf>vpwvKHr`7$ zdONJjv%M^$xVbn!@^Ul?RK5s&K2W%)-*+KMn-CAk;!I3_~#liK7#eATW|K>G^?E(#WdWpQtZK0EHa`Z0atuQSd2wk zoJCr!MO(Z@T+BsX+(lmOMPK|yU<^iK97bX+Mpv|(A;7clgEUjDj~MumXQY%NnZ{_W zMt!lyW+cID+(vH9#yRwlC*(#KK$Nrifk*R3bWBGNxt_alG?y7eqLM~VJU=nIg}t-K zzc8=3s7Lg26n}@c$9itIO&_d>w(BU96S-^N9jvA{|MZ` zBRR)LaYuywNRSLkk<20!P)LUSlSDXyhm5{wu|S}?Xput~wZOw7zo&148zd;!m7%mz%l@!`RC zbhNn)Nqkg{DcH!K6QdE>OxTP~*%ZN_yqj)-MwZkOjMIw&r~#kK3y&Ot|5zy_Q&fT8 z>=YdUN8JPs5jd~1WB__Vg}+8}OcE6UPSZ=vE7F1{_<$-HtRO(S+5ArM49_dN28lS# z08z}vydKP8G7Ff2AZQMvQVANs0CTL%eDO%R%SHn*2m*jK(?q3z+)5Wn!Tun;ERq8h z$bu?Zf(1xS@qADSjZj7*&xru4=KIXwbjs4y$Nq3M22g_AYDS-2fF+oLl3W2HkN~92 z$kX7*s_aM@_y8cA%(@8Cd%RA0kx(7oQ6A-sd{~1uhzMx_hD7>Ii-XPvoX%4Ds+PzE z%6ZBStp!UFf~IQ55;e}3kUkekf)$v=%A`?$d`~Bgizb-TeBw|nVgd}%8vl;#Q8#^4 zI9&;DSOuU`ONQ&vyR3jrV2QI#Mt$l+Pc$6FGQ|c}tn!kq`jpPX8ORrHl+D5mEqDMC zpn(95Q%k*6Osyh#7za)@hl*%`zO&DU^FEizfSJ67^z$h+eX~oXGNOVFR29A*q)WIA z)l9urT+P))!Gv@`1avTmbO2UN7zV`bOi`t`m~6NRMACgszSO+LFAdeFJXPxoBPuG$ zkkM6b-Bxa;i&fx;h`Y$g@-GMW0c7b#m|Uj*E?Olg|*kA8X)JRSpUCkG>paAxfw`# zB}o6oR)^$RMM+BFY}R(|SCmazhg3nJvzFmes_BtM_UyHB&bb&XbJ6(fQL+p^7Dz1>?BJKMnM4}v&Z^Lsc2 z09xcLS=}^T;{yqY``SZzxW_#Nt|h!1;9JYRT+J+j)BH$!V5yBDpm_r)OJLm-3t)+!tfZPo* zla=s=M0hy5+}VkUfZ3g1>Rn3wQ~@h^h3*WHBnY6MtAd~u%As6Akr~a;qlHa~2w0#o zqK!0y-2?+51h4qn=Vb_WPzPVAUI89pgtS?kAmEeQ2~o3$mVgD7 z@C1p7hhdP531$ce2BI7=h&|W?`mD?!(*)r~U=beSbi`c&sWvOgtTv^omyMefG+I&1 z5Z}e1iKvHUNCbOGg$h;%){Wqa=mdHwg>X#;mjH!8$pr}J;iII2J8**zFkp=VTdSR7 zDz0KHzG5uSVlCccF79G4{$el=V=*3MGA?5?K4UaaWB)Z?V>WJMH-6(YK9xW@sUYay z=}F+i(nBSz$O$A|iNFMlU<8K1gnAISofSBlUDRe%vV z&SXvAWKQm6PyS?34rNguWl}C>Q$FP{j@|=yik5g(e)ZUhAYzID>}I)jxc2IqTbfBt8I zY~=-*&w+j_rV6+M7=xv|sX5RoDBLuN4jiL(KL1~Mii(JbK(5eqKIeFd2YR@ORJdSe z7zL1+=TrcOX;58OO$j!*P*i?tn2u?go@tt{X`8-joX%-brVGzdxy^E`g<&z#Ypy8K zH-zD1sueHDUFsuoUauVnPe=tqW?xYYVd5R7pztf{)rVe4R_2A~4H;XWOfN3rdMthy~-N#t~0)B`0x@_yg^=UDvj(4j`R;GDTLXtVTiR z@SfU=Fky-q2DNa7L>LAxXbDVckpCrcf(T!7Hg9v}Zt~tr0^9WjFGX!D{qCpKfheHc znXy`%I0cQEXIOxRc*r1zNQW8LNTPLfMsM_lLtzfvfT^1D44`!1QPMqxhf^uXKEGE! z|L{$I;2x(3Oh|=9cL^p)Q7(6MR&Vu5=>iIfbA)~*X=Vrv!1OtM041mgA7fSMt?_xJ z>!F2XKdw+>Wn_0)2U52cQ`hi~7zUN(Ht}|KYOnUR#Pm;Pj5 zV1-jxhILqnLdFC*Sci15;s3go_j<2*i`RDw$as8@OA6?LsUk!o;D>$iM*|LmZ~xd( zW?osqgjXQebQlFt7?XM?SWuu}*}m6{&-t8>03PT88emYL?*VPscEQxyx-@z?j);sa z_E+sYb&CNbz0(Jzc%83$YxjA4pQAG@Xs*XZ<#t!3mu^pXNofU!iO>Y6XWVJGdbVeE zDMHmX|I4t&DSyA@uN`j9p8K}nd%j0Ud6IDi8sQicj9zRK@>&u`|Yq{vzQe9|v{%%z53rsPR6eb#UN9Yu$Aiub>B zecG>mU8RN{A+Nx*egEF?{Y*`mL=*em_I=_nez}R}dpo0W|=`3pWDAJ@#mojbY^eNP+Qm0a_ znlR15Bvz+3(p2GRLZDm6k}YfYEZVec*RpNvcI=0@Irs59*ocb45-1%Qmvu+q! zY9Z307n3h<{yh5h>Ps>|{a8Yg@shREuYVlK1`hcI3tb0 znYbT+PeD>qjp&Wn--|&CIV6!q`q-Q@GFFHbgb*U6pN3}D_=1lNHL;E?py3jOffE|} zC75A~IsfL0K^zps1q`T31)FWU=~z)~y7}adQJzKPk-Gqvhz{$3Voxf*kXQ(rg&KM& zqKRI#LIjN>^u$e(N;+wzPeEB-f7#WSCtwJ9BGEAPII|9uGAep1s;R0vBmro++G-X$ zAcRG%2kCIc7r7oa9k0FeT3wE5oiN`}m?apLPzs@<5GF|hvnsUFN;@rijKbO|7gyOj z%@GuNA=8b%)(LD}%6t&S3S0TIE@$nAh+r=f*@I9$3B_~Jrwiqh%DvS3`!B!&Bbcr- zueu5m83~iYP#_w3;V{Gzi#svJ6M|d#=bqj1)dP>7|=~ct`tr zy?C5#a{0P}Y;B6RLRiuQ4DM2Ur@6VpIJY~YNuF&w@x>dTs=*qCK!)lL$9X~7@d`af z6-ppv!1Z%1WsR2MX$t0u!rz{I3?#6Ny8`5&?>+in9{)c4@xN$r@)j-MHS73ay#GJ{ z6GuOh^$vo)L3Kt*(0SYMqQ{(z1W$erd>{k|hOKKkN*TG*0=F)B!GuttEYelf5{ZJ@N{9wG2tzh3%v=)VA5y9yz!4fH7#~_6?LrLKINZq5uh~mm-PhjDGwhAkQ+XBqX5=pHZM`Hit;7%-|@-_@c}TXe9A? zq7%7bS0FQ~$xR-m2yJp$A1O4l$D!saAPiv_bz%yJ%q&U63e#r1!^v6Fvj3JRQBr#l z^2UT1a(uIUNvAl1$BN`34=ibAM1C|$$t}y4&U_{`H?o>DB|&ZsK-WRwGd{Tt5F*;U zo=Flxk+c~q6_=D`G}EchO{yj=icAP0;~51+F0d*eBxW6qnGgf;()E1swzTf_NNE$W64gdTw9yDjYCoHh(LyA(6?v^jOgr1y%61{V{jF<( zE8O4`ceutaE^?2n+~hKMxz24abe}8T=u&sO)~zmfudChca(BDl?Jjt~D_-4Bjg9XT zC91%o-u1G#z3zQ4eA~;~i$nt)zU?eH>YEYVq9nhM;qPp}kzdcM7r-0IuYL1E+m4KY zy#_wX2_hok_)>Vn7OwDxF|6SXb9loY_ArP)EaDK4n8YS7G5?BBoMIKTc*QPm@rz+B z;~3L;#x=Gvd<*Bg?rnB2BiM0z9*hzcxF8xk=tvi&D4}v$BmpsCffX+zDTGC#$^xkX z4H!0pGeu!Kw*Xz^Rt0^ETM%&m+$H!?30NC+6x`~-M{`+B#=cSnRUtBosR2`_c3 z1#NI}i3}|wX?6k66q$tBQI#QKkR`jb`BEB)fdgQ-2m+#zaw;$!GBN)<;LUE{NYfM};mAaxutPz5PKe7Er~1phcq6zyT@fa5KQ6NX8k>|{U4uZ+ICCh)%BvpnRnjKfkv=ZbB~5VEX{vja>8vd_em zBrt#p2tf!=Ao~=Qu5cJGMCBA`J*rpW0tRHE_AmW6wOCSI` z_<{6QkB|qL|3g2B0`&~YL|A}FNB|1xK#VxuRQ(#Rn0#aqg zk+~8kR^2J4qAG4g7}5kB1RX7ah9f|VOKBS>hT1CTqCw$eAF2nCshzbYUf}>%$c#~X zEC(_sqcScdGd80$J|i?nqclz>5?a< z)Y7fs;FJs~h?Fi)BqiF0r+9!YY{DNzA|5J|o{$VFgxZ&pAYz|MiBr41=wUMaDW@NUIh?A>#+$C03|PR;9;!6M8VSnP=UrBk1~nWDCHwm zMx|6vB~@0XRbC}lTIDq*!RQ6Rtb`d0gyqI$1y@cTFQEu%AO<|hQP7kPQ^L*4JY`nS zC0*8~UEU>L=A~Y?qeO&dJQ)EEC?CX?fmf2{yfI{X$cbALk1)pNUOpydMy6y=CS_J8 zRss>S^M__>~Xasb2#L=K7`)&OKUr?k9gv z%gBr(NgxA6oPs1E1Tq*yG9;*iE+~UGXo42Qg60B)&ZodRMH^tlH88`6WL|%EsD~Pg zyLb*G=mH}gjV^3NEFeURZiI*q1Bsewi7JHXgiMLPXmfJO4G3gMlx9hofgI%=QGTe9 z4k;|POCltLDGY)sAphwgEQD*iLV+%XBp?HoPA5WG=|LESB;d_KAVM%80+t?xD=6uh zmgyjjX_BTXk}gD>*Dr;PAm z=VakQ(8_P(*;l$s7Q_=4JOLJr!u2VGFpR<}tUxhP=%#MTh=h;$psE6B0{UpGv5qHA zfGU@qWh^=eqm?SPRx7;7<#Q;&A=042Bn+c)nYTU)1#oKzDTLIZllma%52dRr5aUN+ zR51~iM)+WSg#T(E7Miu@tG*6KLG~%1>PwRz#F;{=D-^839<0Hd!ofmBCrH922&_Wn zg1{napEBvcN<^ia1iac_6H3$9)vJMs)AE4;Xz1X+o-E3?#R)+~#wvp=V5%}i>B~q0 zEHDJkLWIm3=$IlY%r0rbLaZ{htU|bEN^GpW4%_%N705a(JK|N!J}uOe#mZ7u=cpv{ zZ4AM{YO9_?tGWt&b}f6#!rp{HEMP%;uBy_iBtkeVmsqXas-yxWf-WE{`iO+lcC5!H zt=^XGq(!aY{w-9TP`a8OFtn2A6af<|{x9A-(t>(NSi=kxbje5NC{euT=mx7?o}oS_5JB2)VNLF(odFm$!H*Wf<#MQB@gnE$t`T`I zwyqRI_(VYngz*0EruxJ|_=NJ7Zb3N5@?z^r2o=qBlL+=22&$&d+#T<3FA@1}ee`4r z-IvbY?v#}8e;Q;*#GpswYvyvV`;w9OPS)De)Y}4RvHFMbq6PJOVv~84XJ9Vj+`#(| zFa%+1eMBomjH_UV6`>h~RY)%EejY+g#TKw5C8B5x675jtVQIk%_c<6 zGXF#jQ-$;r7C(tF-nNz80WlRpw=#;1yZ*h!{9HI_rLimu(Bn1>(1QhS^``nxr zuQ5-#OA+X4GQjZ*D}#hG#3nEVdwy-AHY!61Ek`87jDAEJqnz}DlR}^|L^xX=4Z%a= zE*n2`)fD7H7(*u*10{om7()c1l0+pN@kI7>RdbV4PwGAmCq zLu4{ScLNJmB20uU?=mmfz1gO$L8YrbS zNeS!b=>LWzDra-H6gCp0P|gmWhx#FvJ%mm&f~c!M!Q3nH3Gxbq7s-qr+IY`7Jc*8AAs+gLB!y#8A)J9Jn_+UcwG+z7598avj{%p)n zDPR{WH!}p;Bm_4g1UGa;4b!m;|7a(+F1w0V!Mu>x z_G$!>Wg2;!7072Y|wk+!!LxB?AA_$W|7GC24qv^SF>1lKy$_=uE;1H*?4#fQf?e2Y|qlef9T_5+xn zQRu_k{#qr@v@>I%f6Mh)00wHvz%s)}ezDmVxsg+ODG+%s4EZM%`IZy;VOhfNz_wGc$U5Rr-<~(_ZZplIF*JkF)%^yx2D|pnvd{S z3G*;l1OxCoPxN|SuVe@FbEOZvq{&9Ir~8W7hp39?IGH&^EdTSAEW|s!10tI-7wO?d zfO+DmLoo!}1xR`q(DsIwyG{^$vB!qGFMNZL(pr<@vjf!!-}mWKyv0|>LcoFub;J|v zJ4KLzIv_*Hn`P+!qv;yFGvmg&D?G!uJb+X@Od<3yJa3PK@YMFV#j`nb9|SyjLpUG- zNaXu1>3lyk$;$t?%O|~gv__2U2J7+&(bMN59fTwV!vko%APap+3<6ImYtw6%(W@-F zD?QmS2GfHCGc#E5#P7g?;L+rQF1W%XdIUn^8nc!?-p3rvqrI{3MraF#$nJVYq;=jG z{_pMm2=+bO$FEyk&_1n%C}_f7)84qNNOT)M=7;wJQvaH8ST9AK5=&?Tw;u$uX1?k3 z8FshCaFB$@!-Pju$mz#EW7&qYt9@{61>!QqBHV){s6%DPwhG9;@bA@Z_}J}_MC+5p z5b*Yt8fZfB#8Or6@J~M$7Jo0oAkH6u4pBrMsYA#&ze1d7$@ij~Q@{Bu-q_!g_7`nM z=poQ2a>%Gd$RNbrf~wSG!@cqMB+8h38pyLtEa{Tq02;lt0;)!GZ!i{!w14Mgr` z;pPusShp5MHL-H-%eQyu&fP0x91f>cZs<(m2;vVtEU*$JZhJEG=dZVaAAf%R`}z0x z|34z*j`Qvz3MhClh!xP-Bna3!dQ?Wq zVV;cgNGhq!D369Z9Oy%g)XVXSwl*>7i86r$=?54=%8|`B-Fy?yIOU|sxFT#z2G39M zWG|T?$5bX3fkqiL&q58o^Uy>Q)icpz?&PJYIe&|SJ{s!#DNKiCdIH5uS&RxsNktu% z)KX17HLe{MDkcb5f=H&-17U^r6bgVG=oDmh9VnMXhg?+AU=`&>AY8`6qfM|f3Sc1m z(CPujU?kaOg-qdcQ9x{6DAq7g|5KJBaIYE>)pE@}7hN6e)I~~0+8u_G&7M?--9!=r zW*~O!byt^Ma$!VYc;Bs;T_oXUcmJSv4OTecgFDj&LgrpbcOnxqNMZ=45(o_&aK0&4 z(@N#@$l5YZHmH*n<=Sel+dl*dlmRv;zPPlj@zAvDO*C8ozt4_wl7@!Ypfk| zQIs;T%d2CE^va8GwJ_Z=!3n( zvR1`YVu585Ov=0!?QGXXJpHke^Mt8!%~HySIZR3IqnT8_2}^R-3a z_He=^l6rX6?Y|#?xkvJz7TiHDHU@CZj`RqKokHZVVgO9S0CeyHfq+9Ie^LhW$k3JN zl?fG?2u8|GX0iz3L?mvJ-1VZz5SY}C=ipZ$7u-TA2!WXl)wh(WwFrSZ)Zq?A zRhZ9xZUfD-6iWn+{}15;hc~rEC0+041b0`Dl|nd9*K%gpyozTeiD?yLCz>ii9|fcWilMH8Yac{ z5P1}&2k+@1^1RXmSOg5;vM7GAp7h)$Db0CK|8>P%>tSX?Vno27 z+%sGK6zNDws?JHM$OM+Ek}L6{=B{>Qt#(RjXbVt6A0RR=L_$uYMJ*VHN9GU)COSx^z=L z;DJk3nz5j!>ykObsapg&L9`KO13-hLI1ZL9mBPY8L?*<t4=&8xHec91}Fq@gN}ZEt9R zfxA5xx4G4Ah&xYbcifax+0Zos#&-)lQR4SxN(L|CVIQ+ z6lH6vw9=p#$2O{OFqO_cX3*|&DL4;9{FED7Q zqz&9&QU8SBdYl86$bBwDGU43_0usDJT!Ia>AlrnX;Rq&65F2n10r)V~WLgjddP!Vj z6JKQ&Ibg3;PnC~+z@s3mkicy`8{On$LB9)G2lQldiXLym$AjweDTqv_0uvd@?{J4O z=wV}vte_(%Q^EkynhAvnp~@iOF1MGjp_mk-Ar4GEhnJ^(?rC zITbwUJYRuyqXnzz0GkeU-6#tf#O|O+EZ(t>ArrV92o}^qu&{}9ltX#va7R6aaSD3W zV;z+C5Ji%p105`I23uap5|n_0P?Nd_g>1qMPTlDV=rL1{8Au9Ly^t>mVMAIVz?pg7 zYyV%D?VFo;Vizix1^2+jw$!wd667$Mhm4~jmyi)l80uG^9+tH>R&GH;P>&UyBLt^l zMMB)M4s!8sLEZofeb->Zdk{ky_Hgeiu;B<@n(nVT-topVGYS*{gnC16yi7W>Y|A#!L$ZMg zYqY!*mmta*mU^aMXrMvkB`-(%ob4|2wIR2P1uJTb5O)j&-U0yyrUwFwb=U(F!gvMX z1afg}cTm(=y7&}kQDJ33U_&Dv$8RQ`ZLI8shy1ZA9-~S!& zB~^qcuAqqa0p=_7ypgjL@}PlqLK4OZ8h#AJmxc6P!_?;awyo%Ag}eh4vB2~xwuF#a zWEvBJDu_Frkx&l^DnVZuEtyoC5eQ772RdK~6S6z|fumFeTUdfx!BBM{toq#**J+v9 zQ2e|fANis5z*?1|0dz^G3J=KzH>U3|Iig%YpJm8Sv%S#n&d0|Z~mm z?1BE2K^R=29tz?H5h4d!4|xor4TM69{!bvnER{q+AZCFN+K%7CKp`fO0pGww4gdo7 zULXCz2xn12Z;|bZ$bpnKX3CId<)Q>Z$S=6jm2dn!^Vce0p1Ob{W0lk(~KM4}qG z?;mx8>d=Z)62cstQYDis9hquCc#NHqC2x`=x1uQhF&F_7djHtKx~!`qDorgP>?$7e zBibe|8`ClUgAL?R1hQZN)G7;b10EKEG7#u1Q?g`&V@nc54$gtdsO2yR(qs+^#8yE2 z*kh2+vSQu_`yP`vYjZ}1=q_twG~Pioo6Vq9r!!OXD0u_O1f?8=?MI3%BHp3V%#KVr zLf4)E<8;8-815m0>2+*VJGYZR9>hCCkuAJ|&cdNfIFm2I(xH6vS!(eiP$Uc90X=>`ox%qmKnEzU4^pil0}pXdiaQfjL4{+Z;^!^0!5gYbiKfRX zf$q=Z(dV9XAy6a+g&`FN0@5n2AcVvq(7>fSWz0qm$Nv=M03c2T8Y(gs0?eww4KB_P z5{}W*fJTvkGP%tZ7ZgZ?REdV5YaHPNC8ZPFGMy~c$pot_K5OG#aJ=I16yP8teoQrg zGPQCE5B#7-AL0ObAO!fJ*}&lTSZ_?XAPg?97)?t^-xN;m2XQC>3F;J1gmNP~l1ZD? zO_yc+VpPEx%pl4E6n+E~3}PJ$!WHzh4=0F$`cL*60vZTF3;JL(=595=K+F!HK;zU? zKlOBs)K2g8DYoM3!m=q1%PDH{DUIwPiZ1C4!W}^2-N@0owvzH@;V%;c*VgU}29zly z06=Tt_gpJWKowb&m0~bpRNthU@-&}3bC6na2mkFs7$itg;tvki;aVR}AWsq@Q;R9J zBnfdK!;a7gPHiIgU{{sZUEdW*O|{-4FHp@w6?u^$3Ty@bMixMUS_tA>nX>z^;93b& zB^L6+aE#kR;H4sh_{;zdeg|GBmSQXLSv5jlPj$LJ(@*2EM77ajE3{RK@iZM3UlS4{ zt*s&mAO$i^N-Gv-V|Iu50q__vTKy8+DCoL=&WX0PWLOKphA&Hf7GXhbwie7e#ZqRM zmTBdN9i#w&@}r$jRh+KTAy6`xph!4(RkU`|!|3w`)1u^>mTcekeF7?V@KP;mj!rVR z-tfaSk5*jg^=o0%WBrPKWJ+)MmT&vkZ~ytWYyVq7NzW# zIB^jq3G1%@wDPbvaQxC1IN?@LPH;aLbPu*QvF4=~hz8gI_BIEyLMl6{mN?3!a{;VR zdGLag5?swPES13!^Z;8!*LQyxD0v3XP^SuL;3yg?H@by@`Z9NigWa0T7NM(IN|PYK z%{1foZr=%bx0ieErwpoY3LF7Elh>rQ1#;fjKETnrax8PfQD0T@6n+FmVadY^bQyYA zd%IVE_m^S-)YGm{ERgDkLdCtXFhhd_6$awyEP_N0LPV=>*Y@l5ltB-=sc2=Be=}HF zn}dh4@^i`%c}q2(80i8Q;I^92c>j4R11)S^k+L9YwcXx9Ar=@=MqwRdK^WHIYXu@4 z4iaZ~)onFch~xCP*2oe%V>jq#>@G_MvVa4m;yfKv+xl@V>NUIytjQPxh8sc_YO%n` zU>Z1NDKC*2hS-eVwTN5Sh{q^-Tf}#OX9d+GT{Yp-z1`J5Np znM|SxXsozsp-td<4jO|Av1Xp~>U zB}ZhMEOdcp5R~x@IGjedmR6J@joLMh))c||FTV(5FC(S7h$7sosoR=Oj71qlZghG^ zrhclE>?a)5K^?662LI4dlvzp_&msbR`fB4gT)%qf*pR!nOI3rT*W=LxP`jUAXQ@k2i4O_KG_Mo@XAc3PoCxVSJo3;VO3Zl1f z>T-u@S~MD$w0kZs2Aiu#W3}(Nqi^|HiaV`8?fb zFVi!y#fh-Pt7o;VBs(=8=`Ni9D+_-%#L!A9k(-wE6Sq%m73&+rQRTu@M;!*Dbx2`o z(q}u0>6krbxc>(UwF!J8cr*e!@9Q)~9}5B!<{Ke!fYu0t!lZKvn_z*4PzVhIzMn9H zAvk(t(Yytr(8~UAPiL}5kh-x+;Afq6lv|MpfM#!$vPEz zdddz05`JO|81Q4K01V7^2?*}RRfI-WX}=;s)?DfiklY|>?*Y#A>*S!q0g&vD@JM5n z$`jp9R>J~zpmO?KfY8Ns@v?FrI^+yTql|X0PI)Z}>r`1nK~~t)T}wT)5y<)N0n(r> zde5%Lj;%%`8v9QGxP(j2K+$gga?_YRQ~DDULI9Os!=xNQ$g{-@O)f4E$%5myq>%@qTo|2 z#sA5EymiRIyBqBTKUH@9RL&s?7{L?DVGrhk3^vOV=&S1qp6$V2MML()y;r%BCuibb z@H_v+u9Xlrfs>U%6BZ&gegmr!o`R+olqEK`FW>JyGIun^VCMXfn|sOa9E zIO_LBdGhhT7h(T?m>c+OU-{1~6m?&sSSd7antUbSp8ZHr84{Ezb@-Q``$>#(7k7Vl zzk~`nHd_P(UR0W|Q><4XQw-SvjUST=NRc5&nuJK^iOCf!vS2w0Gp5X$H2-Tp zoa2L_N}D`;`uqtrsL-KAiyA$OG^x_1Oq)7=3N@-!rIv=ch(W8!5P~Bdj#$Vrte~D0 zd9Wbr5$2PUD0R+E30EiFwQPqvn`VVe4L5wI`X&0nVV=K)3mZO+II-fzj2k#-j< zzIrXo_w?)AzmGq^e&APc)q+9YerWxWl|~0uhm>{7beCOgvZWLeZ{E2TA^$<*eK+BC zazXghYXUY!h8%LB@nMN3o`_3eWmbi` zX^u83x*=+lPTFI6Bw@i4vbsJCZM4!(i=uk~Hl*hU29|)|shC!%D*uy}#!6>K5g^GX zht#giZoBTj``3Ra=$LH@&Gi6mK_9q4tg9o%_olxfsoUVAC!zW(yb3SOaKjGQ3dBKM zO{Cz&X(kIUz^#@?@O2kTbnd`Hc6{l>CZCLQ$|~PSX2j89D-fE+oocMc?x9PrzXqe^ zA;JT%40O;!4^4DbWDcPjy#z(9C>20P%4(1p^PKZqPfHjw$0O&gi~&V|4R+XKj~x+K zzvlR|eV}Q59;FGF8!n+c>%?r&--1UF7i90vci(=Ci3dS77$8RBLiP7t+3!&VXGv{0 z4zM1J|0rLfqefHWb9AK6Frmi@P zQ@j1|!K#j*S{73a{E_1)N8t1J^3R`g4`y9Jv1EZGRpyF!zjZ!vc}!fjsR@Z1HiiGu zZ-ESK*jm6OFa4p+Lp0$Ux^l-i3pQ|r9E8@y5CtF!nv8-qv0eL^2fzuEu!AgY;fyvi zBd<9n1vSvY4zMJ<$Y@Yu%~GHXe+b0w?T;xb07IjwG`AA^&?q}>R}YgI#3)KpOY^!` z_ZlO^rMMw5%0L1$xL749rqCxrkd**cSi6Z#agA(Dk^dE|c&*3`kttNDK@_qi#tM>= zZz@>Yu-XX7Kne(safD13qqRh;2~r|jd4aqp0m(?haFLX(&7#T@wp zPl|Gs^Ao}P=#$7i5~Yb`>%u2V3Cmc@(lM$WBL+YB$Vtv}m%Qv{Qq)yT^SQ|=S$Kml zkBQ7=no5`ZNsmoBW-zv}QkcrDrZul=o6|KQl$*RItcVoMpd7G^2f(H|&xy{bbU|2^ z!;kV(vqH6~3O%!_U_8@_&wTdj5hqJpF94*1>E&m6r;G`kqDDSSanhij3RvEdpwEcz zlAp?epjQaV%=_e_4(dd~=}u&+Sv}KvRVx?@+5criiK=v#kN5=x)c8r53238GfzcB? zpdWZ*YMQkn-x(vvL#eHFsHDsQuNbg_CKRL1sQ&ROw$ z)|A3Y)UX1v1PoZf3Z7Ryr#j^j`9dD$g5pz}a~e>g9{79_SX{p(4F2+>VhRj56wY^sVSQn}tLu?M@^YmW=MU1+34gDcz| zJ`0m6aLTGDwdJ^Y3MVvX4Y}OyuHXho6aP7As%@9;Es`L2(BM8K0wThKcpvtsBxu3A z^zCkQH(CcAMAuUUoNRH^`;nJ)F${Q7?X>8U+xjXPv)~mRXl>8w-w4)q|;1Ck=AWKC9E0M z+tU@~0TLM=ux?_EH`!NUQxAmE2UBO+D66ah}ctYQjU z3@(X)F`Wz%KGeW+L$RI^AfSUK@c)DlN8rL9bn<{cbUJSY(eIg0jpS<}K`V{rR=nhl zQJ&D1n!q(~cD9;Bf{sfIE;g4pMUsXDI|K}G$itIB1_@}0fzU+`N)v>=5;^oC1$=k| z8$z&$VsCLRY)Cev@sM9POgaguF87Pib|Bx(`7iFfAf#kXmzEHO2~0eKbV=PsB+#29 zOn~-LcyMW&490DoI8&DF1F2Fq9GFME^!OT@ziwa7G z3bRaVSM#{bz2+b2y4|M;S)WjX8EfeK8qRU3MmilbQ1=Twspodn7!NUKld9uU_Zg|e z#B`5;d`xa}_ssj!7Pfc=D`c?=UxmF033!=I8B=(vd|8?&bhl&*K^jTI8rIb*#O!5% zd#Y-F_f;~5E2QEI-y@C1yf->bN^A$kr1Dfdrjqi6No3eF$(cUbgp4Fxzt#y;DH|qf*|M+Jd#V- zXM(`MO+b-ftMmjIpnR&cAkJZcP!WOL_Y@YiTL6P=7e^4UV08;{f)4nAo>GIlM}bG^ zKbtUuA-H|E*Mu!qgD~|^xDXu4U^!l}Iwim>&?glXWfG~!bI^o#D8_A1#7TSQ0cn^L z|3NK9h=gxQC0)=fbLcC}@eoDO6rco3kC6;M76dIL2p4cD5?FRfkyvdKK;@DWAv1k! zvk5z)0PEt0a7c+DRcl%IYX2k|_Ye*vateSL0~FwV*!Ox&6cOxUA?zVd3FRntgNPXu z0FTHT{?Ud}SpSK)Xk~YlieSlVa0+Muid#sEe(^@Lr#oh( zQy6o2YodU!NR4~8AY4Wekq`;Cz%#U%eYS{;<>*Gwcu_zx7Qk4H1z{7*rYiu`Nhc?b zCWSt9r8#b63-a)dL?;(&VvYgnN$A#qR47}sMT5lXYAV=dNC9&FLXUCtTPG!tFrjd* zRbn0oc2^{j9T`Xp0EK!8d$FgGC25ihSr~@16z`w}$*2|UbTQXxHPgs|T9-Km^k10h zkvln%D0w0(nH1sR9Yr8^BS{DAm=!|6h$29F6gdZj$AOega$-D~fO6AY zvbb?g3ICRBv@g#%jEHm!PjG$$0g(umgA3?-)e~q5NCRgXmUTHrA=!@4!V5~J0a&Ou zN35>B(>^v=do~!Fw;4QfrwC$4Ae~WL#i5$El7b{f z7lO%KoLOComl1G;o6QM4`LcfjNS2>@98d;jCt`#w2r#8JDH=GN(dbRn#GKAap1p$^ zv@i@=K?^W&BhAr2?*U@LIb2cWC_#su?J-wdS2l!Lp8e@LoA3&;V4dcv>>GEsyZ%Apvj7FqSnwHQC1OQ1AOe{X6ncnI#Mzx1c%0t( zO-iT?h=6ckSff>HrB{ljS*oR5%B5ZErC$oBVJfC$3XKzy2o&%N0DC}$zn*Xf%E2X~ zcY1!qo`GUxd$^5=h#m@Mp+&-tK5>>Ant0>spMm-{fLc+_qNY1QCewKAHh**#Z4{%oD zim#rN0j-%F09Y&PS|fNg5*R>PImC|nim+kxgu=Qh&(Hv7q8XV&tp74s32U*>sUptB zVl;t*>iL^g1dIr(c))tGC0jJpX?ii_6Mdp>*DoP%d8#UTH( zD)Nl)nINr+wPhPEjR7EWL`Y&=9Xo2ack4lu&;@RTKih&O8v78V zBO-%j0zi-jG6))iLKbuTwMJnIm~fDIE4f4n5jol`=~yRERt1Cm8E;w`L%IZ`2q^42 z9gMpas1OXskPDhPxvkr^X}c{cdnJN!^o|BJg&Wxm>S9gcug5mEmEtAn(Q zVT2-bY@`zrb8r(E#uHGW3(0T_`umcQq%gja2;jF0+Lwlq>{KH)w6?r)lpNe`z@BzF-5XVNrc}El*d_3-QdwEF0Ug*Vh zyjEeXsJJV_yAz}kA;G2y5mOtf??MYP1;;135Oj>l3`|IhOi{+*3guuJ^Mzr&`LTJ3 zoh^mDPhrR=8N7*{$Vo-5z@nHpl)Pfhcn;wW=HL#``xnK~h2irdzZ?IFKT)Q!yU8W$ zsW$7$KHPR0aXJ<7%h&r5`QWEY>=(IkmOZf9{yoU93cZ7 z@B^?~)vasDJ7OS>8(L2LRO^8wOnamik-pYr(F@AfG(iukFboob3bFtZ@TUs~lFcaS zM;#%K${+(OW-L=i$t}EAsNgPK^-_t7?Qb`r98a$9o5Tg(Z4l&e1OO`>g(zHybFAn1|F5@#! z<27#MH;&^W`VhPMCF44W25iuG*uJ=M&6ki1rce(_?2K*fJK7x)9=r|+j?})8)U)Mk zW8kkE`qCF}!t9F+NF|ED)*HBh%$=|Z=Wq`GHrd!S%ZDHlir@@UW!o-p*<4<{97(4Y zejM*P7A&;5%+5q9g84#4#4SVG48uK5%CUve#R3ezTj=;sjBFiPLh`H znuOL%hdjh07`vKI>XzQjrt%Q*u*#fE>Hm}ioKF80>-dGGjm+ZLdm#B>>Z*~=)E6ff-%zkbd%>flppaYH41i_L6fv!asKvA`vysg%@q0a8* z-js>p38?^}ULb&7vL1AJ>(?v3-oWSZ4i)&YT`(l#W4i=@SUCfbH_kUGi7*VTK;ln9 z00En6Am2s4nAoLUMHP|qwNQ8e@&zJ5wgg|7PG0R?!tjyVM}%C8V%F!+I|F-66=iS( zQY{r05l~4`3q8Q?NpSM}G_68z@(fT+9zOq%(rGa%Ah;535(h8?)~41tFOV*v2%B&U zj9NLuASDA(n)`C?j2scu0K-ND4$+YJe?tgvexp$F1v}0HEgqR?K<(}1+Gl+4t1|$f zCTM1C_RV=3$-oPBy(>utBrOsI-7a&gzzE1d5U`Nu2_~OPu}x@W341dN^}yB1o!zcL z;6YIV(BPoTfYLC40x4i}86UVVY#}qS0%UCX5<&P7Ap|xM`F5F}jI`{w;rBJz$4C^y-0WKE!c@t0(e%?wSfW~tHQxNqBKm}Uh2Z0;{0uTU~ zyYkeL)yeOXioLY}0Ygx)63UbbG;#k6hCzl69X^B@QQ}01yB=M<@r&X{jvXNup(2XP z2@)PnohEKM-rlR^jt5j!4;nIR@(27^Ha7<7TO;(#qdQ+xmt zv`ND!E_4WOnN{mnu3f!;1shiESh8i!o<*Bh?OL`dX)PGaU=l$W2ov5-*w&;)z8SkX z()&DHfDQ~p zhEzcLh4F0KwQb+Vom=;A-o1SvjFCvuN4h2M{+_7IArd)@bJhu=;YV7#A?q$gPCJpW znh_I8CfIWHkLor>x-Kz*&yW9+#;2bY0)|N4?Dg&6$Dd#Se*XQv$||Ll3NB!vz>xeq zD3?)kUj|AEFQkG%Dnb$t>*x_8f}oE= z8E2%iMjLO$k-rz_Dq^A}91%#zh^kmj4TG`(iGj21QZdJ|3W`WWTspL=FA=N6?jXyU z%#tFzoCGsWF~=mcOfwDIj;4n|M94-W88ZW^2P>4Y%`>}tBt;RW?6Sltt6bAKK_|Sk zP(u$zG*LwZ3yz8_fg|+JImW`qpljB6fEGtDEK5Z@7uD*+FTv92tAth@6jW7LWwljT z6)mEJA~H-dNDA|ms5$?MCJpPFHM=MR)j^FjmCH|G^{7q|b&Is3QIUl#Z>v!q|9#F+SG7 z=29+dlT8^G$YYaQK@|IXOCBA1$7G5ci9?1Ns&E2=B-mr23KYD|d7}#0WHKu#XOIBj z4ur5-V50{oym0@+xw2>`CxJ0hPDktV1hF?V%xPSU{qlVtM*``3b+`;L9Qbo3$-ELVOZb`z(1lwhr^$T zK6>dVB39{79Keys4VYs{agHtznM+IZ4&ha*%NN+p(04ndtF z5tb0qi5bpVp8go%ypG&W6hE1QPAt)bFswubz|(;f`W6HwOwWQB#GnOtw86i~LKZpN zk>hI9s67QH3p)^j4m=mGLrsYz>sZHLxT7I5)UHJX!Qn<0z=s8B<|JYWNfeG$gA~jS zC9}}o0BZkmHzU-_Abc<&G7V3Y#rKnFkgW62&<3mQOR23as< zNOq!{3iN<@%5cI%W}!J22w*<$dSVnm;71>D(Uhk|WunvssTh#QO=x)!nikfhgB*x9 z1aM{csDL+|IZ-01pa&utVGm3&Vj{Ul_>l@p z;6nmualSoFpbimvj}Xd*E2?xak;}osPDDT+Xigw&FlE96h@b-q;NT3N#34=Vxm2b$ zbv8^>26s>=(r8^L32RsbJf7+TDg z(z{>=o0leu@PsEQW4Npt03P9hhc_CMk7*>LW)LDT9z%R1gMtSyw4G{FliFYwx7fvA z;}I^pk8>Ra18ICxoeJfPx`}wefg_QYn7n2-w>eB*ND;{nWn;ayKp_7Nn86yt z@!aKT!V(NffNhI~v{qKiCa0;gHcZiaNEC2gNram$~Y8p4?s>82Xcc`JfA z=^FBJk9UMa4OmqJkp9`J^le6;umh{DXk;N|Dnl1D#FIxSy=z|gT3?%e%=LC_R(#>= zpvbcG4=^x_aMZ&fr4GmXG%=^MG>--$Q?ms^a6DNfbQqP1s+4>^ZgQ8qKEPPT9~^>3 zhghQ6-9|QHFW?AX6rB0IdIw7njQ#2eLR49_P*VTO>f=qcQ1HCuGP&=z*!jz7poe)3ry_wVx3 z`DV4v?)B;w-=icFr&ETO84?GBoPPK}F8-|Ru6**BU$`1r)7AgYT!`LC-kbw8|tRKt36GTA^j6H*hFiTS`{0KSHvW+uvwuhK9?~5*D zNx>cD!5;jLI2ZvS6tu;dvH=hVRv-pF*aiSth0o|d#wd`~8$utX!YULw03e2C&;tNi zhK1n-4j_U82tzU44H+0iGmE|-ScN8B9a>on&JetTvBEi|LxY12hKPhbYZ) zP!z>cB*juR#ZyE@P*lXvFvJnLh}r;|3=qRHP^4o+oC>%&#n=qc3cpG8#b0bOM`MUr zc!eO?mcI}UR!lbkYlt>nMmuZ6XoSX4oW^RT#%s)wXVk{9xeZ!sh*_Ydh6uP$(YVBT zr@AP|gaXEOWXI)`F~GYdcC#)n5keJ9s(Q4?e7r|)48V88hl$kOq~wX6-Z6OP$~ zvYp8_`xCRpzytciN*g4Qe|rdGm@;4+%SEx0g8;~f@H4hV%*3oea7(6iQ-muRNUBV* zjI=+sn1edF%ZSP(Im})SwV={mZVvddoeJ}d@0U^O(f_<$&?_k zkxUUQ&D_+@k;(wMP(P9h%zK(k$|TO(h#c6ojNL*fh^U0mJeu5azTK40>9mbY$OY>h zgzUu5>>LE^^iGrTPVKBU*9uSWB#S&i&!hjm%gD*gjYtEANJ3j+7zBe(tF#U78$asQ z&;3jZOppX)kOcn(P)z6qQ20**MFwN=PlotUNkE29K!yf222_|(j+jtmxKIpr1r5c} z2}OpqSkL2prvP-flR-z`SjqY;O8#Wg7JUdw=!9TcgkYEmcL)Yp2nKh+(H(s#Ww=p; zuu*qd1RT9l9`lL_ElaK7l{|om_7uKsyv+k+w6Sv0D&@~hFa<3A&WGSmQ|Qt!9R!Ey z&M`FxEOo7o7|&eD&XiHp>}*ptO_|8U8%St57 z5wX%krA|%pg4F6Si!6jkEg=zs%RK+O4A`>NC#%$sxHU{&r5`c?I>Ui8nI=R7F}g(5 zQ{B%Oh?QBHJ?fbfnDi1(jY|`i)mP=z-eb};sS5w9zg}txv`IEsd_`0xR-mMd4 zNrnv|gv$w>MKh7AeAH>B)@rrZYsJ=RO^Hth9)P>QgRD!eBd}s6*QmU=PryCiD%EVo z*64Ybv&0wXdAxF^S9W~VKv1nT!L?o$m44MA`}{r`qN;i&*eaC1WX%?IMZJFY*Rn_# zLjl+v95Em?y4rHTg2h-WoKs~;h8CPkW$=Q>Tvvu2%&-6_gTR3X$`vq)*pVGpu{nc2 zAhL|5Svrid_Ckz_0Ttu0a zh;cy9yoJ~lZ9lp7+ep-|1&~O#vX6*mE~TWeQl-^c;ynr^)xU*Yn#~r5Njr`JLk?iX zyPcSDkj<6|T0RAdLUWc9eB8)2-EvJ<%uR`Hx?C_bjQkmg!X^5^ zJl)={S6kJz{1aCrLqv(Vu*dNpm7v{|sG4iIhBx2^(;F7G;5gs4UV@cXe(cB6-7kso z26&(ti&5T&5MPeShkXBlu0=BypMl3%wUuyP&Fhul@^g)m~jE% zwJ2cfaT$2AICC_K3lISaE&&$KuY)rPa@Yn8w&4sOks%-iiHtDLdj%C>n6}kcgBXXi zOmF=a^vHBE+dVB536hDzx-w>=u%QpdF5VuP^Y zN_J&m<5~wmfd8H+(+cSh{I)zP}Brfd!vr17==I>VBEjg+>a# z0_trZuc7wp+$e=&WVo`O2qQhXD9{IeFbF!J1GP@qGJd#sZ9gt?Em=qfOZAqMF$w%} z=5|iWeEjOb<_#$}2w8XniG&JZE8K~21(?uNR%?Yy&<9GOY|3_PcVmndX*-op!|EUd zgRlo-fGx3^2w|9qRHz5hMzPhT=SCLn*TxO(fJ@dRYlxW9dMJnTEela-g|u#ihL8t+ zzz0(%l}AqDI~#zk~EV0)G~;5kOd6c z06&lq?A{0)&?E;*fu*}0NO*%;$O8x<3iHPB+ZYk_-jaRg>=B}f@J)+GV1qPFgT)Gg z+x?lG#_x-KmSTDcdq@RLh=*Z7?Yr*2)!sKe$)6n9&O@-wMq3J zP=X`Z8ZY61FsOp@cJ*(!iDZ;j_nqFuvkY#C7>N<_YHJ8~aCdfiYOon0?(OXSHYg!n zfK$M9R)~dE0FbZ-1uRH&VHArLdI%?YoAgnh!ny!k=cIW<0PvtiOky{1w|ED(2n|@F zM>l8?mk552W{Ozey+9jHXoQ>*XhK%-sU|Iq1j1DqhD{v?*%ENlzVBP)8m|9c#qoH) zu533=zWAU|&hwyU*%C-kL^HW&6x$vLbqC-h-mhUjvJ+kI!I8dR;Oieu6KLvVoYWD;m0fxZkiF0XX-ahgA-4qR3;o&eEYzc zQc%-skad!YdHTrV*0n$axhQ8p zZhFMO{_L0G=X4MkzO$|A4`O13Sjec`<j3{v; z#fla$V$7&sCb|V5(4#ZRS~S~+!geN$)GQTjDSwKFj3QswhE8J zjVpI9-MV(~;?1jfFW^Pp>LInvYb;d|Y{62n)>QrIb@rS*4X%Vwt6uTXLtQGM^Z9VUbY;v4DRJP;sR~zI>9*AS=jmkcy&ldE-TK z8RVXqTGrMOJ@u^PNssFcvkpBE4U-*01f>8`fs8ykP@VsiQd+5{mtvZ!rkh47%O(Xa zu*nB#I%Fn6rcSAVs4^v*b<*ehLyY9PlJ%oIp_f#4m z1E>kZ2TO(=(O76LJdLL4Fyi)h3n&gF&5@Dw1r@CWu}B8nAR0>Nw;Gn?oPMp@)x#&+Sw zFM=_QZ=nbh%V@?kqA`tXT;uB{gsBJ=L*$)6R!DyR@E5dt*&{1y$xCXmVrm2A9;;LZOlq-{pd2MBOQ}2UTqao# zA%P=FmZeXcG9pJ=U@U8C%UcqTD_o(41cvnx4v7tiTY@Dnhor<}A~TuFMB1pjKmiX} zfsPGH!wM|mp^eE9OT=8}7MJPGZ-W1mU!sB|sH{*0p= zk*NfPQWobZMzu7lO4Z$`zVr!27$j<#E086=XUVZBV;!j|2PSe63at{NAoqz0Nl##) zV^jnPOI<5lH^++zc&Z^!JRFTcMM_4jgHQy?MLOJ(3t>D&l_C78e*d$E^se~de=?lQZa1;N4a)&U^LJ)Msq9D;b7N-Q#O~s-%wddNTzaE<+(j)?u zI;AALg6i2+{Ej~!q2&g$2|m>VH@LBcfDL8=2T~D|wI^^HK3`A}XDA{&yx9fq9wFT8 zVi$X$aoAvAVF3Ve0-MQoWyTKji9X)zVN}g7d)v#p?Urk>yy2w;Je1r(+OtWjh}3q@ zQx_4sH^2hU5?&M`Do=PIU^9K3Md0g^4lH0sd&A(*E=G_;>^H+M}=aNr3c!b_U#(g=BQ;$m`MG@~2s=tnQ7O`afx zRFC;DBq<}zF8M$YqAKFMWKPRMhBT>5ZR%5_+AdIasv^+3wj%r?U@YoR11Ivv1_FTx z@JU<;Y{l!TYB>^$PBpQMZR}&S@fbkvuMdfwhdKDUB1p(Uo~FE~AN=RSFtBQ7qz~)?6w>8R9aZIn8Unn1aaS6`KH-GWJJ+2mqaE_dbZmX(C>RID#N_po1cc@XV!| zm^33^kDglY^0~wTW?0@j*H>Z}tmJ%PPw!#LG<}hxXJDhp%76_f;AscWQrv(u+{OyRTCF|!#n<6M8ImaF1cY!p8dM1avB%g2o z^LMU(Apd|=r8yCD_aMSGv=Mhb61+x!9|Vcd-T2Y(|Nr+(foy`#dCJal-ZZ6#3Y19_ z(7^r-AN);8{dI%{au~N1-wNyw-|Qa%a$pBO&kt!*xGbFVh?_o@Pn1w#Md;qFl$RS7 zKsu!z@3@c8cwi0MApT&7c9>2Mx{#ElU__W*(7YV!Rb2Jdm8~t_4JzRh{+Vtx(DCV8 z7gdlC#>qv90rdTlrHS7mNkj!0z!U@k6N=#&vIKxA4*NY*sdNB z#83bKrH+?a9U1Cj{Dc)&JXK8TSrC*H1t_38HK0@_A^lY$QM7;r%)kVsfFV>C2QdH= zfSVHRfD7#5CUPQ3P+vu)Qx7m;Qj8)BN*x^@5bg;M2F$<*Bp;M@Vl39-5mwpNY}^!T z6Gik{4XhwWBp!*y+x4g--DrUvEZYnMm@F!z_$8xFnM>YC#4h&YZpF_q%FV~go#zPC zGIHZ74HP}`5_#ndG(toWhD0O8!3G+k;T%8;NWmV6z$45>6Rg1u2t+sH2% zxzRaQ3OPCiw5159QR70jQ3e)H3ozhnq}^Q1KpP-W9_C|33J#wA&X@d3toWB z>;R<*Xbs+BoZ1DBGO&TNRlK$y2!{0 zW1$V(sfb%mBIW88j5F$sPZ~t_HH3qW(n>O-)%nWPm>>^IPEvB^+~A8)_KQ<$#zIM! zN}dFoMcr1yNLR9@GPR0O&CBZ0l35NKMUq@w;$<rmyc`O9DCYRZ2IPJMgd47k>jUMnxNowv5 zYMfLnc_(<%=UVOCT{afR1liYIr|%gjT_jI*YD#a`XMuWCbcSHXWDbD}VLpjS50;jJ zN+?2I zXLn`_gTBUYj_8gi4d7^iDIkL@XlO&6C_%sibslMT_Kq69fI8CJReDa)>=mPdUDnYnID$qxl41qglfdEu%yqe4=G?nQ|-(r1hzLq6H&2=Jf266)Rh9q03g^Gtf;Gv&AfUoQ zSOf2zD^_&sX@&&Fw17!rY|K(-y#-Fnd|akwgakCgp%R4029v**>{%L56F867)Twj9 zkfp^XBMd_*fPz*H!#rR@DENpnxC2&2#40R6Ny=>3{!2H}6IU3WlTHeQm17;C?JkN) z#f?qac7*8gdP?cW`GPE*13}eCqC}K!*aId^lxLNKJ*2`gfI>Z#X|Fhd*D@|7 zJp>_O2nDQwQv|_mHiXaBjFv27G^Q=IJ)1?KBZ)PGCXg5v_^c@SYX!E>nC0m+(8DM+ zggc-@(^|!N&ckeZU*qa7z|;>ROxmgiRUslBu5t)YUP=EI($v|efaiWLMbJ>{x}X!0 zt_G+>B6vvLiVW(cELiGDK#?v)bgwdC0y^ZvvqCFm?QZ&(4pWGoF}dK|v8?f03G$k4 zL*PK?f}ZnY9O-_q^i?mTCRFNdZ?nzE@1%l_if=LaLMXsOI$T9Tj{=#~x}Tpz+38?-2W!_R`v!?8^UiEtjiC*%J3g72`4DFa#?MpeL+? z#XiK(@z1!boPi~Ay(=19r_a~~56f-lrqqq?tA^$MQOXdZhqd<4Oy z)hi=CM1+w^=Hl>AM&oPY>_hDA&SG&;kuD;gseh2C4I^z`N{)`!rX*XNCEsu}-X%i1 z=O-KUohDL1#c`rCMcWo_ozO|9HLnLp1QEP#e~wIr48lQhLlGCMF01AjPs+BPi=x%h z`N|RkAM-l5Orb7U00pxYPw|$F@kH<1sR)#hAtZ*7cGY9}AvM>KZlq)6&bdJ8KI44aLfa3t2vpkO)5v0Hl z3;+&5VMw4fL(6oYV8};)q`ypaM@$~-T0$crT{GB184znT#B%4M^QnGBCV<;5kcki; zl1QJ-FnB_`)&nL4p7@6CF#IuDDC-zNd2*mXAh4T?x zO&7d^)14P<#Y8Hs!wMjnR4eR3q{9E-uEHsB9-O|Pa*u=%fHpg)sT7Xwr5%>8QG6*|OD`}9G~!YmlVBKEVUw2x_ls0FiX(uPH=Y&Dzwt&kK1?q(`U zRDlGHKvGPA2T7b@^G3dKaCrK6grD^5u}^!ZX2Mab+`PD)wg3^hGaZ|ZfKLQF6YQ0sKm{y1qdSkILwcl3dZK5^6^ucmYrqFk+6kNCwE_YmK4vpJ`k9DC6hyjQ zaW|tE0FJwPGBrA+)6J_lx+k9cMnAJn?|7X@1Ut-iuitqZ=s=%mLeDlsGoYI?EQ2;^ zLn|ypgJa4L*z~OP%Q0wx7Zk%&dAhZ4$WuAdwu-u?cSuNjB1q1p8+CVuq`Io7ySQTy zxQF|=LwmeK`_Z_2z03N&+k3vVdo}C(zV8dZ%e%b;Af=-^Fct5+s|dS-C9>ID3}D+9o%yvD0o%RiXP z%es^-xN7Q?maD2=6JI`DC#`iq8`aI8TM9mM3zh^ws7yZY#`@Khr!E?w)b|JxU zIR(SN(TbAa5l{LfR$ z&VM|#>$S=sz5H}q8REUXTj$&de!Szn;NShwmpiJh2!XQWLm)fB5{!L86npDuzKuY;1!M%w^W@!| za^}AJKBIdWzP$hL5YI{&{m~P_8Y+E7fPuY&KF+T?x;wt^Pk!Vlzcq2b@gx7x7roeB z|Mus5M?}H)EBf-cFCm$V`M>=dVnE) ziYv+xCRDhPVMB)xAtv0BWCB7U3@r$mAu&LKg;#d$z!;HaNs}i@0vY2#QAm~tE&e$c zapgsnH*x0Fxs#{MB|avEA;Pm{CJsXt8YHT);!>wiof_;AQ%6)5RZ=Llfh0;4i3S(U z$eMFTlL8=JqE#z3ElLPtEXGW$b|(r92vf|6a#T)$r$^_m4XHB;;D=LA3V=#-N(vhY zEc{hDdGP;Y%QS7mRpuA--U2$#h`j8O>jET&al$-m5yI%jINro|IHzPY+l@3eOW4Xu zt1`B3vuj9DslyMgKR#%)z;)7uUX?|TZeeP|DVzrYhG|@-^qfZ-YuhysBsZ0dS* z1XlV2rwPD_unD3#Yfi)wqZ6^Ih>`%q3>#8tLx=*X^Xvl&xywMjhKe&zAr{)0l&K@wOE_tp-VIGo1nS@K+H)98_)_+ zC6jCjK#207`m@w`EpygSTOwSl28O0+!-!xJ0#z9$9%A968}IYiA%029jzxr*vV$VM zK1x1aBe`fsQ#ZeMB+!T4O6$Q;O-N4njhhhb^>r z&F@=z0MH{4`vmfJ8Fp_-Mu?JFpx*r!I%5k6LWXK`Wgs}iMJc=#;P6r{B(d^j!xtttdJ?Yx~38^;icSQ07xB(_e>#q-p==KR9rT zrfx&EX2?Jy3v3-kX5ck5sYD2C2!LtS)D(cZMPxez*lEr20^ zo6FgYsxSlmU`#MXL)8pcV=5h(OFIR!k4aeYD`jv@AtH!^4Nj2+>y!LRdtd>~Du6n7|Z5nX>`S=PM_Hz^&*L zqW`(Dmmg3b9tr7?w(SgrBKVs^T6hw>O`(Ouf=G6fFib-2?@f=PU^yG|BIgjLDdD`* z;<8sthjekCBZy{dVX*xwEX#YPy6 z!^LFhDH#pis@hN(XPV@M3(?cqMmh`rbks#eu%0bM23hr7hQ6^X!%1((ln8I;01&_} zjxre-m`V3>-yK+2DQ5wzx(q1C<*?vBpw=oOC9=G+}g=UntjBA7+3 zPP`*7rnyyLj)(;i`N1T7`OEyPZ_?_?(x-e!4&=epGNI;U(H3v9hNOtXzHGDaHeg>g{HGCjComjp+(b)!LRXRDm zX^PT4WtyUmt2=C4r99D;I9^pCs zAg7`b>5UU!0fNrWWR}M7&(#Iuifbh5fTkNVizA7BjY-;@IiZUjVR%P`*(|a+!{8<9 z=Es}MohDIE-y~7@2+>kzoY?b3GA*KjO3UGxhfUqRYC^o#i1IuONWXF#qe+Y%xY!8~ zEFv(%5=NKCn+i_U$#zPEzXKTobrX%6g<^%C$^it}IO;;+;kjjSL9!xA$d|z`5im-G zU~y&v@y5`7-IVO}C3;}Xt_zkqM+5U*TV7W!l$jNE2ZnIlF*ji=LQd8VJKWus|#W$LcfnZ2*|l()NNX#cy# z$X$IbgEU%)zb5VjkJG|;AKle7cl7&RQ2vWm9pLX6!VlimC;@lkl@V@*Yzo|($`oD2 z?Lb6i+?3BXX6%8MZ^ouC{OWG?8j$+hCpA86=}gBkqVF<_Z;#Ld=s>OYux+epMwix) z^`c_?ddTUb0s=K`1leyc9*FcNkOgIM25E4mC?{3Kzy@+K{@jm{VnhBc!T@2<_hhdLk#GSOFbY+0a1#G;`fAYnuF(3DPy@G6OQ4Vevv6ppu=m1{1zixK z$}kPpaQ$FMY1Zle-ay-a@G|gkA(nv(Mz9N~%K4lS^ZM`)0a5lmD-cic39D=k5wTR1 z?MJ9E5gl>&An*~7Q2k!T^Ca;SF;OzeCJ%Tpp6IV6s=*KpK@POQH_D)RY@r8IF(Oh? z>{d;pJ|GrjWEN!+c5Ko4XfYRML>GCn7k%*;F<=*KaTsMW6OEB`f|09;f)|f56N&K| z$BzA8u^Fkc8m$o}Do2$f?LYFP+qOg$Z{=1*Q3niRhlnAcq(Bd(U>$F6XEg4tiYE!= zaUSVW744Bk>MY?AssRzA#x%O zvLY?=h3HI%R0%KQ?+0Z=C*}bDaL@oUaui1~hAKgT>Wo^vPO^|B1Yj}*kVK*=t0rx7 z$Lxe2Z*nJjvL}7=CwCHzBA_NOQWA&K;nXk!iqdv~5+|=J6QHswd0;B3vMR0eDzP#v zwQ?)DQY*bgDVH)VsnHElWe2SX{+4JbYJenfNC`~xBq3slm|!l&azuLaCbWffd=d-3 zvMvwuC;<~NX^IyS5&#EO=QVycaleAF>JMts(q8mYS zBNrl-V#qRCk}eT3FeU#pHC1ypS+g}=^EEY#F=ewc9T5qRY9&LHfZnAV41hNcAskH7 zGDkBd2fk`1yTJ>#>KumC^(Gd}_JKLs>E33NaW zv_KK`KovAWc_It;lLh_rK_zrTDU|WJ%tB!+p&r2NtPwyfR74EaAY<}F7c)Xh^h8l~ zLdg<;@TEgzQYKTB!3b1DVKPSf(?e}EMGOv$uN&GbysG)>i%NQ-Dq z-Skc2G*0EzNj;8E?X((~R0|SuGzUm01P>zIVDP%pGqWusRP0Lcl)2<|Q5m&S9raNm zHBu#YQYp1kE%j0{HB&WpQ#rL$J@r#HH4QIwOE~kg+~8FEKuQO-2j{azG4TsvHCAPH zR*!&IZS_`hHCJ_YS8LT)6SXjX^*Vc1Pk*&o8#Gwg4_7PFBfZg7nX1ADbydk?MT>G+ zt@T>5HCwfHTe-Dcz4cqcHC)AYT*r=-Su5{6<+0aUg6bPhXz|^ z@LHD=5}NAOR0CBZR5e=P0BAs$ztB(zvRCKwU=cQ9>2+c4wPC~XU>!DMqeNlz^*HyH zP$Oawo;6@GmQPAmVztwr73zXMq-IPu3uJc0-5uL|L{;i`FHRwP;a-GAZ*K{QzKn&|_^DHh>jswU$G% zb7jMGYnL``!FFuLwrsifXcd)g)z)mq7HzBbY=v}dD;8>>);8_-Zd-N@_h4@UHdQ$` zKdjbfn-gydw{Q*ja1l3g6_;?`ws9TzaY@8*yOwdc$u_GoAOHX%`2+<60Q~?g00000 zXavv#00{p8%?KPwu%McQ1N$jls1P9-FbfYpe5h~_!;2U*YTU@Nqn|w>Ly8lOj=uKYzNMIPs`ck1|(|d`cCi zQKnU$2A!IfD9xE*!*cC<6l}$rWH*9@X*R7}o^GGMlp1$u#kwh_D%B{oE7OB9)eJR5 z6!1>M8y&8Un6fF}tY5`S?rD`|)ySA9w@te@=Gw;zeB^Jk;dl9sHCRH{8H7+?AOfWyY!3oO;EBW01!81;>Gzvgw4qpBf768q zT8am%CmegNF-2c##H}|UeB{*yWOp;Z_uqm^8n~Zl3i`KXTqv^F8%i_o_8g7}(pch7 zUW&&elu_P@p?@v<=Oca6!Gst}Z5X7{KqMZvU7BFl_ZEYdkrkYL6p}d?at&%VXrMVM zH`JkBHkqBCG79Ncq|IIVrHeg|`K6*E-sdN!pvtJ0ZdsPfXo9AuT56DAt$LPThL-=i z=aiUUYU`;K{)uX4yE^(-Yn=Xu>z}%+DXCA`8D^oK7utDViJ+}z`D$jd zhAzsjOWFz-?1Q?3nj?T@KKZF!twM&`xQ)Uq?5H~ms;a9E-kYksn!c4KwgA^#Y#-;z zD<-YBUFYn=97Y6Noq8Q zK+s}0-DH5*3fb9ICklGzH;wL;?iG<;^zFXexU7!&$<4OX;6leSuknUDZtWvIF1@PA z%igotqtUMY_E3+!6WIr79Dc>!bH3>K-iyw?Wx#~r%$=JDQq@ZYCD zztk%U-u(F2kJ0^)HEvj+ZT>a94BfpjA(1Soc zfS=T7K@AE~iJO~U6XiF;9Nthj^y8iW><7iSiO-5JEF0-0b|j1aMPX>X&RJZ;uH20< zj7O>9MTRKH99j!~L{wQ3!$*`P=2170z+gswbQ9DaU$fUTUfcpMw(KWyBuFG-9wgGo^OG>}*dWH!S&&Pt-QB@#W`MFqOhUg{E?yCi2u?b*j`u2Vb`N~21n zo1>A1U`KF5(P>)#Vs$y6coO`J4+ zs5F=QOPmgKs5;%F6CX3ujbb!>K8@%t85&lc<`Swy&E!=xYD;O(QL8Y;s!_#S(V7CZ zpCJWlR_QuLx1y|HhH}ipq9qWPelviHGN@N&shT?sa;jED@tn)vyZPmsxxA|D9j`X2;Nx^b&TUkf|7q`r%YYH$5OydsMwHjn=X{~$C#WHbl zfdz_U8q>^Z!6=Sny(%q(D^cCrcDZkzEKI}MT9DGVv&GFUd0RPG)1daOB}MCKi3u9i zHdmw*Rc%m-yW8vL*Q}7mE^<)NNI_${JMkNa5^pO~^5W@uww zY?Bm2Sj4P_t=YI+K<94w#?~z>IX|mZMIF;g%G}O%up(oty0OF@ZgL}$YvL3C_`~{* zV=qPAU;0T`yI7uWc)6TA7n^y&K(4Tw&&<*6&hr1XRz9$K<$K@U#(B;x1~F@Y{L!4) z7@%LCvXGrzmpD^!yA}Iy7B!huUD8R<)7PlZvat31XFoF<(hx}Y zot4e(W;^@Y(2lmWoh{<l?C}&NfGIfYB;VO2d<8rCC$W z9bR&c)Zyp)-Z4W&Zp%6-0q7cE$jn#1bCD+8z&yXW)Gbc+sT=(2PamYI{j3mCd;RO8 z?)ujI@pa@?S>+j7`Ml!-_O`42?QV}d+~rR9l&3}RO}97F+wOC)D=qGs-0iGf1Hrr# zMFT28{7n#__{KZ_@s6ho;}zcz6=-DgkcYhCGlF@>mniXv&wS?NBKp#s{`9C%z3Nxb zde$qX^{|h<>}B7P49x!axX-=rcmMc>*#7sMKhNkd5BlJvX9FKVzVesPeA9=(C&qtF z30}~V7g*o=8M!_~u0Q<}WM%pa!G8btwZ9SYM}HyQC;w!-pMLhc|NZcfzx?M<|N7hi z{`k+o{`b#+5}02j?H7OoD1PTxfaN!U?Pq`rxPU`}3zOi03Q!9XSO^FhfXks?bHacc zm^4t(0O!#FAkcv#2m)Cag8sLG!DoUhxPm5#g6PMBFgSuS=zla=gEn}BI4FZGh#oW8 zgFe`TaS?+qxNt(qK{-f+;n#sL2!bLAUY$}#F+>7GIE8g_giMHpO7nwMIBY+tfclhg^7uCkQY& zm=hIf0uOkIhM0(mxQL3_h>ZXEh>jSEkT{8wSc#N)iI$j&m{^FDSQP?DaGI!yR3V8` zIER4jZS zjL4Xb%D9Zo*o@BjjL;a3(m0LOSdG-^dkj#F3!#j^2ou@(jm^k#ve=8=SdMjwhSjrz zcbI+bNG~c5nN0kQd>B_qdR@ za)a>*i<C0S7S>8HTCIiVT^N!nltbsaChJi3J&wA}N7xIFcfXg6h|iDw!MPn2_W6 zkmlneF4aJOH5=oIkt_e1le$QZCfSod`IA5yltMX_L|K$ZNstP`09FtL9Z-xsiIiq| zk~*n@mN%7FX_GopixoL*!$UybaRL!}l^KbSPH~ekI0R@ZmH`t3G@u1ZkOXc?1yC84 zAUO$YX?zuQ1b6v`h(`fMaEc|!f(noV41_;WVwkGY3t$O^vACBDse%k(0#DI>vG{{& z>6mNz11k^&a`};Sc@ZM%ly!-j1a|---~u>Fn#T75RUijKfCpXBgyN_Glfx%S)???P z49^e^iy4Tj`I{Kgl&BbjMGynG0G#Qe0+QJewLk?CkO7{Vk1%nF3&93SfR>_ofXJy< z4EW&n!L(XizX2Q(H-h5wgG$H5#z3un^3utG<8{x)}}UsI=!N2T!1;`Z<{#>b8e^3j~S* z$cTOum<277jgXKAp{fvapan9!0Yl3M9C4g>`+ZYj1`uGNIPd{fK&3z6lKx+YdDAtGEO&kn&vNXP^i<4%V;{RL~5(NwH#Duyd=qO}7C|n--|6 zyIIkho(Y;JKm|uo107L}Rp6l238HdfpkyEf8;}Ng0KD0A5k>F>amtISO1wjml#Q2-c-sNc$+!%hl|!epS%3%0 zmI-p3v>}`u13xBK#N+CrE)CCZL9=%fCqDs$2CC4M2d4D;gxXJh7($&g@Cj>)(VNdp#yu(^?0qC432}V8eIU6=KRhDn9UOuL?07X z0D8|Gam+SanakYC@chr%I)4B?&^zbPF|>U&BN)6!f4V;z0^!ChB*DypFep;LXMoP#oT|K7U5AQu1tW6c$jS=-t-$YT?6^h-~t=)SI(xws8@(qu8AqZ6*ik65M z^X-kVExU$&8}TjQ#c9am9ggI!lIVOXhdj0mP2aBF6#}l_5ndMyzTM)z*Ut#j`VHS^ zz2C!~G~c+~EdJj~x#D!H&esUw>Kft_&VOW~m_Q!n#M|6K&WVC>8u7ec#pH zz=1h*~Pd?(EUg1tIB!#Vd~OrBPK*%0<%J%hUf`D& zZs>Im8WdarXTI@sju$du2^OFSIScLXF1vZ2jobey;`GN5wjcp8;Jf4wDF>UVDE<{sbbPz<21Yl+*Z|2#p^$p+P z@NVq+%@B^j2^j`*-Vd@M3{78os{jZ%p5k6ls7U{v*ZY1EVRszT0rhAf(x2b#dmZzRAM(|o z780Kf#W1!XKJP?P2Dg6k@Q(S2Yyk=Z5RD`-7+CNJl_3NXE)>|$;X{ZI5k~B%P{Kh` z4kb|J*s)p^h-C~3ab$^s6hlrdiej0u<4c$vWh|3uvL%(8U5ZT97?Gt$Q37rD1bTDl z!lM_J{tzb2%f^1PbWSx|)hf#pG5alu)JPD;7QG%8A{tT9*|E5Kg^lwI#;!tdA-=8k z=#j&=Fy`is3s;8OUvmlgvEWdJ4JJeGYGn*GXF(?%G2-;86k-K~mK!I$%0S{vA`w^p z7+pG1i^>;^I$XukLpeYUR5W#v8R`G+g^hLZ=H1)(Z{Wd&4<}yS_;C^-lqY8n#bF63 z%cV>ASjT#p<1x*_bY%SI!(=Ww`hdWA2FQp(c4#>Op^BK7Q68jtX@k#$%Pq6Vq?$XT zk^OWNPq#*zkzzOtnyDlbIx5kq5nCK;MkL)d(W8XB;4!)o> z0fr%TfX1xsk~+vCVd_~&7<6Dvuby+x`H>@Z%Ggf_bcB&b7*@>WQkGE4VTDYJSP^EG zRmAFN3OOAL^ChL;G>jD^M$`Wix7z}A^ifD7m2^@{EA5Ab=bDQyxgVFS&QgaKacG=; zV9~@T0)oi0izmX7j7Sb47N`LxA@JMEhngZC zu%fCsl;XgL?AVQ+O6Ul-k!l?xh7JT8xj=;rsPHf%04n*=Ax_g zpx&)W2#APbj1EUMj6z*ICUjB;tFnwF5ZoB~GpD@t7hQSt%Kg zP(l&AA9N6aDHN1X?wb~o`;pu0KwFCl41KsjKDAwDcHGyj)Eh0(lBaYqN5oJ zn(?WO0`#DR---Z`f*AZCnu3_;L8KWnpkEobC!5c3L=UYn1ToZ95r6fAL;b*zMJCvf z{S{|23FKfwII;h*6lI2R4v~dn9)b=c@To9q1Ij8qP>)c6se}&M*eW>Skc*9hhOse- z;$X)UO5_7T30+BWsheSaQ zZNR_}>@p>~=;b%T0L3bXVGu<;1VTSaWx5w6V;YGp$Y+CsuIj{#x2A# z2(pG9&UDIp0s z5n2Lar-bZK2_bBw3=|3*L|WmKX3&8qH3{E2wYM&guyYx902ojPc2IB*XM>CZT)IM` zA^kX{9(;-upWG&q(YykNC8NbID-x$PT}*{7>c^h^$ismoqDFHuNOoHH5F(KRFgLJ7 z(EvHb<76=ojaX>RrstCm9AE}Qm_-nxhQ=v*XCOE-T_`5Wr*vE<4t(NU*yz+0#L-km ztQf1Fyjq5@Xk~_jv#I(-YPLycErmsK;W=Vc1)0Fkg^2qLv|JiW#3oj;i|yp5Cb1hR z)FS^TIH=uz!toB7G=~8+hyhuG!;)fvD0aew2p=4h1{@4BJ`iD~VWQ9h3J9PMzH~ww zPJ4jRgbkGsd77j&QxTX9sSNG2g@PQk6{xU429)65g)Be}Z^}TO>=0)G7&J~SvLGgU z01!DN^bnp&0RWt^19=TIKgwQi{UXLi^dI&vZ)sOd{ z697WsUPxUO1DG`nOR3oj1}-CmG?}!l+^L(5N(P9FC1DdA3q>LMBqxlJu(jnNTQ-ps zMuvTnW;nCU2k}c0C~`!f9dTk)VREx3fw71{zyT956UN6v4UNFTL@A_4ks4Cu6?gyZ zM<`Z7M?IR%Y$oMT)wM}4G=6~;XR#Pqy%)i0B3*tvJJ7pA+Y){MMQ9c zW9hB{Oh7_MFfaq%&B7s&SU@H;0&0gm!D$>3K@~E<0Z5Fxm(EH^5T;?*hpLMm_NvA; zBO={yVhFkeyr(%0qp!+%8X{9@1^^lakp^Xp6Gj255WJbu)2oMlSl}y`UIb@lb zOc6MsqfB9nt6$q%Lok)?Ke0Kf#X>RCILH8oVy*{G{f3_OK;&*FYbk5qR3@hHS?W`# zdez7BXWvA&F>e@kfOx_Vn@I`RyIDvOV!?*+n3y8vx`6lMLy!fKD--HrLJE}E10b|L zBm-Ci-mU4{RA->zkm7|yPN8<;O{)Nyx!~F*U;zZYHa{9!Il_deNtg@-0Y5KA#+{+Ch+44y)^%dU}|$G5=_s` z2R!k3*Q(G0qtW)!5zPS@$$+G)eJKJcS?|Xz#B4n5LZom8m6n!M$SjV?i^=(tP+Sp8 zt1v&ip79c|j5SJUi9->&c*c`L?T>f*pNwr0%AT^=se~FmXKhDC{Ps2aESus zp(sEAR%iy3Vg*^S1t4U+&0`1vM@ z5DNaHAU)_l04$22IEp+3z^c$7;0r#FO&YjMG(;baMroWz%F#NH0G$+g18s~He%J?o zz=zIB!r$YJOjI|?$i18(6w4XBEFnif%)9})ilKPMA8MR(j6?D0MNA~eT6D(F(~%PbkP82n$)<;tLWwLwoFSsMaJasp zKTi}%lYEG_XoQAYzl-CDUMR^{^b=T&#h7$Ob>qjKC`LJ4yMptN+yTfe*`f)1z+#xY8qe9DBRMyjkztCSRL2wINu$b4BaS@BsLV@#)QZKl4WFpT zog|9WJWRd>!Cq`j!i2`F%uU_gP2F&gX-Xw*d>sGyNdWJ0v?8n=w&WxpvCW6A``96L*?Nz9zZ^VCch6U~skzx6yxBm@h% zaLJk+vYC9$eq6&rWVg1=McBkoy-Y{byv^{e%{Y8a-b_#hT~N<>EX^~<+*1E_98))a(WFn}5m15B-yHSjbC^Q}D< z)KB%gNcGf&NYowKOF^y7NX^fxW7G|$oQ04Q&zV(PtyNpSRb0(gUENh)?Nwj>RbUNP zVI5XtEmmN4&`=UVQWaA;<IeO7P%)~lOT#7f31 zr~pFM(=L@qas*1~3?)Vc*BvcVY~qX@MaWULR#0WtMa52jZB$1=OLz@fcvVv2P$l9( z2Wm)I4thm_B@P$Bh=X`ohy}ie#WVkjjo6FLSdHCSj=k4H%|EK-SQmJik>x=I6WNUY zq=>CpmW9+-1P)fBtU9Gs-k=7AC59Dq0OlY+hh@+GQ>?o1*&ZQN8Qlz_4O*mK4Ex(b zx=2rzec7H}v_NZFs%;D=x!S7DTCLq$_UzQ%h}l)jw6LjEB^V9{fJuh!jhM8$(L7p1 z4Z_TmMW(G!PfFVQyj#4@+pXPOzU^DTrP`w9ja`vh{+L>r@QTqW%ask+v^7UgoVvDk z+fky=o4l$;V=VjRsLZWKp9RsV`CHHpUC|v~Bo)me;2hAg)X8F{3Jr_uEP_6PS~Cq? zjhd9mmE6g#Q6I@sDoF^#t=s>j{ZVLn+aG+`v;B?SO*IUFL(*+t=Y3x2r8?1^Q^puv zRk~i`xP)BbhFrMM5#ZS+kyQf|&){H^wD{5)of0Y-02Pp312EV1jg-;*S>I3sEtmq`r2)K?+RIg7 zAO2w=4&n+{;SG=j-2mI`fM7b+ow7yV(?HwZ6^;z(f%AxBwf%rgQw%*F7q(;84KX9O zi$W|U7bo7`4F1wEuF?M=zyKaN+xj&CklWuI%>W-OS>Wh_6%NN+7+*Z@U?KivKn`R; zp58wZ-0N7(CQryo0w#{%sjZ73SONw>+6$NhkSk9*?f^UX4b6$dxA@*#;NvqEWMe*N zWPV;k-kncj((GUcXnqK8cq2U)JL50_$a4*I`GN)DI0>>U9V_C;p`CkkyNCDyF>Xpp z`;#v~0o0WY5r9(Qpr%QdpfIX}V$K9O{w!m`Vlk+uCGeg2l%OoQD!~)7N|{`5h8kZk z0Z`W8IDTBpiRb?+pn+t*XpGKi$i=F^iwLnzB?q?C;mC(I@CI)1h1}WMm+ax-K!OmY zvtX$Ua+`v9wgAPLToV}I0RUJ()nHn#040FsUn77PcAZ~ov~%78S0kPw(C6ZyfhCv$ zmRJJV?A<3=f~$%gx#))wzFHTc;-Xef-67`~X6VXswN}$;wO(tsZY+*YWkj}=d|-w( z$Om)i21QZn7s!Fe^$j5?mtdOZCK%8)=7CN-&un8_DrjP*%{C?ctQzQMCFnbP=DYlD zYTbF6_bs&BIUMzZP<=&tbA+0ifgUhk4=4u zyKX5eSn2=Wwc;zbfuu8K$g5}(&;mB*9f@_{oi6RE69FDLh$@Z<NRYWWb49_DGS$byqlZdBDOVfe;9T&^yA}_7FWxCNN_y7xVa0idVBzRck;4BPS z=vW+I%^?AU#%5;K!Y44-1>>nq?rlp`<1nHCEe0iJ(Qh2jaUBo2_pR+j{^&B;J4uY_YF5YSn7g&}aOg{#1`;FC>kloWJZU3#yCeQ*eJYO_oUU$`TGB0!4 z=5haK-ny_2j&wkTbTEf>fQL3$23-IgBi~H3rev1>-TRAUshvsSR=2&La%l|O6t>(z z-wi^x+XT<@^3+_U9aNzO+R!$0OTY9Uyj@M-bWZQ|{Oj=}{_opS^i+^$OyGu87=~d$ zX>Lk%wWUw=Eo)7r-Dr&T3HFgQb=X6vUniAgLJ2t+4c^4cTTd@`V?TCePj+Qrc4lvO zXMc8Rk9KLFc51J7Yrl48&vaKj-Q7WDJTTuQ>xWfGX>vbd4^CdAMfMog%-J4vuV(k- z)Uhabb=`<{d}Ui;A3sXRc7E@7fB$!Y4|stec!Do@gFpCbzq3jI6Jqi9CBD&|6vY1) z_{&~zci)!DM^Vprr}q<6$jv3%V&|w9$8?e}d6N%zw_U8t09AlWlBv^$Mspdzc z#*f9n$rM^^K6#$+d7pRLFo%oLRCu8skoTAr_YMX%Py?Paa>TaEo4@#s*ZKMUd8@yA ztXEL_-Q49S`XgVqZ(rR(%lL;#0FKvowJ<`|_Ta|_26vx<*~EpL@Emd%M4Tyw7{R z-+R9A`+hIgCi8&f`-9mT9s$%YJ>&6VNnMa0d*eWde1L;CU@Mf4f&j3pp{>eXcO6B* z1(8qBL^y_Xe*sPC0yba+P0)D1UwzhZeb;||*pGeLpMBbI_AB@V!snCA`vCtEp;xcZ z>G$>MN)@!(%6LoQfH6>k2vh;q$<27+BFxkcJ&K8!L}`cc1w4<1v{wM`=d;=qchIbT z@gINkFMsntfAmj(*$0A6keI{2Ka1sPu(wqDZ~Wr_SFBjH)B$I+28a>@`w=W?@F2p3 z3KueLn2vZKLaF)}KIK~NJLHtKSaU}^Iv z&YU`T^6csJC(ximhY~Gn^eED#N|!Qi>hvj8qcA2hSg~o-h9V9Ms;XtsYgC+5#}4^$ zP>IeO1o8Al2M3+9IF=X)6qq4NhOkRb(Au;v)w)r%2*#sVu+%zx_7wjPZ`Q2clw!ih>`AINwo_3I`O{`w7y^QS@4tI2f|+SB2*qg3lWL`1*qa z4ev?$7V*T0P%et`2nJg>j1efHz;e(h@qnTkL8TlNPdtPWgh?>;FhUSKEgd9bD)wLk zian`>lFKl%OjJTcwG{E)aVe^}B8x4$_#%uk$~Ys9HQIRNiUcL$fd>UWQIHclF3zqkYDg+JVt3n%KRuCh+67)_fzPvyam>GGL8LioByDhifdiyQ7;fgyhx#eO>-v>h~ zr<^0}(h!6N$y%_(4=vD2nv)GlNu^Q5MDlN@C)G8nxnhagszDukLMA3@QYKL%3V~wK zI~y`M%qpN%%*cPKIE>IR>7bH`F!iXUfUMQ_b3h*-^wR&UItg-CFwHgFd^65D>%241 zJwr7bcJBsJ#?V9;9e~j4E~i`%NK&EXlB1fpr-zeARbuny&YC7`CE5AJR%{%{m&S5fu!KeMSdwum$#Ap2i>v9n9wo*?a z-zt8x*ZJqQ6GXu;Uhn)nYQDQ3{7HEC`g-jqEcE|6{L`ZNi>pSW2~G43dImfo0u!jf z1v2n?E|3)iGH`(iQm}#+w8+ycpg{&eEozwi*$;?N1|+nj3hk(b5TpP;fhjHsE-)bQ z?iQx6Jz^}uOI;#(!HdkaEq?>48ae6-Qosa zvEmg~;Y0m>OME{w$TiwfkZa7s0<;L>VEU1XBsQ-jZlvK2cgH`9XrhN(EL3ZxxC_2S zv5$WIBOn7Q$eSr(1be&z&+rwM7Kj2Z3em&*l(>u2y>W;{ykyD*))GA4@ic?{Bq&2E z%2ARsECJM+7n|a_A5fth*LY+Ofgs5^ViEs!S+wOLNPvqvUTc#@?4N0ZSju4%vzW#_ zW+@+7#rJ(MEa@Q#IppybC(=+_zG&U%WY{}n9YTJ+q9tmODb8_{vz+EUpeJNO2o44T zgEdR#Q!Zc-d~9PI)F4M2;v#_#GVqYND8ea{k&ODqjwE&BoF>Xq3^pFb6~e=$X^bHW zhuZI)7QHA&GpfcY@{N>wB~|M9RCz`T*nk<~ zNQfQg#Kf<~)NBg5rYuGwqC|}1CSCvdCl}B#1Y06Csa$+2Uh}Hgy^>O$tH?@G9|{(7 zne-8cRY!UfNs9F`@Fi~vKrBuSdh-)ST6R`MLN*qE3Aw1x%sOf}sV@umT>bAV*JuiA`Cf1>8&miwQ2nWDbSf3Qv zxX(pGIL?vZdX!^1Fr|XGRJWoW@NO5+_0NAw5s!5&3n6hcVu4K*t3XkbkLkTIhBK^T zr<4T^$OTdwh?I~YbrGvTsqg1Mm{oUaD;2td_VY*%EMzG|P(c z;wnJHFiA>4f#&~-KmXFGGc)1KaI5lE+yPW3=jl`8a9fEyK7P@^FHFruLo z*qR|Tk~6+zW$Ls%LoK<=B`sk@DvBXqIDWd=#y&POA8{lSFT_Yf8k(SeO=$UYdDe2= zodCPS75nXaj-=UXE_wg`HDr^!+~y9Xva|g(grLu;=$odt=35jZ=wum<(1a+&jl>2@ z4bCXh^k(pP?tv4$;A357pb*VOdUFQ_If<3HsmZ@vB5~YBL72fauJMg84+atR-2MPL zWro1vnH(vfE_n?_3nNl}4COe?V=i+^LMMyLtRl{B7)6Gcz~KnVM;n4Z3xmW#U|RYk z&bc!4r8B+hvX&?3N~G_FEB7GEKu4<=vI;{+ypOVVI@rT5cI5f`AX?epw!7Xf)G>wU zJ}1bW(2?+?`|*%tzdPRZUaqk~2Xu?G8QYgK@{_-UAw~DM%3s_*t0`UYj(zVxOKN-dz?56a6j>O>u^xHA7FgqSKJQc_D! z3cQL{a3U1XAV?$1Csw*QzK`1|{^^si{N?*3U-P01{k|oKQsJTY2)X^k3nKii#bNtU zYXIm0_{3W6$ z0T!U%Sph?2!V;8P<5)zwz~5R_A45z@9^f8MM2tnOirJ-I{#l&pY2V8kpa_oO#=QrT zoFD@V2?I*mT&dl*$N>y0fedCu1@c7IEd-$q&sXf9;)Mwb{vZ%CU6cXZx=6?Rd`}0s zUsTB84AB2x9U#H9;RK59L^~t|JLFpj0?^@&-`6w(yagc`hGDrC36WHqj#!G0xK|K_ z&d>CKk6lR>yrCQzKn);4PSn9p+#o^RLqY5VKk!2{XaWk{K+4%t6vbKh@!;q+g$|0L zBR(Q1`I8G!4;gmP68K08svvv4&`F^Sk|0S{p+OYhgazhA6ez?#;9vf&T$pU3oD~ow z5}!>J86?)CEhdj7rjNUc!tn&w1D(VdGDYeUA)p~d1i+vaiosB{0VSBh8nl5Cs6yxb z4_$#?wRIb7d`T9DpCtNI{@fxshNEz$hFxK!Ir3ihX>KzdNWc^nq*2DhwHw)6pfVFxd?*g0C`!Qs(75(SaLPeoB< zZS_MAUQ$4Iq(?dhYM{?}WmC@}@JgS;O6pq~8r!o>6gCZHVby`DEV zobUI3!b6)*FF@ z`*05U1st~##5%}AhcMC+bs#vQrDHxOWJacBP9|l_$OX8|-&qg`-OL6^;ZxMWJc$2+ zGgKf}xCbx5%1l;cQ(mJR#Z*7ULwG4gvGfC)<OqvlG=zXV z76gZO3zZ@&5-Mt{(4aC#g*8ZnH8^TNNDHK<#xZ6u@1Iz%F zTtYIOLmb8-mJ$TLMoB3S1$MO6LRbSn#;7?WYjVYGgryEP3D$J><80j#&3^4a0xF;$ zgch)?*}i8MFdLMvtru`htKJJgdPy23mhgf|SU zFbxxoJ>=uIuItuShI*Lnx~qK->g8S*l}b?V>Mrk2sqcD6J}koYMW6&OMd;Sk=UPM} zT*A{@?Kq7((0VBl^SYEqz&eI?$$f7Q@ z9LuB1Z@N9$mRYb4Q)rlGPzG^83>4yYM$IgiU8#U?3LpOkoN!JNuvim2aViV~L2!dH z$Z0Y4TVU?67M~|;;F?wdFqVPw)ryL78Sy+6aM3yh_8sk7oNz+0&L0p$lNqWL55mvp z0*Ii95{8mexxz?<8+mQ9An#_R5@`}pzzTT6KKUw-X6#U;=1hu3Ld<0x7OzoYph2iX z8>oRA2t&vIF-=&LInkn;deb1EGI|Oa1{o?KB*#^3t*n%b2_vz-B<<2dAVb(?KVZX- z=5S2PFDeJKxxQ?ID1!E_t@pGo=$PlYyaO9gAO%+7#*T0?;9)}OvKMp#_{kzUxe0+0 zM1BafI1_UIz*LDYFz0N=pY>T3Ob|0Ck2TNU5i|b=(iQ|ZyplU&;5N_HC~wXZL-05U zbVouIU-rlM6hU!#n7# zP264$oHS7I@|p4{!ZW^J*qrB>!kspLGFt z7!F6ZSzIwqPrT zVjH$&KQ?01Nn=BHWcLGQPc~*JfKU)_U@QNGVh?shEH*(rwqzeR34lOBRJLc!hhx(T zLx?tLH*Fbze7jXSa55H+N$<;kvd$fP-O+_d$p^d58COBgJ`}w@rw*U|Tm%xOaN< z1aFr}eJ8|ygLi!YvTnC7mUU)7kPZ)+4lw*IPonVfc5YBWClzRdlRm*I3{5dSap+Vh zW3x&$cyR?l?|e8!emlf@BgA~mwqwgTWXm^C0D)|62M{%0bO`38tf56J?S&7D4s6o&Z z%u6j$_8O9uXZJt}2zFU?00q!^0_6DdOgWH0nd^<1y?k(g)9fBi59RSzBE_U#Kl6g; zr4u_sEG2><3Sx!x_u`tOA!Wh>_W<3gg~?a*JXO9$GN6wI%19F zcCAnXc8-SD4H?AgS!@pm1gnqWfdmDyKwK8APw5lLfuI_M5R`yV6NCg!ff=PCcYHVA zW<(YYKvkxB?#M;3gm%RjQ#IFBA$ z3&B?j&i75g_(&aO0031FuGvKZOh65I4gv^3Jc@t~l)(VOj*d%=S%^K=P} z!o3*KfUJA~B|x#-F|*Bmhl7vcG}quZ5D6?RY2z4?IF683bm{76-h6 zBPqujz~>pv%l-p|C?P^5^fPFXN)$dK5KJMW@ZbVV2m5h22m@mag9s3!*vJr}fGP+W zG)XbQiH;o%CQx)q#07^;5Dan<0YQXIgEl0V@Tn7MP@zMK7BzYlX;P(2nKpI$6lzqd zQ>j+9dKGI{ty?KN*uY``Lzf@47z`QvgR53Sf-W6|=T44GJX^)uaY;@dIZDgOQUT%f zXIht{7Emmqw(McSi-V%=_baK1!ATBUG>Akfm4OsD1f4=M%8V*1TR1V;LXg2GGcHCs zN<{>QN4Mk-IF0e(0~Do4>!cjic0ZLAgX=VLe61iN24^H8^<%-5Dz~BQXi}l1Y6eAH z6fR2T#{eLbAH!gL9({WC>)E$={~msP_+6r`7z|#Ne5GqCzFSm94kf0`N`)dQs$?hw z9~*%|{jjPfvCPbJkf|XO+Xcfyn!1I<#xg?g!w|_c?=k9JI4G0UO!ROz5kY*>F_&Dt z4aOQD0qR4fP$RGZybft>k;7VaOb$pFNi31VB$Zr}$tInA5=tmdVBmwJgnY7>9ERCo zlT$`PBEYS1Ijx8yE~rK*V!GHa%BUdp5hzh6Y?H+dHROs%?k>uxPX4;elc*8f1d+}{ z4LuamL=|0>(Fz-jvKNZ1I7o@CUbqiI&m_3e&qi^Ku(3H2?0bk$v#t5sG=gMf{C=s`*%6QLl$Fy-2*sSSpBVUnP( zp@^BTC|IEXg0cLhma1)WlNQu!uS_&V5+-K%TZ}c{nB$H;{#ZW>z^bxW2zkj@K&uKg zb!Cc>MYdqW)>MIoA0J#5XNcj{NzRK)HtbT6g&vydqK!Tp>5{Wl5LjWU@)uxU!tE!E zHr8MUYpmBW17QX(_|xZxKUDZQh4GA-XKQ;+n(emTejDz%nPfQDs8K$ujyaB685b1} z0?!~iW)XarSs-v?l^A?`f<|H!S|N!fddk4Nvv_Q&~MHgT?l^gWXMIW7X(X*sm zRaK7^?DQczkS^b)44CUz0D(>0LJJnKfOoJQNCfz=%X>Tn$gFZ9_aH=|0ljG@%zQ~Z zrKc$WmlI0A9{cRI-(E>mz5ibN@c&)~cr(8u6T9?VCGxoSkvmUcyz`jfGhky(ke0K^ zN<{dwYvNOEx1d5znuj*bkt=-d>xVJ8*FXn85P}hW3iv3PK$mO+a;2D=P=13vhj9ya zTZv0j@P6lH>p9xNC9+A|J=xMP$-A`*KnFbM_LGK8^|C4~x^OH6c5pCJ|LNJ&~!lb#f% zne^P!X7&Maj*Ng60i{d-paIU*vUow56+lXChlUi(N+sA>$37OarHg8dh5?LW3_}-} z)$C?3y9tAo!%GJNZDAPO?5_r9Y zhVh=aORg9NSCY}ki+X0az;y~8ct(*pa7W*L!LU1qk%j3@?a53=9|4~y22wh%Q6LHl~%qRke zu#{;8r+MLVXLaIR>SvR3?dXfiTxK($8O#%9?jYFA<_4R>AjvR=Dcai)WFTWGpt$p$ z^~~ozGms+EK*pT03umAVqQQwag)8ceT}Hpw7dLore3DRwN`&Lm)sO=j4m@JT#KB^< z^0HGo>MI!)3C*ci^{QFD$6ds^&AEv6tlf+ZW9(VI#)!qOjiFxuTiaUCs4#|}F%gVl zAmZ4an6rav-E3#GxzYWQwSrWU90!R)6QiV#Uy8eBTa8+yrDk6c_JrzIpBvrjR<~di z7y}ur@!e*OK^HK{g)Dr84O)mmeeF;_AGIGruGx$i-vh}Tzc zQ>`5AVHdmhf+lTeH(Jg`?y)P_-gdXMebH?1HLp7nj85GDec7^>bA|P;_k;BP*%p2Z zZ(YLlVAa6sOeM>_%~Ax5Wm!ELVV>o%p3caJ8Gyhl`sunpcF%tv^lj_Hvfr#|IxpJL zc7{c3g)E7Kv{n+X2MV4KvWSDwxxsSQJ+pal5Z)7-B6Lp1Vm&82#1~#~hflm=(dieC zpIj{^fX&sP2cH~y9T)15#5B|qWq_Idy`dNX_{o2+7nP6ej88;Y$RKcoADlQF`L6u! zy@{QVLKvfmYJqZV=;~K+X`?5V|;N5(~^CFA^g&QX@B#mxv+>ut2TIppQh67%7s(PBI$RP(%!c z1mr^lH_#R%(x)s@87q<_ZxSbSQYUwkCxysNY{=b|jt$jOC5tk-aOTzG<9_rjUBE30 zJJ175^3=|7oqEzLuM#V>QY+<&DNw;F-b~iQQY^=kEX&d?rwzlDav_5VstV{KpE5pX zQgy15F1OMy?-DQbQZK8>B@nH_sv;KuU_mg0VaN;u72Xap+b$W{ZZR26F^R$zN-$EA z#E!LsK+IlQc_{T8_*q?ky;MjP_t57?2?ua)HK;QGlT$ehED>VUIr%O&p)(@X&NryjtzK{S zB%u>dVY`+BI-#=|`0j52h7&0h+o-@DBQLE~;6^U&3E#31?Br!O(uH1^VKKBztGgL!2)RML& zC=e7u540(Q!S*NuKo6oogW^E{L6k*TbVUiY6J*aNK#C=w4=JgVkoH6R(qKH!f^{Yo zRTOe~rqVuhksgl}Nrf@|QdAON^gs_(JAtC^fWqz;p%Y3}Cpuw3VU$au)F4C@MW3`u z@9s%cG}5dMO7<}*a8%7ABM4H&1*ESJo#QQm6F$-LL4>qLhO$UAGfDpxP{B}Y*pVU- zR6AEx5{!*R7u6sZ;n+yjQ6F^?76B0!!5fAOKpmcwfyMD6sStQ z-tH7!A@*Ez9SGAkVZj~$q%{~Q!q^0pBD`U^w$)N6by6Gb)^hC>Orh6Y;at(Rw8jq?V274yQx4*y3~4E@5H0`%)`|u~vi%N5t(-Op zbnaj{BWc}D#EL)>3jt{l;cFKWe884$DY8jSmLC)`VNxjoL~dY>M@L|z1I&hMmS-tz zF_3tc-F)^{kEm$>{}ymn?d8<*=;+P;3Jwj3;}p;!3kHthGJ)UN01d357!J_rj1K%- zg)L7|KJ+0d@Ih@KuNU~K0%F#5j|g8O~9l(w@Z3gc)wz55zR2;tW0*dbD9?zGRt`>0(YmEdaF0)XKE^+)2M5jdd{eAY&p$ad$Kejlq$ilK7xSI6}C6V?R6$f`>M zSSJo$VC}I>&0hI8Uf5Vf3AGm)%LC19I6aEf=6KY44uss?<9a2aX1hH?+7mai_ zCiV6b=c<1HQ&@#x%rO;{F%5HB6Ih04n1*W@_7b%)fkN$CIMH09G2Jfi63rESm-vK~ zJxDvK0iZ4+5 z$lHWfE^Cs4q-;LqIF1`ZZTUxpbJQs&k&l@YGjmChLs^t1Yj9s~C>e4=HV>6KcTJ7* zry#lEh%-0F3EMQm5jwaZ)S>&(Q-$z&%r<#jIvK@2S$sy>n2$MbPFGG4nUJ6OZTry| zi<3D2X$c<8AsoO&Gh>Qsc&z_q%8`-s=};AY@ANk<1(cB)ozr<}lo>y&jVKjVlVcbA zEc6D5w3&5l9N^(U284BrfdXE|CgYi@XaHLra%ZXdoYh&O7g}S^=rk@MoRoG(+|!Zs z(4Og1M=4?&VkZH$LKjHTdoEgLAutoBfS|=BeJ`(=8JeYA+WgjV7x>1a%FrlWIiM-1 z9x;m%WQ{5EfGfOL13uU#4Z4J#B+OhIsgt^1+D+RygQjQ-x?uT2r@Fs%+bD)W z6LLWvCe|hHfg7?7wKG6+%5hzsk}J-j2{;e7A)B_Z8@rE33?rfx!eXwyz<(8lxiX;Y zA}Rx~h_0B!X%3=<+WWWTHa#g~5$>V1+c6=U_N)5=u^XBK*JBN)fV%J6y0e?W3!Euj zFtZ~<;9PIpRJ_Hb+`w%zA!>rAruG9ez{)$|rbtPuohU6#s4BXT%*mYO#QT?%Bv*?>GL3`^ z&CS)sxsSqG8l~LMBU^TXMCPE02?^llY8(NaV41A^&GFjMVWk%YFjPK32;K;|{hC;Y zA&!Im8yPQt2kA&QsQ}*@L#!?>neQo`I~@o7&PyGs^L%Pt_Mi4mcW5qQ+&Rw=-O%k? zMqH=SeLMM{&P>AF00Ao?Sr@7xuF?>%5-LFthya!1+LTmAu36UEpZ(eYlc6*I=%`KI z+FiPo%Pwk~{mRv6Xk*vbPZ7gO+!@g47^jY-{7Wa+z#ssiYRQU& z@I5NX3Ii_a!S5Y_bxz=2o79h|1^uW|IQiNa{)nY=amq^I{#@s54x%el%r;x12lw1n zCEeQt8?fOTup#O8a8~eQ8SK5RFhJmCysY@p8z;VBRlHQ(1cWK($!oqxpqSt40w~HrQuuu4s^aX80&>RcyC#Ls3kh@F zK83WLQQ*E#;@+39qFJKF^zmNyr@|3_7rR3L6eu9{f0ykPc(vjz!VZ7ukji1j^<%KRpsR`lhENW+=rUg%*|OA*(?-mE=>!3{e$6aHSGf ztWdQKF4XEeH?PdPx2R;`dXlYMz5P@?xf|AHlqIkV=?oI88| z3_7&v(WFb8K8-rH>XBNpx>kj&i)>)DYu8d>8&~c_yLJ11Z54R%;lh6h-&`kon2x5| zR{Vu>wbZOUl88c?;b^~a*g&|5vwI!Ls)bbTU0=WAX*Dzgck=7_OsUiVW_!~fr1l0*4GA^#Zb`@fE9M# z4_g88Tv$TgHrWswb|77hGR{b2jW*thV~#rR7^7>&bP)q@wLJ$_ZU_#^Acd_NwJ=MRSZ6UOyD^$l6*WSeL;78K_kSN1Qw~UVCa{Mge?4A=PG37ZDZAI>Fet z34Xp!*Pm4Yf)$sFLUFKxfJgpN|JTl4vm`!az#UrNkxwWJ_qlgawZoG7>rRwD(gFnYq`GQW&L& zUs0fR;trneCdrbte)9K2p*v2jB?5HrHKU@j{}Pmg{03-A(A}gY#oU$JGGm0d_ujsW)N|TJyZnjZgNVB`}ON8 zON_qNtYs<@Hn+2kng}(QA_W-m1)_vTDq|dvNFo(*y(pkxM+&@^RHV90dF7U0j(O&q zZ_atL);c%fdwdB7h(~~CVXoDUd3TnVLwRdb){!g@TZmEhYGdKykOr)woAby zg%sLNtx3zLajzuUqs<;Bs9ujcPr{Lk>JGhrjIP8mfo0`gi}k5j2A2s6T3i?0)OXH) z`|iIFfBf>#Piqmy$dacbU7(l5>4tW>D%TANb_bH(L#m(zJScD_wd>3fGyy?cNDyP# z3)Drpdhi$GAtyH$@RW^h6hco2zYu%a2i!;fZ0SV9wqEp0@} zjaex4MOf|7IBq-Qz~Bb8R8i4C+UjAHV(7?DO^T9>EaDYE3Cd84a+IVj0F-lVNj?t>FF`&rL}j3!VBfY1{ZuO~K6>C}N zY0|W+b**e|t6Qze$!ZFs1xRe83nnSkxzr&wzPM=veE7tge8Z?)1Yt#lS}$h~uXs<0 z02f&J(5yOTZDR|byrzlOhvo%%kqsfvI1AdQvP7B-eXD6ti`vwxcD0biP5ERgr4-@y z1O2p84FX!z(Tt-Lt7t*DfY>RVQtAh#ave#wSXvSilA3dA=uhXxSp2xKDS5(dW)n-i zeoPm+*FCCBBkR-umRdEmNe!*=a^}0^imf_}WvzSP3*Y$4S4TkVMFVK)Eu)EY3UbhE zXyB0#2;IVLMc}4t9&rJjkqR_SHSBn?yV>@NWCd)1tU}B2j#Jd59Ej!ab)Oo@ z^-94szHo;K07VD46#{!jOVux=fxMRmYD|>Nk_a3jpH@<_dRO4m2h5&GL%@;YZ`Iu%~cQq1D`FfbUKjCncdYi@aZswH|yZ+5?P@Y5ym^t zA&ZB|!i91^g`Gvrkvp^P&aRk;J7QrEVYuR`3grSanbQxX;xoKiNP!$?d{7D#I&Cw^ ziyJ}!*#q+bcqBLO#~zjp>QIY%)be!^w{9xID@<>CaM>>cXDSknC=h{Va!Eem0go2Z zmR+b@O)}XsW(JekC}vLXc>#&zo_trc4-tkvpxKXe(0L_ltH?Pj5{o!L?j&K04DJx(DEiF*5(-oNkG|aw)1Ek;#KES~Q zC_IC32OtSdpf?z7K!d&`Aq4^$mkrDy1|6ik24xpJNYao8f#YBgSwO=*BipTrYku>b z@4R$q!I)RHGOAHnpEU)6BaC)H+#}!2$%QfwYajv<*^q?jev6$b@PI`y*TN1&%PbDj zWMX4`ZfE3V{IY@&3qWa8nlGYaKubLy@o-^0K!FKaRQ)3HU|*O#n*(^heR;Oe5iZ(8qi_mu&3v5T_6eR@V>p z@D7-e1a{_U*hdeeP!H~a3G09nQiwlEQE@{7Z8#3b+9Mw^Hkx+c zfdqTdbwF2!6WC+@XGi&Tf%rs+G_V8$&~KG?5mQij@yBsPaRxPz1a7Bz4yb+w_>OQl z0XC2Z4Jb%%P&|$(i3f?02`OKPR0OMVHbAy)nb1``(^Ub`Ri2n5LnDepAR4CFNfML@ zsZ#(8uomzkDyvZeN1%qK=RG1MjAdhdqg7+f^?WQLRI#9poK|${;0j^~g+(U}9tIR* z&<1%>hQ1gAeL#>FaRz%ph!8M$vrrLJKzEAgcy0H1N&o@x#*{cvQ+qJ~f%?=D5Wo@P zCIWcqY5PcME6@gQFb(AejtVK4b4izJHE~=qGlYVdhrt+&!-%CrvWfDZOh4%;YR+J#&~#Rbj~l$#Jp&;*&jI6Rz{O!h?oRtFVb2+E*Vm1g@H zX~$`u%+_sffCmLSog2!b9g0`Gpo0Z?Q0P{UpM_9PP#GEd5ae(pbfu9kKrxHL6*{9V z2WC;nC!Y)^FENP`Sl|*(p<+n~LdEtI#3)ovF%8s(T-Mc0%f)6?WnK@4UJxp!;02!s zwU!U+pA6HXsHZ{TWuHg?e4L@7wz{J_I#m2wU55%( z75b<&`A4KBmJdc%Kem3XWGS1#qbgPe9W9yMwLgi3okf=b>VW27F09vVuvODDx|ak6Tah}WU^_qrLHMw^kPAwOmbqmbBQU1z zAq*O;6&za`KB!J{DXc_gsGV_Vg*pmrCSodvvV)5MeWOrp@3CT!Re9~ItC*or;WV>r z%eHNMNy=$}f0ufmNsQ1@BM~zPg}w>V{Lh9uTM*u92>8OS+}YtoVg-;AoNxyRZd|k*5j_ z+^`50VGbVIBNbtD(Lh(8dNb=b6(7r3xLUQHF%Q!Ai$HY>t}qH5fj@Qzw!(mP^xzK0 z$OXrX6yD}b2f%z3c4*J383f3GOppa)`35T@PL651>8rjST1zv7uw=TrdWohxz@6R6 zCGW5Zr5Gc*3k8beKc+UTrG#t`iEPLxVaHnklk>8@D}fGL$YD&4@nqZ4{!iNRtL-{2lm&!=0_4ECwCaZ2SPx?&`^&ba=tjYzB#PJ z&>1KJlN2VoZanit-bo{uU=iVf1bw@|3BbRT0aC{1p48;1)|tSAN)%X7e%l*V(uY3} z5euIw3sMLRUOW!}utMH93aulP}COlCT_X-il>^PuFJg5DS=qpP(?Z zK7piJ@RH+Yb_ei{ZVbmPflF?11|;$ScSvAik=)0(jLXuQ6`}(uk@PLU@JXVZONcxp z7qiHzLByz$T*w!h!%A&FD#`LOC)7t>P6rBh1`6~5jp=}&TZjolN~GB(w)|%UdvKfo z`2bqV5xxlqbvhDN-~*SI%kxan(}`dV02{LuN*k%7533_m>s2xdpK)2e!dh5XRc(jm z4AlpX)8-DRfVqd&yv9}qCA+H+&;(2n%Rpsr0JjoC=Z8md1SCO$eNeVJTF)u1(j6Ev z-a5pgGzl9?%pk~fL@1djbT+|gsPvGzvhxn_0HE4dyrUosO2A=J$Yf@WR(UTb*QU&F6$Z^D#=Q zGxj5?fmtnkc9{C;Kb^APO0J6Q4HD&JlBX@wNlKSl;xza zEtBM>xK^Ch3p!z!t=r>G-Xirg?IC()eWqsfsfA%Km|Z2IOI%;TU-)!0XwnK>GP<9U z%*t%G$9JW4on72r*Uc>d$v^ksOu8EPO>^b#;1B*$fa%_5tvYAHm)UtmtXguTG2b$# zXcl0AJBTd%T}i7kyz3F*45fjMC0PgD-JZ*&Q;N*X0^v1oolvtx?pCTWmCesV-E5}K_StJ4o(pabJ_N7Cxm#AQi^yq?`X8bHURJJ;8M-d)|* z6OhHVlPjr3;RHHR2>>wWkuK@1^~VMDFaoxnio-8cq{K#x5pYhkRFDaeR<~=?NE~#hdFE z$_eUR?C~z|?&Lkm{>$H@R?fa6dT!j}D|p354( z1MqPcg&kt)!#Om_2p{NkaS9fH4(sp=%i9m}U=P(-4nO%2@4#&$Ve!%C#a&p?c~F#D zXWA7302WFA@>|dKCnbv=b??AzTC-NP%;V!{kM{c%77S2%Ikb8LGv(1N-oYsMJk3V;T`Lf|LM3E!&|YZs-CfW4jW0z0^2;Yx<|2ocLcyB8RQ7oR zL3vu8K|3H+AY*JH0+TZ*$)`IgeVXk>4;*35%_jK$fC`|z`ol;sw2sG*1;u?WXN&Ln zz3=;p4E87wSCik5mS0BAr4DSM4#=?l>d=ak(x=dx6%0UOO@IOXdQR-;$hb6<+b$hOe?7~mx0Aa$!kbVWH z6hw&s2jN174Dmcv(omwra0rX35=Es%iHRLOeguh7;Kq>~sU*qZV&q3MPg*_+8MB~E znl58L!2(m_%TqNsA*5Gu-NJaF7@jH^uOOy!1??fU(ohW4o<27%lULA|ESX)segzv= z>{zm8&7MV@R_$80ZQZ_w8&~dJx^?Y#l(1<9uP(>P5Ku9sR-s9|ejPr1muyLb1|5Q& z+Rp%6Dg{S8Qv8vz%$GiGW^Rb(D?NMV&S5zv%k;T&D^86{H?*Iu2nb`X5M8h;LziqM zB1H&bA&Z3?K_5q+T={b5&7D7o9$otMxl}fI+MtM+NRo&VQ*XH0@j`_K^W>2jdGc5P zG9Xie58L^3+s+|#cl3NJ=*&$$f&WY@9#&o(~;rQtdn%)$__#4<}Qx8$-*FF!PiLSTFub4T4+fiyF%y3DiO?Yt%qhqz`+<@_ARAo)6j=b& z?FlBWz;r&Hc7jSm4`@rmvy@i)vQ$$~MKx7bSM{=%A{4QxAPSzq;D;&&Qd6M+AvzFZ ziWn1mbFHWfx`vrz5mF}+4QdG#20?KZvOY!+B`e4vK8hew1<7D?H~g9e_t9`So%W-^ zVxSWwbk{|*U0d0OH(q()opWA$1!FZ|efQy&%V9{nCXm@0mh2T2SFPS80aV`~c#Jp=OH|OBzzAo2xJ3(+j#_Xl!Mp8rIM`3LA_fHW36_5UzY4{9T2D=PLq=MF@e}2oM1Oh!9QaLLE(f;vpty zF|FBd2@D)ST%`3v&S49KEa}NYa?>V8g$4-(hyWhG@B}7&r49vwfDSrR2OQvG32eZ@ z0cP?A8<gZD3<5YKP83uHX(D8pa!3LJ5R^VXd;}U3c|!z} za0EB>ks(>QWIW|LPkN?>R0r!z2RvDUbxGu&%xRb?hbOiFj~D;i!!OAkkpS^g~VEm3e5^0kb(oj z$SYe=0ye`3k~3s$B3lq654e~*hWNn-IW>qM+-5SK)zhg@h3fpeCW{d4r9`6e2;uLpd^4R641qkeH(_O{o(s{%$5 z7Emygx|Ry}%^JdHIh}`e#kL1cT3O$f2#FYC4}4gGL^Ghzr4?7B081hd{-iJ<+;NS< zy6z7jX@X$36VWl;-K)dQ3hEN__UchS;>?qLW5kldb3*PsT`!uGv4#&M2O^0dhEkOM&QFG3nUNZ-z5<79hBoVPMYx2(dE-qA*_!u&P(1LS;kCF^eRfqaXy3 zs08vF*9Od0MP|w5T(oT1&x{K}y!5bvpo_Xj4Hj&hmf;9H{pCxKHqNI;b*k?IGd=G) z3LlBW2NuGtRiU7_GAPcGH`otMbYdL`W`nEr>ynE)dP9>|GvMgWM?_OO` zT+Tb+$&Jl0OqQzJDNa zdyD!Jc(`mNq#^!vp_)DsP18NRYs!U0i5x0o0(|NzUwGEH-t}qeKrkitTRDZL zp+$C;&Kn&0)z2v;76_VYs>aj%jS@gC{DUkmU5GBfa*nS4HwfRmTef<`t}H7=nIXL97=hv}y?yB^rR z)Z@MZB)|fch;!Jj?<1(MAiv(xAB`}-w`+^Lx&`#33zAzkPm{k3YKtvU1I&txW>Nw$ z;H-4Y4BDC|P)m@KP(83Sz!!u;){7YLnLXNDkFel?0?0uN;6X2FtCuss*Kvz4;D8D| z4t;CCfcv5QNUV++rLahWC3B~@@PjlM!7o4#G^i>q{2ZogLBNZ_Fcd?sdqT9px%aRy zw{okbLA?mHK(#PJu>d!)87YsTq9)8Tks1pO^ssunJMNkZ+=3k-Q76qC!$U+wq0z4j zq_yX8L5E131Prpk2#KNp>z&xLyyF0rJ;W}TavxFyMf{+dNh3KPqp6vg0-DkwIp9OQ zIg~>DyhN16SzHwhz_SbR9Y@5zs8NeEY`|ITr=+orn!7R%!^7hvDPH0-$v87C2m$Fc z0Gz5H&{?D5qs42)MpLml>4-G3V7`y=MMh*AHr$;v@fp*jv@WY42ofPos{zuh14EKN z$C95Rfv0T5$9(*fAjm)JfEL-CLCBZ`kO;?I?6~m2D*AywwD`Z2TS(bir!_z@eWb{W z1dkzDnLblOMzJ#%$jI2kq=k3~1T+YV0kZTMNN_}=oNEaD0w8ho5@{(+9I*&o}OK^nY4lne=9^d}N1364w1n9Mt=TMq3? zwuZdPp5d`${K>Es%eaVv5AeuVyhy{y0l&ilNfbyL@rZ)doep>ezz|2|sufd_Nn>n| zm)c6MOu2ti!K)n0!Zgg7Xh3mv0shgde`*f3#J&ya722vjbc#QK5ebp_6R#}3Rf9gz zft#rlolZQ=(lpIVv@t9Zgh%)RCxi=(sLzpdge&Rotbdl`0oCxLq;b%M_C1W)@}Oom{= zva(KLAk9`!m4~>kKzfUA)ScE8%nd{i zzXTf%5+rCSyUIK??Uac*K&n+CAO2G@{KU|)%#=TnFDDRBhoeosWWNjiAWTam+8UNb zYKY1b3pY5hW(om3m|{tz>q77J zCbfu1IY_~pG8HTUss?c^SY)~#)lxA$(th{@u=vO57${OA9tRy$bD;u3QCt6|B` zx$upq1I>>38zd}4uSgtcXpm&DA~uK)XB3P~j(zdJZHQ zpvnx=IO!_HnVmnaN!x_b^kC7s$X2s6C=yb#l5EiskcbGF(afU>n2gkUExbsRfR>sF z9qdsdBtMd8Fg#0`l%?CcwcESJ+q~7=z2)1!9oeu2)9Y(m z<)BQ-_$st5Q%`k8wuKHu{E#{1kd}D2irOUL^xDgfIT)yb3&6g{R7}mdoN5KgsCB}F za!YW$GxD_DH$xe>9W$LJxQtZIjrH5wwcXpr-Q3mP-R0fhwTM5UfFittee#l%^e+JO z3c|StITA*Hf!!oD(C716uEh|o3scO+Uaxzo)cukg{0gQ#U5{vkQ^Z4X?ULvJ^~~O& zzblK+wc#H8L*ML`U*}W-)$z3T@)_{;FTAMAHN~a)y+H0+HFW|XEyy530w*d=)%j)M zY+O4Ds2lx_ol2Wik8xc@xr1-?JZH?HK_cJ>kkVZu;1Wu+_&_7|b)5!QVSGHE;_w3N z(2RVMU|0OvWV{Q0yI>DnKKtOYCuqu;fQIwpzX)I~Jpv0RAk+g;0?35`oK-+tnx++& zVr(oj=4t{IuGB2fgb^cvC{S8fnc+cH(w9I>^h83>(}`~~v3CNx6=e=b)WYPi31oUmWV42c)q!JL(&KL-9wHdr&UFz7;*Kc1Z%M~zjR=4wjH8cbf5QYA}TxTK(l zSMy~y%nP_-cF&;}zIG(OnRc|f>gu{~XB`FF=}AuIbZhWf8MJm^Hw8>UyA@is>%&Iu zH65Ml1Vx)3bI+=6Ijb?xGHAM~Ir-R#R=& zF1pNiZM+#=&URS)$!lUBJ%gC*AT zh3I1+;I1Cv0-WkDNZ5k35@A5<18LHMG%_YXHV;4lUzsW};)va6Ft>Cr!66)C0GL?? zh_;(~4qWpV(a#QX_ZdYMV)SPs+WX*xFffaGXd?~hfp+T0nA&7G5;3pPt(>^6-bjII z3V|)?KN70~?nR#yzw~4W5yP;YO(&RPSxGCI&3y?{v7(^_DdWw{cE*LS>bZlZ?&N-W z*FEow3)SQjTC!S)^D{Dt>VAM4&;mc00bPfRYC;2*?gyO0av-uGAy`sn2Y3&G%uH;s zF$wTbwHp=q3T7w=iL#7c0P6CQ-Y3_BP?qqSDt3$2b45DgRAvGjP>lz*h$c%g@MQ7>)A>g{e6JVIhEqDDf$`llz1 zsFw)gnV7GV=$>9Y28goQRu%Nd=(o1X!pbHl5Cdyn<%Vd`evnvUk|`~uQ;D@!4~~gQ z45xR0Z&ios5v!o)jCFoX2>WwFtrdL27k=ePq8*xu2TYN@vDJx?{Mw^@iH?hWz=m`9 zK^tl|>Hf>PyC5Fm{;BRm>W*DYognA`^9W}`>WL`fCiMPb-hRZ#y9)~b;g|pC=mLbt zg+c%g$Cp*+7ioa#XJB9rG5rn-#DNeYo`nt{LWKCB2$hHyFJjE7aU;i$9zSM$a_|Ys zk|tN2TiC3OM~Ds(8(qDGG*O{#P$)22?JLX9eQ zs?<}isB#465Z8;Y9SJU+BX(@ThC<=dJIJiu5K&m)!nG)pWzK#-<@(I4ckf=fJ?Qd% z`LSZ$!iEn3V?dn0BTlS%G2_OLA16*W%HiaL$TB9&oQwk14GXyzGNF^K!h|)HCW%3X z0Tikw5Sl0&C_UEPba!MBE4_dJ|JDe6IPv1fk0VcByd#a^MSb&D4*WulN42kG z&#rwt_wL@mAJy#Y)F|@gW5q%y31Y5fgC1(mJSaZ>`u6YBe+X=U?9rs_kab#6ZLCq? z8dYd8#6cu51_O9a&9xCl7q#_+f=yL;p->t!m7#~KsfG|mMTqzzh}AuqqKYfB*rJOs z!iW%g2q9A$M!GP<2#z`K$Rm%5?1*EKI`w#v0=i7XUoT5KG=-B@C^67QVjUzPP*Ldd ziY=@xuz>^?CL%#=Q_c3;XEAWXkZ#K9LCHXx%tD-!ifXB= zg4(JnpDo$vMO82q)kDXl^pua!@2u1mNse(-O+9$Rm?nvdJf- zY-}wnvs|4QHE{t`1ewsh0v1@Dk_FBtQPA7RH$1FL%R+yqO0-2It4VcAGp(c`Pt#VE zl_0&0QW7(B2A3#Lh;TIv|Hx9oH3mOCGOVIK*^)7v%{KRf%20zmNy>B6UANtL;|&>q zGA`irLZ{S(bli9bI_E`k4_dZ$k5P~_byzXLMifI_4RHo5Jg}0R6+mWDY8Kb6VyilQD{MPQF}^mf>0RH!DJ+A<4rBzRzEa%E6%fG((1;KM91TJ|(TNhRhm$+XV;jw4;?M?HC@dl}k&0X--n!D3 zGg(B1^@~ah5hsyb>Ew+4K!Om`=q4g8U`kerQ@1SKHR2O)Vxq)aa&To4TQ znAI_!tx%F+G#ev(>C0aNGg03A-Y^qKt-`P{jKy4vCOJujAC$;{{oq2**29n+`f4`Z zf*?p@$t*0;|8jZ&fC<}7QpjCOF_`LHCp+7T9Tx=cVca>SMQF82Jm3>3njB?D*kH|r z%rcc;8DB|+$CJ@P#1?uW#xi8FJr9)goakJpJ1c6@i(*tM6Y^ zkbN@Q0=*(*^&0kqKV zZUe|xOOiIY!X5599kh@{`~jlPX^Cfu$yYKm1fK*E!@$V6&yF}?SF7k^m@M?L5kx_L z$_$@&)bu>|krQ3xF)z{}`CGoiH@@zxv(lD5rx%vIguixwLK>1yUA` zNU0+&Ku8>n)ZJBBpaLmXf##B8g3~epOkgwIcFapl(Uk-i!B`vM+IzJ30++ZdUNMWU z=!Ju<;%C}?XPjn*1cEuFy0gkvM%<#247a5KJ&b}Y~?FsIm=q!GMBsT<-twJP1|*uU*o8^8rSn6P`d6_rMr7WKW(xHrJ7!9xjq*xXL5VlOfK+qUafp@8bXuI&tmfi$* z_J|EQ@*sjYPIM&{QH()MLp$2io?9q5>2FW$luc$Hol!s#Bqcek{QnBSSV$ zJs1EF5E2Cf@Sq9MLpN&r2x8x~^w-N;NH8FM3XC{A#nT=*!3(~qY9r(Vv&*w6|0G$P za7RRx3o(nIAo7f74CB>_i1Ab?$AbmbdX>Twbi;WGmH3@^iBPtS5&IE8=hTJCcT9Fa zoanrGHXEk~-#O2F-XcK^PZ7?I9=J_C*d}2m6|h-_G?53J9_S#KK^Q=8t@=t}vk#%< zT*yng-g2&I0TG>$1weT-X%LZ|_237i{N6^Dojn4OWtWBn$$Sv*>~z6mbO!`-UqJn@Tf|9r^6dkM<_ zK+V?8gXb?{0gV*IDp=u=zO!PxO;_1=5^wLQv=k!$woHk+e*E*JKmA(k0CF%u9K3CJ z6&GJUx&OZX&AClGf0AbSlag<|Y=U`!f-7*<66App%#ivi-~uvWhpa}^9Zx^>&uJkF z4gd(Q42C8+7!kaJs-*)X#NUE#j_m2*o)E@gIEHdvkMEJe#5CXw!e9(;L?x+^wdfe) zxzY(dLk^7Dmq0{lbf2uS9||53qd^`ElGF8wl>*3M6FT7&4xJ5d$Z_?Sh3ppWeN0su zmycbDhYS%=oXAE|NEmVm6q?}~s-Mm=iUk4)QOwQ<=+FZiOiIm||NfmAZB$Yh*xpCX zRD~FmGNEB03gQA%mFlq4Lv$Awa$gW~j-lyCq2--;DUL5JMBokLC1PTWl@9D#LfRdR zimX{;kOCCVlaZ9%VPKw&2?8bd119jow`F21$|7jNjp+g0?|>o1BOBmxO8V>`N|FU3X|$lSqP0O_byE@Bl%M)#Kfr?Mi7sA$pJFx!V{FC zoA6>>$OZ;{f!!Gw4KzV+30|q)z$7q2Ds+M^zT-x6q!sy&{{xi5sBji+kWD1wqnl01 zK2D9AVdITigfyvxJFo%yX~HS|75ONOhYkrBN~hdE{bBAKwZOxz*qs};avx9bV4pL z2~)ylT(V9rjuP2S*%(?~5IzqlWg~*^V?ABvOTJ=1L_;@rW9hw3(YXK(I1|JrP=jNS;P%KL}0#TB^KuHnAw?SSc@RSCD7nK z4u$FX$(P|~ZtCW4@@8-Prf(*kW`Y_V5@+qy&e3Gn{{-G2PvQv`G#8HL6DA>qX)4%4 zXhJs@!zqkaSbm~n5?x0fgfS?>Io;+lDaCK1XL_pVda`GGx@S+>(!m^J>1htkecCy; z%m%n*Kk`^aP^W~1kUSpYL0%Cuq853cr(9L$f->k*DA9~XjmeGUo;ZSNUYC{dqpb*q z?wH8C>6-_21&)A5pd=_wjh9e0Xo{++QAA}SdM5_#=Y{sCbQX-Se28<>02(BL8&Mf; z&gC$*XyMG7iN0r%8tIWDX_6{wZ*l;E;-oJ=sbl0NOR^-zeN@3f1a-89=v_b(49XOp zsF0=`krvg8n(3Lc<`3o)M-9;1C4wusLXDUa|J5KtIk3SfXhAGY!#SWqF{s7{q}IPnkJtD&4ovkk*A_`)z8YA^oQANFWG!jndZYtURlgo)rpE+Vd~ zt1?D`rvZW<0_4o-4D=zHMjA!{&8T#NMY7`9QJkvz-R1{00lQ^bj*7rc9$eKm+bGOK zDb#~3AmwbTRIIe-;rI?j96)f+fGWZO|2Xm|FwVvg2mykK0Snmcx}xkQYQS^4Tm(JD zc7lv3B7`>(5NckjP+WpLWYGh@1*&&2Ie8MrZ0T?uaMZ5tEM1dbTXU3w| z0Z1PKIfR5EgbxV7%!D7EfE*uz4^ zgD@aODvaMjh)W*zmXgS0psJ~`OfEzSfDJ%EYQVtwF6SMlW%^=p4CW3kj2X8Y7d4_S znYhw^YD5ZD$?Hmpuh=fCI%l0BPt$RYBQna}=2R@q%Q{3RMEJt<+VDZd!}9jS{yGg< zWu`-_Y1CLQKv@a&#BXV3@Dq!z0s|c0hOl8!fDn`>3cF!4Fhbkf%e%l9QlfDGIs=R$EItKTbd zW^=I5o-xv1lTz+9ICPAOvjrSe-<{!DfPG8p|-8Lp(Ty^*sbEa4{(SZ9TZ6 zFvJ5o)I%&JLd3Rd{lf8-81gM+;$~fM!-&-F)kZFGLo%#`vCgQ!8t{$gmZnLfv)WBB zY=S3%f<|C#wzkK;sB$U{?vwt49KtbFW+pC!^B{h2?k?ADut+eh!#SX4bYe);DyO*> zTHG?o=_n2WM??q)8KXQP1E*%)=rWYeSa>b&UlZVqgaL&(jKTO;e*f zMQk0D&iT&ZP#g7EgSClG+?o}bOaI4Hz}^Xzi85Q%5Nm}#gY204Xmy5lT^pQDA9eR3 z#HX4=IPm4(HT8e|=TLMKMX$9uvXh~b^kT!cR*ST-+@xa6wOv!TB4w{H>or3!^*%ZE z1;R8$Kg1azfwxhhrimqsLPYLn00pAVA+RF;W%aD>03GFMiO^**T9}b7z_&_jZ~OLd z19xx-RXrx0|D=uR0pH|gODRs1FjK4#W0zZ6t2LCS8`N>#17w00G;{VY$qC5v$qw{l zM)1gL8wAu@6gjq9ey5&5#2%D!Wy3d^j*9ZG_U+J}W{RHs1;P;2;4d25I3OKXutOR^ z(z%)TRTo+0Fi*Qp6V-v-Yo-h%G}bWW@D7tQQRLbgAb=3mfDBZ?88m?oIDsD;-ho-D<OTWbsL<2ZPLp1!%38a*RPJs?I zL46B>4$w^qDS#`y10mpZIn+ZjMB{5SFDTSYc!N&`K!7b=?dJ+WmRbPiZiT~4)4`gM z1maO}0u&@*cR~0gx6=8pr_L_C4stD;B5c6isbH`xcVnD_Bm_e^zyecmELK24w40h~ zFN})&EVVIV5TAlQT*kmf4L-am2+@Qc2fUe3xKzc(r7P}j}>%bXU zh)W(oq$^mT^LoGM^!`$<1XkgPbc4 z|2mX{J$JN$TI{H+coS4Z00_Vmc#`_?0SA;gYnNUV_`wczKn)!1=h6;G009zET~hk{ z&YO%UNZQdNH*zl!f}h!f%%@`fss<5GWr+5|Go^4J*gPg|{NdJH$GC%v%ffsJ}Zv zWq`a-09K8xP}5$C>j3v^#0spzED$%(yFJNVSZ^S1KOimxK;ryNDc*Ha#4u!YLrx%k zyo(dd%9RZG$lNAiD@-JQ&Aq}gKC_5~G#?>=6pZ*S+!3&p0caoBHMKoPJZ@Frw0U~< z+mrqmb-^e2>bQ!vcUndzCG*&E5M(YGhC3xqx|G))QRXXHTC$ zfd&=&k?2sPN0BB~x|C^Cr%$0ql{%GbRjXIAX4SftYgeydu`-}Fb|gs{Fwv%kNs-{V ze2b9CIVh$^K^%4P(ydWfZNWAKsWcz~QgGjih7l)Lj8LT2m^2&WMCr2V|5=j?3+m*# zm~+3O15tt%J(_fB)2C6VR=t{aYuBQG6!`(Nb8WRd3BH3Xr^>^-dH3>7%#7Kzu?z%j z?q!>KbLS3~hi+V%@}mY=VEJ)V4d^XJj0SHGV9YEhtThL@iicRz3A z;JHH*@pm4*!WAoL2r2>_3^MsF!)(3<4V$hq>zbkuC-|02=$AM!jN=#RB2$pDo*0}+ zs0=kED#Q~}Oi{%ZS!~h87h#N1M(182=#^4Ho3TN*`WeR?-6ZPoKhD;8fEEfbIuSe_ zl|=GE2$yAbrvW3`Agnh9qWNMxIDA6lBq3 zkxf?FWtnZZ*`12`;0b}c5NpYWKy(urfi@Uu8s5NlcA_DY5TV=!KJ-vri1J}1)h;Ea z^hx;8G&QD1BH<(s2@H_~0hdIrqJo?@%yPE;;0kw)L#m`m`Nrm_(8pNG^d4U~xby{}>b{4S~w7*JLs;EeI2X z)`3MJUs6d&5>OCg1eJn}KHAcL78vVZavIs!fGV6g16YE12rPq!Fo*(%3<$U-gfkwf z!fY3Y$O4Cf3u1twjV0pa)P5v5bAW&OjxA5B4T_|Z6Mjxy@x>W$+;PRKd||*Vf9IqL|@;fh!=0 z1r!QWAqX9I$YcN)2HGaW)$z|?|NZ$#HgaGRLA!|D|IBBbs}BYUQiafoPDL>Y(S)AY zgbvWJfA9(kBjOro*CH4p&>Z6Fq!4L|@8xRn4{h^PXH!5~7AfOZ0K2K4bE3JjQn6nIvFFEq?c z8;JukDi}sFj**OIY>sst5QKqX4j~xm0Skfv$0#I$1}~GL9jrI|7WA(6Z??_2=FY3UNYk`k(o?oE>mTm z2_APsqCFW>u$eN#qaHoCpN7mKJhEXS8|QO235ud;U|Zb6bU8bMxPxi^NJlONk_v$^ zq8KtsSdp`YZ_{!wM2OV@MOXuxAH^W_Fw@EFtMOE$V3J>uz|DDtOj-)2tzLl zD+u&ThDn&k1S@a=Zt-4kdR1+oo0GLxk(b?Hl$WhH1r%wE-DlTQ*zGd$qIAlw`o z&Je}|hNuf<=#*g&2C@zl3dEAOi$^-(5e#39A|A0ANF@Rc%AC9>cZ)XMI_eSe5YV*Y{&_Ul4C&+n$S0H%s>cHE$XJuq7+#x+!7*9 z%R&i(eAG*bq9rXeDM>k8&XtFL5?fuBC54k(@SRi4TFHC{NgrBEp0OpXHaAiUekxAVi`Ca$1N2;k2f8MA<%&Yzi3LwD&E_1~jYROLImEZ-K`mvf+(2z+(-t z&_uLuL4&|vE1aSJ*(6S_{}NkIhR!L`C8`ZJYgZ$vGw?>QuJN63eG^i0wfJ!tj>NYL zc!2>0ANU2RZ1991T;T(cQA!*vVQ?+5r%O&u7489#dlcjz_4qcoDlKc~fTxRt<+5bb zZPOGhIFIi(=49KeiBpTV$D24CEXW4_(DMW5p-K!yFoq zvT*=bMS?9zD6NH3sncDObkW-7+gW)=#CUbB-<<4aH#?oYpy5I$$J`=+(~|Jx8;c{x z5NmkHK=R=&_>^s}Bp5I?4NPL9Cd=fXm@}AZv-O$h+3R251-}n{cF9kk@)SM3R;2=E6K&(zq)CbKtbB_=4 zh6f$!$`7CT#qXw#j*1e-8F%{!|n z!yw+?Xw-9b8=w8{cYoz&vI*{f7DN-i>D#E_+XnFU!VR@f zCkY7P3w8j4tWGA}r5|c=*1m!Qb#MoHu)S)c6cViqtYF#VsM472S1RpTu1$fAZfo`e zA~}HbCIm)FV2H?0Ph}@o~&tQ+wx}pco@C?zgj0CK@)W-!K0hI>g zjlAo#f{6y=h>qw;M!exI{7)^S(7IM&0&HLcaLERyAPA`N*lI02UeEbSgNY(DNJukPhN6`k`}< z4XBi)j{0EX4L(3r19N5uC3#`T`dFa3S>Id*)#tvWEb5V&ou5z6?y| zj^&!>WmfQUBuTO)O-3dXOeT=z(NuvY323c$ZvDzl9r12A98xhNvWe&bi%hS6MByj> zuH5L6J7Ox2jPgNlkW)-@DVee<{l^#oN1u3ZDq9jHt+Egp1nh)yAXbqHdCDXhsQ)5@ z9^3&D;NkLKFU!cVvh;*HLJX1eA>EtLVhB9fhHf^&(mhsng(-SK|tqM+Xs3o*!ZY>2X_MW6Tk5l+O zWh(`9H#*Cf^h>9hP%Vg|^&oRhoa8ZMGb(PgJH7KeQH5}*CJ66x0oF&FhybWODLIuh zJl4>~Nb@T{@1h)HFLp|S`eF>gL@|d^a|VkoH?Lq4K@+a>%fRzM5i~&^f<#!NMB;!T zVhA(<4MQf>K^?S0FO)(lG$GcLC^Uo{%wZhd!a3&?I+M%^nK0TSf*2wJ02~0A;_{3b zAlc{!%-WJCNT(7NbVqsADREIC0001pffG0Z5E@|>IH3TDAW4-}Nt;1QIiV3`|DX{X zAxRO1N;x4-k`zm)v`V`aQKEE8iLPf1> z6@b$vf>J)7;BOEm6Lg@4-m^}EF(G^OP!Y8xeQz5gp;04&Mb*p}k~Bz3Y9OM3NG%{q zvlOr}byEQgOf!`OG*whHRa1+!QwPFSEr1|YHA(vhB_0&-3<4ID%s(PVni6wR5o84j zN<5)y`FKJdrU4xjwOEbS7=4c*h(Q@R<`qU&O4DRtNMu^6wOXz9TCvqy`{q?SqAfZv zr?!c|oD3}@N(NGiC6dcKD!?FFiv>9HM)B-e<#k@s(92pt{w`(yJ`kd;|E2ZpwFNBH zUo8|qVijBb$t4cfGaOW4{Z$Y;^ppH#L~}A+DXKGmR5LWvPoL+xcz_N+G8nIkUPX3f zDXPZUM;naUig-Zm9ABORj3ImS$;>Fa{N}YYcZ->rllbGN*D8SBGiEmvU6<>_i%G9fG*4v ze{21G(;sfEuL^z7bO#V00`7aTk2Lj1mYCT|Mn0>3~^O=bp@>$ zN-1SOp$H(0C8N?KzRqs%w!Zq|TfdQy2*SzmW@0y%0Z!>4A_2|T6g%G~9}RR2$IqEE zP#sVgFj=>Htrw;~VihRh6z(JuP>4BW5;Vnkd<#@-LxUjr5HbGnc@QGu2!b35LJF$z zM~jwmdJZ)D^?BECB+mAF{r7)as;hR>6Dj8p7-HFqpmxdEG!k}q;i7jf%~nANTn*wU zsh|$9fgmX18iuSuGBW)r*G1^oc@->q0r-SbxQsf?AUmYx{v#rHwvq$xZ>IZLfhD^no~#7ywwzGj+8#^v{~;|Mn4d?%h(jimiBmEK$;jai1Xp1xGHt` ziv9SHk0}){VGstnkOzT~5803pd65};kuTvO1{skbxgZd^k_jS_6S;2AOt8=wE&3=< zr85eJm|iZx5#)y;Ty)6n*zGEJCk8{0)en$md6xSJ85{x`FhLTGVQF+3mvtEvIsqAW zd6x-75|AO7C4nGZ!5EmCnHgf4jRBganVDTdnO%X*E{jch*DJTCK0{fJBTX`3_Qe7R z{|>}8!?=D^WP}Am4@8od;W?f`MwlgG5rV-T3?ddJ{~;Le85V*87Tn>V|2d%jxu6N+ zp6_`PidmTr!x#u6n!Puj`vD%7kehdET>YvTVSlpyBefuGYvZNmmG|FUqy32Y7MB9@kg;Jqwijdr znvoDTaCX7?YWMgk%eS|ETV~N0v^DwwzsZENtWQtsrc{Cx|mWsnfTIrxS>iY%$j0uY3k$!_MdWL0adR>!f?W>3dJISc}6~ zhP`{g_q#QXg)2+bG>5wtoiHtMU=7xw4Sb+qO*@Q|m38Vn!X^Bucr1>{b4ESj19VQe zIh?;e+%3aXFgI&`GkU-u(hST%3<3itw`T+2b${F~O_n#mC%ne#+tJu)fD4#65su;R zJHJ0X$lEjC`r)(h^LJ4*4C(;M?X#O9{}>8WfDKd(sD^e4swV8>H@^Cym-^Voy?nku zX%lG2*C?PAWaAIalNy7~4#lm*g*?bVM7&9KF8rf-?*?-Iv<%*(y*J`WH`Hel&ndoq z&;eNi5HGT;7OWqE8}6fw$=kdE{fGOH6=5O)FdIG{971RI22#>|m4eVgU6$bzQaHtS zlV!XOBX}wO)oe5?0Thalvl59c)M*`sUxpTj;Rka4aq;xb=l41{r>S{YeN$9CE*)J* zz|~O>tWiwIhO*Y7-GAxt6*ho!iqHeF9S`A%P#Jy1uez=%c$1Qd$ouozPtx3@J>3uY z0zIKyQb`&W>J-cM#|vt-W~BK(|HluVT(lcv&r5L68+PrD=GWQ=Fr*zIlMQJ!QIxRA2$7e53I@DOtzVndQo>W88>=0w=#Bp9kv{2_e(9OM>6O0z0-cNR z7>Wgg|N6ljg*PI?GV2jy+q{v91DiQo*d+=MVOsv=L0BMGlPG)7>D~VA;Xdx=e(veM z?u}kHehf^;qSvX=o5Ta=2f|N4rwI*UbDd+`E^_6kK4Sa~U>M+UR=kTY01^LMeEyR6 zh6-!#e)BoM^F9CbK|l1J{~naa^F>LYSsLBQ37;EfW0hGM&x6UhT;hG)CU-kRizr{5 zXdt?jTl9VZ_kln7g@5>oKP-C7GTZ$R3eKwmcRMTOJ_hq9eb_mI;Ve^yjo1#(sE*{o z4EG0Q01(mD3*yh)K7>>L{6!YWe{2{oXExmbCDS?tS3f-BVG-iN90r0JyiGXS8zA}# z97wRB!Gj0~*81^53j-4cAqvdUghmJ&Lu!>s$gyKW7#=+e8fl`W$&)Bks$9vkrOTHv zW6GRKv!>0PICJXU$+M@=pFo2O9ZIyQ(W6L{DqU(*1wmjreD#ugf@H|6ShI!%CXj+D zWTWJWEr>^}*@0^e|CY1Vf(nTeIpD%QyY*lX8VkN;$|zT5g^PS8(j6@5Y2mFTnJQk) zxUu8MkRwZ;Ou4e<%a}8xEFcOO)X!9>!T_mt?%>l0KNCbEw#q;ysIgwVCh#3Rfon;L z64*DkRuxH}EO=N#BTFhSPWr|=da6Ov9TO{GPQAMI>)5kv-_E_e_wV4tiyu$Ey!rF! zt2ZaO>eDJ(?Y&&ckUsY4O9!hcaow+MciITCH9}t-g$IKu$lYQbP2fq?%X5gWRNsUY zR%qdc7-p#9h8%Y2;fEGlWzZ^#cwi!4G=P{Ibp5=u$bMt>2c9$YKr&DeF*p|@ixr|2 zk!U~$Imr#X|2(3ZQ7R^>Ex48M%m$LKM-P&EE{w&P;g9^R1iGju+|!E;0;kw zU{ZcJ-Glu|C*+$)7M13lbk=F-op|P{=XQc5_+x0s@up&PYzlN6Sq6BgN*s%_rHO7M z{jeu>gevGJoI}1Kq(YVM!s(|N&NS($q?T&xsi>yudf2j)sEK5-)K+Wlwb*8xBoMFimK?Ln4q9kG zU_L;WcldB*iCc<78Lqc*9`YHn(1P3Pkb<@;ZC3ZP^y<6X1}yNv1Q%?uw+AUwgajBw z@c|7T|77q1tM^V>s5#--Du+P(bteNs?NnkAyWREW!iu9M31<<&&@zlF^uh~nXM`4; zGM@y_l%q>$?i}aOKnE@K&_ow)^wCJ`M35&;yQjzo4LgkD4kKHf%O%}(1B*LItk#_- zW$4q6K$PgybAty~@YIuUY9J6M$r#3RAqz&^Pa;wQlZr6IfZ|DLp)P>qO9f>?T+)aq zuK41NH}3f3Knvsv8Uk%%`6d%n0bC|51jnVgOP6yi9yRc3i7on2@{xg5BoWMNSZL%#hiV5zu4Mj%i;6JdpkE5neSJA@&X zE@a^gBs)t59x;&CO`#xX5D0Rjz=VS^p$ETOfqyWDYo-17TFr3U!$YJ)&4bUP4&2*rj9vut>!^B!~%m2m}?w zcm+b-;S5G#!X1n#hb&yxk3FD902XKgZNJdGxLNRT%4Y(VB&|A0V5 zkRpA72vb$*MGFKm410j$Wd_Mb69r-qLIA2N4(OUE&!WlH45W-_N`VIZp#uRV0TLnn zkr|tnNI)9%n8-|~F;6mtQg~t$ga8B}t^%+O#c(inkR(A;M~Sk@V;_bYj|et7018aO z35Vm6B8^1~L6qWq21!Lhh5;ziNbs6hAp$OKpaW9KU>C z?@5<{7K8}4z`>SmP=HP100St%fe`tL(0fkdfp?q13^-7^fl!U2P>rfo|EH>_lKkoq zLD)bkDBuaMGGJl5=?Dd+7SWCDtJ ztiu%s!9*(f_r$zyMh#}@Ks6n?x_+c!0wQ1-G?ZGo8Dyab3$33(aG-;pZZfhKz`+dE z1w-wb_Oz%?t!h`BT7huUuz(}&vJ}aUMSv7hY&~8(RUrd*umb?TZN~B@WT_6|Zzj1j z$SJx|3Ry_*TS8($8j7jWCK!PQW<&rBezi#q{3@#$$;5mR;DjZha|e3uM-r~O$pu!8 zs_>1keCLZ-x@D<_fC^AS7mFTc!Q)V`!EJUl!K+8{N>^=}A$jn*|56FnYb1E1Cp`<= zJd^Q7J(h};q#B5(o)MBX!=>&`ANvscn)t*hPVo*efE=*;;yv$?pt^h{V)K;5qaiT> zTk~)o*zMM5zY1kS0S}Ftd41kt0}r@B>3eSY!EtU5%of8hFV)LH5B0OCM@{NKIzSOmVZeMO z#_CqDS_Kp{Nro65CiOKkAw15G97+tsO#isfz_xRQJS}I%|CIXJ$WFGwx>rxBTUFl@y^d~EUEMgqv@Y=mm?i)2c5+MZI5VSD_3fj#rFvnuJD1ltDPtS4? z#mt#pVlWX+kO1gJkGtIGE~QPl0?=Jq7!b02m(JZK|LIb5Sf~_$V;ZVC$FcE2zWsgf z?36&dtV+Tc!ptd&LH8D-aNU$x84q_5#2uX{h!dUKH&!rW6!EafKvoe9gAl@$v-*f8 zzE^D4+Wz*q&%N$3d_BpVzFft++=17X<=_HB94&0Piv6FR+9!AV#_v z;Ei-K$e~hjksyrdh!x>5j8#Z(9q~v->-)h9dVpdegh)jqQjv>7`Hq8+sy*-b&;S1W z|Nj8E6oDXcG*N|8W0D*9(Tcg1M6VqiUGh!ch30rZ89rc!HC6RPa^f1B}V=1Y<&N z;Q?z4H!PGWftDBqO#pWR(t#cl2RFib|B3K6b5jtmlnwyq3+rHpYRF2k@P-ejd9sxV zZU>0+IFIyLkM_tERdNc>RXLbbhz5ZdneZW>5kMRxCJQ!53LuRNGL1tN zhzT+kcE#`sz~c+wI8X0UK*iu%p*VJk6cG={iza!JD2Z1rRw;$#LaW$v4OS>(a%QZf zkje3J4T)jJ0d}1xYu3~(qA>vL(1swH5{6Vf1w@iX2`e@e5qQ`S@hEQhIF(dcl~&n@ z_XUDR79AXdXCp_G^^sr=qLfut1b?7&1{ZFH)Pb-vcG7_u@}deUIhS-=9m6r?v66l%QB&xZMy7{tX_>D1ny_h!2@@Yq6*Ug?0okXSTDNw_ryl`U z9uyc=odO}NDQvNMoXDA+oLER6AskwUA_U=gJ@A>BNSemCR=I^X!Pzd=Qh>UU3wT3t zkC_t6S)S&3o_W}Cb4Y_tB1&V|0YWg7xIz#)q*L5sDIZ5%E+-|8Neh@D2`h*b=sBPS zN||CLdqxr^?kP&5>6_EGSvlk}gcM&|`E15npctB=x>ySyApwGzLL$jaf=MQ~R-e~a znATAR3@~3hl9|PMp&A;a|1!FZL11N{<0K3EL-J{z5PG87lpWBpOBQ1R2t9pQ*~ z!jh7QM`370>#3N9da0P2sc0#ubDE_-`lAVmR7!Fed1Q^#iFM2bR8?9e4)8CU`l_&s zVvm5N9##Z%k|~LbrMH9?XC|siB8eSHtHV|)Nh%PXa64-WZn3(o%nDVzRS+J4h>K~Z zBFZ16GZ?+vC9p$H|08)^zW@WJ;0n>Grp;Qe=K695!BrIS2MWiZ)M}7uhOL7+7=rkA zpth~Ux+FPR3%XE|xO%Pt8?Y$!c-%D+3sWcm+Mtkz8nQ%9eR-4cg>I92XKfiI0(-F- z+l%%x8euw9dBYJqhm9BlmgMna!J0to#ylCjvMeix8%saIS8m%%c^3kf>{D_jI|35t zDdTBwE&H=T3!EE^i+4kaiSQm^l@J>hZy#c_97A>DfwC$4trc5)L3_1Ws~tltjV4$> zP16NYV+FOOv}`s=AmX&~S{_n6wezBOM@g|+8@F=1wL=1Z6mTO*S3g03MxE3HVzdjMAtXqCk$Qif+=WvXW;{Xr?046 zyhEqDKzXP#yPq6Fla0iHjujG)y1cVuuM_8a^E3=KcOx~&2(Lg04B!djNf?9C1ek>c zIIsf-5K<0lyza}33Zr)#;5MilnH|!p*jcBJm#mx{bnEb)0-;3SyAG#hO2Ytyw@3@F z1qhm`p5D<`nQ#Ccz`j)Yz80K|TGg&ibr8q6qD^A6Hl$X+A*KldR%SbK8u@twkq(TY zMDaHe|Cq221nEhj*{#`80i#tveSiU$b;B3@!*u74-G~rLkef@AK4}}hb*e+5dQ(0` z296%3&dtDYV#7gGW)^viF_zZn9wU* zxW-{Ymk29h5b>}MC`g9=P!D|UndFgKHLwH}ajIH-#)zD5Av&zYdbVwxW^YWGDM|-) zaIitA2&5}v&Lq0O=!!*|9++|Firg+740-3Z!w&wT+DWPbWRfzcu@dkMVuLewjGh3Aazt{6cU;f1-1YP z{~s2Cio9uhS!}-GeW_d|VVS(tXw2wrlFq~nrEr!LF~7JOnzcDGhgQv>_{e;Mheo3%M}VOIti4^LCoo#&~ld;SoI1NkX+EpcPG+!w@HkB+Q>Caav>bcYxR|~ zKO&@`*iEIqX=$rZOd(Ec(@&&;D9v11H~#30>J2U@!jd2B^y zxH+d}uy~b5ebh*u)Y^lWFg+FTR%h$kyfz)p`TLtT>~I7j&!?$~*%EWrK?IC4)Ga;M z$B7^vN(&y^!DgL@q)apTY9ZO`8)9M4+*&M<2bfG6v6ZUSeBIZ6{ntXX!B)_<|Ml|( zTe4;8WvYg)UgpI)(N`hPd#wyh*S`^_NmtG=L7^v2)|~B{3ECCJQ@axp&tnxaQLxzk zfSZ>srE5DOkqygcfdrI&tB^^;QiX0J+u6Fki_G+0pKuI<_K|LOw1NgT$1vJc%4%Iv z+7XkVkbR|-T~b(a+8YKO7g7O(bBP$C+5NB#yZzmhc@nW^Pc*!*bLMPPJhITO9x?qb zE-;8pTVD*2f%w^lww+8RZ8!bE3Aqj4{(Zc?(6Qt4u`gP7mwTm$XCDQ7HUc38>w=8V z{DCg80rpJ=Lev@UMxLAf-yDvTNy~9YdvR)`ajG^Su6&)+*S`wk1)@a<|CK;!4P&OgMda+Cut2bq`apvSjazTxTFXsezi z&(D+Ibjg?s(c_`m=Ejb~gI<*1r|JgYw6?ymk*q*{o}MPmaE3hQ{|1`s6?W|09&uEQ zi6IUj{-~K9_iE;DyRZA~S()E)LKV-e=iO}7C@3>3|mh-i%z*YRnWqn5g zMf{veAn?xFarlhCkj&9!TO4?~)zyBot(}|&f`j;e@oZZ;&vZFX;{^y&eGo(NoYMo7 zhT0iDr&m$c3G?nBT7%#=iAqOt4ubJCZ<*ifaY~Amwe2(aOfO|SvYndp(wwd=-|`_X zrExd&HNW(zyaR`$g?3}_j*RlTUi82Yal_*7Wjtlvf-)3_r$({@VZ^5l#PntlqL1JR zY%wfr>CEGNc`8oRCr@&mF6|C~>8d<&btD8aujrPVC&Nqy|8H<3u3q?tfB127%^9pE zH^SV1`(?&$n{x>CRNo)bo=;Z4;NIe)5)_T;hQoZ1nb@5iQNU|p-!Kqxq>1$RXW#le zB1+Cg*jerPV@vyjH^iq7*Fg`VgCXE}nT-=L0o70qz>aLCoG?9br1QNO)^Y)SZvab> zajrl8`U;euppOt8(E#6N0uSaW@&sJA!IZBbkUaDg=uiB#=A`DjQmO>=0sRLJ1ip0R z9TEaOtXR}&(A2;G)&vk2irjM1%OEgd{S+=#h)WQ|elTjmXeiNQEr=O4Zsgd}wQl9w)$3QVVa1LmTh{DZv}x6@)%mEz+m9sP&c!j#xoGm=P!Ksa$pj#B$cq910Os=>HEMW*i51VMwL@UbDOAN3AbW%zywe(U<3n_#b)FAT3QP*CuYgAH0ro21Smj|71Qjh(o|2C3@y~q{qh=>z>Ns9^{$0*rS({3lT~)v&zPD7AzX5L zwwEkP+v{2(>1!29hN59eE@nZ?O4Mn8*@e)$r2oy8*k(CuG+cP&m3LlxcRKf8e9xp} z7&wP1*4`E#D(fJE+3hH}**dBtkCTeZs@S(utk=(HAMHxlj=Y?BV~#ua_~Wti6?q6k zGFrt7%gicxShw`T)}t^M7K10jiq%gei9tro*m4ch`DdVm7J6v5L}vMuO+0Z55E)cH zDAbBKlH=u%>JTdi(pa{2(nB4IfC5d(U0G|g%QpLLw9{65ZMNHX`)#=6mV0ix>$dxD zyz|z3Z@&BX`)|Ml7ku!)E26R(6?=;Ftg*+Inrg)|ie~a?L`|+N41H?U;4okKHqXWh z7kzZnOE>*=)Kgb|b=F&V{dL#@-+%#VYya=*>9$mX7Z`Z@dhD~;etYh__r7|DW_L)dPXXTD_ud~BWc~FuntJ$wVUF#{f`(6PJct8XuP=O0%U;_(CgT(bkTxK&ZxDXE-Gm~FTSgKf+ z5iy()lo?x1)-Iv~EhGU^#`@B;G?5{(?Sg3QWM@0w`A&Bc@B=FGh3(R%lSI_6i_trT zCUoJ?bDB|ly3o`i8e-6c))QI;je#9CSxuN}bDK>{&3#70vZ=gAOq0M**c`$>c!pG@ zBPHp)2&j;O=u@Sd+h;!c3IB|j7J{L`m}%{5s#1mObA%9ipM1ht6x0-f3KA2Db*M6? zM=XR4(+E{bo%&R$Mzx&zVu&def(m0?!WdcA$|bmQOpa7gtYcN?Sea?oK}C(HkjrK^ z?Gvn0GGIoTc!E@MawScu!+!*`YhV5PSHPkYUmfWLB7?ESV8G(AiS>#lk0?naB9S4I zT?l2b>Iz20RGk^=DIORypWC67l#4PP*3c8!n-n2>9`&MHe1=-s##Xi=t>d|pBgKrs zLL-uZg%XvR6IVDkxWjeDDWYiHDMoR!3rVgNqxjt7Zt$2c{E3NAigXzXKc!PXKwmj4ASc(Y}1d)@0isv`3zAB%I(2v}kCs=(E}pT9zgrd{b!3$0q=G=GL`GSu;A=(#>4*pTTGNzEeZ0chuheE_ zC`Vb!=d}nIr<)MhFxW@CgW6HgSmPttm{&g`Nvd>`V~UbOLq*^LdAciu8;szE0}zm~ zR+bX2J+;L>>q_~m6=o*m*)BGma-j`6KVWA^B)T(k(8$nrvP z5QQc{LO{ovG#Z2bZg|IA(55Z5CxXzXl$giSVQO}EF*C}V$s`JDSVJ4OK$u%|BNd(K zM5y90znjeE2T4eR8R5B!b)>=`V`0TRLQzi#AfS^L5W*g25QG$%VV)C~cgtPwa!p+z zq1w$@p82hW;$2Gx&&!ZZBw&dO)C>W#IFD5oVhyAp-Cyl_7oJrx(yl30EUAFQt3lF{ zI8Fcq$Nx!z4z~1x1>oR>?0I?F&2DHfQQ>oUo>Umj?P1K|Mig>y#8B&wQmif{8`6-* z+ASOxrpO$gZz&%m!s3fzAYP#Xfc0Qtpo5vk2LkBk14Ein4Hj@EDQD+==i6D-{Oxqp z_OtkIG_5dmCzz)@7gYheOLtt`y}S6y_Cgk+6^$n63qnwk7Tn1`U#tM!ectnFe73|`VpMnj3VHC}m-t*I^e!Xxf3(Lx>t`O+~cnGir>Axo@F`KvREg|>UYXZ)5XaC%} z(eQvJdhlbw9-JBl!%#zi9F6?J%Itb5iABr z*uP>>KZck;g@6aXLpp0nygl2A4KR-FD=Dgw1r5W$0Z@Y(unUc_2pKXr4oHF&NEK;& z3{WYz4BSF4oGOOs0t@&9JYka!2%i#6jt<}r6~u`-Xe;+&J%vEOg;0k?m_tUOL-l*V zzKaW<$b`llJYUF}eh7tO0EJhG7TmLd83=)hNiiCDg6G4Jio2QtxPS!cLQKrW&S4`7 zD88JEM2#VVFaxv@ktl|c0~m}$OIQeB(1jw<1%-e`GP(e6Fa{m0Il%I=niD`RH2;l1 z)I?wmM*gb>7(_Ba6R+#wq!nx!so4Nw5jB7tABKn?I1#*C90yMcKdI71T=Wz{@H3U- zt0yG4R_jG!JV$i=JzV?1d|CyBh&}ums!iL#5oyDNdAf*b1_`J;^rJV`LPVkBsvOj| zzoN8w0!WmK17CQ!EWD>K!?1LWNQqph^y&v$kOehSgp+AN^oXN0UL$E$M#bQO$e$=5Q1dW2x-6sMyMyR82=TP;zlOP zD8C6uTmi}fa+RDsO1i8|OYyR5>=$>;C!d>%c=Rr{Yp@T~42kG~P5P{BN7iyF5+Q1e8>oxitDo^eVvh zLX5&JA&z(h+jKi@qCk((O1skpb`SuM*spr333SOFyl{@s#7m+)5o8>cd_u2B$*G*; z$<(Y)>)gapQmIqoFef`3&M-{)sTv$W%oEbh-3&}NF$5cc14C#Aty~CxIkC_}sYgs9 z=7<790~qDp#ER?(MmPsqpau4k1s%Y$a{Myi(IQ!>2YyO1BESI-SpNbXaJTEMPz%M5 z<9rh|ffJ$15x;y$@BB`j!?}{w2^UO>qtMD~QwUD5fM$?^PHeH^^abK#~ zi=$xKpZ&Zctr-UYu?I}xmQ#=gm-2;D7zV3@&uN67tNI@zV;}Zmfipk>5!e>EG{+0= zQZL0lh*U}y@c{LhHQgYixEiNn5x;(@%7{t{eryDOWPmuO(`wU4`6<5eN~Nt^h$XN! zji|(1xGT_HP7^^!cSwbGDAHc=ga=p$PdJ1+WQbBw(t0?Dg%E~}NChNp2rQ@r4uH$9 z;e#vO35xqtR87^ZxfkvW4`f3RGNpm#`3yUH`>?cu_~F!3v-|6o4}V zq*5xqorlo^-C&_K_=0h?(PvG&jUpSlIvGU}Py^MWRH%nj@Pt!H1f|gkREP(%l!Xuq zP+%y6Dlmfp$j=!vRLmd%N1K4~QHU~_fC*>;i&9m7?N`%8(CHFP7Z4?ZWsLz6ja=;{ zIF-}BPzWh7f-=xYUyU;-{6%4N*e+p!ETAhVDA4d}Ex^OeX(gNT$*E*$h(s8^N$rPn zPzZW(SyUJXa($_a2!bZqfd?~Ii`@wDgG>fkM8>nc%kfvDE!uz6(SQ}G-|0@+Bn^f! zQIV(yNBBa9Xodm6fmxsgJ}?9%r~&|>QyFN6I2c>9E&o<}BuJgm0c(p04p3Y4F;=(* zS$Or?0uyS%^l^gg8JFdNT@^Fje#{ z4*XmV?(JTd(4UP6Iw$!;T>B7+xPqOOCR9`@lY z7y}?4Vj^w|BHjTc4&NTO;UoTGFUSBLDFtJD5KifW5OjbUVHz3vgCJ%agahKDAVD1& zV|=XE{xL%$2(zy4I=*8&&SN~@V?E~MKKA234rD+UWI`U~ zLOx_ePGm$@WJYdeM}A~Tj$}LrnK}LmKOPJohUBxrks`FFwvrh$Ly45^hjwsbh|q*a zD1*MJgDP+WHfRMpZ3cG088)WnGtJ@KP5)vhM&cmmWnU)aG42Q+0p^V8Wn(^OWcCSU zUgkJPV`hG4_TXX{@xT{RfnSz^YX+rT24-&N2l6xC*I|i z#^#m|VsZ}XZw6nqaOr1e;+)W9Z6;`q*k?3+<36V0fj;8hKx+D>8Gv5tqCn@FPU(W? zVKI8@I+kgsZetzxX%|9Ym|o`dZU5)2RvbCj>Kh(vZ#I#%&S{oT>Z#`GvsUXF$q}^n zXS@#Pd)5)Jz6n;L+^Q+hN{|AL#)ph}(MSDg@ zC8le+?(Cnw;WQrWqBiNv=4D^aYc5t0KNS#LL+zk`%C2PsqZW@eK;g=O=K>Mxo7Ry@ z4C%OTXXBt(^Z@6vE^DKv>YCo{(1_>HhU((}ZCy5Jl7?>Q?hNYIWu@M2Hc@jh-#{_YwM>$dK0wpQlOzV4WYYbZu-`KDvA5IOGFi4?faHw6iCfNXq--bR>Z z@^AusWdSFU*k)kijfQNG?*HZTMgeIH=sXVUtp@K3*J?D30(a&Kur_IwkmCY)$^g)C z=$4IYFa*tR=_#B7A5iNasDj(H?c3JuWsZUeSiT8}N)-o5vc8EgH~}g-sw^uBbDZBk`@9tLXI{~ zfgnG0tr(-w7CR9Lb;NjadY@q-cWKc!!zln@kg$NvxkrN^3vLJVQ#^wqH_3KCW<_lF zPH*b*&Iskpc&TP}(x8DFZ~{6b$t5bnFC0WnXNDF|(_ zz;_g0vU(5ezk@65ncXP-TWV1OK&vEqHt;=YU5W+SsRSF$UBT z#B#b{<{EH)Ge|(tAL=Gha%?gKt-Jg-wedFKy;e5(l$!;!cX-BRlO~`uAE<(MR*2k3 zW3$hC2={U#Ksl#4gH+$}esKL+=#bvueFK4dQ@i+x+JadCh$Q_65*%2?$%GUG1r+RI z#z>SXTmQ`97^uU-jt^0YaImnkAjX0sM-Ds#GGl>(C= zEF6enAd8GZWmssVhUJ8fHg{A&xs)f(s8Xj=tywi^#{wUAEU0Mks!FgT7pNRF5W-H7 zAlrz*pkt5NxI3BBC7=Z6oH}7r@Z~F48@pzK8xfXK#)(go_(U!f)%42a3Im*NCEKrx z5R8z8w5ehPXp$NYg?x@#P=`+e280+y5T%Lem>mQ#R7+6Jnb1FnLLRBZhK(K;7S2FS zFt!B|vCA^}FrZ1tDI!99o^rhO*e0{qT6=8^Fez2|{Lt z{Qv%(#S9(NKa%9IWQH^4(KJCpss*qF7&X{%(E>`4Hi39Ocs2una&eH@NEr-d#)cWf zmP8dzq_99_kPT2$5LU^SoIw4NL?DK8!GxA+{p`_Qcp@~>+6pri)SP7p!pMh$14Kcb zabgrmp;)oK#1dT?2r!Eduw9gb4lF=$fKpv;n3M$&2GAJ-Ffu??Z!ode4-GUJU=eI1 zRZ-9c5DFm#gqc(qz;HauNT(18m6g$)V=W1tcX3s)P#Ft2aif}+QMrItHxXoB0P6Xa z&_I0x#i(UeC6pX(PZFeKrUe=)V~IlTl)@HefPuq>sTmhkdl(I{MrTBXx?+@N4gYG^ zpT%Bf=2A4$gaCF8o|@E7g_6{wTuJ=)D^Lr}0znxzC}98%lZm8IKk*q07F|mX0N_k} z`306CGiamDGTIP!ZzGyCgHbaDH8N8pGCXy`7!0hCf(p@XQPXA%nNb4*K2W5_HAnUn z#->NL#$i83A+SZ2W|;I{6lO?^A-VmSdNHM0S-_0RBDHA47F!rska1_Uf$LUs9@m-0 zHLPI}MItrfL>pdxS6hv9eZ?w@2$;bEWK~;zH4Q0v#zIL9`*#KePB;pI00AsoAWTOO z$b!x^+i>EGZTMk9%HY-<-k|7?HjUIh7-gKD`DN{Tm+G;7cebO-z|r6JpIio$-Na;8JBh-4aHWH(X~}p| zs+7y9Rxs^RFfBmQOjEQq6=s~l2B)J5ZY(yE6o^bSav4$a`f-51r2uYG=^X$A^LbzoJn~EIS){T zz>ENFX>t_tAXgxe5N_d*PBWQ7XOu9Dv9Zr0pSl=L_~)t3xsf3I!_IOp^8mIu>ojd} zO%tkc0Gqv$B{m$%WGZCCDy(N@K=@NqZX&`5%*9f}0?$GS7{e*>ae4!=S@#a`NgUay zPz1!{RLCVMvx$pNwfYedesd`c_6;O6Py(@5_{K-hq2gLG24_+ zn30)kvP>>_vPF2NDX>rxvzBZ!SsBQu%=fLq2>oFjJ$FaJ-fN$w=gnfBK5A!z=Z487RK(uNjfXE50!en0Ju$RD` z2$|%FZ&*|l0y4GP7XHyF03E!P7^jp@Gpa13r|M;=rckOfCIxgW8w+M0dY^U7f zr8149EDkJiGIYGm85W?$4jzDtVTs8VWVWW26|A$K{p|bJnMyiERx`SZn6MDHkg-a{ z4;ZWKMg6&ijvOdAyzGY>;HEMN%mQz0qNG^(7b1g5F#n|zah`MdYrWTO9(JVTa_L1x(j`k55b}n=Za`ESVDm7|>=RM0yjE zBNd@DrzPsYESZjhkxIS{ znYFj=3SGBw5V0z70F4$afI$UpJ?&L0hMoEu*&r}Y?zqLeLiXBHZW%*&Jr$U75eGr= zv5YmZc^g1nMnURTkgwXSh+-WB7n8OTDkO|>#sB1@k)JjJH6+tyFp}EI#wE%YO&~WI zj`C$jiZo@xa;&`?*?a~7yo8SAz7VQabbRt+peU;eED!)&Drc%GtPug+8OVY&i#S=Q zxFPSwl4oc+75Xu>w12>Ja4LPZ-PI>@Qc>o4AZA;+9_JxG;g~wXLRjCo9wpP8s6;J9|xa+sJ%N==8^?i6Ir4M{Nq zPver?P~KNKG^_RDz>5O`Ab^wf^qi5N6xL#TI5U*N#GsO@Hxx#;>3T~_!i zJ)k8Kbin1K4um^60D}{(H|1(w(WES!@BaX)ZM2kU5tY|t3kQnk9s<5PMh^{A`J%Ft zN{^(Vwc-}XG}#Xfq$+b!27?`F?5Y~waDrbp)&Qsm<~%k8X-or)4?s+1KdW@=l?npT z(U=7{8Ht;3k&1XKs8j>MXhu+d!`GEa=fMx_+Y!EV`HTXFhrEVYZD<37L8^wyM{X8o zus7v0njq-v@;f#CG5fUjVLxXW#-sruA9W@-Sgy|~7C|ZFrB(Wly>Z$$LV(!8d=hhG z_p`pAp9oUso^b_#qfZy`ZAp((Hd+4hfzsLgND}}o0=a3f?-T^=8s80(C@vP$r*#i2 z$&g}Z3b!;rmDnEL9|5pUP^^Kc=Kt5JKWN7cK!LCd*tfHNdT=9N>)nNOWq47mtF891Jvd0F(84hMRTHc6UjdEE72 z#~}$@@4e2X1Wp7_%Pi>DuF+LNu#c~dn;k7rvG7WJ<<+T_!2#IcW3?3W1jTC6#2VO) z6Npj=5P{T4fwc|H6+lqn6$_Ts$H1HgO7hcCmyUJfR9?m(8dE0(uNc z0T7LqRt;qU9VUzzyor^mP*h!EKTs7(teIn6jb}{8Z1ow|Jco{Gh7$xz*uhEFp^9a| z0jmiB2e3enkxV5XUI0|dl>b?ajrjzLEI=rp#^5+dl?+ZYRUhZT8nsAaOr#11#BRKj{Qqc_uSmgkWFiWl%Y7;0{|r?}&fiVETP5M-Wwjk2qKA)x*=r!9 z^OPM5yawikB}shL+67C7bbyf%jJ14$a9j!oWC9yhBK_Rr*AdPK;9(v@f?w{Tv3!+< zOq{|In-!tt)g-23O49y)2OwbAV`_&_G8az%nyg*sV(Q|r72ZEG9Sb_Z?`7sLrk2y# zV}BXrJ9eQc`d0F>-Did-Y-*q{{Q*2_z`-md%uvlh-;8g$| zW!~mJUgc|UqwZBwiO}XQS`C?=WU)SXmKNsP8V^uC}$3fewt=I)~J25r;Q@jiXJIqz9^IG=xx~$ zQ%GrOzRp%Am3)HdTB_ZZ4(8Iepps(ef$Cb9mT7`!X=56Tf*Po1rWS*~sgT*>y_qRV zc-2TWQH^du6*&=(=4fg5qJgq$l1c@OuIUN}o|87Ha}sKmVir15siH<|d#Y(-0%zXP z>5oe4V*gf!kv?g8E~=OAD5omssG=#mVJf6@Dyj;qscxa8wyKK8Dy+sR!NjRjtttf> zDXvaxlj16?8lsYR3OnY(u+9Nh_)vk+Sg~NJVD>{`bOCM}q6TOxiiWBLUE+e$YJ+NP zZEhuIj%kzf>aUKc-h?Z)Rw|{sCXzPim8MC9>fLDis=O*4tj;TU+AEaKs!Wk4zLw-U zwWcnnD}MIteu^u;>MNU-mJ`eL};xD$`UNk;w;d{teVcO z&;MdY&<3&K66_Hm%f7ZB?i&)mCH9YJ}FxEJ*N&&dNy4qG8rXZPgO( z0kHud)BqkNt6sD%;Kk4Z_<-E9ZB@ieCCI^@tmH~6r4;NfF`S|nTqE4v2Nw`P1n@u> zJV%biBI8cu3KSgVMy}*eF6HuCS!RyKX0GOL?&Vgl=YB5ehOX$2F6iPb=`N(qNUruo z?$z2?>9#KC_CV)O5ADvb?M7u>#4hTZoaeS~Rh(|^2Jh{<6!6}z@d_{U9U5F_Dc@8Kfu{|2xC4=@4qfa4x80w=HnFE9f)FeVl4PJ!&?j+T^nbwAqTP||E>wQFah)L|JINYpUN2DZyiwu68~hfiWRHd z{vCkz1-ys^-Wo(EckvP*0V;n1DQbZjZ{;7qvi~l!EYC76*Rn0&GA`$`E;sEX%j+0} zg%W!)7vrrKCt8n5=n3`E+g1f5eG4&{-?NzVDJK*wD{T>9Gc0E_-eog3ce6KtGdPEH zH*c^R@3J|cOW~%oI&(8Sx3f6A^EdBs8g%eASI|74Gd}0@m4fpjQ!+50vd_rK!X+~( z9}D@~;1%(h_XaLQhk!4yGek$UM5i-CPV^C9G)8B%MsGAnTXaW%G)SwnK94j>mo)#f zfk~&dO0RUkesSJX(83AdC*MI_jIT4Zv|JeR5aX);UZGB7G)@;SO8;N&PhWIUm+4R2 z>qZ~79ar)Zm$XEibQi<)6r-v$-?W+tGX;mVQ+Ksje>GT#wOEfeS(mk0Gj+c@w8~Je zMx%9AEVVqFwOoI-Tfg;Od$mgA?=RPNM-l71+Vt9zazbB`DW9dU>NR5Dbz(2JVmCHp zKel5x_CSzvS|=|4^0g!T{(_F02=RP?l6BQ|Nrk!G886c_DPk1}EV z+$FDdYSXf4-!^XN_G8!fxiqwI>o#x)cW^86Zwt3^A2)IrcXC@YZ#Q>I`?i@5tLDTl zGH){9DReQ@gjV+haIv*=e>ZrCw|I{?d6&0&pEqKow|c9$bN?UqZ?|`7d-i(IH+|Q) zec$(dr!+%1?Pp)%7o_qLoJ%v84uuAjqRA~_cGMY>2Os`7em^*bN4SJfIE7cZg`YQk zXZXB2IEQz*hhI2|m$!zG_-ya6xjAuxSA`$&4GaBc71Ok+G?hBNwiaLMhu=7k1GtXo zIFI+ZkN-H32f2_Bd61L1ksmpo?l_SzIg>Xzhx_b@pL3C4MU*4?CXY)@U&V^M0hjjy zAAETg8w>dYwlN2?lPfuzr@5N1Ih(h+o4@&+qji;AIh_kxm3ugx=eeHGd7ZcPju(rX z_xXz~M;$noOh?5YtoVVycy)sXUq0_NN4li%Ii**+rT^==9ZxzF2s)>aI6&L>r$f1t zo3o~;`9G&}m!kPd=YgRY1dJnkmwP#wzxdqNT1}rg1#LH-mpZRcbEp40u=_@@4?D3( zIxf3(u_wE-FFUh0yR#$vvq!tMhx#n*y1e>zeQ8dkr}(X>Z4F5?w1+#mi#xfOJG6hh zxlen#t2?`I`caEJuDW!RxBIXodAQrty>F$wqiPc;Exl_xpd-6W!TX<-d$m)0zh=3N zB>LXul*6NMjH~TIBb6zavc+HgxM#e^N5#5pyvKJu$WQfP$2Jm7#Y-CtxCgs{_q)oE zFu_AQ%VX-vi@LxM^FJF~Twwgi@BGIP^S)#9xk(>&2I;Z;Nw#yibA7H@(w8 zJ=90N)K5LtSH0D1aC@rIj9ZG1 zRLZpJz?E)RHWcc#s@1CzWn$gB^Ci@;Ut`(~>Jllx>E zm)8ARQ|m;Mc!>@L`?hdjsw2lHm3w%m*N{vFlO;@eujQ(KD2KhwnWNvmV>?s)+%$7# zzJ`H%H40eo*0z6Fi=MspuIRjxZ96?mn>ARCse2|wTvB%F-a``;FWNV!W~@?G+TEP{ zH`3^HbtAtXRkQc+rcavxo{fF9#O~qKTfc}?VOrL&3$iV%*5vm4KHZR~o-%Xti>E<{ zmuI{U_mF?X!Bw9}1^$O$dqH)io_5aJr(AfoeWp`>2d;T77AmYNc9I=lyuq#X_G`sN+^3-o@f`7aax%oiPEVF=7DA2$rPMu zrmCu{5Dj^0nQyxP8R3|#*81vhjN)45e7E*`Yp$^FcPN3Hb_lAkAx;`;k@#WhYM5)5 zgle3%Qd=aMe1?kRuzCV%D3w3{I&GSER{N>1H(^U`dC(pf9J=tvu% zZqhOvFS{z8s}xu*7Mqoiqs}StPxspDX=e34Z0N)$YP+DK6LafmP7QbL@w2UVjN+O0 zmaMNuvW6QkbRUDvsmlk?&+;;B^O_vElp5-8I{IV zLmm|2{ie*3*5}#l_-LqWWVv~wiG6@Tvuj(s&!QLQ!|tWuE-v9an~gckag%p1bTr-6 zR$;;ZJvriU!|i)RVN(=++qB0dJNDm1pV0K(TMxb9R++rIystOjW9Xr;OnS(nvY+mG z1*u*r`Pp|3e&zc=wEO?H>tBALH#z>Lk2V1G-h;-+K*9Y_e{&I=oj6v!-oQpBW99OW45ieUEnq zlo0Lz1USOrrS5?>+>Qeih{W)DDTx(Bk3DIK>~Taflgtt7lj zI6pg%Ns5nTV&m%AJu)iLk3NK(0k1ekNp2;NRNN#YTbMs9hO#4|l%ua0$eBO!DnZ66 z4H27l$|7ofyPJ4zrR`BqJU@>5x$(Duic*;w_Q0$6}6h zkk%WcFMC!=|D|w|X~YUR(I~!gic^=w+)FsoWyy8ME|rvY;v$<_%QY% zEM46;8wycW{uEx(oXrFJ*ORDAAKnBcVDK})Dm7FLv~C+#Xh(R#_1 zzA>dfx~5Mu8dtW4^rOh+X%i_~)SJFlXXTXFF~4fo$&J;iG2JL(dm2=P*3Yr0n=3sB z_0^^#bEkD6D^0z+Ss11>N3DUK645F~j2_mTIxTHWs|118y7slOg}^d9>%4aV;*_zt zye(SQ`q%r->B205{ZQh|&hnF?95l~xnYb?~!3(}j<}xEk%xF$C3DnHyHi!BD&2Wyho8?Sr zF`N0$c#fBw^Q>KtaBxs-4s@XTOz1)zS}B4SbW=dU=teX8(2#bDqbE&i5JdXY5rM*A zaI~^S4;s_G@${NOP3rB48VZfxN~JYj>Q*~s)vk{9tFy$Z8~5ncvNmN``EnBHL91r>|{IpLNV-R;;qPuh44{#y0(+|7XJ+=Pnf>sNd%P~k4)e!{yY7*jd@Hs8uvnQwn{j_{{Nyl? z`M85X0~N^JgFh&Ooo~)_TqUhfE;@lgqVZ;e;JfEYPdY(<5Cnp7LFrJBItIY}?#sE# zV3X-lDSRRHZ*2VDU=O?4$4>ULoBix)PrKUJ&i1fV;nz{`6$2C=_qy|32vhh%j}w;l z9#LZzCkTAl?N0cS>p%qvmvq7DUiil6`RN`^b^MyvLHwj+Agp-C2qM0DSUbK~f)0WK zHZbZ;AN=z^;lkV*&lGYG;q^m6z3g#Jf(rH}E;DAkoT$|#Q@&9FpDR^jj2!>jZf zk-S1aZG5iqU?5_s0SyGAgDHps3mwn`7;Mn==KE;O-oHx!2@;}%(n_3T+`P#(3c`Rm zKqLVVX@TG)9{yWV8~(```SMF%f2?SM`eG0SS?~sFpnFNM0SAx<0x0Al@TZ~XUw zK2ZooFc3TEJPiO;qCz1Y!3=9q4w}#iLl6z`*AVDH4en=w5=bbGh6MT70S)nXD`*uq z_YGN)5JixHKhSLtKs!@6gFr}J7hrUXmvC@b6&bio=K(Mqu?A}p0-|6E43GdRm=N=) z5Y!Na_SbO97k~Jtg*!oTR1gMP-~t381m{)|Se8HF6eb6z!XVvhj^F- zSdoNIL_-hb6Z!Cj!bcG~kPzr#g>Ptnl@(%d&OpfDaVil=MVxHa0i)=6WI`~7JH^Rknp%tUBoB~lvOw=jo|UN@6ADR3?SnGvj(lMhjc-X%h+=u$Qn5mFe1Mj3@C znUpG+kvz#|FtBtC6tM%qX9@Vnk4ZUg8Of4a8D2h# zl~YNTH<^}jNob4|L?;tgpEVIXP?Tp`mJvvYYZ;f|#f4budf`THg?X5OnV5HmKSu;y z8Bqz2fR99Ifz+m$mg!x-mYJH_ZjoTl96f`E|Crn_t#bw{-!vPB^nb0#VQCrY5NcNHp{pa}Y*t|pug`duUDVgn(PmY@l8 zP!ROcqYzLA-D!&GMws6QqpuQ$GdZHf_JAnbq)vL2qHv&4N~A_wYNu$Ul0^_GuyhS^ zoJRKxXqIh6T5eSuVJ1+bPx_>CF{XrBrl7`}N`a-{fC4#Mr9tuYOA$Mifk&Hpz5N|dY^fQqGcus4*3h08l@XCt)dE!w92Npsu3yb zt-9K7kdzUF_@N~lgzl-PQ$ zmTG3GDhLj{3*FkJ0~>#ex^&NqgZzrI-&(Ng%5HYK6UnF$6mYM*@CZUWYq;vErDl{} z&;{a(u7din6-$&(+On1Z+7u%xf&dGmg#dmxV6r|ot{3~Vxyq#$i>@jgg8`ec9s6v$ zwG%3^qXhvE3pfx35Csg0vKbo}qiF%oGqlB^kJjoFDq0dY3#Am1qG#Kz|4IaofS4uhibv<9IEaX`0OTaJ_JA___n#K(SV z+Nn-j5twSUcq@e~APf#r5D3t1{`s#00SK#5pny=gx#nI2BD}>If8aQ|lUNm$>jNAB zvp8#%;UEcQpbo?TFt#$=sT`pP5)f_(E3qkSwB*XRMd1XHsl9}9nAF;8y|9p9s;>{* zy8gz$OA@Xzn7h3z1D`v+8Bx1do4h}uzzm!S3d|7&8UVuJ31rF&e+$6OtCffA6!Q=a z;ef3sk@7%a0%n+U|aGR;uB4N(9EK?ju(7j)nV)afhea1IGk4nBdv0oDl1 z5DBl#5f1B*w9%x1z{3Ke!wK;U=THwZ=))1g3Inmc8xf2JaSp6-4u{ypu8YMJA%ou# z3g0FS7A(0L3~F7qR7?>JgJ_Qw@Qb~wuLk@{La+eGwFG*q6f_`j+nd6iyCjid2bBPs z08kKmpb!`T&B$v>Xa8u(7fLyhXqPtY8F+u)Ap-X*i&Pr7;b| zsR=4jbJLd+=sFGTR}wQI5U7lomAimW@J3=l1b1t_=E#1wAP~gxwh1xA24M@t5DDfi z5H-Awjhx630RVb13&H0IlmGxyPze&y2xZ{SxkwQ0AO&SW5QZQHF07?x5Ct|Yx}6Hc z8&SgvO%U`f&kpSrR{X&b@d~Rz#RMS>7V*mU;L)@z5U+p^SAc^`i>tj737o(QMqCh$ zFw@)rkZBLg6AKq;Cw(10f0EE4~_0%~o3xeN10xpmzrC zx1x~<{`w7#P=ox;$O&N!GC&Eb{K$aa$P8f76k!M5*4MzdtkuvAdLRUqK+sW83CmCc zhEUGr{K1Yu2d&`P4}s1Q5x+)R29@B*azWH9Y=P=K5O6@D$h*lJT@gub5LG>_dwaT) zW)+Q~t&cqr6HO2?Z5hZQ5azH51HlMrOnt22zz8tGQM}4h>=2xs5DSok=itK`EfB2# zzzV{U5Z#T7wYTb(3PMAsx1(L4cd}z2nF43 zATAJ`VAhcU0Gyx)BR;1UkPxlV$e<0$1;7c4OyNXO0pn~Csf~-xAO)>}$^`%bsof0! zeAolg;txRw4j~2XklNvPpg;`~+f4-MV8JC}%jkdr@$J;<{SCEil(L}2HptOiYZ<^j z5H5#HZ`%S&v_!cg-$3<%M?-QK+lP2J#NKD4BcbhMztL>Zgk z8U)jT3~jB|5RnPcjsa1Sh6#}b3s3;FjNJo306jqVNx<6&D7cQgwkmr8Wv~QB@U|83 zu14SxL|_YP|Id!_?qn*ef`4vKU;$kn>Q1NI-{1t@_O600^G&MbZ_CgOumdbm08~%_ zPO$fVPY1*h`q?W3mH*IrZ|$eN+i6&sjvug`AO(?-yaj%@L;cTS{|%|15EkI6R$K;y z{^C!c-pNY@3(&xq?*PNx+*^?dg3t&Y-n#p%y5A57AaCLZQQUF=P~G3~3~+AJt&9B+ zOQKTRsh)5OT^^rM&kBNn+pYi6$-nusfB6bHC(u`OhX40qg-)dfz^VJR7A-fLK5Y~nK?z- zO7p2^ZhSf68*+_=m zW@_UChI^JEMY%EvGq@}lvV@z3O@A|+cy3*>sK3dGlagrv+meF;{q&%FW9X!B zn{^S`K^qC`DmKn@=+U7IIuX6P^*AJ#W0&5Ydap?)m?yW3Gp8q?b62S~zkalC_opAT zUa!z#J^KY8ehVcW_JpH+4AXOfU=%sG|si$7$jl< z7HZsVrT{I`kw^*;Oc1Cdazqg_7KJl!%O)K}@In~A>&3ni#oPs#@TLP#%reU~bImv! z;RL(!8hW#r6Y_k-&M_ryO}^azERH>$2Cec?&6=G5YXQ+9@{-FZ5ycS$RuGVANg-Qw z4bl`l_4HFvLlt#YlHP!-1y)#zgq8G02#|(T1tk^0;d-?2(6Tf|kgUEK9E-4^e&CeX zCxfiD$VU++RL1gnMD|!PcLnP~9JREvxLNHpv!^rD{7zf3#H8_?>$V+CAvo8xb3$2} z^|jDIcf|1rLwVJe*m`OS7m00*ZtZ@0V;_$IUqGP0COol!nKpXyanp8O zaL6NEIFo-rZ^lt70(D^XN-m^V-Lt#3@Jg%DYXKO?rVh(-jW3!S(;9`f*sQ=}aE ztmr=qVzGi+BgHek_(dGeVJ#I;3J9?RZB#Mnw!) z!~ujn#G3O}ZFx&vO3s3O+@vNgm=tcY&FtS8C!jYS~BxgCzdCpMrF+(|+ zV>nf*f+_4ERLum-3Nmm)Db~dT(v(UjP6#S*r4gM2C1^nnIyGMQat;e^iZ{kVloxy@ zDnMX?5<2h;RPxLqr1^qBmy(qsz#s!7^(NeC>6Cr`-~ye>Kn;Fi&68Hmng&yg3$S!h zoaR)gQQM^^Ir)@vc!MO1=mstB(iMs7v!p@f84arNRHt0PqCl8JRgoZy50p)B(}c*d%2iKg;sZ?nh8(h>VlaofwJg3G zdEhaQGs6QBnDE6gsyQ$nU@NU6Xu=nO5`?h~Km|GOW(+Ezh3wjd1s9OyX5BTlFBG>2 z;8buFuFTpBEkP}rV1jX@DP~M(+Ms0q#%y6T4m5+>9H|%v8Q&$l{P9To zVih7Exlw&xFm4l(;Sh%z#Z^u2pSXOTK!mg^SBbaDwUg%H7WmCJ{&S#vPuD-`I39jt zxmiA%Bz@Z5wQCF>pF8|!DW5sOgMM|aXMK2Wd~3%ugo=i&Ko$;&gPWTN)29#E+wGL8 z*4_SgxbGDxUeC}X)UXA-vqDSA+`1~zUSrUvz0ivseB2Fxc*LW;@HU}4Phd!)S+JrP z1)+}c&;$%$V7}mhzb?!nDY%*^Ui70!F#{IxgdQa6Bf?`Sg+<=ht>{hxW4Q}e7|nSj zGachL!9D4H|Nnd7v&FDcz(5DcRyPCSp}97BJcUL?1Qe(s2+(v9g&Ro$cOdolpFi&= zrVfnYhhO~TN67|ypk?B_dU8)y{`e}SL3D)TM8va4xO&}%M>9G%y6?PML0yEt8PyyokPK#Dd%2XuG_#2^8bfF?iDfe*`&Ab6Z_$c1wVidUeA zS;45Kn}h;fK^8nGMfd|4+yTHckcf~$tIHPl^Em!d7@|wQqJyfBiZ&hkfhe%9-vX^T zOOY<%2u7%i?E40HfQ4Zw1yHC$puhxkP=q$~2~h9}Uyw6}u!mvjLZaXR6jZntOhYx? zDHbrS|5Y=X_CpHg`#~Ti3IXVfz}Tiz5+|PFKm>EWw6lp(un7}v2vooX{Mfyu;6K(_ z2T&M>Q&0#@um@i#g*CiHOiZr;I6VYlfdzP*7vhNsEDA~>iBRY^`r^Js(jh;*LGnN& z+!zLTc*KUl1OX%ou=|Ejh{B(!hfiRqUKj>e;fYB6hIEiZg~$b5K#E#WhiOoUVjz(- z%tUIe#wn5~lyJpa$w8$sI>#!C8qk4AsDwzc1%()f;`pvt{3_$3wKMs=ddP)gs0UOC z1$wBrLJUJGM8~DeMUt?GdW#1{D2Pc!1!XLSRCq#NvP!oOj}!B7V>NWqSLN~qi)Cv&nT5CJF11l5B>rZCA- zOt6Aj4zIwW2Q#?oix7TKGqFNd%SryR`(ZHnTlEam)X^ zy=Ck_fNfXl#JI_1*7s@S}w#7lt7NSQlK*__Sg!40a>!EQW?N{|A_k^&6KMp5%bz=l~MEe4^02%v%3 z<2i(pMytC#RnrBDRK?8;!~_dW?5t1wEWok&fa&`{MU*41m`@CQONoO{nhA=Cx=#d6 z(8JRQeIN%1l?R28g2=EqaLS*|R5eY&Jee^#1vpRz{ZJ4ky>JMdNXR`7-NWzEybNti zh~yR)J<)FqQ5l_4tkVavS%yf61bLtYWmt|PKqj^`9*Oe40@X}rQH7=Bg>py)SJ;H( zj87VkQYplOI@#dn1^tHhj&l|5TqWOOwO5SXKjd71JZ^&yJ3LIT0}^C$OSRoR#qj}|II*?d(BvlRf>%u zi68*U&x#-in1cohbFfCYE3hd)|}bl?ek6xEHbS(_CK4pYqZgFX!Cfez3L zThku~ps`dE(zIKJDkRc|kcDA@)Sf_vG`(4=omxSgN&;{)|3W<>6Eyfy24!dnu^Agu z(nGF0J2RP8K!VGOAXinSTDQH~1t`M(9O11>s->kRUAvV z{6U8`Xb5zm1OXC`1}I(Gon7i_pahB@bf}#Zpk3bWUE^Va{{cWh#Fd|CPzY+^N#9Lg z<;@)oz&}OU&wDa3H(1fl%NCj#v*Zq1Bv%xb_X;jhohw1FNm{$k(lnp9B_58d=za`rr_L;S}@4 zI~xkLls&0?;KhSs9o9Jg!=6gOw4U2xAs)67UJ2+D%-ZY;eQ1cV0ZtVC--H`tDb_Tt zHNqS|o&}@f4sPKno?x2g z6rnu0hBoj6(A|P>^duNf(KjC5S(@WIKIA*PxhHalYtZAXfd=v2&=Z9plohAW%u7Vh zWJ|THwKC&tSc3;Bfl415krISPC|7W9PX% z3P=S@WVi`oPF5afOL8Sf0?gonWm%32FrWZ~Eg=A%WH)Yza{z^RNCkXKjzgi%uX(S4riGFUSI%PBf1eoSz*oRC8W9EVM6afINZUq1cifkYW_gv@*3WcaGkE;BN@xdMe#Zxbg`Qk#TST}TK5N1DoV2b?2%Ltto(8H0 zX}aD@_6rK@iiCD3QKGO0!i*pUWLoKkqm{am!TxOGDQu1ofpSRf(r#W(CsL;BZsW&g}>iZMNQ4|Hne?$3kqkmKq%E0t!F^*m!NEnCy0tg3k5{ zYmf%VeW2CEZQZ_ZjCQV!779DF8$lQbUC0IT9+kV^hDz9mqxuF@{k{yQ*}lbY_%@)X ze(Dh>i7&J1yHSW>aEEs|2jzZ>9~_Ep=n3>L3Sd-9N&xdwmn?9phOh=9@7>6<2l zxz2D5-*Fu$DNlKaMKH-w*#feLo(F$$YNcQ)w+RBy4IaPp9`}?N zgFxIg3L&2?J&=MBCx!v%31d*`|0YlKHI#7zTg(HbS0xD#P=;Ig4zc#@y_t2;{$W;q0}n{m)}ZU+^Z=ew<%B!8oMqJKE*(l(a!9D$#e zCFK*{!Xr#Bda0i$>KgUnIkQLa`A<=73A3+6X5pz1dobav=uLXh8HYu9hixBt47rB# zurFPPiUf#;xwn&OP-)zu`)o;ohPZo$<9nj;dvc-9rvUuVqkF`!djn7WxmWz9V|>RS zd~|7i!ygLDhkVpTipnPm!M|a#uhf)7gH@mR3}J@VZ7aKsd1-66-8Blm?|X2Nkk0>! z+5ZV}xcz8|{i6_k|8RKy3Az2=*L{)@e$EH}+V}j=ht>xucwoPf)K+*emHlWqrV4oO zN)m(}cTnoZ7RpW)jO~f zxZv*J444K8Q3+}VQSt4df`bYdGF&+6poR+ygEaj1q9Vi|3Lj-)2!#Qej^C)zaEP(Q z4vZ>SvTW({CCr#IXVR=`^Cr%mI(PEy>GLPhphAZdEvi${FN{j$7;RXrm?ngYigck; zs6>gT2Lp5{@gvEC9vhx8c%=2L#SvItpj~NVEeRMKYfZ$XaIBmxLt?N&IEls=s(5~w z*ywWz!YWFh|E$>h;DW)0B@d2Z7-R~HM}%oG{Z>V#2)~wxT$Wj5vcd?4As$rxl5kuq zNLJJ;a)iLd4F;l!YSXI~BxQqk`sUVdw(7 z^P@%)r`0Ui_uGZLUHniu!3ImhKb9z=!r?$!7GXXZeIG#MH$b4bokLAjB*8%lppY0$ z2rfj$X>1)N#(OgPpb#G?Ei?s2KU7c=4i<<$D4z=pej^59PSn%_ zm@F)m|H*kmnirZy3c+{R8PW+ML~9S+_*xBQzJ;SrnzdxsH%{z@6%{KjAQ_)S8hR+A zi7L7%qm2UP4Lt62rbKI6ks}W|6l8q*NKZqQ?yG%<;T z5j-%IiD*K$G~xn8iUfyY2Qg&mxK~{c4LB8$|W!-D$ zI@AIJ90uspwtjUWLZAmOFe4002%v0-6MvS`LKY;^UWW!O@!g#Y0jZJ;Nqn5`S(dzn z|3m=>Tj|+d2l@!Gz&Y!@GtWKyoSZqWZA^1(4w{bwe*v-$0XjU}D<> z%2%Isb<$~itx_3-&SkZpIbp4@ci6gQUcpJSoOaW3%RM*Ub-Psr1s>>~#8xU};5VXd z$T2vj!%@NvB??81bhvg8*{{@7&&2i8H%TZSqa{1OIp>{w{yEhQbm3PKAX{|gp~(_9F@)d|q9YmtfY$EbP58agO z3^Buu4pfXj*9pX*i2F|12JF3CzmtDH`su5`oRYFwQIG^(Br(7e82sG>4FvFj{{fY6 zvmdp|2G2AB0IXM7CQm)jyJ!3k2Zf)>0W1~aI^4RWx99{eB(Lny)# zlCXp(JRu5GsKOPpkcAuAz$++_n<%^xOI(9q)P}Hu)v2cjLovWXm~o&k93v2`ao__@ zmBb}7v58K6B9S1Xh~|lId81MripbL$dI^OJA*cxAtPsELc?610*@YR?sKzz2v5lyz z+!f7(#@p#oVJ)i&9nP?V>P)9*;&Nm7OppppxPlQ<10*67smMig4vR$eMGkU63*?Cp ziT85b^Mqr^@lXc?TcIH!ynr5(D9A`WfunC8IEh*e;}pg)WF{FY%URO0|CWk!+bR;V zih~@F0WVyMgW{+vrEw1_6`8{H#^W0tQAL+<3Fad#Ni`)gZG8{9mo2lY&24hCfs~_# zC-f!@UQ}fwV){lDI%c|5ZVf5!d?!5P3D08gh#{Li6hg3peIg_*98jR?TqsOqD$|)BEON9cf+r{tN-8R^r#$`8!tNNy6h&+Y|9RR1(W12n8Y35yq$yOR zDpgwcPH{m13j$PD2Fv`XA^}h;Jy()Uw7}zlpoEPvhqF`$wv>|B|C}mZ<0@AsR+X1g zz-kg~aZV#l20-YPj9>fYsj#YKtY<0fH{vlJiN2F}>08!9oSM?PQns>|wH+>OS_@p* z=L0YFtO_jPNq(Y}7r(^FX@T;B%xadXIXW0}RvJ9q4Pq3gfaPU#tJ~eqEwcx+&-?av zRm;?;@k%h}M)%rQ9O(%Edi{*IptKa<^$`zY91%Ouo-~gXu6V7q#WRH2AAzUY^ z2c_>MBX`lp@wdVjzOZvn!IDu3CmA08u!o)RxXMw z24RXpyaXAjK!zlcVGN^eSs|tv(21(C6$TKDQ|{!Zl;3*gIn%k$G|7cR@Z69uAH>VX z5HpxD;b&y@Scr2HnQoQ zyS!PUZ)7-#47ZZwhCE>+xcw4>DR~IDuIN;kTxdeR|DlenTqW7&KKF}VLFkqs!xXMC z#=9laiB8}|%X(fEuNjOUnNC9;-d!!a11|9WN&*&=U`Q+qu8?&zBp5kKbfUG)5Lbk_ z+y5p{aK2_7fp!km_8mCLLta@f=TkaIrFLfn8-~3H#?8AZG@nuxirb8&!y`TO(*o?NB=t5 z6G~C=;I8auud1%&ywQvv5o()FdqIhU2N~7GKva(4h^AB8WyzjnI`uATu(wrahsmDyP-)m$|FilnTRZ#skpacGlDJ0rUTtagcpXA%5XXI<3-8NMoO(xBME{8ki#+*(?u>NQ<9=9D1^Gr zpqH&1EVx5Ms9-R_LRNaDR%+!U1dU4s!=GJ(6JA0IdRbJyAfTxmSvns~=wwsy13v(R z_8^4~5z}3)p4_aHIyR+W{^d$=**DxtQ;D!M5{5zL8u%XaDi_?pK&G^xqYYj#piLN2tT|84M>D)d4&qx0;bVT zFT{Zql;L&`C~R&UdqPqogwrR{;R<+I5F`V$abKg=gfF<1H4a00xdkL0f{HAsclac} z6v2HeP0)25{1GUMuA@ZCPD9wC917M!B*P{MShK|hBM@Rm+^8VpXfEI=iw2dU)a9?q zN{SY#k){z0CW9VA|D}@FAu==}ltw8Mg4rlMrbjZwnNS2<$M6`LFi$G3~^rm*q z*Egcrk*28-UZEBi;Wrdyy=eth=mO-ONE`^~?64MT;O8QN4{WI^pbDXTY8z*5j{@Ld zcdku@A&(^eANE~Q)+`|FA)nB_sr~|FeYHffTpN2%Gc`C2=s+pSI*bE4{<%x3XPHQs6IOIdT-~{`% zUn-s_8>j;^_@n|*1#8@$uV$;Z){S<(-7U1!X+xSA}Px* z2hJyP?n%&j|0|N@C#S9;(GVZ3-b5~pTgNy8ZXlAuxGTIKZ2d`@v3}Yls+N##rYj%; zG8vX|bOXTVhKNRiavFxPVE ztlLEf8(jh=HDvEKE!a|@Z&BEZE(hHiM>lAKCWwSZ7*!DHWfHj*m_&ddKxf$AZOGY= zPHjLbs6aX8)1hn;rLHV3bb#Jc#7NYY6Jdhl+*7dOE#wMZ7vznqvD^xP3gzxeiVW^> zL>g}<{}89H5is1WYGh~Ro^G=J%~kD9z>3Xvl?dk&N5A|D(Itv@g~#$izys``s-mv% zBAX5wuHMQH5Qx?e6u|kgtlEZ~>7v&z0MO~E9ZXC@k(~uFD2}QAuJ$Gy3ux6jQO)Nh z!lh;om=poS^4|8QuP$~k;7m?>*$o+yZ(7*^D?SNKWWWZful`mdXnhvqz8>eailIC% zOl-n%d1(;bRgGF0-0rUf(+Fcc+XETUkT}>(=oMr9jfs$f2RyI`gPkv6s0fEJ36HP| zmoN&8@Iuh3i-5r_+)jU1!~t9naZSXDSi#2970G@u4|k4-`DlP711}_l`99HFHAJ*2 z|Af6L((QfEvkq_%r|A&;CQlT@hgtCtU$GWvF&7K*hcN_%67lsqk@>L1rKnF1w@o$0 z;u@E&{Y7z8R%`r1&oE>mF#K5Nc#}9rN$ttRR&f=zrORh##=fxa%SNsHW{Ka9tXU;W zSwx!45^w$zNsu%IAHnfbUPUobfhJhvX7wM3nxS_<=QSCb`LU|ezUr>136ESF?_8QF z3~Y~N0N*f#6bKR6SU}TU&L_9+BkwG=h{P--;3OZ)UH}0D5Ho7p-b(ZjCSRm&KE-X0 zt*~0K8kbL^8l-?4-yAdrE{}vTg-5PvPZsO|HoPA~7{X30aH$kBe|ku+^%F3M|4tt0If_F6Hm^lAqFUX8eE<^>#K1GNBf0g@#Sx{j9%>r%tOgl{E4D=um#A~Z@)rm} zIx$2X04+x70VlW*>+Xy`{}!8-^n^)mKikYL4D{Qv2v89zO7k;Vq1G`Mv_VT*5tkOo z1Xi?#=14WLp->1I?%jd$%XfH(I~wXXmyGd zbGVv~6+Prh+4L?VPa;_HCj@~$U5V@vM!F8+ z2M0Ey^a$;Oj4(rn%la)M4-p?lvP#Ue#hu4X&ueso?-{`WWRtZTnsqU}|7d`Og&A6N zsnkIolxC6TbkY#D&`x6IfCDzj1_j@QaRD}9BNw(w@7J6MB4_iaw_GV{<`{)$I&Mdlw0co4IcLAB0#;{UNl=vJIlEKb3fI+u32FJV#JLmN@;bOkb z5pZIw4Pke~qO{_c$Z*GWKsB-MAh#t-4H50_X}RnmUu&amqf+n$Hyn^mGc(>*0bf&F zZw5AP1NQ1NID`v|1RE;=R=6$R;vrG?@X$ANmCIJGZe4XmTofGd_ZL##4S zq(dQ<@493`1VdZOHMneZa3DeLZpRZt_j3O+FNg=Z@F-}X1XjDC|2T*Ub!p~O1F(pP zzlsQ80jaIPafx??+k|=QL`ZX0aGBGC&vut9IGBI=Y=07jqlS>Dxk&f;Zo3Oyva(N% z1131#nO-=H%qVJ^Q-hCpU-NlQ2-oLIFpmGVUwf5TojHSxd7-O0qxVcsV|WrFf;5=y zq4-S)*KmP7L8jL>mQQ$2$O54wI;T6Epldn@Puq)Tx>jWQP#Afmzxqt%ENhuw63MwQ z#Lq2|sokc?cn^B0U-_RufuH;FL4f)<7%=`Idf#lis!Q9cpSn&CyOnT+rtiv73|3ZOL8xtD)u>;tD)jK_` z!#bR&6{wnh+C&xT4|umataUrWzi!;XwM-P>+!&E$aQV8^_Kk=6PJn`@S46)ngfNUr zjh(|LoCCjOh*jE3%LT2JkX*3L1O(v07Z?Q(JV6LpUBcIVP5ptrn+=Psa$L7WzurVW zr$_=Ei>Naju>VzZoC6jpJ%H6iJh%fr&;x))eLbv$z9yDE!~!PRgF?hZ*S`bT2g^CA zoM*oTGz@&I8J`c#KnlD8MxY5sw}t=&&=lYRw}?Oun86p$j}7brOr*iUA3;djd_g0L z1~7#1{)fl>`1^|MhTIbYVxYsz#5_8{dn3yK+VCg&|Ab)g1eO0+!Jk)5)B`540z;Vo zH-G{w_?NW({rtEA#ll1wD8T?s!7ONjSAj|`e?tlgfQ;k47#zSEgg_Eh!4{wiZxX)p zYtA1$?cGfp^gHzB4|NWGz?<;I+0w)tX2~);%D)3v4Liq-f;5%)S;v11L!?7I#Dddf zg1!m^J!pMB)PwuzITqL_8Ds%8jES=X#5aKh2@-^WgoTbRA_@vjGN9oZ5lNB=I3R|g z!X-}zhG_V4;1iJ}MRH-Yq9GZOD_OR5`4VPKnKNnDw0RR}PMte>_VoD^Xi%X;i54{q z)I`!-w7P7HumVt^4Jd|KlJMil%d3J)9A(+7{~(5+c&b#{38WSbuWKEWA!&u}&9|G} z)}wcdppv_%A_%PKir~6|vCh$pbh6*S^|*(HG5Ok zklH~^=?OeM@Rd`7m`>FrC`|D6xiuVGALyeXv@H!&2*jB8j1MpbmuQhV zx37@iqJe=&ZaWac1QlG6!3G_C5W)y0oRGo_ExZuJ3^m-4!wx~d} z6$Iiy1tL%=pnwHl;;IE0Y;+Gc32@wr|D%+wQ|TMJK(Ysvf)o>I9ZWDuY@H-A5$2tE z(s8FPkv;-4E+=YYp(7nK5oiD;9te)Pfe2uZqKwiYX@%`T5~;uw<(!kwI_V zefFzKq!mTbZwLsEg@+hh3Ah5bVr`O!A`x>nMn7VJiV6xc_gPMT_0&zCvh$$LSej&I zR>evS=@fk(>USDfZ57qoVTTje|6OZ)Sa{(o6NVPzh$Wtw;)*SHwglX8yC4HcqQC%T z7%d>~0}EI@`J)iQ-g#yHQ7pm9#9Hqwu1EovldZbWsGq zQYfKsa@_H^7S9z+W3^jt|L`Cu#~jmeN#CCP?!EsW{G3ehVgm|3W;=?7M_zvclG|sy z0^H^PC6R_^w$G>pE@+5^OGU}}V%1Ys&~CLU=5?wiiW890R3pHiq=g{b3*Q7OSV0S3 zkYeKlnfcJ?n~@FVd2~oCfBsI*+fAYl;RYrSVb$M#&lp>!2nhVyC!JiAzuQM zvhGI~1JnSGc{mCMPNB1D9WNyXl$RW95;JoDOpKNUJ{cLOpZXH_OV8;D1FIl&fU(KMz16w8VRtGj%bK9 z>MW5a<(Nl3=+ZA(+%ZVx`G{fwLy&UtXOS7P4}2)2lOuq!X|#I+8^kn#8rnu$lFZ~Z zsaZ{HlFn?CKpO`g!J;Uv2$Uv60kX<6DKn-~ja~uAKvFcZPztC$MS>)X|vK&scL2GeX$F`J6RBgxRH}srYs#QN8rDTJ&}{uS|d&(a4I&uY9OwVg7h z>sn#63%3dcT^Xy?%II2G94RLTUC0Y5X(mHbScPV(@goPlLILFsCuxZrNMZy63ZWLn z9^83SAglB$HVlU+GJDTg*>Hx=j1f(P$`xBlTUyhemMCt0=~CqS3)iYPVq#Uz3?+G$ zqjXfB@Z1($e$|s;!lZfof*j#60gHGD!yWY~F2As|i7&iFxG*^YbNY}5|ERDd3mwy^ zAW_{W_Uf#t74LY-Ti$Q%LYkLqEo_%nh`q{&YhmN96A#-!@B;Ka^@s;yVgZVIQ0W`- zIK@1Y|KvzFefD`XnQnYm!Uz5^L3RL|!$8ejVGCavt#MPuTsaJ}4xrX~(9@M~=lQ1k zdS{{bsE05%Q4Tn~;~XqL$2pKzz2=4(e=k{ZOYra%u5#D2ZTc<&<}*MH9~sF>rsR#j zp$PIRVhAZJnTs6pEOODNgftw9VVhf<;0h!$OG-=xMiGlsx#|>Wj+}_Gqt9Fg_ryxQ z)-uyjXCZGf1Zfy(Nwm;I>5YU9ZP0ZN8ZGZXxfG(Xs(i8xt| zU<3_sYZw>D2-M19y@~Fw63b>Dk(yIhMYSUdP=`am8rHG)T-+2*5h!oqAt_D5y0vqte z2OQ9aa&Pc_Aj>JarY)P(vlW<%V6lZZaES@Lj}C-$(%6iFBAi@?DOdT*S>AG$ zGaTkImpP@1ur8~_Ad_3fGZUU5osCm0-yY}m^lH3meiIZ`AO}*9%3urLrmUnm~EDGg{_Z}_fkOU~B!j>;ia#XMf3FnRiL2{MYS!IBQkh`izLoy~0e z9rU3WJ?Alru>1XdHm%(f;e_5AD4j!rwIVa85(jt4Pu22@`LA~bHj?IjWErwZ*-%VZ z{1=QK`N>!QC6n-QkJ|etOx7e;_U`u9yXG%N90++vK@(*B@@U_9A_sm!8_uC+N=Nx9IVFFLk%a961%Mz#j4u^8F%FA~4nblL>`)BY<0p#2(nx^p{{l;V3enhJFkZH$ z9HyZRcPa4%Nb`o#9MAE>KEUP_Ksi)T8Q-WAi!d6U@r>~B0&XCHwh>p@#4tc199Liz z&cOiD0TU$3sAgqL)=brcuiDVjAs>>oP!4C1F&U4A6Ypt->|?^{qX>IK7u3Pr@=@`Q zr8m~W@`z^hX65Zh(t57r%i01MAyOu1Qlx0X7idB3vZo#45FV$%emrp_3nHC_LJpUL zZTJ=#RH&ThoggeI%fDygX$%10?Vi3~nqB6rdvZS#n1*&BT;WAB&D~G(}Nl=qmftFJmJa|KJK;eD1tliznkx2xO*r z7c~Y6d`qGdeOx>r@SK0~0;La@gq> zcydRtj2Vr>(lh}iiRZ71;KRP=>5@&bv@L7`7f)DaTOS1qEP9spi zAp}AZn7|4own_{RK#?dzqe9{i)KbC5uny{Dp@`)q(7+8Mg`(_KSJO~qykIvd;1k-Z z$p}$Lo6J1V(<_9m47#!lWJm)*hA>kD1HS0_|6+n=bjs*h18NF|Q3t2(tmRAR@Sv8! zCBR??aG~qQoFw ztDpv$Nn<5P5c9wd%ypEI!fE$5=IDja|3Io9(9`||A^}3MuhU zdFop1Y^rW*=e_`Q`Brl$5jj8Nq~3(w`m}=TVL!eh%KisjIP5lL!fQA5D3(bsddoj~ z>XU$uO=@?LaCUQdH|s3mYu6^OC@2^@p&aso4g}LuD5b7e_hDVhdD)^g{7mjvG*zJT zl^*Hiz6)oCt3P?yduNVv5RQK;2m(@pKa`MWt}!}U_jx5zHKbSZ=Ia;Dih#6NclYte zrZ<0k^LzVu+Yk>5o5fXuf)NN|p?VHc6-^yet3lRxMpiVpfJ=xTRWn^z@@}j$sdFW# zm!tgGgPT?wjUpFZpV97j}Mh+Hn~9J0+ClIzT{YpnMTLv zA(Mo_6VnuvSDBSTLS%r|Z+@T)Xts2g7HHuGbg9FA`|WW@Z9j7kOv-AMTbY>sGLU&J zFUpc7)P+y|s(+5s1qaBI|IaR(&5)56iGRI^REwFL&8r7^fLFREgoE-U(33foSqLwK z#HMCYxD0~}$CurLO^11Be|hklahkhXpQ#Alh@*SV`KqeO3aVK@jiMy7d7l%Sn-RH# z)`xTedNJEAU=dnd722X#d05zadmtK}3&Q8#=X)G?DDIe%#%q6>`Jz+WiqZ$Ca>@nv zFl;z_I4&SV<*R@uT91`459(8;d-{^#XLDSrwme6sTcU*2S5be9gOi7(WlhL@8mgzr z5!8o$I0~t~rl`MS2{z!R#O7genxgr0S8k|L$7b>@HmcKFbYQyhT6TrG$BfG9fr<4s zy_$xpqp3ILXRkM`|7o#0cT3vTTCm5aHDCIQTY{FyWJ7P4K0opXKY$BGr12Ql62NwTs(p+{ zHdvT6-~>ki)tvF*%ClU{R~o#Il$!WJ3CiIUebdbM++ut#l&6C^5e#q45*o2I&U@mE zzG#7;kZ%7hvOjyVw`ZFLM6dYV(v`&>cjP=v=?D*9D2RYuO}CS?mpYlRz3rMKXZO-q z9j!PWjWiMmg5nK;={?^$!79ks<*R~Oo!8S!3F?tHgF+$(;;Aw?*Il^cz{f3w1%zt4 z*Pp$T|H`S9y42Hy#vuwBTFwtY3$fiOsC-mJY@uD;qffD=ecFLC){}<{m|>Lu9AoxO zj;v;Ji9%=Pf}TgJWPy;p_nqJS-QWKm-~(RZ!y8=`;djLupbwYb3D4b03f>`*XDgbQ z8>oA7W85#k^Vq525T$Dvn=Q;>*1@*n9bTG`+@0fPGu zE0fU30IEP=dwjDOmd%zO!M}WlMOvyF$Rl1J>8okIit`nI_~fjqR^P`sCdSL3&6kJV zp67_^^ih13>J7;Gb$evGlb-CC%(XFKVR#LszSFHGrs}QUO&tBv&klZ}yX@~?;h0Pn z{~Q7ZVV;ne0);W$-xxKXLJYlKbQ|lqC9r_;J=vh}9`dQ^+cs=ro6p1(o+kKG)Bz{k zN7Q_b<>Vu|8HLBF9RI6sJb-c1n? zLc_pYucn=LE!>H*9T(q-JT8r%&#PO%jy=2f%~PuTc89rtNe&{eq3K-5vV~sZ6I8}c9efP~|to0~fYUdT$ z)`0MRGfxdC_NWj6TvTR27z2b*0}cj!#Dt1d%z8PVyFd13JpkkB`bZ+lWF5 zgkGjAg115*kR&wC8}(rU!C;4;ifXE=QfQ{4lkljiPmm6{+JC7*YN=wjazr3x%q8>& zgA+axK}t_BV8W`(F3W7QWf7s>rVCkG7aov=fCWNtgpg3S5*=Y@{}p09vz=t5P>VX8t~AmnX~YB*;yG7P5>oO?cskFDr=C_6Vu!UY=ULS-BUHKwnHlHGIMbxEyVe_eem*#{q7I|KNwe4twli3UZJH*GW6I zYSbphIprOtMiJ}e5qX;Kb5#ob@E$(II^(iG4}J6$(*BL@);auU;~z;KneOzWCOPuE zf4{u+=AVzgqP71}M0L1l52r{}!=~x1P4!xT{`%uzKTrGfZ$HL7qzf^CTKW!%zyw|f z2J53mA_CBmb2!2@?*ozcP7^8Obwn%)DZ&sq_!0-wA_gA-Z9tO0^k4}+Xps||u!JOB zUqw_n!W9-Uh9#893}@KD8!B*zJnZ3JV8DSER*x2|u)tb4P`gA>;RG)*VD}2t82AY+ zcy2OF@Qh?Z1vGJsg+K}y7xl$3rpY0L8;cmv2*xym@gaq1WB(T;@~Sw>F^oQ}qa6?B z3RC29Hw+vi`$o7vDs(Ur9B|!9cm$LAVX-;AqTn{gb`nL#1P6eBPMT&%Uni9juc6ew~mK_DCAES z#4M&U-zb|dOl~2!Sb!)rBRUH*ESCT22mmD6gCO7{Cr;F*H@^walmG)54cMFpNhHha zA%vUk+~yn?6_t{SWC$7nT{0+e&)Sqvl2|m*t{S#FZE`W31TCmRH3FD~P=EprQ9&v> zP{<9O(v-*0Km|T{7cu0aB&Wb<05`MGX~oZ<=e*)USpQK54^;6R>^!JTUkX!=OlJYp zY*a8QK){6HWT%4YsZW0j)S&j1B!k)LNbF@IN!)`WBZvV?5a|?2P3n;u)D%F!u?<@U zAbaqPsaL-W)6_vym?-;$LMUlQp{jMQ>m*}BEmBmG<-w>J(SV9X_9WTZ>O29pDpfxu zRbH(?9+5~XSH}p}#41*?ad78f+PTiPN_MhrBqm1U`Ve`Fb6G`7O2Q4 zZ)L4>p9?)MQsDxgiS0XuDis&p_7_lrnM0IF-T#|>wlClVtRf@15?Q45tYw6*d*8b> zFp5GHvh9r;5&Ja!>SYKd;O<_^tGp=Qj|J-0X?x*|-~=b_zU|~@Rcwpfsk}x7wG%I8 z0L;$|%4HKOO@exlr{EBa7-{t_aeW`G->L*bnQ5gIXoXix4R3fLBd)QHm6fLHnpll~ zNij#}s?m{{Fs+?!E=Xp3k`~2yq(@mOFE)^YC~M%xRIYNEeluMHI`9|=Ddi|3j8+s! zxFbOBElYGvLQyhtiyZ*rW)ta3=lPB(^o^mF?~G?LeV_}9@KKjxE9Mf2nZAh#A(D;7 zhnq*DAVsc((zgAKzMBK$$(GOg29TX-tzK!-9Us*qr|btH$Lbyd%s>u5{c zS&EPahYKlz0AvEGJsvhysF998Gj+3R8UPJU;^OdxI^{9?}$r$JGe;56;^S90$8As+kFIA zE?t);^3=K^aRC*!o#bkE4vG|EsM#hC^O$4jRR=kRFd$mt5(~T8O~J&n`#bE|miz)D zxIoGev{GpvSLRG_Iv=;G2ta6hyn6J7^;3B_TDI$b@2;}m03t8|L7{^htndZKD@_uf%O&r8Z@lAe zv&BXU3fvt;JZ8wC@OnCah!Ko%2s9ypTBj6?@&rt9HZLfILkJNZ zG(w6;fEZyD#gGgM-WT|QVCDDZkjXoXk!0h*Qs!c+iBs2>#(4bh;3?K4DB_=NUn zf>)@9YbX&D^bH@NN=`UPu2&z)kbnxPW!lGvd&q}%eMpFfcs_vWN5=P0 zKxc@J=!m-na`8bxb>?OS@B}LG1COYQo9Glsm>d3~P%b2H7{FhgXo{!E8wZgLt{@4q zz&1Ov0ZWoD-%t)%F#m}iFd%`4io3{*wXq0Ip#-CVPsvaWAs{CiaCHN6Q3k_^BrqVQ$a}5_X%o>@0{CiH*G3QF3&XH$Xy_3ruyNxk zjq`Xu>Btaea}fTr5`&-%*{Dq-s1PAg0IBsQAxLwt21nG#Ud9AR+f))&0DQ3Z1F}eu z69bpQ;_zm2^4Z6?`n$U#PRXY}-BG7VW;z&jgkqgWA5WBXH!>|xG zi4d=VN~dIj%w&;2d694xWF)}|G070B;2&3zZBF2Cv*VHwVU!3_4+jwsByEFa^lM05*UF5YUuBDVGcL0tc~<5K)74B@(*8 z4c*|E-9VDM;0Pi30SmBg&eV)IqJo|Q5w8#fPlgb&un=WQ2nS&gsQ?P@KoMTH5eI-M zz*hkfVPA7en$BX6`6x0dL6Uz7n3{ADDv1C=G=nY4nCHk4tH2295DdN`3-pi>>mZp3 z;d2cMNGK7JJ}G>qshpTZPsI?G3IT{3S9gp^o5@%ags={vAQ9y-oT4dRb~zD!@|mPi z0XX0sv$>qF?#t8F_IAaI2`fk5Sn0FgG6UhfGs>gA6vu-S1Dr$feH0c5AnbX z&&f>QSP@Xukz!K-5Wpv5fS9mlbPbB5OCf1jpaQrEM{<}Mx}{mvc$7`~M?ks~Ic6V& z;|ZH^5Xe9gsZa{JFqY?7g2b6Z7Z3(rmWk}O1UU+(M{#c+v;hQSYiY$7bzL2Mi;0#|GYj(;;RA2)~i4$%XriXfWsn(E**%x6@W)JG7 z4`Ha{CW42& zuECnFh$;#g@T^)ia@7$d%t{fqsx3WeA@-`TC}Efxn14=`edW5Z+Uf!sU~zd^UA_ip zTJ#(*+9U^|2^(ok%l896n6OE4qa}9`pxUhyTdLw02#=`(LEvOG+oSvDYczrnncxUa zc@!{kaw~>#_fZT9!D}xu0g6KsJP;v5@da6ct1g?Pf5DaNG<8-0We{btus1zraQ_2V z`cwvYiCR$$b|W99unzGc3(=qu=}>RRDYbFC6Z-WD(-JT%Nrn(MBj6AXd`pnXvSyTq z5?=rW_W=y3u&L`%sRvOHsE`ULAp!?cpq=pn`XU0Cs{&OZ0tV+Ufv7D)aF22eri;R2 zZd_G_jwoim=P4Jgf_9FOr#Q|IJEOoan*AQ^?-wKp$my{2#inj< z;10=9jW%RN3z54dG7G_H7&<_`g)6#I^RdW1T6 zhWQE=E_Yewi+|@E5oAbr23C%<)&$QxAEOWt?y!}^P!GWA5c-=EOke}!>o$he5W1*o zUPz%lF*1^B`c;RQo%QRp#=+_)3qNFM=n!_^a(s3Z%* z;0Xv(3aY4pCSe4?*QJcX!ta7IXTS!8OI$MivJv(PlV+}%;j#KrCgaPJ5#a`W(79f~ zJ|YLG`FF3{QKc+}r!~0>fObe->bfhMMl1va1o}r7HeY0Xs7|yAo-oCmalhYiqHIGN zDvTd(Y;hJb4+lVsV8?)WjAQ<}W45c14w)2dguyq#p?dp-j6AHgfd2vRv7fN1L3XVJ2(5rf$5&5@80v z++fUxA@*fm4A{VQ#D5Dr&f*Ns4XT3Th|ID<8WVb1*h~?7a1CoP4RuU#Tw8zUXr;VV z77Uioq`JVe0SlNMyKXEIy!;JnfDO#>1=@Sgj4I4Ef?svH%BP92{RuUt9MBC4$+$_U znK2KGfRE${R|u`mD^q#-Jk5!h9sW$nsJxJ*e3}l-5f+AoYeQj)bxj{Hf$TC03nua&?(Wm&3dC6bGJQi;!{I8EE~cNX5W}TBrjM zC^A`fm&y@e8d(GA5EKz>S)PB#<>>c~T$)2yYU4LP;0M_Y8tz~%y~F*A1o77@LViN0LXaA< z*EAtE~>Bj14^sr z>DN+rIf&dLzOwrgUSMgNk>?nJ;i+H`un-USfd2`)kPz5SqS^V!F};5ferl)&L^PuV z8HfX0TM=%lA6YPwZvY`eJOc=TnoVirf)E8MFacvjA~i4zQxKaePS z{nW@BzKVsL*^NrVneGTN467guqp+3iO4)D=B>mCc7Po~aHy2sBO#B{@qzIkNWC86LNiscBkvc`NBEL-%d zy7EKlso&rUReKR4|3MO69rv*3gp;R9zyH>m>gGdF^e&zB2&MEaz4SkMQ(Tzh>X8p? z5DYyYUs0XRGY?cBH{$1KLuEggUPe(}d>!795BZ=5ZJ%!>;G=XI?uI?qc(3?&f72$m z9q{n?0w=BLSsB3m(~G}{^i<_yugcls_e(X4aBeu@ObXK)8J3Uv6g%&`F%Oa7BZKoHfNEJ~^>z;kjTpdbOtD^A!u-}QC@d$@d zx8HECXWYD~dUG^T>QRbr~p7lOu~MVnUbTDEQ7zJ(iC?%bZe40_u1Nl_7oQ7Bl% z@Ii3k!G-DaQi6Fh81 zC1BpeErtVQ7!aZLBC5u{+k7g4KCvSFMwed9;xI%JM_tc|F}H(!1Cj!m4M5z#THJ=;DjKA5l&cOfnO;o zYO4_@=<2AUer0Qcp$7Zwuj@UNl$uP9S>{hIs`=3pG?_*nor9*kZoBUWP!CoJVg&#P zwr<3dz~gA-TK~fhU*&Mc7iYY2#~&a3I9gQ}Lna^!I7ot83sFZBHrB;EbkRpAJuY>> z2_#oZ$3AOlo6u3YJHZWF+SdG&h0XqeFN`AXApRCH)r1QCNgC9&_ zo-jDVguv`d6slZK@Hd+6Y3K(_SWf5Uc0dQ#(1tfGU8O4c4POicH}P2&`4IRd5f&mX zvnt3u7XP6H8Bxhk?Mh)o&=!+?T*D4Oz~7fX&;zp3r2_UT!~o%gLo$}pjQr{X1sL&( zVQ>mJY&#F5=CTWJEMgqvfJZnUAdxu?q-Do?Sra=li#42MOF{tx50b!}5X$9?4KY*P zbRopDH1dp>#AGJh)Ei!GVic_K-cwL=jDgg`c`TeGLEvGIC7!BX6Ja8%s6-Mgf=Y8= za?h?bIKo?8z(MhA5m(fKKus3Yn8!4co|K7;G@c@ST`Zfc;KIIxAmK_dBZ;2?RT5&@ z5>ay5B`IzoujX`ZM+YAnzdrf4TFyqw=a1ldoH#8Q^<>c}-%7nJ+F1)v2I zXhK!GQkE*zogyJfejrlPIgYEE9PJ1bH7b#7FvF*mFoXk8bkYOaw53NyYEqe{OoT|I z6VfonKrWGrOAKNVnt3NbW4Tj^*kK^@LO?{nsZXMo5|~OwYg*MhpJg7y7_R8VK)kVt zfph{BlCY~W?rIEVbOITD)u%%|imZq{QK$Z#sS8R;797n~DrNoQS|vMK%9g~P7br+D z7D3m6NJ0{@kiFJ4}dyWXi)@`K6g8a$hDl*~z_Wv4pBLC8OMn zClJ;#6Lf&42K6{m@XKhB#XM#Q0+<(i*_1^f^bjS}#K|5R=&1mO&7d%&2LDCi6H#a| z01>oVzH7-%m_&gQKa<(eht6S#KRgU2>34|I)SyXo%n&Nqn4|?6!2J#r=szRc)1Mw4 zlZ#yBKNJItU0Lh}H?!5CD8USBumKfNT4l1vVHF9$l*?%v6)@v$ZH{+5SF-Z3e`D&w;y9<`MbS->h*`vkx7_6~hyQuZWj=G7*WBhe z$9c|mzVn=01UDZhuRX=BoMT0?g*Q0Qv)9cMmh;@{PltNcr9O44SKaDY$9mT7U4({y zuTBoQHN^q>B?k=(QepOZ+SUFlB9eLoo)`?+DPRHq7`=35FzVX%zV}TcT`QW>3q-p> zDxdi82@&5Rt#i3)ck|uxk3Ug?WbM8;LbEw`$Izf<>zXdVWf_nMedv7)gAYueF+9 zQ!O+4>NVsk}8*#6`T3EXp?4xqwKNM2onPY5yuT#Bw4iT0V=b#QA_D_ltC!d zv4iMJG|CnS$W1+wurnti^}82t4DSBf2PD{6)$W#%_c`nHoY$5h$gDwt)aa zn2<&|BL$kuv$4tyEVBuuGaqlHM+S7X)59q5d&Pkmhj&g*CJ=+^OU?>v+`Z7x_hbJNOze=hM)sF;K}0i5(T3m0#SfOzyd}y$)sG$w5&Fw90=-|4htAO z9SaZKBbvZ6E?BS&g<(jAbx4PbTnBe}hhe~k zco>Ftc!m7nh0dseDo6qrn1US;KHfx6y8j791+k?hOT@!?G2J?fW$;M0)E^u3j?YlZ z`4JOL7>1Jj22>b`RLIVOsE1Uz#}5h58MqMml8Xt*z4VmOpW!;HVI2$*LslFQFuV+l z#K=nH33)gObs2$!ya@{=O?_mrZ&*zpQiOOYh!%APD9jLyh{?IggzlTr9rYOr2t3B1 zCrK=s4Y(ZDpu~)z467sv%(Dr7a8eOP%k4=He9WqqbclK|%jNt;`{dCsMJrx8hB|q> zI6=mH3XHBmQ@{9t%=jpc(!`wT$$i)deUQ^_z_2%=QVb#pS+Ivv8ij%Yg;+TbV2d;_ zHB`xh$Q30Q65Bn`@GfKfhLfv_X8&LZPN>v~As@HNQ>HTrVHkzREC^vJg+}u)BZ`$n zMb)%IAaD#$5Nejg7>9F|Pn?X$EeV{+i5(La64XP8Vek-OXd|;MFhXPq8cWqP*9eBDU%+MV+l(?bbud(rA)-Fo*;lU z=)Atm*GKEtf3;Yp(h7?JJD51w$4XcaMGItPyNM;)i#1seYr+V%td13pgoTHiw8^8O zOFS*jvveNI?@3ocmg;CursSklxj=fB>6sUx+ZvaYqna_hvQIK3b6fW1}Jl1N2+ zuv|u1hlvQ>yB*xn)l>ud$R7~aF_Dm?5Q94~wl7#Sx`5Ul<3$n!f|*E!b-;vz=v;?j zgav8E%dI>{prl<8-QpcxC;WyJScx21TW)whwD18RD2O3IUbuJw75ok$6pcL14_`<{ zMi_`TiilER&4DlnU;o&ff%w%Zyuf-56HVAslGVETrQiCs-}}Yi{MFz6J*i_1uu{qo zm3&9G%`7?_3TWs;g@|0YFhCth4B(aAik*l)H3%PKQPJulg205FMNvzdgnJoY`Q_gc zCgBn`;S)yT6h`4eYn|2sHpY03%V?5nGKxMJ2tK&QZw1M<0D>l%F_s-l?!|(EKm>YN z1@HynM2H7Wh|Y81TttXY3O0ybNCg7L*#+1FWAkA66}n0iVHF1BFc#x6CgUHR3aUML0pcJmJLjV>6Dh~UKTN-yjlHp zACk5vIscpKo~CIHsonF-=?#cue}YsI0cd6{O`m3JeF5t5rDg}rX*;A_HcaX{TI#0O z>S+;^Pk5+xr4EN0V11@)ZQ_psFjADr0`3?m2So|~F})vv>#JU>7TM~%wv|~4wo8ep zQZrMR3ZZ_EC7g5_ktB#OIBfGez>myj9>6|I;h*uij6{ek76nke#_Y4hBE4V?ug+(l zmQSH3>L46|!)|M%^bQda!47a=*v*AMLFTSG~-K=>eWT{sKY7aZjnSmMItm&hytd_03ePg zg*1{*Fa||P)c1DqAE7B(SOMyoCofgg1+hWjw!QD@g7%kB@K)G#&$hg9IhJ+@ZaN$Xwj^2S0CUYOZB*W~Ef z#GfdGa5Z*#It6Prt1k$H0C09Lujwf-8)=~fza%4f09AKbhkC$-QYZ(5HmeHQqj4v9 zPLco=!)Jq4Q8omEYJku_tf5c{)<+EAbEtJB_V@C^cQfzVVz2bV1Rx*@_=;O#?a^|Z zU4?o8)de{#iYLj3&v(DPlsd7K*YJRqAMf2VW#`}xPRB*2Y1S_J_v;30Hkup_hrC$!hVi})E_kkF2h42d`4B`|#!V`!7@&6wX?O1{D7~;!I zq3h>~&y;6U2Dwip|M@2or?7wf7YxvdqV6^dfS~bhAi;tL4`lIBiO!w1OE>$d^qvq#*Zg7JCGJ3 zS(}g>tRX!QRgyz$*Uk!kJNNG1zk?4iKKR-3DQiu}rM@3ap zqKPM>n4*fBJwk*flVCTXhWstJA&m@eRzhePZWKdmH0rpbkV6t#q>)DsHP(I^Y|!K% z$8=Ey20>6s0YUG5qk>aA;?d)6%^*3_1vN|&K$vHunWmZysz%{Jo|F=&BA zP-UG|0%72AU25cl1cpqILN%hS$5yXS1QN-}nPjbj4XazLoMuh|?P%06m3supY0X)Fh=2$r@R;;ndBAcwT z%QD-nv(G{s?Xd%8&=WA%0+ZpeLCH~t5-+u|!$5SvFBD(X^ zTQ6*uN?;=`!A;Taw=PLwkOT}cVDFJODK3p3oXQI;-L;A#DOn^PlT**b#56Gc%+ zs=+$8#tiLATe8U~qnxtJE3@3P%hNhUWuAFI?Y>Xh-u5^eR(sKI?90;{@~Fhd&y zwED8rOEcZH(@#Skb<+&Z*+tbG5LB%~7HC=DlK+w8LwmZA;Cx9FoWR`hZYb|V8U|70;EOZfxI>KvQX{t4NZ`Nfy6aABs(^YHO-_5f$Gr>UK%Enm0PiLd3o(+V zV^nuWe&aZi=!d`Fyz|dPAHDR`yOrB8!x-et@m1~8z4yE9^mY+JlJLUiE|r(&gvSdH z6Z%1V9>4taE3{UPo@DwaFN!2?5Ef|gpTNeqJ1A)Gee_!(0~_eT@VTWFo1g%k z3Ze*ucmgQq+hF^^RY3S1Fd8ihP@o=Y!v7PZ5QT0TLLy3$2>m4lH(7!p2iNzLd|3nv zZ%b13Qs~1U0!+4jxc}?R_qYTHGQRBbAoa zEXRF9Y2qY`k}p!6AdPAy0TpU+02a)qBSF}eRk~=$JK}LgYLVDMOks+s7@kO_(W342kwc=gi3q&Z$610-XOJXvU_(_WlzhMl7NFo@LFp4XT@yTzvB5Oh! z7%S1{f~6o#2Xp*EC3~jHTjDa8xKm3(KoLqz1S2Y=1c?C-f`gLS5|+2ffDrt{o%QH4 zn$k>RymCa4T%7V7mq-Oya&d`Vc>lxzVwg@H%4r?1!d?8-(|F(T1zD0ZAnm2*5W`rg zR6KT{+a2c=T2ROMdhyVcqEv`zIS48)VGL84@)FyjPGtVm&h0QUr8?ayrFdD8PQYRy zosa}kLm5g@1_Kts1d1e#QA%W#G7%dE=s2rmQ{)MUK!sROA!@Q0o`N;3T~Uh{O6dw@ z{E{F^H3%#u0gJWf*mXmi5EyeRwR&z1!n-I zGD1<e^=f+zw5KHyuhI(LQ&3oUfBYv22d_>3_t_~fj|-%fP^z3sKNN%Foz!^!A*GLP9DnJ z1rt)LQlTacC|N^38qwZFT!I^&=!7vkfr?>Jw6e;(=^dB(1`(to1sE8}1SkLjGbF6T zN?!6q4w0M~oi@egTC^b6oe5Nt*EY|NlqV#`2du(fk4)5==%+e)dbO8<1BFfAtpd!0cz#Vc;{jL;Oo)}c*y0A%n-Dg5FhAGx=wqY?#7wIFx4 zvrTf$J~SB@eBk2oNNmVvlH)w*1@Wkuh&+%=KsF(mkjC|JrE1g7dg8@dn@Fl#UeZ0e zvh_`u)TQ2^qw75D2AggjNxUiS5X@|pE||4;)fJ74#J^dpfFKPb4Q`~upI8S_`ZBu9 znmgU*jB&Hloyp~r25`ki|*+$YiT}IWSU`iaY3jA^ z+8exp>cchh4(OiiRTi4}$d*9bT7@_}qK3IG6` zq|u)_*uDAeEdm`RC)UJadd;8njd)-pX&u1?jt&WGFi2lWv_QZ_9r0z~0TRhC2uLXq zLL%)%@j0HF+o5q4YIC0>Rwz!wMs zmT6*!Jd@Rh;aVl-A(R1_ z%omYO0UcDs1Q>`Bmft~K%pBSVDPUGbFo5q-L8lPlIYEaUUI_-_*b5CrGNwW*5yUdO z5>GII6Cgl3TH0U{q}UK-I!>eKbll@4PJP8Ms*g`UpNsgp&T-i-J6ir41P2QwQ3WpL@LOT$H zHmITwOh+b!z&09$HY~$QTtP@u3lLlxNIc~Z_+$lY0Fyw;O1@;d!K8ix1yrtDN>yc9 zTIE&l_W=kOFLQrRCj^;;j=iZ#A9UZ3> zk_J&Kgf0BcGa5uw3d|UM=XkOwil8Jx7(zJefD8~QY!ZoD-Um!tK=sL`R4yn6c;{+z zfO{Ed0lY+LYQ%e{=Rp)ec!A^?66b4fW_T_rL{uMyzNLB=r+I>CS}JEp3@2%dr-ho3 zYJQi4=81lCi6Jn7e8!?dB!Mk_%5M^;aJGhuwj_97L80Af4>-gU9Dos!n|;{k+7Us4 zw&;AM=r^1}0A#6=!ex@0B#m;1?}b{1UMGWk1cjnRGhL>dTIq;xDE~%G!L;q?ds#1!0U zSw6%8lo?|}TC46&N`|R+ROo|t$cF+!i9*JzgsBf`1lPbPX$B^LErc3euL@}yf&>z41jbDD@X_d&Gc$TX2iGdY(fATL456Pa*Ylk00Kmwi4DL)^Z*A4 zY>C8eH!?)mcEqq=tAq+cg^j`D#%Zx4#Ll%ZN(0R z>x#i8J|hv-Y5;_qjy41iltBPE!5Ltzfy}@RbeEx4XcDx6scZx@crR#h4J$5y8JH-^ z!f9rVF84lc_qM7K;6N3W0mm)`qnJrb1V8|j;n>o^5=bWtOaU|a0OzijN?<7lumMSQ zD^tpz?1k#cassGw<3X?kYvgZ?x@r~pfkEhR8`OZn8U$a70PQ|2zk2Qf<7+{z!QWzB z8>am+x>g2t{V+i-40v_YP{AQG!$^WtmAs4fc!fZB5Ck*-7- zh=9vVZ^s5em|ZT15^S#^U;c6g{Z1;aIKx4x0slqj@Vi>^K&Sy2{4Igz?tHGs8K7E| zobSSNsS`LT4$K0p5(Eo}??JF|M_4b_959vyW(ur<$s&XqOhM0L>jAHU9W-mg1^^#O zL8RK}H?XX$`W{5s05cR>XheY-v@Ml2!~#Td8&B|K=bnvdnSI+5OT-xOa>i|HRB{0; zs}#E`0>rV;eM1r?^b~bw=qfa5Ld1Z+^8W-lz;}*>?=`Y|PH)6sG)6#L?LKQ805Crv zga{O@m8QV+sX-eY4H&dCLdeo3ra(z&wE615PFwOu!le+P?DT#YC9i=HFls{}K*wB3 z#JXuGPpPA#zzWo}d`SeOKrm*^0-1mT0!Zvbu&@q)2MZv8pnby{*iG~rlL4OrzMer+ zFF;ZoQxqh1J{u;6ibOFD1YUjv)I#ktGy^9r13M5lJFr7xFQs1_X9;gHlYkmCWQ7Ir z?xYqq8A3pzpmjRmFhR_McX2FKZw)&SgbR-ZWv?%Wyz~n@LoJ)w1Smm-DJsBDz~DYa zP;Z11@LL0UWouO16^CU3Xd+Th?+q-Ecp5XO8c&Omi9hJ zG(~Xk76W;MvQ$5SLx49BUzwmzM@jhTGHCgh6T?A_YH$_=V>4S> zqVppugy*hHBJW&j+w>!Is{atIINLe_ocF*Iobnw`ueIiKY!vO4L^*ptEAui$dz<+3 ze)a%#vT57Ry4)=`&x8t31X+_|cw_fzn!!I)sK(+9uw*O`^D=^8b%ypJ-5x}H`7dZw z4P27$&ZW81&SkR_060&?dXIW+B5ipZM3HkTL!5HAVl|w*shdhE=bCUt@IiEUbyQC8 z_fk?ppo$Z)^12M|0ZezB3IK91_w25CSa0Ns=JW6d01nhH60@#&X2KI&K+}>L3m~@) z6oe4iwjB>B78^m>J~AhlIO9fl6zIBKPQ)v3f#0#R63C# z4GYu&uSSG?C#N}+lmAYTDq~CdNdiH&E5sJuxuTlE6O*@zvoRS)?^iEsqq6{7GdbsG z@%mP0uA?nNDEebh#6z2MX*akXgZIJbEWd-boUI7@;v>8yC z$kVi-+cC7B8akJJ$pi3_#cbG??MQ6FfSTn`&v-)cKxT(mw{bDbV{&-ED{UGC8y_;a zKSaN9O+ie(9guAk+<6qNdbbO})ORU|+JL+gEKRSi2VT9g#&6ZjlB({jtiN#HCaxv} zeHlcl)@wIQypaXWg24NLX?tJ+NV<8N@g782%C8-k=<8JoD%e`La$hoXXKSy#W#{Al zH_&wGf9?V_djAiDD;TT&A~(B?DrpHbfAc&4^F#mhKdj~-y~TQq?bk#my9VqZGvjxs zioSYmWIRi7JVR_l)|#af!1zXjZ-iY10vIl%AZlgTc@xJpQCGyrqOYItJwSXDI8Y#m z07(Yw5MhCX1s((;5(E-4q9P(u1UeaDL7)hV-$Z!)*6<^cD<>hIMEUV!69Fkzs$_W} zBZLECoE5Cd;Y!Pp83zQ#2sFR~Ck|MCWAOo~nSoKpEKul#1woA+OeVFel`BOdItx}< z&=uqYlRdQ>F^jfGMY0loQsqJNt-z{Ec@7-#bU}cI4(pEL$}q{@y9JFlF@hEGQiBNb zhWziO9FhJ~Zr~{`u$Py>L3*-|(jTxZIptqPP{DZj* zE1Zxif@T@+EI^oR0*u;z`!G2EQYsNRiYDUfHnb{Ru{{+TWN$qgVLMGfh9<<3teCp` zFvB6UVo}4LfL!mozKY^8JKJn4smSk4435aUHcN7(7b^@b${QV!X-g=HBoj9-&4dxn zF#p%QfIrUQ?Cr$;X54N8Go0Wt%{`%{6G<7wyphg0xpT45KS6u5IT=VCv&%+}?9VT6ed2Clu*=BNiCJQ5} z1%))9fO zv<)i;@)9=Me*MkZ;u=9sk=SA9)Yx4vMMiYWWX&}6Vg^gD2-rPqgSqAFDt#H)ng4Ol zS?8VS#kXFco7LA_piLEZ=2crANMN#Hy;PiBA?lUnj{{lR>S%e+8oR4QotSHIwZ0cz zjN?@nWui4bE8DQQ`39Y79X_hcYrrstlG| zbL3JUKZsoN$tkbga>@NJyK)^dV5oD?H_TjgIzKNR^vfe3UG>#jZ{79RzdK#_(@CEl zb=xA8aJ`Rm`Bo(1irci#H! zxDQ|a?GMA={PWS*dHnSYoAkI9;D17X>d~j^Eu{a&qxZu3C;po%07wuf2>(F`1e}Hz zGQ|T0E>MB#W1aLI7{QN3Abu6J4(u$L!3<7tgV$N$&L}8B2Sz}IdSl=THJFLSmIriz41EFlb0ctj2A z4vJE=Vie<7M2%swidVFv6GetaFlLPaTs)zt%;?3v%^@kWq9L8a!9yj?v2Z;^f*pfc zz$54^4Q2G>9|0LiB#x1gh3pO*&|pYKE|QUrd>$fIXTvwv3L0IlK<(0gh2SeHVUFb|FJKy5YXQDC->9l7(@p(^u=98cM^yfSMB~NR@lc1sl=ik^h%XfHF-KkH3`ct6>m8c+1pH6pHRG*rZscD%gorW4!rAn2mQ?+VU z`PtM)BF#Vrnu)nkO3VOim8^@@!c)t7uB=Xzr2DaHTHy-M1I*Qum>U1k|BN|Kz4i30 zef8^GeFE6HmbI;e9hYD;_gBR(ma$wZtYINb(5_C_U@GO18!+nzI^A`hL-ed?BMVC+ zhBlj{C9PXcds;*CFexr&31urglRnIrwwhJiO0N^3u(s~Ay*)y2Rclhlo;A4LOl@(I z8&PBK2e+BsgC8%?95lc>1*kEcPOBM!8Qf4Rq1R8@>~UDw!aN_@Pi?oT!ud2 zw9C~BSH1cTST)VE3HC6D8aZJRk9eluAu&V8DB{T0m%oRF?{#rbOySYRIKtGNFc9-w z$WT5QL3K%QUB98=hydBfpp5a6XNqJcCz;7hR_Q!7yVq^SdpVg zgnK-K*%Oju$&VjNqFl+crAv@66*`5I^mFm(DSEgpcs$EMq;{OS3nXuVb? zvy2L~AxfP?O&*q+8TQk!gD);F8T%^K+_VL21?*KU<;Z7EAlW}kH$QkAA%x1o=U{&N@wC}*=ZVN+deixp z;azD}hcrKsYDfEB17ikVF$8(uiBXq0Pcv1sE>!HLwAZi_AE8%u3Cd0=j~X-Jxm zv$-hXSTG)WUx6ZFndNqyk=UhzLl(E-ieegB<&!W*Xxod+nQ7*a&X_1T|kZI-F%q7ss69aN8!#VDBnA$cWtHSQJMooISEmx$3ZYFJ=Xx;bN=SgQFY zY=MiGm(QMS?XZ_FD&xBho9888=R%4aT1qw<(PRD4D&ni!-)@wVGwi!pW@V!WcrVsf=tcE$P8V zvFtO^kWO7G%LYrGug&!m95B?fP5T|yqs6SO%ll5;FxN>^45P0Z8)U1-6@@INwh(E% zGSGf$|E+Yz@M7Q@wyS=4x5d%qdHe^V8TKJx;LeaX9Sg%p$_in z=v|L}HsWR<{TYS-n%FYCe#b5_;fZgi^}}xP0rrir%MP8?sN2p5>0hV3d+Dc3E;f2{ zUY7SzO_Iz|lmaD0H^G0KwyaFcqjva8x<3xS?7#;77F@pf8^7e1t)01 z+byJn!#kh>JM*&IWw3nPQ(g%B0>TRdriF|8o}Ls)tOJ}ZgOZU@dj@h49?I%fa?{(P z|IQ>l2TDwaxJw@GuB1V39i)TDa^LTe$UzAz?;{8V2^Bk+wtk(kdt-arqzdP+1{&^+ z^D`kD*OqP#!s?kVSTmj|JSM9_7fos<|zIV7V1zr1u(<4MaXp4A$xR z=D3&mV3wX_2qF>ruU-05gT7?pFKt-BOwG(}y!>Otk|;>$ND*eoTp;B@iM>IJuXIlo z7ByEh!AG`alfcB}Fc&Gx$63(_aMb0p5O{}d{?eSc?BqDt8A*DMbC_j;q8WFI{}6K8 z@te66qtxoTGJgKCoCk&DGcTD(-J$b42j!oE=A_EGeM~p=ik3SU3LkLBvzLi{B1ee% zQA>t$pz|zdTi$seC21e13W=+F^{ZBW=}tM=&VniuR9O7+7cO0u%`rZ#kSY=7$ZQ&KtL}8ETe~_wyxO#rM8#rN?J8GY zhE=gIRjCL^dezOMHJN&(r)og^!NwxAmO_2%=5%_`nKl)sFoi@4SLoW-|9aM+Go7Pn z6+2nF`l+-1wCp`OJ6oA9_PA=rDO-P<*K6vrt9QU_a0%1gl^%Dwu??wY9tvH%-Zirf zRqFVJd)l?-Hkut<5D+PZAoiuUuB1g=cfU$p)rJ?o)paLwCF_zmL^ryn1?V*^3qH>7 zG{3yME?u$v+;mFSumN7Hc1_D#@0vD+k;QK?mHXJ=($;{ERWNo%>`(>w)~!>8=WdNV zU$7?E!!2fPC^<}G7h5;PHO{e)vuexzp7g&#WpGtZyVxiG7s#kHFhWs$v>llwu<5nl zR-BSi%)T|rb4BoxeOq76mesNV4rL0Un_cjQS-EB=aCbf2oGZ)L|1LNdvVM0Q*Eut} ztw**pmwPLfGiz1HfPQger>f;I&zPnnr0+(MEM~3(_r!?SY@*lf30IOpxV-?L;onj{RryITMveFu$E$--} zEqz|+w&i29qS@Vm6RhmU*QEss!>Ci;XEGZ&&59=Wtp&Yk|2jLX)c#UKPD!nO&~?8W&Zwqyy6rn@OqZM9+=h3sqwRxP$JofUJ~+V(4(mzx z+t6EPx3^W=X-1P9-2|_Agrl8dUMm@n3KzG*du`wp#P-A?|L5JPH;&+i13bkI#xky5 z-EZ@l@;$eH@@rL9w|a_aECfL-tZzC{83fiNzE7j>WW{ycswoY z>BjPrm-~&*ZFLf66H$_=o%lgTmK^c5!}`*M#zhh%#4)j2MM-|M-X^*oKEVi5KC9SD1x1IEj+jhCN7w zlGt{dsEI-tigU1uinwT`xP+#diqW=%8CL~LPz7Tqijb9lb@&ln2#IZT8-$SoJMfDa z5RAU40vkX97;uaqkc`T>jKtWC&iIVb7>&|6jn3E>8bFQMc#YYpjT}*oda?o97>>lK ziyI-0);Nv@;fvikjUUmBF)@tW2#)d?kM#JAQ35Y8l9NyfxL}ef zd6Ftgk|NoXF6okF!IC7YCoqW+GFbu#|1pv%fs-oo0y!y@1#y!?Ig~_MltZ}^LK%=s zxs)YilrQ;|Q0bIMsTxsPl~$>fOqrEhd5>4wl{^`cUKy5BiIp3%k}qjI#+EM40R?Q? z0B!k}aOsvHFqd>$mv(uVB#@VSxtDy|mwmaFNrsnl>6e5lbA<_*h?$r#A((4Pn1>k? zf*F~2X%Kw*9E_=$H!_)lDVcVOI**B&IoXyrnE<3&nsF(b9C4bTDIT=69U|hGeyI?g z37fQ8n}d0qdkLB$X`8i)IF6~Cz!{uDDVa100>kN>mnoczshOUMm&yr=vl*JRIhQ+W zoABY1ekB{PIh}Hu5ZuX|;E9{!|CyW5Sr{a+l;c^R>baFBP?GNHo>ZBX-Z_@^`JVRK zp7)ub^@*SQ*`NIRpZ*!306L%oTA&1qpT$X@kEojK>4V?-o7MT3nF$3#xJ0KX88@Js zsM!yBIh^77pdiYd4Qdx3s+Ua(p=hI*w=kkCiV{@7052M&FRB+X$^b2TqaHDmY>A@{ z8lpb>qd@wUmB|tcdYyb31JK|-0OS&d0GFZpq#o*_BQT{@8l+ZwrC6G!TDqlNnx#DY zrG^QhHW>r8pa5lhrfB*RXj%(k+NK6E1SZ-ST{@?9TBmk;r+C_%(mA9Y+MO8Mk~?~M z+;pAMK$R!)+uWlr3_J`p4zIe`l>%zrZ$?6I|-|=8UsZTr?$GQOuDDw38^`%tNq{wOo^&` z5)E;11C)6YFPW##`mE3zt9Pz2X1oA6ndlgg&pdamed zs}9)@aH^pgAO=$qiwGf$LBNxN%Ap?7t_tx4HERAh4paQqRu?(;RUO=YhTBaz$1uHP0C26&Z39@Lrwg^E0m@1`k`2cOqCMcX=?JKC zo3e$lvVAJI4B-W0fV+cP1k->48j1!HprfQ|1q5KGDli2ytG0K9Dz0Op3$X@kkPpnj z4AY8S-qVYNfUjV0N`Mfbum$kdO z8$p;4Z~>^xzh@i0bXf~4`&yo}Vk?mk*RZ{7zyzA`vm?N)C%_S_P^j!%!RQLL+8PAR zh{JhFy6nmTG*GXy>%&VK1!r0iZfmaQx&(mRjUl81Y|sI&XaGXc15AvV6pBsJb_P|< zlP)ltUmTn^d$JK+vFV5e`q~d(e77SE#BCd{{m{1=0LOycurGHr)%#uu0T20*57?ls z8%qUo|G*GLdl0NZ4UinkkSqwkI=Pm7$(YQXs#XP2`vM=J5M-OiObMwNz`Hq#1bFbh z`?$IqAOF_=;9 z&KsK7TG_D)5w^05z+7w)22cYcfD-FE!UYkFLa^9x%GdHm0GKP!5(>9pec70Omn3V- zTyWK5fD%=3vovWCN$uEu4AQ2&&HDmjeX#?YAOl29*9B3iE`8dN4Xf~b+gVAe6wJ({ zTe<^z5Vg&^KY_ORf-IFT{3K5H3jHxv}rW*jg+v1Z5|H05| zUBuVCa&7HJruPzLZ~@^AzNQ%m>uZ|u&A#$2-^%T&OH8C~T;Dfx(G4A-Kj6AMxzB*D z-!4;{FhJR~Y1z`f;F#Rs7cH#wS_5HF12bR%$5P>zhX?SA!gM*_mIWW05aI;e4~;+t znn0yNi?oMI;I8_ekV&m8&f;w$;5^Nw91GYup5r>c<2>HuKK|oC9^^tk2^9oj=!E{&jymUM|K8?`zUYkJ z=xYAv){5vdUeh5hhMKk#hHwxy%--=0-?lC32z}q6j+ixC>ZX3`sGjPozUr*r>aPCk zupaBOKI^Xzw%|GHWNw$YpaQ;EekcckA3+B{`@Qjv>$#4`qh6KdNS4Nql+FI^AFaZe z2yF4U5_BLBe9#KI%%MDNn$WJ>bq?yB8mqDS?dE>&9FE#`aAUiNuPcEDAwJBVj_!;K z-Gy%N_@3|jzVD(QruY8u03YxIKkz}C0qbsEMwS7p(6B@B+7+NnnIH-(P4BJB??76~ z1b^?knDHFn@gD#23@+{G9eOnP*Q9V2cTf+8Uua^4c*iR3x2p$VF&6c6oT%x?~df6RLF149XZkOtv=^H=%bL$LIT zsj*(4$i%&VXZrPEU-o8y_Gq8>YQOeu-}Y|L_F}o8B5CLBIrpkT_HUo}dhhk9L-wn? z_hp|DM&9&X|Lw)c!qztJkNwXHK@YRQ${G3#-o4KJY30<-*Os68n!ov+-}#>Z`Jf;A zqA#PQU;21|`V!FjGrqsNY5K08`lGM;2fECwYM}O6_wD%{fDik;-}}D*`>4hvSn@6DTn2@m*4SP)^u zh8GfQQkVjV#Y|K*Q6X5uqsN3FO^h5lM3hOCCsnRw+0x}pm@#F}q*?Pvtsf9|?&R6f z=1-tOg$|`s)aX$OMUpO6+LS3$Q9Y$jrCQbM)u~XmJ{<}YYr_}6#Evag)+|XAJJF*3 z+SV!zk11PT-RhI0+pJvm7Qx%s?pC5NNs#bc*zjS*i4`wq+}N?=i#P~AoXn@s<%JBd z?$~I_b5w{FE_Ck5Q{+dvfCH~)-FoG%#{^x^rd?aL|5My`WAA2sd#_NheaW6BPEzgK zk-XmqPk6WOO69VDz2dC95; zkLr!V+;{?QyAXjREI}4qbn!(P`-)7m@_eunJ@*Q7ud_HDgb1yaVzloy{r20-MgGtu zaY+dZ#81fkQe4eP^d_=1_3kg96IBAGO^C>_hREjuXNbn{I(w@U%B z66Evnz`HuDFC^3Af^N(>yJLwiBa^~2OubAT|4`Atj&!R@9nUQEF`0bA%1{p-#gC>& zD^(0R3gLobs^W&bFhWyB6=YRak9&kwST}rdR1OPtu2Z0-TFTPqAi7S<5@kEIP@)1g z_E=<-ttyX%!e|H*NDgyBItz@@;(>yeXr>uGQ$6i8xw4W@S>BQylUSGXYHCw-Rbn^M z=WLbqw*G8VQrJuttqE6{7F&x;TES}7PH!&^mDPeyXdzZtW6iMEStr~HOxxhzvwqdM2UmR+lTl4W=?r+l#5qoZkHd>VEaI|f zk>@bxpcX-rz<^qm&rc|!i}G}({}UXDAqq-ZfL5%7GzGCsg#%=YB^Y3fW-!1+UP~H5 zGRHy_+KObuDq6;DVvA}xqIfop0y`W4DXk%9C7g(a5Qaz<_8Bf%cf(;1f2J`&e1dSR z_yqOnRErm6tsvt=+x!w{wvdpoV;Ss6D{l6qQoZV7XEYTMREINxS$6vm!_8{^p?0lrm@PkY4J20;_T11?4CU(a*OFk%r8 zcVrY9v;3w52(pUR&2B%zQ(8xHR}gLD3w|7c9}=1Q&OSafrYp5!B{O+boaQuwo~+0N z5t9!|2r~$d#2M$n2^NX>X1IdlgT% zp$)1u0*wUe=d2=&P!kN{3ug!dVXr4Iow&ms@mR$CazYScpkuQIVTDydnkh>(Bnqoo z1uN=N4^~h&o#?>sbE^Vcg2-Y5+zkaIEtg$d*z8isq-48v`d;|L2nvO9)?~QDfK1RJ z2x*`JY;>Z^C_>RFE5LygKsW)ZI^>}Xs6h`h0ap8dvIMb1L-b$= zvlfIH6>cLXh+&I+5@RRLNXT5*+6q}(g&m452#rzNJQ<)kA;gdZ9jwxbGD!24{m`)# zJS<{5*rFBE|6EA{UR(eGkhpi2l$KEx5s65Yw|-xN!z;8b+2!g)5d}fVPQu(Am}(8C zR91`~__?YY>$4w`SVo=65eH6eqt20-3IN#Fi^7D3ZE;uzG1{gz2oS78e}M=rh)a)n zAR`yw>?i`zA&Y{9f)x{BMRVn8h)#nS&Et%5KUg6IO-}(Lmu3YzqQD9%Xc+-LfrF=! zi;nD`nJ4IQ08C}^*;b!}6{3#hA47peK$w(v@nv?izq2A4DL8@yfruEaqT!{MgEW53 z$mYByU`-$+9JmaYstK}y2=^lonLw!xq>G;>Xq5;MSi%KpFqtM~LNn@C(5+kw8n$jZ z5{~#K|A!mVh$L4a$<1&=CD<`nf?M@20FWyH6wBg<0H6_^FsmNUK-*bFIT9CWMid;e zWGNGb$2v|3C(2+5Js3g?oRHySA<~MN>w)FSi>waV!Q=nL;J7>)GDJbWIEEf>3s0W!}VO{S^Q5f0vB@Y`Di8%OTVJMANp4rC4Mie@; zQdx#<|J;ymaDo#Bk!{@T{9jn9_>EpMLmQ$Xbo7Ys7zG(FBGv&4Exv9QUr^-a&k+iA zcsU}g_+^&G%tJ4WMNHz-D3G$jX z8|u2&GZEnPqjz$QI$=A&Ta`La4T!Fp(m=b|G8oZA%HO* zJeNUyg-GcF{c!+U;58W#w%YT(eh39X$gWKLGL~8eVbe4~Xb3IiwN9(a075;2AVQsF zGif1+S9mjfB8YlIpPleQyx2RPV9I`2hGzhaEF?r7=$-qUn@<>pjBM;HaJ*)aIygYshnBtU^>Ni=mUAtg|Q3wi>kGQry` zkLZZ0|Dl+sq=RZGD*)hxN+^R2tOkO3v4-OWB%rH;GXw#ED@nXf|66zs4ZNqnEJTXr ztQI4yR-m|ma{@=81bL_i9H;~XoPgnULAh!%+6*iSD9#yVA4AZ%jYOu^7#Uv~gL4bX zf{+D8vH;HufFk^|h5)Z70IeDDvKiRZD`P* zP)e&IHFloy|d@dnC2O(GmE%U5g`<;Y9 zhjsj%hR_}f@X6!5y&H`+BKWNI%)GD@hF3s<%PRww49qeBuL=-Ks~XvOv9W~ zD#Z$DgN!?fFdF%aVW1m|s0!~BFoIwMZj2v4Y={f0IX?nI|EuCehe#<0TY?_2fDY&Z zhvOSWDpDDWzpIC)PXrkiD zOJBhNPw=IyqL$-4MBG~dSs+%HIxW8ZC>!Fu!1Sfj`;A319L6AtBKWXX&>kr`K!-9z zp3u9!Y&itQvxIntGh{9ENuz*5!}VH4H`S zpn%|`RSvKPS*R-&L;!zHh-3XktQ&wzl!4KMI`b2S|7FBiS-34dOp4J9g(P4}&~kt> z;JklzRA?PCS!m1T;a4`TQkQ*M?qHctngg0ek4I96TFoP)$_s)>2AtJJJ>8qpnE^ad z0vxDHim?F^P>GZxsifJz!w|`B9MFHXghqgm4D_8^tyN<>lqr)9aT*=-q=H@&r{aVz z>IvJWh@rA0K4WTz5Wqo-G1CJnPGGTBzfrnZyr%eLFErz#t4K47Qa1YeqOkchhZ(fH zg9t`s+@d@o$TXkX0vMfrLqZtQC9#`Ilz=DVTqoA&&u+gQf%ZT-wJLINUe2N?u z%jBZZ{Se)Oot~|MS=+tc#aNk{MGs%_g;f|=|4!fsaVQ9O&;&Ts+3&fXD>_qVilR1j z)s%=gkwU8KK$PSG-Sz?9jtmOM1VX|U9wJaSAdu6XMWN}vTcY_Lf2$-PIvOvqf?+Y% zmipY<`6jLrB<78qFF7Cn?Gye*N*O@hRrx1`SweK}U)ECBE5r+^(G;;|UzK>S&H90ad^)kvJEiG$*YI z6Lk@n1j(W79ZX8w+uS+dbg9f{g3+$2A{_eQvHjfSf!aqwJR1Jsz?z=dv5*5smH!nB{{>!S%WB{yUf%OXA@-TwKH_1KT7@ocVEff# zWffsR_G31}ikYq1pwS=;V@!;(4f92k^z|YS{+hlmCvTLZpbeaz;p0cai-o=WMwaoXLyDS|1Bf^l@(T!<@HKpZtj;oIu{rn;?N^dVIB;F zKIjEXXoX&AhHhwwerSk}Xo;R^|B9|?i@s=#&S;I^XpUy+V>Ym_s4wyGi)&zpHIPmn zDT5@SK!iHvC`Mm(HkogJ>5r*to4#paR*V|1ve~c?d=?IQo~Yh-)d=XPGpXOubCDwoc?OCrj6>=XYjb6r;c1b0u-a}=dM;9 zm1yd-j_bvVYO9#)VuU`cNG>&4gEk-tbbteN7}o`mRWx*)#M2F~ZY7!yYsPMDdok)4 zF>5Mj&AHx%#vtlT8EdvyY`N}i&yI~iE(qv*zE1)rb#uPahN3iDx zBUIsOJJzYTjwQ$5ZQd4W|7?tGyct|{)+Ea|<)2n-<@lA)UT)@Aj?o_Jo^T-NQw;5S zKjdBDO@psrHT$3lDJ-M{xQsaTE6oYvZa1ssn0Eap!_eHNEbgMeFYP3sdcaw9)-=Du%g8)WHb7AqY(4VrPFKJLqInB>jzpvG>~;86ZfWx~91 zBoA{jA9G?>a))Sg|7tr7)ymdvB^*~d%tb3|DW6PhSf=U3F0pZ2~x|^wIMJ-amT`a(<`n4Y`0oe~S&{0OX(nC6Hcl zZ+M4)_&>Jq|5;!0S%+@77>EB-iX4z~K>?BuAVixh_8(Azrsa;o7?={WcaUEni93mp zkJ@GjBYKYVfREI>Fgb$%g`#d*c{+^?D8V-g_L_onh%b7hKYGOw_s9q|Mo0y3czSs7 z26(7GMCgVVc&Cj=3}TQo|?zIYy}vFuL6+Xjw!$(ALsH;Z~LjJmP`n3 z;@eNeAfYSQamu*~x0nHTj{@g2+KA!#Cy+&%j{+w6R4+n$#&3MbN10^?AqNWP7+{2i zSc8OEgicU926$nP_lpn6syiK10lYWx8Tkhg1yAn@Pct7Xn1Wv<0tmy4_fvQ}9ZeQS2 zjjIsG0O)}Adm$ts?CVhhRgVY~x}LiLBNV3rDxeW$cBRLkfBL6?IS}oJnC>%Y@karO ze*HiR?6>CHwR~&531lFl#0WtVAyRx%@FK>H8v7|(prc7f47W%yD42zXg&`0N!VtJb zr3n)oF|LY(3r5VDI(N>%00fDSOhF_F(Q!+ljSM0NV0_e4;4KvcGCbYc5GRbE3vP*O zm_#EFCO>%8aOpze7ppXpupDv`Yfh-O9;vO1G)mnPbAv!tJEezHr#-~NpwjUNT$~p~ z|A@3Z)4&1-NrzZa;+W&&Dwj8N?(F$9=+L4^lP+!gH0so*I`Zes>It^eHWBX#A z&u#@Gqn9sVLS}37nR{EY7m3n8E^5&@}b87(0U{17AF_Lwzb#LBkSC=#|L>i0Ri)VJi?Y zQcSg65ZZqnr6f=QI^l$Y2p8a_R%DZmSe^+TOaY&DZILE`h(9?-K!X)5kcDhH>bN71 zJ^J_~kUkqbQVpyr99>DfUTXjxTD6k<76z)Bg3phQ=F9a>_k zoe4k#6*x518Gn}!P?eFz8hb3V$tt@nv&}k78j?#Y8Cne07NJWlx&3q3T^$ZA&Gw4Y@FRg@QPtL-?5VB(8F4IKA!XBED+QArT$ zbphD5Vnu3;J4x_bcxUw!9ao|-pn^lted^$76+(%ahiW<}tYa0(6|&ojv7}eoo<(;N z*lNMVHNS}cVDC&BkPR2vqxBT$ubcS|VbPs?{yFHOi#|HgP9min<^q|M&g$kUqf1R8 zZ%nOPcAvSj*H?>-ogk#x78je3K9KeEb0HtS^SIZZ z>$jl3vQSY3xwc0i17ve*otstnp@=>pV$DUXOafxXD}!0md#aZxX8E;1)5c5jfU| zh67_G9-rr#8yaViKKvsf11ZQs<_=6KoZ|w6WJirKkv20)6;h@p#6})1BSo+lEfRsr zyTw71vLhpGxR}RLMsOFVJY^U;L&rk8ON|!vj4yJ4Mpv4!|Aks3O&)aXYm%jWZ zFoP+~VG^^L#ylo6lc~&QGP9Y^d?qxbDa~n8vzYkeKm#h!ffBT!20bW36ROaK zGPI!%ZRRCY3C~3)OAhC}h$A!7q$Fm9l9g1;7Ss?@VXQ)c6J_4e))>J(o)CDZ(PAMF z;Yxqblb;X0DNb{$)1C6Pr#}5DP=hMe7`iifwrb_~R>>pobrhqgTT%)(TEv2QbYS2U zU*`Dggh%+)2i0Bvh`Ss|LKA!C?E?@KnG{jNdm;Ksz{|W zvXR~lXA-3<&LNt!o99I5Y1)X=l*S-RQKHZa^&){|&_a|Fz2{K@sE9<6wXALZENDY3 z+R>8snzYCOAWGqhhWG@mdwtYJ%bBFWc9fhRMQqkMPyrPz;0bW6R{C1A&Cj`FMh?s|w&S3Q`JNuCKJ#y)JgMtKIftMFp>*z$-p6S-keqxIOxwT{5~PsB-kF zjRegz;zl?OP&cv0TTKw+0Sb3uq6@(2YIhXzH~-QCamY=C4%YD&Ld-;yQleTv>JdkL zZnwe~zA%O}?4$0=qQijbf)^(D!yTa)wi-d=|7^wZ7|$r9og>uO(lTqn?g>SLtZ~OH z))9*W_ro4O#>6nDyAxRy7bEnDM?6w7WGkbxlhL=k@gf(p`%W)4_Dx4Yc|oT=dEkQvLO-F&39#95j)6r>T)0o4yEpt8bc zPkckDF$+&qgj58X5dkbnFxD}QT*v|xuqcQa@Bpxb&4OQBR zP%r}08X3l;t9F?w4nr6~zKAbIArMTg!xyfwM=nfyks@GVD7S=)Ca{|Co%6isKJOs~ zYA*Delc#9v1?>IiFj!L&!;jXZ$Ers1~qFsAf_VE`9_zkA?s+~dAjhpo*cm1w|{TB7;wl)ytkMS&IA2kw-= z>RcQY&AH=5ma72y8O4e@@CUhn@9r#eBZzt^f}a-7&0TfEJ!O@uLlOkggc@nD|NZm7 z|C$>-UclSm0bY6V-Fp;Z6m-CD5Q&`~-9{*%0WpA|1rGE@-|}G02VfJmP+JB86!)Q@ zKgkj>td>Be!u$Q#QI%3Zxz;Qt*ZiqeL5QIL%^(fd;Ql2{*C32T5Wx;QL_x4#L-^p( zKp=!9Y`VvkX^;6>nH6S7g+nIV{+BRZy|I<6x-wxc_K z8FRhDT&YQK1%bv~{}3Z;U|l3$YVgB0Yy&lr10_U46~Tn=yi~D-;t-sIE3}=LjNMlG zVF-KzHZIr~FoG<&f&%qo8W!U_ek4eSq)3h=NtUEZ{((RcLP?ofc}Naw$(KIn$TWJ! z(xFByNSHvdf&)M!7Qv516oG+_9mKV5tV(XkNzl-vW9*V9fuqsS9<7& z9+rqc|5atKhTeFIc;RJq0=)$(nx?6m zdWOvipx^PPZ@Hw)P-)c3CTM`uXfy*p@B=^K!vs!5W@%l0ZrBN-LR@ad=6Ohi36C*! zLUSePnntRmPU^t%n@JSu$Y=~x2^W&?V_>zHY3Kt#=##tT(CoxtcX)^TAeHcxLM{*j zk4~tp&MK|es;%CtI%))-RLrl{oRK;m)P+)~I>x8U;Rw_c4uv3uabv2U5vdwa9z9q@ z$`PejtF;=YQmzdJK9TCNQhmlGHw9-#DIJQnhBjD&pBX3N^iWmYVOepN^SI)*&MUpz z|0cB>$*@WzjxN>?k)wiMR=ozSzz*!P*lDp`34mB27x@q#%^kr$EX3BUyCM`dqQfkp zgM3`jy0YuN{wtkEEXane$i^#cG*O9KjVLi}b@c-$*u==bEX>C2eQM8-t=ae3#H+D!dVmVLhOpsnS*01mjAFK(K=f*aXullYp`?jz9jwI0y+vEbCU0HzkZm$uE#-B9=KClB{@?s)_(rFBz765@1=2V{% z5c<+m>o%|hTi0=jSps$dn^~@#8rz!j)&}4#H6b2}%Hd?Sg9z(`KC}ZysKcD5tZKN; zYaTF8fo~u_unf;ITWxIb(eGfSLA$u#dBK*7oh|f50SV8d|?kCc) z6F+ev*;t+IDw(~<JQI&hbjN-Uc9tek(v;i2Hfgra+!iZcNhwnWhaoWOg4BsYK@sk`+ zG9?pF4&51N1gF_J!!;;e{t5&$Xu%SCtQjkEWCgE7F>yC`Xe47{CBHH(myb3D&gh7X zk{VXlrdM6~F-Adx8(1<23$Oc>vKhP8dcra?BXi}5jx8S_AMdg=V1ytuLlBZ@@*X4) zDHf_i5Wa3vGJi81YakHL5B{14*(O5Pwt*X{!8~BZEefqEy$o0c3*aIs# z>q)&E0|T^3%W>RHmUH~zkN}|t8_PV5Q%CTEEk=|EJoFjYO|}|y8X*|UU4$#RMn(5R zg+5``jxN{Yf-(t zC>EH+H2jPsVDJY}fH|>eBpp#;I|kYAPZt0yMqENFm|(2F#`(;lvHo(I7b4>;+I8hnNH}}`q}rUwVXg)8b-jvIdtAu>A)J)fGGGk7i#Q)x46&Ri-8w- za~#j1*fq0oH-mfkcOze(1r`yhmy&V~rnW;QnDF(j|CRELowt2eC}2Wm3q&Z4LZy9P zImm(u+Guj~PJoz8_BBP$^@DViqKl9D&yoq5U_@%e8!xQ+Of$8bVZaI?4P|bwdr2l+ zSkgJ~llkfr@c2STjsk#k3HU)pqd}LH96A)$bMd;e*RTy!-GU}OfjSfeFm5%OU;4n7 zgN$qXG;q3%lK}-3gH*4%G`39;9HAaVA_U^;IN7;#5M@Rbc_a{nsB45Z+nR@$!W@<>(y3y3Hv05CJckRVmh>6t6c8~S{S%Suz862^8;b1osf$@^=-ul&5;HJNC7y?lg#$o#dxq|M(v&M$QqVFZUiqV4vT#hVSr z{G&E(L(%_Z$CL3!AcDxppiz;$6V4FJPrbC8HX4wL4pe*AYyFL8M9zP`&ChI8ReUZZ zT&f3s#B}^c5Q83=dvO#*t~>qHL-00Jz1=(U^;&^X#1#hc{m?160OCC2fIZm$BE114KW80x=CVDDYQ_7Y7+ObodZrM2QnAR&>~_*T7T* z3r*^1qN7ETBT1Gtc@kwxl`C1cbomlyOqnxj*0gyOXHK0vb$awU31OEXtAr8_RH2BA zpCEVbnz$5XOc+cJMl~2rPF8_xeuM2QYk*hIl#v0S(0^7FvM=o@k&F1M{t^O(pIHdY3B4&jR5s zs-m@@SCUE~h8@cw2p%?dfa^=gJH+TLVdUWa2 zUCx~=aMM}rD|$TPuHuJh7#FRV&uLZQJkwd(r<~HTh-*g=t_i$$4V%IEx)qi`PCYT> z{sWM}0u4M6!2}gtkinhGQv^Z?1>)cj70l`Y!wfReYq*B|v+leO4?2xR)=+xypkctG zg_k)P!sZ%g9w_1h{`$KS#}XQ}tN#|LcKi{@AcY)~$RdqgsWGuU3E~wmipXukD6GIB ziV26<>@f7;DNTv?R+7WRu|6>fMr_QyW}5v-$dOGQk9=uN-Y8!5%*Z z=2R?&tA(K|wvvgLgK%&N%^~De2(&ysN`;%SaOsrPV1*r)*kX+ZZL?$rMQFM440;DA zTgf~KMi~XN@y3_vyt9D;A93o~aK#;$+;Tn5Y|wN?Os+$3#>r=(5><2Q$yXhku?uYb z({^1vUue_ZfCV0y;DV(~sQ=A$p-a?K)GW$_Bxwc8&!H|jj47G~GTxYDja%wiZqljn(C^pz8dSSwceWRuD$*m?6Acio9wd9zItb*ugxty2l9Q5fy?HcJIPd2 z?Ma|yl35|%E-MnlUW*tIXpL5(6wOV8`}zi)#&xb4C2(w3Zt|clqS+zI2LcD7Xd3?< zbj~3kIcb(Mmi&Z=LSLQr)?I%c_Sj{go%Y&oza977b>E%$-hKZa_~3;fp7`R8hdqIP zIht$(8W-S>Z%*r;-v93FqW#tvwkVj!AQLA7JT;L-xvYyIo-jzVYuD_n?Uqn~A9ILO z?wEehPrtuqgW%7YupRo_p$81vkmV|NB`Q1w2p6cu1x^x!1Z;o?5JVpZI#2?M^+QAy zEDIDe76l4ca3CKDf=32I1Eq*!0Z~w3^7Imfq?j;-D7Z!aY7qnt4bVbN6W~E22%Z;Y zAPDK}3;{UuK!pH7aY`SsSSgc$e)Kuv6(v3af*MOqlf5s(`|^;jw!J*nkk?Rf0urQVtXpLXCKMr6VdK z3Lc@s6f)4GAU6d)iF0Yv1N{TRRuco>EbjHm_^D9b=*g~6?a zQ6em`DF5PM;Di()vGnHy=VxDx@F<5<#j#u-T9UAmj|>(JBI3 z;1C;J3jzp;f=`DahFB8PiV4%}UisQrzy1}lffejv30qjh9u~2QRqSFJ+gQgw7P66* zY?8t>5MQhUP?kKHAPfhXW=yeOJi5gI9-tu+TxL}k=@-kKWm6LxQYAeQz(-l&gO~QB z0$b565vDQ#0jLl=BH_U!CWFx83gQPMut5dpB7vypc0zpMfGC78qaRckw)zR~MV2~L zfn=An9D#riG|N;8Ou-4|g~(h>xY|cj55Do0?|kW7U;Ew{zxmbge)-#9|Na-i0T%Fp z3IAMR10NW{28IZPptu2u=utV=>&G~t7r904CS`OWV-$0}q&i5S*};LbHv=`ia7*b2EUXp3p16RaJGFmlhyV0p_CYfucaW-_3#yajH^lUmM%m*7ml!-ED7w8{FX*_qfSj zZgZa--RV~My4l@scfT9n;FjMlV3P!5H%B3Y7D$D|7r2*yvW2o=If$APA#wbRkI zzNS2rKOw9n-?Btor574+){Rp^q4=#5YLEbwA>$7T?**@Y@M@R*;ucSNXcDffM@v92 zOg$A7Xgw@o-=f^ZJ@4F5fsNW#no zs&OA?41^gml0qVC^sn23YU&u*$%|Ej*sd$S9}+Wr#95+PwO=0dnP*ooOp001HmahE zAz>bAboVZ)#sEcE$q)cujlef#@I@>*UOtt0%I4(ZEx|8J_`0daSAE3U(){p=U;IPT zNERN@PS5cj-ncjH)PD&R+^!(4QMhrX* zNEEcdAn&%P9`297aAl4lTZnlkO`a637-%OqfiRLF9Hq% zq4H|J0)qud>Bb&{|8!|0>O~Y9f(~YZ4%iAT_@jjQ>?Sk=h(0RPL{A8ZQ2eCg5mI3k zP=OJQ!%ik^3jYug15pqMkq`?p5bbPk9!$PMq&z-gQBZ{F91b?HgGoN%Z3xefbV8FJ zp#!pjrS9tiO^gwzXBb=o6pDlWQc)FGkrnx?2#8`8h5@s>tJ3U7@9e7~P$T*r?z?ob z7sY}`_J}4d?gNTx0Ze7TLXmou(E$fS7kr_53{e`Vks7Pf8vm~m8?(^@u|pPC;1h%* z2qI#~qH(ntOEV@g5>sQv+K?#72)Dwi1uP&F0^reZF&s&6*UF6ANs{jbXYE7qD%(Dh96>P`O>HNJju$-7qBP6p8YoGcAeNlPm>4p@_7NR@ z&>#CD2#jG5N24HH(j{NA<_;1#_N){Xp#YF#!4?cD;>MNA4i_JSMEYVL2w^|ihWm8y zmHg*~@{zwtvKjl4A3*`^V3I1U(kh1q{Hmmc7zrg00s*>i>?CqTZmbUeFDCK<9wvy| z3Z*(kAqjkLDq!mhxo#9s5-O?36ieSvXD~tFt64Pr|B#L&)OrzSBSt6hRfRiX37Xd|?=L!6IUz98Q5kDKr+c zz!f&(6dD2+wsR!d!a*OjK}Xa<9aMTAX8)?=jQ^ydOBTT#(jhGgX&4c#G)>@wsw13W ztm42WL3`9ke-uZNLnJoA6;44zjkH3M^hhc6NV&ij4#GpFaz^O}MRkuxQh*usA?qSA zNDr(=Zxks7RMUWzOv}_v&+jBgp(Hl6A7CLE3_@@8rWoRsPV3Z8@03ojjwQtk40X>S z?tu>U;T|Z#Ox8dcFeRh{6hI?Tz`nEy*CpsgZuHKSQY*DmhwvcSf)O-TQyIZi8DTPD zp&Vji6tbWk&H)+Jv`r)8O&L^0hGA1bwNpD4RylQ3=S~w)<%-1WsK_!!0gw&Wpi=r_ zSP7~Nx}_ocC9)jV4%GzK@vpPAdtZrK*3v4 z0c4HAp%wuVf}sD4XXWH% zbhB4`*RL_$BxgCci>#GhMX?q}*lTkFh=UlVhS=?l_=tlvyQT`n z25EttIC_0@BaandvDlFxxnM|fcPAND4&k7Np^R2!EV`JEf$>$Lks&ZSMPQSXCs`NJ z#gzYcDt|X3kYJBR!vXTf0cgSVU<-MpwkB9$+6MWM?eZYF6lHw(TEY{Oi`kgVB_gQ~ zX+-iM5$RdQ6PjgHn*VQr4ppI#{so&;Vh*->ta5RWF=HV5pwhs?oYd$GQmFh8xq%gV z*iQ7A-x;2TC7Bgf`v7U?@+b}zBA@4(pFiZ9wN0DDV4L&xn~m$5%E1FRQR`SLCpJlp zY2f?R`Int@B$A{Ub~Jh8S)(`FU;6pZmoZznl}g~x-lKo0X=kZIU1;g+DQ1>3a1zro%V1XGMY`AsqaSUR@w{8vj4si z4}3VG{MR>%79$F7?-CYQLIt3mSVz@oq-zm%g&M8X8c56zSRP`}ilB9;1fq3{A@-T1 zJ-Vqm^I;>gs{dK~sHz&UOT?A0+MqdeK#$d{MJ22gnU@d|J6Bn)BU`d1P(-k~t-nGj zqUp94+Oe(K+&=f3u@@rx+O4FToBKwv3tA~S=6!M?vj91p!5aLOR;_yXCv00Ab6dA} zo40%0w}1NyPa=nZwtZu`xCMe{Z=x*%MVLzh2kLWwqkB;b8fi`d8m$|-+QzHTIusXU zvDaAPs!HZSXYz3*GS^P9c#yT0=>8T|W& zeMMnwV!8?2c!#0|5bA8-?y|ePm#xz=<3Pgg8UoGR!Y{l)tU@e4btFciRL$3JJv<_E z;ZtF?#Q#qm#ZSCbJNtXwW3Z1%!2>wKV;r#?Tt6r8{$^Ww0}{h~+{fjRhHJQnZI;MC zL1T%uB6jX72I3T6SS{LhW23xXiTt?LLM@Vk5t3m}^%N%-MTdV-IW?gX^y3F$dxsSi z$8(&4Z_%lL+|Az{F#dC9jlme^yc1Yr9Ngs~W_Er1+|U2K&%gB{w3^4i#LLP2z^kko zK(7d(pq#k-dRAr4BRmd3dspEc(=)v~lOfR8x6VHueH&thN8O=fc7+`x&o8qd(pP=! z9ME6g&sn`?=WZCNnFzZNs~&p#2Du3$7t);NySMZp+0xk$9^t#MwPd~8r`_7QebialAQmAQ zVwU0&!P^l*;tygGvLP6xf#Rhh7+77_9p2N?m(L9%)PFiK^g&P$f*&l|Mkt)v9XJjn z7SJRXOi%9C6W-^4{uX(mzC~7K`@2ZP^(tV&P2*c2f`RGV)ajib7B;>g7)BtxVdJrW z5ln$*Pr(>I78y*zAijPe##ijg`nLaq9n^s#?m-~%0pOZz#?zelGHTcvP~df(0{@R4 z==FJBjOK~JNuFPgzH z1;XX^fgeUcb5*DeQt0ERNG9Bp2T%)(bUv6NPa9}nQUBidZ{OIV)tiJVJr`+qDN%OM zM~E{cR}(=KPI;_3B3GCH5OS5lCzX8|f*(SkAMimPG-0B0BLJ2&NYMxeykqlVUpNmU z66z86&;R@_n|JkHa1)b^*HfpmfHHb+jLASZ5ds*Bw)s0^{{iC0jY9(qkudmzpu$4^ z8sZ|@LQpSY5*u2)h%uwajT|w?Xm(K_Mt%etlsE~aqso;IOZ)(G%LI&CEdOiTyqWQ2 zOPM@-;*{7^W}HYCU? zmZGmj$%1TpyQ%G_QxuZ5m0NdH-HnMnUL2+iSm42Bb!j|QHZjFVKuwJG$PS-Hej+X6 zQ>Tf6!yi;=T)-MM`fk>fpwfCZ zB-Mx}^AT9!0-sssSWyo4hZ<`d30Pi%t66DbmtKAeW|(4*NoJW`F@k2AY3jlVRfAjt zXD)K;l8c&l-ic?PXb!O>Fd5CW2#|u>)Si1n)}&-j2~C1a5kY7MPFnI>3qn3& zRE0%?;-S=gOLi1TX07V@Y77{3@q(%RiDqDE0ScI{w$^?NZvVLAj!SO2WBtldr!n~H zE068wP^((+-h^(w+@5yPJ%K7E#*rJzanpDGwCXGcR=CAW43GJTTc!VPi>hM6a%pbG z7GI2U#u|hAOUE8h(waf-eoV4Qz@o~jYA64)(@Z`3SR_Y85*wf>R5%jEDe6d~^C=f- z5@r@#`79I*U&EdR0?;Sk13bMJJwP3m+fGI$iM z(5Y7}{DAM$*j6c1(!&hG^{|*P&wTUFKmTQvG5y+QR*?5Z5DaJK!UtRjDGz!CET91oh`^|9ZwN)O z$R8AOsfJ`gf+{e{|Lz60Dm`UOMl+2jC_pp0`RgKcC}H|kk^vW-B!w%$6XXWRrTNe) zWvL<_`-sX^s&bVU`Xl82;0aHFkcV|k8*C6MJMp)~`gQ>V z#bAPU>&neOpo0|vuZMCxnk`w0&1`COo5CYr8a=@aaPlG}Z>$Y233Vu@OaTc(K!GG% zs1ivy1ZNo7TPRP3DHRgHhI5?F98cM~RS1C@=g<{54~o!)Dikz8)JOz2!AU040C6$F zi7u0M5qGXoj1AF+Iu?NuW9lL^8BhTkB>xDsuW=<Zh8d#Dy1_Xs?Cp zbf-M+X+E*nF)!#(qBL;JZqCV)i#{ciE8L7GgsBdUbVD7-w3$HGHLt{Gvkfd;KdqM+QgznEVo_akJlR?=i`mTb5hxN2Ko2gG1S6y&2{;P?6A_SvOxS`2 zrUYtN71vs^dgZQpy;7n!1J7EPW??G3#j_M}N8DZzduGL6L#V(~bXg*~miXKNH4EM7 zN|$+@#mH(?n}$|kAP5bK0vaXzTL0G?H?|<_%KGw2pOT6Pw{JYkZugU_70iG=8I_?5 z?h6Dc0%15B=&yhOtKX6e7{CO^?*=583@BFixzla1gCDH1UEQ=FaUEJ2g5Zcj-j{;p zU73en+gJu;<-9C`fQjF5Tv{|_1S~#^C^?srHY|s`L@nw9Yz*3i>3GM+p|M+j>|-7i zwZ=`f!X0G`;Up`0$)-{jXo*UI9bRO2QXbfm#fxRLg&3exA+b%cagFZUEU~oVazoT$ z5qXef8P{#1!B|q{`pLO|+l{lG-F)Xcn-)Y*AS&sQTot7)MZ{I?O?V4y6ZZnz%$1cC zN|+4kNOy%zYiWpd&~OnpjQ=7!4Z(tR%E7m_i25v~9<`}Ujp|eTA~5@VO>JY$3}%>N zY_4kYqsz?beq4hb7qJBs-@KAM7rD-Q*0aHiT|eHbgbaU1G;Cg)Xu1lpX*GqdixbV7 z2#!qB-0t>NieVSK949*CCby-dbGlgY3>mS|3b@0a42#%B+oO5)MJS<>BVP5O0h~VmcdwH+EbO^O(o{<>7v}T{e*Nhuj7m8`1ZQ`5kDc+_f~A>$W&A}h(f^qgbWT>fV0uBE)*B3swr{9)*;+m7ATPVwHPXG}n5KKcAaxNK zp^GB0Y3{jTQyKfwJxc3+7-dWQs%bF{1q5E_wZQ>4n4u`&DWL)#t_277&0=hT;~Sma zNPeKKk%Jqj$HBHV!ux@2T!j6#HgULf#V(TpmzOjtj^TzKSb=ihA_IZ7_}Bz|ofhUd zng4mxJfGM*r5TuTCc`i6YxlpaJJ7elfB2!F5B=y%fBMv~zV)w<{p@Rh``quo_rDMR z@QZ)^q}MI2$_2>f0hDGqd^B3u?Eb51gd~oAQ*HF5e7Z5H4Wh}{>B=a zU^61XOtn%h8xaZG000(oY?e1mptpe=xQ89c5kIy9!2k=3fC+PkQxivp83Z<`!X>%~ z6&-L~DQJTnFnkQq0Uc0#wg-EFCJH@he5Sz{GVzHHRC%I^DYUmn$9D@;N+Xi@V5+z37X-2#nU(1zE>6Flda7h>W$!AN1EqRpCVzfp{0Oe`C{s z<--9;Rs#hvZ3d_XNDu{z#EIozs3Q zbw$*cgNdgRn%DuvXL>EeAHGphrZ|blNR4�e@437oap7=a2zngs)fuG;u9f2aBzj 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

?Uv0K*hkv4(k~7(wuHG4sPRtOUUWs1;E3 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 z

    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