@colbymchenry/codegraph-win32-arm64 1.2.0 → 1.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/dist/bin/codegraph.d.ts +1 -1
- package/lib/dist/bin/codegraph.d.ts.map +1 -1
- package/lib/dist/bin/codegraph.js +232 -61
- package/lib/dist/bin/codegraph.js.map +1 -1
- package/lib/dist/bin/command-supervision.d.ts.map +1 -1
- package/lib/dist/bin/command-supervision.js +4 -1
- package/lib/dist/bin/command-supervision.js.map +1 -1
- package/lib/dist/db/index.d.ts +17 -5
- package/lib/dist/db/index.d.ts.map +1 -1
- package/lib/dist/db/index.js +68 -12
- package/lib/dist/db/index.js.map +1 -1
- package/lib/dist/db/migrations.d.ts +1 -1
- package/lib/dist/db/migrations.d.ts.map +1 -1
- package/lib/dist/db/migrations.js +19 -1
- package/lib/dist/db/migrations.js.map +1 -1
- package/lib/dist/db/queries.d.ts +76 -1
- package/lib/dist/db/queries.d.ts.map +1 -1
- package/lib/dist/db/queries.js +180 -0
- package/lib/dist/db/queries.js.map +1 -1
- package/lib/dist/db/schema.sql +19 -0
- package/lib/dist/directory.d.ts +9 -5
- package/lib/dist/directory.d.ts.map +1 -1
- package/lib/dist/directory.js +210 -19
- package/lib/dist/directory.js.map +1 -1
- package/lib/dist/extraction/cfml-extractor.d.ts +107 -0
- package/lib/dist/extraction/cfml-extractor.d.ts.map +1 -0
- package/lib/dist/extraction/cfml-extractor.js +494 -0
- package/lib/dist/extraction/cfml-extractor.js.map +1 -0
- package/lib/dist/extraction/grammars.d.ts +9 -0
- package/lib/dist/extraction/grammars.d.ts.map +1 -1
- package/lib/dist/extraction/grammars.js +115 -3
- package/lib/dist/extraction/grammars.js.map +1 -1
- package/lib/dist/extraction/index.d.ts +46 -1
- package/lib/dist/extraction/index.d.ts.map +1 -1
- package/lib/dist/extraction/index.js +338 -34
- package/lib/dist/extraction/index.js.map +1 -1
- package/lib/dist/extraction/languages/arkts.d.ts +3 -0
- package/lib/dist/extraction/languages/arkts.d.ts.map +1 -0
- package/lib/dist/extraction/languages/arkts.js +127 -0
- package/lib/dist/extraction/languages/arkts.js.map +1 -0
- package/lib/dist/extraction/languages/c-cpp.d.ts +42 -0
- package/lib/dist/extraction/languages/c-cpp.d.ts.map +1 -1
- package/lib/dist/extraction/languages/c-cpp.js +369 -4
- package/lib/dist/extraction/languages/c-cpp.js.map +1 -1
- package/lib/dist/extraction/languages/cfquery.d.ts +12 -0
- package/lib/dist/extraction/languages/cfquery.d.ts.map +1 -0
- package/lib/dist/extraction/languages/cfquery.js +28 -0
- package/lib/dist/extraction/languages/cfquery.js.map +1 -0
- package/lib/dist/extraction/languages/cfscript.d.ts +3 -0
- package/lib/dist/extraction/languages/cfscript.d.ts.map +1 -0
- package/lib/dist/extraction/languages/cfscript.js +73 -0
- package/lib/dist/extraction/languages/cfscript.js.map +1 -0
- package/lib/dist/extraction/languages/cobol.d.ts +33 -0
- package/lib/dist/extraction/languages/cobol.d.ts.map +1 -0
- package/lib/dist/extraction/languages/cobol.js +499 -0
- package/lib/dist/extraction/languages/cobol.js.map +1 -0
- package/lib/dist/extraction/languages/erlang.d.ts +3 -0
- package/lib/dist/extraction/languages/erlang.d.ts.map +1 -0
- package/lib/dist/extraction/languages/erlang.js +350 -0
- package/lib/dist/extraction/languages/erlang.js.map +1 -0
- package/lib/dist/extraction/languages/index.d.ts.map +1 -1
- package/lib/dist/extraction/languages/index.js +18 -0
- package/lib/dist/extraction/languages/index.js.map +1 -1
- package/lib/dist/extraction/languages/nix.d.ts +3 -0
- package/lib/dist/extraction/languages/nix.d.ts.map +1 -0
- package/lib/dist/extraction/languages/nix.js +294 -0
- package/lib/dist/extraction/languages/nix.js.map +1 -0
- package/lib/dist/extraction/languages/solidity.d.ts +3 -0
- package/lib/dist/extraction/languages/solidity.d.ts.map +1 -0
- package/lib/dist/extraction/languages/solidity.js +293 -0
- package/lib/dist/extraction/languages/solidity.js.map +1 -0
- package/lib/dist/extraction/languages/terraform.d.ts +3 -0
- package/lib/dist/extraction/languages/terraform.d.ts.map +1 -0
- package/lib/dist/extraction/languages/terraform.js +641 -0
- package/lib/dist/extraction/languages/terraform.js.map +1 -0
- package/lib/dist/extraction/languages/vbnet.d.ts +11 -0
- package/lib/dist/extraction/languages/vbnet.d.ts.map +1 -0
- package/lib/dist/extraction/languages/vbnet.js +141 -0
- package/lib/dist/extraction/languages/vbnet.js.map +1 -0
- package/lib/dist/extraction/mybatis-extractor.d.ts +30 -10
- package/lib/dist/extraction/mybatis-extractor.d.ts.map +1 -1
- package/lib/dist/extraction/mybatis-extractor.js +140 -38
- package/lib/dist/extraction/mybatis-extractor.js.map +1 -1
- package/lib/dist/extraction/tree-sitter-helpers.d.ts.map +1 -1
- package/lib/dist/extraction/tree-sitter-helpers.js +1 -0
- package/lib/dist/extraction/tree-sitter-helpers.js.map +1 -1
- package/lib/dist/extraction/tree-sitter-types.d.ts +3 -1
- package/lib/dist/extraction/tree-sitter-types.d.ts.map +1 -1
- package/lib/dist/extraction/tree-sitter.d.ts +38 -0
- package/lib/dist/extraction/tree-sitter.d.ts.map +1 -1
- package/lib/dist/extraction/tree-sitter.js +753 -10
- package/lib/dist/extraction/tree-sitter.js.map +1 -1
- package/lib/dist/extraction/wasm/tree-sitter-arkts.wasm +0 -0
- package/lib/dist/extraction/wasm/tree-sitter-cfml.wasm +0 -0
- package/lib/dist/extraction/wasm/tree-sitter-cfquery.wasm +0 -0
- package/lib/dist/extraction/wasm/tree-sitter-cfscript.wasm +0 -0
- package/lib/dist/extraction/wasm/tree-sitter-cobol.wasm +0 -0
- package/lib/dist/extraction/wasm/tree-sitter-erlang.wasm +0 -0
- package/lib/dist/extraction/wasm/tree-sitter-nix.wasm +0 -0
- package/lib/dist/extraction/wasm/tree-sitter-terraform.wasm +0 -0
- package/lib/dist/extraction/wasm/tree-sitter-vbnet.wasm +0 -0
- package/lib/dist/index.d.ts +63 -1
- package/lib/dist/index.d.ts.map +1 -1
- package/lib/dist/index.js +327 -5
- package/lib/dist/index.js.map +1 -1
- package/lib/dist/installer/index.d.ts.map +1 -1
- package/lib/dist/installer/index.js +3 -1
- package/lib/dist/installer/index.js.map +1 -1
- package/lib/dist/mcp/daemon.d.ts +25 -3
- package/lib/dist/mcp/daemon.d.ts.map +1 -1
- package/lib/dist/mcp/daemon.js +62 -8
- package/lib/dist/mcp/daemon.js.map +1 -1
- package/lib/dist/mcp/dynamic-boundaries.d.ts.map +1 -1
- package/lib/dist/mcp/dynamic-boundaries.js +2 -1
- package/lib/dist/mcp/dynamic-boundaries.js.map +1 -1
- package/lib/dist/mcp/early-ppid.d.ts +26 -0
- package/lib/dist/mcp/early-ppid.d.ts.map +1 -0
- package/lib/dist/mcp/early-ppid.js +29 -0
- package/lib/dist/mcp/early-ppid.js.map +1 -0
- package/lib/dist/mcp/index.d.ts.map +1 -1
- package/lib/dist/mcp/index.js +21 -4
- package/lib/dist/mcp/index.js.map +1 -1
- package/lib/dist/mcp/proxy.d.ts.map +1 -1
- package/lib/dist/mcp/proxy.js +29 -3
- package/lib/dist/mcp/proxy.js.map +1 -1
- package/lib/dist/mcp/query-pool.d.ts +14 -0
- package/lib/dist/mcp/query-pool.d.ts.map +1 -1
- package/lib/dist/mcp/query-pool.js +18 -0
- package/lib/dist/mcp/query-pool.js.map +1 -1
- package/lib/dist/mcp/session.d.ts.map +1 -1
- package/lib/dist/mcp/session.js +6 -0
- package/lib/dist/mcp/session.js.map +1 -1
- package/lib/dist/mcp/startup-handshake.d.ts +44 -0
- package/lib/dist/mcp/startup-handshake.d.ts.map +1 -0
- package/lib/dist/mcp/startup-handshake.js +73 -0
- package/lib/dist/mcp/startup-handshake.js.map +1 -0
- package/lib/dist/mcp/tools.d.ts +22 -0
- package/lib/dist/mcp/tools.d.ts.map +1 -1
- package/lib/dist/mcp/tools.js +88 -18
- package/lib/dist/mcp/tools.js.map +1 -1
- package/lib/dist/mcp/transport.d.ts.map +1 -1
- package/lib/dist/mcp/transport.js +18 -0
- package/lib/dist/mcp/transport.js.map +1 -1
- package/lib/dist/project-config.d.ts +38 -0
- package/lib/dist/project-config.d.ts.map +1 -1
- package/lib/dist/project-config.js +101 -2
- package/lib/dist/project-config.js.map +1 -1
- package/lib/dist/resolution/c-fnptr-synthesizer.d.ts +2 -1
- package/lib/dist/resolution/c-fnptr-synthesizer.d.ts.map +1 -1
- package/lib/dist/resolution/c-fnptr-synthesizer.js +170 -146
- package/lib/dist/resolution/c-fnptr-synthesizer.js.map +1 -1
- package/lib/dist/resolution/callback-synthesizer.d.ts.map +1 -1
- package/lib/dist/resolution/callback-synthesizer.js +982 -81
- package/lib/dist/resolution/callback-synthesizer.js.map +1 -1
- package/lib/dist/resolution/frameworks/cics.d.ts +20 -0
- package/lib/dist/resolution/frameworks/cics.d.ts.map +1 -0
- package/lib/dist/resolution/frameworks/cics.js +90 -0
- package/lib/dist/resolution/frameworks/cics.js.map +1 -0
- package/lib/dist/resolution/frameworks/index.d.ts.map +1 -1
- package/lib/dist/resolution/frameworks/index.js +6 -0
- package/lib/dist/resolution/frameworks/index.js.map +1 -1
- package/lib/dist/resolution/frameworks/java.d.ts.map +1 -1
- package/lib/dist/resolution/frameworks/java.js +14 -6
- package/lib/dist/resolution/frameworks/java.js.map +1 -1
- package/lib/dist/resolution/frameworks/terraform.d.ts +38 -0
- package/lib/dist/resolution/frameworks/terraform.d.ts.map +1 -0
- package/lib/dist/resolution/frameworks/terraform.js +277 -0
- package/lib/dist/resolution/frameworks/terraform.js.map +1 -0
- package/lib/dist/resolution/goframe-synthesizer.d.ts +2 -1
- package/lib/dist/resolution/goframe-synthesizer.d.ts.map +1 -1
- package/lib/dist/resolution/goframe-synthesizer.js +8 -3
- package/lib/dist/resolution/goframe-synthesizer.js.map +1 -1
- package/lib/dist/resolution/import-resolver.d.ts +7 -0
- package/lib/dist/resolution/import-resolver.d.ts.map +1 -1
- package/lib/dist/resolution/import-resolver.js +129 -4
- package/lib/dist/resolution/import-resolver.js.map +1 -1
- package/lib/dist/resolution/index.d.ts +49 -6
- package/lib/dist/resolution/index.d.ts.map +1 -1
- package/lib/dist/resolution/index.js +342 -65
- package/lib/dist/resolution/index.js.map +1 -1
- package/lib/dist/resolution/name-matcher.d.ts +0 -3
- package/lib/dist/resolution/name-matcher.d.ts.map +1 -1
- package/lib/dist/resolution/name-matcher.js +225 -33
- package/lib/dist/resolution/name-matcher.js.map +1 -1
- package/lib/dist/resolution/strip-comments.d.ts +1 -1
- package/lib/dist/resolution/strip-comments.d.ts.map +1 -1
- package/lib/dist/resolution/strip-comments.js +49 -0
- package/lib/dist/resolution/strip-comments.js.map +1 -1
- package/lib/dist/resolution/types.d.ts +29 -0
- package/lib/dist/resolution/types.d.ts.map +1 -1
- package/lib/dist/resolution/workspace-packages.d.ts +10 -0
- package/lib/dist/resolution/workspace-packages.d.ts.map +1 -1
- package/lib/dist/resolution/workspace-packages.js +142 -4
- package/lib/dist/resolution/workspace-packages.js.map +1 -1
- package/lib/dist/search/identifier-segments.d.ts +60 -0
- package/lib/dist/search/identifier-segments.d.ts.map +1 -0
- package/lib/dist/search/identifier-segments.js +176 -0
- package/lib/dist/search/identifier-segments.js.map +1 -0
- package/lib/dist/sync/git-hooks.d.ts.map +1 -1
- package/lib/dist/sync/git-hooks.js +2 -0
- package/lib/dist/sync/git-hooks.js.map +1 -1
- package/lib/dist/sync/watcher.d.ts +10 -5
- package/lib/dist/sync/watcher.d.ts.map +1 -1
- package/lib/dist/sync/watcher.js +51 -14
- package/lib/dist/sync/watcher.js.map +1 -1
- package/lib/dist/sync/worktree.d.ts.map +1 -1
- package/lib/dist/sync/worktree.js +5 -0
- package/lib/dist/sync/worktree.js.map +1 -1
- package/lib/dist/types.d.ts +19 -1
- package/lib/dist/types.d.ts.map +1 -1
- package/lib/dist/types.js +10 -0
- package/lib/dist/types.js.map +1 -1
- package/lib/node_modules/.package-lock.json +1 -1
- package/lib/package.json +1 -1
- package/package.json +1 -1
- package/lib/dist/reasoning/config.d.ts +0 -45
- package/lib/dist/reasoning/config.d.ts.map +0 -1
- package/lib/dist/reasoning/config.js +0 -171
- package/lib/dist/reasoning/config.js.map +0 -1
- package/lib/dist/reasoning/credentials.d.ts +0 -5
- package/lib/dist/reasoning/credentials.d.ts.map +0 -1
- package/lib/dist/reasoning/credentials.js +0 -83
- package/lib/dist/reasoning/credentials.js.map +0 -1
- package/lib/dist/reasoning/login.d.ts +0 -21
- package/lib/dist/reasoning/login.d.ts.map +0 -1
- package/lib/dist/reasoning/login.js +0 -85
- package/lib/dist/reasoning/login.js.map +0 -1
- package/lib/dist/reasoning/reasoner.d.ts +0 -43
- package/lib/dist/reasoning/reasoner.d.ts.map +0 -1
- package/lib/dist/reasoning/reasoner.js +0 -308
- package/lib/dist/reasoning/reasoner.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cobol.d.ts","sourceRoot":"","sources":["../../../src/extraction/languages/cobol.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAIH,OAAO,KAAK,EAAoB,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAgZhF,eAAO,MAAM,cAAc,EAAE,iBA6F5B,CAAC"}
|
|
@@ -0,0 +1,499 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* COBOL Language Extractor
|
|
4
|
+
*
|
|
5
|
+
* COBOL's AST (vendored, patched build of yutaro-sakamoto/tree-sitter-cobol)
|
|
6
|
+
* is fundamentally different from block-structured languages, so extraction
|
|
7
|
+
* runs almost entirely through the custom visitNode hook (the Pascal pattern):
|
|
8
|
+
*
|
|
9
|
+
* - A program (PROGRAM-ID) becomes a `module` node.
|
|
10
|
+
* - PROCEDURE DIVISION sections and paragraphs become `function` nodes. The
|
|
11
|
+
* grammar emits them FLAT — a section_header/paragraph_header followed by
|
|
12
|
+
* sibling statements — so extents are reconstructed here: a paragraph runs
|
|
13
|
+
* from its header to the next header, a section to the next section header.
|
|
14
|
+
* - PERFORM (including THRU ranges), GO TO, and CALL 'literal' become `calls`
|
|
15
|
+
* references. A dynamic CALL through a data name is skipped — announce,
|
|
16
|
+
* don't guess. EXEC CICS LINK/XCTL PROGRAM('X') with a literal target also
|
|
17
|
+
* becomes a `calls` reference; EXEC SQL INCLUDE X becomes an `imports`
|
|
18
|
+
* reference (DB2's COPY).
|
|
19
|
+
* - COPY statements become `import` nodes + `imports` references.
|
|
20
|
+
* - DATA DIVISION entries become `variable` (01/77 levels), `field` (nested
|
|
21
|
+
* levels, contained in their group item), or `constant` (88-level condition
|
|
22
|
+
* names) nodes, so impact queries on working-storage names work.
|
|
23
|
+
* - Standalone copybooks (.cpy) parse via the grammar's copybook_fragment
|
|
24
|
+
* entry point: data copybooks yield their record structure, procedure
|
|
25
|
+
* copybooks yield paragraphs.
|
|
26
|
+
*
|
|
27
|
+
* The grammar is fixed-format (code area columns 8-72). preParse detects a
|
|
28
|
+
* free-format file (division header or level number starting before column 8)
|
|
29
|
+
* and indents every line by 7 spaces: line numbers are preserved, columns
|
|
30
|
+
* drift by 7 — acceptable for line-oriented consumers.
|
|
31
|
+
*/
|
|
32
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
33
|
+
exports.cobolExtractor = void 0;
|
|
34
|
+
const tree_sitter_helpers_1 = require("../tree-sitter-helpers");
|
|
35
|
+
/** EXEC CICS LINK/XCTL — program target, quoted literal or data name. */
|
|
36
|
+
const EXEC_CICS_PROGRAM_RE = /\b(?:LINK|XCTL)\b[\s\S]*?\bPROGRAM\s*\(\s*(?:['"]([A-Za-z0-9$#@-]+)['"]|([A-Za-z0-9-]+))\s*\)/i;
|
|
37
|
+
/** EXEC CICS RETURN/START — next transaction, quoted literal or data name. */
|
|
38
|
+
const EXEC_CICS_TRANSID_RE = /\b(?:RETURN|START)\b[\s\S]*?\bTRANSID\s*\(\s*(?:['"]([A-Za-z0-9$#@]{1,4})['"]|([A-Za-z0-9-]+))\s*\)/i;
|
|
39
|
+
/** EXEC SQL INCLUDE <member> — the SQL flavor of COPY. */
|
|
40
|
+
const EXEC_SQL_INCLUDE_RE = /\bSQL\b[\s\S]*?\bINCLUDE\s+([A-Za-z0-9$#@-]+)/i;
|
|
41
|
+
/** The VALUE literal in a data item's signature ("PIC X(04) VALUE 'CB00'"). */
|
|
42
|
+
const VALUE_LITERAL_RE = /\bVALUE\s+['"]([A-Za-z0-9$#@-]+)['"]/i;
|
|
43
|
+
function line(node) {
|
|
44
|
+
return node.startPosition.row + 1;
|
|
45
|
+
}
|
|
46
|
+
function endLineOf(node) {
|
|
47
|
+
return node.endPosition.row + 1;
|
|
48
|
+
}
|
|
49
|
+
/** Collapse whitespace runs so multi-line clauses read as one signature. */
|
|
50
|
+
function collapse(text, cap = 120) {
|
|
51
|
+
const flat = text.replace(/\s+/g, ' ').trim();
|
|
52
|
+
return flat.length > cap ? flat.slice(0, cap - 1) + '…' : flat;
|
|
53
|
+
}
|
|
54
|
+
function currentScope(ctx) {
|
|
55
|
+
return ctx.nodeStack[ctx.nodeStack.length - 1];
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* DB2 convention writes `EXEC SQL INCLUDE member END-EXEC` with no sentence
|
|
59
|
+
* period, sitting between paragraphs like a COPY — which derails the
|
|
60
|
+
* grammar's sentence machinery. Terminate the single-line form by writing a
|
|
61
|
+
* period into the character right after END-EXEC (a space), or appending one
|
|
62
|
+
* at end of line. Both are offset-preserving for every other character.
|
|
63
|
+
*/
|
|
64
|
+
function terminateSqlIncludes(source) {
|
|
65
|
+
const lineRe = /^([ \t]*(?:[0-9]{6})?[ \t]+EXEC\s+SQL\s+INCLUDE\s+[A-Za-z0-9$#@-]+\s+END-EXEC)([ \t]|$)/i;
|
|
66
|
+
return source
|
|
67
|
+
.split('\n')
|
|
68
|
+
.map((l) => {
|
|
69
|
+
if (!/END-EXEC/i.test(l) || /END-EXEC\s*\./i.test(l))
|
|
70
|
+
return l;
|
|
71
|
+
const m = lineRe.exec(l);
|
|
72
|
+
if (!m)
|
|
73
|
+
return l;
|
|
74
|
+
const head = m[1];
|
|
75
|
+
return m[2] === '' ? head + '.' : head + '.' + l.slice(head.length + 1);
|
|
76
|
+
})
|
|
77
|
+
.join('\n');
|
|
78
|
+
}
|
|
79
|
+
function addRef(ctx, fromNodeId, referenceName, referenceKind, at) {
|
|
80
|
+
if (!fromNodeId || !referenceName)
|
|
81
|
+
return;
|
|
82
|
+
ctx.addUnresolvedReference({
|
|
83
|
+
fromNodeId,
|
|
84
|
+
referenceName,
|
|
85
|
+
referenceKind,
|
|
86
|
+
line: line(at),
|
|
87
|
+
column: at.startPosition.column,
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
/** COPY <book> [IN/OF lib] — import node + imports reference. */
|
|
91
|
+
function handleCopy(node, ctx) {
|
|
92
|
+
const book = (0, tree_sitter_helpers_1.getChildByField)(node, 'book');
|
|
93
|
+
if (!book)
|
|
94
|
+
return;
|
|
95
|
+
const name = (0, tree_sitter_helpers_1.getNodeText)(book, ctx.source)
|
|
96
|
+
.trim()
|
|
97
|
+
.replace(/^['"]|['"]$/g, '');
|
|
98
|
+
if (!name)
|
|
99
|
+
return;
|
|
100
|
+
ctx.createNode('import', name, node, {
|
|
101
|
+
signature: collapse((0, tree_sitter_helpers_1.getNodeText)(node, ctx.source)),
|
|
102
|
+
});
|
|
103
|
+
addRef(ctx, currentScope(ctx), name, 'imports', node);
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* A CICS option can name its target through a data item instead of a
|
|
107
|
+
* literal (`TRANSID(WS-TRANID)` with `05 WS-TRANID ... VALUE 'CB00'`).
|
|
108
|
+
* Dereference it against the SAME FILE's already-extracted data items —
|
|
109
|
+
* the DATA DIVISION precedes the PROCEDURE DIVISION, so they are in
|
|
110
|
+
* ctx.nodes by the time EXEC blocks are mined. Anything else (copybook
|
|
111
|
+
* arrays, computed names) is dynamic dispatch: skipped, not guessed.
|
|
112
|
+
*/
|
|
113
|
+
function derefSameFileValue(name, ctx) {
|
|
114
|
+
const upper = name.toUpperCase();
|
|
115
|
+
for (const node of ctx.nodes) {
|
|
116
|
+
if (node.filePath !== ctx.filePath)
|
|
117
|
+
continue;
|
|
118
|
+
if (node.kind !== 'variable' && node.kind !== 'field' && node.kind !== 'constant')
|
|
119
|
+
continue;
|
|
120
|
+
if (node.name.toUpperCase() !== upper)
|
|
121
|
+
continue;
|
|
122
|
+
const value = node.signature ? VALUE_LITERAL_RE.exec(node.signature) : null;
|
|
123
|
+
return value?.[1];
|
|
124
|
+
}
|
|
125
|
+
return undefined;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* EXEC ... END-EXEC blocks are opaque single nodes. Mine the text for the
|
|
129
|
+
* statically-resolvable shapes: CICS LINK/XCTL to a program (cross-program
|
|
130
|
+
* call), CICS RETURN/START TRANSID (the pseudo-conversational hop — emitted
|
|
131
|
+
* as a `cics-transid:XXXX` reference the CICS framework resolver maps to
|
|
132
|
+
* the owning program), and SQL INCLUDE (a copybook import).
|
|
133
|
+
*/
|
|
134
|
+
function handleExec(node, ctx, fromNodeId) {
|
|
135
|
+
const text = (0, tree_sitter_helpers_1.getNodeText)(node, ctx.source);
|
|
136
|
+
const cics = EXEC_CICS_PROGRAM_RE.exec(text);
|
|
137
|
+
if (cics) {
|
|
138
|
+
const program = cics[1] ?? (cics[2] ? derefSameFileValue(cics[2], ctx) : undefined);
|
|
139
|
+
if (program)
|
|
140
|
+
addRef(ctx, fromNodeId, program, 'calls', node);
|
|
141
|
+
}
|
|
142
|
+
const transid = EXEC_CICS_TRANSID_RE.exec(text);
|
|
143
|
+
if (transid) {
|
|
144
|
+
const tx = transid[1] ?? (transid[2] ? derefSameFileValue(transid[2], ctx) : undefined);
|
|
145
|
+
if (tx && /^[A-Za-z0-9$#@]{1,4}$/.test(tx)) {
|
|
146
|
+
addRef(ctx, fromNodeId, `cics-transid:${tx.toUpperCase()}`, 'calls', node);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
const include = EXEC_SQL_INCLUDE_RE.exec(text);
|
|
150
|
+
if (include?.[1]) {
|
|
151
|
+
ctx.createNode('import', include[1], node, {
|
|
152
|
+
signature: collapse(text),
|
|
153
|
+
});
|
|
154
|
+
addRef(ctx, fromNodeId ?? currentScope(ctx), include[1], 'imports', node);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Walk a run of DATA DIVISION entries (working-storage section children or a
|
|
159
|
+
* record_description_list). Level numbers drive nesting: an entry closes all
|
|
160
|
+
* open entries with level >= its own. 88-level condition names attach to the
|
|
161
|
+
* open item as constants and never open a scope.
|
|
162
|
+
*/
|
|
163
|
+
function walkDataEntries(entries, ctx) {
|
|
164
|
+
const items = entries.map((e) => {
|
|
165
|
+
if (e.type !== 'data_description')
|
|
166
|
+
return null;
|
|
167
|
+
const levelNode = e.namedChildren.find((c) => c?.type === 'level_number');
|
|
168
|
+
const nameNode = e.namedChildren.find((c) => c?.type === 'entry_name');
|
|
169
|
+
const level = levelNode ? parseInt((0, tree_sitter_helpers_1.getNodeText)(levelNode, ctx.source), 10) : NaN;
|
|
170
|
+
const name = nameNode ? (0, tree_sitter_helpers_1.getNodeText)(nameNode, ctx.source).trim() : null;
|
|
171
|
+
return { node: e, level: Number.isFinite(level) ? level : 1, name };
|
|
172
|
+
});
|
|
173
|
+
/** Levels 01, 66, and 77 always open at top level, whatever came before. */
|
|
174
|
+
const isTopLevel = (level) => level === 1 || level === 66 || level === 77;
|
|
175
|
+
/** A group item extends to the last entry before the next level <= its own. */
|
|
176
|
+
const groupEnd = (i) => {
|
|
177
|
+
const self = items[i];
|
|
178
|
+
let end = endLineOf(self.node);
|
|
179
|
+
for (let j = i + 1; j < entries.length; j++) {
|
|
180
|
+
const it = items[j];
|
|
181
|
+
if (!it)
|
|
182
|
+
continue;
|
|
183
|
+
if (it.level !== 88 && (it.level <= self.level || isTopLevel(it.level)))
|
|
184
|
+
break;
|
|
185
|
+
end = Math.max(end, endLineOf(it.node));
|
|
186
|
+
}
|
|
187
|
+
return end;
|
|
188
|
+
};
|
|
189
|
+
const open = [];
|
|
190
|
+
let pushed = 0;
|
|
191
|
+
const closeTo = (level) => {
|
|
192
|
+
while (open.length > 0 && open[open.length - 1].level >= level) {
|
|
193
|
+
open.pop();
|
|
194
|
+
ctx.popScope();
|
|
195
|
+
pushed--;
|
|
196
|
+
}
|
|
197
|
+
};
|
|
198
|
+
for (let i = 0; i < entries.length; i++) {
|
|
199
|
+
const entry = entries[i];
|
|
200
|
+
if (entry.type === 'copy_statement') {
|
|
201
|
+
handleCopy(entry, ctx);
|
|
202
|
+
continue;
|
|
203
|
+
}
|
|
204
|
+
if (entry.type === 'exec_statement') {
|
|
205
|
+
handleExec(entry, ctx, currentScope(ctx));
|
|
206
|
+
continue;
|
|
207
|
+
}
|
|
208
|
+
const item = items[i];
|
|
209
|
+
if (!item)
|
|
210
|
+
continue;
|
|
211
|
+
const isCondition = item.level === 88;
|
|
212
|
+
if (!isCondition)
|
|
213
|
+
closeTo(isTopLevel(item.level) ? 0 : item.level);
|
|
214
|
+
// FILLER / unnamed entries carry no symbol; they only occupy layout space.
|
|
215
|
+
if (!item.name || /^FILLER$/i.test(item.name))
|
|
216
|
+
continue;
|
|
217
|
+
const kind = isCondition ? 'constant' : open.length === 0 ? 'variable' : 'field';
|
|
218
|
+
const created = ctx.createNode(kind, item.name, item.node, {
|
|
219
|
+
endLine: isCondition ? endLineOf(item.node) : groupEnd(i),
|
|
220
|
+
signature: collapse((0, tree_sitter_helpers_1.getNodeText)(item.node, ctx.source)),
|
|
221
|
+
});
|
|
222
|
+
if (created && !isCondition) {
|
|
223
|
+
ctx.pushScope(created.id);
|
|
224
|
+
open.push({ level: item.level });
|
|
225
|
+
pushed++;
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
while (pushed > 0) {
|
|
229
|
+
ctx.popScope();
|
|
230
|
+
pushed--;
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
/**
|
|
234
|
+
* Special registers and CICS/SQL communication areas — writes to these are
|
|
235
|
+
* runtime plumbing, not project data flow; referencing them would only mint
|
|
236
|
+
* dangling refs (they have no declaration node).
|
|
237
|
+
*/
|
|
238
|
+
const SPECIAL_REGISTER_RE = /^(RETURN-CODE|SQLCODE|SQLSTATE|TALLY|EIB[A-Z-]+|DFH[A-Z-]+|WHEN-COMPILED|LENGTH|ADDRESS)$/i;
|
|
239
|
+
/** The base data name of an assignment target (first WORD, ignoring subscripts/OF-qualifiers). */
|
|
240
|
+
function targetBaseName(target, source) {
|
|
241
|
+
if (target.type === 'WORD')
|
|
242
|
+
return target;
|
|
243
|
+
for (const child of target.namedChildren) {
|
|
244
|
+
if (!child)
|
|
245
|
+
continue;
|
|
246
|
+
const found = targetBaseName(child, source);
|
|
247
|
+
if (found)
|
|
248
|
+
return found;
|
|
249
|
+
}
|
|
250
|
+
return null;
|
|
251
|
+
}
|
|
252
|
+
/**
|
|
253
|
+
* Emit a `references` ref for every data item a statement WRITES (MOVE TO,
|
|
254
|
+
* ADD TO/GIVING, SUBTRACT FROM/GIVING, COMPUTE =). Write-sites are what an
|
|
255
|
+
* impact query on a working-storage or copybook field needs: "what changes
|
|
256
|
+
* WS-TOTAL" is the COBOL analogue of value-reference edges. Read operands
|
|
257
|
+
* are deliberately not tracked — they would multiply edge volume for little
|
|
258
|
+
* impact value.
|
|
259
|
+
*/
|
|
260
|
+
function emitWriteRefs(statement, fields, fromNodeId, ctx) {
|
|
261
|
+
for (const field of fields) {
|
|
262
|
+
for (const target of statement.childrenForFieldName(field)) {
|
|
263
|
+
if (!target)
|
|
264
|
+
continue;
|
|
265
|
+
const word = targetBaseName(target, ctx.source);
|
|
266
|
+
if (!word)
|
|
267
|
+
continue;
|
|
268
|
+
const name = (0, tree_sitter_helpers_1.getNodeText)(word, ctx.source).trim();
|
|
269
|
+
if (!name || SPECIAL_REGISTER_RE.test(name))
|
|
270
|
+
continue;
|
|
271
|
+
addRef(ctx, fromNodeId, name, 'references', word);
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
/**
|
|
276
|
+
* Collect call/import references from a statement subtree, attributed to the
|
|
277
|
+
* enclosing paragraph/section (or the program when no paragraph is open).
|
|
278
|
+
*/
|
|
279
|
+
function collectRefs(node, fromNodeId, ctx) {
|
|
280
|
+
switch (node.type) {
|
|
281
|
+
case 'move_statement':
|
|
282
|
+
emitWriteRefs(node, ['dst'], fromNodeId, ctx);
|
|
283
|
+
return;
|
|
284
|
+
case 'add_statement':
|
|
285
|
+
emitWriteRefs(node, ['to', 'giving'], fromNodeId, ctx);
|
|
286
|
+
return;
|
|
287
|
+
case 'compute_statement':
|
|
288
|
+
emitWriteRefs(node, ['left'], fromNodeId, ctx);
|
|
289
|
+
return;
|
|
290
|
+
case 'subtract_statement': {
|
|
291
|
+
// SUBTRACT x FROM t — `from` is the target; with GIVING, `giving` is.
|
|
292
|
+
const hasGiving = node.childrenForFieldName('giving').length > 0;
|
|
293
|
+
emitWriteRefs(node, [hasGiving ? 'giving' : 'from'], fromNodeId, ctx);
|
|
294
|
+
return;
|
|
295
|
+
}
|
|
296
|
+
case 'perform_statement_call_proc': {
|
|
297
|
+
// PERFORM A [THRU B] — every label is a paragraph/section call target.
|
|
298
|
+
const proc = (0, tree_sitter_helpers_1.getChildByField)(node, 'procedure');
|
|
299
|
+
if (proc) {
|
|
300
|
+
for (const label of proc.namedChildren) {
|
|
301
|
+
if (label?.type !== 'label')
|
|
302
|
+
continue;
|
|
303
|
+
const name = (0, tree_sitter_helpers_1.getNodeText)(label, ctx.source).trim();
|
|
304
|
+
addRef(ctx, fromNodeId, name, 'calls', label);
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
return;
|
|
308
|
+
}
|
|
309
|
+
case 'call_statement': {
|
|
310
|
+
// CALL 'PROG' — static cross-program call. CALL data-name is dynamic
|
|
311
|
+
// dispatch through a variable: skipped (announce, don't guess).
|
|
312
|
+
const x = (0, tree_sitter_helpers_1.getChildByField)(node, 'x');
|
|
313
|
+
if (x?.type === 'string') {
|
|
314
|
+
const name = (0, tree_sitter_helpers_1.getNodeText)(x, ctx.source).replace(/^['"]|['"]$/g, '').trim();
|
|
315
|
+
addRef(ctx, fromNodeId, name, 'calls', x);
|
|
316
|
+
}
|
|
317
|
+
return;
|
|
318
|
+
}
|
|
319
|
+
case 'goto_statement': {
|
|
320
|
+
const to = (0, tree_sitter_helpers_1.getChildByField)(node, 'to');
|
|
321
|
+
if (to) {
|
|
322
|
+
addRef(ctx, fromNodeId, (0, tree_sitter_helpers_1.getNodeText)(to, ctx.source).trim(), 'calls', to);
|
|
323
|
+
}
|
|
324
|
+
return;
|
|
325
|
+
}
|
|
326
|
+
case 'exec_statement':
|
|
327
|
+
handleExec(node, ctx, fromNodeId);
|
|
328
|
+
return;
|
|
329
|
+
case 'copy_statement':
|
|
330
|
+
handleCopy(node, ctx);
|
|
331
|
+
return;
|
|
332
|
+
default:
|
|
333
|
+
for (const child of node.namedChildren) {
|
|
334
|
+
if (child)
|
|
335
|
+
collectRefs(child, fromNodeId, ctx);
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
/** "PARA-NAME." → "PARA-NAME"; "SEC-NAME SECTION." → "SEC-NAME". */
|
|
340
|
+
function headerName(header, source) {
|
|
341
|
+
const text = (0, tree_sitter_helpers_1.getNodeText)(header, source).trim().replace(/\.$/, '').trim();
|
|
342
|
+
return text.split(/\s+/)[0] ?? text;
|
|
343
|
+
}
|
|
344
|
+
/**
|
|
345
|
+
* Walk the flat PROCEDURE DIVISION (or a procedure copybook fragment):
|
|
346
|
+
* reconstruct section/paragraph extents from header positions and attribute
|
|
347
|
+
* the sibling statements between headers to the open paragraph.
|
|
348
|
+
*/
|
|
349
|
+
function walkProcedureChildren(children, divisionEndLine, ctx) {
|
|
350
|
+
/** 1-based last line of the region started at children[i]. */
|
|
351
|
+
const regionEnd = (i, sectionsOnly) => {
|
|
352
|
+
for (let j = i + 1; j < children.length; j++) {
|
|
353
|
+
const c = children[j];
|
|
354
|
+
if (c.type === 'section_header' || (!sectionsOnly && c.type === 'paragraph_header')) {
|
|
355
|
+
// Header starts at 0-based row R → the region ends on 1-based line R.
|
|
356
|
+
return Math.max(c.startPosition.row, line(children[i]));
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
return divisionEndLine;
|
|
360
|
+
};
|
|
361
|
+
let currentFnId = currentScope(ctx);
|
|
362
|
+
let sectionPushed = false;
|
|
363
|
+
for (let i = 0; i < children.length; i++) {
|
|
364
|
+
const child = children[i];
|
|
365
|
+
if (child.type === 'section_header') {
|
|
366
|
+
if (sectionPushed) {
|
|
367
|
+
ctx.popScope();
|
|
368
|
+
sectionPushed = false;
|
|
369
|
+
}
|
|
370
|
+
const created = ctx.createNode('function', headerName(child, ctx.source), child, {
|
|
371
|
+
endLine: regionEnd(i, true),
|
|
372
|
+
signature: 'SECTION',
|
|
373
|
+
});
|
|
374
|
+
if (created) {
|
|
375
|
+
ctx.pushScope(created.id);
|
|
376
|
+
sectionPushed = true;
|
|
377
|
+
currentFnId = created.id;
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
else if (child.type === 'paragraph_header') {
|
|
381
|
+
const created = ctx.createNode('function', headerName(child, ctx.source), child, {
|
|
382
|
+
endLine: regionEnd(i, false),
|
|
383
|
+
});
|
|
384
|
+
if (created)
|
|
385
|
+
currentFnId = created.id;
|
|
386
|
+
}
|
|
387
|
+
else {
|
|
388
|
+
collectRefs(child, currentFnId, ctx);
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
if (sectionPushed)
|
|
392
|
+
ctx.popScope();
|
|
393
|
+
}
|
|
394
|
+
/** Program name from identification_division > program_name. */
|
|
395
|
+
function programName(programNode, source) {
|
|
396
|
+
const idDiv = programNode.namedChildren.find((c) => c?.type === 'identification_division');
|
|
397
|
+
const nameNode = idDiv?.namedChildren.find((c) => c?.type === 'program_name');
|
|
398
|
+
if (!nameNode)
|
|
399
|
+
return null;
|
|
400
|
+
return (0, tree_sitter_helpers_1.getNodeText)(nameNode, source).trim().replace(/^['"]|['"]$/g, '').replace(/\.$/, '');
|
|
401
|
+
}
|
|
402
|
+
exports.cobolExtractor = {
|
|
403
|
+
// All extraction flows through the visitNode hook — COBOL's flat,
|
|
404
|
+
// column-oriented AST doesn't fit the generic type-list dispatch.
|
|
405
|
+
functionTypes: [],
|
|
406
|
+
classTypes: [],
|
|
407
|
+
methodTypes: [],
|
|
408
|
+
interfaceTypes: [],
|
|
409
|
+
structTypes: [],
|
|
410
|
+
enumTypes: [],
|
|
411
|
+
typeAliasTypes: [],
|
|
412
|
+
importTypes: [],
|
|
413
|
+
callTypes: [],
|
|
414
|
+
variableTypes: [],
|
|
415
|
+
nameField: 'name',
|
|
416
|
+
bodyField: 'body',
|
|
417
|
+
paramsField: 'parameters',
|
|
418
|
+
preParse: (source) => {
|
|
419
|
+
// The grammar implements fixed-format column rules (sequence area 1-6,
|
|
420
|
+
// indicator 7, code 8-72). A free-format file — where real code starts
|
|
421
|
+
// before column 8 — would have its first characters eaten as sequence
|
|
422
|
+
// area, corrupting the whole parse. Scan for a decisive marker line
|
|
423
|
+
// (division header, PROGRAM-ID, or a level-number entry) preceded only
|
|
424
|
+
// by whitespace: if it opens before column 8 the file is free-format,
|
|
425
|
+
// and every line is shifted right by 7 spaces. Line numbers are
|
|
426
|
+
// preserved; columns drift by 7 (consumers are line-oriented). A
|
|
427
|
+
// sequence-numbered fixed file never matches — its columns 1-6 hold
|
|
428
|
+
// digits, not whitespace.
|
|
429
|
+
const marker = /^([ \t]*)(IDENTIFICATION\s+DIVISION|ID\s+DIVISION|PROGRAM-ID\b|\d{2}[ \t]+[A-Za-z])/i;
|
|
430
|
+
let freeFormat = false;
|
|
431
|
+
for (const l of source.split(/\r?\n/)) {
|
|
432
|
+
const m = marker.exec(l);
|
|
433
|
+
if (!m)
|
|
434
|
+
continue;
|
|
435
|
+
freeFormat = m[1].length < 7;
|
|
436
|
+
break;
|
|
437
|
+
}
|
|
438
|
+
if (!freeFormat)
|
|
439
|
+
return terminateSqlIncludes(source);
|
|
440
|
+
// "CGWIDE" in the first line's sequence area tells the scanner to relax
|
|
441
|
+
// the column-72 right margin — free-format lines routinely exceed it,
|
|
442
|
+
// and truncating them there would corrupt strings and statements.
|
|
443
|
+
return terminateSqlIncludes(source
|
|
444
|
+
.split('\n')
|
|
445
|
+
.map((l, i) => {
|
|
446
|
+
if (i === 0)
|
|
447
|
+
return 'CGWIDE ' + l;
|
|
448
|
+
return l.length > 0 ? ' ' + l : l;
|
|
449
|
+
})
|
|
450
|
+
.join('\n'));
|
|
451
|
+
},
|
|
452
|
+
visitNode: (node, ctx) => {
|
|
453
|
+
switch (node.type) {
|
|
454
|
+
case 'program_definition': {
|
|
455
|
+
const name = programName(node, ctx.source);
|
|
456
|
+
const moduleNode = name ? ctx.createNode('module', name, node) : null;
|
|
457
|
+
if (moduleNode)
|
|
458
|
+
ctx.pushScope(moduleNode.id);
|
|
459
|
+
for (const child of node.namedChildren) {
|
|
460
|
+
if (child)
|
|
461
|
+
ctx.visitNode(child);
|
|
462
|
+
}
|
|
463
|
+
if (moduleNode)
|
|
464
|
+
ctx.popScope();
|
|
465
|
+
return true;
|
|
466
|
+
}
|
|
467
|
+
case 'procedure_division': {
|
|
468
|
+
walkProcedureChildren(node.namedChildren.filter(Boolean), endLineOf(node), ctx);
|
|
469
|
+
return true;
|
|
470
|
+
}
|
|
471
|
+
case 'working_storage_section':
|
|
472
|
+
case 'record_description_list': {
|
|
473
|
+
walkDataEntries(node.namedChildren.filter(Boolean), ctx);
|
|
474
|
+
return true;
|
|
475
|
+
}
|
|
476
|
+
case 'copybook_fragment': {
|
|
477
|
+
const children = node.namedChildren.filter(Boolean);
|
|
478
|
+
if (children.some((c) => c.type === 'record_description_list')) {
|
|
479
|
+
for (const child of children)
|
|
480
|
+
ctx.visitNode(child);
|
|
481
|
+
}
|
|
482
|
+
else {
|
|
483
|
+
// Procedure copybook: paragraphs + statements, flat under the fragment.
|
|
484
|
+
walkProcedureChildren(children, endLineOf(node), ctx);
|
|
485
|
+
}
|
|
486
|
+
return true;
|
|
487
|
+
}
|
|
488
|
+
case 'copy_statement':
|
|
489
|
+
handleCopy(node, ctx);
|
|
490
|
+
return true;
|
|
491
|
+
case 'exec_statement':
|
|
492
|
+
handleExec(node, ctx, currentScope(ctx));
|
|
493
|
+
return true;
|
|
494
|
+
default:
|
|
495
|
+
return false;
|
|
496
|
+
}
|
|
497
|
+
},
|
|
498
|
+
};
|
|
499
|
+
//# sourceMappingURL=cobol.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cobol.js","sourceRoot":"","sources":["../../../src/extraction/languages/cobol.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;;;AAGH,gEAAsE;AAGtE,yEAAyE;AACzE,MAAM,oBAAoB,GACxB,gGAAgG,CAAC;AACnG,8EAA8E;AAC9E,MAAM,oBAAoB,GACxB,sGAAsG,CAAC;AACzG,0DAA0D;AAC1D,MAAM,mBAAmB,GAAG,gDAAgD,CAAC;AAC7E,+EAA+E;AAC/E,MAAM,gBAAgB,GAAG,uCAAuC,CAAC;AAEjE,SAAS,IAAI,CAAC,IAAgB;IAC5B,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,GAAG,CAAC,CAAC;AACpC,CAAC;AAED,SAAS,SAAS,CAAC,IAAgB;IACjC,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,GAAG,CAAC,CAAC;AAClC,CAAC;AAED,4EAA4E;AAC5E,SAAS,QAAQ,CAAC,IAAY,EAAE,GAAG,GAAG,GAAG;IACvC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IAC9C,OAAO,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AACjE,CAAC;AAED,SAAS,YAAY,CAAC,GAAqB;IACzC,OAAO,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACjD,CAAC;AAED;;;;;;GAMG;AACH,SAAS,oBAAoB,CAAC,MAAc;IAC1C,MAAM,MAAM,GAAG,0FAA0F,CAAC;IAC1G,OAAO,MAAM;SACV,KAAK,CAAC,IAAI,CAAC;SACX,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACT,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;YAAE,OAAO,CAAC,CAAC;QAC/D,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACzB,IAAI,CAAC,CAAC;YAAE,OAAO,CAAC,CAAC;QACjB,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC;QACnB,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC1E,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAED,SAAS,MAAM,CACb,GAAqB,EACrB,UAA8B,EAC9B,aAAqB,EACrB,aAAiD,EACjD,EAAc;IAEd,IAAI,CAAC,UAAU,IAAI,CAAC,aAAa;QAAE,OAAO;IAC1C,GAAG,CAAC,sBAAsB,CAAC;QACzB,UAAU;QACV,aAAa;QACb,aAAa;QACb,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;QACd,MAAM,EAAE,EAAE,CAAC,aAAa,CAAC,MAAM;KAChC,CAAC,CAAC;AACL,CAAC;AAED,iEAAiE;AACjE,SAAS,UAAU,CAAC,IAAgB,EAAE,GAAqB;IACzD,MAAM,IAAI,GAAG,IAAA,qCAAe,EAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC3C,IAAI,CAAC,IAAI;QAAE,OAAO;IAClB,MAAM,IAAI,GAAG,IAAA,iCAAW,EAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC;SACvC,IAAI,EAAE;SACN,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;IAC/B,IAAI,CAAC,IAAI;QAAE,OAAO;IAClB,GAAG,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE;QACnC,SAAS,EAAE,QAAQ,CAAC,IAAA,iCAAW,EAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;KACnD,CAAC,CAAC;IACH,MAAM,CAAC,GAAG,EAAE,YAAY,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;AACxD,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,kBAAkB,CAAC,IAAY,EAAE,GAAqB;IAC7D,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IACjC,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;QAC7B,IAAI,IAAI,CAAC,QAAQ,KAAK,GAAG,CAAC,QAAQ;YAAE,SAAS;QAC7C,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU;YAAE,SAAS;QAC5F,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,KAAK;YAAE,SAAS;QAChD,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC5E,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;GAMG;AACH,SAAS,UAAU,CACjB,IAAgB,EAChB,GAAqB,EACrB,UAA8B;IAE9B,MAAM,IAAI,GAAG,IAAA,iCAAW,EAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC3C,MAAM,IAAI,GAAG,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7C,IAAI,IAAI,EAAE,CAAC;QACT,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACpF,IAAI,OAAO;YAAE,MAAM,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IAC/D,CAAC;IACD,MAAM,OAAO,GAAG,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChD,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACxF,IAAI,EAAE,IAAI,uBAAuB,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;YAC3C,MAAM,CAAC,GAAG,EAAE,UAAU,EAAE,gBAAgB,EAAE,CAAC,WAAW,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;QAC7E,CAAC;IACH,CAAC;IACD,MAAM,OAAO,GAAG,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/C,IAAI,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjB,GAAG,CAAC,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE;YACzC,SAAS,EAAE,QAAQ,CAAC,IAAI,CAAC;SAC1B,CAAC,CAAC;QACH,MAAM,CAAC,GAAG,EAAE,UAAU,IAAI,YAAY,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;IAC5E,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,SAAS,eAAe,CAAC,OAAqB,EAAE,GAAqB;IAMnE,MAAM,KAAK,GAAoB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QAC/C,IAAI,CAAC,CAAC,IAAI,KAAK,kBAAkB;YAAE,OAAO,IAAI,CAAC;QAC/C,MAAM,SAAS,GAAG,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAa,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,KAAK,cAAc,CAAC,CAAC;QACtF,MAAM,QAAQ,GAAG,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAa,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,KAAK,YAAY,CAAC,CAAC;QACnF,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAA,iCAAW,EAAC,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QACjF,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAA,iCAAW,EAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QACxE,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;IACtE,CAAC,CAAC,CAAC;IAEH,4EAA4E;IAC5E,MAAM,UAAU,GAAG,CAAC,KAAa,EAAW,EAAE,CAAC,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,EAAE,IAAI,KAAK,KAAK,EAAE,CAAC;IAE3F,+EAA+E;IAC/E,MAAM,QAAQ,GAAG,CAAC,CAAS,EAAU,EAAE;QACrC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;QACvB,IAAI,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5C,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACpB,IAAI,CAAC,EAAE;gBAAE,SAAS;YAClB,IAAI,EAAE,CAAC,KAAK,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI,UAAU,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;gBAAE,MAAM;YAC/E,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1C,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC,CAAC;IAEF,MAAM,IAAI,GAAwB,EAAE,CAAC;IACrC,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,MAAM,OAAO,GAAG,CAAC,KAAa,EAAE,EAAE;QAChC,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC,KAAK,IAAI,KAAK,EAAE,CAAC;YAChE,IAAI,CAAC,GAAG,EAAE,CAAC;YACX,GAAG,CAAC,QAAQ,EAAE,CAAC;YACf,MAAM,EAAE,CAAC;QACX,CAAC;IACH,CAAC,CAAC;IAEF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAE,CAAC;QAC1B,IAAI,KAAK,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;YACpC,UAAU,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YACvB,SAAS;QACX,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;YACpC,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;YAC1C,SAAS;QACX,CAAC;QACD,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,CAAC,IAAI;YAAE,SAAS;QAEpB,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,KAAK,EAAE,CAAC;QACtC,IAAI,CAAC,WAAW;YAAE,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEnE,2EAA2E;QAC3E,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,SAAS;QAExD,MAAM,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC;QACjF,MAAM,OAAO,GAAG,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;YACzD,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;YACzD,SAAS,EAAE,QAAQ,CAAC,IAAA,iCAAW,EAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;SACxD,CAAC,CAAC;QACH,IAAI,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;YAC5B,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAC1B,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;YACjC,MAAM,EAAE,CAAC;QACX,CAAC;IACH,CAAC;IACD,OAAO,MAAM,GAAG,CAAC,EAAE,CAAC;QAClB,GAAG,CAAC,QAAQ,EAAE,CAAC;QACf,MAAM,EAAE,CAAC;IACX,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,mBAAmB,GAAG,4FAA4F,CAAC;AAEzH,kGAAkG;AAClG,SAAS,cAAc,CAAC,MAAkB,EAAE,MAAc;IACxD,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM;QAAE,OAAO,MAAM,CAAC;IAC1C,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;QACzC,IAAI,CAAC,KAAK;YAAE,SAAS;QACrB,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC5C,IAAI,KAAK;YAAE,OAAO,KAAK,CAAC;IAC1B,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,aAAa,CACpB,SAAqB,EACrB,MAAgB,EAChB,UAA8B,EAC9B,GAAqB;IAErB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,KAAK,MAAM,MAAM,IAAI,SAAS,CAAC,oBAAoB,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3D,IAAI,CAAC,MAAM;gBAAE,SAAS;YACtB,MAAM,IAAI,GAAG,cAAc,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;YAChD,IAAI,CAAC,IAAI;gBAAE,SAAS;YACpB,MAAM,IAAI,GAAG,IAAA,iCAAW,EAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;YAClD,IAAI,CAAC,IAAI,IAAI,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC;gBAAE,SAAS;YACtD,MAAM,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,WAAW,CAClB,IAAgB,EAChB,UAA8B,EAC9B,GAAqB;IAErB,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,gBAAgB;YACnB,aAAa,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC;YAC9C,OAAO;QACT,KAAK,eAAe;YAClB,aAAa,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC;YACvD,OAAO;QACT,KAAK,mBAAmB;YACtB,aAAa,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC;YAC/C,OAAO;QACT,KAAK,oBAAoB,CAAC,CAAC,CAAC;YAC1B,sEAAsE;YACtE,MAAM,SAAS,GAAG,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;YACjE,aAAa,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC;YACtE,OAAO;QACT,CAAC;QACD,KAAK,6BAA6B,CAAC,CAAC,CAAC;YACnC,uEAAuE;YACvE,MAAM,IAAI,GAAG,IAAA,qCAAe,EAAC,IAAI,EAAE,WAAW,CAAC,CAAC;YAChD,IAAI,IAAI,EAAE,CAAC;gBACT,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;oBACvC,IAAI,KAAK,EAAE,IAAI,KAAK,OAAO;wBAAE,SAAS;oBACtC,MAAM,IAAI,GAAG,IAAA,iCAAW,EAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;oBACnD,MAAM,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;gBAChD,CAAC;YACH,CAAC;YACD,OAAO;QACT,CAAC;QACD,KAAK,gBAAgB,CAAC,CAAC,CAAC;YACtB,qEAAqE;YACrE,gEAAgE;YAChE,MAAM,CAAC,GAAG,IAAA,qCAAe,EAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YACrC,IAAI,CAAC,EAAE,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACzB,MAAM,IAAI,GAAG,IAAA,iCAAW,EAAC,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;gBAC3E,MAAM,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;YAC5C,CAAC;YACD,OAAO;QACT,CAAC;QACD,KAAK,gBAAgB,CAAC,CAAC,CAAC;YACtB,MAAM,EAAE,GAAG,IAAA,qCAAe,EAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACvC,IAAI,EAAE,EAAE,CAAC;gBACP,MAAM,CAAC,GAAG,EAAE,UAAU,EAAE,IAAA,iCAAW,EAAC,EAAE,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;YAC3E,CAAC;YACD,OAAO;QACT,CAAC;QACD,KAAK,gBAAgB;YACnB,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;YAClC,OAAO;QACT,KAAK,gBAAgB;YACnB,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YACtB,OAAO;QACT;YACE,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;gBACvC,IAAI,KAAK;oBAAE,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC;YACjD,CAAC;IACL,CAAC;AACH,CAAC;AAED,oEAAoE;AACpE,SAAS,UAAU,CAAC,MAAkB,EAAE,MAAc;IACpD,MAAM,IAAI,GAAG,IAAA,iCAAW,EAAC,MAAM,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC1E,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;AACtC,CAAC;AAED;;;;GAIG;AACH,SAAS,qBAAqB,CAC5B,QAAsB,EACtB,eAAuB,EACvB,GAAqB;IAErB,8DAA8D;IAC9D,MAAM,SAAS,GAAG,CAAC,CAAS,EAAE,YAAqB,EAAU,EAAE;QAC7D,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7C,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAE,CAAC;YACvB,IAAI,CAAC,CAAC,IAAI,KAAK,gBAAgB,IAAI,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,kBAAkB,CAAC,EAAE,CAAC;gBACpF,sEAAsE;gBACtE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC;QACD,OAAO,eAAe,CAAC;IACzB,CAAC,CAAC;IAEF,IAAI,WAAW,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;IACpC,IAAI,aAAa,GAAG,KAAK,CAAC;IAE1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAE,CAAC;QAC3B,IAAI,KAAK,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;YACpC,IAAI,aAAa,EAAE,CAAC;gBAClB,GAAG,CAAC,QAAQ,EAAE,CAAC;gBACf,aAAa,GAAG,KAAK,CAAC;YACxB,CAAC;YACD,MAAM,OAAO,GAAG,GAAG,CAAC,UAAU,CAAC,UAAU,EAAE,UAAU,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE;gBAC/E,OAAO,EAAE,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC;gBAC3B,SAAS,EAAE,SAAS;aACrB,CAAC,CAAC;YACH,IAAI,OAAO,EAAE,CAAC;gBACZ,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBAC1B,aAAa,GAAG,IAAI,CAAC;gBACrB,WAAW,GAAG,OAAO,CAAC,EAAE,CAAC;YAC3B,CAAC;QACH,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;YAC7C,MAAM,OAAO,GAAG,GAAG,CAAC,UAAU,CAAC,UAAU,EAAE,UAAU,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE;gBAC/E,OAAO,EAAE,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC;aAC7B,CAAC,CAAC;YACH,IAAI,OAAO;gBAAE,WAAW,GAAG,OAAO,CAAC,EAAE,CAAC;QACxC,CAAC;aAAM,CAAC;YACN,WAAW,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IACD,IAAI,aAAa;QAAE,GAAG,CAAC,QAAQ,EAAE,CAAC;AACpC,CAAC;AAED,gEAAgE;AAChE,SAAS,WAAW,CAAC,WAAuB,EAAE,MAAc;IAC1D,MAAM,KAAK,GAAG,WAAW,CAAC,aAAa,CAAC,IAAI,CAC1C,CAAC,CAAa,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,KAAK,yBAAyB,CACzD,CAAC;IACF,MAAM,QAAQ,GAAG,KAAK,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC,CAAa,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,KAAK,cAAc,CAAC,CAAC;IAC1F,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC3B,OAAO,IAAA,iCAAW,EAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AAC7F,CAAC;AAEY,QAAA,cAAc,GAAsB;IAC/C,kEAAkE;IAClE,kEAAkE;IAClE,aAAa,EAAE,EAAE;IACjB,UAAU,EAAE,EAAE;IACd,WAAW,EAAE,EAAE;IACf,cAAc,EAAE,EAAE;IAClB,WAAW,EAAE,EAAE;IACf,SAAS,EAAE,EAAE;IACb,cAAc,EAAE,EAAE;IAClB,WAAW,EAAE,EAAE;IACf,SAAS,EAAE,EAAE;IACb,aAAa,EAAE,EAAE;IACjB,SAAS,EAAE,MAAM;IACjB,SAAS,EAAE,MAAM;IACjB,WAAW,EAAE,YAAY;IAEzB,QAAQ,EAAE,CAAC,MAAc,EAAE,EAAE;QAC3B,uEAAuE;QACvE,uEAAuE;QACvE,sEAAsE;QACtE,oEAAoE;QACpE,uEAAuE;QACvE,sEAAsE;QACtE,gEAAgE;QAChE,iEAAiE;QACjE,oEAAoE;QACpE,0BAA0B;QAC1B,MAAM,MAAM,GACV,sFAAsF,CAAC;QACzF,IAAI,UAAU,GAAG,KAAK,CAAC;QACvB,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;YACtC,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACzB,IAAI,CAAC,CAAC;gBAAE,SAAS;YACjB,UAAU,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC,MAAM,GAAG,CAAC,CAAC;YAC9B,MAAM;QACR,CAAC;QACD,IAAI,CAAC,UAAU;YAAE,OAAO,oBAAoB,CAAC,MAAM,CAAC,CAAC;QACrD,wEAAwE;QACxE,sEAAsE;QACtE,kEAAkE;QAClE,OAAO,oBAAoB,CACzB,MAAM;aACH,KAAK,CAAC,IAAI,CAAC;aACX,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACZ,IAAI,CAAC,KAAK,CAAC;gBAAE,OAAO,SAAS,GAAG,CAAC,CAAC;YAClC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1C,CAAC,CAAC;aACD,IAAI,CAAC,IAAI,CAAC,CACd,CAAC;IACJ,CAAC;IAED,SAAS,EAAE,CAAC,IAAgB,EAAE,GAAqB,EAAW,EAAE;QAC9D,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;YAClB,KAAK,oBAAoB,CAAC,CAAC,CAAC;gBAC1B,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;gBAC3C,MAAM,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;gBACtE,IAAI,UAAU;oBAAE,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;gBAC7C,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;oBACvC,IAAI,KAAK;wBAAE,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;gBAClC,CAAC;gBACD,IAAI,UAAU;oBAAE,GAAG,CAAC,QAAQ,EAAE,CAAC;gBAC/B,OAAO,IAAI,CAAC;YACd,CAAC;YACD,KAAK,oBAAoB,CAAC,CAAC,CAAC;gBAC1B,qBAAqB,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,OAAO,CAAiB,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;gBAChG,OAAO,IAAI,CAAC;YACd,CAAC;YACD,KAAK,yBAAyB,CAAC;YAC/B,KAAK,yBAAyB,CAAC,CAAC,CAAC;gBAC/B,eAAe,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,OAAO,CAAiB,EAAE,GAAG,CAAC,CAAC;gBACzE,OAAO,IAAI,CAAC;YACd,CAAC;YACD,KAAK,mBAAmB,CAAC,CAAC,CAAC;gBACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,OAAO,CAAiB,CAAC;gBACpE,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,yBAAyB,CAAC,EAAE,CAAC;oBAC/D,KAAK,MAAM,KAAK,IAAI,QAAQ;wBAAE,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;gBACrD,CAAC;qBAAM,CAAC;oBACN,wEAAwE;oBACxE,qBAAqB,CAAC,QAAQ,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;gBACxD,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC;YACD,KAAK,gBAAgB;gBACnB,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;gBACtB,OAAO,IAAI,CAAC;YACd,KAAK,gBAAgB;gBACnB,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;gBACzC,OAAO,IAAI,CAAC;YACd;gBACE,OAAO,KAAK,CAAC;QACjB,CAAC;IACH,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"erlang.d.ts","sourceRoot":"","sources":["../../../src/extraction/languages/erlang.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAoB,MAAM,sBAAsB,CAAC;AAmQhF,eAAO,MAAM,eAAe,EAAE,iBAqF7B,CAAC"}
|