diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml index a054c341..69e8f802 100644 --- a/.github/workflows/checks.yml +++ b/.github/workflows/checks.yml @@ -204,6 +204,14 @@ jobs: # built tree. - name: Verify the book-coverage warnings (check_book_coverage.mjs) run: node scripts/check_book_coverage.mjs + # The symbol index (tB/symbols.json) is read by the IDE help add-in. A + # build that indexes the reference cleanly says nothing about the rules + # that did not fire on it, so these probes assert each against the case + # that made it necessary -- the .twin scanner's traps, the rules placing + # a symbol on a page or heading, and the drift guard refusing a URL the + # index stopped publishing. Fixtures only: no tree, no install. + - name: Verify the symbol index and its drift guard (check_symbol_index.mjs) + run: node scripts/check_symbol_index.mjs # Graphviz sizes each node box from a width table; the browser paints # the label with a real font. Nothing in the build compares the two, so # a mismatch ships as text hanging outside its box on a green build -- diff --git a/.github/workflows/tbdocs-gh-pages.yml b/.github/workflows/tbdocs-gh-pages.yml index 0fb06dcc..687a5c85 100644 --- a/.github/workflows/tbdocs-gh-pages.yml +++ b/.github/workflows/tbdocs-gh-pages.yml @@ -157,6 +157,10 @@ jobs: # built tree. - name: Verify the book-coverage warnings (check_book_coverage.mjs) run: node scripts/check_book_coverage.mjs + # The symbol index's rules and drift guard, against fixtures. See the + # same step in checks.yml. + - name: Verify the symbol index and its drift guard (check_symbol_index.mjs) + run: node scripts/check_symbol_index.mjs # Graphviz sizes each node box from a width table; the browser paints the # label with a real font, and nothing in the build compares the two -- so a # mismatch ships as text hanging outside its box on a green build. See the diff --git a/WIP.Authoring.md b/WIP.Authoring.md index e4b7741b..5c2f1573 100644 --- a/WIP.Authoring.md +++ b/WIP.Authoring.md @@ -82,10 +82,13 @@ The attribution rule is **per-page**, determined by content provenance — not b ### Authoring-only frontmatter -Three keys on a package's `index.md` are **provenance for the authoring pass, not build -input**. The build never reads them and they do not reach the HTML --- `grep -r indexed_from docs/_site` -returns nothing, because nothing in `template.mjs` iterates frontmatter generically; every -consumer reads a named field. Leave them in place. +Three keys on a package's `index.md` are **provenance for the authoring pass**. None of +them reaches the HTML --- `grep -r indexed_from docs/_site` returns nothing, because nothing +in `template.mjs` iterates frontmatter generically; every consumer reads a named field. The +build reads one of them, `exclude_from_docs`, for one purpose: the symbol index's count of +public symbols no page documents leaves those names out (`reportableGaps` in +[builder/symbols.mjs](builder/symbols.mjs), and `--symbol-gaps` writes the list). Leave all +three in place. | Key | Means | |-----|-------| @@ -116,6 +119,22 @@ One other inert key exists, and is a different thing: `has_children` on four pag just-the-docs leftover. tbdocs derives the nav tree itself and never reads it. Harmless, but it is theme residue rather than something anyone is meant to maintain. +### `symbols:` --- what a page documents, for the symbol index + +The build's symbol index (`tB/symbols.json`, [WIP.HelpAddin.md](WIP.HelpAddin.md#stage-3-the-symbol-index-generated-by-the-docs-build)) +learns what a page documents from its title, less a trailing `Module`, `class` and the +like, and the comma-separated names of its first heading --- `# Left, LeftB` documents +both. A page whose title cannot name its subject says so with `symbols:`, which replaces +those names. Two pages need it: the (Default) module (`[_HiddenModule]`) and the comparison +operators (`["=", "<>", "<", "<=", ">", ">="]`, quoted, since a bare `>` is YAML). On a +Core statement page the first name is the statement and the rest its keywords; on an +operator page each is an operator. + +The build names any page in a package folder that gives the index no entry, after its +summary line. That is the cue for a third. **Do not add `symbols:` to change how a page +ranks or to add a keyword a page merely mentions**: the index is what the page documents, +and a keyword such as `ElseIf` belongs on a page only when the page explains it. + ### Cross-section linking Relative links resolve against the **rendered URL** (the page's `permalink:`), not the file path. Pages that share a URL folder can use bare names (`[Y](Y)`); crossing folders needs `../` to climb out. diff --git a/WIP.Build.md b/WIP.Build.md index 5b9927f3..6741f86d 100644 --- a/WIP.Build.md +++ b/WIP.Build.md @@ -561,6 +561,60 @@ workflows: twelve probes over pages and a manifest built in memory, so it reads under `docs/`. Dropping the chaptered-landing site fails ten of the twelve; ignoring `left_out:` fails nine. +### The symbol index, and the drift guard on its URLs + +`tB/symbols.json` is written by the `symbolIndex` task +([builder/symbols.mjs](builder/symbols.mjs)) for the IDE help add-in; why it exists and +what it has to say is [WIP.HelpAddin.md, Stage 3](WIP.HelpAddin.md#stage-3-the-symbol-index-generated-by-the-docs-build). +Three decisions about the build side, each with the alternative it rules out: + +- **The entries come from the rendered pages, and the packages only annotate them.** A + URL is a `permalink:` as written or that plus the id the render gave a heading, read + out of `renderedContent` --- never recomputed with `kramdownSlug`, which would + disagree with the page on every pinned `{: #id }` and every `-1` duplicate. What the + pages cannot say comes from `builder/package-api.json`, a committed snapshot. An + index built the other way round, from the packages, would list thousands of symbols + with no page and put the docs' own layout (Array filed under Information, the Styles + classes documented though declared `Private`) in the wrong place. +- **The snapshot is committed, like `inter-metrics.json`, because making it needs a + twinBASIC install.** `scripts/build_package_api.mjs` exports the packages through + `scripts/lib/tb-packages.mjs` (shared with `census_attributes.mjs`, whose output was + verified identical across the move), scans them with `scripts/lib/twin-api.mjs`, and + writes 255 KB. `package-api.json` is a build *input*, so `check_tree_fresh.mjs` + watches it; `symbol-baseline.json` is an output and is in its `IGNORED_FILES`. +- **The heading scan is `indexOf`, not a regex.** `/]*)>([\s\S]*?)<\/h\1>/` + is cubic in the regex gate's census, and it runs over every reference page; the scan + gives a byte-identical index. + +**The drift guard is the page-count guard's shape applied to URLs** +([builder/symbol-baseline.mjs](builder/symbol-baseline.mjs)): `builder/symbol-baseline.json` +lists every URL the index has published, one to a line; a build that loses one fails and +names it; a build that adds one rewrites the list; CI, `--serve` and `--dry-run` never +write; a source root other than `docs` is skipped; `--update-symbol-baseline` records a +removal. It exists because **an anchor has no `redirect_from:`** --- a reworded member +heading moves its id, an installed add-in keeps the old URL, and the link check only +follows links made inside the site, so before this nothing noticed. The failure message +leads with the usual fix, pinning the old id on the reworded heading. + +`scripts/check_symbol_index.mjs` is the gate on all three pieces, in `test.bat` and both +CI workflows: forty-six probes on fixtures, no tree, no install. The scanner's probes are +the traps the BETA 983 packages actually contain; the derivation's are each a rule that the +real site exercised only once or twice (`symbols:`, the section heading named like a +member, the ellipsis the typographer puts in a Core H1 --- whose absence from the rules +was found only because `Do…Loop`'s first heading never split). + +**The guard caught the first two defects it met, before either was committed.** Six +`### Example` and `#### Example` headings, placed among a class's members, went into the +index as members named `Example` by the rule that a heading under Properties or Methods is +a member. With that rule narrowed to headings one level under the section and not named +like prose, the six URLs left the index and the build failed naming them. Then the +snapshot learned the members of VB's `Screen`, declared on a private interface, and +`Screen.Fonts` moved from `#fonts-1`, its `### Fonts` under Properties, to `#fonts`, a +prose section above it --- because the first heading of a member's name on the page won. +The build named that URL too, and the fix, placing headings under a section of members +first, moved three more entries back from prose sections to their properties (`Style` on +ComboBox and ListBox, `CheckBoxes` on TreeView). A probe now holds each shape. + ### Build-time counts as named values `{{tbdocs:pages}}` in a page renders as the number of pages the build diff --git a/WIP.HelpAddin.md b/WIP.HelpAddin.md index 9036eed4..472f4bc9 100644 --- a/WIP.HelpAddin.md +++ b/WIP.HelpAddin.md @@ -4,10 +4,13 @@ See [WIP.md](WIP.md) for the maintenance guide. This file covers the planned twi add-in that shows the documentation for the symbol under the cursor, and the harness that tests IDE add-ins by machine, which the add-in is developed against. -**Status: Stages 1 and 2 are done** --- `addin-test.bat` operates Samples 10 and 15 end to -end and leaves the registry as it found it, and all fourteen of Stage 2's questions are -answered, twelve of them by eight probe lanes that fail when a later IDE build behaves -differently. Stage 3, the symbol index, is next. The add-in itself is not started. This file +**Status: Stages 1 and 2 are done, and Stage 3's index is built** --- `addin-test.bat` +operates Samples 10 and 15 end to end and leaves the registry as it found it; all fourteen +of Stage 2's questions are answered, twelve of them by eight probe lanes that fail when a +later IDE build behaves differently; and every build publishes `tB/symbols.json`, 5,536 +names at 4,086 URLs, under a drift guard that fails the build when one of its URLs goes. +Stage 3's embedded mode, a `theme` parameter the site would read, waits until the add-in +works (decided 2026-09-25). Stage 4, the add-in itself, is next. This file replaces the June draft, `add-in/PLAN.md` in commit `d159acf8` ("Roughly plan the help add-in"). That commit is on no branch --- only the detached HEAD of an old worktree keeps it --- so everything in it worth keeping is here, @@ -752,10 +755,11 @@ at `/tB/Modules/Collection`, not under VBRUN. The index is generated instead. `theme=dark|light` query parameter, read by the no-flash snippet in `renderHead` ([builder/template.mjs](builder/template.mjs)) and set as `data-theme` without being stored, so a reader's own choice on the site is left as it is. Hiding the header and - navigation is a separate, optional question, untested. **Recommended, not yet decided**: - it changes what the published pages do, and it needs a test that the parameter keeps - working. It serves the live site only: the IDE's own server answers any URL with a query - string with a 404 (P13), so the offline route would need the theme some other way. + navigation is a separate, optional question, untested. **Deferred until the add-in works, + at least in part** (decided 2026-09-25): it changes what the published pages do, and it + needs a test that the parameter keeps working. It serves the live site only: the IDE's + own server answers any URL with a query string with a 404 (P13), so the offline route + would need the theme some other way. The June data model stands: @@ -788,6 +792,102 @@ Names that belong to more than one page, to test lookup against: The generated index produces the complete list. +#### What was built (2026-09-25, BETA 983) + +**Everything above except the embedded mode.** The index is the `symbolIndex` task of the +build, in [builder/symbols.mjs](builder/symbols.mjs), and it publishes +[`/tB/symbols.json`](docs/Documentation/Permanent-Links.md#the-symbol-index) --- under +`/tB/` because the file is part of the same contract as the URLs in it. 5,536 entries at +4,086 distinct URLs; 782 KB, 52 KB gzipped, under 100 ms of the build. Permanent Links +documents the format for any reader; [Building](docs/Documentation/Building.md#the-symbol-index) +and [WIP.Build.md](WIP.Build.md#the-symbol-index-and-the-drift-guard-on-its-urls) the build side. + +**The entries come from the pages, and the packages annotate them.** Joining the other way +round was tried first, and the packages declare far more than the pages give an anchor to: +of the 2,368 public members of VB's documented classes, 173 have no page or heading, and +of WinNativeCommonCtls' 738, 294 --- inherited members that pages name in a sentence +(`DTPicker` "inherits ... Anchors, Dock, Font ...") or not at all. An index built from the +packages would carry those as page-less names, and would put the pages' own layout in the +wrong place. So a page is read for what it documents, by these +rules, in [builder/symbols.mjs](builder/symbols.mjs)'s header: its title and its first +heading's comma list name a type or member; a page under a type's page in the nav is one +of its members; a heading on a type's page whose every part is an identifier and one a +member is that member's, as is any heading under Properties, Methods or Events; an +inherited member documented on its declaring type's page has that URL from every type that +inherits it (`CodeEditor.Close` is `Editor#close`); a page filed under one module and +declared in another belongs to the declarer (VBA's `Array` is under Information and +declared in `_HiddenModule`); a `$` form shares its base's URL; and a Core page's title +gives its statement and keywords (`Do...Loop`: `Do`, and `Loop` as a keyword). **Every +package page gives at least one entry**; a build names any that stops. + +**What the packages add, from [builder/package-api.json](builder/package-api.json)**, which +[scripts/build_package_api.mjs](scripts/build_package_api.mjs) writes from the packages of +an install, through the export `census_attributes.mjs` already made (now +[scripts/lib/tb-packages.mjs](scripts/lib/tb-packages.mjs), shared, and the census's output +checked identical) and a declaration scanner, +[scripts/lib/twin-api.mjs](scripts/lib/twin-api.mjs). It is committed, like +`inter-metrics.json`, because CI has no install. 1,379 types in 16 exports, 255 KB. Four +facts about the packages shaped it: + +- **A package is known by its project name, not its folder's.** TwinBasicAssertions is + `Assert`, all three CEF builds are `cefPackage` (their declared APIs are identical, and + the generator checks that they stay so), and AppGlobalClassObject is + `AppGlobalClassProject`. That is what code writes and hover says, so the index's + `package` is the project name, and its `packages` map gives each project's name on the + pages. +- **Visibility cannot be read off one declaration.** CEF's `CefLogSeverity` is a `Public + Enum` inside a `Private Module`, documented and used; CustomControls' `Borders` is a + `Private Class` a control's `Borders` property returns; and `CheckBox` declares almost + nothing itself, its members being on `Private Class CheckBoxBaseCtl` and four classes above + it; and VB's `Clipboard` is a public CoClass whose members are on `Private Interface + _Clipboard`. So every declared type is kept and marked, a non-public one keeping its + members only when a public type exposes them, by inheritance or as the interface a public + CoClass is built on. +- **`[Hidden]` is not "absent".** `Module [_HiddenModule]` carries it, and its members are + globals. +- **The default-interface map comes from CoClasses:** `interfaces` maps `VBA._Collection` + to `VBA.Collection` and `tbIDE.IToolWindowsV1` to `tbIDE.ToolWindows`, 37 in all, which + is P5's hover answer turned into a lookup. + +**Two pages needed `symbols:`**, a new optional frontmatter key naming what a page documents +when its title cannot: the (Default) module is `_HiddenModule`, and the comparison +operators page documents `=`, `<>` and four more. One page was wrong: IntegerDivide's +first heading, `# \ and \= operators`, rendered "\ and = operators" because `\=` is a +markdown escape. It is `\\=` now; its id did not change. + +**The gates.** `builder/symbol-baseline.json` lists every published URL, and a build that +loses one fails --- the case it exists for is a reworded member heading, which moves an +anchor an installed add-in still holds. `scripts/check_symbol_index.mjs`, a seventh +`test.bat` gate, asserts each derivation rule, each scanner trap and the guard's refusals +on fixtures. Every URL resolves by construction, and `tB/symbols.json` is in the online +tree's index, so `--check-audit-index` sees it written. The build's summary gives the +count of public symbols no page documents, 602 today, and `--symbol-gaps ` lists +them: 173 VB and 294 WinNativeCommonCtls members inherited and named only in prose, 48 +WinNativeCommonCtls types --- enumerations and structures declared in its controls' base +classes and its public `...Consts` modules --- 39 members of VBA's `_HiddenModule` and +`Interaction`, and a tail of a few each. + +**The URL is settled** (2026-09-25): `/tB/symbols.json` is part of the Permanent Links +contract from here on. + +**Not done, and why:** + +- **The embedded mode** above waits until the add-in works, at least in part (decided + 2026-09-25): it changes what the published pages do. +- **Keywords with no page of their own** --- `ElseIf`, `Until`, `Step`, `To`, `In`, + `ByVal`, `ByRef`, `Optional`, `As` --- are in the index only where a page's title gives + them. Adding one is a `symbols:` line on the page that explains it, which is a content + decision per keyword. Deferred with the next item (2026-09-25). +- **Data types** --- `Long`, `String`, `LongPtr` --- have their page at + `/Reference/Data-Types`, outside `/tB/`, so the index cannot carry them without breaking + its own rule. Giving that page a `/tB/` permalink, with the old one in `redirect_from:`, + would. Deferred (2026-09-25). +- **The offline tree has no copy of the index**, since the offline route is deferred. +- **Hover over a VB control's member is unmeasured.** P5 measured CoClasses; for a + `Class` such as `CheckBox`, whose members are inherited from private classes, hover may + name the declaring base class, which the `interfaces` map does not cover. A P5 case + settles it when increment 3 needs it. + ### Stage 4: the add-in, in increments Each increment is finished with its scenarios. Worked on by hand, a new build replaces the @@ -905,7 +1005,8 @@ Recommended, and not yet confirmed: P5 raises what the rule costs: through `lspSocket` the add-in would know the package and interface of any name under the cursor today (Stage 4, increment 3). - **The site reads a `theme` query parameter**, so that a page in the help pane can match - the IDE's theme (Stage 3, after P3). + the IDE's theme (Stage 3, after P3). **Deferred** until the add-in works, at least in part + (2026-09-25); decided then, not before. - **Isolation starts with restoring the registry** (Stage 1, item 3), and a private `APPDATA` for every lane IDE (P6). A separate Windows account for test runs comes only if that proves not to be enough. diff --git a/WIP.md b/WIP.md index 4001416b..678cd8e0 100644 --- a/WIP.md +++ b/WIP.md @@ -452,13 +452,13 @@ Why the report separates the wedged task from the merely blocked ones, and why - `build.bat` — runs `node builder\tbdocs.mjs --src docs --check-audit-index` (which implies `--check`) and produces three trees in one pass: the online copy at `_site/`, a `file://`-browsable copy at `_site-offline/`, and the sparse pagedjs source at `_site-pdf/`. The offline pass adds ~700 ms and the PDF pass adds ~150 ms on top of the ~2 s online build. Toggle `also_build_offline` / `also_build_pdf` in `_config.yml` (or pass `--no-offline` / `--no-pdf`) to skip a sibling output. `--check` adds ~1.7 s and runs the link + integrity check over the HTML while it is still in worker memory; `build.bat --no-check` gets a plain build. - `serve.bat` — runs `tbdocs --serve`: initial build, then a long-lived process with watcher, debounced rebuilds, and SSE-driven browser auto-reload. Writes to `docs/_serve/` (disjoint from `build.bat`'s `_site*/`) and skips the offline + PDF passes — so a one-off `build.bat` for the PDF or offline mirror doesn't disturb the live preview. Ctrl+C to stop. - `check.bat` — the gates that read the built site: a freshness check that refuses a stale tree (`scripts/check_tree_fresh.mjs`), the DOT diagram fit check (`scripts/check_dot_fit.mjs`), the a11y sample-coverage check (`scripts/pick_a11y_sample.mjs --check`), then the accessibility check (`scripts/check_a11y.mjs`). The link + integrity check moved into `build.bat`. ~37 s. -- `test.bat` — the tests the *toolchain* has to pass: the publish-allowlist self-test (`scripts/check_publish_policy.mjs`), the gate-list check (`scripts/check_gate_lists.mjs`), the regex-safety gate (`scripts/check_regex_safety.mjs`), the code-region gate (`scripts/check_code_regions.mjs`), the page-count drift-guard probes (`scripts/check_page_baseline.mjs`), the book-coverage probes (`scripts/check_book_coverage.mjs`), and the axe source-patch verification (`scripts/check_axe_patch_equiv.mjs`). ~8 s. See [What belongs in test.bat rather than check.bat](WIP.Build.md#what-belongs-in-testbat-rather-than-checkbat). +- `test.bat` — the tests the *toolchain* has to pass: the publish-allowlist self-test (`scripts/check_publish_policy.mjs`), the gate-list check (`scripts/check_gate_lists.mjs`), the regex-safety gate (`scripts/check_regex_safety.mjs`), the code-region gate (`scripts/check_code_regions.mjs`), the page-count drift-guard probes (`scripts/check_page_baseline.mjs`), the book-coverage probes (`scripts/check_book_coverage.mjs`), the symbol-index probes (`scripts/check_symbol_index.mjs`), and the axe source-patch verification (`scripts/check_axe_patch_equiv.mjs`). ~8 s. See [What belongs in test.bat rather than check.bat](WIP.Build.md#what-belongs-in-testbat-rather-than-checkbat). - `book.bat` — renders the PDF from `docs\_site-pdf\book.html` via `node book\render-book.mjs` into `docs\_pdf\twinBASIC Book.pdf`. Run `build.bat` first to populate `_site-pdf/`; `book.bat` refuses a tree older than its sources rather than rendering the previous book (see [The book refuses a stale source tree](WIP.Build.md#the-book-refuses-a-stale-source-tree)). - `examples.bat` — compiles the documentation's own twinBASIC code samples, every `tb` fence marked `check_build`, and reports the ones the compiler refuses against the line in the page they came from. Needs a twinBASIC install and Windows, so it is outside every gate and outside CI; ~110 s over the 1,119 samples marked today. Two modes need no compiler at all: `--census` classifies every fence and says how many classifiable ones are still unmarked, and `--report ` groups a saved `--propose --json` survey by diagnostic, section and unresolved name. `--propose` itself does compile. See [Compiling the reference's own code samples](#compiling-the-references-own-code-samples) and [WIP.ExamplesBuild.md](WIP.ExamplesBuild.md). - `addin-test.bat` — tests IDE add-ins by operating an IDE: every lane in `test/addin/lanes.mjs` builds the add-ins it tests into a private copy of the install, opens a project and checks what the add-in does. Outside every gate and outside CI for the same reasons as `examples.bat`; ~140 s for the ten lanes today: Samples 10 and 15, and the eight probe lanes behind Stage 2's answers in [WIP.HelpAddin.md](WIP.HelpAddin.md). Exit 0 every lane passed and the registry is as it was found, 1 a lane failed, 2 the harness failed or could not put the registry back. See [Driving the twinBASIC compiler](#driving-the-twinbasic-compiler) for its rules. -Two generators sit outside that loop and produce committed artifacts rather than build output — neither runs during a build, and neither is needed for one. `python scripts/build_fonts.py` rebuilds the subset webfaces under `docs/assets/fonts/` and needs a network connection; `node scripts/build_dot_metrics.mjs` regenerates `builder/inter-metrics.json` from those webfaces and needs only a browser. See [Typography](#typography). +Three generators sit outside that loop and produce committed artifacts rather than build output — none runs during a build, and none is needed for one. `python scripts/build_fonts.py` rebuilds the subset webfaces under `docs/assets/fonts/` and needs a network connection; `node scripts/build_dot_metrics.mjs` regenerates `builder/inter-metrics.json` from those webfaces and needs only a browser. See [Typography](#typography). `node scripts/build_package_api.mjs` regenerates `builder/package-api.json`, the packages' declared API that the build's symbol index (`tB/symbols.json`, for the IDE help add-in) is annotated from; it needs a twinBASIC install, so **run it when the reference is re-indexed against a newer build** and commit it with the pages. See [WIP.HelpAddin.md, Stage 3](WIP.HelpAddin.md#stage-3-the-symbol-index-generated-by-the-docs-build). ## Site integrity check @@ -470,7 +470,7 @@ build.bat && check.bat On the dev box that is ~4 s of build against ~37 s of check, of which the axe scan is ~20 s. [builder/PLAN-checks.md](builder/PLAN-checks.md) records how the link checker got folded into the build's task graph, what it cost and what it saved; the axe follow-ons are designed there but not implemented. -**If the change touched `builder/`, `scripts/`, `book/`, `eval/` or `wisdom/`, run `test.bat` as well** --- another ~8 s. Five of its seven gates cannot be affected by a content edit at all. **Two can.** `check_gate_lists.mjs` is the easy one to predict: it reads `README.md` and every page under `docs/Documentation/`, so an edit to any developer page that states a gate count can fail it. **`check_code_regions.mjs` is the one worth understanding**, and which half of it a content edit reaches is worth keeping straight. Its corpus sweep has `ROOT = /docs` and tokenises all 906 markdown files, so a page that provokes a rewrite into *altering* a code region fails it --- that half is content-dependent. Its fixed probes are not: they run against their own sources whatever the tree holds, and they cover the **mirror** fault, where a rewrite silently stops firing. The sweep structurally cannot see that one, because text the rewrite skipped is stashed and restored unchanged and every region still matches. So run `test.bat` after adding an unusual code construct --- a fence whose contents include a fence marker, a 4-space indented block, an admonition wrapping a fence --- and read the built page as well, because for the mirror fault the gate is asserting that the stasher still works rather than checking your page: +**If the change touched `builder/`, `scripts/`, `book/`, `eval/` or `wisdom/`, run `test.bat` as well** --- another ~8 s. Six of its eight gates cannot be affected by a content edit at all. **Two can.** `check_gate_lists.mjs` is the easy one to predict: it reads `README.md` and every page under `docs/Documentation/`, so an edit to any developer page that states a gate count can fail it. **`check_code_regions.mjs` is the one worth understanding**, and which half of it a content edit reaches is worth keeping straight. Its corpus sweep has `ROOT = /docs` and tokenises all 906 markdown files, so a page that provokes a rewrite into *altering* a code region fails it --- that half is content-dependent. Its fixed probes are not: they run against their own sources whatever the tree holds, and they cover the **mirror** fault, where a rewrite silently stops firing. The sweep structurally cannot see that one, because text the rewrite skipped is stashed and restored unchanged and every region still matches. So run `test.bat` after adding an unusual code construct --- a fence whose contents include a fence marker, a 4-space indented block, an admonition wrapping a fence --- and read the built page as well, because for the mirror fault the gate is asserting that the stasher still works rather than checking your page: ```sh build.bat && check.bat && test.bat @@ -489,12 +489,14 @@ wrapper: | `build.bat` | link + integrity check | broken intra-site links, missing pages, malformed `redirect_from`, duplicate ids, remote ``, sitemap / search-index gaps, canonical mismatches. Runs on the worker lanes that produced the HTML, so neither tree is written out only to be read back | | `build.bat` | publish allowlist | refuses any file that may not ship. It aborts the build rather than flipping an exit code, because a tree with a private key in it is one `upload-pages-artifact` from being published | | `build.bat` | page-count baseline | a rise rewrites `builder/page-baseline.json` and says so; a fall fails the build | +| `build.bat` | symbol-index URLs | every URL `tB/symbols.json` has published is still in it: a new one rewrites `builder/symbol-baseline.json`, a lost one --- most often a reworded member heading --- fails the build | | `build.bat` | nav integrity | every nav-visible `parent:` resolves to exactly one page | | `check.bat` | `check_tree_fresh` | the tree is not older than the sources that produced it | | `check.bat` | `check_dot_fit` | every diagram label sits inside the box Graphviz drew for it | | `check.bat` | `pick_a11y_sample --check`, `check_a11y` | see [WIP.A11y.md](WIP.A11y.md) | | `test.bat` | `check_code_regions` | no source or HTML rewrite altered a code region | | `test.bat` | `check_regex_safety` | no regex in the tree can backtrack exponentially | +| `test.bat` | `check_symbol_index` | the symbol index still places each kind of symbol, from fixtures | | `test.bat` | `check_publish_policy`, `check_gate_lists`, `check_page_baseline`, `check_book_coverage`, `check_axe_patch_equiv` | the gates on the gates | **A gate belongs in `test.bat` rather than `check.bat` if it would still mean diff --git a/builder/README.md b/builder/README.md index a3d2a37b..0934f9d9 100644 --- a/builder/README.md +++ b/builder/README.md @@ -107,7 +107,7 @@ render-worker sub-stage. | 3 | [render.mjs](render.mjs) + [highlight.mjs](highlight.mjs) + [highlight-theme.mjs](highlight-theme.mjs) | Markdown -> HTML body | | 4 | [template.mjs](template.mjs) + [compress.mjs](compress.mjs) | Wrap in layout, anchor-heading injection, whitespace compress | | 5 | [write.mjs](write.mjs) | Write `_site/` | -| 6 | [redirects.mjs](redirects.mjs) / [sitemap.mjs](sitemap.mjs) / [search.mjs](search.mjs) | Auxiliaries (stubs, sitemap.xml, search-data.json) | +| 6 | [redirects.mjs](redirects.mjs) / [sitemap.mjs](sitemap.mjs) / [search.mjs](search.mjs) / [symbols.mjs](symbols.mjs) + [symbol-baseline.mjs](symbol-baseline.mjs) | Auxiliaries (stubs, sitemap.xml, search-data.json, tB/symbols.json and the drift guard on its URLs) | | 7 | [offline.mjs](offline.mjs) | Mirror to `_site-offline/` with `file://` URL rewrites | | 8 | [pdf.mjs](pdf.mjs) + [book.mjs](book.mjs) (renderer half) | Sparse `_site-pdf/` tree (book.html + CSS + images) | diff --git a/builder/census_attributes.mjs b/builder/census_attributes.mjs index 5b8dc5c4..e1570ecb 100644 --- a/builder/census_attributes.mjs +++ b/builder/census_attributes.mjs @@ -72,11 +72,11 @@ // in the corpus. Anything the scanner cannot resolve goes to an `unresolved` // bucket and is reported -- a census that quietly buckets its own confusion is // how the wrong answer gets published with a number beside it. -import { spawnSync } from "node:child_process"; -import { existsSync, mkdirSync, readdirSync, readFileSync, rmSync, statSync, writeFileSync } from "node:fs"; +import { existsSync, readdirSync, readFileSync, statSync, writeFileSync } from "node:fs"; import os from "node:os"; import path from "node:path"; import { fileURLToPath } from "node:url"; +import { defaultCache, exportPackages, packageName } from "../scripts/lib/tb-packages.mjs"; const REPO = path.dirname(path.dirname(fileURLToPath(import.meta.url))); const ATTR_DOC = path.join(REPO, "docs", "Reference", "Attributes.md"); @@ -121,60 +121,19 @@ function findInstall() { const buildNumberOf = (root) => (/_BETA_(\d+)$/.exec(root)?.[1]) ?? "unknown"; // ------------------------------------------------------------- the export -// The .twin sources live inside .twinproj archives; `export` unpacks one. -// Two traps, both from WIP.md and both still live: every path must use -// backslashes (path.join gives them here), because a folder named with forward -// slashes cannot be created or even found, and stdin has to be detached or the -// executable consumes the caller's and later iterations never run. +// scripts/lib/tb-packages.mjs, shared with scripts/build_package_api.mjs so the +// two read the same export from the same cache. A failed export leaves no +// folder behind, and is left out of the census rather than counted as empty. function exportAll(root, cacheDir, includeSamples) { - const exe = path.join(root, "bin", "twinBASIC_win32.exe"); - if (!existsSync(exe)) die(2, `no compiler at ${exe}`); - - const roots = [path.join(root, "packages")]; - if (includeSamples) { - for (const d of ["projects", "addins"]) { - const p = path.join(root, d); - if (existsSync(p)) roots.push(p); - } - } - - const projects = []; - for (const r of roots) { - for (const entry of readdirSync(r, { withFileTypes: true })) { - if (!entry.isDirectory()) continue; - const dir = path.join(r, entry.name); - for (const f of readdirSync(dir)) { - if (f.toLowerCase().endsWith(".twinproj")) { - projects.push({ proj: path.join(dir, f), name: entry.name, group: path.basename(r) }); - } - } - } - } - if (!projects.length) die(2, `no .twinproj found under ${roots.join(", ")}`); - - mkdirSync(cacheDir, { recursive: true }); - let exported = 0; - for (const p of projects) { - const out = path.join(cacheDir, p.group, p.name); - if (existsSync(out) && !flag("refresh")) continue; - mkdirSync(out, { recursive: true }); - // The exit code does not say whether export worked: it is 0 on the failures - // the compiler reports itself, so a last line of `... DONE` is the test -- - // the same one scripts/lib/tb-install.mjs's runCompiler makes. A failure - // also takes its folder away, because the cache is keyed on the folder - // existing: left behind, the next run would take it for a finished export. - const r = spawnSync(exe, ["export", p.proj, out + path.sep, "--overwrite"], - { encoding: "utf8", stdio: ["ignore", "pipe", "pipe"] }); - if (!r.error && /\.\.\. DONE$/.test((r.stdout ?? "").trim())) { - exported++; - } else { - rmSync(out, { recursive: true, force: true }); - const last = `${r.stdout ?? ""}\n${r.stderr ?? ""}`.trim().split(/\r?\n/).pop(); - log(` ! export failed: ${p.name} (${r.error ? r.error.message : `exit code ${r.status}`}): ${last}`); - } + try { + const { projects, failed } = exportPackages({ + root, cache: cacheDir, refresh: flag("refresh"), samples: includeSamples, log, + }); + const lost = new Set(failed.map((f) => f.name)); + return projects.filter((p) => !lost.has(p.name)); + } catch (e) { + die(2, e.message); } - log(` exported ${exported} project(s), ${projects.length} total in cache`); - return projects.map((p) => ({ ...p, dir: path.join(cacheDir, p.group, p.name) })); } // ------------------------------------------------------------- the scanner @@ -601,7 +560,7 @@ function main() { install = findInstall(); build = buildNumberOf(install); log(`install : ${install}`); - const cache = opt("cache", path.join(os.tmpdir(), "tb-census", `beta-${build}`)); + const cache = opt("cache", defaultCache(build)); log(`cache : ${cache}`); projects = exportAll(install, cache, flag("samples")); } @@ -609,7 +568,7 @@ function main() { const allSites = [], allProblems = []; let fileCount = 0; for (const p of projects) { - const pkg = p.name.replace(/^\.?\{[^}]+\}_/, ""); + const pkg = packageName(p.name); for (const f of collectTwinFiles(p.dir)) { fileCount++; try { diff --git a/builder/check-tree.mjs b/builder/check-tree.mjs index c8bd783d..6687cae4 100644 --- a/builder/check-tree.mjs +++ b/builder/check-tree.mjs @@ -13,8 +13,10 @@ // the result against what actually landed on disk; see // builder/check.mjs's auditIndex(). -// Aux files the online tree receives after the pages are written. -const ONLINE_AUX = ["sitemap.xml", "robots.txt", "assets/js/search-data.json"]; +// Aux files the online tree receives after the pages are written. The symbol +// index is the online tree's alone: the IDE help add-in fetches it from the +// site, and the offline tree has no reader for it yet. +const ONLINE_AUX = ["sitemap.xml", "robots.txt", "assets/js/search-data.json", "tB/symbols.json"]; // The offline tree carries neither sitemap nor search index, but does // get the JS wrapper writeOffline generates around the search data. const OFFLINE_AUX = ["assets/js/search-data.js"]; diff --git a/builder/package-api.json b/builder/package-api.json new file mode 100644 index 00000000..1fa8d1d4 --- /dev/null +++ b/builder/package-api.json @@ -0,0 +1,1454 @@ +{ + "build": 983, + "packages": { + "AppGlobalClassProject": { + "exports": ["AppGlobalClassObject"], + "types": [ + {"name":"_App","kind":"interface","members":{"Path":"property","EXEName":"property","Title":"property","PrevInstance":"property","StartMode":"property","TaskVisible":"property","OleServerBusyTimeout":"property","OleServerBusyMsgTitle":"property","OleServerBusyMsgText":"property","OleServerBusyRaiseError":"property","OleRequestPendingTimeout":"property","OleRequestPendingMsgTitle":"property","OleRequestPendingMsgText":"property","Major":"property","Minor":"property","Revision":"property","Comments":"property","CompanyName":"property","FileDescription":"property","LegalCopyright":"property","LegalTrademarks":"property","ProductName":"property","hInstance":"property","NonModalAllowed":"property","LogPath":"property","LogMode":"property","UnattendedApp":"property","ThreadID":"property","HelpFile":"property","RetainedProject":"property","StartLogging":"sub","LogEvent":"sub","IsInIDE":"property","Build":"property","ModulePath":"property","LastBuildPath":"property"}}, + {"name":"App","kind":"coclass","default":"_App"}, + {"name":"InternalStuff","kind":"module","members":{"CreateGlobalObject":"function","GetApphInstance":"function","GetAppThreadID":"function","GetAppPath":"function","GetAppEXEName":"function","GetAppIsInIDE":"function","GetAppMajor":"function","GetAppMinor":"function","GetAppRevision":"function","GetAppBuild":"function","GetAppModulePath":"function","GetAppComments":"function","GetAppCompanyName":"function","GetAppFileDescription":"function","GetAppLegalCopyright":"function","GetAppLegalTrademarks":"function","GetAppProductName":"function","GetAppLastBuildPath":"function","GetAppPrevInstance":"function","GetAppTitle":"function","LetAppTitle":"sub","GetAppHelpFile":"function","LetAppHelpFile":"sub","GetAppLogMode":"function"},"hiddenMembers":["CreateGlobalObject","GetApphInstance","GetAppThreadID","GetAppPath","GetAppEXEName","GetAppIsInIDE","GetAppMajor","GetAppMinor","GetAppRevision","GetAppBuild","GetAppModulePath","GetAppComments","GetAppCompanyName","GetAppFileDescription","GetAppLegalCopyright","GetAppLegalTrademarks","GetAppProductName","GetAppLastBuildPath","GetAppPrevInstance","GetAppTitle","LetAppTitle","GetAppHelpFile","LetAppHelpFile","GetAppLogMode"]}, + {"name":"LogModeConstants","kind":"enum","in":"InternalStuff","values":["vbLogAuto","vbLogOff","vbLogToFile","vbLogToNT","vbLogOverwrite","vbLogThreadID"]} + ] + }, + "CustomControls": { + "exports": ["CustomControls"], + "types": [ + {"name":"Constants","kind":"module"}, + {"name":"ColorRGBA","kind":"enum","in":"Constants","values":["_MAX"]}, + {"name":"PixelCount","kind":"enum","in":"Constants","values":["_MAX"]}, + {"name":"PointSize","kind":"enum","in":"Constants","values":["_MAX"]}, + {"name":"CornerShape","kind":"enum","in":"Constants","values":["tbCurve","tbNotched","tbCutOut"]}, + {"name":"FillPattern","kind":"enum","in":"Constants","values":["tbPatternNone","tbGradientNorthToSouth","tbGradientSouthToNorth","tbGradientWestToEast","tbGradientEastToWest","tbGradientNorthWestToSouthEast","tbGradientNorthWestToSouthEastAlt","tbGradientNorthEastToSouthWest","tbGradientNorthEastToSouthWestAlt","tbGradientSouthWestToNorthEast","tbGradientSouthWestToNorthEastAlt","tbGradientSouthEastToNorthWest","tbGradientSouthEastToNorthWestAlt","tbGradientCornerTopLeft","tbGradientCornerTopRight","tbGradientCornerBottomLeft","tbGradientCornerBottomRight","tbGradientCornerTopLeftAlt","tbGradientCornerTopRightAlt","tbGradientCornerBottomLeftAlt","tbGradientCornerBottomRightAlt"]}, + {"name":"TextAlignment","kind":"enum","in":"Constants","values":["tbAlignTopLeft","tbAlignTopCenter","tbAlignTopRight","tbAlignMiddleLeft","tbAlignMiddleCenter","tbAlignMiddleRight","tbAlignBottomLeft","tbAlignBottomCenter","tbAlignBottomRight"]}, + {"name":"TextOverflowMode","kind":"enum","in":"Constants","values":["tbAllowPartialChars","tbDisallowPartialChars","tbAppendEllipsis","tbShrinkToFit"]}, + {"name":"DockMode","kind":"enum","in":"Constants","values":["tbDockNone","tbDockLeft","tbDockTop","tbDockRight","tbDockBottom","tbDockFill"]}, + {"name":"FontWeight","kind":"enum","in":"Constants","values":["tbThin","tbExtraLight","tbLight","tbNormal","tbMedium","tbSemiBold","tbBold","tbExtraBold","tbHeavy"]}, + {"name":"StartupPosition","kind":"enum","in":"Constants","values":["tbStartUpManual","tbStartUpCenterOwner","tbStartUpCenterScreen","tbStartUpWindowsDefault"]}, + {"name":"Customtate","kind":"enum","in":"Constants","values":["tbNormal","tbMinimized","tbMaximized"]}, + {"name":"BorderStyle","kind":"enum","in":"Constants","values":["tbNone","tbFixedSingle","tbFixedSizable","tbFixedDialog","tbFixedToolWindow","tbSizableToolWindow"]}, + {"name":"WindowState","kind":"enum","in":"Constants","values":["tbNormal","tbMinimized","tbMaximized"]}, + {"name":"SerializeInfo","kind":"type","in":"Constants","fields":["Pointer"],"members":{"RuntimeUISrzDeserialize":"function","RuntimeUISrzGetRootCLSID":"function","RuntimeUISrzGetRootClassDispatch":"function","RuntimeUISrzIsDesignMode":"function","RuntimeUISrzGetFormHWND":"function","RuntimeUISrzIsReportMode":"function","RuntimeUISrzIsRuntimeAdded":"function","RuntimeUISrzGetOrientationHint":"function"}}, + {"name":"Canvas","kind":"type","in":"Constants","fields":["Pointer"],"members":{"RuntimeUICCCanvasAddElement":"sub","RuntimeUICCGetDpiScaleFactor":"function","RuntimeUICCGetDpi":"function","RuntimeUICCGetWidth":"function","RuntimeUICCGetHeight":"function"}}, + {"name":"_CustomControlTimer","kind":"interface","members":{"Interval":"property","Enabled":"property"}}, + {"name":"_CustomControlTimerEvents","kind":"interface","members":{"OnTimer":"sub"}}, + {"name":"CustomControlTimer","kind":"coclass","default":"_CustomControlTimer","source":["_CustomControlTimerEvents"]}, + {"name":"_CustomControlContext","kind":"interface","members":{"GetSerializer":"function","Repaint":"sub","CreateTimer":"function","ChangeFocusedElement":"sub"}}, + {"name":"CustomControlContext","kind":"coclass","default":"_CustomControlContext"}, + {"name":"_CustomFormContext","kind":"interface","extends":"CustomControls._CustomControlContext","members":{"Show":"sub","Close":"sub"}}, + {"name":"CustomFormContext","kind":"coclass","default":"_CustomFormContext"}, + {"name":"ICustomControl","kind":"interface","members":{"Initialize":"sub","Destroy":"sub","Paint":"sub"}}, + {"name":"_CustomControlsCollection","kind":"interface","members":{"Count":"property","Item":"property","Add":"function","Remove":"sub","_NewEnum":"function"},"hiddenMembers":["_NewEnum"]}, + {"name":"CustomControlsCollection","kind":"coclass","default":"_CustomControlsCollection"}, + {"name":"ICustomForm","kind":"interface","members":{"Initialize":"sub","Destroy":"sub","Paint":"sub"}} + ] + }, + "CustomControlsPackage": { + "exports": ["CustomControlsPackage"], + "types": [ + {"name":"WaynesButtonState","kind":"class","public":false}, + {"name":"WaynesButton","kind":"class","control":true,"members":{"Click":"event","GotFocus":"event","LostFocus":"event","MouseMove":"event","MouseDown":"event","MouseUp":"event","MouseEnter":"event","MouseLeave":"event","KeyPress":"event","KeyDown":"event","KeyUp":"event","NormalState":"field","HoverState":"field","FocusedState":"field","PressedState":"field","Caption":"field"}}, + {"name":"WaynesForm","kind":"class","control":true,"members":{"Click":"event","Caption":"field","BackgroundFill":"field","WindowsOptions":"field","Show":"sub","StartupShow":"sub","Close":"sub"}}, + {"name":"WaynesFrame","kind":"class","control":true,"members":{"BackgroundFill":"field"}}, + {"name":"Column","kind":"class","members":{"Caption":"field","Width":"field","OnChanged":"event"}}, + {"name":"CellRenderingOptions","kind":"class","members":{"Fill":"field","TextRendering":"field","Borders":"field","Corners":"field","Cursor":"field","OnChanged":"event","New":"sub"}}, + {"name":"WaynesGrid","kind":"class","control":true,"members":{"GetCellText":"event","ColumnHeaderOptions":"field","RowHeaderOptions":"field","CellOptions":"field","HoverCellOptions":"field","SelectedCellOptions":"field","MultiSelectCellOptions":"field","HeaderRowHeight":"field","RowHeight":"field","SelectedCellX":"field","SelectedCellY":"field","SelectedFullColumnX":"field","SelectedFullRowY":"field","RowCount":"field","Columns":"field","VerticalLineOptions":"field","HorizontalLineOptions":"field","ResizerBar":"field","Repaint":"sub"}}, + {"name":"WaynesLabel","kind":"class","control":true,"members":{"BackgroundFill":"field","TextRendering":"field","Caption":"field"}}, + {"name":"WaynesSliderState","kind":"class","members":{"BackgroundFill":"field","BackgroundBorders":"field","BackgroundCorners":"field","BlockFill":"field","BlockBorders":"field","BlockCorners":"field","BlockWidth":"field","TextRendering":"field","OnChanged":"event","InitializeDefaultValues":"sub"}}, + {"name":"WaynesSlider","kind":"class","control":true,"members":{"MoveInterval":"field","WrapAround":"field","Value":"field","MinValue":"field","MaxValue":"field","StepValue":"field","PagingStepValue":"field","NormalState":"field","HoverState":"field","FocusedState":"field","Direction":"field","DisplayFormat":"field"}}, + {"name":"SliderDirection","kind":"enum","in":"WaynesSlider","values":["Horizontal","Vertical"]}, + {"name":"SliderDisplayValueFormat","kind":"enum","in":"WaynesSlider","values":["DisplayValue","DisplayPercentage","DisplayNone"]}, + {"name":"WaynesTextBoxState","kind":"class","members":{"BackgroundFill":"field","TextRendering":"field","Corners":"field","Borders":"field","SelectedBackgroundFill":"field","SelectedTextFill":"field","CaretFill":"field","CaretWidth":"field","DecorationERROR":"field","DecorationWARNING":"field","DecorationINFO":"field","OnChanged":"event","InitializeDefaultValues":"sub","InitializeDefaultValues_Focused":"sub"}}, + {"name":"WaynesTextBox","kind":"class","control":true,"members":{"NormalState":"field","HoverState":"field","FocusedState":"field","Value":"field"}}, + {"name":"WaynesTimer","kind":"class","control":true,"members":{"Timer":"event","Interval":"field","Enabled":"field"}}, + {"name":"Corner","kind":"class","public":false}, + {"name":"Corners","kind":"class","public":false}, + {"name":"Padding","kind":"class","public":false}, + {"name":"FillColorPoint","kind":"class","public":false}, + {"name":"FillColorPoints","kind":"class","public":false}, + {"name":"Border","kind":"class","public":false}, + {"name":"Borders","kind":"class","public":false}, + {"name":"Line","kind":"class","public":false}, + {"name":"WindowsFormOptions","kind":"class","public":false}, + {"name":"Anchors","kind":"class","public":false}, + {"name":"Fill","kind":"class","public":false}, + {"name":"FontStyle","kind":"class","public":false}, + {"name":"TextRendering","kind":"class","public":false}, + {"name":"TextDecorator","kind":"class","public":false}, + {"name":"Range","kind":"type","in":"TextDecorator","public":false}, + {"name":"TextDecoratorStyle","kind":"enum","in":"TextDecorator","values":["UnderlineSquiggle","UnderlineStraight","BackgroundFill","Caret","ForegroundFill"]}, + {"name":"TextDecorators","kind":"class","public":false}, + {"name":"UDTs","kind":"class","public":false}, + {"name":"MouseEvent","kind":"type","in":"UDTs","public":false}, + {"name":"KeyEvent","kind":"type","in":"UDTs","public":false}, + {"name":"FocusEvent","kind":"type","in":"UDTs","public":false}, + {"name":"CaretPosition","kind":"enum","in":"UDTs","values":["CaretPositionNone","CaretPositionStart","CaretPositionEnd"]}, + {"name":"SpecialKeyCodes","kind":"enum","in":"UDTs","values":["SelectAll","Copy","Paste","Cut"]}, + {"name":"ElementDescriptor","kind":"type","in":"UDTs","public":false}, + {"name":"BaseForm","kind":"class","public":false}, + {"name":"BaseControl","kind":"class","public":false}, + {"name":"BaseControlFocusable","kind":"class","public":false}, + {"name":"MathSupport","kind":"module","public":false}, + {"name":"ColorSupport","kind":"module","public":false} + ] + }, + "Assert": { + "exports": ["TwinBasicAssertions"], + "types": [ + {"name":"Exact","kind":"module","members":{"Succeed":"sub","Fail":"sub","Inconclusive":"sub","AreEqual":"sub","AreNotEqual":"sub","AreSame":"sub","AreNotSame":"sub","IsTrue":"sub","IsFalse":"sub","IsNothing":"sub","IsNotNothing":"sub","IsNull":"sub","IsNotNull":"sub","SequenceEquals":"sub","NotSequenceEquals":"sub"}}, + {"name":"Permissive","kind":"module","members":{"Succeed":"sub","Fail":"sub","Inconclusive":"sub","AreEqual":"sub","AreNotEqual":"sub","AreSame":"sub","AreNotSame":"sub","IsTrue":"sub","IsFalse":"sub","IsNothing":"sub","IsNotNothing":"sub","IsNull":"sub","IsNotNull":"sub","SequenceEquals":"sub","NotSequenceEquals":"sub"}}, + {"name":"Strict","kind":"module","members":{"Succeed":"sub","Fail":"sub","Inconclusive":"sub","AreEqual":"sub","AreNotEqual":"sub","AreSame":"sub","AreNotSame":"sub","IsTrue":"sub","IsFalse":"sub","IsNothing":"sub","IsNotNothing":"sub","IsNull":"sub","IsNotNull":"sub","SequenceEquals":"sub","NotSequenceEquals":"sub"}} + ] + }, + "VB": { + "exports": ["VB"], + "types": [ + {"name":"COMCTL32Module","kind":"module","public":false}, + {"name":"COMCTL32","kind":"type","in":"COMCTL32Module","public":false}, + {"name":"COMDLG32Module","kind":"module","public":false}, + {"name":"COMDLG32","kind":"type","in":"COMDLG32Module","public":false}, + {"name":"GDI32Module","kind":"module","public":false}, + {"name":"GDI32","kind":"type","in":"GDI32Module","public":false}, + {"name":"KERNEL32Module","kind":"module","public":false}, + {"name":"KERNEL32","kind":"type","in":"KERNEL32Module","public":false}, + {"name":"MPRModule","kind":"module","public":false}, + {"name":"MPR","kind":"type","in":"MPRModule","public":false}, + {"name":"OLE32Module","kind":"module","public":false}, + {"name":"OLE32","kind":"type","in":"OLE32Module","public":false}, + {"name":"OLEAUT32Module","kind":"module","public":false}, + {"name":"OLEAUT32","kind":"type","in":"OLEAUT32Module","public":false}, + {"name":"SHLWAPIModule","kind":"module","public":false}, + {"name":"SHLWAPI","kind":"type","in":"SHLWAPIModule","public":false}, + {"name":"USER32Module","kind":"module","public":false}, + {"name":"USER32","kind":"type","in":"USER32Module","public":false}, + {"name":"UXTHEMEModule","kind":"module","public":false}, + {"name":"UXTHEME","kind":"type","in":"UXTHEMEModule","public":false}, + {"name":"WINSPOOLModule","kind":"module","public":false}, + {"name":"WINSPOOL","kind":"type","in":"WINSPOOLModule","public":false}, + {"name":"BaseControl","kind":"class","public":false,"members":{"Tag":"field","ControlType":"field","New":"sub","Name":"property"}}, + {"name":"BaseControlActiveXExtender","kind":"class","public":false,"inherits":["VB.BaseControlRectDockable"]}, + {"name":"BaseControlFocusable","kind":"class","public":false,"inherits":["VB.BaseControlRectDockable","VB.BaseFont"],"members":{"Appearance":"field","New":"sub","Enabled":"property","Visible":"property","SetFocus":"sub","Refresh":"sub","ToolTipText":"property","VisualStyles":"property","Drag":"sub","ZOrder":"sub","MouseIcon":"property","hWnd":"property","MousePointer":"property","DragMode":"property","CausesValidation":"property","TabStop":"property","TabIndex":"property","DragIcon":"property"}}, + {"name":"BaseControlFocusableNoFont","kind":"class","public":false,"inherits":["VB.BaseControlRectDockable"],"members":{"New":"sub","Enabled":"property","Visible":"property","SetFocus":"sub","Drag":"sub","ZOrder":"sub","MouseIcon":"property","hWnd":"property","MousePointer":"property","DragMode":"property","CausesValidation":"property","TabStop":"property","TabIndex":"property","DragIcon":"property"}}, + {"name":"BaseControlNotFocusable","kind":"class","public":false,"inherits":["VB.BaseControlRect"],"members":{"Index":"property","New":"sub","Container":"property"}}, + {"name":"BaseControlNotFocusable2","kind":"class","public":false,"inherits":["VB.BaseControlRectDockable","VB.BaseFont"],"members":{"Appearance":"field","New":"sub","Enabled":"property","Visible":"property","SetFocus":"sub","Refresh":"sub","ToolTipText":"property","VisualStyles":"property","Move":"sub","Left":"property","Top":"property","Width":"property","Height":"property","Drag":"sub","ZOrder":"sub","MouseIcon":"property","hWnd":"property","MousePointer":"property","DragMode":"property","TabIndex":"property","DragIcon":"property"}}, + {"name":"BaseControlPoints","kind":"class","public":false,"inherits":["VB.BaseControl"],"members":{"New":"sub"}}, + {"name":"BaseControlRect","kind":"class","public":false,"inherits":["VB.BaseControl"],"members":{"New":"sub","Class_Terminate":"sub","Left":"property","Top":"property","Width":"property","Height":"property"}}, + {"name":"BaseControlRectDockable","kind":"class","public":false,"inherits":["VB.BaseControlRect"],"members":{"Index":"property","New":"sub","Anchors":"property","Container":"property","Move":"sub","Dock":"property"}}, + {"name":"BaseControlWindowless","kind":"class","public":false,"inherits":["VB.BaseControlRectDockable"]}, + {"name":"BaseControlWindowlessNoDrag","kind":"class","public":false,"inherits":["VB.BaseControlRectDockable"],"members":{"New":"sub","Refresh":"sub","ZOrder":"sub","Visible":"property","TabStop":"property","TabIndex":"property"}}, + {"name":"BaseControlWindowlessNoFocus","kind":"class","public":false,"inherits":["VB.BaseControlRectDockable"],"members":{"New":"sub","Drag":"sub","Refresh":"sub","ZOrder":"sub","Visible":"property","DragMode":"property","DragIcon":"property"}}, + {"name":"BaseControlWindowlessPoints","kind":"class","public":false,"inherits":["VB.BaseControlPoints"],"members":{"Index":"property","New":"sub","Container":"property","X1":"property","Y1":"property","X2":"property","Y2":"property","ZOrder":"sub","Visible":"property"}}, + {"name":"BaseFont","kind":"class","public":false,"members":{"Font":"field","FontBold":"property","FontItalic":"property","FontName":"property","FontSize":"property","FontStrikethru":"property","FontUnderline":"property","Class_Terminate":"sub"}}, + {"name":"BaseForm","kind":"class","public":false,"inherits":["VB.BaseControlRect"],"members":{"FormDesignerId":"field","Moveable":"field","Appearance":"field","MDIChild":"field","New":"sub","WindowState":"property","Caption":"property","ControlBox":"property","Enabled":"property","Visible":"property","Show":"sub","Hide":"sub","Refresh":"sub","StartupShow":"sub","Close":"sub","StartUpPosition":"property","MaxButton":"property","MinButton":"property","ShowInTaskbar":"property","ZOrder":"sub","MouseIcon":"property","hWnd":"property","BorderStyle":"property","MousePointer":"property","KeyPreview":"property","Controls":"property"}}, + {"name":"BaseMDIForm","kind":"class","public":false,"inherits":["VB.BaseControlRect"],"members":{"FormDesignerId":"field","Moveable":"field","Appearance":"field","New":"sub","WindowState":"property","Caption":"property","Enabled":"property","Visible":"property","Hide":"sub","Refresh":"sub","Show":"sub","StartupShow":"sub","Close":"sub","ZOrder":"sub","MouseIcon":"property","hWnd":"property","SyncMoveable":"sub","StartUpPosition":"property","MousePointer":"property","Controls":"property"}}, + {"name":"BasePropertyPage","kind":"class","public":false,"inherits":["VB.BaseControlRect"],"members":{"FormDesignerId":"field","HasDC":"field","Appearance":"field","Caption":"field","New":"sub","Refresh":"sub","MouseIcon":"property","hWnd":"property","MousePointer":"property","KeyPreview":"property","Controls":"property"}}, + {"name":"BaseUserControl","kind":"class","public":false,"inherits":["VB.BaseControlRect"],"members":{"Index":"property","FormDesignerId":"field","Appearance":"field","New":"sub","Enabled":"property","Refresh":"sub","MouseIcon":"property","hWnd":"property","MousePointer":"property","KeyPreview":"property","Controls":"property"}}, + {"name":"HDCModule","kind":"module","public":false}, + {"name":"HDC","kind":"type","in":"HDCModule","public":false}, + {"name":"HHCTRLModule","kind":"module","public":false}, + {"name":"HHCTRL","kind":"type","in":"HHCTRLModule","public":false}, + {"name":"HMENUModule","kind":"module","public":false}, + {"name":"HMENU","kind":"type","in":"HMENUModule","public":false}, + {"name":"HWNDModule","kind":"module","public":false}, + {"name":"HWND","kind":"type","in":"HWNDModule","public":false}, + {"name":"AnchorsConsts","kind":"module","public":false}, + {"name":"AnchorsData","kind":"type","in":"AnchorsConsts","public":false}, + {"name":"Anchors","kind":"class","members":{"New":"sub","Left":"property","Top":"property","Right":"property","Bottom":"property"}}, + {"name":"DataObjectReadOnly","kind":"class","public":false}, + {"name":"GUID2","kind":"type","in":"DataObjectReadOnly","public":false}, + {"name":"DROPFILES","kind":"type","in":"DataObjectReadOnly","public":false}, + {"name":"METAFILEPICT","kind":"type","in":"DataObjectReadOnly","public":false}, + {"name":"BMP_HEADER","kind":"type","in":"DataObjectReadOnly","public":false}, + {"name":"tbPICTDESC","kind":"type","in":"DataObjectReadOnly","public":false}, + {"name":"PICTDESC_BITMAP","kind":"type","in":"DataObjectReadOnly","public":false}, + {"name":"PICTDESC_ICON","kind":"type","in":"DataObjectReadOnly","public":false}, + {"name":"PICTDESC_METAFILE","kind":"type","in":"DataObjectReadOnly","public":false}, + {"name":"PICTDESC_ENHMETAFILE","kind":"type","in":"DataObjectReadOnly","public":false}, + {"name":"SimpleArrayEnumerator","kind":"class","public":false}, + {"name":"DataObjectFilesReadOnly","kind":"class","public":false}, + {"name":"DataObjectFormatReadOnly","kind":"class","public":false}, + {"name":"DataObjectFormatsReadOnly","kind":"class","public":false}, + {"name":"IgnoreMe","kind":"class","public":false}, + {"name":"DataObjectWriteOnlyEnumerator","kind":"class","public":false}, + {"name":"DataObjectFilesWrite","kind":"class","public":false}, + {"name":"DataObjectSource","kind":"class","public":false}, + {"name":"DataObjectData","kind":"type","in":"DataObjectSource","public":false}, + {"name":"OLEDropSource","kind":"class","public":false}, + {"name":"GeneralConsts","kind":"module","public":false}, + {"name":"COMBOBOXINFO","kind":"type","in":"GeneralConsts","public":false}, + {"name":"LOGFONT","kind":"type","in":"GeneralConsts","public":false}, + {"name":"TEXTMETRIC","kind":"type","in":"GeneralConsts","public":false}, + {"name":"MEASUREITEMSTRUCT","kind":"type","in":"GeneralConsts","public":false}, + {"name":"DRAWITEMSTRUCT","kind":"type","in":"GeneralConsts","public":false}, + {"name":"WINDOWPLACEMENT","kind":"type","in":"GeneralConsts","public":false}, + {"name":"UxThemeButtonParts","kind":"enum","in":"GeneralConsts","values":["BP_PUSHBUTTON","BP_RADIOBUTTON","BP_CHECKBOX","BP_GROUPBOX","BP_USERBUTTON"]}, + {"name":"UxThemeCheckBoxStates","kind":"enum","in":"GeneralConsts","values":["CBS_UNCHECKEDNORMAL","CBS_UNCHECKEDHOT","CBS_UNCHECKEDPRESSED","CBS_UNCHECKEDDISABLED","CBS_CHECKEDNORMAL","CBS_CHECKEDHOT","CBS_CHECKEDPRESSED","CBS_CHECKEDDISABLED","CBS_MIXEDNORMAL","CBS_MIXEDHOT","CBS_MIXEDPRESSED","CBS_MIXEDDISABLED"]}, + {"name":"UxThemeRadioButtonStates","kind":"enum","in":"GeneralConsts","values":["RBS_UNCHECKEDNORMAL","RBS_UNCHECKEDHOT","RBS_UNCHECKEDPRESSED","RBS_UNCHECKEDDISABLED","RBS_CHECKEDNORMAL","RBS_CHECKEDHOT","RBS_CHECKEDPRESSED","RBS_CHECKEDDISABLED"]}, + {"name":"DrawFrameTypes","kind":"enum","in":"GeneralConsts","values":["DFC_CAPTION","DFC_MENU","DFC_SCROLL","DFC_BUTTON","DFC_POPUPMENU","DFCS_CAPTIONCLOSE","DFCS_CAPTIONMIN","DFCS_CAPTIONMAX","DFCS_CAPTIONRESTORE","DFCS_CAPTIONHELP","DFCS_MENUARROW","DFCS_MENUCHECK","DFCS_MENUBULLET","DFCS_MENUARROWRIGHT","DFCS_SCROLLUP","DFCS_SCROLLDOWN","DFCS_SCROLLLEFT","DFCS_SCROLLRIGHT","DFCS_SCROLLCOMBOBOX","DFCS_SCROLLSIZEGRIP","DFCS_SCROLLSIZEGRIPRIGHT","DFCS_BUTTONCHECK","DFCS_BUTTONRADIOIMAGE","DFCS_BUTTONRADIOMASK","DFCS_BUTTONRADIO","DFCS_BUTTON3STATE","DFCS_BUTTONPUSH","DFCS_INACTIVE","DFCS_PUSHED","DFCS_CHECKED","DFCS_TRANSPARENT","DFCS_HOT","DFCS_ADJUSTRECT","DFCS_FLAT","DFCS_MONO"]}, + {"name":"OwnerDrawTypes","kind":"enum","in":"GeneralConsts","values":["ODT_MENU","ODT_LISTBOX","ODT_COMBOBOX","ODT_BUTTON","ODT_STATIC"]}, + {"name":"OwnerDrawActions","kind":"enum","in":"GeneralConsts","values":["ODA_DRAWENTIRE","ODA_SELECT","ODA_FOCUS"]}, + {"name":"BackgroundModes","kind":"enum","in":"GeneralConsts","values":["TRANSPARENT","OPAQUE"]}, + {"name":"WindowMessages","kind":"enum","in":"GeneralConsts","values":["WM_NULL","WM_CREATE","WM_DESTROY","WM_MOVE","WM_SIZE","WM_ACTIVATE","WM_SETFOCUS","WM_KILLFOCUS","WM_ENABLE","WM_SETREDRAW","WM_SETTEXT","WM_GETTEXT","WM_GETTEXTLENGTH","WM_PAINT","WM_CLOSE","WM_QUERYENDSESSION","WM_QUERYOPEN","WM_ENDSESSION","WM_QUIT","WM_ERASEBKGND","WM_SYSCOLORCHANGE","WM_SHOWWINDOW","WM_WININICHANGE","WM_SETTINGCHANGE","WM_DEVMODECHANGE","WM_ACTIVATEAPP","WM_FONTCHANGE","WM_TIMECHANGE","WM_CANCELMODE","WM_SETCURSOR","WM_MOUSEACTIVATE","WM_CHILDACTIVATE","WM_QUEUESYNC","WM_GETMINMAXINFO","WM_PAINTICON","WM_ICONERASEBKGND","WM_NEXTDLGCTL","WM_SPOOLERSTATUS","WM_DRAWITEM","WM_MEASUREITEM","WM_DELETEITEM","WM_VKEYTOITEM","WM_CHARTOITEM","WM_SETFONT","WM_GETFONT","WM_SETHOTKEY","WM_GETHOTKEY","WM_QUERYDRAGICON","WM_COMPAREITEM","WM_GETOBJECT","WM_COMPACTING","WM_COMMNOTIFY","WM_WINDOWPOSCHANGING","WM_WINDOWPOSCHANGED","WM_POWER","WM_COPYDATA","WM_CANCELJOURNAL","WM_NOTIFY","WM_INPUTLANGCHANGEREQUEST","WM_INPUTLANGCHANGE","WM_TCARD","WM_HELP","WM_USERCHANGED","WM_NOTIFYFORMAT","WM_CONTEXTMENU","WM_STYLECHANGING","WM_STYLECHANGED","WM_DISPLAYCHANGE","WM_GETICON","WM_SETICON","WM_NCCREATE","WM_NCDESTROY","WM_NCCALCSIZE","WM_NCHITTEST","WM_NCPAINT","WM_NCACTIVATE","WM_GETDLGCODE","WM_NCMOUSEMOVE","WM_NCLBUTTONDOWN","WM_NCLBUTTONUP","WM_NCLBUTTONDBLCLK","WM_NCRBUTTONDOWN","WM_NCRBUTTONUP","WM_NCRBUTTONDBLCLK","WM_NCMBUTTONDOWN","WM_NCMBUTTONUP","WM_NCMBUTTONDBLCLK","WM_NCXBUTTONDOWN","WM_NCXBUTTONUP","WM_NCXBUTTONDBLCLK","WM_INPUT_DEVICE_CHANGE","WM_INPUT","WM_KEYFIRST","WM_KEYDOWN","WM_KEYUP","WM_CHAR","WM_DEADCHAR","WM_SYSKEYDOWN","WM_SYSKEYUP","WM_SYSCHAR","WM_SYSDEADCHAR","WM_UNICHAR","UNICODE_NOCHAR","WM_IME_STARTCOMPOSITION","WM_IME_ENDCOMPOSITION","WM_IME_COMPOSITION","WM_IME_KEYLAST","WM_INITDIALOG","WM_COMMAND","WM_SYSCOMMAND","WM_TIMER","WM_HSCROLL","WM_VSCROLL","WM_INITMENU","WM_INITMENUPOPUP","WM_GESTURE","WM_GESTURENOTIFY","WM_MENUSELECT","WM_MENUCHAR","WM_ENTERIDLE","WM_MENURBUTTONUP","WM_MENUDRAG","WM_MENUGETOBJECT","WM_UNINITMENUPOPUP","WM_MENUCOMMAND","WM_CHANGEUISTATE","WM_UPDATEUISTATE","WM_QUERYUISTATE","WM_CTLCOLORMSGBOX","WM_CTLCOLOREDIT","WM_CTLCOLORLISTBOX","WM_CTLCOLORBTN","WM_CTLCOLORDLG","WM_CTLCOLORSCROLLBAR","WM_CTLCOLORSTATIC","WM_MOUSEFIRST","WM_MOUSEMOVE","WM_LBUTTONDOWN","WM_LBUTTONUP","WM_LBUTTONDBLCLK","WM_RBUTTONDOWN","WM_RBUTTONUP","WM_RBUTTONDBLCLK","WM_MBUTTONDOWN","WM_MBUTTONUP","WM_MBUTTONDBLCLK","WM_MOUSEWHEEL","WM_XBUTTONDOWN","WM_XBUTTONUP","WM_XBUTTONDBLCLK","WM_MOUSEHWHEEL","WM_PARENTNOTIFY","WM_ENTERMENULOOP","WM_EXITMENULOOP","WM_NEXTMENU","WM_SIZING","WM_CAPTURECHANGED","WM_MOVING","WM_POWERBROADCAST","WM_DEVICECHANGE","WM_MDICREATE","WM_MDIDESTROY","WM_MDIACTIVATE","WM_MDIRESTORE","WM_MDINEXT","WM_MDIMAXIMIZE","WM_MDITILE","WM_MDICASCADE","WM_MDIICONARRANGE","WM_MDIGETACTIVE","WM_MDISETMENU","WM_ENTERSIZEMOVE","WM_EXITSIZEMOVE","WM_DROPFILES","WM_MDIREFRESHMENU","WM_POINTERDEVICECHANGE","WM_POINTERDEVICEINRANGE","WM_POINTERDEVICEOUTOFRANGE","WM_TOUCH","WM_NCPOINTERUPDATE","WM_NCPOINTERDOWN","WM_NCPOINTERUP","WM_POINTERUPDATE","WM_POINTERDOWN","WM_POINTERUP","WM_POINTERENTER","WM_POINTERLEAVE","WM_POINTERACTIVATE","WM_POINTERCAPTURECHANGED","WM_TOUCHHITTESTING","WM_POINTERWHEEL","WM_POINTERHWHEEL","DM_POINTERHITTEST","WM_POINTERROUTEDTO","WM_POINTERROUTEDAWAY","WM_POINTERROUTEDRELEASED","WM_IME_SETCONTEXT","WM_IME_NOTIFY","WM_IME_CONTROL","WM_IME_COMPOSITIONFULL","WM_IME_SELECT","WM_IME_CHAR","WM_IME_REQUEST","WM_IME_KEYDOWN","WM_IME_KEYUP","WM_MOUSEHOVER","WM_MOUSELEAVE","WM_NCMOUSEHOVER","WM_NCMOUSELEAVE","WM_WTSSESSION_CHANGE","WM_TABLET_FIRST","WM_TABLET_LAST","WM_DPICHANGED","WM_DPICHANGED_BEFOREPARENT","WM_DPICHANGED_AFTERPARENT","WM_GETDPISCALEDSIZE","WM_CUT","WM_COPY","WM_PASTE","WM_CLEAR","WM_UNDO","WM_RENDERFORMAT","WM_RENDERALLFORMATS","WM_DESTROYCLIPBOARD","WM_DRAWCLIPBOARD","WM_PAINTCLIPBOARD","WM_VSCROLLCLIPBOARD","WM_SIZECLIPBOARD","WM_ASKCBFORMATNAME","WM_CHANGECBCHAIN","WM_HSCROLLCLIPBOARD","WM_QUERYNEWPALETTE","WM_PALETTEISCHANGING","WM_PALETTECHANGED","WM_HOTKEY","WM_PRINT","WM_PRINTCLIENT","WM_APPCOMMAND","WM_THEMECHANGED","WM_CLIPBOARDUPDATE","WM_DWMCOMPOSITIONCHANGED","WM_DWMNCRENDERINGCHANGED","WM_DWMCOLORIZATIONCOLORCHANGED","WM_DWMWINDOWMAXIMIZEDCHANGE","WM_DWMSENDICONICTHUMBNAIL","WM_DWMSENDICONICLIVEPREVIEWBITMAP","WM_GETTITLEBARINFOEX","WM_HANDHELDFIRST","WM_HANDHELDLAST","WM_AFXFIRST","WM_AFXLAST","WM_PENWINFIRST","WM_PENWINLAST","WM_APP","WM_USER"]}, + {"name":"WindowEnumerationMode","kind":"enum","in":"GeneralConsts","values":["GW_HWNDFIRST","GW_HWNDLAST","GW_HWNDNEXT","GW_HWNDPREV","GW_OWNER","GW_CHILD"]}, + {"name":"FontQuality","kind":"enum","in":"GeneralConsts","values":["DEFAULT_QUALITY","DRAFT_QUALITY","PROOF_QUALITY","NONANTIALIASED_QUALITY","ANTIALIASED_QUALITY","CLEARTYPE_QUALITY","CLEARTYPE_NATURAL_QUALITY"]}, + {"name":"RedrawFlags","kind":"enum","in":"GeneralConsts","values":["RDW_INVALIDATE","RDW_INTERNALPAINT","RDW_ERASE","RDW_VALIDATE","RDW_NOINTERNALPAINT","RDW_NOERASE","RDW_NOCHILDREN","RDW_ALLCHILDREN","RDW_UPDATENOW","RDW_ERASENOW","RDW_FRAME","RDW_NOFRAME"]}, + {"name":"WindowGDIObjectTypes","kind":"enum","in":"GeneralConsts","values":["OBJ_PEN","OBJ_BRUSH","OBJ_DC","OBJ_METADC","OBJ_PAL","OBJ_FONT","OBJ_BITMAP","OBJ_REGION","OBJ_METAFILE","OBJ_MEMDC","OBJ_EXTPEN","OBJ_ENHMETADC","OBJ_ENHMETAFILE","OBJ_COLORSPACE"]}, + {"name":"SCROLLINFO","kind":"type","in":"GeneralConsts","public":false}, + {"name":"SCROLLTYPE","kind":"enum","in":"GeneralConsts","values":["SB_HORZ","SB_VERT","SB_CTL","SB_BOTH"]}, + {"name":"SCROLLINFOMASK","kind":"enum","in":"GeneralConsts","values":["SIF_RANGE","SIF_PAGE","SIF_POS","SIF_DISABLENOSCROLL","SIF_TRACKPOS","SIF_ALL"]}, + {"name":"DriveType","kind":"enum","in":"GeneralConsts","values":["DRIVE_UNKNOWN","DRIVE_NO_ROOT_DIR","DRIVE_REMOVABLE","DRIVE_FIXED","DRIVE_REMOTE","DRIVE_CDROM","DRIVE_RAMDISK"]}, + {"name":"ISequentialStream","kind":"interface","public":false}, + {"name":"IStream","kind":"interface","public":false,"extends":"VB.ISequentialStream"}, + {"name":"STATSTG","kind":"type","in":"IStream","public":false}, + {"name":"IEnumSTATSTG","kind":"interface","public":false}, + {"name":"IStorage","kind":"interface","public":false}, + {"name":"IScheduledCallback","kind":"interface","public":false}, + {"name":"IDropTarget","kind":"interface","public":false}, + {"name":"DROPEFFECT","kind":"enum","in":"IDropTarget","values":["DROPEFFECT_NONE","DROPEFFECT_COPY","DROPEFFECT_MOVE","DROPEFFECT_LINK","DROPEFFECT_SCROLL"]}, + {"name":"IDropSource","kind":"interface","public":false}, + {"name":"Misc","kind":"module","public":false}, + {"name":"EnumWindowAtoms","kind":"enum","in":"Misc","values":["AtomIdx_ThunderMain","AtomIdx_ThunderFormDC","AtomIdx_ThunderForm","AtomIdx_ThunderPropertyPageDC","AtomIdx_ThunderPropertyPage","AtomIdx_ThunderMDIForm","AtomIdx_ThunderUserControlDC","AtomIdx_ThunderUserControl","AtomIdx_ThunderPictureBox","AtomIdx_ThunderPictureBoxDC","AtomIdx_ThunderFrame","AtomIdx_ThunderCommandButton","AtomIdx_ThunderCheckBox","AtomIdx_ThunderOptionButton","AtomIdx_ThunderHSrollBar","AtomIdx_ThunderVSrollBar","AtomIdx_ThunderListBox","AtomIdx_ThunderDirListBox","AtomIdx_ThunderFileListBox","AtomIdx_ThunderDriveListBox","AtomIdx_ThunderComboBox","AtomIdx_ThunderTextBox","AtomIdx_ThunderData","AtomIdx_ThunderGenericControl","AtomIdx_ThunderWebViewControl","AtomIdx_ThunderTreeView","AtomIdx_ThunderListView","AtomIdx_ThunderProgressBar","AtomIdx_ThunderDTPicker","AtomIdx_ThunderMonthView","AtomIdx_ThunderSlider","AtomIdx_ThunderUpDown","AtomIdx_VBBubbleRT6","AtomIdx_ThunderFusion","AtomIdx_ThunderCefBrowser"]}, + {"name":"WindowCreationData","kind":"type","in":"Misc","public":false}, + {"name":"BaseControlInfo","kind":"type","in":"Misc","public":false}, + {"name":"ObjectUDT","kind":"type","in":"Misc","public":false}, + {"name":"OLEDragDrop","kind":"module","public":false}, + {"name":"OLEDragDropHandler","kind":"class","public":false}, + {"name":"ScrollBarConsts","kind":"module","public":false}, + {"name":"ScrollBarStyles","kind":"enum","in":"ScrollBarConsts","values":["SBS_HORZ","SBS_VERT","SBS_TOPALIGN","SBS_LEFTALIGN","SBS_BOTTOMALIGN","SBS_RIGHTALIGN","SBS_SIZEBOXTOPLEFTALIGN","SBS_SIZEBOXBOTTOMRIGHTALIGN","SBS_SIZEBOX","SBS_SIZEGRIP"]}, + {"name":"ScrollBarMessages","kind":"enum","in":"ScrollBarConsts","values":["SBM_SETPOS","SBM_GETPOS","SBM_SETRANGE","SBM_SETRANGEREDRAW","SBM_GETRANGE","SBM_ENABLE_ARROWS","SBM_SETSCROLLINFO","SBM_GETSCROLLINFO","SBM_GETSCROLLBARINFO"]}, + {"name":"WindowsAPIPublic","kind":"module","public":false}, + {"name":"ShowWindowCommands","kind":"enum","in":"WindowsAPIPublic","values":["SW_HIDE","SW_SHOWNORMAL","SW_NORMAL","SW_SHOWMINIMIZED","SW_SHOWMAXIMIZED","SW_MAXIMIZE","SW_SHOWNOACTIVATE","SW_SHOW","SW_MINIMIZE","SW_SHOWMINNOACTIVE","SW_SHOWNA","SW_RESTORE","SW_SHOWDEFAULT","SW_FORCEMINIMIZE","SW_MAX"]}, + {"name":"SCROLLNOTIFY","kind":"enum","in":"WindowsAPIPublic","values":["SB_LINEUP","SB_LINELEFT","SB_LINEDOWN","SB_LINERIGHT","SB_PAGEUP","SB_PAGELEFT","SB_PAGEDOWN","SB_PAGERIGHT","SB_THUMBPOSITION","SB_THUMBTRACK","SB_TOP","SB_LEFT","SB_BOTTOM","SB_RIGHT","SB_ENDSCROLL"]}, + {"name":"WindowProperties","kind":"enum","in":"WindowsAPIPublic","values":["GWL_WNDPROC","GWL_HINSTANCE","GWL_HWNDPARENT","GWL_STYLE","GWL_EXSTYLE","GWL_USERDATA","GWL_ID"]}, + {"name":"SetWindowPosFlags","kind":"enum","in":"WindowsAPIPublic","values":["SWP_NOSIZE","SWP_NOMOVE","SWP_NOZORDER","SWP_NOREDRAW","SWP_NOACTIVATE","SWP_FRAMECHANGED","SWP_SHOWWINDOW","SWP_HIDEWINDOW","SWP_NOCOPYBITS","SWP_NOOWNERZORDER","SWP_NOSENDCHANGING"]}, + {"name":"WindowStyles","kind":"enum","in":"WindowsAPIPublic","values":["WS_OVERLAPPED","WS_POPUP","WS_CHILD","WS_MINIMIZE","WS_VISIBLE","WS_DISABLED","WS_CLIPSIBLINGS","WS_CLIPCHILDREN","WS_MAXIMIZE","WS_CAPTION","WS_BORDER","WS_DLGFRAME","WS_VSCROLL","WS_HSCROLL","WS_SYSMENU","WS_THICKFRAME","WS_GROUP","WS_TABSTOP","WS_MINIMIZEBOX","WS_MAXIMIZEBOX"]}, + {"name":"WindowExtendedStyles","kind":"enum","in":"WindowsAPIPublic","values":["WS_EX_RIGHT","WS_EX_LEFT","WS_EX_RTLREADING","WS_EX_LTRREADING","WS_EX_LEFTSCROLLBAR","WS_EX_RIGHTSCROLLBAR","WS_EX_DLGMODALFRAME","WS_EX_NOPARENTNOTIFY","WS_EX_TOPMOST","WS_EX_ACCEPTFILES","WS_EX_TRANSPARENT","WS_EX_MDICHILD","WS_EX_TOOLWINDOW","WS_EX_WINDOWEDGE","WS_EX_CLIENTEDGE","WS_EX_CONTEXTHELP","WS_EX_CONTROLPARENT","WS_EX_STATICEDGE","WS_EX_APPWINDOW","WS_EX_OVERLAPPEDWINDOW","WS_EX_PALETTEWINDOW","WS_EX_LAYERED","WS_EX_NOINHERITLAYOUT","WS_EX_NOREDIRECTIONBITMAP","WS_EX_LAYOUTRTL","WS_EX_COMPOSITED","WS_EX_NOACTIVATE"]}, + {"name":"WindowsAPI","kind":"module","public":false}, + {"name":"_WindowsControlsCollection","kind":"interface","public":false}, + {"name":"WindowsControlsCollection","kind":"coclass","public":false,"default":"_WindowsControlsCollection"}, + {"name":"IWindowsControl","kind":"interface","public":false}, + {"name":"WindowElementFlags","kind":"module","public":false}, + {"name":"EnumWindowElementFlags","kind":"enum","in":"WindowElementFlags","values":["ForwardGotFocus","ForwardLostFocus","ForwardButtonClick","ForwardKeyDown","ForwardKeyUp","ForwardKeyPress","ForwardMouseMove","ForwardMouseDown","ForwardMouseUp","ForwardDragOver","ForwardValidate","ForwardDoubleClick","ForwardEnsureEnabled","HasExclusiveValueWithinContainer","RequiresWindowlessPaintingWithoutEvents","RequiresWindowlessPaintingWithEvents","NeedsPrePostMessages","NotRectangular","EnforceTabStopAfterCreation","IsUserControl","IsContainer","ManualMouseCapture","ScaleAdjustMouseEvents","PreventActivation","MuteSpecialKeyBeeps","IsMDIForm","IsMDIChild","HasExclusiveCancelProp","HasExclusiveDefaultProp","IsReportMode","IsAngledControl","IgnoreWmCommandButtonClicks"]}, + {"name":"EnumWindowElementFlags2","kind":"enum","in":"WindowElementFlags","values":["IsActiveXWrapper","NeedsContainerMessages","AlwaysPaintInSnapshots","IsPropertyPage"]}, + {"name":"RuntimeUI","kind":"module","public":false}, + {"name":"WindowElement","kind":"type","in":"RuntimeUI","public":false}, + {"name":"ControlContext","kind":"type","in":"RuntimeUI","public":false}, + {"name":"SerializeInfo","kind":"type","in":"RuntimeUI","public":false}, + {"name":"AxInternalStateMod","kind":"module","public":false}, + {"name":"AxInternalState","kind":"type","in":"AxInternalStateMod","public":false}, + {"name":"IActiveXControlExtender","kind":"interface","public":false}, + {"name":"EmptyContainer","kind":"class","public":false}, + {"name":"ActiveXControlExtenderX","kind":"class","public":false,"inherits":["VB.BaseControlActiveXExtender"]}, + {"name":"ActiveXControlExtender","kind":"class","public":false,"control":true}, + {"name":"ActiveXControlExtenderBase","kind":"interface","public":false}, + {"name":"FusionBaseCtl","kind":"class","public":false,"inherits":["VB.BaseControlRectDockable"]}, + {"name":"Fusion","kind":"class","control":true,"members":{"__TempIgnoreMe":"event","New":"sub","Init1":"sub","_openAboutBox":"sub"},"hiddenMembers":["__TempIgnoreMe"]}, + {"name":"SharedFusionPortal","kind":"module","members":{"PortalHost":"field","CLngTrunc":"function"}}, + {"name":"FusionController","kind":"class","members":{"CreateInstance":"function","SetParent":"sub","GetObject":"function","Resize":"sub","OpenAboutBox":"sub","GetSnapshot":"function","Test":"function"}}, + {"name":"tbIConnectionPointContainer","kind":"interface","members":{"EnumConnectionPoints":"function","FindConnectionPoint":"function"}}, + {"name":"tbIConnectionPoint","kind":"interface","members":{"GetConnectionInterface":"sub","GetConnectionPointContainer":"function","Advise":"function","Unadvise":"sub","EnumConnections":"function"}}, + {"name":"tbIEnumConnections","kind":"interface","members":{"Next":"function","Skip":"sub","Reset":"sub","Clone":"function"}}, + {"name":"IEnumConnectionPoints","kind":"interface","members":{"Next":"function","Skip":"sub","Reset":"sub","Clone":"function"}}, + {"name":"InternalWinAPIDefs","kind":"module","public":false}, + {"name":"tbUUID","kind":"type","in":"InternalWinAPIDefs","public":false}, + {"name":"tbCONNECTDATA","kind":"type","in":"InternalWinAPIDefs","public":false}, + {"name":"HwndBaseCtl","kind":"class","inherits":["VB.BaseControlRectDockable"],"members":{"New":"sub","Parent":"property","hWnd":"property","PreProcessMessage":"sub","OnInitialize":"sub","OnResize":"sub","OnPaint":"sub","OnMessageBefore":"function","OnMessageAfter":"sub"}}, + {"name":"CheckBoxBaseCtl","kind":"class","public":false,"inherits":["VB.ButtonBase","VB.DataFieldBinderBase"],"members":{"OLEDropMode":"field","RightToLeft":"field","OLEDrag":"sub","HelpContextID":"field","WhatsThisHelpID":"field","ShowWhatsThis":"sub","Click":"event","GotFocus":"event","KeyDown":"event","KeyPress":"event","KeyUp":"event","LostFocus":"event","MouseDown":"event","MouseMove":"event","MouseUp":"event","Initialize":"event","DragDrop":"event","DragOver":"event","OLECompleteDrag":"event","OLEDragDrop":"event","OLEDragOver":"event","OLEGiveFeedback":"event","OLESetData":"event","OLEStartDrag":"event","Validate":"event","New":"sub","Caption":"property","Value":"property","_Default":"property","Alignment":"property","Parent":"property"}}, + {"name":"CheckBox","kind":"class","control":true,"inherits":["VB.CheckBoxBaseCtl"]}, + {"name":"CheckMarkBaseCtl","kind":"class","public":false,"inherits":["VB.BaseControlWindowlessNoFocus","VB.DataFieldBinderBase","VB.OLEDragDropHelper"],"members":{"BackColor":"field","TabIndex":"field","Appearance":"field","BackStyle":"field","VisualStyles":"field","Value":"field","OLEDrag":"sub","WhatsThisHelpID":"field","ShowWhatsThis":"sub","Click":"event","DblClick":"event","MouseDown":"event","MouseMove":"event","MouseUp":"event","Initialize":"event","DragDrop":"event","DragOver":"event","OLECompleteDrag":"event","OLEDragDrop":"event","OLEDragOver":"event","OLEGiveFeedback":"event","OLESetData":"event","OLEStartDrag":"event","New":"sub","_Default":"property","Parent":"property","ToolTipText":"property","MouseIcon":"property","MousePointer":"property","Enabled":"property"}}, + {"name":"CheckMark","kind":"class","control":true,"inherits":["VB.CheckMarkBaseCtl"]}, + {"name":"ComboBoxEDITSubclasser","kind":"class","public":false}, + {"name":"ComboBoxLISTSubclasser","kind":"class","public":false}, + {"name":"ShortPOINTS","kind":"type","in":"ComboBoxLISTSubclasser","public":false}, + {"name":"ComboBoxBaseCtl","kind":"class","public":false,"inherits":["VB.BaseControlFocusable","VB.DataFieldBinderBase"],"members":{"BackColor":"field","ForeColor":"field","Style":"field","BorderStyle":"field","Sorted":"field","IntegralHeight":"field","NewIndex":"field","WheelScrollEvent":"field","OLEDragMode":"field","OLEDropMode":"field","RightToLeft":"field","Opacity":"field","TransparencyKey":"field","MaxDropDownItems":"field","OLEDrag":"sub","HelpContextID":"field","WhatsThisHelpID":"field","ShowWhatsThis":"sub","Change":"event","Click":"event","DblClick":"event","DropDown":"event","GotFocus":"event","KeyDown":"event","KeyPress":"event","KeyUp":"event","LostFocus":"event","Scroll":"event","Initialize":"event","CloseUp":"event","DragDrop":"event","DragOver":"event","OLECompleteDrag":"event","OLEDragDrop":"event","OLEDragOver":"event","OLEGiveFeedback":"event","OLESetData":"event","OLEStartDrag":"event","Validate":"event","New":"sub","AddItem":"sub","RemoveItem":"sub","Clear":"sub","ItemData":"property","List":"property","ListCount":"property","TopIndex":"property","ListIndex":"property","Text":"property","_Default":"property","Locked":"property","Parent":"property","SelStart":"property","SelLength":"property","SelText":"property"}}, + {"name":"ComboBox","kind":"class","control":true,"inherits":["VB.ComboBoxBaseCtl"]}, + {"name":"CommandButtonBaseCtl","kind":"class","public":false,"inherits":["VB.ButtonBase"],"members":{"OLEDropMode":"field","Cancel":"field","Default":"field","RightToLeft":"field","Value":"field","OLEDrag":"sub","HelpContextID":"field","WhatsThisHelpID":"field","ShowWhatsThis":"sub","Click":"event","GotFocus":"event","KeyDown":"event","KeyPress":"event","KeyUp":"event","LostFocus":"event","MouseDown":"event","MouseMove":"event","MouseUp":"event","Initialize":"event","DragDrop":"event","DragOver":"event","OLECompleteDrag":"event","OLEDragDrop":"event","OLEDragOver":"event","OLEGiveFeedback":"event","OLESetData":"event","OLEStartDrag":"event","New":"sub","SyncRecreate":"sub","Caption":"property","Parent":"property","_Default":"property"}}, + {"name":"CommandButton","kind":"class","control":true,"inherits":["VB.CommandButtonBaseCtl"]}, + {"name":"TbDataControlPrivate","kind":"interface","public":false}, + {"name":"DataBaseCtl","kind":"class","public":false,"inherits":["VB.BaseControlFocusable","VB.OLEDragDropHelper"],"members":{"BackColor":"field","ForeColor":"field","BOFAction":"field","EOFAction":"field","Connect":"field","DatabaseName":"field","DefaultCursorType":"field","DefaultType":"field","Exclusive":"field","Negotiate":"field","Options":"field","ReadOnly":"field","RecordsetType":"field","RecordSource":"field","ShowWhatsThis":"sub","WhatsThisHelpID":"field","OLEDropMode":"field","RightToLeft":"field","_Default":"field","Database":"property","Recordset":"property","OLEDrag":"sub","UpdateRecord":"sub","MouseDown":"event","MouseMove":"event","MouseUp":"event","MouseWheel":"event","Initialize":"event","DragDrop":"event","DragOver":"event","Error":"event","OLECompleteDrag":"event","OLEDragDrop":"event","OLEDragOver":"event","OLEGiveFeedback":"event","OLESetData":"event","OLEStartDrag":"event","Reposition":"event","Resize":"event","Validate":"event","New":"sub","Caption":"property","hWnd":"property","Parent":"property","Refresh":"sub","UpdateControls":"sub","Align":"property"},"hiddenMembers":["Align"]}, + {"name":"CursorDriverEnum","kind":"enum","in":"DataBaseCtl","values":["dbUseDefaultCursor","dbUseODBCCursor","dbUseServerCursor","dbUseClientBatchCursor","dbUseNoCursor"]}, + {"name":"Data","kind":"class","control":true,"inherits":["VB.DataBaseCtl"]}, + {"name":"Data","kind":"class"}, + {"name":"DirListBoxGlobals","kind":"module","public":false}, + {"name":"DirListBoxBaseCtl","kind":"class","public":false,"inherits":["VB.BaseControlFocusable"],"members":{"BorderStyle":"field","BackColor":"field","ForeColor":"field","NewIndex":"field","OLEDragMode":"field","OLEDropMode":"field","IntegralHeight":"field","WheelScrollEvent":"field","Opacity":"field","TransparencyKey":"field","OLEDrag":"sub","HelpContextID":"field","WhatsThisHelpID":"field","ShowWhatsThis":"sub","Click":"event","Change":"event","GotFocus":"event","KeyDown":"event","KeyPress":"event","KeyUp":"event","MouseDown":"event","MouseMove":"event","MouseUp":"event","LostFocus":"event","Initialize":"event","DragDrop":"event","DragOver":"event","OLECompleteDrag":"event","OLEDragDrop":"event","OLEDragOver":"event","OLEGiveFeedback":"event","OLESetData":"event","OLEStartDrag":"event","Validate":"event","Scroll":"event","New":"sub","SyncDirs":"sub","AddItem":"sub","RemoveItem":"sub","Clear":"sub","List":"property","ListCount":"property","TopIndex":"property","ListIndex":"property","_Default":"property","Path":"property","PathSelected":"property","Refresh":"sub","Parent":"property"},"hiddenMembers":["AddItem","RemoveItem","Clear"]}, + {"name":"DirListBox","kind":"class","control":true,"inherits":["VB.DirListBoxBaseCtl"]}, + {"name":"DriveListBoxGlobals","kind":"module","public":false}, + {"name":"DriveListBoxLISTSubclasser","kind":"class","public":false}, + {"name":"DriveListBoxBaseCtl","kind":"class","public":false,"inherits":["VB.BaseControlFocusable"],"members":{"BackColor":"field","ForeColor":"field","WheelScrollEvent":"field","NewIndex":"field","OLEDropMode":"field","Opacity":"field","TransparencyKey":"field","OLEDrag":"sub","HelpContextID":"field","WhatsThisHelpID":"field","ShowWhatsThis":"sub","Change":"event","DropDown":"event","GotFocus":"event","KeyDown":"event","KeyPress":"event","KeyUp":"event","LostFocus":"event","Scroll":"event","Initialize":"event","CloseUp":"event","DragDrop":"event","DragOver":"event","Validate":"event","OLECompleteDrag":"event","OLEDragDrop":"event","OLEDragOver":"event","OLEGiveFeedback":"event","OLESetData":"event","OLEStartDrag":"event","New":"sub","AddItem":"sub","RemoveItem":"sub","Clear":"sub","List":"property","ListCount":"property","TopIndex":"property","ListIndex":"property","_Default":"property","Drive":"property","Refresh":"sub","Parent":"property"},"hiddenMembers":["AddItem","RemoveItem","Clear"]}, + {"name":"DriveListBox","kind":"class","control":true,"inherits":["VB.DriveListBoxBaseCtl"]}, + {"name":"FileListBoxBaseCtl","kind":"class","public":false,"inherits":["VB.BaseControlFocusable"],"members":{"BorderStyle":"field","BackColor":"field","ForeColor":"field","Archive":"field","Hidden":"field","Normal":"field","ReadOnly":"field","System":"field","MultiSelect":"field","Pattern":"field","WheelScrollEvent":"field","IntegralHeight":"field","Path":"field","Opacity":"field","TransparencyKey":"field","OLEDragMode":"field","OLEDropMode":"field","OLEDrag":"sub","HelpContextID":"field","WhatsThisHelpID":"field","ShowWhatsThis":"sub","Click":"event","DblClick":"event","PathChange":"event","PatternChange":"event","GotFocus":"event","KeyDown":"event","KeyPress":"event","KeyUp":"event","MouseDown":"event","MouseMove":"event","MouseUp":"event","LostFocus":"event","Initialize":"event","DragDrop":"event","DragOver":"event","OLECompleteDrag":"event","OLEDragDrop":"event","OLEDragOver":"event","OLEGiveFeedback":"event","OLESetData":"event","OLEStartDrag":"event","Validate":"event","Scroll":"event","New":"sub","SyncFiles":"sub","SelCount":"property","AddItem":"sub","RemoveItem":"sub","Clear":"sub","List":"property","ListCount":"property","TopIndex":"property","ListIndex":"property","FileName":"property","_Default":"property","PathWithBackslash":"property","Refresh":"sub","Selected":"property","Parent":"property","SelectedIndices":"function"},"hiddenMembers":["AddItem","RemoveItem","Clear"]}, + {"name":"FileListBox","kind":"class","control":true,"inherits":["VB.FileListBoxBaseCtl"]}, + {"name":"ITbCommonContainerPrivate","kind":"interface","public":false}, + {"name":"FormBaseCtl","kind":"class","public":false,"inherits":["VB.BaseForm","VB.GraphicsBase","VB.OLEDragDropHelper"],"members":{"Opacity":"field","TransparencyKey":"field","Palette":"field","LinkMode":"field","LinkTopic":"field","PaletteMode":"field","RightToLeft":"field","NegotiateMenus":"field","OLEDrag":"sub","PrintForm":"sub","Point":"function","ValidateControls":"sub","Activate":"event","Deactivate":"event","Initialize":"event","Load":"event","Click":"event","DblClick":"event","GotFocus":"event","KeyDown":"event","KeyPress":"event","KeyUp":"event","LostFocus":"event","MouseDown":"event","MouseMove":"event","MouseUp":"event","Paint":"event","Resize":"event","Terminate":"event","Unload":"event","DragDrop":"event","DragOver":"event","LinkClose":"event","LinkError":"event","LinkExecute":"event","LinkOpen":"event","OLECompleteDrag":"event","OLEDragDrop":"event","OLEDragOver":"event","OLEGiveFeedback":"event","OLESetData":"event","OLEStartDrag":"event","QueryUnload":"event","MouseWheel":"event","DPIChange":"event","PopUpMenu":"sub","DpiScaleFactorX":"property","DpiScaleFactorY":"property","ActiveControl":"property","HelpContextID":"field","WhatsThisHelp":"field","WhatsThisButton":"property","WhatsThisMode":"sub","_Default":"property","Count":"property","Icon":"property","Move":"sub","SetFocus":"sub","InternalEnumerator":"function","hDC":"property","TabFocusAutoSelect":"property","AlwaysShowKeyboardCues":"property","MinWidth":"property","MinHeight":"property","MaxWidth":"property","MaxHeight":"property","TopMost":"property","Width":"property","Height":"property"}}, + {"name":"Form","kind":"class","control":true,"inherits":["VB.FormBaseCtl"]}, + {"name":"FrameBaseCtl","kind":"class","public":false,"inherits":["VB.BaseControlNotFocusable2","VB.OLEDragDropHelper"],"members":{"BackColor":"field","ForeColor":"field","ClipControls":"field","BorderStyle":"field","RightToLeft":"field","Opacity":"field","MultiFramePosition":"field","MultiFrameSize":"field","OriginalMultiFramePosition":"field","TransparencyKey":"field","OLEDrag":"sub","HelpContextID":"field","WhatsThisHelpID":"field","ShowWhatsThis":"sub","Click":"event","DblClick":"event","MouseDown":"event","MouseMove":"event","MouseUp":"event","Initialize":"event","DragDrop":"event","DragOver":"event","OLECompleteDrag":"event","OLEDragDrop":"event","OLEDragOver":"event","OLEGiveFeedback":"event","OLESetData":"event","OLEStartDrag":"event","MouseWheel":"event","New":"sub","Caption":"property","Parent":"property","_Default":"property"}}, + {"name":"Frame","kind":"class","control":true,"inherits":["VB.FrameBaseCtl"]}, + {"name":"HScrollBarBaseCtl","kind":"class","public":false,"inherits":["VB.ScrollBarBase"],"members":{"New":"sub"}}, + {"name":"HScrollBar","kind":"class","control":true,"inherits":["VB.HScrollBarBaseCtl"]}, + {"name":"ImageBaseCtl","kind":"class","public":false,"inherits":["VB.BaseControlWindowlessNoFocus","VB.DataFieldBinderBase","VB.OLEDragDropHelper"],"members":{"BorderStyle":"field","Stretch":"field","Appearance":"field","Angle":"field","StretchMode":"field","PictureDpiScaling":"field","OLEDragMode":"field","OLEDrag":"sub","WhatsThisHelpID":"field","ShowWhatsThis":"sub","Click":"event","DblClick":"event","MouseDown":"event","MouseMove":"event","MouseUp":"event","Initialize":"event","DragDrop":"event","DragOver":"event","OLECompleteDrag":"event","OLEDragDrop":"event","OLEDragOver":"event","OLEGiveFeedback":"event","OLESetData":"event","OLEStartDrag":"event","New":"sub","Refresh":"sub","Parent":"property","Picture":"property","_Default":"property","ToolTipText":"property","MouseIcon":"property","MousePointer":"property","Enabled":"property"}}, + {"name":"StretchModeConstants","kind":"enum","in":"ImageBaseCtl","values":["vbStretchHalftone","vbStretchColorOnColor","vbStretchLanczos8","vbStretchLanczos3","vbStretchBicubic","vbStretchBilinear"]}, + {"name":"Image","kind":"class","control":true,"inherits":["VB.ImageBaseCtl"]}, + {"name":"LabelBaseCtl","kind":"class","public":false,"inherits":["VB.BaseControlWindowlessNoFocus","VB.DataFieldBinderBase","VB.OLEDragDropHelper"],"members":{"BorderStyle":"field","BorderCustomOptions":"property","BackColor":"field","ForeColor":"field","UseMnemonic":"field","Alignment":"field","VerticalAlignment":"field","Angle":"field","Font":"field","DataFieldAggregate":"field","DataFieldAggregateValue":"field","FontBold":"property","FontItalic":"property","FontName":"property","FontSize":"property","FontStrikethru":"property","FontUnderline":"property","TabIndex":"field","Appearance":"field","AutoSize":"field","BackStyle":"field","LinkItem":"field","LinkMode":"field","LinkTopic":"field","LinkTimeout":"field","RightToLeft":"field","WordWrap":"field","LineSpacing":"field","LinkExecute":"sub","LinkPoke":"sub","LinkRequest":"sub","LinkSend":"sub","OLEDrag":"sub","WhatsThisHelpID":"field","ShowWhatsThis":"sub","Change":"event","Click":"event","DblClick":"event","MouseDown":"event","MouseMove":"event","MouseUp":"event","Initialize":"event","DragDrop":"event","DragOver":"event","LinkClose":"event","LinkError":"event","LinkNotify":"event","LinkOpen":"event","OLECompleteDrag":"event","OLEDragDrop":"event","OLEDragOver":"event","OLEGiveFeedback":"event","OLESetData":"event","OLEStartDrag":"event","New":"sub","_Default":"property","Caption":"property","Parent":"property","ToolTipText":"property","MouseIcon":"property","MousePointer":"property","Enabled":"property"}}, + {"name":"AggregateConstants","kind":"enum","in":"LabelBaseCtl","values":["vbAggregateNone","vbAggregateSum"]}, + {"name":"Label","kind":"class","control":true,"inherits":["VB.LabelBaseCtl"]}, + {"name":"LineBaseCtl","kind":"class","public":false,"inherits":["VB.BaseControlWindowlessPoints"],"members":{"BorderColor":"field","BorderStyle":"field","BorderWidth":"field","DrawMode":"field","Initialize":"event","New":"sub","Parent":"property","_Default":"property"}}, + {"name":"Line","kind":"class","control":true,"inherits":["VB.LineBaseCtl"]}, + {"name":"ListBoxBaseCtl","kind":"class","public":false,"inherits":["VB.BaseControlFocusable","VB.DataFieldBinderBase"],"members":{"BorderStyle":"field","Sorted":"field","MultiSelect":"field","Style":"field","BackColor":"field","ForeColor":"field","IntegralHeight":"field","Columns":"field","NewIndex":"field","WheelScrollEvent":"field","MaxCheckboxSize":"field","UseTabStops":"field","RightToLeft":"field","Opacity":"field","TransparencyKey":"field","OLEDragMode":"field","OLEDropMode":"field","OLEDrag":"sub","HelpContextID":"field","WhatsThisHelpID":"field","ShowWhatsThis":"sub","Click":"event","DblClick":"event","GotFocus":"event","KeyDown":"event","KeyPress":"event","KeyUp":"event","LostFocus":"event","MouseDown":"event","MouseMove":"event","MouseUp":"event","ItemCheck":"event","Scroll":"event","Initialize":"event","DragDrop":"event","DragOver":"event","OLECompleteDrag":"event","OLEDragDrop":"event","OLEDragOver":"event","OLEGiveFeedback":"event","OLESetData":"event","OLEStartDrag":"event","Validate":"event","New":"sub","TopIndex":"property","ListIndex":"property","Text":"property","_Default":"property","SelCount":"property","AddItem":"sub","RemoveItem":"sub","Clear":"sub","List":"property","Selected":"property","ItemData":"property","ListCount":"property","Parent":"property","SelectedIndices":"function"}}, + {"name":"ListBox","kind":"class","control":true,"inherits":["VB.ListBoxBaseCtl"]}, + {"name":"MDIFormBaseCtl","kind":"class","public":false,"inherits":["VB.BaseMDIForm","VB.OLEDragDropHelper"],"members":{"TopMost":"field","Opacity":"field","TransparencyKey":"field","LinkMode":"field","LinkTopic":"field","RightToLeft":"field","NegotiateToolbars":"field","BackColor":"field","Picture":"field","PictureDpiScaling":"field","OLEDrag":"sub","PrintForm":"sub","Point":"function","ValidateControls":"sub","Activate":"event","Deactivate":"event","Initialize":"event","Load":"event","Click":"event","DblClick":"event","MouseDown":"event","MouseMove":"event","MouseUp":"event","Resize":"event","Terminate":"event","Unload":"event","DragDrop":"event","DragOver":"event","LinkClose":"event","LinkError":"event","LinkExecute":"event","LinkOpen":"event","OLECompleteDrag":"event","OLEDragDrop":"event","OLEDragOver":"event","OLEGiveFeedback":"event","OLESetData":"event","OLEStartDrag":"event","QueryUnload":"event","MouseWheel":"event","DPIChange":"event","New":"sub","PopUpMenu":"sub","DpiScaleFactorX":"property","DpiScaleFactorY":"property","ActiveControl":"property","ActiveForm":"property","Arrange":"sub","HelpContextID":"field","WhatsThisHelp":"field","WhatsThisMode":"sub","_Default":"property","Count":"property","Icon":"property","Move":"sub","SetFocus":"sub","InternalEnumerator":"function","ScaleWidth":"property","ScaleHeight":"property","FormPaintPicture":"sub","FormStartupShow":"sub","TabFocusAutoSelect":"property","AlwaysShowKeyboardCues":"property","MinWidth":"property","MinHeight":"property","MaxWidth":"property","MaxHeight":"property","AutoShowChildren":"property","Width":"property","Height":"property"}}, + {"name":"MDIForm","kind":"class","control":true,"inherits":["VB.MDIFormBaseCtl"]}, + {"name":"TbMenuPrivate","kind":"interface","public":false}, + {"name":"IVB6CompatMenu","kind":"interface","public":false}, + {"name":"MenuBaseCtl","kind":"class","public":false,"inherits":["VB.BaseControl"],"members":{"Caption":"field","Checked":"field","Visible":"field","HelpContextID":"field","WindowList":"field","NegotiatePosition":"field","Shortcut":"field","ShortcutId":"field","IconSizeX":"field","IconSizeY":"field","Click":"event","New":"sub","Index":"property","Container":"function","Parent":"property","Picture":"property","_Default":"property","Enabled":"property"},"hiddenMembers":["Shortcut"]}, + {"name":"MenuInternalData","kind":"type","in":"MenuBaseCtl","public":false}, + {"name":"Menu","kind":"class","control":true,"inherits":["VB.MenuBaseCtl"]}, + {"name":"Menu","kind":"class","control":true}, + {"name":"MultiFrameBaseCtl","kind":"class","public":false,"inherits":["VB.BaseControlWindowlessNoDrag"],"members":{"BackColor":"field","Direction":"field","FramesCount":"field","Initialize":"event","New":"sub","Parent":"property","InternalChangedSizeOfFrame":"sub","hWnd":"property","Container":"property","OnFramesCountChanged":"sub"}}, + {"name":"MultiFrameDirectionConstants","kind":"enum","in":"MultiFrameBaseCtl","values":["vbDirectionHorizontal","vbDirectionVertical"]}, + {"name":"MultiFrame","kind":"class","control":true,"inherits":["VB.MultiFrameBaseCtl"]}, + {"name":"OLEBaseCtl","kind":"class","public":false,"inherits":["VB.BaseControlFocusableNoFont"],"members":{"Appearance":"field","BackColor":"field","BorderStyle":"field","BackStyle":"field","AutoActivate":"field","AutoVerbMenu":"field","Class":"field","DisplayType":"field","HostName":"field","MiscFlags":"field","OLEDropAllowed":"field","OLETypeAllowed":"field","SizeMode":"field","SourceDoc":"field","SourceItem":"field","UpdateOptions":"field","Verb":"field","DataField":"field","ShowWhatsThis":"sub","HelpContextID":"field","WhatsThisHelpID":"field","DataChanged":"field","DataSource":"field","_Default":"field","Action":"field","AppIsRunning":"field","Data":"field","DataText":"field","FileNumber":"field","Format":"field","LpOleObject":"field","object":"field","ObjectAcceptFormats":"field","ObjectAcceptFormatsCount":"field","ObjectGetFormats":"field","ObjectGetFormatsCount":"field","ObjectVerbFlags":"field","ObjectVerbs":"field","ObjectVerbsCount":"field","OLEType":"field","PasteOK":"field","Picture":"field","Close":"sub","Copy":"sub","CreateEmbed":"sub","CreateLink":"sub","Delete":"sub","DoVerb":"sub","FetchVerbs":"sub","InsertObjDlg":"sub","Paste":"sub","PasteSpecialDlg":"sub","ReadFromFile":"sub","SaveToFile":"sub","SaveToOle1File":"sub","Update":"sub","Click":"event","DblClick":"event","GotFocus":"event","KeyDown":"event","KeyPress":"event","KeyUp":"event","LostFocus":"event","MouseDown":"event","MouseMove":"event","MouseUp":"event","Initialize":"event","DragDrop":"event","DragOver":"event","ObjectMove":"event","Resize":"event","Updated":"event","Validate":"event","New":"sub","Parent":"property"}}, + {"name":"OLE","kind":"class","control":true,"inherits":["VB.OLEBaseCtl"]}, + {"name":"OptionButtonBaseCtl","kind":"class","public":false,"inherits":["VB.ButtonBase"],"members":{"RightToLeft":"field","OLEDropMode":"field","OLEDrag":"sub","HelpContextID":"field","WhatsThisHelpID":"field","ShowWhatsThis":"sub","DragDrop":"event","DragOver":"event","OLECompleteDrag":"event","OLEDragDrop":"event","OLEDragOver":"event","OLEGiveFeedback":"event","OLESetData":"event","OLEStartDrag":"event","Validate":"event","Click":"event","DblClick":"event","GotFocus":"event","KeyDown":"event","KeyPress":"event","KeyUp":"event","LostFocus":"event","MouseDown":"event","MouseMove":"event","MouseUp":"event","Initialize":"event","New":"sub","SyncRecreate":"sub","Caption":"property","Value":"property","_Default":"property","Alignment":"property","Parent":"property"}}, + {"name":"OptionButton","kind":"class","control":true,"inherits":["VB.OptionButtonBaseCtl"]}, + {"name":"PictureBoxBaseCtl","kind":"class","public":false,"inherits":["VB.BaseControlFocusableNoFont","VB.GraphicsBase","VB.DataFieldBinderBase","VB.OLEDragDropHelper"],"members":{"BorderStyle":"field","Appearance":"field","AutoSize":"field","LinkItem":"field","LinkMode":"field","LinkTopic":"field","LinkTimeout":"field","RightToLeft":"field","Negotiate":"field","Opacity":"field","TransparencyKey":"field","LinkExecute":"sub","LinkPoke":"sub","LinkRequest":"sub","LinkSend":"sub","OLEDragMode":"field","OLEDrag":"sub","Point":"function","HelpContextID":"field","WhatsThisHelpID":"field","ShowWhatsThis":"sub","Click":"event","DblClick":"event","MouseDown":"event","MouseMove":"event","MouseUp":"event","Initialize":"event","Paint":"event","Resize":"event","Change":"event","DragDrop":"event","DragOver":"event","GotFocus":"event","LostFocus":"event","KeyDown":"event","KeyPress":"event","KeyUp":"event","LinkClose":"event","LinkError":"event","LinkNotify":"event","LinkOpen":"event","OLECompleteDrag":"event","OLEDragDrop":"event","OLEDragOver":"event","OLEGiveFeedback":"event","OLESetData":"event","OLEStartDrag":"event","Validate":"event","MouseWheel":"event","New":"sub","AutoSizeNow":"sub","Refresh":"sub","Parent":"property","_Default":"property","ToolTipText":"property","Align":"property"},"hiddenMembers":["Align"]}, + {"name":"PictureBox","kind":"class","control":true,"inherits":["VB.PictureBoxBaseCtl"]}, + {"name":"PropertyPage","kind":"class","control":true,"inherits":["VB.BasePropertyPage","VB.GraphicsBase","VB.OLEDragDropHelper"],"members":{"Palette":"field","HelpContextID":"field","StandardSize":"property","PaletteMode":"field","RightToLeft":"field","OLEDrag":"sub","Point":"function","ValidateControls":"sub","ApplyChanges":"event","Click":"event","DblClick":"event","DragDrop":"event","DragOver":"event","EditProperty":"event","GotFocus":"event","Initialize":"event","KeyDown":"event","KeyPress":"event","KeyUp":"event","LostFocus":"event","MouseDown":"event","MouseMove":"event","MouseUp":"event","OLECompleteDrag":"event","OLEDragDrop":"event","OLEDragOver":"event","OLEGiveFeedback":"event","OLESetData":"event","OLEStartDrag":"event","Paint":"event","SelectionChanged":"event","Terminate":"event","DPIChange":"event","DpiScaleFactorX":"property","DpiScaleFactorY":"property","ActiveControl":"property","_Default":"property","Count":"property","SetFocus":"sub","InternalEnumerator":"function","Width":"property","Height":"property","Changed":"property","SelectedControls":"property"}}, + {"name":"SelectedControls","kind":"class","public":false}, + {"name":"QRCodeBaseCtl","kind":"class","public":false,"inherits":["VB.BaseControlWindowlessNoFocus","VB.DataFieldBinderBase","VB.OLEDragDropHelper"],"members":{"BorderStyle":"field","Appearance":"field","OLEDragMode":"field","OLEDrag":"sub","WhatsThisHelpID":"field","ShowWhatsThis":"sub","Click":"event","DblClick":"event","MouseDown":"event","MouseMove":"event","MouseUp":"event","Initialize":"event","DragDrop":"event","DragOver":"event","OLECompleteDrag":"event","OLEDragDrop":"event","OLEDragOver":"event","OLEGiveFeedback":"event","OLESetData":"event","OLEStartDrag":"event","Square":"field","Payload":"field","ForeColor":"field","ModuleSize":"field","SquareModules":"field","EccMode":"field","EccBoost":"field","MinVersion":"field","MaxVersion":"field","MaskType":"field","New":"sub","Refresh":"sub","Parent":"property","Picture":"property","_Default":"property","ToolTipText":"property","MouseIcon":"property","MousePointer":"property","Enabled":"property"}}, + {"name":"QRCode","kind":"class","control":true,"inherits":["VB.QRCodeBaseCtl"]}, + {"name":"ITbRecordset","kind":"interface","members":{"EOF":"property","MoveNext":"sub","GetFieldBinder":"function"}}, + {"name":"ObjectFieldBinderByName","kind":"class","public":false}, + {"name":"ExpressionGenericFieldBinder","kind":"class","public":false}, + {"name":"ExpressionGenericRecordsetWrapper","kind":"class","public":false}, + {"name":"ReportPage","kind":"class","public":false}, + {"name":"ReportScrollElement","kind":"class","public":false}, + {"name":"ReportBaseCtl","kind":"class","public":false,"inherits":["VB.BaseForm","VB.GraphicsBase"],"members":{"PaperColor":"field","InternalControlSections":"field","TopMost":"field","Opacity":"field","TransparencyKey":"field","HelpContextID":"field","RightToLeft":"field","Activate":"event","Deactivate":"event","Initialize":"event","Load":"event","Click":"event","DblClick":"event","GotFocus":"event","KeyDown":"event","KeyPress":"event","KeyUp":"event","LostFocus":"event","MouseDown":"event","MouseMove":"event","MouseUp":"event","BeforePaintSection":"event","Resize":"event","Terminate":"event","Unload":"event","QueryUnload":"event","DPIChange":"event","Recordset":"property","ZoomStep":"field","Page":"field","Pages":"field","RecordNum":"field","ZoomPercent":"field","ZoomAutoFit":"field","PixelsReportWidth":"field","PixelsReportHeight":"field","PixelsLeftMargin":"field","PixelsRightMargin":"field","PixelsTopMargin":"field","PixelsBottomMargin":"field","DpiScaleFactorX":"property","DpiScaleFactorY":"property","Count":"property","Icon":"property","Move":"sub","SetFocus":"sub","InternalEnumerator":"function","hDC":"property","ChangePageSize":"property","PrintReport":"sub","MinWidth":"property","MinHeight":"property","MaxWidth":"property","MaxHeight":"property","Width":"property","Height":"property"}}, + {"name":"ZoomAutoFitConstants","kind":"enum","in":"ReportBaseCtl","values":["vbZoomAutoFit","vbZoomAutoFitOnce","vbZoomAutoFitNever"]}, + {"name":"Expression","kind":"type","in":"ReportBaseCtl","public":false}, + {"name":"ReportSizeConstants","kind":"enum","in":"ReportBaseCtl","values":[]}, + {"name":"PageRangeConstants","kind":"enum","in":"ReportBaseCtl","values":["rptRangeAllPages","rptRangeFromTo"]}, + {"name":"Report","kind":"class","control":true,"inherits":["VB.ReportBaseCtl"]}, + {"name":"ShapeBaseCtl","kind":"class","public":false,"inherits":["VB.BaseControlWindowlessNoDrag"],"members":{"BackColor":"field","BackStyle":"field","BorderColor":"field","BorderStyle":"field","BorderWidth":"field","DrawMode":"field","FillColor":"field","FillColorAlt":"field","FillStyle":"field","Shape":"field","RoundedCornerSize":"field","VariationA":"field","VariationB":"field","VariationC":"field","Angle":"field","Initialize":"event","New":"sub","Parent":"property","_Default":"property"}}, + {"name":"contigiousPoints30","kind":"type","in":"ShapeBaseCtl","public":false}, + {"name":"Shape","kind":"class","control":true,"inherits":["VB.ShapeBaseCtl"]}, + {"name":"TextBoxBaseCtl","kind":"class","public":false,"inherits":["VB.BaseControlFocusable","VB.DataFieldBinderBase"],"members":{"BackColor":"field","ForeColor":"field","MultiLine":"field","HideSelection":"field","ScrollBars":"field","MaxLength":"field","PasswordChar":"field","NumbersOnly":"field","WheelScrollEvent":"field","TextHint":"field","TextHintAlways":"field","BorderStyle":"field","OLEDragMode":"field","OLEDropMode":"field","Opacity":"field","TransparencyKey":"field","LinkItem":"field","LinkMode":"field","LinkTopic":"field","LinkTimeout":"field","RightToLeft":"field","LinkExecute":"sub","LinkPoke":"sub","LinkRequest":"sub","LinkSend":"sub","OLEDrag":"sub","HelpContextID":"field","WhatsThisHelpID":"field","ShowWhatsThis":"sub","Change":"event","Click":"event","DblClick":"event","GotFocus":"event","KeyDown":"event","KeyPress":"event","KeyUp":"event","LostFocus":"event","MouseDown":"event","MouseMove":"event","MouseUp":"event","Initialize":"event","DragDrop":"event","DragOver":"event","LinkClose":"event","LinkError":"event","LinkNotify":"event","LinkOpen":"event","OLECompleteDrag":"event","OLEDragDrop":"event","OLEDragOver":"event","OLEGiveFeedback":"event","OLESetData":"event","OLEStartDrag":"event","Validate":"event","Scroll":"event","MouseWheel":"event","New":"sub","SelStart":"property","SelLength":"property","SelText":"property","Text":"property","_Default":"property","Locked":"property","Alignment":"property","Parent":"property","TabFocusAutoSelect":"property"}}, + {"name":"TextBox","kind":"class","control":true,"inherits":["VB.TextBoxBaseCtl"]}, + {"name":"TimerBaseCtl","kind":"class","public":false,"inherits":["VB.BaseControlNotFocusable"],"members":{"Timer":"event","New":"sub","_Default":"property","Interval":"property","Parent":"property","Enabled":"property","OnTimer":"sub"}}, + {"name":"Timer","kind":"class","control":true,"inherits":["VB.TimerBaseCtl"]}, + {"name":"UcInternalStateMod","kind":"module","public":false}, + {"name":"UcInternalState","kind":"type","in":"UcInternalStateMod","public":false}, + {"name":"TbUserControlPrivate","kind":"interface","public":false}, + {"name":"UCRawControls2Enum","kind":"class","public":false}, + {"name":"UCParentControls2","kind":"class","public":false}, + {"name":"UCContainedControls","kind":"class","public":false}, + {"name":"AmbientPropertiesPassThru","kind":"class","public":false}, + {"name":"UcVerbEnumerator","kind":"class","public":false}, + {"name":"UserControlBaseCtl","kind":"class","public":false,"inherits":["VB.BaseUserControl","VB.GraphicsBase","VB.OLEDragDropHelper"],"members":{"ForceResizeToContainer":"field","ControlContainer":"field","AccessKeys":"field","Alignable":"field","BorderStyle":"field","BackStyle":"field","ClipBehavior":"field","DataBindingBehavior":"field","DataSourceBehavior":"field","DefaultCancel":"field","PreKeyEvents":"field","EditAtDesignTime":"field","ForwardFocus":"field","HitBehavior":"field","InvisibleAtRuntime":"field","PaletteMode":"field","Public":"field","RightToLeft":"field","Windowless":"field","MaskColor":"field","MaskPicture":"field","Palette":"field","Ambient":"property","AsyncRead":"sub","CancelAsyncRead":"sub","CanPropertyChange":"function","ContainedControls":"property","ContainerHwnd":"property","DataMemberChanged":"sub","DataMembers":"property","EventsFrozen":"property","Hyperlink":"property","ParentControls":"property","PopUpMenu":"sub","Size":"sub","ValidateControls":"sub","OLEDrag":"sub","Initialize":"event","Click":"event","DblClick":"event","GotFocus":"event","KeyDown":"event","KeyPress":"event","KeyUp":"event","LostFocus":"event","MouseDown":"event","MouseMove":"event","MouseUp":"event","PreKeyDown":"event","PreKeyUp":"event","Paint":"event","Resize":"event","Terminate":"event","DragDrop":"event","DragOver":"event","OLECompleteDrag":"event","OLEDragDrop":"event","OLEDragOver":"event","OLEGiveFeedback":"event","OLESetData":"event","OLEStartDrag":"event","InitProperties":"event","ReadProperties":"event","WriteProperties":"event","EnterFocus":"event","ExitFocus":"event","Show":"event","Hide":"event","AccessKeyPress":"event","AmbientChanged":"event","AsyncReadComplete":"event","AsyncReadProgress":"event","HitTest":"event","GetDataMember":"event","MouseWheel":"event","DPIChange":"event","VerbInvoked":"event","ExperimentalLog":"event","PropertyPages":"field","Verbs":"field","Width":"property","Height":"property","PreKeyWParam":"field","PreKeyLParam":"field","PreKeyTargetHwnd":"field","hWnd":"property","DpiScale":"property","PropertyChanged":"sub","Refresh":"sub","Extender":"property","SetFocus":"sub","Parent":"property","ActiveControl":"property","Count":"property","Point":"function","InternalEnumerator":"function","CanGetFocus":"property","OnGetBorderSize":"function"}}, + {"name":"VbClipBehavior","kind":"enum","in":"UserControlBaseCtl","values":["vbClipNone","vbClipUseRegion"]}, + {"name":"VbDataBindingBehavior","kind":"enum","in":"UserControlBaseCtl","values":["vbDataBindingNone","vbDataBindingSimple","vbDataBindingComplex"]}, + {"name":"VbDataSourceBehavior","kind":"enum","in":"UserControlBaseCtl","values":["vbDataSourceNone","vbDataSource"]}, + {"name":"VbHitTestBehavior","kind":"enum","in":"UserControlBaseCtl","values":["vbHitTestNone","vbHitTestUseRegion","vbHitTestPaint"]}, + {"name":"VerbInfo","kind":"type","in":"UserControlBaseCtl","public":false}, + {"name":"UserControl","kind":"class","control":true,"inherits":["VB.UserControlBaseCtl"]}, + {"name":"VScrollBarBaseCtl","kind":"class","public":false,"inherits":["VB.ScrollBarBase"],"members":{"New":"sub"}}, + {"name":"VScrollBar","kind":"class","control":true,"inherits":["VB.VScrollBarBaseCtl"]}, + {"name":"tbObjectDesigner_FORM","kind":"class","public":false}, + {"name":"tbObjectDesigner_MDIFORM","kind":"class","public":false}, + {"name":"tbObjectDesigner_PROPERTYPAGE","kind":"class","public":false}, + {"name":"tbObjectDesigner_USERCONTROL","kind":"class","public":false,"control":true}, + {"name":"StandardColor","kind":"class","public":false}, + {"name":"StandardDataFormat","kind":"class","public":false}, + {"name":"StandardFont","kind":"class","public":false}, + {"name":"StandardPicture","kind":"class","public":false}, + {"name":"AdodbFieldBinder","kind":"class","public":false}, + {"name":"BorderOptionsConstants","kind":"module","public":false}, + {"name":"BorderOption","kind":"type","in":"BorderOptionsConstants","public":false}, + {"name":"BorderOptions","kind":"type","in":"BorderOptionsConstants","public":false}, + {"name":"BorderOptionClass","kind":"class","public":false}, + {"name":"BorderOptionsClass","kind":"class","public":false}, + {"name":"ButtonBase","kind":"class","public":false,"inherits":["VB.BaseControlFocusable"],"members":{"BackColor":"field","ForeColor":"field","PictureDpiScaling":"field","PictureAlignment":"field","Padding":"field","Opacity":"field","TransparencyKey":"field","New":"sub","DisabledPicture":"property","DownPicture":"property","Picture":"property","MaskColor":"field","UseMaskColor":"field","Style":"field"}}, + {"name":"ButtonConsts","kind":"module","public":false}, + {"name":"ButtonStyles","kind":"enum","in":"ButtonConsts","values":["BS_PUSHBUTTON","BS_DEFPUSHBUTTON","BS_CHECKBOX","BS_AUTOCHECKBOX","BS_RADIOBUTTON","BS_3STATE","BS_AUTO3STATE","BS_GROUPBOX","BS_USERBUTTON","BS_AUTORADIOBUTTON","BS_PUSHBOX","BS_OWNERDRAW","BS_TYPEMASK","BS_LEFTTEXT","BS_TEXT","BS_ICON","BS_BITMAP","BS_LEFT","BS_RIGHT","BS_CENTER","BS_TOP","BS_BOTTOM","BS_VCENTER","BS_PUSHLIKE","BS_MULTILINE","BS_NOTIFY","BS_FLAT","BS_RIGHTBUTTON"]}, + {"name":"ButtonMessages","kind":"enum","in":"ButtonConsts","values":["BM_GETCHECK","BM_SETCHECK","BM_GETSTATE","BM_SETSTATE","BM_SETSTYLE","BM_CLICK","BM_GETIMAGE","BM_SETIMAGE","BM_SETDONTCLICK"]}, + {"name":"ButtonStateFlags","kind":"enum","in":"ButtonConsts","values":["BST_UNCHECKED","BST_CHECKED","BST_INDETERMINATE","BST_PUSHED","BST_FOCUS"]}, + {"name":"ButtonNotifications","kind":"enum","in":"ButtonConsts","values":["BN_CLICKED","BN_PAINT","BN_HILITE","BN_UNHILITE","BN_DISABLE","BN_DOUBLECLICKED","BN_PUSHED","BN_UNPUSHED","BN_DBLCLK","BN_SETFOCUS","BN_KILLFOCUS"]}, + {"name":"OwnerDrawState","kind":"enum","in":"ButtonConsts","values":["ODS_SELECTED","ODS_GRAYED","ODS_DISABLED","ODS_CHECKED","ODS_FOCUS","ODS_DEFAULT","ODS_HOTLIGHT","ODS_INACTIVE","ODS_NOACCEL","ODS_NOFOCUSRECT"]}, + {"name":"ComboBoxConsts","kind":"module","public":false}, + {"name":"ComboBoxStyles","kind":"enum","in":"ComboBoxConsts","values":["CBS_SIMPLE","CBS_DROPDOWN","CBS_DROPDOWNLIST","CBS_OWNERDRAWFIXED","CBS_OWNERDRAWVARIABLE","CBS_AUTOHSCROLL","CBS_OEMCONVERT","CBS_SORT","CBS_HASSTRINGS","CBS_NOINTEGRALHEIGHT","CBS_DISABLENOSCROLL","CBS_UPPERCASE","CBS_LOWERCASE"]}, + {"name":"ComboBoxMessages","kind":"enum","in":"ComboBoxConsts","values":["CB_GETEDITSEL","CB_LIMITTEXT","CB_SETEDITSEL","CB_ADDSTRING","CB_DELETESTRING","CB_DIR","CB_GETCOUNT","CB_GETCURSEL","CB_GETLBTEXT","CB_GETLBTEXTLEN","CB_INSERTSTRING","CB_RESETCONTENT","CB_FINDSTRING","CB_SELECTSTRING","CB_SETCURSEL","CB_SHOWDROPDOWN","CB_GETITEMDATA","CB_SETITEMDATA","CB_GETDROPPEDCONTROLRECT","CB_SETITEMHEIGHT","CB_GETITEMHEIGHT","CB_SETEXTENDEDUI","CB_GETEXTENDEDUI","CB_GETDROPPEDSTATE","CB_FINDSTRINGEXACT","CB_SETLOCALE","CB_GETLOCALE","CB_GETTOPINDEX","CB_SETTOPINDEX","CB_GETHORIZONTALEXTENT","CB_SETHORIZONTALEXTENT","CB_GETDROPPEDWIDTH","CB_SETDROPPEDWIDTH","CB_INITSTORAGE","CB_MULTIPLEADDSTRING","CB_GETCOMBOBOXINFO","CB_SETMINVISIBLE","CB_GETMINVISIBLE"]}, + {"name":"ComboBoxNotifications","kind":"enum","in":"ComboBoxConsts","values":["CBN_ERRSPACE","CBN_SELCHANGE","CBN_DBLCLK","CBN_SETFOCUS","CBN_KILLFOCUS","CBN_EDITCHANGE","CBN_EDITUPDATE","CBN_DROPDOWN","CBN_CLOSEUP","CBN_SELENDOK","CBN_SELENDCANCEL"]}, + {"name":"DriveInfo","kind":"enum","in":"ComboBoxConsts","values":["DDL_READWRITE","DDL_READONLY","DDL_HIDDEN","DDL_SYSTEM","DDL_DIRECTORY","DDL_ARCHIVE","DDL_POSTMSGSng","DDL_DRIVES","DDL_EXCLUSIVE"]}, + {"name":"ListBoxConsts","kind":"module","public":false}, + {"name":"StatusCodes","kind":"enum","in":"ListBoxConsts","values":["LB_ERR"]}, + {"name":"ListBoxStyles","kind":"enum","in":"ListBoxConsts","values":["LBS_NOTIFY","LBS_SORT","LBS_NOREDRAW","LBS_MULTIPLESEL","LBS_OWNERDRAWFIXED","LBS_OWNERDRAWVARIABLE","LBS_HASSTRINGS","LBS_USETABSTOPS","LBS_NOINTEGRALHEIGHT","LBS_MULTICOLUMN","LBS_WANTKEYBOARDINPUT","LBS_EXTENDEDSEL","LBS_DISABLENOSCROLL","LBS_NODATA","LBS_NOSEL","LBS_COMBOBOX"]}, + {"name":"ListBoxMessages","kind":"enum","in":"ListBoxConsts","values":["LB_ADDSTRING","LB_INSERTSTRING","LB_DELETESTRING","LB_SELITEMRANGEEX","LB_RESETCONTENT","LB_SETSEL","LB_SETCURSEL","LB_GETSEL","LB_GETCURSEL","LB_GETTEXT","LB_GETTEXTLEN","LB_GETCOUNT","LB_SELECTSTRING","LB_DIR","LB_GETTOPINDEX","LB_FINDSTRING","LB_GETSELCOUNT","LB_GETSELITEMS","LB_SETTABSTOPS","LB_GETHORIZONTALEXTENT","LB_SETHORIZONTALEXTENT","LB_SETCOLUMNWIDTH","LB_ADDFILE","LB_SETTOPINDEX","LB_GETITEMRECT","LB_GETITEMDATA","LB_SETITEMDATA","LB_SELITEMRANGE","LB_SETANCHORINDEX","LB_GETANCHORINDEX","LB_SETCARETINDEX","LB_GETCARETINDEX","LB_SETITEMHEIGHT","LB_GETITEMHEIGHT","LB_FINDSTRINGEXACT","LB_SETLOCALE","LB_GETLOCALE","LB_SETCOUNT","LB_INITSTORAGE","LB_ITEMFROMPOINT","LB_MULTIPLEADDSTRING"]}, + {"name":"ListBoxNotifications","kind":"enum","in":"ListBoxConsts","values":["LBN_ERRSPACE","LBN_SELCHANGE","LBN_DBLCLK","LBN_SELCANCEL","LBN_SETFOCUS","LBN_KILLFOCUS"]}, + {"name":"MenuConsts","kind":"module","public":false}, + {"name":"MENUBARINFO","kind":"type","in":"MenuConsts","public":false}, + {"name":"MENUITEMINFO","kind":"type","in":"MenuConsts","public":false}, + {"name":"StaticControlConsts","kind":"module","public":false}, + {"name":"StaticStyles","kind":"enum","in":"StaticControlConsts","values":["SS_LEFT","SS_CENTER","SS_RIGHT","SS_ICON","SS_BLACKRECT","SS_GRAYRECT","SS_WHITERECT","SS_BLACKFRAME","SS_GRAYFRAME","SS_WHITEFRAME","SS_USERITEM","SS_SIMPLE","SS_LEFTNOWORDWRAP","SS_OWNERDRAW","SS_BITMAP","SS_ENHMETAFILE","SS_ETCHEDHORZ","SS_ETCHEDVERT","SS_ETCHEDFRAME","SS_TYPEMASK","SS_REALSIZECONTROL","SS_NOPREFIX","SS_NOTIFY","SS_CENTERIMAGE","SS_RIGHTJUST","SS_REALSIZEIMAGE","SS_SUNKEN","SS_EDITCONTROL","SS_ENDELLIPSIS","SS_PATHELLIPSIS","SS_WORDELLIPSIS","SS_ELLIPSISMASK"]}, + {"name":"StaticMessages","kind":"enum","in":"StaticControlConsts","values":["STM_SETICON","STM_GETICON","STM_SETIMAGE","STM_GETIMAGE","STM_MSGMAX"]}, + {"name":"StaticNotifications","kind":"enum","in":"StaticControlConsts","values":["STN_CLICKED","STN_DBLCLK","STN_ENABLE","STN_DISABLE"]}, + {"name":"TextBoxConsts","kind":"module","public":false}, + {"name":"EditStyles","kind":"enum","in":"TextBoxConsts","values":["ES_LEFT","ES_CENTER","ES_RIGHT","ES_MULTILINE","ES_UPPERCASE","ES_LOWERCASE","ES_PASSWORD","ES_AUTOVSCROLL","ES_AUTOHSCROLL","ES_NOHIDESEL","ES_OEMCONVERT","ES_READONLY","ES_WANTRETURN","ES_NUMBER"]}, + {"name":"EditMessages","kind":"enum","in":"TextBoxConsts","values":["EM_GETSEL","EM_SETSEL","EM_GETRECT","EM_SETRECT","EM_SETRECTNP","EM_SCROLL","EM_LINESCROLL","EM_SCROLLCARET","EM_GETMODIFY","EM_SETMODIFY","EM_GETLINECOUNT","EM_LINEINDEX","EM_SETHANDLE","EM_GETHANDLE","EM_GETTHUMB","EM_LINELENGTH","EM_REPLACESEL","EM_GETLINE","EM_LIMITTEXT","EM_CANUNDO","EM_UNDO","EM_FMTLINES","EM_LINEFROMCHAR","EM_SETTABSTOPS","EM_SETPASSWORDCHAR","EM_EMPTYUNDOBUFFER","EM_GETFIRSTVISIBLELINE","EM_SETREADONLY","EM_SETWORDBREAKPROC","EM_GETWORDBREAKPROC","EM_GETPASSWORDCHAR","EM_SETMARGINS","EM_GETMARGINS","EM_SETLIMITTEXT","EM_GETLIMITTEXT","EM_POSFROMCHAR","EM_CHARFROMPOS","EM_SETIMESTATUS","EM_GETIMESTATUS","EM_ENABLEFEATURE","ECM_FIRST","EM_SETCUEBANNER","EM_GETCUEBANNER","EM_SHOWBALLOONTIP","EM_HIDEBALLOONTIP"]}, + {"name":"EditNotifications","kind":"enum","in":"TextBoxConsts","values":["EN_SETFOCUS","EN_KILLFOCUS","EN_CHANGE","EN_UPDATE","EN_ERRSPACE","EN_MAXTEXT","EN_HSCROLL","EN_VSCROLL","EN_ALIGN_LTR_EC","EN_ALIGN_RTL_EC","EN_BEFORE_PASTE","EN_AFTER_PASTE"]}, + {"name":"ColorPicker","kind":"module","public":false}, + {"name":"CHOOSECOLOR","kind":"type","in":"ColorPicker","public":false}, + {"name":"ControlsSection","kind":"class","public":false}, + {"name":"ControlsSectionType","kind":"enum","in":"ControlsSection","values":["Detail","ReportHeader","ReportFooter","PageHeader","PageFooter"]}, + {"name":"PageBreakConstants","kind":"enum","in":"ControlsSection","values":["rptPageBreakNone","rptPageBreakBefore","rptPageBreakAfter","rptPageBreakBeforeAndAfter"]}, + {"name":"SectionRenderState","kind":"type","in":"ControlsSection","public":false}, + {"name":"IDSCConnectionPoint","kind":"interface","public":false}, + {"name":"IDAOBaseInterface","kind":"interface","public":false}, + {"name":"IDAORecordset","kind":"interface","public":false,"extends":"VB.IDAOBaseInterface"}, + {"name":"DAORecordset","kind":"coclass","public":false,"default":"IDAORecordset","source":["IDSCConnectionPoint"]}, + {"name":"DAOPrivDBEngine","kind":"coclass","public":false,"hidden":true,"default":"IDAODBEngine"}, + {"name":"DAODBEngine","kind":"coclass","public":false,"hidden":true,"default":"IDAODBEngine"}, + {"name":"DAODBEngineACE","kind":"coclass","public":false,"hidden":true,"default":"IDAODBEngine"}, + {"name":"IDAODBEngine","kind":"interface","public":false}, + {"name":"DAODatabase","kind":"interface","public":false}, + {"name":"DAOField","kind":"coclass","public":false,"default":"IDAOField"}, + {"name":"IDAOField","kind":"interface","public":false}, + {"name":"DAOWorkspace","kind":"interface","public":false}, + {"name":"DataFieldBinderBase","kind":"class","public":false,"members":{"DataFormat":"field","DataMember":"field","DataChanged":"field","GetParent":"sub","SetLiveValue":"sub","GetLiveValue":"sub","DataField":"property","DataSource":"property"}}, + {"name":"FilePicker","kind":"module","public":false}, + {"name":"OPENFILENAMEW","kind":"type","in":"FilePicker","public":false}, + {"name":"_App","kind":"interface","public":false,"members":{"Path":"property","EXEName":"property","Title":"property","PrevInstance":"property","StartMode":"property","TaskVisible":"property","OleServerBusyTimeout":"property","OleServerBusyMsgTitle":"property","OleServerBusyMsgText":"property","OleServerBusyRaiseError":"property","OleRequestPendingTimeout":"property","OleRequestPendingMsgTitle":"property","OleRequestPendingMsgText":"property","Major":"property","Minor":"property","Revision":"property","Comments":"property","CompanyName":"property","FileDescription":"property","LegalCopyright":"property","LegalTrademarks":"property","ProductName":"property","hInstance":"property","NonModalAllowed":"property","LogPath":"property","LogMode":"property","UnattendedApp":"property","ThreadID":"property","HelpFile":"property","RetainedProject":"property","StartLogging":"sub","LogEvent":"sub","IsInIDE":"property","Build":"property","ModulePath":"property","LastBuildPath":"property","IsElevated":"property","FusionHostEXEPath":"property"}}, + {"name":"_Clipboard","kind":"interface","public":false,"members":{"Clear":"sub","GetData":"function","SetData":"sub","GetText":"function","SetText":"sub","GetFormat":"function"}}, + {"name":"_Screen","kind":"interface","public":false,"members":{"Height":"property","FontCount":"property","Fonts":"property","ActiveForm":"property","ActiveControl":"property","MousePointer":"property","TwipsPerPixelX":"function","TwipsPerPixelY":"function","MouseIcon":"property","Width":"property"}}, + {"name":"_Forms","kind":"interface","public":false}, + {"name":"VBGlobal","kind":"interface","public":false,"members":{"App":"property","Clipboard":"property","Screen":"property","Forms":"property","LoadResPicture":"function","LoadResData":"function","LoadResString":"function","LoadResIdList":"function","LoadPicture":"function","Load":"sub","Unload":"sub","Printer":"property","Printers":"property"}}, + {"name":"App","kind":"coclass","default":"_App"}, + {"name":"Clipboard","kind":"coclass","default":"_Clipboard"}, + {"name":"Screen","kind":"coclass","default":"_Screen"}, + {"name":"Global","kind":"coclass","default":"VBGlobal"}, + {"name":"IVBPrint","kind":"interface","public":false}, + {"name":"GraphicsGlobals","kind":"module","public":false}, + {"name":"PICTDESC_BITMAP","kind":"type","in":"GraphicsGlobals","public":false}, + {"name":"ICONINFO","kind":"type","in":"GraphicsGlobals","public":false}, + {"name":"contigiousPointsTriangle","kind":"type","in":"GraphicsGlobals","public":false}, + {"name":"TRIVERTEX","kind":"type","in":"GraphicsGlobals","public":false}, + {"name":"GRADIENT_RECT","kind":"type","in":"GraphicsGlobals","public":false}, + {"name":"GRADIENT_TRIANGLE","kind":"type","in":"GraphicsGlobals","public":false}, + {"name":"WorldTransformAngleData","kind":"type","in":"GraphicsGlobals","public":false}, + {"name":"XFORM","kind":"type","in":"GraphicsGlobals","public":false}, + {"name":"SafeLongLong","kind":"type","in":"GraphicsGlobals","public":false}, + {"name":"BITMAPINFOHEADER","kind":"type","in":"GraphicsGlobals","public":false}, + {"name":"BITMAPINFO_RGBA","kind":"type","in":"GraphicsGlobals","public":false}, + {"name":"BITMAPINFO_RGBA_LARGE","kind":"type","in":"GraphicsGlobals","public":false}, + {"name":"CIEXYZ","kind":"type","in":"GraphicsGlobals","public":false}, + {"name":"CIEXYZTRIPLE","kind":"type","in":"GraphicsGlobals","public":false}, + {"name":"BITMAPV5HEADER","kind":"type","in":"GraphicsGlobals","public":false}, + {"name":"V5BMPINFO","kind":"type","in":"GraphicsGlobals","public":false}, + {"name":"TextRenderPath","kind":"class","public":false}, + {"name":"TextRenderElement","kind":"type","in":"TextRenderPath","public":false}, + {"name":"GraphicsBase","kind":"class","public":false,"members":{"FontTransparent":"field","PictureDpiScaling":"field","hDC":"property","HasDC":"field","ClipControls":"field","BackColor":"field","ForeColor":"field","FillColor":"field","FillStyle":"field","DrawWidth":"field","DrawMode":"field","DrawStyle":"field","AutoRedraw":"field","ScaleMode":"field","New":"sub","Picture":"property","Cls":"sub","Circle":"sub","Line":"sub","PSet":"sub","Scale":"sub","Font":"field","FontBold":"property","FontItalic":"property","FontName":"property","FontSize":"property","FontStrikethru":"property","FontUnderline":"property","CurrentX":"property","CurrentY":"property","TextWidth":"function","TextHeight":"function","ScaleTop":"property","ScaleLeft":"property","ScaleWidth":"property","ScaleHeight":"property","ScaleX":"function","ScaleY":"function","PaintPicture":"sub","Image":"property"}}, + {"name":"BaseGraphicsInfo","kind":"type","in":"GraphicsBase","public":false}, + {"name":"VBPaintFlags","kind":"enum","in":"GraphicsBase","public":false}, + {"name":"tagLOGPEN","kind":"type","in":"GraphicsBase","public":false}, + {"name":"vbStretchQuality","kind":"enum","in":"GraphicsBase","values":["vbQualityNormal","vbQualityHalftone"]}, + {"name":"HelpSystem","kind":"module","public":false}, + {"name":"HH_POPUP","kind":"type","in":"HelpSystem","public":false}, + {"name":"HiddenModule2","kind":"module","members":{"CreateGlobalObject":"function","GetApphInstance":"function","GetAppThreadID":"function","GetAppPath":"function","GetAppEXEName":"function","GetAppIsInIDE":"function","GetAppMajor":"function","GetAppMinor":"function","GetAppRevision":"function","GetAppBuild":"function","GetAppModulePath":"function","GetAppComments":"function","GetAppCompanyName":"function","GetAppFileDescription":"function","GetAppLegalCopyright":"function","GetAppLegalTrademarks":"function","GetAppProductName":"function","GetAppLastBuildPath":"function","GetAppIsElevated":"function","GetAppPrevInstance":"function","GetAppTitle":"function","LetAppTitle":"sub","GetAppHelpFile":"function","LetAppHelpFile":"sub","GetAppLogMode":"function","ClipboardClear":"sub","ClipboardGetData":"function","ClipboardSetData":"sub","ClipboardGetText":"function","ClipboardSetText":"sub","ClipboardGetFormat":"function","ScreenGetHeight":"property","ScreenGetFontCount":"property","ScreenGetFonts":"property","ScreenGetActiveForm":"property","ScreenGetActiveControl":"property","ScreenGetMousePointer":"property","ScreenLetMousePointer":"sub","ScreenGetTwipsPerPixelX":"function","ScreenGetTwipsPerPixelY":"function","ScreenLetMouseIcon":"sub","ScreenGetMouseIcon":"property","ScreenSetMouseIcon":"sub","ScreenGetWidth":"property","FormsGetCount":"property","FormsGetItem":"property","FormsAdd":"property","GlobalLoadResPicture":"function","GlobalLoadResData":"function","GlobalLoadResString":"function","GlobalLoadResIdList":"function","GlobalLoadPicture":"function","GlobalLoad":"sub","GlobalUnload":"sub","FormsNewEnum":"function","IsFileFormatHLP":"function","GetFusionHostEXEPath":"function","LetFusionHostEXEPath":"sub"},"hiddenMembers":["CreateGlobalObject","GetApphInstance","GetAppThreadID","GetAppPath","GetAppEXEName","GetAppIsInIDE","GetAppMajor","GetAppMinor","GetAppRevision","GetAppBuild","GetAppModulePath","GetAppComments","GetAppCompanyName","GetAppFileDescription","GetAppLegalCopyright","GetAppLegalTrademarks","GetAppProductName","GetAppLastBuildPath","GetAppIsElevated","GetAppPrevInstance","GetAppTitle","LetAppTitle","GetAppHelpFile","LetAppHelpFile","GetAppLogMode","ClipboardClear","ClipboardGetData","ClipboardSetData","ClipboardGetText","ClipboardSetText","ClipboardGetFormat","ScreenGetHeight","ScreenGetFontCount","ScreenGetFonts","ScreenGetActiveForm","ScreenGetActiveControl","ScreenGetMousePointer","ScreenLetMousePointer","ScreenGetTwipsPerPixelX","ScreenGetTwipsPerPixelY","ScreenLetMouseIcon","ScreenGetMouseIcon","ScreenSetMouseIcon","ScreenGetWidth","FormsGetCount","FormsGetItem","FormsAdd","GlobalLoadResPicture","GlobalLoadResData","GlobalLoadResString","GlobalLoadResIdList","GlobalLoadPicture","GlobalLoad","GlobalUnload","FormsNewEnum","IsFileFormatHLP","GetFusionHostEXEPath","LetFusionHostEXEPath"]}, + {"name":"IdleMessageLoopBreak","kind":"module","public":false}, + {"name":"IPersist","kind":"interface","public":false}, + {"name":"IPersistStreamInit","kind":"interface","public":false,"extends":"VB.IPersist"}, + {"name":"IPersistStream","kind":"interface","public":false,"extends":"VB.IPersist"}, + {"name":"IPersistStorage","kind":"interface","public":false,"extends":"VB.IPersist"}, + {"name":"IPropertyBag","kind":"interface","public":false}, + {"name":"IPersistPropertyBag","kind":"interface","public":false,"extends":"VB.IPersist"}, + {"name":"IOleClientSite","kind":"interface","public":false}, + {"name":"IEnumOLEVERB","kind":"interface","public":false}, + {"name":"OLEVERB","kind":"type","in":"IEnumOLEVERB","public":false}, + {"name":"IOleLink","kind":"interface","public":false}, + {"name":"IOleObject","kind":"interface","public":false}, + {"name":"SIZEL","kind":"type","in":"IOleObject","public":false}, + {"name":"IOleControl","kind":"interface","public":false}, + {"name":"CONTROLINFO","kind":"type","in":"IOleControl","public":false}, + {"name":"MSG","kind":"type","in":"IOleControl","public":false}, + {"name":"ITypeInfo","kind":"interface","public":false}, + {"name":"IProvideClassInfo","kind":"interface","public":false}, + {"name":"ITypeComp","kind":"interface","public":false}, + {"name":"ITypeLib","kind":"interface","public":false}, + {"name":"IViewObject","kind":"interface","public":false}, + {"name":"IViewObject2","kind":"interface","public":false,"extends":"VB.IViewObject"}, + {"name":"IViewObjectEx","kind":"interface","public":false,"extends":"VB.IViewObject2"}, + {"name":"IUnsupportedInterface","kind":"interface","public":false}, + {"name":"ITwinBasicInternalClassSupport","kind":"interface","public":false}, + {"name":"IOleWindow","kind":"interface","public":false}, + {"name":"IOleInPlaceUIWindow","kind":"interface","public":false,"extends":"VB.IOleWindow"}, + {"name":"IOleInPlaceFrame","kind":"interface","public":false,"extends":"VB.IOleInPlaceUIWindow"}, + {"name":"OLEMENUGROUPWIDTHS","kind":"type","in":"IOleInPlaceFrame","public":false}, + {"name":"IOleInPlaceActiveObject","kind":"interface","public":false,"extends":"VB.IOleWindow"}, + {"name":"IOleInPlaceSite","kind":"interface","public":false,"extends":"VB.IOleWindow"}, + {"name":"OLEINPLACEFRAMEINFO","kind":"type","in":"IOleInPlaceSite","public":false}, + {"name":"IOleInPlaceSiteEx","kind":"interface","public":false,"extends":"VB.IOleInPlaceSite"}, + {"name":"IOleInPlaceSiteWindowless","kind":"interface","public":false,"extends":"VB.IOleInPlaceSiteEx"}, + {"name":"IOleInPlaceObject","kind":"interface","public":false,"extends":"VB.IOleWindow"}, + {"name":"IOleInPlaceObjectWindowless","kind":"interface","public":false,"extends":"VB.IOleInPlaceObject"}, + {"name":"IOleControlSite","kind":"interface","public":false}, + {"name":"POINTL","kind":"type","in":"IOleControlSite","public":false}, + {"name":"POINTF","kind":"type","in":"IOleControlSite","public":false}, + {"name":"ISpecifyPropertyPages","kind":"interface","public":false}, + {"name":"CAUUID","kind":"type","in":"ISpecifyPropertyPages","public":false}, + {"name":"IPerPropertyBrowsing","kind":"interface","public":false}, + {"name":"CALPOLESTR","kind":"type","in":"IPerPropertyBrowsing","public":false}, + {"name":"CADWORD","kind":"type","in":"IPerPropertyBrowsing","public":false}, + {"name":"ICategorizeProperties","kind":"interface","public":false}, + {"name":"IPropertyPage","kind":"interface","public":false}, + {"name":"PROPPAGEINFO","kind":"type","in":"IPropertyPage","public":false}, + {"name":"IPropertyPage2","kind":"interface","public":false,"extends":"VB.IPropertyPage"}, + {"name":"IPropertyPageSite","kind":"interface","public":false}, + {"name":"ITwinBasicDesignerExtensions","kind":"interface","public":false}, + {"name":"ITwinBasicDesignerExtensions2","kind":"interface","public":false}, + {"name":"ITwinBasicDesignerExtensions3","kind":"interface","public":false}, + {"name":"ITwinBasicRuntimeControlExtensions","kind":"interface","public":false}, + {"name":"IRunnableObject","kind":"interface","public":false}, + {"name":"IEnumUnknown","kind":"interface","public":false}, + {"name":"IParseDisplayName","kind":"interface","public":false}, + {"name":"IOleContainer","kind":"interface","public":false,"extends":"VB.IParseDisplayName"}, + {"name":"OLECONTF","kind":"enum","in":"IOleContainer","values":["OLECONTF_EMBEDDINGS","OLECONTF_LINKS","OLECONTF_OTHERS","OLECONTF_ONLYUSER","OLECONTF_ONLYIFRUNNING"]}, + {"name":"IObjectWithSite","kind":"interface","public":false}, + {"name":"ISimpleFrameSite","kind":"interface","public":false}, + {"name":"IVBGetControl","kind":"interface","public":false}, + {"name":"IPropertyNotifySink","kind":"interface","public":false}, + {"name":"ISupportsNotifySink","kind":"interface","public":false}, + {"name":"IDispatchInternal","kind":"interface","public":false}, + {"name":"InternalIID","kind":"type","in":"IDispatchInternal","public":false}, + {"name":"PropertyNotifySink","kind":"class","public":false}, + {"name":"OlePicture","kind":"interface","public":false}, + {"name":"IDataFormatDisp","kind":"interface","public":false}, + {"name":"StdDataFormatConsts","kind":"module","public":false}, + {"name":"FirstWeekOfYear","kind":"enum","in":"StdDataFormatConsts","values":["fmtWeekUseSystem","fmtFirstJan1","fmtFirstFourDays","fmtFirstFullWeek"]}, + {"name":"FirstDayOfWeek","kind":"enum","in":"StdDataFormatConsts","values":["fmtDayUseSystem","fmtSunday","fmtMonday","fmtTuesday","fmtWednesday","fmtThursday","fmtFriday","fmtSaturday"]}, + {"name":"FormatType","kind":"enum","in":"StdDataFormatConsts","values":["fmtGeneral","fmtCustom","fmtPicture","fmtObject","fmtCheckbox","fmtBoolean","fmtBytes"]}, + {"name":"IStdDataFormatDisp","kind":"interface","public":false}, + {"name":"StdDataFormat","kind":"class","public":false}, + {"name":"DataSourceListener","kind":"interface","public":false}, + {"name":"DataSource","kind":"interface","public":false}, + {"name":"Control","kind":"interface"}, + {"name":"IControlArrayCollection","kind":"interface","public":false}, + {"name":"IQuickActivate","kind":"interface","public":false}, + {"name":"QACONTAINER","kind":"type","in":"IQuickActivate","public":false}, + {"name":"QACONTROL","kind":"type","in":"IQuickActivate","public":false}, + {"name":"IPointerInactive","kind":"interface","public":false}, + {"name":"IEnumVARIANT_TB","kind":"interface","public":false,"hidden":true}, + {"name":"IAdodbRecordset15","kind":"interface","hidden":true,"members":{"Properties":"property","AbsolutePosition":"property","ActiveConnection":"property","BOF":"property","Bookmark":"property","CacheSize":"property","CursorType":"property","EOF":"property","Fields":"property","LockType":"property","MaxRecords":"property","RecordCount":"property","Source":"property","AddNew":"sub","CancelUpdate":"sub","Close":"sub","Delete":"sub","GetRows":"function","Move":"sub","MoveNext":"sub","MovePrevious":"sub","MoveFirst":"sub","MoveLast":"sub","Open":"sub","Requery":"sub","_xResync":"sub","Update":"sub","AbsolutePage":"property","EditMode":"property","Filter":"property","PageCount":"property","PageSize":"property","Sort":"property","Status":"property","State":"property","_xClone":"function","UpdateBatch":"sub","CancelBatch":"sub","CursorLocation":"property","NextRecordset":"function","Supports":"function","Collect":"property","MarshalOptions":"property","Find":"sub"},"hiddenMembers":["_xResync","_xClone","Collect"]}, + {"name":"IAdodbRecordsetEvents","kind":"interface","members":{"WillChangeField":"sub","FieldChangeComplete":"sub","WillChangeRecord":"sub","RecordChangeComplete":"sub","WillChangeRecordset":"sub","RecordsetChangeComplete":"sub","WillMove":"sub","MoveComplete":"sub","EndOfRecordset":"sub","FetchProgress":"sub","FetchComplete":"sub"}}, + {"name":"AdodbRecordset15","kind":"coclass","public":false,"default":"IAdodbRecordset15","source":["IAdodbRecordsetEvents"]}, + {"name":"IWindowElementEventsBaseControl","kind":"interface","public":false}, + {"name":"IWindowElementEventsBaseForm","kind":"interface","public":false}, + {"name":"IWindowElementEventsCommon","kind":"interface","public":false}, + {"name":"IWindowElementEventsCommonRoot","kind":"interface","public":false}, + {"name":"IWindowElementEventsAX","kind":"interface","public":false}, + {"name":"IWindowElementEventsUC","kind":"interface","public":false}, + {"name":"IWindowElementEventsGraphics","kind":"interface","public":false}, + {"name":"IWindowElementEventsCommonControls","kind":"interface","public":false}, + {"name":"MenuHelpers","kind":"module","public":false}, + {"name":"CommonInsertMenuControlARGS","kind":"type","in":"MenuHelpers","public":false}, + {"name":"Miscellaneous2","kind":"module","public":false}, + {"name":"POINT","kind":"type","in":"Miscellaneous2","public":false}, + {"name":"SIZE","kind":"type","in":"Miscellaneous2","public":false}, + {"name":"PropertyPageSharedState","kind":"type","in":"Miscellaneous2","public":false}, + {"name":"EnumStandardSize","kind":"enum","in":"Miscellaneous2","values":["StandardSizeCustom","StandardSizeSmall","StandardSizeLarge"]}, + {"name":"Miscellaneous","kind":"module","public":false}, + {"name":"tbRECT","kind":"type","in":"Miscellaneous","public":false}, + {"name":"PAINTSTRUCT","kind":"type","in":"Miscellaneous","public":false}, + {"name":"ACCEL","kind":"type","in":"Miscellaneous","public":false}, + {"name":"DISPID_AMBIENT","kind":"enum","in":"Miscellaneous","values":["DISPID_AUTOSIZE","DISPID_BACKCOLOR","DISPID_BACKSTYLE","DISPID_BORDERCOLOR","DISPID_BORDERSTYLE","DISPID_BORDERWIDTH","DISPID_DRAWMODE","DISPID_DRAWSTYLE","DISPID_DRAWWIDTH","DISPID_FILLCOLOR","DISPID_FILLSTYLE","DISPID_FONT","DISPID_FORECOLOR","DISPID_ENABLED","DISPID_HWND","DISPID_TABSTOP","DISPID_TEXT","DISPID_CAPTION","DISPID_BORDERVISIBLE","DISPID_APPEARANCE","DISPID_MOUSEPOINTER","DISPID_MOUSEICON","DISPID_PICTURE","DISPID_VALID","DISPID_READYSTATE","DISPID_LISTINDEX","DISPID_SELECTED","DISPID_LIST","DISPID_COLUMN","DISPID_LISTCOUNT","DISPID_MULTISELECT","DISPID_MAXLENGTH","DISPID_PASSWORDCHAR","DISPID_SCROLLBARS","DISPID_WORDWRAP","DISPID_MULTILINE","DISPID_NUMBEROFROWS","DISPID_NUMBEROFCOLUMNS","DISPID_DISPLAYSTYLE","DISPID_GROUPNAME","DISPID_IMEMODE","DISPID_ACCELERATOR","DISPID_ENTERKEYBEHAVIOR","DISPID_TABKEYBEHAVIOR","DISPID_SELTEXT","DISPID_SELSTART","DISPID_SELLENGTH","DISPID_REFRESH","DISPID_DOCLICK","DISPID_ABOUTBOX","DISPID_ADDITEM","DISPID_CLEAR","DISPID_REMOVEITEM","DISPID_CLICK","DISPID_DBLCLICK","DISPID_KEYDOWN","DISPID_KEYPRESS","DISPID_KEYUP","DISPID_MOUSEDOWN","DISPID_MOUSEMOVE","DISPID_MOUSEUP","DISPID_ERROREVENT","DISPID_READYSTATECHANGE","DISPID_CLICK_VALUE","DISPID_RIGHTTOLEFT","DISPID_TOPTOBOTTOM","DISPID_THIS","DISPID_AMBIENT_BACKCOLOR","DISPID_AMBIENT_DISPLAYNAME","DISPID_AMBIENT_FONT","DISPID_AMBIENT_FORECOLOR","DISPID_AMBIENT_LOCALEID","DISPID_AMBIENT_MESSAGEREFLECT","DISPID_AMBIENT_SCALEUNITS","DISPID_AMBIENT_TEXTALIGN","DISPID_AMBIENT_USERMODE","DISPID_AMBIENT_UIDEAD","DISPID_AMBIENT_SHOWGRABHANDLES","DISPID_AMBIENT_SHOWHATCHING","DISPID_AMBIENT_DISPLAYASDEFAULT","DISPID_AMBIENT_SUPPORTSMNEMONICS","DISPID_AMBIENT_AUTOCLIP","DISPID_AMBIENT_APPEARANCE","DISPID_AMBIENT_CODEPAGE","DISPID_AMBIENT_PALETTE","DISPID_AMBIENT_CHARSET","DISPID_AMBIENT_TRANSFERPRIORITY","DISPID_AMBIENT_RIGHTTOLEFT","DISPID_AMBIENT_TOPTOBOTTOM","DISPID_NAME","DISPID_DELETE","DISPID_OBJECT","DISPID_PARENT","DISPID_FONT_NAME","DISPID_FONT_SIZE","DISPID_FONT_BOLD","DISPID_FONT_ITALIC","DISPID_FONT_UNDER","DISPID_FONT_STRIKE","DISPID_FONT_WEIGHT","DISPID_FONT_CHARSET","DISPID_FONT_CHANGED","DISPID_PICT_HANDLE","DISPID_PICT_HPAL","DISPID_PICT_TYPE","DISPID_PICT_WIDTH","DISPID_PICT_HEIGHT","DISPID_PICT_RENDER"]}, + {"name":"OLEMISC","kind":"enum","in":"Miscellaneous","values":["OLEMISC_RECOMPOSEONRESIZE","OLEMISC_ONLYICONIC","OLEMISC_INSERTNOTREPLACE","OLEMISC_STATIC","OLEMISC_CANTLINKINSIDE","OLEMISC_CANLINKBYOLE1","OLEMISC_ISLINKOBJECT","OLEMISC_INSIDEOUT","OLEMISC_ACTIVATEWHENVISIBLE","OLEMISC_RENDERINGISDEVICEINDEPENDENT","OLEMISC_INVISIBLEATRUNTIME","OLEMISC_ALWAYSRUN","OLEMISC_ACTSLIKEBUTTON","OLEMISC_ACTSLIKELABEL","OLEMISC_NOUIACTIVATE","OLEMISC_ALIGNABLE","OLEMISC_SIMPLEFRAME","OLEMISC_SETCLIENTSITEFIRST","OLEMISC_IMEMODE","OLEMISC_IGNOREACTIVATEWHENVISIBLE","OLEMISC_WANTSTOMENUMERGE","OLEMISC_SUPPORTSMULTILEVELUNDO"]}, + {"name":"BorderStyles","kind":"enum","in":"Miscellaneous","values":["BDR_RAISEDOUTER","BDR_SUNKENOUTER","BDR_RAISEDINNER","BDR_SUNKENINNER","BDR_OUTER","BDR_INNER","BDR_RAISED","BDR_SUNKEN","EDGE_RAISED","EDGE_SUNKEN","EDGE_ETCHED","EDGE_BUMP"]}, + {"name":"BorderFlags","kind":"enum","in":"Miscellaneous","values":["BF_LEFT","BF_TOP","BF_RIGHT","BF_BOTTOM","BF_DIAGONAL","BF_MIDDLE","BF_SOFT","BF_ADJUST","BF_FLAT","BF_MONO","BF_TOPLEFT","BF_TOPRIGHT","BF_BOTTOMLEFT","BF_BOTTOMRIGHT","BF_RECT","BF_DIAGONAL_ENDTOPRIGHT","BF_DIAGONAL_ENDTOPLEFT","BF_DIAGONAL_ENDBOTTOMLEFT","BF_DIAGONAL_ENDBOTTOMRIGHT"]}, + {"name":"TEXTMETRICW","kind":"type","in":"Miscellaneous","public":false}, + {"name":"ENHMETAHEADER","kind":"type","in":"Miscellaneous","public":false}, + {"name":"DEVMODEW","kind":"type","in":"Miscellaneous","public":false}, + {"name":"DOCINFOW","kind":"type","in":"Miscellaneous","public":false}, + {"name":"VBControlExtender","kind":"class","members":{"GotFocus":"event"}}, + {"name":"OLEDragDropHelper","kind":"class","public":false,"members":{"OLEDropMode":"field","Class_Terminate":"sub"}}, + {"name":"PrintersHelper","kind":"module","public":false}, + {"name":"ITwinBasicPrinter","kind":"interface","public":false}, + {"name":"Printer","kind":"class","members":{"OutputFile":"field","New":"sub","hDC":"property","DeviceName":"property","DriverName":"property","Port":"property","ColorMode":"property","Duplex":"property","Copies":"property","PaperBin":"property","PrintQuality":"property","Orientation":"property","PaperSize":"property","Zoom":"property","Width":"property","Height":"property","EndDoc":"sub","KillDoc":"sub","NewPage":"sub","Page":"property","Circle":"sub","Line":"sub","PSet":"sub","CurrentX":"property","CurrentY":"property","DrawMode":"property","DrawStyle":"property","DrawWidth":"property","FillColor":"property","FillStyle":"property","Font":"property","FontBold":"property","FontItalic":"property","FontStrikethru":"property","FontTransparent":"property","FontUnderline":"property","FontName":"property","FontSize":"property","ForeColor":"property","PaintPicture":"sub","Scale":"sub","ScaleLeft":"property","ScaleTop":"property","ScaleWidth":"property","ScaleHeight":"property","ScaleMode":"property","ScaleX":"function","ScaleY":"function","TextWidth":"function","TextHeight":"function","FontCount":"property","Fonts":"property","RightToLeft":"field","TwipsPerPixelX":"property","TwipsPerPixelY":"property","TrackDefault":"property"}}, + {"name":"Printers","kind":"class","members":{"Item":"property","Count":"property","_NewEnum":"function"}}, + {"name":"PrintersGlobals","kind":"module","public":false,"hidden":true}, + {"name":"QRCodeHelper","kind":"module","public":false}, + {"name":"QRCodegenEccConstants","kind":"enum","in":"QRCodeHelper","values":["vbQRCodegenEccLow","vbQRCodegenEccMedium","vbQRCodegenEccQuartile","vbQRCodegenEccHigh"]}, + {"name":"QRCodegenMaskConstants","kind":"enum","in":"QRCodeHelper","values":["vbQRCodegenMaskAuto","vbQRCodegenMask0","vbQRCodegenMask1","vbQRCodegenMask2","vbQRCodegenMask3","vbQRCodegenMask4","vbQRCodegenMask5","vbQRCodegenMask6","vbQRCodegenMask7"]}, + {"name":"QRCodegenMode","kind":"enum","in":"QRCodeHelper","values":["vbQRCodegenModeNumeric","vbQRCodegenModeAlphanumeric","vbQRCodegenModeByte","vbQRCodegenModeKanji","vbQRCodegenModeEci"]}, + {"name":"QRCodegenSegment","kind":"type","in":"QRCodeHelper","public":false}, + {"name":"POINTAPI","kind":"type","in":"QRCodeHelper","public":false}, + {"name":"tbRECT","kind":"type","in":"QRCodeHelper","public":false}, + {"name":"tbPICTDESC","kind":"type","in":"QRCodeHelper","public":false}, + {"name":"BITMAPINFOHEADER","kind":"type","in":"QRCodeHelper","public":false}, + {"name":"Render","kind":"module","public":false}, + {"name":"BITMAP","kind":"type","in":"Render","public":false}, + {"name":"SAFEARRAYBOUND","kind":"type","in":"Render","public":false}, + {"name":"SAFEARRAY1D","kind":"type","in":"Render","public":false}, + {"name":"ScrollBarBase","kind":"class","public":false,"inherits":["VB.BaseControlFocusableNoFont"],"members":{"New":"sub","SmallChange":"field","RightToLeft":"field","Opacity":"field","TransparencyKey":"field","HelpContextID":"field","WhatsThisHelpID":"field","ShowWhatsThis":"sub","Change":"event","GotFocus":"event","KeyDown":"event","KeyPress":"event","KeyUp":"event","LostFocus":"event","Scroll":"event","Initialize":"event","DragDrop":"event","DragOver":"event","Validate":"event","OnDestroy":"sub","Min":"property","Max":"property","LargeChange":"property","Value":"property","SyncScrollBar":"sub","_Default":"property","Refresh":"sub","Parent":"property","VisualStyles":"property"}} + ] + }, + "VBA": { + "exports": ["VBA"], + "types": [ + {"name":"_Collection","kind":"interface","members":{"Item":"function","Add":"sub","Count":"property","Remove":"sub","Clear":"sub","Exists":"function","KeyCountHint":"property","KeyCompareMode":"property","Items":"function","Keys":"function","_NewEnum":"function"},"hiddenMembers":["_NewEnum"]}, + {"name":"Collection","kind":"coclass","default":"_Collection"}, + {"name":"Compilation","kind":"module","members":{"CurrentProjectName":"function","CurrentComponentName":"function","CurrentComponentCLSID":"function","CurrentProcedureName":"function","CurrentSourceFile":"function","ProcessorArchitecture":"function","CompilerVersion":"function"}}, + {"name":"Constants","kind":"module","members":{"vbNewLine":"const","vbCrLf":"const","vbCr":"const","vbLf":"const","vbBack":"const","vbFormFeed":"const","vbTab":"const","vbVerticalTab":"const","vbNullChar":"const","vbNullString":"const","vbObjectError":"const","vbNullPtr":"const"}}, + {"name":"VbAppWinStyle","kind":"enum","in":"Constants","values":["vbHide","vbNormalFocus","vbMinimizedFocus","vbMaximizedFocus","vbNormalNoFocus","vbMinimizedNoFocus"]}, + {"name":"VbCalendar","kind":"enum","in":"Constants","values":["vbCalGreg","vbCalHijri"]}, + {"name":"VbCallType","kind":"enum","in":"Constants","values":["vbMethod","vbGet","vbLet","vbSet"]}, + {"name":"VbCompareMethod","kind":"enum","in":"Constants","values":["vbBinaryCompare","vbTextCompare","vbDatabaseCompare"]}, + {"name":"VbDateTimeFormat","kind":"enum","in":"Constants","values":["vbGeneralDate","vbLongDate","vbShortDate","vbLongTime","vbShortTime"]}, + {"name":"VbDayOfWeek","kind":"enum","in":"Constants","values":["vbUseSystemDayOfWeek","vbSunday","vbMonday","vbTuesday","vbWednesday","vbThursday","vbFriday","vbSaturday"]}, + {"name":"VbFileAttribute","kind":"enum","in":"Constants","values":["vbNormal","vbReadOnly","vbHidden","VbSystem","vbVolume","vbDirectory","vbArchive","vbAlias"]}, + {"name":"VbFirstWeekOfYear","kind":"enum","in":"Constants","values":["vbUseSystem","vbFirstJan1","vbFirstFourDays","vbFirstFullWeek"]}, + {"name":"VbIMEStatus","kind":"enum","in":"Constants","values":["vbIMENoOp","vbIMEModeNoControl","vbIMEOn","vbIMEModeOn","vbIMEOff","vbIMEModeOff","vbIMEDisable","vbIMEModeDisable","vbIMEHiragana","vbIMEModeHiragana","vbIMEKatakanaDbl","vbIMEModeKatakana","vbIMEKatakanaSng","vbIMEModeKatakanaHalf","vbIMEAlphaDbl","vbIMEModeAlphaFull","vbIMEAlphaSng","vbIMEModeAlpha","vbIMEModeHangulFull","vbIMEModeHangul"]}, + {"name":"VbMsgBoxResult","kind":"enum","in":"Constants","values":["vbOK","vbCancel","vbAbort","vbRetry","vbIgnore","vbYes","vbNo","vbTryAgain","vbContinue"]}, + {"name":"VbMsgBoxStyle","kind":"enum","in":"Constants","values":["vbApplicationModal","vbDefaultButton1","vbOKOnly","vbOKCancel","vbAbortRetryIgnore","vbYesNoCancel","vbYesNo","vbRetryCancel","vbCancelTryAgainContinue","vbCritical","vbQuestion","vbInformation","vbExclamation","vbDefaultButton2","vbDefaultButton3","vbDefaultButton4","vbSystemModal","vbMsgBoxHelpButton","vbMsgBoxSetForeground","vbMsgBoxRight","vbMsgBoxRtlReading"]}, + {"name":"VbStrConv","kind":"enum","in":"Constants","values":["vbUpperCase","vbLowerCase","vbProperCase","vbWide","vbNarrow","vbKatakana","vbHiragana","vbUnicode","vbFromUnicode","vbUTF8","vbFromUTF8"]}, + {"name":"VbTriState","kind":"enum","in":"Constants","values":["vbTrue","vbFalse","vbUseDefault"]}, + {"name":"VbVarType","kind":"enum","in":"Constants","values":["vbEmpty","vbNull","vbInteger","vbLong","vbSingle","vbDouble","vbCurrency","vbDate","vbString","vbObject","vbError","vbBoolean","vbVariant","vbDataObject","vbDecimal","vbByte","vbLongLong","vbUserDefinedType","vbArray"]}, + {"name":"VbArchitecture","kind":"enum","in":"Constants","values":["vbArchWin32","vbArchWin64"]}, + {"name":"Conversion","kind":"module","members":{"Nz":"function","MacID":"function","Error$":"function","Error":"function","CVErr":"function","Fix":"function","Int":"function","Hex$":"function","Hex":"function","Oct$":"function","Oct":"function","Str$":"function","Str":"function","Val":"function","ValDec":"function","CVDate":"function","CBool":"function","CByte":"function","CCur":"function","CDate":"function","CDbl":"function","CDec":"function","CInt":"function","CLng":"function","CLngLng":"function","CLngPtr":"function","CSng":"function","CStr":"function","CVar":"function","CType":"function"}}, + {"name":"DateTime","kind":"module","members":{"Calendar":"property","Date$":"property","Date":"property","Time$":"property","Time":"property","Timer":"property","Now":"property","DateDiff":"function","Hour":"function","Day":"function","Minute":"function","Month":"function","Second":"function","Weekday":"function","Year":"function","TimeValue":"function","DateValue":"function","TimeSerial":"function","DateSerial":"function","DateAdd":"function","DatePart":"function"}}, + {"name":"_ErrObject","kind":"interface","members":{"Number":"property","Source":"property","Description":"property","HelpFile":"property","HelpContext":"property","Raise":"sub","Clear":"sub","LastDllError":"property","LastHresult":"property","ReturnHResult":"property"}}, + {"name":"ErrObject","kind":"coclass","default":"_ErrObject"}, + {"name":"ITbExpression","kind":"interface","members":{"Evaluate":"function"}}, + {"name":"ITbCustomBinder","kind":"interface","members":{"Bind":"function"}}, + {"name":"ITbExpressionService","kind":"interface","members":{"Compile":"function","AddStdLibraryBinder":"sub","AddCustomBinderObject":"sub","AddCustomBinder":"sub"}}, + {"name":"ExpressionEngineBinderFlags","kind":"enum","in":"ITbExpressionService","values":["IsAppObject"]}, + {"name":"TbExpressionService","kind":"coclass","default":"ITbExpressionService"}, + {"name":"FileSystem","kind":"module","members":{"_FileRename":"sub","FileAttr":"function","EOF":"function","FreeFile":"function","LOF":"function","Reset":"sub","Loc":"function","Seek":"function","FileDateTime":"function","FileLen":"function","SetAttr":"function","GetAttr":"function","MkDir":"sub","RmDir":"sub","ChDir":"sub","ChDrive":"sub","CurDir$":"function","CurDir":"function","FileCopy":"sub","Kill":"sub","Dir":"function"},"hiddenMembers":["_FileRename"]}, + {"name":"Financial","kind":"module","members":{"DDB":"function","FV":"function","Pmt":"function","IPmt":"function","PPmt":"function","SYD":"function","SLN":"function","PV":"function","IRR":"function","Rate":"function","NPV":"function","MIRR":"function","NPer":"function"}}, + {"name":"Information","kind":"module","members":{"Erl":"function","IMEStatus":"function","IsMissing":"function","IsDate":"function","IsNumeric":"function","IsError":"function","IsArray":"function","IsArrayInitialized":"function","IsEmpty":"function","IsNull":"function","IsObject":"function","VarType":"function","TypeName":"function","TranslateColor":"function","RGB":"function","RGBA":"function","RGB_R":"function","RGB_G":"function","RGB_B":"function","RGBA_A":"function","QBColor":"function","LBound":"function","UBound":"function","Err":"property"}}, + {"name":"Interaction","kind":"module","members":{"MsgBox":"function","InputBox":"function","IIf":"function","DoEvents":"function","Command$":"function","Command":"function","Choose":"function","GetObject":"function","CallByName":"function","CallByDispId":"function","RaiseEventByName":"function","RaiseEventByName2":"function","RaiseEventByNameAndIID":"function","RaiseEventByNameAndIID2":"function","GetSetting":"function","DeleteSetting":"sub","SaveSetting":"sub","GetAllSettings":"function","Beep":"sub","SendKeys":"sub","Environ$":"function","Environ":"function","Switch":"function","Partition":"function","MacScript":"function","Shell":"function","AppActivate":"sub","CreateObject":"function","If":"function"}}, + {"name":"Math","kind":"module","members":{"Atn":"function","Cos":"function","Sin":"function","Sqr":"function","Tan":"function","Exp":"function","Log":"function","Sgn":"function","Abs":"function","Round":"function","Rnd":"function","Randomize":"sub"}}, + {"name":"Strings","kind":"module","members":{"Asc":"function","AscW":"function","AscB":"function","Chr$":"function","Chr":"function","ChrW$":"function","ChrW":"function","ChrB$":"function","ChrB":"function","Mid$":"function","Mid":"function","MidB$":"function","MidB":"function","Left$":"function","Left":"function","LeftB$":"function","LeftB":"function","Right$":"function","Right":"function","RightB$":"function","RightB":"function","Space$":"function","Space":"function","String$":"function","String":"function","LTrim$":"function","LTrim":"function","RTrim$":"function","RTrim":"function","Trim$":"function","Trim":"function","MonthName":"function","WeekdayName":"function","StrReverse":"function","LCase$":"function","LCase":"function","UCase$":"function","UCase":"function","Format$":"function","Format":"function","FormatCurrency":"function","FormatNumber":"function","FormatPercent":"function","FormatDateTime":"function","StrComp":"function","StrConv":"function","Join":"function","Replace":"function","InStr$":"function","InStr":"function","InStrB":"function","InStrRev":"function","Filter":"function","Split":"function","Len$":"function","Len":"function","LenB$":"function","LenB":"function"}}, + {"name":"TextEncodingConstants","kind":"module","members":{"default_system_ansi":"const","utf_7":"const","utf_7_bom":"const","utf_8":"const","utf_8_bom":"const","utf_16":"const","utf_16_bom":"const","us_ascii":"const","koi8_u":"const","koi8_r":"const","big5":"const","iso_8859_1_latin1":"const","iso_8859_2_latin2":"const","iso_8859_3_latin3":"const","iso_8859_4_latin4":"const","iso_8859_5_cyrillic":"const","iso_8859_6_arabic":"const","iso_8859_7_greek":"const","iso_8859_8_hebrew":"const","iso_8859_9_latin5_turkish":"const","iso_8859_10_latin6_nordic":"const","iso_8859_11_thai":"const","iso_8859_13_latin8_baltic":"const","iso_8859_14_latin8_celtic":"const","iso_8859_15_latin9_euro":"const","iso_8859_16_latin10_balkan":"const","windows_1250_central_europe":"const","windows_1251_cyrillic":"const","windows_1252_western":"const","windows_1253_greek":"const","windows_1254_turkish":"const","windows_1255_hebrew":"const","windows_1256_arabic":"const","windows_1257_baltic":"const","windows_1258_vietnamese":"const","ibm_850_western_europe":"const","ibm_852_central_and_eastern_europe":"const","ibm_855_cyrillic":"const","ibm_856_hebrew":"const","ibm_857_turkish":"const","ibm_858_western_europe":"const","ibm_860_portuguese":"const","ibm_861_icelandic":"const","ibm_862_hebrew":"const","ibm_863_canadian":"const","ibm_865_danish":"const","ibm_866_cyrillic":"const","ibm_869_greek":"const","ibm_932_japanese":"const","ibm_949_korean":"const"},"hiddenMembers":["default_system_ansi","utf_7","utf_7_bom","utf_8","utf_8_bom","utf_16","utf_16_bom","us_ascii","koi8_u","koi8_r","big5","iso_8859_1_latin1","iso_8859_2_latin2","iso_8859_3_latin3","iso_8859_4_latin4","iso_8859_5_cyrillic","iso_8859_6_arabic","iso_8859_7_greek","iso_8859_8_hebrew","iso_8859_9_latin5_turkish","iso_8859_10_latin6_nordic","iso_8859_11_thai","iso_8859_13_latin8_baltic","iso_8859_14_latin8_celtic","iso_8859_15_latin9_euro","iso_8859_16_latin10_balkan","windows_1250_central_europe","windows_1251_cyrillic","windows_1252_western","windows_1253_greek","windows_1254_turkish","windows_1255_hebrew","windows_1256_arabic","windows_1257_baltic","windows_1258_vietnamese","ibm_850_western_europe","ibm_852_central_and_eastern_europe","ibm_855_cyrillic","ibm_856_hebrew","ibm_857_turkish","ibm_858_western_europe","ibm_860_portuguese","ibm_861_icelandic","ibm_862_hebrew","ibm_863_canadian","ibm_865_danish","ibm_866_cyrillic","ibm_869_greek","ibm_932_japanese","ibm_949_korean"]}, + {"name":"TestGeneric","kind":"class","members":{"Something":"sub"}}, + {"name":"_HiddenModule","kind":"module","hidden":true,"members":{"PictureToByteArray":"function","CreateGUID":"function","GetMem1":"sub","GetMem2":"sub","GetMem4":"sub","GetMem8":"sub","GetMemPtr":"sub","PutMem1":"sub","PutMem2":"sub","PutMem4":"sub","PutMem8":"sub","PutMemPtr":"sub","vbaObjAddref":"sub","vbaObjRelease":"sub","vbaObjSetAddref":"function","vbaObjSet":"function","vbaRefVarAry":"function","vbaAryMove":"sub","CreateStdPictureFromHandle":"function","RuntimeGetBitmapBits":"sub","RuntimeSetBitmapBits":"sub","RuntimeConvertBitmapToIcon":"sub","RuntimeConvertBitmap32ToIcon":"sub","RuntimeCreateScaledPicture":"function","RuntimeCreatePremultipliedRGBABitmap32bpp":"function","RuntimePrinterGetFonts":"sub","RuntimePatchGetClipBoxForHdc":"sub","RuntimeCreateExpressionService":"function","RuntimeCreateResampledBitmap":"function","Eval":"function","vbaCopyBytes":"function","vbaCopyBytesZero":"function","AllocMem":"function","FreeMem":"sub","SetThreadGlobalErrorTrap":"sub","SuppressRaiseEvents":"sub","DontInitNextCreatedCOMInstance":"sub","ExclusivitySectionEnter":"sub","ExclusivitySectionLeave":"sub","ClipboardGetTextInternal":"function","ClipboardSetTextInternal":"sub","LoadPictureInternal":"function","LoadResDataInternal":"function","CreateClassPropertyBagUCRead2":"function","CreateClassPropertyBagUCWrite2":"function","CreateClassPropertyBagUCRead":"function","CreateClassPropertyBagUCWrite":"function","GetPropertyBagUCWriterContents":"function","HasExclusiveDefaultDispatchValue":"function","ShowPropertyPages":"sub","SynchronizeWindowSizeWithParent":"sub","CreateCoreWebView2Environment":"sub","BringWindowToFront":"sub","CrashDAP":"sub","CrashLSP":"sub","CrashFS":"sub","CrashRoot":"sub","ObjPtr":"function","StrPtr":"function","ConvertIconToBitmap":"function","Input$":"function","Input":"function","InputB$":"function","InputB":"function","Width":"sub","_FileWidth":"sub","_InStrBreak":"function","CreateCollectionObject":"function","Array":"function","Int3Breakpoint":"sub","Emit":"sub","EmitAny":"sub","GetDeclaredTypeProgId":"function","GetDeclaredTypeIid":"function","GetDeclaredTypeEventIid":"function","GetDeclaredTypeClsid":"function","GetDeclaredMinEnumValue":"function","GetDeclaredMaxEnumValue":"function","StackOffset":"function","StackArgsSize":"function","UnprotectedAccess":"function","CheckBadFPUInstruction":"sub","VarPtr":"function","InternalDebugHoverEval":"function","GetErrNumber":"function","LetErrNumber":"sub","GetErrSource":"function","LetErrSource":"sub","GetErrDescription":"function","LetErrDescription":"sub","GetErrHelpFile":"function","LetErrHelpFile":"sub","GetErrHelpContext":"function","LetErrHelpContext":"sub","ErrRaise":"sub","ErrClear":"sub","GetErrLastDllError":"function","LetErrLastDllError":"sub","GetErrLastHresult":"function","GetErrReturnHResult":"function","LetErrReturnHResult":"sub","EnsureContainerIsLoaded":"sub","ResetFirstMethodAccessFlag":"sub","MemZero":"sub","GetClasInstanceAxMiscFlags":"sub","GetClassInstanceSerializer":"function","GetClassInstanceRefCount":"function","RuntimeGetChildControlsList":"function","RuntimeCreateGetMessageHook":"function","vbaCastObj":"function","InterlockedExchangePointer":"function","InterlockedCompareExchangePointer":"function","InterlockedCompareExchange32":"function","InterlockedCompareExchange64":"function","InterlockedIncrement32":"function","InterlockedDecrement32":"function","GetShortcutTextByEnum":"function","RuntimeSetWithEvents":"function","RuntimeReadFileDataBase64":"function","RuntimeRaisePropertyNotifySinkChangedEvent":"sub","RuntimeGetPropertyPageClsidByName":"sub","RuntimeMapDispIdToPropertyPageClsid":"function","RuntimeGetTypeInfoPropertyList":"function","RuntimeCreateRecurseProtectedObjectWrapper":"function","GetInheritedOwner":"function","SetClassOverrideDispatch":"sub","RuntimeSharedMemCreateHost":"function","RuntimeSharedMemCreateClient":"function","RuntimeSharedMemSendMessage":"sub","RuntimeSharedMemReceiveMessage":"function","RuntimeFusionRegisterInterface":"sub","RuntimeFusionRegisterClass":"sub","RuntimeFusionCreateObject":"function","RuntimeFusionCreatePortalHost":"function","RuntimeFusionCreatePortalClient":"function","RuntimeFusionSetChannelNotificationCallback":"sub","RuntimeFusionCreateLinkedChannel":"sub","RuntimeFusionJoinLinkedChannel":"sub","RuntimeFusionProcessMessage":"sub","RuntimeFusionGetThreadID":"function","RuntimeSetActiveXInitializationOverride":"sub","RuntimeShellAutoExit":"function","RuntimeGetFusionActiveXOverrides":"sub","RuntimeShowAxAboutBox":"sub","RuntimeAxGetMiscStatus":"function","RuntimeAxGetSnapshotBits":"function","RuntimePaintBits":"sub","RuntimeFusionGetExePath":"function","RuntimeFusionStartProcess":"sub","InterlockedIncrement64":"function","InterlockedDecrement64":"function","RuntimeOverrideFusionIpcNoWait":"sub","RuntimeFusionCancelLinkedChannel":"sub","RuntimeBase64Encode":"function","RuntimeFusionCreateExplicitLinkedChannelCallback":"sub","RuntimeCreateSharedMemData":"function","RuntimeOpenSharedMemData":"function","RuntimeAccessSharedMemData":"function","RuntimeUnaccessSharedMemData":"sub","RuntimeCloseSharedMemData":"sub","RuntimeFusionInteruptPendingIPC_UIThread":"function","RuntimeFusionSetPortalTimeout":"sub","RuntimeFusionClosePortal":"sub","RuntimeBase64Decode":"function","RuntimeGetProjectConditionalCompilationArgValue":"function"},"hiddenMembers":["SuppressRaiseEvents","DontInitNextCreatedCOMInstance","ExclusivitySectionEnter","ExclusivitySectionLeave","ClipboardGetTextInternal","ClipboardSetTextInternal","LoadPictureInternal","LoadResDataInternal","CreateClassPropertyBagUCRead2","CreateClassPropertyBagUCWrite2","CreateClassPropertyBagUCRead","CreateClassPropertyBagUCWrite","GetPropertyBagUCWriterContents","HasExclusiveDefaultDispatchValue","ShowPropertyPages","SynchronizeWindowSizeWithParent","CreateCoreWebView2Environment","BringWindowToFront","CrashDAP","CrashLSP","CrashFS","CrashRoot","_FileWidth","_InStrBreak","CreateCollectionObject","Int3Breakpoint","CheckBadFPUInstruction","InternalDebugHoverEval","GetErrNumber","LetErrNumber","GetErrSource","LetErrSource","GetErrDescription","LetErrDescription","GetErrHelpFile","LetErrHelpFile","GetErrHelpContext","LetErrHelpContext","ErrRaise","ErrClear","GetErrLastDllError","LetErrLastDllError","GetErrLastHresult","GetErrReturnHResult","LetErrReturnHResult","EnsureContainerIsLoaded","ResetFirstMethodAccessFlag","MemZero","GetClasInstanceAxMiscFlags","GetClassInstanceSerializer","GetClassInstanceRefCount","SetClassOverrideDispatch","RuntimeSharedMemCreateHost","RuntimeSharedMemCreateClient","RuntimeSharedMemSendMessage","RuntimeSharedMemReceiveMessage","RuntimeFusionRegisterInterface","RuntimeFusionRegisterClass","RuntimeFusionCreateObject","RuntimeFusionCreatePortalHost","RuntimeFusionCreatePortalClient","RuntimeFusionSetChannelNotificationCallback","RuntimeFusionCreateLinkedChannel","RuntimeFusionJoinLinkedChannel","RuntimeFusionProcessMessage","RuntimeFusionGetThreadID","RuntimeShellAutoExit","RuntimeGetFusionActiveXOverrides","RuntimeShowAxAboutBox","RuntimeAxGetMiscStatus","RuntimeAxGetSnapshotBits","RuntimePaintBits","RuntimeFusionGetExePath","RuntimeFusionStartProcess"]}, + {"name":"IGetMessageHook","kind":"interface","members":{"RegisterMessage":"sub","Start":"sub","Stop":"sub"}}, + {"name":"EnumDescendantsModeFlags","kind":"enum","in":"IGetMessageHook","values":["ExactWindow","AllDescendants","DirectChildren"]}, + {"name":"GetMessageHookHelper","kind":"module","members":{"GetMessageHandler":"delegate"}}, + {"name":"HookPOINT","kind":"type","in":"GetMessageHookHelper","fields":["x","y"]}, + {"name":"HookMSG","kind":"type","in":"GetMessageHookHelper","fields":["hwnd","message","wParam","lParam","time","pt"]} + ] + }, + "VBRUN": { + "exports": ["VBRUN"], + "types": [ + {"name":"AmbientProperties","kind":"interface","members":{"BackColor":"property","DisplayName":"property","Font":"property","ForeColor":"property","LocaleID":"property","MessageReflect":"property","ScaleUnits":"property","TextAlign":"property","UserMode":"property","UIDead":"property","ShowGrabHandles":"property","ShowHatching":"property","DisplayAsDefault":"property","SupportsMnemonics":"property","Palette":"property","RightToLeft":"property"}}, + {"name":"AsyncProperty","kind":"interface","members":{"Value":"property","AsyncType":"property","PropertyName":"property","Target":"property","BytesRead":"property","BytesMax":"property","Status":"property","StatusCode":"property"}}, + {"name":"Constants","kind":"module","members":{"CreatePropertyBagObject":"function"},"hiddenMembers":["CreatePropertyBagObject"]}, + {"name":"AspectTypeConstants","kind":"enum","in":"Constants","values":["vbContent","vbThumbnail","vbIcon","vbDocPrint"]}, + {"name":"StorageTypeContants","kind":"enum","in":"Constants","values":["vbHGlobal","vbFile","vbIStream","vbIStorage","vbGDI","vbMetaFile","vbEnhancedMetaFile"]}, + {"name":"KeyCodeConstants","kind":"enum","in":"Constants","values":["vbKeyLButton","vbKeyRButton","vbKeyCancel","vbKeyMButton","vbKeyBack","vbKeyTab","vbKeyClear","vbKeyReturn","vbKeyShift","vbKeyControl","vbKeyMenu","vbKeyPause","vbKeyCapital","vbKeyEscape","vbKeySpace","vbKeyPageUp","vbKeyPageDown","vbKeyEnd","vbKeyHome","vbKeyLeft","vbKeyUp","vbKeyRight","vbKeyDown","vbKeySelect","vbKeyPrint","vbKeyExecute","vbKeySnapshot","vbKeyInsert","vbKeyDelete","vbKeyHelp","vbKeyNumlock","vbKeyScrollLock","vbKeyA","vbKeyB","vbKeyC","vbKeyD","vbKeyE","vbKeyF","vbKeyG","vbKeyH","vbKeyI","vbKeyJ","vbKeyK","vbKeyL","vbKeyM","vbKeyN","vbKeyO","vbKeyP","vbKeyQ","vbKeyR","vbKeyS","vbKeyT","vbKeyU","vbKeyV","vbKeyW","vbKeyX","vbKeyY","vbKeyZ","vbKey0","vbKey1","vbKey2","vbKey3","vbKey4","vbKey5","vbKey6","vbKey7","vbKey8","vbKey9","vbKeyNumpad0","vbKeyNumpad1","vbKeyNumpad2","vbKeyNumpad3","vbKeyNumpad4","vbKeyNumpad5","vbKeyNumpad6","vbKeyNumpad7","vbKeyNumpad8","vbKeyNumpad9","vbKeyMultiply","vbKeyAdd","vbKeySeparator","vbKeySubtract","vbKeyDecimal","vbKeyDivide","vbKeyF1","vbKeyF2","vbKeyF3","vbKeyF4","vbKeyF5","vbKeyF6","vbKeyF7","vbKeyF8","vbKeyF9","vbKeyF10","vbKeyF11","vbKeyF12","vbKeyF13","vbKeyF14","vbKeyF15","vbKeyF16"]}, + {"name":"ColorConstants","kind":"enum","in":"Constants","values":["vbBlack","vbBlue","vbCyan","vbGreen","vbMagenta","vbRed","vbWhite","vbYellow"]}, + {"name":"SystemColorConstants","kind":"enum","in":"Constants","values":["vbScrollBars","vbDesktop","vbActiveTitleBar","vbInactiveTitleBar","vbMenuBar","vbWindowBackground","vbWindowFrame","vbMenuText","vbWindowText","vbTitleBarText","vbActiveTitleBarText","vbActiveBorder","vbInactiveBorder","vbApplicationWorkspace","vbHighlight","vbHighlightText","vbButtonFace","vbButtonShadow","vbGrayText","vbButtonText","vbInactiveCaptionText","vbInactiveTitleBarText","vb3DHighlight","vb3DDKShadow","vb3DLight","vb3DFace","vb3Dshadow","vbInfoText","vbInfoBackground","vbHotTrackText","vbActiveTitleBarGradient","vbInactiveTitleBarGradient","vbMenuHighlight","vbMenuBarFlat"]}, + {"name":"FormShowConstants","kind":"enum","in":"Constants","values":["vbModeless","vbModal"]}, + {"name":"LoadResConstants","kind":"enum","in":"Constants","values":["vbResBitmap","vbResIcon","vbResCursor","vbResBitmapFromIcon"]}, + {"name":"MousePointerConstants","kind":"enum","in":"Constants","values":["vbDefault","vbArrow","vbCrosshair","vbIbeam","vbIconPointer","vbSizePointer","vbSizeNESW","vbSizeNS","vbSizeNWSE","vbSizeWE","vbUpArrow","vbHourglass","vbNoDrop","vbArrowHourglass","vbArrowQuestion","vbSizeAll","vbHand","vbPin","vbPerson","vbArrowCD","vbScrollN","vbScrollS","vbScrollE","vbScrollW","vbScrollNS","vbScrollWE","vbScrollNW","vbScrollNE","vbScrollSW","vbScrollSE","vbScrollAll","vbPen","vbCustom"]}, + {"name":"MouseButtonConstants","kind":"enum","in":"Constants","values":["vbLeftButton","vbRightButton","vbMiddleButton"]}, + {"name":"ClipboardConstants","kind":"enum","in":"Constants","values":["vbCFText","vbCFBitmap","vbCFMetafile","vbCFDIB","vbCFPalette","vbCFUnicodeText","vbCFEMetafile","vbCFFiles","vbCFLink","vbCFRTF"]}, + {"name":"VerticalAlignmentConstants","kind":"enum","in":"Constants","values":["vbVerticalAlignTop","vbVerticalAlignMiddle","vbVerticalAlignBottom"]}, + {"name":"AlignmentConstants","kind":"enum","in":"Constants","values":["vbLeftJustify","vbRightJustify","vbCenter"]}, + {"name":"AlignmentConstantsNoCenter","kind":"enum","in":"Constants","values":["tbLeftJustify","tbRightJustify"]}, + {"name":"CheckBoxConstants","kind":"enum","in":"Constants","values":["vbUnchecked","vbChecked","vbGrayed"]}, + {"name":"ListBoxConstants","kind":"enum","in":"Constants","values":["vbListBoxStandard","vbListBoxCheckbox","vbListBoxColorSwatch"]}, + {"name":"MultiSelectConstants","kind":"enum","in":"Constants","values":["vbMultiSelectNone","vbMultiSelectSimple","vbMultiSelectExtended"]}, + {"name":"ComboBoxConstants","kind":"enum","in":"Constants","values":["vbComboDropdown","vbComboSimple","vbComboDropdownList"]}, + {"name":"ControlBorderStyleConstants","kind":"enum","in":"Constants","values":["vbNoBorder","vbFixedSingleBorder"]}, + {"name":"ControlBorderStyleConstantsCustom","kind":"enum","in":"Constants","values":["vbNoBorder","vbFixedSingleBorder","vbCustomBorder"]}, + {"name":"FormBorderStyleConstants","kind":"enum","in":"Constants","values":["vbBSNone","vbFixedSingle","vbSizable","vbFixedDialog","vbFixedToolWindow","vbSizableToolWindow","vbSizableNoTitleBar","vbSizableToolWindowNoTitleBar"]}, + {"name":"ScrollBarConstants","kind":"enum","in":"Constants","values":["vbSBNone","vbHorizontal","vbVertical","vbBoth"]}, + {"name":"ShiftConstants","kind":"enum","in":"Constants","values":["vbShiftMask","vbCtrlMask","vbAltMask"]}, + {"name":"StartUpPositionConstants","kind":"enum","in":"Constants","values":["vbStartUpManual","vbStartUpOwner","vbStartUpScreen","vbStartUpWindowsDefault"]}, + {"name":"FormWindowStateConstants","kind":"enum","in":"Constants","values":["vbNormal","vbMinimized","vbMaximized"]}, + {"name":"DockModeConstants","kind":"enum","in":"Constants","values":["vbDockNone","vbDockLeft","vbDockTop","vbDockRight","vbDockBottom","vbDockFill"]}, + {"name":"ControlTypeConstants","kind":"enum","in":"Constants","values":["vbCommandButton","vbListBox","vbComboBox","vbOptionButton","vbCheckBox","vbFrame","vbLabel","vbPictureBox","vbTextBox","vbTimer","vbUserControl","vbHScrollBar","vbVScrollBar","vbImage","vbDirListBox","vbDriveListBox","vbFileListBox","vbForm","vbWebView2","vbActiveXExtender","vbShape","vbProgressBar","vbTreeView","vbOLEControl","vbDataControl","vbMenuControl","vbSlider","vbUpDown","vbDTPicker","vbMonthView","vbListView","vbImageList","vbPropertyPage","vbHwndControl","vbReport","vbCheckMark","vbFusion","vbCefBrowser"]}, + {"name":"AppearanceConstants","kind":"enum","in":"Constants","values":["vbAppearFlat","vbAppear3d"]}, + {"name":"RasterOpConstants","kind":"enum","in":"Constants","values":["vbDstInvert","vbMergeCopy","vbMergePaint","vbNotSrcCopy","vbNotSrcErase","vbPatCopy","vbPatInvert","vbPatPaint","vbSrcAnd","vbSrcCopy","vbSrcErase","vbSrcInvert","vbSrcPaint"]}, + {"name":"ApplicationStartConstants","kind":"enum","in":"Constants","values":["vbSModeAutomation","vbSModeStandalone"]}, + {"name":"AsyncReadConstants","kind":"enum","in":"Constants","values":["vbAsyncReadForceUpdate","vbAsyncReadGetFromCacheIfNetFail","vbAsyncReadOfflineOperation","vbAsyncReadResynchronize","vbAsyncReadSynchronousDownload"]}, + {"name":"AsyncStatusCodeConstants","kind":"enum","in":"Constants","values":["vbAsyncStatusCodeBeginDownloadData","vbAsyncStatusCodeBeginSyncOperation","vbAsyncStatusCodeCacheFileNameAvailable","vbAsyncStatusCodeConnecting","vbAsyncStatusCodeDownloadingData","vbAsyncStatusCodeEndDownloadData","vbAsyncStatusCodeEndSyncOperation","vbAsyncStatusCodeError","vbAsyncStatusCodeFindingResource","vbAsyncStatusCodeMIMETypeAvailable","vbAsyncStatusCodeRedirecting","vbAsyncStatusCodeSendingRequest","vbAsyncStatusCodeUsingCachedCopy"]}, + {"name":"AsyncTypeConstants","kind":"enum","in":"Constants","values":["vbAsyncTypeByteArray","vbAsyncTypeFile","vbAsyncTypePicture"]}, + {"name":"BorderStyleConstants","kind":"enum","in":"Constants","values":["vbBSDash","vbBSDashDot","vbBSDashDotDot","vbBSDot","vbBSInsideSolid","vbBSSolid","vbTransparent"]}, + {"name":"ButtonConstants","kind":"enum","in":"Constants","values":["vbButtonGraphical","vbButtonStandard"]}, + {"name":"DataBOFconstants","kind":"enum","in":"Constants","values":["vbBOF","vbMoveFirst"]}, + {"name":"DataEOFConstants","kind":"enum","in":"Constants","values":["vbAddNew","vbEOF","vbMoveLast"]}, + {"name":"DataErrorConstants","kind":"enum","in":"Constants","values":["vbDataErrContinue","vbDataErrDisplay"]}, + {"name":"DataValidateConstants","kind":"enum","in":"Constants","values":["vbDataActionAddNew","vbDataActionBookmark","vbDataActionCancel","vbDataActionClose","vbDataActionDelete","vbDataActionFind","vbDataActionMoveFirst","vbDataActionMoveLast","vbDataActionMoveNext","vbDataActionMovePrevious","vbDataActionUnload","vbDataActionUpdate"]}, + {"name":"DefaultCursorTypeConstants","kind":"enum","in":"Constants","values":["vbUseDefaultCursor","vbUseODBCCursor","vbUseServersideCursor"]}, + {"name":"DragConstants","kind":"enum","in":"Constants","values":["vbBeginDrag","vbCancel","vbEndDrag"]}, + {"name":"DragModeConstants","kind":"enum","in":"Constants","values":["vbAutomatic","vbManual"]}, + {"name":"DragOverConstants","kind":"enum","in":"Constants","values":["vbEnter","vbLeave","vbOver"]}, + {"name":"DrawModeConstants","kind":"enum","in":"Constants","values":["vbBlackness","vbCopyPen","vbInvert","vbMaskNotPen","vbMaskPen","vbMaskPenNot","vbMergeNotPen","vbMergePen","vbMergePenNot","vbNop","vbNotCopyPen","vbNotMaskPen","vbNotMergePen","vbNotXorPen","vbWhiteness","vbXorPen"]}, + {"name":"DrawStyleConstants","kind":"enum","in":"Constants","values":["vbDash","vbDashDot","vbDashDotDot","vbDot","vbInsideSolid","vbInvisible","vbSolid"]}, + {"name":"FillStyleConstants","kind":"enum","in":"Constants","values":["vbCross","vbDiagonalCross","vbDownwardDiagonal","vbFSSolid","vbFSTransparent","vbHorizontalLine","vbUpwardDiagonal","vbVerticalLine"]}, + {"name":"FillStyleConstantsEx","kind":"enum","in":"Constants","values":["vbCross","vbDiagonalCross","vbDownwardDiagonal","vbFSSolid","vbFSTransparent","vbHorizontalLine","vbUpwardDiagonal","vbVerticalLine","vbGradientNS","vbGradientWE"]}, + {"name":"FormArrangeConstants","kind":"enum","in":"Constants","values":["vbArrangeIcons","vbCascade","vbTileHorizontal","vbTileVertical"]}, + {"name":"HitResultConstants","kind":"enum","in":"Constants","values":["vbHitResultClose","vbHitResultHit","vbHitResultOutside","vbHitResultTransparent"]}, + {"name":"MenuAccelConstants","kind":"enum","in":"Constants","values":["vbMenuAccelCtrlA","vbMenuAccelCtrlB","vbMenuAccelCtrlC","vbMenuAccelCtrlD","vbMenuAccelCtrlE","vbMenuAccelCtrlF","vbMenuAccelCtrlG","vbMenuAccelCtrlH","vbMenuAccelCtrlI","vbMenuAccelCtrlJ","vbMenuAccelCtrlK","vbMenuAccelCtrlL","vbMenuAccelCtrlM","vbMenuAccelCtrlN","vbMenuAccelCtrlO","vbMenuAccelCtrlP","vbMenuAccelCtrlQ","vbMenuAccelCtrlR","vbMenuAccelCtrlS","vbMenuAccelCtrlT","vbMenuAccelCtrlU","vbMenuAccelCtrlV","vbMenuAccelCtrlW","vbMenuAccelCtrlX","vbMenuAccelCtrlY","vbMenuAccelCtrlZ","vbMenuAccelF1","vbMenuAccelF2","vbMenuAccelF3","vbMenuAccelF4","vbMenuAccelF5","vbMenuAccelF6","vbMenuAccelF7","vbMenuAccelF8","vbMenuAccelF9","vbMenuAccelF11","vbMenuAccelF12","vbMenuAccelCtrlF1","vbMenuAccelCtrlF2","vbMenuAccelCtrlF3","vbMenuAccelCtrlF4","vbMenuAccelCtrlF5","vbMenuAccelCtrlF6","vbMenuAccelCtrlF7","vbMenuAccelCtrlF8","vbMenuAccelCtrlF9","vbMenuAccelCtrlF11","vbMenuAccelCtrlF12","vbMenuAccelShiftF1","vbMenuAccelShfitF2","vbMenuAccelShiftF3","vbMenuAccelShiftF4","vbMenuAccelShiftF5","vbMenuAccelShiftF6","vbMenuAccelShiftF7","vbMenuAccelShiftF8","vbMenuAccelShiftF9","vbMenuAccelShiftF11","vbMenuAccelShiftF12","vbMenuAccelShiftCtrlF1","vbMenuAccelShiftCtrlF2","vbMenuAccelShiftCtrlF3","vbMenuAccelShiftCtrlF4","vbMenuAccelShiftCtrlF5","vbMenuAccelShiftCtrlF6","vbMenuAccelShiftCtrlF7","vbMenuAccelShiftCtrlF8","vbMenuAccelShiftCtrlF9","vbMenuAccelShiftCtrlF11","vbMenuAccelShiftCtrlF12","vbMenuAccelCtrlIns","vbMenuAccelShiftIns","vbMenuAccelDel","vbMenuAccelShiftDel","vbMenuAccelAltBksp"]}, + {"name":"MenuControlConstants","kind":"enum","in":"Constants","values":["vbPopupMenuLeftAlign","vbPopupMenuCenterAlign","vbPopupMenuRightAlign","vbPopupMenuLeftButton","vbPopupMenuRightButton"]}, + {"name":"OldLinkModeConstants","kind":"enum","in":"Constants","values":["vbHot","vbServer","vbCold"]}, + {"name":"OLEContainerActivateConstants","kind":"enum","in":"Constants","values":["vbOLE_ActivateManual","vbOLE_ActivateGetFocus","vbOLE_ActivateDoubleclick","vbOLE_ActivateAuto"]}, + {"name":"OLEContainerDisplayTypeConstants","kind":"enum","in":"Constants","values":["vbOLE_DisplayContent","vbOLE_DisplayIcon"]}, + {"name":"OLEContainerTypesAllowedConstants","kind":"enum","in":"Constants","values":["vbOLE_Linked","vbOLE_Embedded","vbOLE_Either"]}, + {"name":"OLEContainerSizeModeConstants","kind":"enum","in":"Constants","values":["vbOLE_SizeClip","vbOLE_SizeStretch","vbOLE_SizeAutoSize","vbOLE_SizeZoom"]}, + {"name":"OLEContainerUpdateOptionsConstants","kind":"enum","in":"Constants","values":["vbOLE_UpdateAutomatic","vbOLE_UpdateFrozen","vbOLE_UpdateManual"]}, + {"name":"OLEContainerConstants","kind":"enum","in":"Constants","values":["vbOLELinked","vbOLEEmbedded","vbOLENone","vbOLEEither","vbOLEAutomatic","vbOLEFrozen","vbOLEManual","vbOLEActivateManual","vbOLEActivateGetFocus","vbOLEActivateDoubleclick","vbOLEActivateAuto","vbOLESizeClip","vbOLESizeStretch","vbOLESizeAutoSize","vbOLESizeZoom","vbOLEDisplayContent","vbOLEDisplayIcon","vbOLEChanged","vbOLESaved","vbOLEClosed","vbOLERenamed","vbOLEPrimary","vbOLEShow","vbOLEOpen","vbOLEHide","vbOLEUIActivate","vbOLEInPlaceActivate","vbOLEDiscardUndoState","vbOLEFlagGrayed","vbOLEFlagDisabled","vbOLEFlagChecked","vbOLEFlagSeparator","vbOLEMiscFlagMemStorage","vbOLEMiscFlagDisableInPlace"]}, + {"name":"OLEDragConstants","kind":"enum","in":"Constants","values":["vbOLEDragManual","vbOLEDragAutomatic"]}, + {"name":"OLEDropConstants","kind":"enum","in":"Constants","values":["vbOLEDropNone","vbOLEDropManual","vbOLEDropAutomatic"]}, + {"name":"OLEDropEffectConstants","kind":"enum","in":"Constants","values":["vbDropEffectNone","vbDropEffectCopy","vbDropEffectMove","vbDropEffectLink","vbDropEffectScroll"]}, + {"name":"DatabaseTypeConstants","kind":"enum","in":"Constants","values":["vbUseODBC","vbUseJet","vbUseACE"]}, + {"name":"NegotiatePositionConstants","kind":"enum","in":"Constants","values":["vbNegotiatePositionNone","vbNegotiatePositionLeft","vbNegotiatePositionMiddle","vbNegotiatePositionRight"]}, + {"name":"PaletteModeConstants","kind":"enum","in":"Constants","values":["vbPaletteModeHalftone","vbPaletteModeUseZOrder","vbPaletteModeCustom","vbPaletteModeContainer","vbPaletteModeNone","vbPaletteModeObject"]}, + {"name":"ParentControlsType","kind":"enum","in":"Constants","values":["vbNoExtender","vbExtender"]}, + {"name":"ShapeConstants","kind":"enum","in":"Constants","values":["vbShapeRectangle","vbShapeSquare","vbShapeOval","vbShapeCircle","vbShapeRoundedRectangle","vbShapeRoundedSquare","vbShapeStar","vbShapeArrowLeft","vbShapeArrowRight","vbShapeArrowUp","vbShapeArrowDown"]}, + {"name":"PictureTypeConstants","kind":"enum","in":"Constants","values":["vbPicTypeNone","vbPicTypeBitmap","vbPicTypeMetafile","vbPicTypeIcon","vbPicTypeEMetafile"]}, + {"name":"PrinterObjectConstants","kind":"enum","in":"Constants","values":["vbPRCMMonochrome","vbPRCMColor","vbPRDPSimplex","vbPRDPHorizontal","vbPRDPVertical","vbPRORPortrait","vbPRORLandscape","vbPRPQDraft","vbPRPQLow","vbPRPQMedium","vbPRPQHigh","vbPRBNUpper","vbPRBNLower","vbPRBNMiddle","vbPRBNManual","vbPRBNEnvelope","vbPRBNEnvManual","vbPRBNAuto","vbPRBNTractor","vbPRBNSmallFmt","vbPRBNLargeFmt","vbPRBNLargeCapacity","vbPRBNCassette","vbPRPSLetter","vbPRPSLetterSmall","vbPRPSTabloid","vbPRPSLedger","vbPRPSLegal","vbPRPSStatement","vbPRPSExecutive","vbPRPSA3","vbPRPSA4","vbPRPSA4Small","vbPRPSA5","vbPRPSB4","vbPRPSB5","vbPRPSFolio","vbPRPSQuarto","vbPRPS10x14","vbPRPS11x17","vbPRPSNote","vbPRPSEnv9","vbPRPSEnv10","vbPRPSEnv11","vbPRPSEnv12","vbPRPSEnv14","vbPRPSCSheet","vbPRPSDSheet","vbPRPSESheet","vbPRPSEnvDL","vbPRPSEnvC3","vbPRPSEnvC4","vbPRPSEnvC5","vbPRPSEnvC6","vbPRPSEnvC65","vbPRPSEnvB4","vbPRPSEnvB5","vbPRPSEnvB6","vbPRPSEnvItaly","vbPRPSEnvMonarch","vbPRPSEnvPersonal","vbPRPSFanfoldUS","vbPRPSFanfoldStdGerman","vbPRPSFanfoldLglGerman","vbPRPSUser"]}, + {"name":"PrinterObjectConstants_ColorMode","kind":"enum","in":"Constants","values":["vbPRCMMonochrome","vbPRCMColor"]}, + {"name":"PrinterObjectConstants_Duplex","kind":"enum","in":"Constants","values":["vbPRDPSimplex","vbPRDPHorizontal","vbPRDPVertical"]}, + {"name":"PrinterObjectConstants_Orientation","kind":"enum","in":"Constants","values":["vbPRORPortrait","vbPRORLandscape"]}, + {"name":"PrinterObjectConstants_PaperSize","kind":"enum","in":"Constants","values":["vbPRPSLetter","vbPRPSLetterSmall","vbPRPSTabloid","vbPRPSLedger","vbPRPSLegal","vbPRPSStatement","vbPRPSExecutive","vbPRPSA3","vbPRPSA4","vbPRPSA4Small","vbPRPSA5","vbPRPSB4","vbPRPSB5","vbPRPSFolio","vbPRPSQuarto","vbPRPS10x14","vbPRPS11x17","vbPRPSNote","vbPRPSEnv9","vbPRPSEnv10","vbPRPSEnv11","vbPRPSEnv12","vbPRPSEnv14","vbPRPSCSheet","vbPRPSDSheet","vbPRPSESheet","vbPRPSEnvDL","vbPRPSEnvC3","vbPRPSEnvC4","vbPRPSEnvC5","vbPRPSEnvC6","vbPRPSEnvC65","vbPRPSEnvB4","vbPRPSEnvB5","vbPRPSEnvB6","vbPRPSEnvItaly","vbPRPSEnvMonarch","vbPRPSEnvPersonal","vbPRPSFanfoldUS","vbPRPSFanfoldStdGerman","vbPRPSFanfoldLglGerman","vbPRPSUser"]}, + {"name":"PrinterObjectConstants_PrintQuality","kind":"enum","in":"Constants","values":["vbPRPQDraft","vbPRPQLow","vbPRPQMedium","vbPRPQHigh"]}, + {"name":"PrinterObjectConstants_PaperBin","kind":"enum","in":"Constants","values":["vbPRBNUpper","vbPRBNLower","vbPRBNMiddle","vbPRBNManual","vbPRBNEnvelope","vbPRBNEnvManual","vbPRBNAuto","vbPRBNTractor","vbPRBNSmallFmt","vbPRBNLargeFmt","vbPRBNLargeCapacity","vbPRBNCassette"]}, + {"name":"QueryUnloadConstants","kind":"enum","in":"Constants","values":["vbFormControlMenu","vbFormCode","vbAppWindows","vbAppTaskManager","vbFormMDIForm","vbFormOwner"]}, + {"name":"ZOrderConstants","kind":"enum","in":"Constants","values":["vbBringToFront","vbSendToBack"]}, + {"name":"RecordsetTypeConstants","kind":"enum","in":"Constants","values":["vbRSTypeTable","vbRSTypeDynaset","vbRSTypeSnapShot"]}, + {"name":"ScaleModeConstants","kind":"enum","in":"Constants","values":["vbScaledPixels","vbUser","vbTwips","vbPoints","vbPixels","vbCharacters","vbInches","vbMillimeters","vbCentimeters","vbHimetric","vbContainerPosition","vbContainerSize"]}, + {"name":"VariantTypeConstants","kind":"enum","in":"Constants","values":["vbVEmpty","vbVNull","vbVInteger","vbVLong","vbVSingle","vbVDouble","vbVCurrency","vbVDate","vbVString"]}, + {"name":"AlignConstants","kind":"enum","in":"Constants","values":["vbAlignNone","vbAlignTop","vbAlignBottom","vbAlignLeft","vbAlignRight"]}, + {"name":"LoadPictureSizeConstants","kind":"enum","in":"Constants","values":["vbLPSmall","vbLPLarge","vbLPSmallShell","vbLPLargeShell","vbLPCustom"]}, + {"name":"LoadPictureColorConstants","kind":"enum","in":"Constants","values":["vbLPDefault","vbLPMonochrome","vbLPVGAColor","vbLPColor"]}, + {"name":"BackFillStyleConstants","kind":"enum","in":"Constants","values":["vbBFTransparent","vbBFOpaque"]}, + {"name":"LinkModeConstants","kind":"enum","in":"Constants","values":["vbLinkNone","vbLinkAutomatic","vbLinkSource","vbLinkManual","vbLinkNotify"]}, + {"name":"LogModeConstants","kind":"enum","in":"Constants","values":["vbLogAuto","vbLogOff","vbLogToFile","vbLogToNT","vbLogOverwrite","vbLogThreadID"]}, + {"name":"LogEventTypeConstants","kind":"enum","in":"Constants","values":["vbLogEventTypeError","vbLogEventTypeWarning","vbLogEventTypeInformation"]}, + {"name":"ShortcutConstants","kind":"enum","in":"Constants","values":["vbShortcutNone","vbShortcutCtrlA","vbShortcutCtrlB","vbShortcutCtrlC","vbShortcutCtrlD","vbShortcutCtrlE","vbShortcutCtrlF","vbShortcutCtrlG","vbShortcutCtrlH","vbShortcutCtrlI","vbShortcutCtrlJ","vbShortcutCtrlK","vbShortcutCtrlL","vbShortcutCtrlM","vbShortcutCtrlN","vbShortcutCtrlO","vbShortcutCtrlP","vbShortcutCtrlQ","vbShortcutCtrlR","vbShortcutCtrlS","vbShortcutCtrlT","vbShortcutCtrlU","vbShortcutCtrlV","vbShortcutCtrlW","vbShortcutCtrlX","vbShortcutCtrlY","vbShortcutCtrlZ","vbShortcutF1","vbShortcutF2","vbShortcutF3","vbShortcutF4","vbShortcutF5","vbShortcutF6","vbShortcutF7","vbShortcutF8","vbShortcutF9","vbShortcutF11","vbShortcutF12","vbShortcutShiftF1","vbShortcutShiftF2","vbShortcutShiftF3","vbShortcutShiftF4","vbShortcutShiftF5","vbShortcutShiftF6","vbShortcutShiftF7","vbShortcutShiftF8","vbShortcutShiftF9","vbShortcutShiftF11","vbShortcutShiftF12","vbShortcutCtrlF1","vbShortcutCtrlF2","vbShortcutCtrlF3","vbShortcutCtrlF4","vbShortcutCtrlF5","vbShortcutCtrlF6","vbShortcutCtrlF7","vbShortcutCtrlF8","vbShortcutCtrlF9","vbShortcutCtrlF11","vbShortcutCtrlF12","vbShortcutShiftCtrlF1","vbShortcutShiftCtrlF2","vbShortcutShiftCtrlF3","vbShortcutShiftCtrlF4","vbShortcutShiftCtrlF5","vbShortcutShiftCtrlF6","vbShortcutShiftCtrlF7","vbShortcutShiftCtrlF8","vbShortcutShiftCtrlF9","vbShortcutShiftCtrlF11","vbShortcutShiftCtrlF12","vbShortcutCtrlInsert","vbShortcutShiftInsert","vbShortcutDelete","vbShortcutShiftDelete","vbShortcutAltBackspace"]}, + {"name":"ContainedControls","kind":"interface","members":{"Count":"property","Item":"property","_NewEnum":"function"}}, + {"name":"DataMembers","kind":"interface","members":{"Item":"property","Count":"property","Add":"sub","Clear":"sub","Remove":"sub","_NewEnum":"function"}}, + {"name":"tbInternal_IEnumFORMATETC","kind":"interface","members":{"Next":"sub","Skip":"sub","Reset":"sub","Clone":"sub"}}, + {"name":"tbInternal_IAdviseSink","kind":"interface","members":{"OnDataChange":"sub","OnViewChange":"sub","OnRename":"sub","OnSave":"sub","OnClose":"sub"}}, + {"name":"tbInternal_IMoniker","kind":"interface"}, + {"name":"tbInternal_IEnumSTATDATA","kind":"interface"}, + {"name":"tbInternal_IDataObject","kind":"interface","members":{"GetData":"sub","GetDataHere":"sub","QueryGetData":"sub","GetCanonicalFormatEtc":"sub","SetData":"sub","EnumFormatEtc":"sub","DAdvise":"sub","DUnadvise":"sub","EnumDAdvise":"sub"}}, + {"name":"tbInternal_TYMED","kind":"enum","in":"tbInternal_IDataObject","values":["tbInternal_TYMED_HGLOBAL","tbInternal_TYMED_FILE","tbInternal_TYMED_ISTREAM","tbInternal_TYMED_ISTORAGE","tbInternal_TYMED_GDI","tbInternal_TYMED_MFPICT","tbInternal_TYMED_ENHMF","tbInternal_TYMED_NULL"]}, + {"name":"tbInternal_FORMATETC","kind":"type","in":"tbInternal_IDataObject","fields":["cfFormat","ptd","dwAspect","lindex","tymed"]}, + {"name":"tbInternal_STGMEDIUM","kind":"type","in":"tbInternal_IDataObject","fields":["tymed","unionData","pUnkForRelease"]}, + {"name":"DataObject","kind":"interface","members":{"Clear":"sub","SetData":"sub","GetData":"function","GetFormat":"function","Files":"function","AvailableFormats":"function","GetFormatByName":"function","GetDataByName":"function","GetIDataObject":"function"}}, + {"name":"DataObjectFiles","kind":"interface","members":{"Item":"property","Count":"property","Add":"sub","Clear":"sub","Remove":"sub","_NewEnum":"function"}}, + {"name":"DataObjectFormats","kind":"interface","members":{"Item":"function","Count":"property","_NewEnum":"function"}}, + {"name":"DataObjectFormat","kind":"interface","members":{"FormatType":"property","AspectType":"property","AspectIndex":"property","StorageType":"property","Name":"property"}}, + {"name":"ErrorCallstack","kind":"interface","members":{"Count":"property","Items":"property"}}, + {"name":"ErrorContext","kind":"interface","members":{"State":"property","Number":"property","Description":"property","Source":"property","HelpFile":"property","HelpContext":"property","LastDLLError":"property","Callstack":"property"}}, + {"name":"OnErrorStatus","kind":"enum","in":"ErrorContext","values":["OnErrorGoto0","OnErrorResumeNext","OnErrorGotoLabel","OnErrorEnd","OnErrorDebug","CalledByLocalHandler","OnErrorRetry","OnErrorPropagate","OnErrorExitProcedure","OnErrorCatch","OnErrorCatchAll","OnErrorInsideCatch","OnErrorInsideCatchAll","OnErrorInsideFinally","OnErrorPropagateCatch","OnErrorPropagateCatchAll"]}, + {"name":"ErrorStackFrame","kind":"interface","members":{"ProjectName":"property","ModuleName":"property","ProcedureName":"property"}}, + {"name":"Hyperlink","kind":"interface","members":{"GoForward":"sub","GoBack":"sub","NavigateTo":"sub"}}, + {"name":"ParentControls","kind":"interface","members":{"Count":"property","Item":"property","_NewEnum":"function","ParentControlsType":"property"}}, + {"name":"PropertyBag_VB5","kind":"interface","members":{"ReadProperty":"function","WriteProperty":"sub"}}, + {"name":"_PropertyBag","kind":"interface","extends":"VBRUN.PropertyBag_VB5","members":{"Contents":"property"}}, + {"name":"PropertyBag","kind":"coclass","default":"_PropertyBag"} + ] + }, + "WebView2Package": { + "exports": ["WebView2Package"], + "types": [ + {"name":"ICoreWebView2","kind":"interface","public":false}, + {"name":"ICoreWebView2_2","kind":"interface","public":false,"extends":"WebView2Package.ICoreWebView2"}, + {"name":"ICoreWebView2_3","kind":"interface","public":false,"extends":"WebView2Package.ICoreWebView2_2"}, + {"name":"ICoreWebView2_4","kind":"interface","public":false,"extends":"WebView2Package.ICoreWebView2_3"}, + {"name":"ICoreWebView2_5","kind":"interface","public":false,"extends":"WebView2Package.ICoreWebView2_4"}, + {"name":"ICoreWebView2_6","kind":"interface","public":false,"extends":"WebView2Package.ICoreWebView2_5"}, + {"name":"ICoreWebView2_7","kind":"interface","public":false,"extends":"WebView2Package.ICoreWebView2_6"}, + {"name":"ICoreWebView2_8","kind":"interface","public":false,"extends":"WebView2Package.ICoreWebView2_7"}, + {"name":"ICoreWebView2_9","kind":"interface","public":false,"extends":"WebView2Package.ICoreWebView2_8"}, + {"name":"ICoreWebView2AcceleratorKeyPressedEventArgs","kind":"interface","public":false}, + {"name":"ICoreWebView2AcceleratorKeyPressedEventHandler","kind":"interface","public":false}, + {"name":"ICoreWebView2AddScriptToExecuteOnDocumentCreatedCompletedHandler","kind":"interface","public":false}, + {"name":"ICoreWebView2CallDevToolsProtocolMethodCompletedHandler","kind":"interface","public":false}, + {"name":"ICoreWebView2Controller","kind":"interface","public":false}, + {"name":"ICoreWebView2CreateCoreWebView2ControllerCompletedHandler","kind":"interface","public":false}, + {"name":"ICoreWebView2CreateCoreWebView2EnvironmentCompletedHandler","kind":"interface","public":false}, + {"name":"ICoreWebView2DOMContentLoadedEventArgs","kind":"interface","public":false}, + {"name":"ICoreWebView2DOMContentLoadedEventHandler","kind":"interface","public":false}, + {"name":"ICoreWebView2Deferral","kind":"interface","public":false}, + {"name":"ICoreWebView2DocumentTitleChangedEventHandler","kind":"interface","public":false}, + {"name":"ICoreWebView2DownloadStartingEventArgs","kind":"interface","public":false}, + {"name":"ICoreWebView2DownloadStartingEventHandler","kind":"interface","public":false}, + {"name":"ICoreWebView2Environment","kind":"interface","public":false}, + {"name":"ICoreWebView2Environment2","kind":"interface","public":false,"extends":"WebView2Package.ICoreWebView2Environment"}, + {"name":"ICoreWebView2Environment3","kind":"interface","public":false,"extends":"WebView2Package.ICoreWebView2Environment2"}, + {"name":"ICoreWebView2Environment4","kind":"interface","public":false,"extends":"WebView2Package.ICoreWebView2Environment3"}, + {"name":"ICoreWebView2Environment5","kind":"interface","public":false,"extends":"WebView2Package.ICoreWebView2Environment4"}, + {"name":"ICoreWebView2Environment6","kind":"interface","public":false,"extends":"WebView2Package.ICoreWebView2Environment5"}, + {"name":"ICoreWebView2Environment7","kind":"interface","public":false,"extends":"WebView2Package.ICoreWebView2Environment6"}, + {"name":"ICoreWebView2Environment8","kind":"interface","public":false,"extends":"WebView2Package.ICoreWebView2Environment7"}, + {"name":"ICoreWebView2EnvironmentOptions","kind":"interface","public":false}, + {"name":"ICoreWebView2EnvironmentOptions2","kind":"interface","public":false}, + {"name":"ICoreWebView2EnvironmentOptions5","kind":"interface","public":false}, + {"name":"ICoreWebView2ExecuteScriptCompletedHandler","kind":"interface","public":false}, + {"name":"ICoreWebView2HttpHeadersCollectionIterator","kind":"interface","public":false}, + {"name":"ICoreWebView2HttpRequestHeaders","kind":"interface","public":false}, + {"name":"ICoreWebView2HttpResponseHeaders","kind":"interface","public":false}, + {"name":"ICoreWebView2NavigationCompletedEventArgs","kind":"interface","public":false}, + {"name":"ICoreWebView2NavigationCompletedEventHandler","kind":"interface","public":false}, + {"name":"ICoreWebView2NavigationStartingEventArgs","kind":"interface","public":false}, + {"name":"ICoreWebView2NavigationStartingEventArgs2","kind":"interface","public":false,"extends":"WebView2Package.ICoreWebView2NavigationStartingEventArgs"}, + {"name":"ICoreWebView2NavigationStartingEventHandler","kind":"interface","public":false}, + {"name":"ICoreWebView2NewWindowRequestedEventArgs","kind":"interface","public":false}, + {"name":"ICoreWebView2NewWindowRequestedEventHandler","kind":"interface","public":false}, + {"name":"ICoreWebView2PermissionRequestedEventArgs","kind":"interface","public":false}, + {"name":"ICoreWebView2PermissionRequestedEventHandler","kind":"interface","public":false}, + {"name":"ICoreWebView2PrintSettings","kind":"interface","public":false}, + {"name":"ICoreWebView2PrintToPdfCompletedHandler","kind":"interface","public":false}, + {"name":"ICoreWebView2ProcessFailedEventArgs","kind":"interface","public":false}, + {"name":"ICoreWebView2ProcessFailedEventHandler","kind":"interface","public":false}, + {"name":"ICoreWebView2ScriptDialogOpeningEventArgs","kind":"interface","public":false}, + {"name":"ICoreWebView2ScriptDialogOpeningEventHandler","kind":"interface","public":false}, + {"name":"ICoreWebView2Settings","kind":"interface","public":false}, + {"name":"ICoreWebView2Settings2","kind":"interface","public":false,"extends":"WebView2Package.ICoreWebView2Settings"}, + {"name":"ICoreWebView2Settings3","kind":"interface","public":false,"extends":"WebView2Package.ICoreWebView2Settings2"}, + {"name":"ICoreWebView2Settings4","kind":"interface","public":false,"extends":"WebView2Package.ICoreWebView2Settings3"}, + {"name":"ICoreWebView2Settings5","kind":"interface","public":false,"extends":"WebView2Package.ICoreWebView2Settings4"}, + {"name":"ICoreWebView2Settings6","kind":"interface","public":false,"extends":"WebView2Package.ICoreWebView2Settings5"}, + {"name":"ICoreWebView2SourceChangedEventArgs","kind":"interface","public":false}, + {"name":"ICoreWebView2SourceChangedEventHandler","kind":"interface","public":false}, + {"name":"ICoreWebView2TrySuspendCompletedHandler","kind":"interface","public":false}, + {"name":"ICoreWebView2WebMessageReceivedEventArgs","kind":"interface","public":false}, + {"name":"ICoreWebView2WebMessageReceivedEventHandler","kind":"interface","public":false}, + {"name":"ICoreWebView2WebResourceRequest","kind":"interface","public":false}, + {"name":"ICoreWebView2WebResourceRequestedEventArgs","kind":"interface","public":false}, + {"name":"ICoreWebView2WebResourceRequestedEventHandler","kind":"interface","public":false}, + {"name":"ICoreWebView2WebResourceResponse","kind":"interface","public":false}, + {"name":"ICoreWebView2WindowFeatures","kind":"interface","public":false}, + {"name":"IEnumVARIANT","kind":"interface","public":false}, + {"name":"ICoreWebView2ContentLoadingEventHandler","kind":"interface","public":false}, + {"name":"ICoreWebView2HistoryChangedEventHandler","kind":"interface","public":false}, + {"name":"ICoreWebView2ContainsFullScreenElementChangedEventHandler","kind":"interface","public":false}, + {"name":"ICoreWebView2WindowCloseRequestedEventHandler","kind":"interface","public":false}, + {"name":"ICoreWebView2WebResourceResponseReceivedEventHandler","kind":"interface","public":false}, + {"name":"ICoreWebView2CookieManager","kind":"interface","public":false}, + {"name":"ICoreWebView2FrameCreatedEventHandler","kind":"interface","public":false}, + {"name":"ICoreWebView2ClientCertificateRequestedEventHandler","kind":"interface","public":false}, + {"name":"ICoreWebView2IsMutedChangedEventHandler","kind":"interface","public":false}, + {"name":"ICoreWebView2IsDocumentPlayingAudioChangedEventHandler","kind":"interface","public":false}, + {"name":"ICoreWebView2IsDefaultDownloadDialogOpenChangedEventHandler","kind":"interface","public":false}, + {"name":"ICoreWebView2ZoomFactorChangedEventHandler","kind":"interface","public":false}, + {"name":"ICoreWebView2MoveFocusRequestedEventHandler","kind":"interface","public":false}, + {"name":"ICoreWebView2FocusChangedEventHandler","kind":"interface","public":false}, + {"name":"ICoreWebView2NewBrowserVersionAvailableEventHandler","kind":"interface","public":false}, + {"name":"ICoreWebView2CreateCoreWebView2CompositionControllerCompletedHandler","kind":"interface","public":false}, + {"name":"ICoreWebView2PointerInfo","kind":"interface","public":false}, + {"name":"ICoreWebView2DownloadOperation","kind":"interface","public":false}, + {"name":"ICoreWebView2BrowserProcessExitedEventHandler","kind":"interface","public":false}, + {"name":"ICoreWebView2ProcessInfosChangedEventHandler","kind":"interface","public":false}, + {"name":"ICoreWebView2ProcessInfoCollection","kind":"interface","public":false}, + {"name":"WebView2","kind":"class","control":true,"inherits":["VB.BaseControlFocusableNoFont"],"members":{"EnvironmentOptions":"field","UseDeferredEvents":"field","AdditionalAllowedFrameAncestors":"field","BackColor":"field","Create":"event","Ready":"event","Error":"event","NavigationStarting":"event","NavigationComplete":"event","SourceChanged":"event","DocumentTitleChanged":"event","PermissionRequested":"event","AcceleratorKeyPressed":"event","WebResourceRequested":"event","ProcessFailed":"event","ScriptDialogOpening":"event","UserContextMenu":"event","DOMContentLoaded":"event","SuspendCompleted":"event","SuspendFailed":"event","DownloadStarting":"event","PrintToPdfCompleted":"event","PrintToPdfFailed":"event","NewWindowRequested":"event","JsAsyncResult":"event","JsMessage":"event","DevToolsProtocolResponse":"event","New":"sub","hWnd":"property","MoveFocus":"sub","Navigate":"sub","SupportsNavigateCustomFeatures":"property","NavigateCustom":"sub","NavigateToString":"sub","DocumentURL":"property","DocumentTitle":"property","ZoomFactor":"property","BrowserProcessId":"property","CanGoBack":"property","GoBack":"sub","CanGoForward":"property","GoForward":"sub","AddObject":"sub","RemoveObject":"sub","AddScriptToExecuteOnDocumentCreated":"sub","AddWebResourceRequestedFilter":"sub","RemoveWebResourceRequestedFilter":"sub","OpenDevToolsWindow":"sub","CallDevToolsProtocolMethod":"sub","ExecuteScript":"sub","JsCallTimeOutSeconds":"field","JsRun":"function","JsRunAsync":"function","JsProp":"function","PostWebMessage":"sub","PostWebMessageJSON":"sub","Reload":"sub","SupportsSuspendResumeFeatures":"property","Suspend":"sub","Resume":"sub","IsSuspended":"property","SupportsAudioFeatures":"property","IsMuted":"property","IsDocumentPlayingAudio":"property","SupportsDownloadDialogFeatures":"property","IsDefaultDownloadDialogOpen":"property","OpenDefaultDownloadDialog":"sub","CloseDefaultDownloadDialog":"sub","SupportsTaskManagerFeatures":"property","OpenTaskManagerWindow":"sub","SupportsFolderMappingFeatures":"property","SetVirtualHostNameToFolderMapping":"sub","ClearVirtualHostNameToFolderMapping":"sub","SupportsPdfFeatures":"property","PrintToPdf":"sub","IsScriptEnabled":"property","IsWebMessageEnabled":"property","AreDefaultScriptDialogsEnabled":"property","IsStatusBarEnabled":"property","AreDevToolsEnabled":"property","AreDefaultContextMenusEnabled":"property","AreHostObjectsAllowed":"property","IsZoomControlEnabled":"property","IsBuiltInErrorPageEnabled":"property","SupportsUserAgentFeatures":"property","UserAgent":"property","SupportsAcceleratorKeysFeatures":"property","AreBrowserAcceleratorKeysEnabled":"property","SupportsAutoFillFeatures":"property","IsPasswordAutoSaveEnabled":"property","IsGeneralAutoFillEnabled":"property","SupportsPinchZoomFeatures":"property","IsPinchZoomEnabled":"property","SupportsSwipeNavigationFeatures":"property","IsSwipeNavigationEnabled":"property"}}, + {"name":"WebView2DeferredCallback","kind":"class","public":false}, + {"name":"IDeferredCallback","kind":"interface","members":{"NewWindowRequested":"sub","PermissionRequested":"sub","WebResourceRequested":"sub","ScriptDialogOpening":"sub","DownloadStarting":"sub"}}, + {"name":"WebView2DeferredRaiseEvent","kind":"class","public":false}, + {"name":"WebView2DevToolsProtocolCallback","kind":"class","public":false}, + {"name":"WebView2EnvironmentOptions","kind":"class","public":false}, + {"name":"IExecuteScriptCompleteCallback","kind":"interface","public":false}, + {"name":"WebView2ExecuteScriptCompleteHandler","kind":"class","public":false}, + {"name":"WebView2ExecuteScriptCompleteHandler2","kind":"class","public":false}, + {"name":"WebView2Header","kind":"class","members":{"Name":"field","Value":"field","New":"sub"}}, + {"name":"WebView2HeadersCollection","kind":"class","members":{"New":"sub"}}, + {"name":"WebView2Request","kind":"class","members":{"New":"sub","Method":"property","Uri":"property","Headers":"property","ContentBytes":"property","ContentUTF8":"property"}}, + {"name":"WebView2RequestHeaders","kind":"class","members":{"New":"sub","GetHeader":"function","Contains":"function","AppendHeader":"sub","RemoveHeader":"sub","GetHeaders":"function","_NewEnum":"function"}}, + {"name":"WebView2Response","kind":"class","members":{"HasBeenSet":"field","New":"sub","ContentBytes":"property","ContentUTF8":"property","StatusCode":"property","ReasonPhrase":"property","Headers":"property"}}, + {"name":"WebView2ResponseHeaders","kind":"class","members":{"New":"sub","AppendHeader":"sub","Contains":"function","GetHeader":"function","GetHeaders":"function","_NewEnum":"function"}}, + {"name":"WebViewEnums","kind":"module"}, + {"name":"wv2PermissionKind","kind":"enum","in":"WebViewEnums","values":["wv2UnknownPermission","wv2Microphone","wv2Camera","wv2Geolocation","wv2Notifications","wv2Sensors","wv2ClipboardRead"]}, + {"name":"wv2PermissionState","kind":"enum","in":"WebViewEnums","values":["wv2StateDefault","wv2StateAllow","wv2StateDeny"]}, + {"name":"wv2ErrorStatus","kind":"enum","in":"WebViewEnums","values":["wv2StateUnknown","wv2CertificateCommonNameIsIncorrect","wv2CertificateExpired","wv2ClientCertificateContainsErrors","wv2CertificateRevoked","wv2CertificateIsInvalid","wv2ServerUnreachable","wv2Timeout","wv2ErrorHttpInvalidServerResponse","wv2ConnectionAborted","wv2ConnectionReset","wv2Disconnected","wv2CannotConnect","wv2HostNameNotResolved","wv2OperationCanceled","wv2RedirectFailed","wv2UnexpectedError","wv2ValidAuthenticationCredentialsRequired","wv2ValidProxyAuthenticationRequired"]}, + {"name":"wv2KeyEventKind","kind":"enum","in":"WebViewEnums","values":["wv2EventKeyDown","wv2EventKeyUp","wv2EventSystemKeyDown","wv2EventSystemKeyUp"]}, + {"name":"wv2WebResourceContext","kind":"enum","in":"WebViewEnums","values":["wv2All","wv2Document","wv2Stylesheet","wv2Image","wv2Media","wv2Font","wv2Script","wv2XMLHttpRequest","wv2Fetch","wv2TextTrack","wv2EventSource","wv2WebSocket","wv2Manifest","wv2SignedExchange","wv2Ping","wv2CspViolationReport","wv2Other"]}, + {"name":"wv2ProcessFailedKind","kind":"enum","in":"WebViewEnums","values":["wv2BrowserProcessExited","wv2RenderProcessExited","wv2RenderProcessUnresponsive","wv2FrameRenderProcessExited","wv2UtilityProcessExited","wv2SandboxHelperProcessExited","wv2GpuProcessExited","wv2PpapiPluginProcessExited","wv2PpapiBrokerProcessExited","wv2UnknownProcessExited"]}, + {"name":"wv2ScriptDialogKind","kind":"enum","in":"WebViewEnums","values":["wv2DialogAlert","wv2DialogConfirm","wv2DialogPrompt","wv2DialogBeforeUnload"]}, + {"name":"wv2HostResourceAccessKind","kind":"enum","in":"WebViewEnums","values":["wv2ResourceDeny","wv2ResourceAllow","wv2ResourceDenyCors"]}, + {"name":"wv2PrintOrientation","kind":"enum","in":"WebViewEnums","values":["wv2PrintPortrait","wv2PrintLandscape"]}, + {"name":"wv2DefaultDownloadCornerAlign","kind":"enum","in":"WebViewEnums","values":["wv2CornerTopLeft","wv2CornerTopRight","wv2CornerBottomLeft","wv2CornerBottomRight"]}, + {"name":"WebViewTypes","kind":"module"}, + {"name":"COREWEBVIEW2_PHYSICAL_KEY_STATUS","kind":"type","in":"WebViewTypes","fields":["RepeatCount","ScanCode","IsExtendedKey","IsMenuKeyDown","WasKeyDown","IsKeyReleased"]}, + {"name":"WebView2Misc","kind":"module","public":false}, + {"name":"ControlAlt","kind":"interface","public":false} + ] + }, + "WinEventLogLib": { + "exports": ["WinEventLogLib"], + "types": [ + {"name":"EventLogAPIs","kind":"module","public":false}, + {"name":"EventLogConstants","kind":"module","public":false}, + {"name":"EventLogTypeConstants","kind":"enum","in":"EventLogConstants","values":["vbEventLogTypeSuccess","vbEventLogTypeAuditFailure","vbEventLogTypeAuditSuccess","vbEventLogTypeError","vbEventLogTypeWarning"]}, + {"name":"EventLog","kind":"class","members":{"New":"sub","LogSuccess":"sub","LogFailure":"sub","Register":"sub"}}, + {"name":"EventLogHelperPrivate","kind":"module","members":{"VariantArrayToStringArray":"function"}}, + {"name":"EventLogHelperPublic","kind":"module","members":{"RegisterEventLogInternal":"sub"}} + ] + }, + "WinNamedPipesLib": { + "exports": ["WinNamedPipesLib"], + "types": [ + {"name":"NamedPipesAPIs","kind":"module","public":false}, + {"name":"POINT","kind":"type","in":"NamedPipesAPIs","public":false}, + {"name":"MSG","kind":"type","in":"NamedPipesAPIs","public":false}, + {"name":"SAFEARRAYBOUND","kind":"type","in":"NamedPipesAPIs","public":false}, + {"name":"SAFEARRAY_1D","kind":"type","in":"NamedPipesAPIs","public":false}, + {"name":"OVERLAPPED_CUSTOM","kind":"type","in":"NamedPipesAPIs","public":false}, + {"name":"FILETIME","kind":"type","in":"NamedPipesAPIs","public":false}, + {"name":"WIN32_FIND_DATAW","kind":"type","in":"NamedPipesAPIs","public":false}, + {"name":"NamedPipesConstants","kind":"module","public":false}, + {"name":"OverlappedTypeConstants","kind":"enum","in":"NamedPipesConstants","values":["tbOverlappedConnect","tbOverlappedRead","tbOverlappedWrite"]}, + {"name":"NamedPipesHelper","kind":"module","public":false}, + {"name":"INamedPipeClientConnectionInternal","kind":"interface","public":false}, + {"name":"NamedPipeClientConnection","kind":"class","members":{"Connected":"event","Disconnected":"event","MessageReceived":"event","MessageSent":"event","PipeName":"field","Handle":"field","CustomData":"field","New":"sub","AsyncClose":"sub","AsyncWrite":"sub","AsyncRead":"sub"}}, + {"name":"INamedPipeClientManagerInternal","kind":"interface","public":false}, + {"name":"NamedPipeClientManager","kind":"class","members":{"NumThreadsIOCP":"field","MessageBufferSize":"field","FreeThreadingEvents":"field","ContinuouslyReadFromPipe":"field","New":"sub","Connect":"function","Stop":"sub","FindNamedPipes":"function"}}, + {"name":"ConnectionListItemClient","kind":"type","in":"NamedPipeClientManager","public":false}, + {"name":"INamedPipeServerInternal","kind":"interface","public":false}, + {"name":"NamedPipeServer","kind":"class","members":{"ServerReady":"event","ClientConnected":"event","ClientDisconnected":"event","ClientMessageReceived":"event","ClientMessageSent":"event","PipeName":"field","NumThreadsIOCP":"field","FreeThreadingEvents":"field","ContinuouslyReadFromPipe":"field","MessageBufferSize":"field","New":"sub","Start":"sub","Stop":"sub","AsyncBroadcast":"sub","ManualMessageLoopLeave":"sub","ManualMessageLoopEnter":"sub"}}, + {"name":"ConnectionListItemServer","kind":"type","in":"NamedPipeServer","public":false}, + {"name":"INamedPipeServerConnectionInternal","kind":"interface","public":false}, + {"name":"NamedPipeServerConnection","kind":"class","members":{"Handle":"field","IsOpening":"field","IsConnected":"field","CustomData":"field","New":"sub","AsyncClose":"sub","AsyncWrite":"sub","AsyncRead":"sub"}} + ] + }, + "WinNativeCommonCtls": { + "exports": ["WinNativeCommonCtls"], + "types": [ + {"name":"DTPickerBaseCtl","kind":"class","inherits":["VB.BaseControlFocusable"],"members":{"OLEDropMode":"field","UpDown":"field","CheckBox":"field","CalendarShowToday":"field","CalendarShowTodayCircle":"field","CalendarShowWeekNumbers":"field","CalendarShowTrailingDates":"field","RightToLeft":"field","HelpContextID":"field","WhatsThisHelpID":"field","Format":"field","CustomFormat":"field","Opacity":"field","TransparencyKey":"field","StartOfWeek":"field","CallbackKeyDown":"event","Change":"event","Click":"event","CloseUp":"event","DblClick":"event","DropDown":"event","FormatSize":"event","GotFocus":"event","LostFocus":"event","MouseDown":"event","MouseMove":"event","MouseUp":"event","Initialize":"event","DragDrop":"event","DragOver":"event","OLECompleteDrag":"event","OLEDragDrop":"event","OLEDragOver":"event","OLEGiveFeedback":"event","OLESetData":"event","OLEStartDrag":"event","Validate":"event","New":"sub","CalendarBackColor":"property","CalendarForeColor":"property","CalendarTitleBackColor":"property","CalendarTitleForeColor":"property","CalendarTrailingForeColor":"property","Parent":"property","Object":"property","OLEDrag":"sub","MinDate":"property","MaxDate":"property","Value":"property","Year":"property","Month":"property","Week":"property","hWndCalendar":"property","Day":"property","Hour":"property","Minute":"property","Second":"property","DayCount":"property","DayOfWeek":"property"}}, + {"name":"DTPicker","kind":"class","control":true,"inherits":["WinNativeCommonCtls.DTPickerBaseCtl"]}, + {"name":"TbImageListPrivate","kind":"interface","members":{"GetScaleX":"function","GetScaleY":"function","SetWidthHeight":"sub","SyncListProps":"sub","GetInitImageData":"sub","SetInitImageData":"sub","ImageWidth":"property","ImageHeight":"property","ColorDepth":"property","UseMaskColor":"property","MaskColor":"property","BoundCount":"property"}}, + {"name":"ImageListBaseCtl","kind":"class","inherits":["VB.BaseControlNotFocusable"],"members":{"BackColor":"field","UseBackColor":"field","MaskColor":"field","UseMaskColor":"field","ColorDepth":"field","New":"sub","Parent":"property","Object":"property","hImageList":"property","Overlay":"function","ImageWidth":"property","ImageHeight":"property","ListImages":"property"}}, + {"name":"ImageListColorDepth","kind":"enum","in":"ImageListBaseCtl","values":["ColorDepth4Bit","ColorDepth8Bit","ColorDepth16Bit","ColorDepth24Bit","ColorDepth32Bit"]}, + {"name":"ImageList","kind":"class","control":true,"inherits":["WinNativeCommonCtls.ImageListBaseCtl"]}, + {"name":"TbListViewPrivate","kind":"interface","members":{"GetScaleX":"function","GetScaleY":"function","UnitPixelScale":"function","GetInternalDataPtr":"function"}}, + {"name":"ListViewHeaderSubclasser","kind":"class","public":false}, + {"name":"ListViewBaseCtl","kind":"class","inherits":["VB.BaseControlFocusable"],"members":{"BorderStyle":"field","CheckBoxes":"field","GridLines":"field","HideColumnHeaders":"field","FullRowSelect":"field","HideSelection":"field","MultiSelect":"field","LabelWrap":"field","FlatScrollBar":"field","HotTracking":"field","LabelEdit":"field","View":"field","Arrange":"field","BackColor":"field","TextBackground":"field","Opacity":"field","TransparencyKey":"field","AllowColumnReorder":"field","OLEDropMode":"field","Initialize":"event","Click":"event","DblClick":"event","KeyDown":"event","KeyPress":"event","KeyUp":"event","MouseDown":"event","MouseMove":"event","MouseUp":"event","BeforeLabelEdit":"event","AfterLabelEdit":"event","OLECompleteDrag":"event","OLEDragDrop":"event","OLEDragOver":"event","OLEGiveFeedback":"event","OLESetData":"event","OLEStartDrag":"event","DragDrop":"event","DragOver":"event","Validate":"event","ColumnClick":"event","ItemCheck":"event","ItemClick":"event","Scroll":"event","New":"sub","hWnd":"property","Parent":"property","Object":"property","ListItems":"property","ColumnHeaders":"property","GetFirstVisible":"function","SelectedItemIndex":"property","SelectedItem":"property","StartLabelEdit":"sub","OLEDrag":"sub","SmallIcons":"property","Icons":"property","ColumnHeaderIcons":"property","hWndHeader":"property"},"hiddenMembers":["hWndHeader"]}, + {"name":"ListViewConstants","kind":"enum","in":"ListViewBaseCtl","values":["lvwIcon","lvwSmallIcon","lvwList","lvwReport"]}, + {"name":"ListArrangeConstants","kind":"enum","in":"ListViewBaseCtl","values":["lvwNone","lvwAutoLeft","lvwAutoTop"]}, + {"name":"ListTextBackgroundConstants","kind":"enum","in":"ListViewBaseCtl","values":["lvwTransparent","lvwOpaque"]}, + {"name":"ListLabelEditConstants","kind":"enum","in":"ListViewBaseCtl","values":["lvwAutomatic","lvwManual","lvwDisabled"]}, + {"name":"HDLAYOUT","kind":"type","in":"ListViewBaseCtl","fields":["prc","pwpos"]}, + {"name":"WINDOWPOS","kind":"type","in":"ListViewBaseCtl","fields":["hwnd","hwndInsertAfter","x","y","cx","cy","flags"]}, + {"name":"ListViewInternalData","kind":"type","in":"ListViewBaseCtl","fields":["InternalBuffer","InternalBufferLen","IsDestroying","IndentationScale","IsDesignMode","IsClicked","IsEdittingNodeText","MouseButtonDown","CachedTopHandle","BoldFontCached","BoldFontCachedId"]}, + {"name":"ListView","kind":"class","control":true,"inherits":["WinNativeCommonCtls.ListViewBaseCtl"]}, + {"name":"MonthViewBaseCtl","kind":"class","inherits":["VB.BaseControlFocusable"],"members":{"OLEDropMode":"field","ShowToday":"field","ShowTodayCircle":"field","ShowWeekNumbers":"field","ShowTrailingDates":"field","MonthColumns":"field","MonthRows":"field","ResizeToFit":"field","BorderStyle":"field","Appearance":"field","Opacity":"field","TransparencyKey":"field","MultiSelect":"field","MaxSelCount":"field","ScrollRate":"field","StartOfWeek":"field","RightToLeft":"field","HelpContextID":"field","WhatsThisHelpID":"field","Click":"event","DateClick":"event","DblClick":"event","DateDblClick":"event","GetDayBold":"event","SelChange":"event","GotFocus":"event","LostFocus":"event","KeyDown":"event","KeyPress":"event","KeyUp":"event","MouseDown":"event","MouseMove":"event","MouseUp":"event","Initialize":"event","DragDrop":"event","DragOver":"event","OLECompleteDrag":"event","OLEDragDrop":"event","OLEDragOver":"event","OLEGiveFeedback":"event","OLESetData":"event","OLEStartDrag":"event","Validate":"event","New":"sub","Parent":"property","Object":"property","OLEDrag":"sub","BackColor":"property","MonthBackColor":"property","TitleBackColor":"property","TitleForeColor":"property","TrailingForeColor":"property","ForeColor":"property","Value":"property","MinDate":"property","MaxDate":"property","GetMonthRange":"function","VisibleDays":"property","DayBold":"property","CalendarCount":"property","DayCount":"property","SelStart":"property","SelEnd":"property","Year":"property","Month":"property","Week":"property","Day":"property","DayOfWeek":"property"}}, + {"name":"MonthViewInternalData","kind":"type","in":"MonthViewBaseCtl","fields":["IsInitialized","IsNewControl","LastSelectionStart","LastSelectionEnd","IsDesignMode","LastMouseUpX","LastMouseUpY","LastMouseUpTime","LastCachedDayStateStart","LastCachedDayStateEnd","LastCachedDayStateMonthCount","LastCachedDayStateNumDays","LastCachedDayStateDayStates","LastCachedDayStateBits"]}, + {"name":"MonthView","kind":"class","control":true,"inherits":["WinNativeCommonCtls.MonthViewBaseCtl"]}, + {"name":"ProgressBarBaseCtl","kind":"class","inherits":["VB.BaseControlNotFocusable2"],"members":{"BorderStyle":"field","BackColor":"field","ForeColor":"field","MarqueeAnimation":"field","MarqueeSpeed":"field","State":"field","SmoothReverse":"field","Orientation":"field","Scrolling":"field","Opacity":"field","TransparencyKey":"field","OLEDropMode":"field","Change":"event","Click":"event","DblClick":"event","MouseDown":"event","MouseMove":"event","MouseUp":"event","Initialize":"event","DragDrop":"event","DragOver":"event","OLECompleteDrag":"event","OLEDragDrop":"event","OLEDragOver":"event","OLEGiveFeedback":"event","OLESetData":"event","OLEStartDrag":"event","New":"sub","Min":"property","Max":"property","Step":"property","StepIt":"sub","Value":"property","Parent":"property","Object":"property","BorderStyleChanged":"sub","OLEDrag":"sub"}}, + {"name":"PrbOrientation","kind":"enum","in":"ProgressBarBaseCtl","values":["PrbOrientationHorizontal","PrbOrientationVertical"]}, + {"name":"PrbScrolling","kind":"enum","in":"ProgressBarBaseCtl","values":["PrbScrollingStandard","PrbScrollingSmooth","PrbScrollingMarquee"]}, + {"name":"PrbState","kind":"enum","in":"ProgressBarBaseCtl","values":["PrbStateNormal","PrbStateError","PrbStatePaused"]}, + {"name":"ProgressBar","kind":"class","control":true,"inherits":["WinNativeCommonCtls.ProgressBarBaseCtl"]}, + {"name":"SliderBaseCtl","kind":"class","inherits":["VB.BaseControlFocusableNoFont"],"members":{"BorderStyle":"field","BackColor":"field","OLEDropMode":"field","Opacity":"field","TransparencyKey":"field","HideThumb":"field","ShowTip":"field","SelectRange":"field","TickFrequency":"field","TextPosition":"field","TickStyle":"field","Orientation":"field","Change":"event","Click":"event","GotFocus":"event","KeyDown":"event","KeyPress":"event","KeyUp":"event","LostFocus":"event","MouseDown":"event","MouseMove":"event","MouseUp":"event","Initialize":"event","DragDrop":"event","DragOver":"event","OLECompleteDrag":"event","OLEDragDrop":"event","OLEDragOver":"event","OLEGiveFeedback":"event","OLESetData":"event","OLEStartDrag":"event","Scroll":"event","Validate":"event","New":"sub","Min":"property","Max":"property","Value":"property","Parent":"property","Object":"property","SelStart":"property","SelLength":"property","SmallChange":"property","LargeChange":"property","OLEDrag":"sub","ToolTipText":"property","VisualStyles":"property"}}, + {"name":"TickStyleConstants","kind":"enum","in":"SliderBaseCtl","values":["sldBottomRight","sldTopLeft","sldBoth","sldNoTicks"]}, + {"name":"TextPositionConstants","kind":"enum","in":"SliderBaseCtl","values":["sldAboveLeft","sldBelowRight"]}, + {"name":"Slider","kind":"class","control":true,"inherits":["WinNativeCommonCtls.SliderBaseCtl"]}, + {"name":"TbTreeViewPrivate","kind":"interface","members":{"GetNodeFromHandle":"function","GetTreeViewInternalDataPtr":"function","SortNowInternal":"sub"}}, + {"name":"TreeViewBaseCtl","kind":"class","inherits":["VB.BaseControlFocusable"],"members":{"BorderStyle":"field","CheckBoxes":"field","FullRowSelect":"field","HideSelection":"field","HotTracking":"field","LabelEdit":"field","LineStyle":"field","PathSeparator":"field","Scroll":"field","SingleSel":"field","Sorted":"field","SortOrder":"field","SortType":"field","Style":"field","WheelScrollEvent":"field","Opacity":"field","TransparencyKey":"field","OLEDropMode":"field","Initialize":"event","Click":"event","DblClick":"event","KeyDown":"event","KeyPress":"event","KeyUp":"event","MouseDown":"event","MouseMove":"event","MouseUp":"event","NodeClick":"event","NodeCheck":"event","NodeSelect":"event","Collapse":"event","Expand":"event","BeforeCollapse":"event","BeforeExpand":"event","BeforeLabelEdit":"event","AfterLabelEdit":"event","OLECompleteDrag":"event","OLEDragDrop":"event","OLEDragOver":"event","OLEGiveFeedback":"event","OLESetData":"event","OLEStartDrag":"event","DragDrop":"event","DragOver":"event","Validate":"event","New":"sub","Indentation":"property","hWnd":"property","GetVisibleCount":"function","SelectedItem":"property","DropHighlight":"property","StartLabelEdit":"sub","HitTest":"function","hWndLabelEdit":"property","Parent":"property","Object":"property","Nodes":"property","OLEDrag":"sub","ImageList":"property"}}, + {"name":"TreeViewInternalData","kind":"type","in":"TreeViewBaseCtl","fields":["IsDestroying","InternalPendingDblClick","InternalNodes","IndentationScale","IsDesignMode","IsClicked","IsEdittingNodeText","MouseButtonDown","CachedTopHandle"]}, + {"name":"TreeView","kind":"class","control":true,"inherits":["WinNativeCommonCtls.TreeViewBaseCtl"]}, + {"name":"UpDownBaseCtl","kind":"class","inherits":["VB.BaseControlFocusableNoFont"],"members":{"OLEDropMode":"field","Orientation":"field","Opacity":"field","TransparencyKey":"field","Change":"event","UpClick":"event","DownClick":"event","GotFocus":"event","LostFocus":"event","MouseDown":"event","MouseMove":"event","MouseUp":"event","Initialize":"event","DragDrop":"event","DragOver":"event","OLECompleteDrag":"event","OLEDragDrop":"event","OLEDragOver":"event","OLEGiveFeedback":"event","OLESetData":"event","OLEStartDrag":"event","Validate":"event","New":"sub","Min":"property","Max":"property","Value":"property","Parent":"property","Object":"property","Increment":"property","OLEDrag":"sub","ToolTipText":"property","VisualStyles":"property"}}, + {"name":"UDACCEL","kind":"type","in":"UpDownBaseCtl","public":false}, + {"name":"NMUPDOWN","kind":"type","in":"UpDownBaseCtl","public":false}, + {"name":"UpDown","kind":"class","control":true,"inherits":["WinNativeCommonCtls.UpDownBaseCtl"]}, + {"name":"ColumnHeader","kind":"class","members":{"Tag":"field","InternalIcon":"field","New":"sub","Index":"property","Key":"property","Icon":"property","Text":"property","Left":"property","Width":"property","Alignment":"property","Position":"property","SubItemIndex":"property"}}, + {"name":"ListColumnAlignmentConstants","kind":"enum","in":"ColumnHeader","values":["lvwColumnLeft","lvwColumnRight","lvwColumnCenter"]}, + {"name":"ColumnHeaders","kind":"class","members":{"ContainerList":"field","New":"sub","_NewEnum":"function","Add":"function","Clear":"sub","Count":"property","Item":"property","Remove":"sub"}}, + {"name":"DTPickerConsts","kind":"module","members":{"GDT_ERROR":"const","GDT_VALID":"const","GDT_NONE":"const"}}, + {"name":"DTPickerStyles","kind":"enum","in":"DTPickerConsts","values":["DTS_UPDOWN","DTS_SHOWNONE","DTS_SHORTDATEFORMAT","DTS_LONGDATEFORMAT","DTS_SHORTDATECENTURYFORMAT","DTS_TIMEFORMAT","DTS_APPCANPARSE","DTS_RIGHTALIGN"]}, + {"name":"DTPickerMessages","kind":"enum","in":"DTPickerConsts","values":["DTM_GETSYSTEMTIME","DTM_SETSYSTEMTIME","DTM_GETRANGE","DTM_SETRANGE","DTM_SETFORMATA","DTM_SETFORMATW","DTM_SETMCCOLOR","DTM_GETMCCOLOR","DTM_GETMONTHCAL","DTM_SETMCFONT","DTM_GETMCFONT","DTM_SETMCSTYLE","DTM_GETMCSTYLE","DTM_CLOSEMONTHCAL","DTM_GETDATETIMEPICKERINFO","DTM_GETIDEALSIZE"]}, + {"name":"DTPickerNotifications","kind":"enum","in":"DTPickerConsts","values":["DTN_DATETIMECHANGE","DTN_USERSTRINGA","DTN_USERSTRINGW","DTN_WMKEYDOWNA","DTN_WMKEYDOWNW","DTN_FORMATA","DTN_FORMATW","DTN_FORMATQUERYA","DTN_FORMATQUERYW","DTN_DROPDOWN","DTN_CLOSEUP"]}, + {"name":"DTPickerColorArea","kind":"enum","in":"DTPickerConsts","values":["MCSC_BACKGROUND","MCSC_TEXT","MCSC_TITLEBK","MCSC_TITLETEXT","MCSC_MONTHBK","MCSC_TRAILINGTEXT"]}, + {"name":"NMDATETIMECHANGE","kind":"type","in":"DTPickerConsts","fields":["hdr","dwFlags","ST"]}, + {"name":"NMDATETIMEWMKEYDOWN","kind":"type","in":"DTPickerConsts","fields":["hdr","nVirtKey","pszFormat","ST"]}, + {"name":"NMDATETIMEFORMAT","kind":"type","in":"DTPickerConsts","fields":["hdr","pszFormat","ST","pszDisplay","szDisplay"]}, + {"name":"NMDATETIMEFORMATQUERY","kind":"type","in":"DTPickerConsts","fields":["hdr","pszFormat","szMax"]}, + {"name":"NMDATETIMESTRING","kind":"type","in":"DTPickerConsts","fields":["hdr","pszUserString","ST","dwFlags"]}, + {"name":"DTPickerFormatConstants","kind":"enum","in":"DTPickerConsts","values":["dtpLongDate","dtpShortDate","dtpTime","dtpCustom"]}, + {"name":"ImageListConsts","kind":"module","public":false}, + {"name":"ImlDrawConstants","kind":"enum","in":"ImageListConsts","values":["ImlDrawNormal","ImlDrawTransparent","ImlDrawSelected","ImlDrawFocus","ImlDrawNoMask"]}, + {"name":"ImageListPropertyPage","kind":"class","members":{"ChangesApplied":"field","New":"sub"}}, + {"name":"ImageListEntry","kind":"type","in":"ImageListPropertyPage","fields":["ImageData","Key","Tag","CachedOrigWidth","CachedOrigHeight","CachedOrigInfo","CachedPicture"]}, + {"name":"ModShowImageListPropertyPage","kind":"module","public":false}, + {"name":"ModShowImageListPropertyPage","kind":"module","public":false}, + {"name":"ImagesHelper","kind":"module","public":false}, + {"name":"BITMAP","kind":"type","in":"ImagesHelper","public":false}, + {"name":"Control","kind":"interface","public":false}, + {"name":"IScheduledCallback","kind":"interface","public":false}, + {"name":"ITwinBasicDesignerExtensions","kind":"interface","public":false}, + {"name":"ListImage","kind":"class","members":{"Index":"field","Key":"field","Picture":"field","Tag":"field","New":"sub","Draw":"sub","ExtractIcon":"function"}}, + {"name":"ListImages","kind":"class","members":{"Add":"function","Clear":"sub","ControlDefault":"property","Count":"property","Item":"property","Exists":"property","_NewEnum":"function","Remove":"sub"},"hiddenMembers":["ControlDefault"]}, + {"name":"ListItem","kind":"class","members":{"Tag":"field","InternalIcon":"field","InternalSmallIcon":"field","SubItems":"property","ToolTipText":"field","Bold":"field","BackColor":"field","ForeColor":"field","New":"sub","Icon":"property","SmallIcon":"property","Index":"property","Key":"property","Text":"property","EnsureVisible":"sub","Checked":"property","Selected":"property","Ghosted":"property","CreateDragImage":"function","Left":"property","Top":"property","Width":"property","Height":"property"}}, + {"name":"ListItems","kind":"class","members":{"ContainerList":"field","New":"sub","_NewEnum":"function","Add":"function","Clear":"sub","Count":"property","Item":"property","Remove":"sub"}}, + {"name":"ListViewConsts","kind":"module","public":false}, + {"name":"LVNotifications","kind":"enum","in":"ListViewConsts","values":["LVN_FIRST","LVN_ITEMCHANGING","LVN_ITEMCHANGED","LVN_INSERTITEM","LVN_DELETEITEM","LVN_DELETEALLITEMS","LVN_BEGINLABELEDITA","LVN_BEGINLABELEDITW","LVN_ENDLABELEDITA","LVN_ENDLABELEDITW","LVN_COLUMNCLICK","LVN_BEGINDRAG","LVN_BEGINRDRAG","LVN_ODCACHEHINT","LVN_ODFINDITEMA","LVN_ODFINDITEMW","LVN_ITEMACTIVATE","LVN_ODSTATECHANGED","LVN_HOTTRACK","LVN_GETDISPINFOA","LVN_GETDISPINFOW","LVN_SETDISPINFOA","LVN_SETDISPINFOW","LVN_GETINFOTIPA","LVN_GETINFOTIPW"]}, + {"name":"LVMessages","kind":"enum","in":"ListViewConsts","values":["LVM_FIRST","LVM_GETBKCOLOR","LVM_SETBKCOLOR","LVM_GETIMAGELIST","LVM_SETIMAGELIST","LVM_GETITEMCOUNT","LVM_GETITEMA","LVM_GETITEMW","LVM_SETITEMA","LVM_SETITEMW","LVM_INSERTITEMA","LVM_INSERTITEMW","LVM_DELETEITEM","LVM_DELETEALLITEMS","LVM_GETCALLBACKMASK","LVM_SETCALLBACKMASK","LVM_GETNEXTITEM","LVM_FINDITEMA","LVM_FINDITEMW","LVM_GETITEMRECT","LVM_SETITEMPOSITION","LVM_GETITEMPOSITION","LVM_GETSTRINGWIDTHA","LVM_GETSTRINGWIDTHW","LVM_HITTEST","LVM_ENSUREVISIBLE","LVM_SCROLL","LVM_REDRAWITEMS","LVM_ARRANGE","LVM_EDITLABELA","LVM_EDITLABELW","LVM_GETCOLUMNA","LVM_GETCOLUMNW","LVM_SETCOLUMNA","LVM_SETCOLUMNW","LVM_INSERTCOLUMNA","LVM_INSERTCOLUMNW","LVM_DELETECOLUMN","LVM_GETCOLUMNWIDTH","LVM_SETCOLUMNWIDTH","LVM_GETHEADER","LVM_CREATEDRAGIMAGE","LVM_GETVIEWRECT","LVM_GETTEXTCOLOR","LVM_SETTEXTCOLOR","LVM_GETTEXTBKCOLOR","LVM_SETTEXTBKCOLOR","LVM_GETTOPINDEX","LVM_GETCOUNTPERPAGE","LVM_GETORIGIN","LVM_UPDATE","LVM_SETITEMSTATE","LVM_GETITEMSTATE","LVM_GETITEMTEXTA","LVM_GETITEMTEXTW","LVM_SETITEMTEXTA","LVM_SETITEMTEXTW","LVM_SETITEMCOUNT","LVM_SORTITEMS","LVM_SETITEMPOSITION32","LVM_GETSELECTEDCOUNT","LVM_GETITEMSPACING","LVM_GETISEARCHSTRINGA","LVM_GETISEARCHSTRINGW","LVM_SETICONSPACING","LVM_SETEXTENDEDLISTVIEWSTYLE","LVM_GETEXTENDEDLISTVIEWSTYLE","LVM_GETSUBITEMRECT","LVM_SUBITEMHITTEST","LVM_SETCOLUMNORDERARRAY","LVM_GETCOLUMNORDERARRAY","LVM_SETHOTITEM","LVM_GETHOTITEM","LVM_SETHOTCURSOR","LVM_GETHOTCURSOR","LVM_APPROXIMATEVIEWRECT","LV_MAX_WORKAREAS","LVM_SETWORKAREAS","LVM_GETWORKAREAS","LVM_GETNUMBEROFWORKAREAS","LVM_GETSELECTIONMARK","LVM_SETSELECTIONMARK","LVM_SETHOVERTIME","LVM_GETHOVERTIME","LVM_SETTOOLTIPS","LVM_GETTOOLTIPS","LVM_SORTITEMSEX","LVM_SETBKIMAGEA","LVM_SETBKIMAGEW","LVM_GETBKIMAGEA","LVM_GETBKIMAGEW","LVM_SETSELECTEDCOLUMN","LVM_SETVIEW","LVM_GETVIEW","LVM_INSERTGROUP","LVM_SETGROUPINFO","LVM_GETGROUPINFO","LVM_REMOVEGROUP","LVM_MOVEGROUP","LVM_GETGROUPCOUNT","LVM_GETGROUPINFOBYINDEX","LVM_MOVEITEMTOGROUP","LVM_GETGROUPRECT","LVM_SETGROUPMETRICS","LVM_GETGROUPMETRICS","LVM_ENABLEGROUPVIEW","LVM_SORTGROUPS","LVM_INSERTGROUPSORTED","LVM_REMOVEALLGROUPS","LVM_HASGROUP","LVM_GETGROUPSTATE","LVM_GETFOCUSEDGROUP","LVM_SETTILEVIEWINFO","LVM_GETTILEVIEWINFO","LVM_SETTILEINFO","LVM_GETTILEINFO","LVM_SETINSERTMARK","LVM_GETINSERTMARK","LVM_INSERTMARKHITTEST","LVM_GETINSERTMARKRECT","LVM_SETINSERTMARKCOLOR","LVM_GETINSERTMARKCOLOR","LVM_SETINFOTIP","LVM_GETSELECTEDCOLUMN","LVM_ISGROUPVIEWENABLED","LVM_GETOUTLINECOLOR","LVM_SETOUTLINECOLOR","LVM_CANCELEDITLABEL","LVM_MAPINDEXTOID","LVM_MAPIDTOINDEX","LVM_ISITEMVISIBLE","LVM_GETEMPTYTEXT","LVM_GETFOOTERRECT","LVM_GETFOOTERINFO","LVM_GETFOOTERITEMRECT","LVM_GETFOOTERITEM","LVM_GETITEMINDEXRECT","LVM_SETITEMINDEXSTATE","LVM_GETNEXTITEMINDEX"]}, + {"name":"LVMisc","kind":"enum","in":"ListViewConsts","values":["LVSIL_NORMAL","LVSIL_SMALL","LVSIL_STATE","LVSIL_GROUPHEADER","LVNI_ALL","LVNI_FOCUSED","LVNI_SELECTED","LVNI_CUT","LVNI_DROPHILITED","LVNI_STATEMASK","LVNI_VISIBLEORDER","LVNI_PREVIOUS","LVNI_VISIBLEONLY","LVNI_SAMEGROUPONLY","LVNI_ABOVE","LVNI_BELOW","LVNI_TOLEFT","LVNI_TORIGHT","LVNI_DIRECTIONMASK","LVFI_PARAM","LVFI_STRING","LVFI_SUBSTRING","LVFI_PARTIAL","LVFI_WRAP","LVFI_NEARESTXY","LVIR_BOUNDS","LVIR_ICON","LVIR_LABEL","LVIR_SELECTBOUNDS","LVHT_NOWHERE","LVHT_ONITEMICON","LVHT_ONITEMLABEL","LVHT_ONITEMSTATEICON","LVHT_ONITEM","LVHT_ABOVE","LVHT_BELOW","LVHT_TORIGHT","LVHT_TOLEFT","LVHT_EX_GROUP_HEADER","LVHT_EX_GROUP_FOOTER","LVHT_EX_GROUP_COLLAPSE","LVHT_EX_GROUP_BACKGROUND","LVHT_EX_GROUP_STATEICON","LVHT_EX_GROUP_SUBSETLINK","LVHT_EX_GROUP","LVHT_EX_ONCONTENTS","LVHT_EX_FOOTER","LVA_DEFAULT","LVA_ALIGNLEFT","LVA_ALIGNTOP","LVA_SNAPTOGRID","LVCF_FMT","LVCF_WIDTH","LVCF_TEXT","LVCF_SUBITEM","LVCF_IMAGE","LVCF_ORDER","LVCF_MINWIDTH","LVCF_DEFAULTWIDTH","LVCF_IDEALWIDTH","LVCFMT_LEFT","LVCFMT_RIGHT","LVCFMT_CENTER","LVCFMT_JUSTIFYMASK","LVCFMT_IMAGE","LVCFMT_BITMAP_ON_RIGHT","LVCFMT_COL_HAS_IMAGES","LVCFMT_FIXED_WIDTH","LVCFMT_NO_DPI_SCALE","LVCFMT_FIXED_RATIO","LVCFMT_LINE_BREAK","LVCFMT_FILL","LVCFMT_WRAP","LVCFMT_NO_TITLE","LVCFMT_TILE_PLACEMENTMASK","LVCFMT_SPLITBUTTON","LVSCW_AUTOSIZE","LVSCW_AUTOSIZE_USEHEADER","LVSICF_NOINVALIDATEALL","LVSICF_NOSCROLL","LVBKIF_SOURCE_NONE","LVBKIF_SOURCE_HBITMAP","LVBKIF_SOURCE_URL","LVBKIF_SOURCE_MASK","LVBKIF_STYLE_NORMAL","LVBKIF_STYLE_TILE","LVBKIF_STYLE_MASK","LVBKIF_FLAG_TILEOFFSET","LVBKIF_TYPE_WATERMARK","LVBKIF_FLAG_ALPHABLEND","LV_VIEW_ICON","LV_VIEW_DETAILS","LV_VIEW_SMALLICON","LV_VIEW_LIST","LV_VIEW_TILE","LV_VIEW_MAX","LVGF_NONE","LVGF_HEADER","LVGF_FOOTER","LVGF_STATE","LVGF_ALIGN","LVGF_GROUPID","LVGF_SUBTITLE","LVGF_TASK","LVGF_DESCRIPTIONTOP","LVGF_DESCRIPTIONBOTTOM","LVGF_TITLEIMAGE","LVGF_EXTENDEDIMAGE","LVGF_ITEMS","LVGF_SUBSET","LVGF_SUBSETITEMS","LVGS_NORMAL","LVGS_COLLAPSED","LVGS_HIDDEN","LVGS_NOHEADER","LVGS_COLLAPSIBLE","LVGS_FOCUSED","LVGS_SELECTED","LVGS_SUBSETED","LVGS_SUBSETLINKFOCUSED","LVGA_HEADER_LEFT","LVGA_HEADER_CENTER","LVGA_HEADER_RIGHT","LVGA_FOOTER_LEFT","LVGA_FOOTER_CENTER","LVGA_FOOTER_RIGHT","LVGGR_GROUP","LVGGR_HEADER","LVGGR_LABEL","LVGGR_SUBSETLINK","LVGMF_NONE","LVGMF_BORDERSIZE","LVGMF_BORDERCOLOR","LVGMF_TEXTCOLOR","LVTVIF_AUTOSIZE","LVTVIF_FIXEDWIDTH","LVTVIF_FIXEDHEIGHT","LVTVIF_FIXEDSIZE","LVTVIF_EXTENDED","LVTVIM_TILESIZE","LVTVIM_COLUMNS","LVTVIM_LABELMARGIN","LVFIF_TEXT","LVFIF_STATE","LVFIS_FOCUSED","LVIS_FOCUSED","LVIS_SELECTED","LVIS_CUT","LVIS_DROPHILITED","LVIS_GLOW","LVIS_ACTIVATING","LVIS_OVERLAYMASK","LVIS_STATEIMAGEMASK","LVFF_ITEMCOUNT","LVIM_AFTER","LVIF_TEXT","LVIF_IMAGE","LVIF_PARAM","LVIF_STATE","LVIF_INDENT","LVIF_NORECOMPUTE","LVIF_GROUPID","LVIF_COLUMNS","LVIF_COLFMT"]}, + {"name":"LVFINDINFOW","kind":"type","in":"ListViewConsts","public":false}, + {"name":"LVCOLUMNW","kind":"type","in":"ListViewConsts","public":false}, + {"name":"LVBKIMAGEW","kind":"type","in":"ListViewConsts","public":false}, + {"name":"LVGROUP","kind":"type","in":"ListViewConsts","public":false}, + {"name":"LVGROUPMETRICS","kind":"type","in":"ListViewConsts","public":false}, + {"name":"LVINSERTGROUPSORTED","kind":"type","in":"ListViewConsts","public":false}, + {"name":"NMLVDISPINFOW","kind":"type","in":"ListViewConsts","public":false}, + {"name":"LVHITTESTINFO","kind":"type","in":"ListViewConsts","public":false}, + {"name":"LVTILEVIEWINFO","kind":"type","in":"ListViewConsts","public":false}, + {"name":"LVTILEINFO","kind":"type","in":"ListViewConsts","public":false}, + {"name":"LVINSERTMARK","kind":"type","in":"ListViewConsts","public":false}, + {"name":"LVSETINFOTIP","kind":"type","in":"ListViewConsts","public":false}, + {"name":"LVFOOTERINFO","kind":"type","in":"ListViewConsts","public":false}, + {"name":"LVFOOTERITEM","kind":"type","in":"ListViewConsts","public":false}, + {"name":"LVITEMINDEX","kind":"type","in":"ListViewConsts","public":false}, + {"name":"LVITEMW","kind":"type","in":"ListViewConsts","public":false}, + {"name":"NMCUSTOMDRAW","kind":"type","in":"ListViewConsts","public":false}, + {"name":"NMLVCUSTOMDRAW","kind":"type","in":"ListViewConsts","public":false}, + {"name":"NMLVGETINFOTIPW","kind":"type","in":"ListViewConsts","public":false}, + {"name":"NMLISTVIEW","kind":"type","in":"ListViewConsts","public":false}, + {"name":"LVStyles","kind":"enum","in":"ListViewConsts","values":["LVS_ICON","LVS_REPORT","LVS_SMALLICON","LVS_LIST","LVS_TYPEMASK","LVS_SINGLESEL","LVS_SHOWSELALWAYS","LVS_SORTASCENDING","LVS_SORTDESCENDING","LVS_SHAREIMAGELISTS","LVS_NOLABELWRAP","LVS_AUTOARRANGE","LVS_EDITLABELS","LVS_OWNERDATA","LVS_NOSCROLL","LVS_TYPESTYLEMASK","LVS_ALIGNTOP","LVS_ALIGNLEFT","LVS_ALIGNMASK","LVS_OWNERDRAWFIXED","LVS_NOCOLUMNHEADER","LVS_NOSORTHEADER"]}, + {"name":"LVExtendedStyles","kind":"enum","in":"ListViewConsts","values":["LVS_EX_GRIDLINES","LVS_EX_SUBITEMIMAGES","LVS_EX_CHECKBOXES","LVS_EX_TRACKSELECT","LVS_EX_HEADERDRAGDROP","LVS_EX_FULLROWSELECT","LVS_EX_ONECLICKACTIVATE","LVS_EX_TWOCLICKACTIVATE","LVS_EX_FLATSB","LVS_EX_REGIONAL","LVS_EX_INFOTIP","LVS_EX_UNDERLINEHOT","LVS_EX_UNDERLINECOLD","LVS_EX_MULTIWORKAREAS","LVS_EX_LABELTIP","LVS_EX_BORDERSELECT","LVS_EX_DOUBLEBUFFER","LVS_EX_HIDELABELS","LVS_EX_SINGLEROW","LVS_EX_SNAPTOGRID","LVS_EX_SIMPLESELECT","LVS_EX_JUSTIFYCOLUMNS","LVS_EX_TRANSPARENTBKGND","LVS_EX_TRANSPARENTSHADOWTEXT","LVS_EX_AUTOAUTOARRANGE","LVS_EX_HEADERINALLVIEWS","LVS_EX_AUTOCHECKSELECT","LVS_EX_AUTOSIZECOLUMNS","LVS_EX_COLUMNSNAPPOINTS","LVS_EX_COLUMNOVERFLOW"]}, + {"name":"Miscellaneous","kind":"module","public":false}, + {"name":"OrientationConstants","kind":"enum","in":"Miscellaneous","values":["ccOrientationHorizontal","ccOrientationVertical"]}, + {"name":"MonthViewConsts","kind":"module","members":{"GDTR_MIN":"const","GDTR_MAX":"const"}}, + {"name":"MonthViewStyles","kind":"enum","in":"MonthViewConsts","values":["MCS_DAYSTATE","MCS_MULTISELECT","MCS_WEEKNUMBERS","MCS_NOTODAYCIRCLE","MCS_NOTODAY","MCS_NOTRAILINGDATES","MCS_SHORTDAYSOFWEEK","MCS_NOSELCHANGEONNAV"]}, + {"name":"MonthViewColorArea","kind":"enum","in":"MonthViewConsts","values":["MCSC_BACKGROUND","MCSC_TEXT","MCSC_TITLEBK","MCSC_TITLETEXT","MCSC_MONTHBK","MCSC_TRAILINGTEXT"]}, + {"name":"MonthViewMessages","kind":"enum","in":"MonthViewConsts","values":["MCM_GETCURSEL","MCM_SETCURSEL","MCM_GETMAXSELCOUNT","MCM_SETMAXSELCOUNT","MCM_GETSELRANGE","MCM_SETSELRANGE","MCM_GETMONTHRANGE","MCM_SETDAYSTATE","MCM_GETMINREQRECT","MCM_SETCOLOR","MCM_GETCOLOR","MCM_SETTODAY","MCM_GETTODAY","MCM_HITTEST","MCM_SETFIRSTDAYOFWEEK","MCM_GETFIRSTDAYOFWEEK","MCM_GETRANGE","MCM_SETRANGE","MCM_GETMONTHDELTA","MCM_SETMONTHDELTA","MCM_GETMAXTODAYWIDTH","MCM_GETCURRENTVIEW","MCM_GETCALENDARCOUNT","MCM_GETCALENDARGRIDINFO","MCM_GETCALID","MCM_SETCALID","MCM_SIZERECTTOMIN","MCM_SETCALENDARBORDER","MCM_GETCALENDARBORDER","MCM_SETCURRENTVIEW"]}, + {"name":"MonthViewNotifications","kind":"enum","in":"MonthViewConsts","values":["MCN_SELCHANGE","MCN_GETDAYSTATE","MCN_SELECT","MCN_VIEWCHANGE"]}, + {"name":"SYSTEMTIME","kind":"type","in":"MonthViewConsts","fields":["wYear","wMonth","wDayOfWeek","wDay","wHour","wMinute","wSecond","wMilliseconds"]}, + {"name":"NMSELCHANGE","kind":"type","in":"MonthViewConsts","fields":["hdr","STSelStart","STSelEnd"]}, + {"name":"NMDAYSTATE","kind":"type","in":"MonthViewConsts","fields":["hdr","stStart","cDayState","prgDayState"]}, + {"name":"MCHITTESTINFO","kind":"type","in":"MonthViewConsts","fields":["cbSize","PT","uHit","ST"]}, + {"name":"MonthViewHitTestValues","kind":"enum","in":"MonthViewConsts","values":["MCHT_TITLE","MCHT_CALENDAR","MCHT_TODAYLINK","MCHT_CALENDARCONTROL","MCHT_NEXT","MCHT_PREV","MCHT_NOWHERE","MCHT_TITLEBK","MCHT_TITLEMONTH","MCHT_TITLEYEAR","MCHT_TITLEBTNNEXT","MCHT_TITLEBTNPREV","MCHT_CALENDARBK","MCHT_CALENDARDATE","MCHT_CALENDARDATENEXT","MCHT_CALENDARDATEPREV","MCHT_CALENDARDAY","MCHT_CALENDARWEEKNUM","MCHT_CALENDARDATEMIN","MCHT_CALENDARDATEMAX"]}, + {"name":"Node","kind":"class","members":{"Parent":"field","Sorted":"field","SortOrder":"field","SortType":"field","Tag":"field","BackColor":"field","ForeColor":"field","InternalImage":"field","InternalSelectedImage":"field","Image":"property","SelectedImage":"property","New":"sub","Index":"property","Key":"property","Text":"property","Child":"property","Next":"property","Previous":"property","Root":"property","FirstSibling":"property","LastSibling":"property","Children":"property","Expanded":"property","EnsureVisible":"sub","FullPath":"property","Bold":"property","Checked":"property","Selected":"property","Visible":"property"}}, + {"name":"HandleUDT","kind":"type","in":"Node","fields":["Handle"]}, + {"name":"Nodes","kind":"class","members":{"ContainerTree":"field","New":"sub","_NewEnum":"function","Add":"function","Clear":"sub","Count":"property","Item":"property","Remove":"sub"}}, + {"name":"ProgressBarConsts","kind":"module","public":false}, + {"name":"ProgressBarStyles","kind":"enum","in":"ProgressBarConsts","values":["PBS_SMOOTH","PBS_VERTICAL","PBS_SMOOTHREVERSE","PBS_MARQUEE"]}, + {"name":"ProgressBarMessages","kind":"enum","in":"ProgressBarConsts","values":["PBM_SETRANGE","PBM_SETPOS","PBM_DELTAPOS","PBM_SETSTEP","PBM_STEPIT","PBM_SETRANGE32","PBM_GETRANGE","PBM_GETPOS","PBM_SETBARCOLOR","PBM_SETBKCOLOR","PBM_SETMARQUEE","PBM_GETSTEP","PBM_GETBKCOLOR","PBM_GETBARCOLOR","PBM_SETSTATE","PBM_GETSTATE"]}, + {"name":"PBRANGE","kind":"type","in":"ProgressBarConsts","public":false}, + {"name":"SliderConsts","kind":"module"}, + {"name":"SliderStyles","kind":"enum","in":"SliderConsts","values":["TBS_AUTOTICKS","TBS_VERT","TBS_HORZ","TBS_TOP","TBS_BOTTOM","TBS_LEFT","TBS_RIGHT","TBS_BOTH","TBS_NOTICKS","TBS_ENABLESELRANGE","TBS_FIXEDLENGTH","TBS_NOTHUMB","TBS_TOOLTIPS","TBS_REVERSED","TBS_DOWNISLEFT","TBS_NOTIFYBEFOREMOVE","TBS_TRANSPARENTBKGND"]}, + {"name":"SliderMessages","kind":"enum","in":"SliderConsts","values":["TBM_GETPOS","TBM_GETRANGEMIN","TBM_GETRANGEMAX","TBM_GETTIC","TBM_SETTIC","TBM_SETPOS","TBM_SETRANGE","TBM_SETRANGEMIN","TBM_SETRANGEMAX","TBM_CLEARTICS","TBM_SETSEL","TBM_SETSELSTART","TBM_SETSELEND","TBM_GETPTICS","TBM_GETTICPOS","TBM_GETNUMTICS","TBM_GETSELSTART","TBM_GETSELEND","TBM_CLEARSEL","TBM_SETTICFREQ","TBM_SETPAGESIZE","TBM_GETPAGESIZE","TBM_SETLINESIZE","TBM_GETLINESIZE","TBM_GETTHUMBRECT","TBM_GETCHANNELRECT","TBM_SETTHUMBLENGTH","TBM_GETTHUMBLENGTH","TBM_SETTOOLTIPS","TBM_GETTOOLTIPS","TBM_SETTIPSIDE","TBM_SETBUDDY","TBM_GETBUDDY","TBM_SETPOSNOTIFY"]}, + {"name":"SliderTipSideFlags","kind":"enum","in":"SliderConsts","values":["TBTS_TOP","TBTS_LEFT","TBTS_BOTTOM","TBTS_RIGHT"]}, + {"name":"SliderTipScroll","kind":"enum","in":"SliderConsts","values":["TB_LINEUP","TB_LINEDOWN","TB_PAGEUP","TB_PAGEDOWN","TB_THUMBPOSITION","TB_THUMBTRACK","TB_TOP","TB_BOTTOM","TB_ENDTRACK"]}, + {"name":"TreeViewConsts","kind":"module","public":false}, + {"name":"Notifications","kind":"enum","in":"TreeViewConsts","values":["TVN_FIRST","TVN_SELCHANGINGA","TVN_SELCHANGINGW","TVN_SELCHANGING","TVN_SELCHANGEDA","TVN_SELCHANGEDW","TVN_SELCHANGED","TVN_GETDISPINFOA","TVN_GETDISPINFOW","TVN_GETDISPINFO","TVN_SETDISPINFOA","TVN_SETDISPINFOW","TVN_SETDISPINFO","TVN_ITEMEXPANDINGA","TVN_ITEMEXPANDINGW","TVN_ITEMEXPANDING","TVN_ITEMEXPANDEDA","TVN_ITEMEXPANDEDW","TVN_ITEMEXPANDED","TVN_BEGINDRAGA","TVN_BEGINDRAGW","TVN_BEGINDRAG","TVN_BEGINRDRAGA","TVN_BEGINRDRAGW","TVN_BEGINRDRAG","TVN_DELETEITEMA","TVN_DELETEITEMW","TVN_DELETEITEM","TVN_BEGINLABELEDITA","TVN_BEGINLABELEDITW","TVN_BEGINLABELEDIT","TVN_ENDLABELEDITA","TVN_ENDLABELEDITW","TVN_ENDLABELEDIT","TVN_KEYDOWN","TVN_GETINFOTIPA","TVN_GETINFOTIPW","TVN_GETINFOTIP","TVN_SINGLEEXPAND"]}, + {"name":"Messages","kind":"enum","in":"TreeViewConsts","values":["TVM_FIRST","TVM_INSERTITEMA","TVM_INSERTITEMW","TVM_INSERTITEM","TVM_DELETEITEM","TVM_EXPAND","TVM_GETITEMRECT","TVM_GETCOUNT","TVM_GETINDENT","TVM_SETINDENT","TVM_GETIMAGELIST","TVM_SETIMAGELIST","TVM_GETNEXTITEM","TVM_SELECTITEM","TVM_GETITEMA","TVM_GETITEMW","TVM_GETITEM","TVM_SETITEMA","TVM_SETITEMW","TVM_SETITEM","TVM_EDITLABELA","TVM_EDITLABELW","TVM_EDITLABEL","TVM_GETEDITCONTROL","TVM_GETVISIBLECOUNT","TVM_HITTEST","TVM_CREATEDRAGIMAGE","TVM_SORTCHILDREN","TVM_ENSUREVISIBLE","TVM_SORTCHILDRENCB","TVM_ENDEDITLABELNOW","TVM_GETISEARCHSTRINGA","TVM_GETISEARCHSTRINGW","TVM_GETISEARCHSTRING","TVM_SETTOOLTIPS","TVM_GETTOOLTIPS","TVM_SETINSERTMARK","TVM_SETITEMHEIGHT","TVM_GETITEMHEIGHT","TVM_SETBKCOLOR","TVM_SETTEXTCOLOR","TVM_SETINSERTMARKCOLOR","TVM_GETINSERTMARKCOLOR","TVM_GETITEMSTATE","TVM_SETLINECOLOR","TVM_GETLINECOLOR","TVM_SETEXTENDEDSTYLE","TVM_GETEXTENDEDSTYLE"]}, + {"name":"Misc","kind":"enum","in":"TreeViewConsts","values":["TVSIL_NORMAL","TVSIL_STATE","TVIF_TEXT","TVIF_IMAGE","TVIF_PARAM","TVIF_STATE","TVIF_HANDLE","TVIF_SELECTEDIMAGE","TVIF_CHILDREN","TVIF_INTEGRAL","TVIF_STATEEX","TVI_ROOT","TVI_FIRST","TVI_LAST","TVI_SORT","TVC_UNKNOWN","TVC_BYMOUSE","TVC_BYKEYBOARD","TVIS_FOCUSED","TVIS_SELECTED","TVIS_CUT","TVIS_DROPHILITED","TVIS_BOLD","TVIS_EXPANDED","TVIS_EXPANDEDONCE","TVIS_OVERLAYMASK","TVIS_STATEIMAGEMASK","TVIS_EX_DISABLED","TVHT_NOWHERE","TVHT_ONITEMICON","TVHT_ONITEMLABEL","TVHT_ONITEMINDENT","TVHT_ONITEMBUTTON","TVHT_ONITEMRIGHT","TVHT_ONITEMSTATEICON","TVHT_ONITEM","TVHT_ABOVE","TVHT_BELOW","TVHT_TORIGHT","TVHT_TOLEFT","TVE_COLLAPSE","TVE_EXPAND","TVE_TOGGLE","TVE_EXPANDPARTIAL","TVE_COLLAPSERESET","TVNRET_DEFAULT","TVNRET_SKIPOLD","TVNRET_SKIPNEW","TVGN_ROOT","TVGN_NEXT","TVGN_PREVIOUS","TVGN_PARENT","TVGN_CHILD","TVGN_FIRSTVISIBLE","TVGN_NEXTVISIBLE","TVGN_PREVIOUSVISIBLE","TVGN_DROPHILITE","TVGN_CARET","TVGN_LASTVISIBLE"]}, + {"name":"Other","kind":"enum","in":"TreeViewConsts","values":["IIL_UNCHECKED","IIL_CHECKED","I_IMAGECALLBACK"]}, + {"name":"Styles","kind":"enum","in":"TreeViewConsts","values":["TVS_EX_DOUBLEBUFFER","TVS_HASBUTTONS","TVS_HASLINES","TVS_LINESATROOT","TVS_EDITLABELS","TVS_DISABLEDRAGDROP","TVS_SHOWSELALWAYS","TVS_RTLREADING","TVS_NOTOOLTIPS","TVS_CHECKBOXES","TVS_TRACKSELECT","TVS_SINGLEEXPAND","TVS_INFOTIP","TVS_FULLROWSELECT","TVS_NOSCROLL","TVS_NONEVENHEIGHT","TVS_NOHSCROLL"]}, + {"name":"TVITEM","kind":"type","in":"TreeViewConsts","public":false}, + {"name":"TVITEMEX","kind":"type","in":"TreeViewConsts","public":false}, + {"name":"TVINSERTSTRUCT","kind":"type","in":"TreeViewConsts","public":false}, + {"name":"TVHITTESTINFO","kind":"type","in":"TreeViewConsts","public":false}, + {"name":"TVSORTCB","kind":"type","in":"TreeViewConsts","public":false}, + {"name":"NMHDR","kind":"type","in":"TreeViewConsts","public":false}, + {"name":"NMTREEVIEW","kind":"type","in":"TreeViewConsts","public":false}, + {"name":"NMTVDISPINFO","kind":"type","in":"TreeViewConsts","public":false}, + {"name":"NMCUSTOMDRAW","kind":"type","in":"TreeViewConsts","public":false}, + {"name":"NMTVCUSTOMDRAW","kind":"type","in":"TreeViewConsts","public":false}, + {"name":"CommonNotifications","kind":"enum","in":"TreeViewConsts","values":["NM_FIRST","NM_CLICK","NM_DBLCLK","NM_RCLICK","NM_RDBLCLK","NM_CUSTOMDRAW","NM_RELEASEDCAPTURE"]}, + {"name":"CommonCustomDrawState","kind":"enum","in":"TreeViewConsts","values":["CDDS_PREPAINT","CDDS_ITEM","CDDS_ITEMPREPAINT","CDDS_SUBITEM","CDIS_SELECTED","CDIS_FOCUS","CDRF_DODEFAULT","CDRF_NEWFONT","CDRF_NOTIFYITEMDRAW","CDRF_NOTIFYSUBITEMDRAW","TVCDRF_NOIMAGES"]}, + {"name":"TreeViewPublic","kind":"module"}, + {"name":"TreeBorderStyleConstants","kind":"enum","in":"TreeViewPublic","values":["ccNone","ccFixedSingle"]}, + {"name":"TreeLabelEditConstants","kind":"enum","in":"TreeViewPublic","values":["tvwAutomatic","tvwManual","tvwDisabled"]}, + {"name":"TreeLineStyleConstants","kind":"enum","in":"TreeViewPublic","values":["tvwTreeLines","tvwRootLines"]}, + {"name":"TreeStyleConstants","kind":"enum","in":"TreeViewPublic","values":["tvwTextOnly","tvwPictureText","tvwPlusMinusText","tvwPlusMinusPictureText","tvwTreelinesText","tvwTreelinesPictureText","tvwTreelinesPlusMinusText","tvwTreelinesPlusMinusPictureText"]}, + {"name":"TreeRelationshipConstants","kind":"enum","in":"TreeViewPublic","values":["tvwFirst","tvwLast","tvwNext","tvwPrevious","tvwChild"]}, + {"name":"TreeSortOrderConstants","kind":"enum","in":"TreeViewPublic","values":["tvwAscending","tvwDescending"]}, + {"name":"TreeSortTypeConstants","kind":"enum","in":"TreeViewPublic","values":["tvwBinary","tvwText"]}, + {"name":"TreeViewNodeCheckState","kind":"class","public":false}, + {"name":"ListViewNodeCheckState","kind":"class","public":false}, + {"name":"TreeViewNodeClick","kind":"class","public":false}, + {"name":"TreeViewNodeDblClick","kind":"class","public":false}, + {"name":"UpDownConsts","kind":"module"}, + {"name":"UpDownStyles","kind":"enum","in":"UpDownConsts","values":["UDS_WRAP","UDS_SETBUDDYINT","UDS_ALIGNRIGHT","UDS_ALIGNLEFT","UDS_AUTOBUDDY","UDS_ARROWKEYS","UDS_HORZ","UDS_NOTHOUSANDS","UDS_HOTTRACK"]}, + {"name":"UpDownMessages","kind":"enum","in":"UpDownConsts","values":["UDM_SETRANGE","UDM_GETRANGE","UDM_SETPOS","UDM_GETPOS","UDM_SETBUDDY","UDM_GETBUDDY","UDM_SETACCEL","UDM_GETACCEL","UDM_SETBASE","UDM_GETBASE","UDM_SETRANGE32","UDM_GETRANGE32","UDM_SETPOS32","UDM_GETPOS32"]} + ] + }, + "WinServicesLib": { + "exports": ["WinServicesLib"], + "types": [ + {"name":"ServicesAPIs","kind":"module","public":false}, + {"name":"SERVICE_STATUS","kind":"type","in":"ServicesAPIs","public":false}, + {"name":"SERVICE_STATUS_PROCESS","kind":"type","in":"ServicesAPIs","public":false}, + {"name":"SERVICE_CONTROL_STATUS_REASON_PARAMSW","kind":"type","in":"ServicesAPIs","public":false}, + {"name":"SERVICE_CONFIG_DESCRIPTION","kind":"type","in":"ServicesAPIs","public":false}, + {"name":"ServicesConstants","kind":"module","public":false}, + {"name":"SC_STATUS_TYPE","kind":"enum","in":"ServicesConstants","values":["SC_STATUS_PROCESS_INFO"]}, + {"name":"ServicesConstantsPublic","kind":"module"}, + {"name":"ServiceTypeConstants","kind":"enum","in":"ServicesConstantsPublic","values":["tbServiceTypeAdapter","tbServiceTypeSystemDriver","tbServiceTypeKernelDriver","tbServiceTypeRecognizerDriver","tbServiceTypeOwnProcess","tbServiceTypeShareProcess","tbServiceTypeOwnProcessInteractive","tbServiceTypeShareProcessInteractive"]}, + {"name":"ServiceStartConstants","kind":"enum","in":"ServicesConstantsPublic","values":["tbServiceStartAuto","tbServiceStartBoot","tbServiceStartOnDemand","tbServiceStartDisabled","tbServiceStartDriverSystem"]}, + {"name":"ServiceControlCodeConstants","kind":"enum","in":"ServicesConstantsPublic","values":["vbServiceControlStop","vbServiceControlPause","vbServiceControlContinue","vbServiceControlInterrogate","vbServiceControlShutdown","vbServiceControlParamChange","vbServiceControlNetBindAdd","vbServiceControlNetBindRemove","vbServiceControlNetBindEnable","vbServiceControlNetBindDisable","vbServiceControlDeviceEvent","vbServiceControlHardwareProfileChange","vbServiceControlPowerEvent","vbServiceControlSessionChange","vbServiceControlPreShutdown","vbServiceControlTimeChange","vbServiceControlTriggerEvent","vbServiceControlLowResources","vbServiceControlSystemLowResources"]}, + {"name":"ServiceStatusConstants","kind":"enum","in":"ServicesConstantsPublic","values":["vbServiceStatusStopped","vbServiceStatusStartPending","vbServiceStatusStopPending","vbServiceStatusRunning","vbServiceStatusContinuePending","vbServiceStatusPausePending","vbServiceStatusPaused"]}, + {"name":"ServicesHelper","kind":"module","public":false}, + {"name":"ITbService","kind":"interface","members":{"EntryPoint":"sub","StartupFailed":"sub","ChangeState":"sub"}}, + {"name":"IServiceCreator","kind":"interface","public":false}, + {"name":"IServiceManagerInternal","kind":"interface","public":false}, + {"name":"ServiceCreator","kind":"class","members":{"CreateInstance":"function"}}, + {"name":"ServiceManager","kind":"class","members":{"New":"sub","LaunchArgs":"field","ServiceEntryPoint":"sub","ServiceControlHandlerCallback":"sub","InstanceCreator":"property","Name":"property","Description":"property","Type":"property","InstallStartMode":"property","InstallCmdLine":"property","DependentServices":"property","AutoInitializeCOM":"property","SupportsPausing":"property","Install":"sub","Uninstall":"sub","ReportStatus":"sub","ResyncStatus":"sub"}}, + {"name":"SERVICE_TABLE_ENTRYW","kind":"type","in":"ServiceManager","fields":["Name","EntryPoint"]}, + {"name":"ServiceState","kind":"class","members":{"New":"sub","Type":"property","CurrentState":"property","CurrentStateText":"property","ControlsAccepted":"property","ExitCode":"property","ServiceSpecificExitCode":"property","CheckPoint":"property","WaitHint":"property","ProcessId":"property","Flags":"property"}}, + {"name":"Services","kind":"class","members":{"ConfigureNew":"function","RunServiceDispatcher":"sub","InstallAll":"sub","UninstallAll":"sub","QueryStateOfService":"function","LaunchService":"sub","ControlService":"sub","GetConfiguredService":"property","_NewEnum":"property"}} + ] + }, + "cefPackage": { + "exports": ["cefPackage109","cefPackage145","cefPackage49"], + "types": [ + {"name":"APIs","kind":"module","public":false}, + {"name":"WNDCLASSEXW","kind":"type","in":"APIs","public":false}, + {"name":"SetWindowPosFlags","kind":"enum","in":"APIs","values":["SWP_NOSIZE","SWP_NOMOVE","SWP_NOZORDER","SWP_NOREDRAW","SWP_NOACTIVATE","SWP_FRAMECHANGED","SWP_SHOWWINDOW","SWP_HIDEWINDOW","SWP_NOCOPYBITS","SWP_NOOWNERZORDER","SWP_NOSENDCHANGING"]}, + {"name":"ApiEntryPoints","kind":"module","public":false}, + {"name":"BrowserOM","kind":"class","public":false}, + {"name":"cefPrintOrientation","kind":"enum","in":"BrowserOM","values":["cefPrintPortrait","cefPrintLandscape"]}, + {"name":"BrowserHelper","kind":"module","members":{"StartBrowser":"sub"}}, + {"name":"RendererAsyncOM","kind":"class","public":false}, + {"name":"RendererAsync","kind":"module","members":{"RendererProcessAsyncThread":"function"}}, + {"name":"RendererOM","kind":"class","members":{"JsMessage":"event","JsAsyncResult":"event","SetBrowserId":"sub","JsRun":"function","InternalRaise_PostedMessage":"sub","InternalRaise_JsAsyncResult":"sub"}}, + {"name":"RendererHelper","kind":"module","members":{"Start":"sub"}}, + {"name":"tbCefSharedInfo","kind":"type","in":"RendererHelper","fields":["InstanceID","InstanceID2"]}, + {"name":"_cef_composition_underline_style_t","kind":"module","public":false}, + {"name":"cef_composition_underline_style_t","kind":"enum","in":"_cef_composition_underline_style_t","values":["CEF_CUS_SOLID","CEF_CUS_DOT","CEF_CUS_DASH","CEF_CUS_NONE","CEF_CUS_NUM_VALUES"]}, + {"name":"_cef_cursor_type_t","kind":"module","public":false}, + {"name":"cef_cursor_type_t","kind":"enum","in":"_cef_cursor_type_t","values":["CT_POINTER","CT_CROSS","CT_HAND","CT_IBEAM","CT_WAIT","CT_HELP","CT_EASTRESIZE","CT_NORTHRESIZE","CT_NORTHEASTRESIZE","CT_NORTHWESTRESIZE","CT_SOUTHRESIZE","CT_SOUTHEASTRESIZE","CT_SOUTHWESTRESIZE","CT_WESTRESIZE","CT_NORTHSOUTHRESIZE","CT_EASTWESTRESIZE","CT_NORTHEASTSOUTHWESTRESIZE","CT_NORTHWESTSOUTHEASTRESIZE","CT_COLUMNRESIZE","CT_ROWRESIZE","CT_MIDDLEPANNING","CT_EASTPANNING","CT_NORTHPANNING","CT_NORTHEASTPANNING","CT_NORTHWESTPANNING","CT_SOUTHPANNING","CT_SOUTHEASTPANNING","CT_SOUTHWESTPANNING","CT_WESTPANNING","CT_MOVE","CT_VERTICALTEXT","CT_CELL","CT_CONTEXTMENU","CT_ALIAS","CT_PROGRESS","CT_NODROP","CT_COPY","CT_NONE","CT_NOTALLOWED","CT_ZOOMIN","CT_ZOOMOUT","CT_GRAB","CT_GRABBING","CT_MIDDLE_PANNING_VERTICAL","CT_MIDDLE_PANNING_HORIZONTAL","CT_CUSTOM","CT_DND_NONE","CT_DND_MOVE","CT_DND_COPY","CT_DND_LINK"]}, + {"name":"_cef_drag_operations_mask_t","kind":"module","public":false}, + {"name":"cef_drag_operations_mask_t","kind":"enum","in":"_cef_drag_operations_mask_t","values":["DRAG_OPERATION_NONE","DRAG_OPERATION_COPY","DRAG_OPERATION_LINK","DRAG_OPERATION_GENERIC","DRAG_OPERATION_PRIVATE","DRAG_OPERATION_MOVE","DRAG_OPERATION_DELETE","DRAG_OPERATION_EVERY"]}, + {"name":"_cef_errorcode_t","kind":"module","public":false}, + {"name":"cef_errorcode_t","kind":"enum","in":"_cef_errorcode_t","values":["ERR_NONE"]}, + {"name":"_cef_file_dialog_mode_t","kind":"module","public":false}, + {"name":"cef_file_dialog_mode_t","kind":"enum","in":"_cef_file_dialog_mode_t","values":["FILE_DIALOG_OPEN","FILE_DIALOG_OPEN_MULTIPLE","FILE_DIALOG_OPEN_FOLDER","FILE_DIALOG_SAVE","FILE_DIALOG_NUM_VALUES"]}, + {"name":"_cef_focus_source_t","kind":"module","public":false}, + {"name":"cef_focus_source_t","kind":"enum","in":"_cef_focus_source_t","values":["FOCUS_SOURCE_NAVIGATION","FOCUS_SOURCE_SYSTEM","FOCUS_SOURCE_WIDGET"]}, + {"name":"_cef_log_items_t","kind":"module","public":false}, + {"name":"cef_log_items_t","kind":"enum","in":"_cef_log_items_t","values":["LOG_ITEMS_DEFAULT","LOG_ITEMS_NONE","LOG_ITEMS_FLAG_PROCESS_ID","LOG_ITEMS_FLAG_THREAD_ID","LOG_ITEMS_FLAG_TIME_STAMP","LOG_ITEMS_FLAG_TICK_COUNT"]}, + {"name":"_cef_log_severity_t","kind":"module","public":false}, + {"name":"cef_log_severity_t","kind":"enum","in":"_cef_log_severity_t","values":["LOGSEVERITY_DEFAULT","LOGSEVERITY_VERBOSE","LOGSEVERITY_INFO","LOGSEVERITY_WARNING","LOGSEVERITY_ERROR","LOGSEVERITY_FATAL","LOGSEVERITY_DISABLE"]}, + {"name":"CefLogSeverity","kind":"enum","in":"_cef_log_severity_t","values":["CefLogDisable","CefLogVerbose","CefLogInfo","CefLogWarning","CefLogError","CefLogFatal"]}, + {"name":"_cef_mouse_button_type_t","kind":"module","public":false}, + {"name":"cef_mouse_button_type_t","kind":"enum","in":"_cef_mouse_button_type_t","values":["MBT_LEFT","MBT_MIDDLE","MBT_RIGHT"]}, + {"name":"_cef_navigation_type_t","kind":"module","public":false}, + {"name":"cef_navigation_type_t","kind":"enum","in":"_cef_navigation_type_t","values":["NAVIGATION_LINK_CLICKED","NAVIGATION_FORM_SUBMITTED","NAVIGATION_BACK_FORWARD","NAVIGATION_RELOAD","NAVIGATION_FORM_RESUBMITTED","NAVIGATION_OTHER"]}, + {"name":"_cef_paint_element_type_t","kind":"module","public":false}, + {"name":"cef_paint_element_type_t","kind":"enum","in":"_cef_paint_element_type_t","values":["PET_VIEW","PET_POPUP"]}, + {"name":"_cef_pdf_print_margin_type_t","kind":"module","public":false}, + {"name":"cef_pdf_print_margin_type_t","kind":"enum","in":"_cef_pdf_print_margin_type_t","values":["PDF_PRINT_MARGIN_DEFAULT","PDF_PRINT_MARGIN_NONE","PDF_PRINT_MARGIN_CUSTOM"]}, + {"name":"_cef_preferences_type_t","kind":"module","public":false}, + {"name":"cef_preferences_type_t","kind":"enum","in":"_cef_preferences_type_t","values":["CEF_PREFERENCES_TYPE_GLOBAL","CEF_PREFERENCES_TYPE_REQUEST_CONTEXT","CEF_PREFERENCES_TYPE_NUM_VALUES"]}, + {"name":"_cef_process_id_t","kind":"module","public":false}, + {"name":"cef_process_id_t","kind":"enum","in":"_cef_process_id_t","values":["PID_BROWSER","PID_RENDERER"]}, + {"name":"_cef_referrer_policy_t","kind":"module","public":false}, + {"name":"cef_referrer_policy_t","kind":"enum","in":"_cef_referrer_policy_t","values":["REFERRER_POLICY_CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE","REFERRER_POLICY_DEFAULT","REFERRER_POLICY_REDUCE_REFERRER_GRANULARITY_ON_TRANSITION_CROSS_ORIGIN","REFERRER_POLICY_ORIGIN_ONLY_ON_TRANSITION_CROSS_ORIGIN","REFERRER_POLICY_NEVER_CLEAR_REFERRER","REFERRER_POLICY_ORIGIN","REFERRER_POLICY_CLEAR_REFERRER_ON_TRANSITION_CROSS_ORIGIN","REFERRER_POLICY_ORIGIN_CLEAR_ON_TRANSITION_FROM_SECURE_TO_INSECURE","REFERRER_POLICY_NO_REFERRER","REFERRER_POLICY_NUM_VALUES"]}, + {"name":"_cef_resource_type_t","kind":"module","public":false}, + {"name":"cef_resource_type_t","kind":"enum","in":"_cef_resource_type_t","values":["RT_MAIN_FRAME","RT_SUB_FRAME","RT_STYLESHEET","RT_SCRIPT","RT_IMAGE","RT_FONT_RESOURCE","RT_SUB_RESOURCE","RT_OBJECT","RT_MEDIA","RT_WORKER","RT_SHARED_WORKER","RT_PREFETCH","RT_FAVICON","RT_XHR","RT_PING","RT_SERVICE_WORKER","RT_CSP_REPORT","RT_PLUGIN_RESOURCE","RT_NAVIGATION_PRELOAD_MAIN_FRAME","RT_NAVIGATION_PRELOAD_SUB_FRAME","RT_NUM_VALUES"]}, + {"name":"_cef_return_value_t","kind":"module","public":false}, + {"name":"cef_return_value_t","kind":"enum","in":"_cef_return_value_t","values":["RV_CANCEL","RV_CONTINUE","RV_CONTINUE_ASYNC"]}, + {"name":"_cef_runtime_style_t","kind":"module","public":false}, + {"name":"cef_runtime_style_t","kind":"enum","in":"_cef_runtime_style_t","values":["CEF_RUNTIME_STYLE_DEFAULT","CEF_RUNTIME_STYLE_CHROME","CEF_RUNTIME_STYLE_ALLOY"]}, + {"name":"_cef_scale_factor_t","kind":"module","public":false}, + {"name":"cef_scale_factor_t","kind":"enum","in":"_cef_scale_factor_t","values":["SCALE_FACTOR_NONE","SCALE_FACTOR_100P","SCALE_FACTOR_125P","SCALE_FACTOR_133P","SCALE_FACTOR_140P","SCALE_FACTOR_150P","SCALE_FACTOR_180P","SCALE_FACTOR_200P","SCALE_FACTOR_250P","SCALE_FACTOR_300P","SCALE_FACTOR_NUM_VALUES"]}, + {"name":"_cef_scheme_options_t","kind":"module","public":false}, + {"name":"cef_scheme_options_t","kind":"enum","in":"_cef_scheme_options_t","values":["CEF_SCHEME_OPTION_NONE","CEF_SCHEME_OPTION_STANDARD","CEF_SCHEME_OPTION_LOCAL","CEF_SCHEME_OPTION_DISPLAY_ISOLATED","CEF_SCHEME_OPTION_SECURE","CEF_SCHEME_OPTION_CORS_ENABLED","CEF_SCHEME_OPTION_CSP_BYPASSING","CEF_SCHEME_OPTION_FETCH_ENABLED"]}, + {"name":"_cef_state_t","kind":"module","public":false}, + {"name":"cef_state_t","kind":"enum","in":"_cef_state_t","values":["STATE_DEFAULT","STATE_ENABLED","STATE_DISABLED"]}, + {"name":"_cef_termination_status_t","kind":"module","public":false}, + {"name":"cef_termination_status_t","kind":"enum","in":"_cef_termination_status_t","values":["TS_ABNORMAL_TERMINATION","TS_PROCESS_WAS_KILLED","TS_PROCESS_CRASHED","TS_PROCESS_OOM","TS_LAUNCH_FAILED","TS_INTEGRITY_FAILURE","TS_NUM_VALUES"]}, + {"name":"_cef_thread_id_t","kind":"module","public":false}, + {"name":"cef_thread_id_t","kind":"enum","in":"_cef_thread_id_t","values":["TID_UI","TID_DB","TID_FILE","TID_FILE_BACKGROUND","TID_FILE_USER_VISIBLE","TID_FILE_USER_BLOCKING","TID_PROCESS_LAUNCHER","TID_CACHE","TID_IO","TID_RENDERER","TID_NUM_VALUES"]}, + {"name":"_cef_transition_type_t","kind":"module","public":false}, + {"name":"cef_transition_type_t","kind":"enum","in":"_cef_transition_type_t","values":["TT_LINK","TT_EXPLICIT","TT_AUTO_SUBFRAME","TT_MANUAL_SUBFRAME","TT_FORM_SUBMIT","TT_RELOAD","TT_SOURCE_MASK","TT_BLOCKED_FLAG","TT_FORWARD_BACK_FLAG","TT_CHAIN_START_FLAG","TT_CHAIN_END_FLAG","TT_CLIENT_REDIRECT_FLAG","TT_SERVER_REDIRECT_FLAG","TT_IS_REDIRECT_MASK","TT_QUALIFIER_MASK"]}, + {"name":"cef_transition_type_t","kind":"enum","in":"_cef_transition_type_t","values":["TT_LINK","TT_EXPLICIT","TT_AUTO_BOOKMARK","TT_AUTO_SUBFRAME","TT_MANUAL_SUBFRAME","TT_GENERATED","TT_AUTO_TOPLEVEL","TT_FORM_SUBMIT","TT_RELOAD","TT_KEYWORD","TT_KEYWORD_GENERATED","TT_NUM_VALUES","TT_SOURCE_MASK","TT_BLOCKED_FLAG","TT_FORWARD_BACK_FLAG","TT_DIRECT_LOAD_FLAG","TT_HOME_PAGE_FLAG","TT_FROM_API_FLAG","TT_CHAIN_START_FLAG","TT_CHAIN_END_FLAG","TT_CLIENT_REDIRECT_FLAG","TT_SERVER_REDIRECT_FLAG","TT_IS_REDIRECT_MASK","TT_QUALIFIER_MASK"]}, + {"name":"_cef_urlrequest_status_t","kind":"module","public":false}, + {"name":"cef_urlrequest_status_t","kind":"enum","in":"_cef_urlrequest_status_t","values":["UR_UNKNOWN","UR_SUCCESS","UR_IO_PENDING","UR_CANCELED","UR_FAILED","UR_NUM_VALUES"]}, + {"name":"_cef_v8_accesscontrol_t","kind":"module","public":false}, + {"name":"cef_v8_accesscontrol_t","kind":"enum","in":"_cef_v8_accesscontrol_t","values":["V8_ACCESS_CONTROL_DEFAULT","V8_ACCESS_CONTROL_ALL_CAN_READ","V8_ACCESS_CONTROL_ALL_CAN_WRITE","V8_ACCESS_CONTROL_PROHIBITS_OVERWRITING"]}, + {"name":"_cef_v8_propertyattribute_t","kind":"module","public":false}, + {"name":"cef_v8_propertyattribute_t","kind":"enum","in":"_cef_v8_propertyattribute_t","values":["V8_PROPERTY_ATTRIBUTE_NONE","V8_PROPERTY_ATTRIBUTE_READONLY","V8_PROPERTY_ATTRIBUTE_DONTENUM","V8_PROPERTY_ATTRIBUTE_DONTDELETE"]}, + {"name":"_cef_window_open_disposition_t","kind":"module","public":false}, + {"name":"cef_window_open_disposition_t","kind":"enum","in":"_cef_window_open_disposition_t","values":["WOD_UNKNOWN","WOD_SUPPRESS_OPEN","WOD_CURRENT_TAB","WOD_SINGLETON_TAB","WOD_NEW_FOREGROUND_TAB","WOD_NEW_BACKGROUND_TAB","WOD_NEW_POPUP","WOD_NEW_WINDOW","WOD_SAVE_TO_DISK","WOD_OFF_THE_RECORD","WOD_IGNORE_ACTION"]}, + {"name":"_cef_zoom_command_t","kind":"module","public":false}, + {"name":"cef_zoom_command_t","kind":"enum","in":"_cef_zoom_command_t","values":["CEF_ZOOM_COMMAND_OUT","CEF_ZOOM_COMMAND_RESET","CEF_ZOOM_COMMAND_IN"]}, + {"name":"Globals_RootProcess","kind":"module","public":false}, + {"name":"Globals_BrowserProcess","kind":"module","public":false}, + {"name":"Globals_RendererProcess","kind":"module","public":false}, + {"name":"AppBrowserImpl","kind":"module","public":false}, + {"name":"AppBrowser_cef_app_t","kind":"type","in":"AppBrowserImpl","public":false}, + {"name":"AppBrowser","kind":"class","public":false}, + {"name":"AppBrowserProcessHandlerImpl","kind":"module","public":false}, + {"name":"BrowserApp_cef_browser_process_handler_t","kind":"type","in":"AppBrowserProcessHandlerImpl","public":false}, + {"name":"AppBrowserProcessHandler","kind":"class","public":false}, + {"name":"AppRenderImpl","kind":"module","public":false}, + {"name":"RenderApp_cef_app_t","kind":"type","in":"AppRenderImpl","public":false}, + {"name":"AppRender","kind":"class","public":false}, + {"name":"AppRenderLoadHandlerImpl","kind":"module","public":false}, + {"name":"RenderApp_cef_load_handler_t","kind":"type","in":"AppRenderLoadHandlerImpl","public":false}, + {"name":"AppRenderLoadHandler","kind":"class","public":false}, + {"name":"AppRenderProcessHandlerImpl","kind":"module","members":{"InitializeStruct":"sub"}}, + {"name":"RenderApp_cef_render_process_handler_t","kind":"type","in":"AppRenderProcessHandlerImpl","fields":["base","AppRenderLoadHandler","browserGuid"]}, + {"name":"AppRenderProcessHandler","kind":"class","members":{"Get":"function","New":"sub"}}, + {"name":"BasImpl","kind":"module","members":{"add_ref":"sub","release":"function","has_one_ref":"function","has_at_least_one_ref":"function"}}, + {"name":"BaseImpl","kind":"type","in":"BasImpl","fields":["CefRefCount","Padding","OwnerWeak"],"members":{"Init":"sub","GetOwner":"function"}}, + {"name":"CefAutoV8Context","kind":"class","public":false}, + {"name":"CefContextStorage","kind":"class","public":false}, + {"name":"CefFuncWrapper","kind":"class","public":false}, + {"name":"CefObjectWrapper","kind":"class","public":false}, + {"name":"ClientImpl","kind":"module","public":false}, + {"name":"Client_cef_client_t","kind":"type","in":"ClientImpl","public":false}, + {"name":"Client","kind":"class","public":false}, + {"name":"ClientDevToolsImpl","kind":"module","public":false}, + {"name":"ClientDevTools_cef_client_t","kind":"type","in":"ClientDevToolsImpl","public":false}, + {"name":"ClientDevTools","kind":"class","public":false}, + {"name":"ClientDisplayHandlerImpl","kind":"module","public":false}, + {"name":"Client_cef_display_handler_t","kind":"type","in":"ClientDisplayHandlerImpl","public":false}, + {"name":"ClientDisplayHandler","kind":"class","public":false}, + {"name":"ClientFocusHandlerImpl","kind":"module","members":{"InitializeStruct":"sub"}}, + {"name":"Client_cef_focus_handler_t","kind":"type","in":"ClientFocusHandlerImpl","fields":["base"]}, + {"name":"ClientFocusHandler","kind":"class","public":false}, + {"name":"ClientLifeSpanHandlerImpl","kind":"module","public":false}, + {"name":"Client_cef_life_span_handler_t","kind":"type","in":"ClientLifeSpanHandlerImpl","public":false}, + {"name":"ClientLifeSpanHandler","kind":"class","public":false}, + {"name":"ClientLoadHandlerImpl","kind":"module","public":false}, + {"name":"Client_cef_load_handler_t","kind":"type","in":"ClientLoadHandlerImpl","public":false}, + {"name":"ClientLoadHandler","kind":"class","public":false}, + {"name":"ClientRequestHandlerImpl","kind":"module","public":false}, + {"name":"Client_cef_request_handler_t","kind":"type","in":"ClientRequestHandlerImpl","public":false}, + {"name":"ClientRequestHandler","kind":"class","public":false}, + {"name":"ClientResourceRequestHandlerImpl","kind":"module","public":false}, + {"name":"Client_cef_resource_request_handler_t","kind":"type","in":"ClientResourceRequestHandlerImpl","public":false}, + {"name":"ClientResourceRequestHandler","kind":"class","public":false}, + {"name":"ClientSchemeFactoryBaseImpl","kind":"module","public":false}, + {"name":"ClientSchemeFactory_cef_scheme_handler_factory_t","kind":"type","in":"ClientSchemeFactoryBaseImpl","public":false}, + {"name":"ClientSchemeFactoryBase","kind":"class","public":false}, + {"name":"ClientSchemeFactory_VirtualHostFolderMapping","kind":"class","public":false,"inherits":["cefPackage.ClientSchemeFactoryBase"]}, + {"name":"ClientSchemeHandlerBaseImpl","kind":"module","public":false}, + {"name":"ClientSchemeFactory_cef_resource_handler_t","kind":"type","in":"ClientSchemeHandlerBaseImpl","public":false}, + {"name":"ClientSchemeHandlerBase","kind":"class","public":false}, + {"name":"ClientSchemeHandler_VirtualHostFolderMapping","kind":"class","public":false,"inherits":["cefPackage.ClientSchemeHandlerBase"]}, + {"name":"ExposedJavascriptFunctionImpl","kind":"module","public":false}, + {"name":"JavascriptFunction_cef_v8_handler_t","kind":"type","in":"ExposedJavascriptFunctionImpl","public":false}, + {"name":"ExposedJavascriptFunctionBase","kind":"class","public":false}, + {"name":"ExposedJavascriptFunction_AddEventListener","kind":"class","public":false,"inherits":["cefPackage.ExposedJavascriptFunctionBase"]}, + {"name":"ExposedJavascriptFunction_OnDomContentLoaded","kind":"class","public":false,"inherits":["cefPackage.ExposedJavascriptFunctionBase"]}, + {"name":"ExposedJavascriptFunction_PostMessage","kind":"class","public":false,"inherits":["cefPackage.ExposedJavascriptFunctionBase"]}, + {"name":"IpcRendererInitTask","kind":"class","public":false,"inherits":["cefPackage.TaskBase"]}, + {"name":"IpcRendererProcessMessageTaskHelper","kind":"module","public":false}, + {"name":"IpcRendererProcessMessageTask","kind":"class","public":false,"inherits":["cefPackage.TaskBase"]}, + {"name":"JsRunAsyncTask","kind":"class","public":false,"inherits":["cefPackage.TaskBase"]}, + {"name":"PostMessageToJsTask","kind":"class","public":false,"inherits":["cefPackage.TaskBase"]}, + {"name":"PrintToPDFCallbackImpl","kind":"module","public":false}, + {"name":"PrintToPDFCallback_cef_pdf_print_callback_t","kind":"type","in":"PrintToPDFCallbackImpl","public":false}, + {"name":"PrintToPDFCallback","kind":"class","public":false}, + {"name":"TaskBaseImpl","kind":"module","public":false}, + {"name":"TaskBase_cef_task_t","kind":"type","in":"TaskBaseImpl","public":false}, + {"name":"TaskBase","kind":"class","public":false}, + {"name":"TaskTokens","kind":"module","members":{"g_TaskTokenId":"field"}}, + {"name":"ThreadCollectionObjects","kind":"class","public":false}, + {"name":"CefInitialize","kind":"module","public":false}, + {"name":"CefMisc","kind":"module","public":false}, + {"name":"tbRECT","kind":"type","in":"CefMisc","public":false}, + {"name":"tbGUID","kind":"type","in":"CefMisc","public":false}, + {"name":"TODO","kind":"module","public":false}, + {"name":"cef_request_callback_t","kind":"type","in":"TODO","public":false}, + {"name":"cef_select_client_certificate_callback_t","kind":"type","in":"TODO","public":false}, + {"name":"cef_v8_exception_t","kind":"type","in":"TODO","public":false}, + {"name":"cef_v8_stack_trace_t","kind":"type","in":"TODO","public":false}, + {"name":"cef_domnode_t","kind":"type","in":"TODO","public":false}, + {"name":"_cef_popup_features_t","kind":"type","in":"TODO","public":false}, + {"name":"cef_navigation_entry_visitor_t","kind":"type","in":"TODO","public":false}, + {"name":"cef_key_event_t","kind":"type","in":"TODO","public":false}, + {"name":"cef_mouse_event_t","kind":"type","in":"TODO","public":false}, + {"name":"cef_drag_data_t","kind":"type","in":"TODO","public":false}, + {"name":"cef_auth_callback_t","kind":"type","in":"TODO","public":false}, + {"name":"cef_sslinfo_t","kind":"type","in":"TODO","public":false}, + {"name":"cef_run_file_dialog_callback_t","kind":"type","in":"TODO","public":false}, + {"name":"cef_value_t","kind":"type","in":"TODO","public":false}, + {"name":"cef_binary_value_t","kind":"type","in":"TODO","public":false}, + {"name":"cef_post_data_t","kind":"type","in":"TODO","public":false}, + {"name":"cef_v8exception_t","kind":"type","in":"TODO","public":false}, + {"name":"cef_v8_interceptor_t","kind":"type","in":"TODO","public":false}, + {"name":"cef_dev_tools_message_observer_t","kind":"type","in":"TODO","public":false}, + {"name":"cef_download_image_callback_t","kind":"type","in":"TODO","public":false}, + {"name":"cef_preference_registrar_t","kind":"type","in":"TODO","public":false}, + {"name":"cef_urlrequest_client_t","kind":"type","in":"TODO","public":false}, + {"name":"cef_touch_event_type_t","kind":"type","in":"TODO","public":false}, + {"name":"cef_pointer_type_t","kind":"type","in":"TODO","public":false}, + {"name":"cef_shared_memory_region_t","kind":"type","in":"TODO","public":false}, + {"name":"cef_request_context_t","kind":"type","in":"TODO","public":false}, + {"name":"cef_cursor_info_t","kind":"type","in":"TODO","public":false}, + {"name":"cef_resource_skip_callback_t","kind":"type","in":"TODO","public":false}, + {"name":"cef_resource_read_callback_t","kind":"type","in":"TODO","public":false}, + {"name":"cef_rect_t","kind":"type","in":"TODO","public":false}, + {"name":"cef_request_context_handler_t","kind":"type","in":"TODO","public":false}, + {"name":"CefRequestHeaders","kind":"class"}, + {"name":"_cef_app_t","kind":"module","public":false}, + {"name":"cef_app_t","kind":"type","in":"_cef_app_t","public":false}, + {"name":"_cef_base_ref_counted_t","kind":"module","public":false}, + {"name":"cef_base_ref_counted_t","kind":"type","in":"_cef_base_ref_counted_t","public":false}, + {"name":"_cef_browser_host_t","kind":"module","public":false}, + {"name":"cef_browser_host_t","kind":"type","in":"_cef_browser_host_t","public":false}, + {"name":"_cef_browser_process_handler_t","kind":"module","public":false}, + {"name":"cef_browser_process_handler_t","kind":"type","in":"_cef_browser_process_handler_t","public":false}, + {"name":"_cef_browser_settings_t","kind":"module","public":false}, + {"name":"cef_browser_settings_t","kind":"type","in":"_cef_browser_settings_t","public":false}, + {"name":"_cef_browser_t","kind":"module","public":false}, + {"name":"cef_browser_t","kind":"type","in":"_cef_browser_t","public":false}, + {"name":"_cef_callback_t","kind":"module","public":false}, + {"name":"cef_callback_t","kind":"type","in":"_cef_callback_t","public":false}, + {"name":"_cef_client_t","kind":"module","public":false}, + {"name":"cef_client_t","kind":"type","in":"_cef_client_t","public":false}, + {"name":"_cef_command_line_t","kind":"module","public":false}, + {"name":"cef_command_line_t","kind":"type","in":"_cef_command_line_t","public":false}, + {"name":"_cef_composition_underline_t","kind":"module","public":false}, + {"name":"cef_composition_underline_t","kind":"type","in":"_cef_composition_underline_t","public":false}, + {"name":"_cef_dictionary_value_t","kind":"module","public":false}, + {"name":"cef_dictionary_value_t","kind":"type","in":"_cef_dictionary_value_t","public":false}, + {"name":"_cef_display_handler_t","kind":"module","public":false}, + {"name":"cef_display_handler_t","kind":"type","in":"_cef_display_handler_t","public":false}, + {"name":"_cef_focus_handler_t","kind":"module","public":false}, + {"name":"cef_focus_handler_t","kind":"type","in":"_cef_focus_handler_t","public":false}, + {"name":"_cef_frame_t","kind":"module","public":false}, + {"name":"cef_frame_t","kind":"type","in":"_cef_frame_t","public":false}, + {"name":"_cef_life_span_handler_t","kind":"module","public":false}, + {"name":"cef_life_span_handler_t","kind":"type","in":"_cef_life_span_handler_t","public":false}, + {"name":"_cef_list_value_t","kind":"module","public":false}, + {"name":"cef_list_value_t","kind":"type","in":"_cef_list_value_t","public":false}, + {"name":"_cef_load_handler_t","kind":"module","public":false}, + {"name":"cef_load_handler_t","kind":"type","in":"_cef_load_handler_t","public":false}, + {"name":"_cef_main_args_t","kind":"module","public":false}, + {"name":"cef_main_args_t","kind":"type","in":"_cef_main_args_t","public":false}, + {"name":"_cef_pdf_print_callback_t","kind":"module","public":false}, + {"name":"cef_pdf_print_callback_t","kind":"type","in":"_cef_pdf_print_callback_t","public":false}, + {"name":"_cef_pdf_print_settings_t","kind":"module","public":false}, + {"name":"cef_pdf_print_settings_t","kind":"type","in":"_cef_pdf_print_settings_t","public":false}, + {"name":"_cef_point_t","kind":"module","public":false}, + {"name":"cef_point_t","kind":"type","in":"_cef_point_t","public":false}, + {"name":"_cef_process_message_t","kind":"module","public":false}, + {"name":"cef_process_message_t","kind":"type","in":"_cef_process_message_t","public":false}, + {"name":"_cef_range_t","kind":"module","public":false}, + {"name":"cef_range_t","kind":"type","in":"_cef_range_t","public":false}, + {"name":"_cef_render_process_handler_t","kind":"module","public":false}, + {"name":"cef_render_process_handler_t","kind":"type","in":"_cef_render_process_handler_t","public":false}, + {"name":"_cef_request_context_settings_t","kind":"module","public":false}, + {"name":"cef_request_context_settings_t","kind":"type","in":"_cef_request_context_settings_t","public":false}, + {"name":"_cef_request_handler_t","kind":"module","public":false}, + {"name":"cef_request_handler_t","kind":"type","in":"_cef_request_handler_t","public":false}, + {"name":"_cef_request_t","kind":"module","public":false}, + {"name":"cef_request_t","kind":"type","in":"_cef_request_t","public":false}, + {"name":"_cef_resource_bundle_handler_t","kind":"module","public":false}, + {"name":"cef_resource_bundle_handler_t","kind":"type","in":"_cef_resource_bundle_handler_t","public":false}, + {"name":"_cef_resource_handler_t","kind":"module","public":false}, + {"name":"cef_resource_handler_t","kind":"type","in":"_cef_resource_handler_t","public":false}, + {"name":"_cef_resource_request_handler","kind":"module","public":false}, + {"name":"cef_resource_request_handler_t","kind":"type","in":"_cef_resource_request_handler","public":false}, + {"name":"_cef_response_t","kind":"module","public":false}, + {"name":"cef_response_t","kind":"type","in":"_cef_response_t","public":false}, + {"name":"_cef_scheme_handler_factory_t","kind":"module","public":false}, + {"name":"cef_scheme_handler_factory_t","kind":"type","in":"_cef_scheme_handler_factory_t","public":false}, + {"name":"_cef_scheme_registrar_t","kind":"module","public":false}, + {"name":"cef_scheme_registrar_t","kind":"type","in":"_cef_scheme_registrar_t","public":false}, + {"name":"_cef_settings_t","kind":"module","public":false}, + {"name":"cef_settings_t","kind":"type","in":"_cef_settings_t","public":false}, + {"name":"_cef_size_t","kind":"module","public":false}, + {"name":"cef_size_t","kind":"type","in":"_cef_size_t","public":false}, + {"name":"_cef_string_utf16_t","kind":"module","public":false}, + {"name":"cef_string_utf16_t","kind":"type","in":"_cef_string_utf16_t","public":false}, + {"name":"_cef_task_runner_t","kind":"module","public":false}, + {"name":"cef_task_runner_t","kind":"type","in":"_cef_task_runner_t","public":false}, + {"name":"_cef_task_t","kind":"module","public":false}, + {"name":"cef_task_t","kind":"type","in":"_cef_task_t","public":false}, + {"name":"_cef_time_t","kind":"module","public":false}, + {"name":"cef_time_t","kind":"type","in":"_cef_time_t","public":false}, + {"name":"_cef_touch_event_t","kind":"module","public":false}, + {"name":"cef_touch_event_t","kind":"type","in":"_cef_touch_event_t","public":false}, + {"name":"_cef_v8accessor_t","kind":"module","public":false}, + {"name":"cef_v8accessor_t","kind":"type","in":"_cef_v8accessor_t","public":false}, + {"name":"_cef_v8context_t","kind":"module","public":false}, + {"name":"cef_v8context_t","kind":"type","in":"_cef_v8context_t","public":false}, + {"name":"_cef_v8handler_t","kind":"module","public":false}, + {"name":"cef_v8_handler_t","kind":"type","in":"_cef_v8handler_t","public":false}, + {"name":"_cef_v8value_t","kind":"module","public":false}, + {"name":"cef_v8_value_t","kind":"type","in":"_cef_v8value_t","public":false}, + {"name":"_cef_window_info_t","kind":"module","public":false}, + {"name":"cef_window_info_t","kind":"type","in":"_cef_window_info_t","public":false}, + {"name":"CefBrowserBaseCtl","kind":"class","public":false,"inherits":["VB.BaseControlRectDockable"],"members":{"EnvironmentOptions":"field","CreateInitialized":"field","Create":"event","Ready":"event","Error":"event","NavigationStarting":"event","NavigationComplete":"event","SourceChanged":"event","DocumentTitleChanged":"event","DOMContentLoaded":"event","PrintToPdfCompleted":"event","PrintToPdfFailed":"event","JsAsyncResult":"event","JsMessage":"event","New":"sub","hWnd":"property","Parent":"property","Align":"property","Initialize":"sub","Visible":"property","Navigate":"sub","NavigateToString":"sub","JsRunAsync":"sub","InternalJsRunAsync":"sub","JsRun":"function","PostWebMessage":"sub","ExecuteScript":"sub","Reload":"sub","SetVirtualHostNameToFolderMapping":"sub","ClearVirtualHostNameToFolderMapping":"sub","OpenDevToolsWindow":"sub","PrintToPdf":"sub","DocumentURL":"property","DocumentTitle":"property","ZoomFactor":"property","UserAgent":"property","CanGoBack":"property","GoBack":"sub","CanGoForward":"property","GoForward":"sub","CefMajorVersion":"property"},"hiddenMembers":["Align"]}, + {"name":"NavigationStartingArgs","kind":"type","in":"CefBrowserBaseCtl","public":false}, + {"name":"CefEnvironmentOptions","kind":"class","public":false}, + {"name":"IDelayedExecute","kind":"interface","members":{"ExecuteNow":"sub"}}, + {"name":"JsRunAsyncDelayed","kind":"class","public":false}, + {"name":"PostWebMessageDelayed","kind":"class","public":false}, + {"name":"CefBrowser","kind":"class","control":true,"inherits":["cefPackage.CefBrowserBaseCtl"]}, + {"name":"CefControlGlobalWnd","kind":"module","public":false}, + {"name":"PreSubMain","kind":"module","public":false}, + {"name":"Registry","kind":"module","members":{"RegGetValueCompatW":"function"}}, + {"name":"SpecialFolders","kind":"module","public":false}, + {"name":"KnownFolders_CSIDLs","kind":"enum","in":"SpecialFolders","values":["CSIDL_ADMINTOOLS","CSIDL_ALTSTARTUP","CSIDL_APPDATA","CSIDL_BITBUCKET","CSIDL_CDBURN_AREA","CSIDL_COMMON_ADMINTOOLS","CSIDL_COMMON_ALTSTARTUP","CSIDL_COMMON_APPDATA","CSIDL_COMMON_DESKTOPDIRECTORY","CSIDL_COMMON_DOCUMENTS","CSIDL_COMMON_FAVORITES","CSIDL_COMMON_MUSIC","CSIDL_COMMON_OEM_LINKS","CSIDL_COMMON_PICTURES","CSIDL_COMMON_PROGRAMS","CSIDL_COMMON_STARTMENU","CSIDL_COMMON_STARTUP","CSIDL_COMMON_TEMPLATES","CSIDL_COMMON_VIDEO","CSIDL_COMPUTERSNEARME","CSIDL_CONNECTIONS","CSIDL_CONTROLS","CSIDL_COOKIES","CSIDL_DESKTOP","CSIDL_DESKTOPDIRECTORY","CSIDL_DRIVES","CSIDL_FAVORITES","CSIDL_FONTS","CSIDL_HISTORY","CSIDL_INTERNET","CSIDL_INTERNET_CACHE","CSIDL_LOCAL_APPDATA","CSIDL_MYDOCUMENTS","CSIDL_MYMUSIC","CSIDL_MYPICTURES","CSIDL_MYVIDEO","CSIDL_NETHOOD","CSIDL_NETWORK","CSIDL_PERSONAL","CSIDL_PRINTERS","CSIDL_PRINTHOOD","CSIDL_PROFILE","CSIDL_PROGRAM_FILES","CSIDL_PROGRAM_FILES_COMMON","CSIDL_PROGRAM_FILES_COMMONX86","CSIDL_PROGRAM_FILESX86","CSIDL_PROGRAMS","CSIDL_RECENT","CSIDL_RESOURCES","CSIDL_RESOURCES_LOCALIZED","CSIDL_SENDTO","CSIDL_STARTMENU","CSIDL_STARTUP","CSIDL_SYSTEM","CSIDL_SYSTEMX86","CSIDL_TEMPLATES","CSIDL_WINDOWS","CSIDL_FLAG_CREATE"]} + ] + }, + "tbIDE": { + "exports": ["tbIDE"], + "types": [ + {"name":"IAddInV1","kind":"interface","members":{"Name":"property"}}, + {"name":"AddIn","kind":"coclass","default":"IAddInV1"}, + {"name":"AddinTimer","kind":"class","members":{"Enabled":"field","Interval":"field","Timer":"event"}}, + {"name":"IButtonV1","kind":"interface","members":{"ID":"property","Caption":"property","IconData":"property"}}, + {"name":"IButtonEventsV1","kind":"interface","members":{"OnClick":"sub"}}, + {"name":"Button","kind":"coclass","default":"IButtonV1","source":["IButtonEventsV1"]}, + {"name":"ICodeEditorV1","kind":"interface","extends":"tbIDE.IEditorV1","members":{"SelectedText":"property","Text":"property","ExecuteMonacoCommand":"sub","AddMonacoWidget":"function","GetSelectionInfo":"sub","SetSelectionInfo":"sub","RevealRange":"sub"}}, + {"name":"RevealArea","kind":"enum","in":"ICodeEditorV1","values":["Any","Top","Center","CenterIfNotVisible","NearTop","NearTopIfNotVisible"]}, + {"name":"CodeEditor","kind":"coclass","default":"ICodeEditorV1"}, + {"name":"IDebugConsoleV1","kind":"interface","members":{"PrintText":"sub","Clear":"sub","SetFocus":"sub"}}, + {"name":"DebugConsole","kind":"coclass","default":"IDebugConsoleV1"}, + {"name":"IEditorV1","kind":"interface","members":{"Path":"property","Type":"property","SetFocus":"sub","Close":"sub","Save":"sub","IsDirty":"property"}}, + {"name":"Editor","kind":"coclass","default":"IEditorV1"}, + {"name":"IEditorsV1","kind":"interface","members":{"Item":"property","Count":"property","Open":"sub"}}, + {"name":"EditorOpenOptions","kind":"enum","in":"IEditorsV1","values":["NONE"]}, + {"name":"Editors","kind":"coclass","default":"IEditorsV1"}, + {"name":"IFileV1","kind":"interface","extends":"tbIDE.IFileSystemItemV1","members":{"Data":"property","DataLen":"property","Text":"property","IsDirty":"property"}}, + {"name":"IFileV2","kind":"interface","extends":"tbIDE.IFileV1","members":{"ReadText":"function"}}, + {"name":"ReadTextFlags","kind":"enum","in":"IFileV2","values":["CommentsToWhitespace"]}, + {"name":"File","kind":"coclass","default":"IFileV2"}, + {"name":"IFileSystemV1","kind":"interface","members":{"RootFolder":"property","ResolvePath":"function"}}, + {"name":"FileSystem","kind":"coclass","default":"IFileSystemV1"}, + {"name":"IFileSystemItemV1","kind":"interface","members":{"Name":"property","Path":"property","Type":"property","Parent":"property"}}, + {"name":"FileSystemItemType","kind":"enum","in":"IFileSystemItemV1","values":["Folder","FileVIRTUALDOC","FileOTHER","FileTWIN","FileBAS","FileCLS","FileUIDESIGNER","FileJSON"]}, + {"name":"FileSystemItem","kind":"coclass","default":"IFileSystemItemV1"}, + {"name":"IFolderV1","kind":"interface","extends":"tbIDE.IFileSystemItemV1","members":{"Count":"property","Item":"property","IsPackagesFolder":"property"}}, + {"name":"Folder","kind":"coclass","default":"IFolderV1"}, + {"name":"IHostV1","kind":"interface","members":{"CompilerVersion":"property","IDEWindowHandle":"property","IDEProcessID":"property","ShowNotification":"sub","ShowMessageBox":"function","DebugConsole":"property","Toolbars":"property","CurrentProject":"property","ActiveEditors":"property","ToolWindows":"property","FileSystem":"property","KeyboardShortcuts":"property","Themes":"property"}}, + {"name":"DebuggerEvaluateOptions","kind":"enum","in":"IHostV1","values":["NONE"]}, + {"name":"ItbHostEventsV1","kind":"interface","members":{"OnProjectLoaded":"sub"}}, + {"name":"ItbHostEventsV2","kind":"interface","extends":"tbIDE.ItbHostEventsV1","members":{"OnChangedActiveEditor":"sub"}}, + {"name":"ItbHostEventsV3","kind":"interface","extends":"tbIDE.ItbHostEventsV2","members":{"OnChangedTheme":"sub"}}, + {"name":"Host","kind":"coclass","default":"IHostV1","source":["ItbHostEventsV3"]}, + {"name":"IHtmlElementV1","kind":"interface","members":{"Name":"property","Properties":"property","AddEventListenerOLD1":"sub","ChildDomElements":"property","Remove":"sub","AddEventListener":"sub"},"hiddenMembers":["AddEventListenerOLD1"]}, + {"name":"HtmlElement","kind":"coclass","default":"IHtmlElementV1"}, + {"name":"IHtmlElementPropertiesV1","kind":"interface","members":{"Item":"property"}}, + {"name":"HtmlElementProperties","kind":"coclass","default":"IHtmlElementPropertiesV1"}, + {"name":"IHtmlElementPropertyV1","kind":"interface","members":{"Value":"property","Properties":"property"}}, + {"name":"HtmlElementProperty","kind":"coclass","default":"IHtmlElementPropertyV1"}, + {"name":"IHtmlElementsV1","kind":"interface","members":{"Item":"property","Add":"function"}}, + {"name":"HtmlElements","kind":"coclass","default":"IHtmlElementsV1"}, + {"name":"IHtmlEventPropertiesV1","kind":"interface","members":{"Item":"property"}}, + {"name":"HtmlEventProperties","kind":"coclass","default":"IHtmlEventPropertiesV1"}, + {"name":"IHtmlEventPropertyV1","kind":"interface","members":{"Value":"property","Properties":"property"}}, + {"name":"HtmlEventProperty","kind":"coclass","default":"IHtmlEventPropertyV1"}, + {"name":"IKeyboardShortcutsV1","kind":"interface","members":{"Add":"sub"}}, + {"name":"KeyboardShortcuts","kind":"coclass","default":"IKeyboardShortcutsV1"}, + {"name":"IProjectV1","kind":"interface","members":{"Path":"property","Name":"property","Evaluate":"function","Save":"sub","Close":"sub","Build":"sub","Clean":"sub","RootFolder":"property","LoadMetaData":"function","SaveMetaData":"sub","BaseFolderPath":"property","ProjectID":"property","BuildFileExtension":"property","Architecture":"property","VersionMajor":"property","VersionMinor":"property","VersionBuild":"property","VersionRevision":"property","BuildOutputPath":"property","BuildType":"property"}}, + {"name":"VbBuildType","kind":"enum","in":"IProjectV1","values":["StandardEXE","StandardDLL","ActiveXDLL","ActiveXControl","PackageTWINPACK"]}, + {"name":"Project","kind":"coclass","default":"IProjectV1"}, + {"name":"IThemesV1","kind":"interface","members":{"ActiveThemeName":"property","ActiveThemeNameGroup":"property"}}, + {"name":"Themes","kind":"coclass","default":"IThemesV1"}, + {"name":"IToolWindowV1","kind":"interface","members":{"Name":"property","Title":"property","Visible":"property","Resizable":"property","Close":"sub","RootDomElement":"property","ApplyCss":"sub"}}, + {"name":"IToolWindowEventsV1","kind":"interface","members":{"OnClose":"sub"}}, + {"name":"ToolWindow","kind":"coclass","default":"IToolWindowV1","source":["IToolWindowEventsV1"]}, + {"name":"IToolWindowsV1","kind":"interface","members":{"Add":"function"}}, + {"name":"ToolWindows","kind":"coclass","default":"IToolWindowsV1"}, + {"name":"IToolbarV1","kind":"interface","members":{"AddSplitter":"sub","AddButton":"function"}}, + {"name":"Toolbar","kind":"coclass","default":"IToolbarV1"}, + {"name":"IToolbarsV1","kind":"interface","members":{"Item":"property","Count":"property"}}, + {"name":"Toolbars","kind":"coclass","default":"IToolbarsV1"} + ] + } + } +} diff --git a/builder/symbol-baseline.json b/builder/symbol-baseline.json new file mode 100644 index 00000000..f269aff8 --- /dev/null +++ b/builder/symbol-baseline.json @@ -0,0 +1,4091 @@ +{ + "src": "docs", + "urls": [ + "/tB/Core/AddressOf", + "/tB/Core/Alias", + "/tB/Core/And", + "/tB/Core/AndAlso", + "/tB/Core/Attributes#allowunpopulatedvtableentry", + "/tB/Core/Attributes#appobject", + "/tB/Core/Attributes#arrayboundschecks", + "/tB/Core/Attributes#bindonlyifnoarguments", + "/tB/Core/Attributes#bindonlyifstringsuffix", + "/tB/Core/Attributes#classid", + "/tB/Core/Attributes#classinterface", + "/tB/Core/Attributes#coclasscustomconstructor", + "/tB/Core/Attributes#coclassid", + "/tB/Core/Attributes#comcontrol", + "/tB/Core/Attributes#comcreatable", + "/tB/Core/Attributes#comexport", + "/tB/Core/Attributes#comextensible", + "/tB/Core/Attributes#comimport", + "/tB/Core/Attributes#compileif", + "/tB/Core/Attributes#compileroptions", + "/tB/Core/Attributes#constantfoldable", + "/tB/Core/Attributes#constantfoldablenumericsonly", + "/tB/Core/Attributes#customcontrol", + "/tB/Core/Attributes#customdesigner", + "/tB/Core/Attributes#debuggable", + "/tB/Core/Attributes#debugonly", + "/tB/Core/Attributes#default", + "/tB/Core/Attributes#defaultdesignerevent", + "/tB/Core/Attributes#defaultmember-optional-bool", + "/tB/Core/Attributes#description", + "/tB/Core/Attributes#dispid", + "/tB/Core/Attributes#dispinterface", + "/tB/Core/Attributes#dllexport", + "/tB/Core/Attributes#dllstackcheck", + "/tB/Core/Attributes#dualinterface", + "/tB/Core/Attributes#enforceerrors", + "/tB/Core/Attributes#enforcewarnings", + "/tB/Core/Attributes#enumerator", + "/tB/Core/Attributes#enumid", + "/tB/Core/Attributes#eventinterfaceid", + "/tB/Core/Attributes#eventsusedispinterface", + "/tB/Core/Attributes#flags", + "/tB/Core/Attributes#floatingpointerrorchecks", + "/tB/Core/Attributes#formdesignerid", + "/tB/Core/Attributes#hidden", + "/tB/Core/Attributes#idebutton", + "/tB/Core/Attributes#ignorewarnings", + "/tB/Core/Attributes#implementsviaprivatefriendlies", + "/tB/Core/Attributes#integeroverflowchecks", + "/tB/Core/Attributes#interfaceid", + "/tB/Core/Attributes#libraryid", + "/tB/Core/Attributes#mustbequalified", + "/tB/Core/Attributes#nonbrowsable", + "/tB/Core/Attributes#oleautomation", + "/tB/Core/Attributes#packingalignment", + "/tB/Core/Attributes#populatefrom", + "/tB/Core/Attributes#predeclaredid", + "/tB/Core/Attributes#preservesig", + "/tB/Core/Attributes#redirecttostaticimplementation", + "/tB/Core/Attributes#restricted", + "/tB/Core/Attributes#runafterbuild", + "/tB/Core/Attributes#runbeforestartupobject", + "/tB/Core/Attributes#serialize", + "/tB/Core/Attributes#setdlldirectory", + "/tB/Core/Attributes#simplerbyvals", + "/tB/Core/Attributes#source", + "/tB/Core/Attributes#specialcompilerbinding", + "/tB/Core/Attributes#testcase", + "/tB/Core/Attributes#testfixture", + "/tB/Core/Attributes#typehint", + "/tB/Core/Attributes#unimplemented", + "/tB/Core/Attributes#usegetlasterror", + "/tB/Core/Attributes#userdefinedtypeisanalias", + "/tB/Core/Attributes#version", + "/tB/Core/Attributes#windowscontrol", + "/tB/Core/Attributes#withdispatchforwarding", + "/tB/Core/Call", + "/tB/Core/Class", + "/tB/Core/Close", + "/tB/Core/CoClass", + "/tB/Core/Comparison-Operators", + "/tB/Core/Concat", + "/tB/Core/Const", + "/tB/Core/Continue", + "/tB/Core/Declare", + "/tB/Core/Deftype", + "/tB/Core/Delegate", + "/tB/Core/Dim", + "/tB/Core/Divide", + "/tB/Core/Do-Loop", + "/tB/Core/End", + "/tB/Core/Enum", + "/tB/Core/Eqv", + "/tB/Core/Erase", + "/tB/Core/Error", + "/tB/Core/Event", + "/tB/Core/Exit", + "/tB/Core/Exponent", + "/tB/Core/For-Each-Next", + "/tB/Core/For-Next", + "/tB/Core/Function", + "/tB/Core/Get", + "/tB/Core/GoSub-Return", + "/tB/Core/GoTo", + "/tB/Core/Handles", + "/tB/Core/If-Then-Else", + "/tB/Core/Imp", + "/tB/Core/Implements", + "/tB/Core/Input", + "/tB/Core/IntegerDivide", + "/tB/Core/Interface", + "/tB/Core/Is", + "/tB/Core/IsNot", + "/tB/Core/LSet", + "/tB/Core/LeftShift", + "/tB/Core/Let", + "/tB/Core/Like", + "/tB/Core/Line-Input", + "/tB/Core/Load", + "/tB/Core/Lock", + "/tB/Core/Mid-equals", + "/tB/Core/MidB-equals", + "/tB/Core/Minus", + "/tB/Core/Mod", + "/tB/Core/Module", + "/tB/Core/Multiply", + "/tB/Core/Name", + "/tB/Core/New", + "/tB/Core/Not", + "/tB/Core/On-Error", + "/tB/Core/On-GoSub", + "/tB/Core/On-GoTo", + "/tB/Core/Open", + "/tB/Core/Option", + "/tB/Core/Or", + "/tB/Core/OrElse", + "/tB/Core/ParamArray", + "/tB/Core/Plus", + "/tB/Core/Print", + "/tB/Core/Private", + "/tB/Core/Property", + "/tB/Core/Protected", + "/tB/Core/Public", + "/tB/Core/Put", + "/tB/Core/RSet", + "/tB/Core/RaiseEvent", + "/tB/Core/ReDim", + "/tB/Core/Resume", + "/tB/Core/Return", + "/tB/Core/RightShift", + "/tB/Core/SavePicture", + "/tB/Core/Select-Case", + "/tB/Core/Set", + "/tB/Core/Static", + "/tB/Core/Stop", + "/tB/Core/Sub", + "/tB/Core/Topic-Preprocessor", + "/tB/Core/Type", + "/tB/Core/Unload", + "/tB/Core/Unlock", + "/tB/Core/While-Wend", + "/tB/Core/With", + "/tB/Core/WithEvents", + "/tB/Core/Write", + "/tB/Core/Xor", + "/tB/Modules/Collection/", + "/tB/Modules/Collection/Add", + "/tB/Modules/Collection/Clear", + "/tB/Modules/Collection/Count", + "/tB/Modules/Collection/Exists", + "/tB/Modules/Collection/Item", + "/tB/Modules/Collection/Items", + "/tB/Modules/Collection/KeyCompareMode", + "/tB/Modules/Collection/KeyCountHint", + "/tB/Modules/Collection/Keys", + "/tB/Modules/Collection/Remove", + "/tB/Modules/Compilation/", + "/tB/Modules/Compilation/CompilerVersion", + "/tB/Modules/Compilation/CurrentComponentCLSID", + "/tB/Modules/Compilation/CurrentComponentName", + "/tB/Modules/Compilation/CurrentProcedureName", + "/tB/Modules/Compilation/CurrentProjectName", + "/tB/Modules/Compilation/CurrentSourceFile", + "/tB/Modules/Compilation/ProcessorArchitecture", + "/tB/Modules/Constants/", + "/tB/Modules/Constants/VbAppWinStyle", + "/tB/Modules/Constants/VbArchitecture", + "/tB/Modules/Constants/VbCalendar", + "/tB/Modules/Constants/VbCallType", + "/tB/Modules/Constants/VbCompareMethod", + "/tB/Modules/Constants/VbDateTimeFormat", + "/tB/Modules/Constants/VbDayOfWeek", + "/tB/Modules/Constants/VbFileAttribute", + "/tB/Modules/Constants/VbFirstWeekOfYear", + "/tB/Modules/Constants/VbIMEStatus", + "/tB/Modules/Constants/VbMsgBoxResult", + "/tB/Modules/Constants/VbMsgBoxStyle", + "/tB/Modules/Constants/VbStrConv", + "/tB/Modules/Constants/VbTriState", + "/tB/Modules/Constants/VbVarType", + "/tB/Modules/Conversion/", + "/tB/Modules/Conversion/CBool", + "/tB/Modules/Conversion/CByte", + "/tB/Modules/Conversion/CCur", + "/tB/Modules/Conversion/CDate", + "/tB/Modules/Conversion/CDbl", + "/tB/Modules/Conversion/CDec", + "/tB/Modules/Conversion/CInt", + "/tB/Modules/Conversion/CLng", + "/tB/Modules/Conversion/CLngLng", + "/tB/Modules/Conversion/CLngPtr", + "/tB/Modules/Conversion/CSng", + "/tB/Modules/Conversion/CStr", + "/tB/Modules/Conversion/CType", + "/tB/Modules/Conversion/CVDate", + "/tB/Modules/Conversion/CVErr", + "/tB/Modules/Conversion/CVar", + "/tB/Modules/Conversion/Error", + "/tB/Modules/Conversion/Fix", + "/tB/Modules/Conversion/Hex", + "/tB/Modules/Conversion/Int", + "/tB/Modules/Conversion/MacID", + "/tB/Modules/Conversion/Nz", + "/tB/Modules/Conversion/Oct", + "/tB/Modules/Conversion/Str", + "/tB/Modules/Conversion/Val", + "/tB/Modules/Conversion/ValDec", + "/tB/Modules/DateTime/", + "/tB/Modules/DateTime/Calendar", + "/tB/Modules/DateTime/Date", + "/tB/Modules/DateTime/DateAdd", + "/tB/Modules/DateTime/DateDiff", + "/tB/Modules/DateTime/DatePart", + "/tB/Modules/DateTime/DateSerial", + "/tB/Modules/DateTime/DateValue", + "/tB/Modules/DateTime/Day", + "/tB/Modules/DateTime/Hour", + "/tB/Modules/DateTime/Minute", + "/tB/Modules/DateTime/Month", + "/tB/Modules/DateTime/Now", + "/tB/Modules/DateTime/Second", + "/tB/Modules/DateTime/Time", + "/tB/Modules/DateTime/TimeSerial", + "/tB/Modules/DateTime/TimeValue", + "/tB/Modules/DateTime/Timer", + "/tB/Modules/DateTime/Weekday", + "/tB/Modules/DateTime/Year", + "/tB/Modules/Debug", + "/tB/Modules/Debug#assert", + "/tB/Modules/Debug#cls", + "/tB/Modules/Debug#print", + "/tB/Modules/Debug#traceprint", + "/tB/Modules/ErrObject/", + "/tB/Modules/ErrObject/Clear", + "/tB/Modules/ErrObject/Description", + "/tB/Modules/ErrObject/HelpContext", + "/tB/Modules/ErrObject/HelpFile", + "/tB/Modules/ErrObject/LastDllError", + "/tB/Modules/ErrObject/LastHresult", + "/tB/Modules/ErrObject/Number", + "/tB/Modules/ErrObject/Raise", + "/tB/Modules/ErrObject/ReturnHResult", + "/tB/Modules/ErrObject/Source", + "/tB/Modules/FileSystem/", + "/tB/Modules/FileSystem/ChDir", + "/tB/Modules/FileSystem/ChDrive", + "/tB/Modules/FileSystem/CurDir", + "/tB/Modules/FileSystem/Dir", + "/tB/Modules/FileSystem/EOF", + "/tB/Modules/FileSystem/FileAttr", + "/tB/Modules/FileSystem/FileCopy", + "/tB/Modules/FileSystem/FileDateTime", + "/tB/Modules/FileSystem/FileLen", + "/tB/Modules/FileSystem/FreeFile", + "/tB/Modules/FileSystem/GetAttr", + "/tB/Modules/FileSystem/Input", + "/tB/Modules/FileSystem/InputB", + "/tB/Modules/FileSystem/Kill", + "/tB/Modules/FileSystem/LOF", + "/tB/Modules/FileSystem/Loc", + "/tB/Modules/FileSystem/MkDir", + "/tB/Modules/FileSystem/Reset", + "/tB/Modules/FileSystem/RmDir", + "/tB/Modules/FileSystem/Seek", + "/tB/Modules/FileSystem/SetAttr", + "/tB/Modules/FileSystem/Width", + "/tB/Modules/Financial/", + "/tB/Modules/Financial/DDB", + "/tB/Modules/Financial/FV", + "/tB/Modules/Financial/IPmt", + "/tB/Modules/Financial/IRR", + "/tB/Modules/Financial/MIRR", + "/tB/Modules/Financial/NPV", + "/tB/Modules/Financial/NPer", + "/tB/Modules/Financial/PPmt", + "/tB/Modules/Financial/PV", + "/tB/Modules/Financial/Pmt", + "/tB/Modules/Financial/Rate", + "/tB/Modules/Financial/SLN", + "/tB/Modules/Financial/SYD", + "/tB/Modules/HiddenModule/", + "/tB/Modules/HiddenModule/AllocMem", + "/tB/Modules/HiddenModule/ConvertIconToBitmap", + "/tB/Modules/HiddenModule/CreateGUID", + "/tB/Modules/HiddenModule/CreateStdPictureFromHandle", + "/tB/Modules/HiddenModule/Emit", + "/tB/Modules/HiddenModule/EmitAny", + "/tB/Modules/HiddenModule/Eval", + "/tB/Modules/HiddenModule/FreeMem", + "/tB/Modules/HiddenModule/GetDeclaredMaxEnumValue", + "/tB/Modules/HiddenModule/GetDeclaredMinEnumValue", + "/tB/Modules/HiddenModule/GetDeclaredTypeClsid", + "/tB/Modules/HiddenModule/GetDeclaredTypeEventIid", + "/tB/Modules/HiddenModule/GetDeclaredTypeIid", + "/tB/Modules/HiddenModule/GetDeclaredTypeProgId", + "/tB/Modules/HiddenModule/GetInheritedOwner", + "/tB/Modules/HiddenModule/GetMem1", + "/tB/Modules/HiddenModule/GetMem2", + "/tB/Modules/HiddenModule/GetMem4", + "/tB/Modules/HiddenModule/GetMem8", + "/tB/Modules/HiddenModule/GetMemPtr", + "/tB/Modules/HiddenModule/GetShortcutTextByEnum", + "/tB/Modules/HiddenModule/InterlockedCompareExchange32", + "/tB/Modules/HiddenModule/InterlockedCompareExchange64", + "/tB/Modules/HiddenModule/InterlockedCompareExchangePointer", + "/tB/Modules/HiddenModule/InterlockedDecrement32", + "/tB/Modules/HiddenModule/InterlockedExchangePointer", + "/tB/Modules/HiddenModule/InterlockedIncrement32", + "/tB/Modules/HiddenModule/PictureToByteArray", + "/tB/Modules/HiddenModule/PutMem1", + "/tB/Modules/HiddenModule/PutMem2", + "/tB/Modules/HiddenModule/PutMem4", + "/tB/Modules/HiddenModule/PutMem8", + "/tB/Modules/HiddenModule/PutMemPtr", + "/tB/Modules/HiddenModule/RegisterMessage", + "/tB/Modules/HiddenModule/RuntimeCreateGetMessageHook", + "/tB/Modules/HiddenModule/SetThreadGlobalErrorTrap", + "/tB/Modules/HiddenModule/StackArgsSize", + "/tB/Modules/HiddenModule/StackOffset", + "/tB/Modules/HiddenModule/Start", + "/tB/Modules/HiddenModule/Stop", + "/tB/Modules/HiddenModule/UnprotectedAccess", + "/tB/Modules/HiddenModule/vbaAryMove", + "/tB/Modules/HiddenModule/vbaCastObj", + "/tB/Modules/HiddenModule/vbaCopyBytes", + "/tB/Modules/HiddenModule/vbaCopyBytesZero", + "/tB/Modules/HiddenModule/vbaObjAddref", + "/tB/Modules/HiddenModule/vbaObjSet", + "/tB/Modules/HiddenModule/vbaObjSetAddref", + "/tB/Modules/HiddenModule/vbaRefVarAry", + "/tB/Modules/Information/", + "/tB/Modules/Information/Array", + "/tB/Modules/Information/Erl", + "/tB/Modules/Information/Err", + "/tB/Modules/Information/IMEStatus", + "/tB/Modules/Information/IsArray", + "/tB/Modules/Information/IsArrayInitialized", + "/tB/Modules/Information/IsDate", + "/tB/Modules/Information/IsEmpty", + "/tB/Modules/Information/IsError", + "/tB/Modules/Information/IsMissing", + "/tB/Modules/Information/IsNull", + "/tB/Modules/Information/IsNumeric", + "/tB/Modules/Information/IsObject", + "/tB/Modules/Information/LBound", + "/tB/Modules/Information/ObjPtr", + "/tB/Modules/Information/QBColor", + "/tB/Modules/Information/RGB", + "/tB/Modules/Information/RGBA", + "/tB/Modules/Information/RGBA_A", + "/tB/Modules/Information/RGB_B", + "/tB/Modules/Information/RGB_G", + "/tB/Modules/Information/RGB_R", + "/tB/Modules/Information/StrPtr", + "/tB/Modules/Information/TranslateColor", + "/tB/Modules/Information/TypeName", + "/tB/Modules/Information/UBound", + "/tB/Modules/Information/VarPtr", + "/tB/Modules/Information/VarType", + "/tB/Modules/Interaction/", + "/tB/Modules/Interaction/AppActivate", + "/tB/Modules/Interaction/Beep", + "/tB/Modules/Interaction/CallByDispId", + "/tB/Modules/Interaction/CallByName", + "/tB/Modules/Interaction/Choose", + "/tB/Modules/Interaction/Command", + "/tB/Modules/Interaction/CreateObject", + "/tB/Modules/Interaction/DeleteSetting", + "/tB/Modules/Interaction/DoEvents", + "/tB/Modules/Interaction/Environ", + "/tB/Modules/Interaction/GetAllSettings", + "/tB/Modules/Interaction/GetObject", + "/tB/Modules/Interaction/GetSetting", + "/tB/Modules/Interaction/IIf", + "/tB/Modules/Interaction/If", + "/tB/Modules/Interaction/InputBox", + "/tB/Modules/Interaction/MsgBox", + "/tB/Modules/Interaction/Partition", + "/tB/Modules/Interaction/RaiseEventByName", + "/tB/Modules/Interaction/RaiseEventByName2", + "/tB/Modules/Interaction/SaveSetting", + "/tB/Modules/Interaction/SendKeys", + "/tB/Modules/Interaction/Shell", + "/tB/Modules/Interaction/Switch", + "/tB/Modules/Math/", + "/tB/Modules/Math/Abs", + "/tB/Modules/Math/Atn", + "/tB/Modules/Math/Cos", + "/tB/Modules/Math/Exp", + "/tB/Modules/Math/Log", + "/tB/Modules/Math/Randomize", + "/tB/Modules/Math/Rnd", + "/tB/Modules/Math/Round", + "/tB/Modules/Math/Sgn", + "/tB/Modules/Math/Sin", + "/tB/Modules/Math/Sqr", + "/tB/Modules/Math/Tan", + "/tB/Modules/Strings/", + "/tB/Modules/Strings/Asc", + "/tB/Modules/Strings/Chr", + "/tB/Modules/Strings/Filter", + "/tB/Modules/Strings/Format", + "/tB/Modules/Strings/FormatCurrency", + "/tB/Modules/Strings/FormatDateTime", + "/tB/Modules/Strings/FormatNumber", + "/tB/Modules/Strings/FormatPercent", + "/tB/Modules/Strings/InStr", + "/tB/Modules/Strings/InStrRev", + "/tB/Modules/Strings/Join", + "/tB/Modules/Strings/LCase", + "/tB/Modules/Strings/LTrim", + "/tB/Modules/Strings/Left", + "/tB/Modules/Strings/Len", + "/tB/Modules/Strings/Mid", + "/tB/Modules/Strings/MonthName", + "/tB/Modules/Strings/RTrim", + "/tB/Modules/Strings/Replace", + "/tB/Modules/Strings/Right", + "/tB/Modules/Strings/Space", + "/tB/Modules/Strings/Split", + "/tB/Modules/Strings/StrComp", + "/tB/Modules/Strings/StrConv", + "/tB/Modules/Strings/StrReverse", + "/tB/Modules/Strings/String", + "/tB/Modules/Strings/Trim", + "/tB/Modules/Strings/UCase", + "/tB/Modules/Strings/WeekdayName", + "/tB/Modules/TbExpressionService/", + "/tB/Modules/TbExpressionService/AddCustomBinder", + "/tB/Modules/TbExpressionService/AddCustomBinderObject", + "/tB/Modules/TbExpressionService/AddStdLibraryBinder", + "/tB/Modules/TbExpressionService/Bind", + "/tB/Modules/TbExpressionService/Compile", + "/tB/Modules/TbExpressionService/Evaluate", + "/tB/Packages/AppGlobalClassObject/", + "/tB/Packages/AppGlobalClassObject/_App/", + "/tB/Packages/AppGlobalClassObject/_App/Build", + "/tB/Packages/AppGlobalClassObject/_App/Comments", + "/tB/Packages/AppGlobalClassObject/_App/CompanyName", + "/tB/Packages/AppGlobalClassObject/_App/EXEName", + "/tB/Packages/AppGlobalClassObject/_App/FileDescription", + "/tB/Packages/AppGlobalClassObject/_App/HelpFile", + "/tB/Packages/AppGlobalClassObject/_App/IsInIDE", + "/tB/Packages/AppGlobalClassObject/_App/LastBuildPath", + "/tB/Packages/AppGlobalClassObject/_App/LegalCopyright", + "/tB/Packages/AppGlobalClassObject/_App/LegalTrademarks", + "/tB/Packages/AppGlobalClassObject/_App/LogEvent", + "/tB/Packages/AppGlobalClassObject/_App/LogMode", + "/tB/Packages/AppGlobalClassObject/_App/LogPath", + "/tB/Packages/AppGlobalClassObject/_App/Major", + "/tB/Packages/AppGlobalClassObject/_App/Minor", + "/tB/Packages/AppGlobalClassObject/_App/ModulePath", + "/tB/Packages/AppGlobalClassObject/_App/NonModalAllowed", + "/tB/Packages/AppGlobalClassObject/_App/OleRequestPendingMsgText", + "/tB/Packages/AppGlobalClassObject/_App/OleRequestPendingMsgTitle", + "/tB/Packages/AppGlobalClassObject/_App/OleRequestPendingTimeout", + "/tB/Packages/AppGlobalClassObject/_App/OleServerBusyMsgText", + "/tB/Packages/AppGlobalClassObject/_App/OleServerBusyMsgTitle", + "/tB/Packages/AppGlobalClassObject/_App/OleServerBusyRaiseError", + "/tB/Packages/AppGlobalClassObject/_App/OleServerBusyTimeout", + "/tB/Packages/AppGlobalClassObject/_App/Path", + "/tB/Packages/AppGlobalClassObject/_App/PrevInstance", + "/tB/Packages/AppGlobalClassObject/_App/ProductName", + "/tB/Packages/AppGlobalClassObject/_App/RetainedProject", + "/tB/Packages/AppGlobalClassObject/_App/Revision", + "/tB/Packages/AppGlobalClassObject/_App/StartLogging", + "/tB/Packages/AppGlobalClassObject/_App/StartMode", + "/tB/Packages/AppGlobalClassObject/_App/TaskVisible", + "/tB/Packages/AppGlobalClassObject/_App/ThreadID", + "/tB/Packages/AppGlobalClassObject/_App/Title", + "/tB/Packages/AppGlobalClassObject/_App/UnattendedApp", + "/tB/Packages/AppGlobalClassObject/_App/hInstance", + "/tB/Packages/Assert/", + "/tB/Packages/Assert/Exact", + "/tB/Packages/Assert/Exact#areequal", + "/tB/Packages/Assert/Exact#arenotequal", + "/tB/Packages/Assert/Exact#arenotsame", + "/tB/Packages/Assert/Exact#aresame", + "/tB/Packages/Assert/Exact#fail", + "/tB/Packages/Assert/Exact#inconclusive", + "/tB/Packages/Assert/Exact#isfalse", + "/tB/Packages/Assert/Exact#isnothing", + "/tB/Packages/Assert/Exact#isnotnothing", + "/tB/Packages/Assert/Exact#isnotnull", + "/tB/Packages/Assert/Exact#isnull", + "/tB/Packages/Assert/Exact#istrue", + "/tB/Packages/Assert/Exact#notsequenceequals", + "/tB/Packages/Assert/Exact#sequenceequals", + "/tB/Packages/Assert/Exact#succeed", + "/tB/Packages/Assert/Permissive", + "/tB/Packages/Assert/Permissive#areequal", + "/tB/Packages/Assert/Permissive#arenotequal", + "/tB/Packages/Assert/Permissive#arenotsame", + "/tB/Packages/Assert/Permissive#aresame", + "/tB/Packages/Assert/Permissive#fail", + "/tB/Packages/Assert/Permissive#inconclusive", + "/tB/Packages/Assert/Permissive#isfalse", + "/tB/Packages/Assert/Permissive#isnothing", + "/tB/Packages/Assert/Permissive#isnotnothing", + "/tB/Packages/Assert/Permissive#isnotnull", + "/tB/Packages/Assert/Permissive#isnull", + "/tB/Packages/Assert/Permissive#istrue", + "/tB/Packages/Assert/Permissive#notsequenceequals", + "/tB/Packages/Assert/Permissive#sequenceequals", + "/tB/Packages/Assert/Permissive#succeed", + "/tB/Packages/Assert/Strict", + "/tB/Packages/Assert/Strict#areequal", + "/tB/Packages/Assert/Strict#arenotequal", + "/tB/Packages/Assert/Strict#arenotsame", + "/tB/Packages/Assert/Strict#aresame", + "/tB/Packages/Assert/Strict#fail", + "/tB/Packages/Assert/Strict#inconclusive", + "/tB/Packages/Assert/Strict#isfalse", + "/tB/Packages/Assert/Strict#isnothing", + "/tB/Packages/Assert/Strict#isnotnothing", + "/tB/Packages/Assert/Strict#isnotnull", + "/tB/Packages/Assert/Strict#isnull", + "/tB/Packages/Assert/Strict#istrue", + "/tB/Packages/Assert/Strict#notsequenceequals", + "/tB/Packages/Assert/Strict#sequenceequals", + "/tB/Packages/Assert/Strict#succeed", + "/tB/Packages/CEF/", + "/tB/Packages/CEF/CefBrowser/", + "/tB/Packages/CEF/CefBrowser/#anchors", + "/tB/Packages/CEF/CefBrowser/#cangoback", + "/tB/Packages/CEF/CefBrowser/#cangoforward", + "/tB/Packages/CEF/CefBrowser/#cefmajorversion", + "/tB/Packages/CEF/CefBrowser/#clearvirtualhostnametofoldermapping", + "/tB/Packages/CEF/CefBrowser/#container", + "/tB/Packages/CEF/CefBrowser/#controltype", + "/tB/Packages/CEF/CefBrowser/#create", + "/tB/Packages/CEF/CefBrowser/#createinitialized", + "/tB/Packages/CEF/CefBrowser/#dock", + "/tB/Packages/CEF/CefBrowser/#documenttitle", + "/tB/Packages/CEF/CefBrowser/#documenttitlechanged", + "/tB/Packages/CEF/CefBrowser/#documenturl", + "/tB/Packages/CEF/CefBrowser/#domcontentloaded", + "/tB/Packages/CEF/CefBrowser/#environmentoptions", + "/tB/Packages/CEF/CefBrowser/#error", + "/tB/Packages/CEF/CefBrowser/#executescript", + "/tB/Packages/CEF/CefBrowser/#goback", + "/tB/Packages/CEF/CefBrowser/#goforward", + "/tB/Packages/CEF/CefBrowser/#height", + "/tB/Packages/CEF/CefBrowser/#hwnd", + "/tB/Packages/CEF/CefBrowser/#index", + "/tB/Packages/CEF/CefBrowser/#initialize", + "/tB/Packages/CEF/CefBrowser/#jsasyncresult", + "/tB/Packages/CEF/CefBrowser/#jsmessage", + "/tB/Packages/CEF/CefBrowser/#jsrun", + "/tB/Packages/CEF/CefBrowser/#jsrunasync", + "/tB/Packages/CEF/CefBrowser/#left", + "/tB/Packages/CEF/CefBrowser/#move", + "/tB/Packages/CEF/CefBrowser/#name", + "/tB/Packages/CEF/CefBrowser/#navigate", + "/tB/Packages/CEF/CefBrowser/#navigatetostring", + "/tB/Packages/CEF/CefBrowser/#navigationcomplete", + "/tB/Packages/CEF/CefBrowser/#navigationstarting", + "/tB/Packages/CEF/CefBrowser/#opendevtoolswindow", + "/tB/Packages/CEF/CefBrowser/#parent", + "/tB/Packages/CEF/CefBrowser/#postwebmessage", + "/tB/Packages/CEF/CefBrowser/#printtopdf", + "/tB/Packages/CEF/CefBrowser/#printtopdfcompleted", + "/tB/Packages/CEF/CefBrowser/#printtopdffailed", + "/tB/Packages/CEF/CefBrowser/#ready", + "/tB/Packages/CEF/CefBrowser/#reload", + "/tB/Packages/CEF/CefBrowser/#setvirtualhostnametofoldermapping", + "/tB/Packages/CEF/CefBrowser/#sourcechanged", + "/tB/Packages/CEF/CefBrowser/#tag", + "/tB/Packages/CEF/CefBrowser/#top", + "/tB/Packages/CEF/CefBrowser/#useragent", + "/tB/Packages/CEF/CefBrowser/#visible", + "/tB/Packages/CEF/CefBrowser/#width", + "/tB/Packages/CEF/CefBrowser/#zoomfactor", + "/tB/Packages/CEF/CefBrowser/EnvironmentOptions", + "/tB/Packages/CEF/CefBrowser/EnvironmentOptions#browserexecutablefolder", + "/tB/Packages/CEF/CefBrowser/EnvironmentOptions#logfilepath", + "/tB/Packages/CEF/CefBrowser/EnvironmentOptions#logseverity", + "/tB/Packages/CEF/CefBrowser/EnvironmentOptions#userdatafolder", + "/tB/Packages/CEF/Enumerations/CefLogSeverity", + "/tB/Packages/CEF/Enumerations/cefPrintOrientation", + "/tB/Packages/CustomControls/", + "/tB/Packages/CustomControls/Constants", + "/tB/Packages/CustomControls/Enumerations/BorderStyle", + "/tB/Packages/CustomControls/Enumerations/ColorRGBA", + "/tB/Packages/CustomControls/Enumerations/CornerShape", + "/tB/Packages/CustomControls/Enumerations/Customtate", + "/tB/Packages/CustomControls/Enumerations/DockMode", + "/tB/Packages/CustomControls/Enumerations/FillPattern", + "/tB/Packages/CustomControls/Enumerations/FontWeight", + "/tB/Packages/CustomControls/Enumerations/PixelCount", + "/tB/Packages/CustomControls/Enumerations/PointSize", + "/tB/Packages/CustomControls/Enumerations/StartupPosition", + "/tB/Packages/CustomControls/Enumerations/TextAlignment", + "/tB/Packages/CustomControls/Enumerations/TextOverflowMode", + "/tB/Packages/CustomControls/Enumerations/WindowState", + "/tB/Packages/CustomControls/Framework/Canvas", + "/tB/Packages/CustomControls/Framework/Canvas#runtimeuicccanvasaddelement", + "/tB/Packages/CustomControls/Framework/Canvas#runtimeuiccgetdpi", + "/tB/Packages/CustomControls/Framework/Canvas#runtimeuiccgetdpiscalefactor", + "/tB/Packages/CustomControls/Framework/Canvas#runtimeuiccgetheight", + "/tB/Packages/CustomControls/Framework/Canvas#runtimeuiccgetwidth", + "/tB/Packages/CustomControls/Framework/CustomControlContext", + "/tB/Packages/CustomControls/Framework/CustomControlContext#changefocusedelement", + "/tB/Packages/CustomControls/Framework/CustomControlContext#createtimer", + "/tB/Packages/CustomControls/Framework/CustomControlContext#getserializer", + "/tB/Packages/CustomControls/Framework/CustomControlContext#repaint", + "/tB/Packages/CustomControls/Framework/CustomControlTimer", + "/tB/Packages/CustomControls/Framework/CustomControlTimer#enabled", + "/tB/Packages/CustomControls/Framework/CustomControlTimer#interval", + "/tB/Packages/CustomControls/Framework/CustomControlTimer#ontimer", + "/tB/Packages/CustomControls/Framework/CustomControlsCollection", + "/tB/Packages/CustomControls/Framework/CustomControlsCollection#add", + "/tB/Packages/CustomControls/Framework/CustomControlsCollection#count", + "/tB/Packages/CustomControls/Framework/CustomControlsCollection#item", + "/tB/Packages/CustomControls/Framework/CustomControlsCollection#remove", + "/tB/Packages/CustomControls/Framework/CustomFormContext", + "/tB/Packages/CustomControls/Framework/CustomFormContext#close", + "/tB/Packages/CustomControls/Framework/CustomFormContext#show", + "/tB/Packages/CustomControls/Framework/ICustomControl", + "/tB/Packages/CustomControls/Framework/ICustomControl#destroy", + "/tB/Packages/CustomControls/Framework/ICustomControl#initialize", + "/tB/Packages/CustomControls/Framework/ICustomControl#paint", + "/tB/Packages/CustomControls/Framework/ICustomForm", + "/tB/Packages/CustomControls/Framework/ICustomForm#destroy", + "/tB/Packages/CustomControls/Framework/ICustomForm#initialize", + "/tB/Packages/CustomControls/Framework/ICustomForm#paint", + "/tB/Packages/CustomControls/Framework/SerializeInfo", + "/tB/Packages/CustomControls/Framework/SerializeInfo#runtimeuisrzdeserialize", + "/tB/Packages/CustomControls/Framework/SerializeInfo#runtimeuisrzgetformhwnd", + "/tB/Packages/CustomControls/Framework/SerializeInfo#runtimeuisrzgetorientationhint", + "/tB/Packages/CustomControls/Framework/SerializeInfo#runtimeuisrzgetrootclassdispatch", + "/tB/Packages/CustomControls/Framework/SerializeInfo#runtimeuisrzgetrootclsid", + "/tB/Packages/CustomControls/Framework/SerializeInfo#runtimeuisrzisdesignmode", + "/tB/Packages/CustomControls/Framework/SerializeInfo#runtimeuisrzisreportmode", + "/tB/Packages/CustomControls/Framework/SerializeInfo#runtimeuisrzisruntimeadded", + "/tB/Packages/CustomControls/Framework/_CustomControlContext", + "/tB/Packages/CustomControls/Framework/_CustomControlContext#changefocusedelement", + "/tB/Packages/CustomControls/Framework/_CustomControlContext#createtimer", + "/tB/Packages/CustomControls/Framework/_CustomControlContext#getserializer", + "/tB/Packages/CustomControls/Framework/_CustomControlContext#repaint", + "/tB/Packages/CustomControls/Framework/_CustomControlTimer", + "/tB/Packages/CustomControls/Framework/_CustomControlTimer#enabled", + "/tB/Packages/CustomControls/Framework/_CustomControlTimer#interval", + "/tB/Packages/CustomControls/Framework/_CustomControlTimerEvents", + "/tB/Packages/CustomControls/Framework/_CustomControlTimerEvents#ontimer", + "/tB/Packages/CustomControls/Framework/_CustomControlsCollection", + "/tB/Packages/CustomControls/Framework/_CustomControlsCollection#add", + "/tB/Packages/CustomControls/Framework/_CustomControlsCollection#count", + "/tB/Packages/CustomControls/Framework/_CustomControlsCollection#item", + "/tB/Packages/CustomControls/Framework/_CustomControlsCollection#remove", + "/tB/Packages/CustomControls/Framework/_CustomFormContext", + "/tB/Packages/CustomControls/Framework/_CustomFormContext#close", + "/tB/Packages/CustomControls/Framework/_CustomFormContext#show", + "/tB/Packages/CustomControls/Styles/Anchors", + "/tB/Packages/CustomControls/Styles/Anchors#bottom", + "/tB/Packages/CustomControls/Styles/Anchors#left", + "/tB/Packages/CustomControls/Styles/Anchors#onchanged", + "/tB/Packages/CustomControls/Styles/Anchors#right", + "/tB/Packages/CustomControls/Styles/Anchors#top", + "/tB/Packages/CustomControls/Styles/Borders", + "/tB/Packages/CustomControls/Styles/Borders#elements", + "/tB/Packages/CustomControls/Styles/Borders#onchanged", + "/tB/Packages/CustomControls/Styles/Borders#setsimpleborder", + "/tB/Packages/CustomControls/Styles/Borders#setsimpleborderrgba", + "/tB/Packages/CustomControls/Styles/Corners", + "/tB/Packages/CustomControls/Styles/Corners#bottomleft", + "/tB/Packages/CustomControls/Styles/Corners#bottomright", + "/tB/Packages/CustomControls/Styles/Corners#onchanged", + "/tB/Packages/CustomControls/Styles/Corners#setall", + "/tB/Packages/CustomControls/Styles/Corners#topleft", + "/tB/Packages/CustomControls/Styles/Corners#topright", + "/tB/Packages/CustomControls/Styles/Fill", + "/tB/Packages/CustomControls/Styles/Fill#colorpoints", + "/tB/Packages/CustomControls/Styles/Fill#onchanged", + "/tB/Packages/CustomControls/Styles/Fill#pattern", + "/tB/Packages/CustomControls/Styles/Fill#setsimplepattern", + "/tB/Packages/CustomControls/Styles/Fill#setsimplepatternrgba", + "/tB/Packages/CustomControls/Styles/Line", + "/tB/Packages/CustomControls/Styles/Line#fill", + "/tB/Packages/CustomControls/Styles/Line#onchanged", + "/tB/Packages/CustomControls/Styles/Line#strokesize", + "/tB/Packages/CustomControls/Styles/Padding", + "/tB/Packages/CustomControls/Styles/Padding#bottom", + "/tB/Packages/CustomControls/Styles/Padding#left", + "/tB/Packages/CustomControls/Styles/Padding#onchanged", + "/tB/Packages/CustomControls/Styles/Padding#right", + "/tB/Packages/CustomControls/Styles/Padding#top", + "/tB/Packages/CustomControls/Styles/TextRendering", + "/tB/Packages/CustomControls/Styles/TextRendering#alignment", + "/tB/Packages/CustomControls/Styles/TextRendering#fill", + "/tB/Packages/CustomControls/Styles/TextRendering#font", + "/tB/Packages/CustomControls/Styles/TextRendering#onchanged", + "/tB/Packages/CustomControls/Styles/TextRendering#outlines", + "/tB/Packages/CustomControls/Styles/TextRendering#overflowmode", + "/tB/Packages/CustomControls/Styles/TextRendering#padding", + "/tB/Packages/CustomControls/WaynesButton/", + "/tB/Packages/CustomControls/WaynesButton/#anchors", + "/tB/Packages/CustomControls/WaynesButton/#caption", + "/tB/Packages/CustomControls/WaynesButton/#click", + "/tB/Packages/CustomControls/WaynesButton/#dock", + "/tB/Packages/CustomControls/WaynesButton/#focusedstate", + "/tB/Packages/CustomControls/WaynesButton/#gotfocus", + "/tB/Packages/CustomControls/WaynesButton/#height", + "/tB/Packages/CustomControls/WaynesButton/#hoverstate", + "/tB/Packages/CustomControls/WaynesButton/#keydown", + "/tB/Packages/CustomControls/WaynesButton/#keypress", + "/tB/Packages/CustomControls/WaynesButton/#keyup", + "/tB/Packages/CustomControls/WaynesButton/#left", + "/tB/Packages/CustomControls/WaynesButton/#lostfocus", + "/tB/Packages/CustomControls/WaynesButton/#mousedown", + "/tB/Packages/CustomControls/WaynesButton/#mouseenter", + "/tB/Packages/CustomControls/WaynesButton/#mouseleave", + "/tB/Packages/CustomControls/WaynesButton/#mousemove", + "/tB/Packages/CustomControls/WaynesButton/#mouseup", + "/tB/Packages/CustomControls/WaynesButton/#name", + "/tB/Packages/CustomControls/WaynesButton/#normalstate", + "/tB/Packages/CustomControls/WaynesButton/#pressedstate", + "/tB/Packages/CustomControls/WaynesButton/#tabindex", + "/tB/Packages/CustomControls/WaynesButton/#tabstop", + "/tB/Packages/CustomControls/WaynesButton/#top", + "/tB/Packages/CustomControls/WaynesButton/#visible", + "/tB/Packages/CustomControls/WaynesButton/#width", + "/tB/Packages/CustomControls/WaynesButton/WaynesButtonState", + "/tB/Packages/CustomControls/WaynesButton/WaynesButtonState#backgroundfill", + "/tB/Packages/CustomControls/WaynesButton/WaynesButtonState#borders", + "/tB/Packages/CustomControls/WaynesButton/WaynesButtonState#corners", + "/tB/Packages/CustomControls/WaynesButton/WaynesButtonState#initializedefaults", + "/tB/Packages/CustomControls/WaynesButton/WaynesButtonState#onchanged", + "/tB/Packages/CustomControls/WaynesButton/WaynesButtonState#textrendering", + "/tB/Packages/CustomControls/WaynesForm/", + "/tB/Packages/CustomControls/WaynesForm/#backgroundfill", + "/tB/Packages/CustomControls/WaynesForm/#caption", + "/tB/Packages/CustomControls/WaynesForm/#click", + "/tB/Packages/CustomControls/WaynesForm/#close", + "/tB/Packages/CustomControls/WaynesForm/#controls", + "/tB/Packages/CustomControls/WaynesForm/#formdesignerid", + "/tB/Packages/CustomControls/WaynesForm/#height", + "/tB/Packages/CustomControls/WaynesForm/#left", + "/tB/Packages/CustomControls/WaynesForm/#name", + "/tB/Packages/CustomControls/WaynesForm/#show", + "/tB/Packages/CustomControls/WaynesForm/#startupshow", + "/tB/Packages/CustomControls/WaynesForm/#top", + "/tB/Packages/CustomControls/WaynesForm/#width", + "/tB/Packages/CustomControls/WaynesForm/#windowsoptions", + "/tB/Packages/CustomControls/WaynesForm/WindowsFormOptions", + "/tB/Packages/CustomControls/WaynesForm/WindowsFormOptions#borderstyle", + "/tB/Packages/CustomControls/WaynesForm/WindowsFormOptions#controlbox", + "/tB/Packages/CustomControls/WaynesForm/WindowsFormOptions#maximizebutton", + "/tB/Packages/CustomControls/WaynesForm/WindowsFormOptions#minimizebutton", + "/tB/Packages/CustomControls/WaynesForm/WindowsFormOptions#onchanged", + "/tB/Packages/CustomControls/WaynesForm/WindowsFormOptions#showintaskbar", + "/tB/Packages/CustomControls/WaynesForm/WindowsFormOptions#startupposition", + "/tB/Packages/CustomControls/WaynesForm/WindowsFormOptions#windowstate", + "/tB/Packages/CustomControls/WaynesFrame", + "/tB/Packages/CustomControls/WaynesFrame#anchors", + "/tB/Packages/CustomControls/WaynesFrame#backgroundfill", + "/tB/Packages/CustomControls/WaynesFrame#dock", + "/tB/Packages/CustomControls/WaynesFrame#height", + "/tB/Packages/CustomControls/WaynesFrame#left", + "/tB/Packages/CustomControls/WaynesFrame#name", + "/tB/Packages/CustomControls/WaynesFrame#top", + "/tB/Packages/CustomControls/WaynesFrame#visible", + "/tB/Packages/CustomControls/WaynesFrame#width", + "/tB/Packages/CustomControls/WaynesGrid/", + "/tB/Packages/CustomControls/WaynesGrid/#anchors", + "/tB/Packages/CustomControls/WaynesGrid/#celloptions", + "/tB/Packages/CustomControls/WaynesGrid/#columnheaderoptions", + "/tB/Packages/CustomControls/WaynesGrid/#columns", + "/tB/Packages/CustomControls/WaynesGrid/#dock", + "/tB/Packages/CustomControls/WaynesGrid/#getcelltext", + "/tB/Packages/CustomControls/WaynesGrid/#headerrowheight", + "/tB/Packages/CustomControls/WaynesGrid/#height", + "/tB/Packages/CustomControls/WaynesGrid/#horizontallineoptions", + "/tB/Packages/CustomControls/WaynesGrid/#hovercelloptions", + "/tB/Packages/CustomControls/WaynesGrid/#left", + "/tB/Packages/CustomControls/WaynesGrid/#multiselectcelloptions", + "/tB/Packages/CustomControls/WaynesGrid/#name", + "/tB/Packages/CustomControls/WaynesGrid/#repaint", + "/tB/Packages/CustomControls/WaynesGrid/#resizerbar", + "/tB/Packages/CustomControls/WaynesGrid/#rowcount", + "/tB/Packages/CustomControls/WaynesGrid/#rowheaderoptions", + "/tB/Packages/CustomControls/WaynesGrid/#rowheight", + "/tB/Packages/CustomControls/WaynesGrid/#selectedcelloptions", + "/tB/Packages/CustomControls/WaynesGrid/#selectedcellx", + "/tB/Packages/CustomControls/WaynesGrid/#selectedcelly", + "/tB/Packages/CustomControls/WaynesGrid/#selectedfullcolumnx", + "/tB/Packages/CustomControls/WaynesGrid/#selectedfullrowy", + "/tB/Packages/CustomControls/WaynesGrid/#tabindex", + "/tB/Packages/CustomControls/WaynesGrid/#tabstop", + "/tB/Packages/CustomControls/WaynesGrid/#top", + "/tB/Packages/CustomControls/WaynesGrid/#verticallineoptions", + "/tB/Packages/CustomControls/WaynesGrid/#visible", + "/tB/Packages/CustomControls/WaynesGrid/#width", + "/tB/Packages/CustomControls/WaynesGrid/CellRenderingOptions", + "/tB/Packages/CustomControls/WaynesGrid/CellRenderingOptions#borders", + "/tB/Packages/CustomControls/WaynesGrid/CellRenderingOptions#corners", + "/tB/Packages/CustomControls/WaynesGrid/CellRenderingOptions#cursor", + "/tB/Packages/CustomControls/WaynesGrid/CellRenderingOptions#fill", + "/tB/Packages/CustomControls/WaynesGrid/CellRenderingOptions#new", + "/tB/Packages/CustomControls/WaynesGrid/CellRenderingOptions#onchanged", + "/tB/Packages/CustomControls/WaynesGrid/CellRenderingOptions#textrendering", + "/tB/Packages/CustomControls/WaynesGrid/Column", + "/tB/Packages/CustomControls/WaynesGrid/Column#caption", + "/tB/Packages/CustomControls/WaynesGrid/Column#onchanged", + "/tB/Packages/CustomControls/WaynesGrid/Column#width", + "/tB/Packages/CustomControls/WaynesLabel", + "/tB/Packages/CustomControls/WaynesLabel#anchors", + "/tB/Packages/CustomControls/WaynesLabel#backgroundfill", + "/tB/Packages/CustomControls/WaynesLabel#caption", + "/tB/Packages/CustomControls/WaynesLabel#dock", + "/tB/Packages/CustomControls/WaynesLabel#height", + "/tB/Packages/CustomControls/WaynesLabel#left", + "/tB/Packages/CustomControls/WaynesLabel#name", + "/tB/Packages/CustomControls/WaynesLabel#textrendering", + "/tB/Packages/CustomControls/WaynesLabel#top", + "/tB/Packages/CustomControls/WaynesLabel#visible", + "/tB/Packages/CustomControls/WaynesLabel#width", + "/tB/Packages/CustomControls/WaynesSlider/", + "/tB/Packages/CustomControls/WaynesSlider/#anchors", + "/tB/Packages/CustomControls/WaynesSlider/#direction", + "/tB/Packages/CustomControls/WaynesSlider/#displayformat", + "/tB/Packages/CustomControls/WaynesSlider/#dock", + "/tB/Packages/CustomControls/WaynesSlider/#focusedstate", + "/tB/Packages/CustomControls/WaynesSlider/#height", + "/tB/Packages/CustomControls/WaynesSlider/#hoverstate", + "/tB/Packages/CustomControls/WaynesSlider/#left", + "/tB/Packages/CustomControls/WaynesSlider/#maxvalue", + "/tB/Packages/CustomControls/WaynesSlider/#minvalue", + "/tB/Packages/CustomControls/WaynesSlider/#moveinterval", + "/tB/Packages/CustomControls/WaynesSlider/#name", + "/tB/Packages/CustomControls/WaynesSlider/#normalstate", + "/tB/Packages/CustomControls/WaynesSlider/#pagingstepvalue", + "/tB/Packages/CustomControls/WaynesSlider/#stepvalue", + "/tB/Packages/CustomControls/WaynesSlider/#tabindex", + "/tB/Packages/CustomControls/WaynesSlider/#tabstop", + "/tB/Packages/CustomControls/WaynesSlider/#top", + "/tB/Packages/CustomControls/WaynesSlider/#value", + "/tB/Packages/CustomControls/WaynesSlider/#visible", + "/tB/Packages/CustomControls/WaynesSlider/#width", + "/tB/Packages/CustomControls/WaynesSlider/#wraparound", + "/tB/Packages/CustomControls/WaynesSlider/WaynesSliderState", + "/tB/Packages/CustomControls/WaynesSlider/WaynesSliderState#backgroundborders", + "/tB/Packages/CustomControls/WaynesSlider/WaynesSliderState#backgroundcorners", + "/tB/Packages/CustomControls/WaynesSlider/WaynesSliderState#backgroundfill", + "/tB/Packages/CustomControls/WaynesSlider/WaynesSliderState#blockborders", + "/tB/Packages/CustomControls/WaynesSlider/WaynesSliderState#blockcorners", + "/tB/Packages/CustomControls/WaynesSlider/WaynesSliderState#blockfill", + "/tB/Packages/CustomControls/WaynesSlider/WaynesSliderState#blockwidth", + "/tB/Packages/CustomControls/WaynesSlider/WaynesSliderState#initializedefaultvalues", + "/tB/Packages/CustomControls/WaynesSlider/WaynesSliderState#onchanged", + "/tB/Packages/CustomControls/WaynesSlider/WaynesSliderState#textrendering", + "/tB/Packages/CustomControls/WaynesTextBox/", + "/tB/Packages/CustomControls/WaynesTextBox/#anchors", + "/tB/Packages/CustomControls/WaynesTextBox/#dock", + "/tB/Packages/CustomControls/WaynesTextBox/#focusedstate", + "/tB/Packages/CustomControls/WaynesTextBox/#height", + "/tB/Packages/CustomControls/WaynesTextBox/#hoverstate", + "/tB/Packages/CustomControls/WaynesTextBox/#left", + "/tB/Packages/CustomControls/WaynesTextBox/#name", + "/tB/Packages/CustomControls/WaynesTextBox/#normalstate", + "/tB/Packages/CustomControls/WaynesTextBox/#tabindex", + "/tB/Packages/CustomControls/WaynesTextBox/#tabstop", + "/tB/Packages/CustomControls/WaynesTextBox/#top", + "/tB/Packages/CustomControls/WaynesTextBox/#value", + "/tB/Packages/CustomControls/WaynesTextBox/#visible", + "/tB/Packages/CustomControls/WaynesTextBox/#width", + "/tB/Packages/CustomControls/WaynesTextBox/WaynesTextBoxState", + "/tB/Packages/CustomControls/WaynesTextBox/WaynesTextBoxState#backgroundfill", + "/tB/Packages/CustomControls/WaynesTextBox/WaynesTextBoxState#borders", + "/tB/Packages/CustomControls/WaynesTextBox/WaynesTextBoxState#caretfill", + "/tB/Packages/CustomControls/WaynesTextBox/WaynesTextBoxState#caretwidth", + "/tB/Packages/CustomControls/WaynesTextBox/WaynesTextBoxState#corners", + "/tB/Packages/CustomControls/WaynesTextBox/WaynesTextBoxState#decorationerror", + "/tB/Packages/CustomControls/WaynesTextBox/WaynesTextBoxState#decorationinfo", + "/tB/Packages/CustomControls/WaynesTextBox/WaynesTextBoxState#decorationwarning", + "/tB/Packages/CustomControls/WaynesTextBox/WaynesTextBoxState#initializedefaultvalues", + "/tB/Packages/CustomControls/WaynesTextBox/WaynesTextBoxState#initializedefaultvalues_focused", + "/tB/Packages/CustomControls/WaynesTextBox/WaynesTextBoxState#onchanged", + "/tB/Packages/CustomControls/WaynesTextBox/WaynesTextBoxState#selectedbackgroundfill", + "/tB/Packages/CustomControls/WaynesTextBox/WaynesTextBoxState#selectedtextfill", + "/tB/Packages/CustomControls/WaynesTextBox/WaynesTextBoxState#textrendering", + "/tB/Packages/CustomControls/WaynesTimer", + "/tB/Packages/CustomControls/WaynesTimer#anchors", + "/tB/Packages/CustomControls/WaynesTimer#dock", + "/tB/Packages/CustomControls/WaynesTimer#enabled", + "/tB/Packages/CustomControls/WaynesTimer#height", + "/tB/Packages/CustomControls/WaynesTimer#interval", + "/tB/Packages/CustomControls/WaynesTimer#left", + "/tB/Packages/CustomControls/WaynesTimer#name", + "/tB/Packages/CustomControls/WaynesTimer#timer", + "/tB/Packages/CustomControls/WaynesTimer#top", + "/tB/Packages/CustomControls/WaynesTimer#visible", + "/tB/Packages/CustomControls/WaynesTimer#width", + "/tB/Packages/VB/", + "/tB/Packages/VB/App/", + "/tB/Packages/VB/App/#build", + "/tB/Packages/VB/App/#comments", + "/tB/Packages/VB/App/#companyname", + "/tB/Packages/VB/App/#exename", + "/tB/Packages/VB/App/#filedescription", + "/tB/Packages/VB/App/#helpfile", + "/tB/Packages/VB/App/#hinstance", + "/tB/Packages/VB/App/#iselevated", + "/tB/Packages/VB/App/#isinide", + "/tB/Packages/VB/App/#lastbuildpath", + "/tB/Packages/VB/App/#legalcopyright", + "/tB/Packages/VB/App/#legaltrademarks", + "/tB/Packages/VB/App/#logevent", + "/tB/Packages/VB/App/#logmode", + "/tB/Packages/VB/App/#logpath", + "/tB/Packages/VB/App/#major", + "/tB/Packages/VB/App/#minor", + "/tB/Packages/VB/App/#modulepath", + "/tB/Packages/VB/App/#nonmodalallowed", + "/tB/Packages/VB/App/#olerequestpendingmsgtext", + "/tB/Packages/VB/App/#olerequestpendingmsgtitle", + "/tB/Packages/VB/App/#olerequestpendingtimeout", + "/tB/Packages/VB/App/#oleserverbusymsgtext", + "/tB/Packages/VB/App/#oleserverbusymsgtitle", + "/tB/Packages/VB/App/#oleserverbusyraiseerror", + "/tB/Packages/VB/App/#oleserverbusytimeout", + "/tB/Packages/VB/App/#path", + "/tB/Packages/VB/App/#previnstance", + "/tB/Packages/VB/App/#productname", + "/tB/Packages/VB/App/#retainedproject", + "/tB/Packages/VB/App/#revision", + "/tB/Packages/VB/App/#startlogging", + "/tB/Packages/VB/App/#startmode", + "/tB/Packages/VB/App/#taskvisible", + "/tB/Packages/VB/App/#threadid", + "/tB/Packages/VB/App/#title", + "/tB/Packages/VB/App/#unattendedapp", + "/tB/Packages/VB/CheckBox/", + "/tB/Packages/VB/CheckBox/#alignment", + "/tB/Packages/VB/CheckBox/#appearance", + "/tB/Packages/VB/CheckBox/#backcolor", + "/tB/Packages/VB/CheckBox/#caption", + "/tB/Packages/VB/CheckBox/#causesvalidation", + "/tB/Packages/VB/CheckBox/#click", + "/tB/Packages/VB/CheckBox/#controltype", + "/tB/Packages/VB/CheckBox/#datafield", + "/tB/Packages/VB/CheckBox/#datasource", + "/tB/Packages/VB/CheckBox/#disabledpicture", + "/tB/Packages/VB/CheckBox/#downpicture", + "/tB/Packages/VB/CheckBox/#drag", + "/tB/Packages/VB/CheckBox/#dragdrop", + "/tB/Packages/VB/CheckBox/#dragicon", + "/tB/Packages/VB/CheckBox/#dragmode", + "/tB/Packages/VB/CheckBox/#dragover", + "/tB/Packages/VB/CheckBox/#enabled", + "/tB/Packages/VB/CheckBox/#font", + "/tB/Packages/VB/CheckBox/#forecolor", + "/tB/Packages/VB/CheckBox/#gotfocus", + "/tB/Packages/VB/CheckBox/#height", + "/tB/Packages/VB/CheckBox/#helpcontextid", + "/tB/Packages/VB/CheckBox/#hwnd", + "/tB/Packages/VB/CheckBox/#index", + "/tB/Packages/VB/CheckBox/#keydown", + "/tB/Packages/VB/CheckBox/#keypress", + "/tB/Packages/VB/CheckBox/#keyup", + "/tB/Packages/VB/CheckBox/#left", + "/tB/Packages/VB/CheckBox/#lostfocus", + "/tB/Packages/VB/CheckBox/#maskcolor", + "/tB/Packages/VB/CheckBox/#mousedown", + "/tB/Packages/VB/CheckBox/#mouseicon", + "/tB/Packages/VB/CheckBox/#mousemove", + "/tB/Packages/VB/CheckBox/#mousepointer", + "/tB/Packages/VB/CheckBox/#mouseup", + "/tB/Packages/VB/CheckBox/#move", + "/tB/Packages/VB/CheckBox/#name", + "/tB/Packages/VB/CheckBox/#olecompletedrag", + "/tB/Packages/VB/CheckBox/#oledrag", + "/tB/Packages/VB/CheckBox/#oledragdrop", + "/tB/Packages/VB/CheckBox/#oledragover", + "/tB/Packages/VB/CheckBox/#oledropmode", + "/tB/Packages/VB/CheckBox/#olegivefeedback", + "/tB/Packages/VB/CheckBox/#olesetdata", + "/tB/Packages/VB/CheckBox/#olestartdrag", + "/tB/Packages/VB/CheckBox/#opacity", + "/tB/Packages/VB/CheckBox/#padding", + "/tB/Packages/VB/CheckBox/#parent", + "/tB/Packages/VB/CheckBox/#picture", + "/tB/Packages/VB/CheckBox/#picturealignment", + "/tB/Packages/VB/CheckBox/#picturedpiscaling", + "/tB/Packages/VB/CheckBox/#refresh", + "/tB/Packages/VB/CheckBox/#righttoleft", + "/tB/Packages/VB/CheckBox/#setfocus", + "/tB/Packages/VB/CheckBox/#showwhatsthis", + "/tB/Packages/VB/CheckBox/#style", + "/tB/Packages/VB/CheckBox/#tabindex", + "/tB/Packages/VB/CheckBox/#tabstop", + "/tB/Packages/VB/CheckBox/#tag", + "/tB/Packages/VB/CheckBox/#tooltiptext", + "/tB/Packages/VB/CheckBox/#top", + "/tB/Packages/VB/CheckBox/#transparencykey", + "/tB/Packages/VB/CheckBox/#usemaskcolor", + "/tB/Packages/VB/CheckBox/#validate", + "/tB/Packages/VB/CheckBox/#value", + "/tB/Packages/VB/CheckBox/#visible", + "/tB/Packages/VB/CheckBox/#visualstyles", + "/tB/Packages/VB/CheckBox/#whatsthishelpid", + "/tB/Packages/VB/CheckBox/#width", + "/tB/Packages/VB/CheckBox/#zorder", + "/tB/Packages/VB/CheckMark/", + "/tB/Packages/VB/CheckMark/#anchors", + "/tB/Packages/VB/CheckMark/#appearance", + "/tB/Packages/VB/CheckMark/#backcolor", + "/tB/Packages/VB/CheckMark/#backstyle", + "/tB/Packages/VB/CheckMark/#click", + "/tB/Packages/VB/CheckMark/#container", + "/tB/Packages/VB/CheckMark/#controltype", + "/tB/Packages/VB/CheckMark/#dblclick", + "/tB/Packages/VB/CheckMark/#dock", + "/tB/Packages/VB/CheckMark/#drag", + "/tB/Packages/VB/CheckMark/#dragdrop", + "/tB/Packages/VB/CheckMark/#dragicon", + "/tB/Packages/VB/CheckMark/#dragmode", + "/tB/Packages/VB/CheckMark/#dragover", + "/tB/Packages/VB/CheckMark/#enabled", + "/tB/Packages/VB/CheckMark/#height", + "/tB/Packages/VB/CheckMark/#index", + "/tB/Packages/VB/CheckMark/#left", + "/tB/Packages/VB/CheckMark/#mousedown", + "/tB/Packages/VB/CheckMark/#mouseicon", + "/tB/Packages/VB/CheckMark/#mousemove", + "/tB/Packages/VB/CheckMark/#mousepointer", + "/tB/Packages/VB/CheckMark/#mouseup", + "/tB/Packages/VB/CheckMark/#move", + "/tB/Packages/VB/CheckMark/#name", + "/tB/Packages/VB/CheckMark/#olecompletedrag", + "/tB/Packages/VB/CheckMark/#oledrag", + "/tB/Packages/VB/CheckMark/#oledragdrop", + "/tB/Packages/VB/CheckMark/#oledragover", + "/tB/Packages/VB/CheckMark/#olegivefeedback", + "/tB/Packages/VB/CheckMark/#olesetdata", + "/tB/Packages/VB/CheckMark/#olestartdrag", + "/tB/Packages/VB/CheckMark/#parent", + "/tB/Packages/VB/CheckMark/#refresh", + "/tB/Packages/VB/CheckMark/#showwhatsthis", + "/tB/Packages/VB/CheckMark/#tabindex", + "/tB/Packages/VB/CheckMark/#tag", + "/tB/Packages/VB/CheckMark/#tooltiptext", + "/tB/Packages/VB/CheckMark/#top", + "/tB/Packages/VB/CheckMark/#value", + "/tB/Packages/VB/CheckMark/#visible", + "/tB/Packages/VB/CheckMark/#visualstyles", + "/tB/Packages/VB/CheckMark/#whatsthishelpid", + "/tB/Packages/VB/CheckMark/#width", + "/tB/Packages/VB/CheckMark/#zorder", + "/tB/Packages/VB/Clipboard/", + "/tB/Packages/VB/Clipboard/#clear", + "/tB/Packages/VB/Clipboard/#getdata", + "/tB/Packages/VB/Clipboard/#getformat", + "/tB/Packages/VB/Clipboard/#gettext", + "/tB/Packages/VB/Clipboard/#setdata", + "/tB/Packages/VB/Clipboard/#settext", + "/tB/Packages/VB/ComboBox/", + "/tB/Packages/VB/ComboBox/#additem", + "/tB/Packages/VB/ComboBox/#appearance", + "/tB/Packages/VB/ComboBox/#backcolor", + "/tB/Packages/VB/ComboBox/#borderstyle", + "/tB/Packages/VB/ComboBox/#causesvalidation", + "/tB/Packages/VB/ComboBox/#change", + "/tB/Packages/VB/ComboBox/#clear", + "/tB/Packages/VB/ComboBox/#click", + "/tB/Packages/VB/ComboBox/#closeup", + "/tB/Packages/VB/ComboBox/#controltype", + "/tB/Packages/VB/ComboBox/#dblclick", + "/tB/Packages/VB/ComboBox/#drag", + "/tB/Packages/VB/ComboBox/#dragdrop", + "/tB/Packages/VB/ComboBox/#dragicon", + "/tB/Packages/VB/ComboBox/#dragmode", + "/tB/Packages/VB/ComboBox/#dragover", + "/tB/Packages/VB/ComboBox/#dropdown", + "/tB/Packages/VB/ComboBox/#enabled", + "/tB/Packages/VB/ComboBox/#font", + "/tB/Packages/VB/ComboBox/#forecolor", + "/tB/Packages/VB/ComboBox/#gotfocus", + "/tB/Packages/VB/ComboBox/#height", + "/tB/Packages/VB/ComboBox/#helpcontextid", + "/tB/Packages/VB/ComboBox/#hwnd", + "/tB/Packages/VB/ComboBox/#index", + "/tB/Packages/VB/ComboBox/#integralheight", + "/tB/Packages/VB/ComboBox/#itemdata", + "/tB/Packages/VB/ComboBox/#keydown", + "/tB/Packages/VB/ComboBox/#keypress", + "/tB/Packages/VB/ComboBox/#keyup", + "/tB/Packages/VB/ComboBox/#left", + "/tB/Packages/VB/ComboBox/#list", + "/tB/Packages/VB/ComboBox/#listcount", + "/tB/Packages/VB/ComboBox/#listindex", + "/tB/Packages/VB/ComboBox/#locked", + "/tB/Packages/VB/ComboBox/#lostfocus", + "/tB/Packages/VB/ComboBox/#maxdropdownitems", + "/tB/Packages/VB/ComboBox/#mouseicon", + "/tB/Packages/VB/ComboBox/#mousepointer", + "/tB/Packages/VB/ComboBox/#move", + "/tB/Packages/VB/ComboBox/#name", + "/tB/Packages/VB/ComboBox/#newindex", + "/tB/Packages/VB/ComboBox/#olecompletedrag", + "/tB/Packages/VB/ComboBox/#oledrag", + "/tB/Packages/VB/ComboBox/#oledragdrop", + "/tB/Packages/VB/ComboBox/#oledragmode", + "/tB/Packages/VB/ComboBox/#oledragover", + "/tB/Packages/VB/ComboBox/#oledropmode", + "/tB/Packages/VB/ComboBox/#olegivefeedback", + "/tB/Packages/VB/ComboBox/#olesetdata", + "/tB/Packages/VB/ComboBox/#olestartdrag", + "/tB/Packages/VB/ComboBox/#opacity", + "/tB/Packages/VB/ComboBox/#parent", + "/tB/Packages/VB/ComboBox/#refresh", + "/tB/Packages/VB/ComboBox/#removeitem", + "/tB/Packages/VB/ComboBox/#righttoleft", + "/tB/Packages/VB/ComboBox/#scroll", + "/tB/Packages/VB/ComboBox/#sellength", + "/tB/Packages/VB/ComboBox/#selstart", + "/tB/Packages/VB/ComboBox/#seltext", + "/tB/Packages/VB/ComboBox/#setfocus", + "/tB/Packages/VB/ComboBox/#showwhatsthis", + "/tB/Packages/VB/ComboBox/#sorted", + "/tB/Packages/VB/ComboBox/#style-1", + "/tB/Packages/VB/ComboBox/#tabindex", + "/tB/Packages/VB/ComboBox/#tabstop", + "/tB/Packages/VB/ComboBox/#tag", + "/tB/Packages/VB/ComboBox/#text", + "/tB/Packages/VB/ComboBox/#tooltiptext", + "/tB/Packages/VB/ComboBox/#top", + "/tB/Packages/VB/ComboBox/#topindex", + "/tB/Packages/VB/ComboBox/#transparencykey", + "/tB/Packages/VB/ComboBox/#validate", + "/tB/Packages/VB/ComboBox/#visible", + "/tB/Packages/VB/ComboBox/#visualstyles", + "/tB/Packages/VB/ComboBox/#whatsthishelpid", + "/tB/Packages/VB/ComboBox/#wheelscrollevent", + "/tB/Packages/VB/ComboBox/#width", + "/tB/Packages/VB/ComboBox/#zorder", + "/tB/Packages/VB/CommandButton/", + "/tB/Packages/VB/CommandButton/#appearance", + "/tB/Packages/VB/CommandButton/#backcolor", + "/tB/Packages/VB/CommandButton/#cancel", + "/tB/Packages/VB/CommandButton/#caption", + "/tB/Packages/VB/CommandButton/#causesvalidation", + "/tB/Packages/VB/CommandButton/#click", + "/tB/Packages/VB/CommandButton/#controltype", + "/tB/Packages/VB/CommandButton/#default", + "/tB/Packages/VB/CommandButton/#disabledpicture", + "/tB/Packages/VB/CommandButton/#downpicture", + "/tB/Packages/VB/CommandButton/#drag", + "/tB/Packages/VB/CommandButton/#dragdrop", + "/tB/Packages/VB/CommandButton/#dragicon", + "/tB/Packages/VB/CommandButton/#dragmode", + "/tB/Packages/VB/CommandButton/#dragover", + "/tB/Packages/VB/CommandButton/#enabled", + "/tB/Packages/VB/CommandButton/#font", + "/tB/Packages/VB/CommandButton/#forecolor", + "/tB/Packages/VB/CommandButton/#gotfocus", + "/tB/Packages/VB/CommandButton/#height", + "/tB/Packages/VB/CommandButton/#helpcontextid", + "/tB/Packages/VB/CommandButton/#hwnd", + "/tB/Packages/VB/CommandButton/#index", + "/tB/Packages/VB/CommandButton/#keydown", + "/tB/Packages/VB/CommandButton/#keypress", + "/tB/Packages/VB/CommandButton/#keyup", + "/tB/Packages/VB/CommandButton/#left", + "/tB/Packages/VB/CommandButton/#lostfocus", + "/tB/Packages/VB/CommandButton/#maskcolor", + "/tB/Packages/VB/CommandButton/#mousedown", + "/tB/Packages/VB/CommandButton/#mouseicon", + "/tB/Packages/VB/CommandButton/#mousemove", + "/tB/Packages/VB/CommandButton/#mousepointer", + "/tB/Packages/VB/CommandButton/#mouseup", + "/tB/Packages/VB/CommandButton/#move", + "/tB/Packages/VB/CommandButton/#name", + "/tB/Packages/VB/CommandButton/#olecompletedrag", + "/tB/Packages/VB/CommandButton/#oledrag", + "/tB/Packages/VB/CommandButton/#oledragdrop", + "/tB/Packages/VB/CommandButton/#oledragover", + "/tB/Packages/VB/CommandButton/#oledropmode", + "/tB/Packages/VB/CommandButton/#olegivefeedback", + "/tB/Packages/VB/CommandButton/#olesetdata", + "/tB/Packages/VB/CommandButton/#olestartdrag", + "/tB/Packages/VB/CommandButton/#opacity", + "/tB/Packages/VB/CommandButton/#padding", + "/tB/Packages/VB/CommandButton/#parent", + "/tB/Packages/VB/CommandButton/#picture", + "/tB/Packages/VB/CommandButton/#picturealignment", + "/tB/Packages/VB/CommandButton/#picturedpiscaling", + "/tB/Packages/VB/CommandButton/#refresh", + "/tB/Packages/VB/CommandButton/#righttoleft", + "/tB/Packages/VB/CommandButton/#setfocus", + "/tB/Packages/VB/CommandButton/#showwhatsthis", + "/tB/Packages/VB/CommandButton/#style", + "/tB/Packages/VB/CommandButton/#tabindex", + "/tB/Packages/VB/CommandButton/#tabstop", + "/tB/Packages/VB/CommandButton/#tag", + "/tB/Packages/VB/CommandButton/#tooltiptext", + "/tB/Packages/VB/CommandButton/#top", + "/tB/Packages/VB/CommandButton/#transparencykey", + "/tB/Packages/VB/CommandButton/#usemaskcolor", + "/tB/Packages/VB/CommandButton/#value", + "/tB/Packages/VB/CommandButton/#visible", + "/tB/Packages/VB/CommandButton/#visualstyles", + "/tB/Packages/VB/CommandButton/#whatsthishelpid", + "/tB/Packages/VB/CommandButton/#width", + "/tB/Packages/VB/CommandButton/#zorder", + "/tB/Packages/VB/Data/", + "/tB/Packages/VB/Data/#appearance", + "/tB/Packages/VB/Data/#backcolor", + "/tB/Packages/VB/Data/#bofaction", + "/tB/Packages/VB/Data/#caption", + "/tB/Packages/VB/Data/#causesvalidation", + "/tB/Packages/VB/Data/#connect", + "/tB/Packages/VB/Data/#controltype", + "/tB/Packages/VB/Data/#database", + "/tB/Packages/VB/Data/#databasename", + "/tB/Packages/VB/Data/#defaultcursortype", + "/tB/Packages/VB/Data/#defaulttype", + "/tB/Packages/VB/Data/#drag", + "/tB/Packages/VB/Data/#dragdrop", + "/tB/Packages/VB/Data/#dragicon", + "/tB/Packages/VB/Data/#dragmode", + "/tB/Packages/VB/Data/#dragover", + "/tB/Packages/VB/Data/#enabled", + "/tB/Packages/VB/Data/#eofaction", + "/tB/Packages/VB/Data/#error", + "/tB/Packages/VB/Data/#exclusive", + "/tB/Packages/VB/Data/#font", + "/tB/Packages/VB/Data/#forecolor", + "/tB/Packages/VB/Data/#height", + "/tB/Packages/VB/Data/#hwnd", + "/tB/Packages/VB/Data/#index", + "/tB/Packages/VB/Data/#initialize", + "/tB/Packages/VB/Data/#left", + "/tB/Packages/VB/Data/#mousedown", + "/tB/Packages/VB/Data/#mouseicon", + "/tB/Packages/VB/Data/#mousemove", + "/tB/Packages/VB/Data/#mousepointer", + "/tB/Packages/VB/Data/#mouseup", + "/tB/Packages/VB/Data/#mousewheel", + "/tB/Packages/VB/Data/#move", + "/tB/Packages/VB/Data/#name", + "/tB/Packages/VB/Data/#negotiate", + "/tB/Packages/VB/Data/#olecompletedrag", + "/tB/Packages/VB/Data/#oledrag", + "/tB/Packages/VB/Data/#oledragdrop", + "/tB/Packages/VB/Data/#oledragover", + "/tB/Packages/VB/Data/#oledropmode", + "/tB/Packages/VB/Data/#olegivefeedback", + "/tB/Packages/VB/Data/#olesetdata", + "/tB/Packages/VB/Data/#olestartdrag", + "/tB/Packages/VB/Data/#options", + "/tB/Packages/VB/Data/#parent", + "/tB/Packages/VB/Data/#readonly", + "/tB/Packages/VB/Data/#recordset", + "/tB/Packages/VB/Data/#recordsettype", + "/tB/Packages/VB/Data/#recordsource", + "/tB/Packages/VB/Data/#refresh", + "/tB/Packages/VB/Data/#reposition", + "/tB/Packages/VB/Data/#resize", + "/tB/Packages/VB/Data/#righttoleft", + "/tB/Packages/VB/Data/#setfocus", + "/tB/Packages/VB/Data/#showwhatsthis", + "/tB/Packages/VB/Data/#tabindex", + "/tB/Packages/VB/Data/#tabstop", + "/tB/Packages/VB/Data/#tag", + "/tB/Packages/VB/Data/#tooltiptext", + "/tB/Packages/VB/Data/#top", + "/tB/Packages/VB/Data/#updatecontrols", + "/tB/Packages/VB/Data/#updaterecord", + "/tB/Packages/VB/Data/#validate", + "/tB/Packages/VB/Data/#visible", + "/tB/Packages/VB/Data/#visualstyles", + "/tB/Packages/VB/Data/#whatsthishelpid", + "/tB/Packages/VB/Data/#width", + "/tB/Packages/VB/Data/#zorder", + "/tB/Packages/VB/DirListBox/", + "/tB/Packages/VB/DirListBox/#appearance", + "/tB/Packages/VB/DirListBox/#backcolor", + "/tB/Packages/VB/DirListBox/#borderstyle", + "/tB/Packages/VB/DirListBox/#causesvalidation", + "/tB/Packages/VB/DirListBox/#change", + "/tB/Packages/VB/DirListBox/#click", + "/tB/Packages/VB/DirListBox/#controltype", + "/tB/Packages/VB/DirListBox/#drag", + "/tB/Packages/VB/DirListBox/#dragdrop", + "/tB/Packages/VB/DirListBox/#dragicon", + "/tB/Packages/VB/DirListBox/#dragmode", + "/tB/Packages/VB/DirListBox/#dragover", + "/tB/Packages/VB/DirListBox/#enabled", + "/tB/Packages/VB/DirListBox/#font", + "/tB/Packages/VB/DirListBox/#forecolor", + "/tB/Packages/VB/DirListBox/#gotfocus", + "/tB/Packages/VB/DirListBox/#height", + "/tB/Packages/VB/DirListBox/#helpcontextid", + "/tB/Packages/VB/DirListBox/#hwnd", + "/tB/Packages/VB/DirListBox/#index", + "/tB/Packages/VB/DirListBox/#initialize", + "/tB/Packages/VB/DirListBox/#integralheight", + "/tB/Packages/VB/DirListBox/#keydown", + "/tB/Packages/VB/DirListBox/#keypress", + "/tB/Packages/VB/DirListBox/#keyup", + "/tB/Packages/VB/DirListBox/#left", + "/tB/Packages/VB/DirListBox/#list", + "/tB/Packages/VB/DirListBox/#listcount", + "/tB/Packages/VB/DirListBox/#listindex", + "/tB/Packages/VB/DirListBox/#lostfocus", + "/tB/Packages/VB/DirListBox/#mousedown", + "/tB/Packages/VB/DirListBox/#mouseicon", + "/tB/Packages/VB/DirListBox/#mousemove", + "/tB/Packages/VB/DirListBox/#mousepointer", + "/tB/Packages/VB/DirListBox/#mouseup", + "/tB/Packages/VB/DirListBox/#move", + "/tB/Packages/VB/DirListBox/#name", + "/tB/Packages/VB/DirListBox/#newindex", + "/tB/Packages/VB/DirListBox/#olecompletedrag", + "/tB/Packages/VB/DirListBox/#oledrag", + "/tB/Packages/VB/DirListBox/#oledragdrop", + "/tB/Packages/VB/DirListBox/#oledragmode", + "/tB/Packages/VB/DirListBox/#oledragover", + "/tB/Packages/VB/DirListBox/#oledropmode", + "/tB/Packages/VB/DirListBox/#olegivefeedback", + "/tB/Packages/VB/DirListBox/#olesetdata", + "/tB/Packages/VB/DirListBox/#olestartdrag", + "/tB/Packages/VB/DirListBox/#opacity", + "/tB/Packages/VB/DirListBox/#parent", + "/tB/Packages/VB/DirListBox/#path", + "/tB/Packages/VB/DirListBox/#pathselected", + "/tB/Packages/VB/DirListBox/#refresh", + "/tB/Packages/VB/DirListBox/#scroll", + "/tB/Packages/VB/DirListBox/#setfocus", + "/tB/Packages/VB/DirListBox/#showwhatsthis", + "/tB/Packages/VB/DirListBox/#tabindex", + "/tB/Packages/VB/DirListBox/#tabstop", + "/tB/Packages/VB/DirListBox/#tag", + "/tB/Packages/VB/DirListBox/#tooltiptext", + "/tB/Packages/VB/DirListBox/#top", + "/tB/Packages/VB/DirListBox/#topindex", + "/tB/Packages/VB/DirListBox/#transparencykey", + "/tB/Packages/VB/DirListBox/#validate", + "/tB/Packages/VB/DirListBox/#visible", + "/tB/Packages/VB/DirListBox/#visualstyles", + "/tB/Packages/VB/DirListBox/#whatsthishelpid", + "/tB/Packages/VB/DirListBox/#wheelscrollevent", + "/tB/Packages/VB/DirListBox/#width", + "/tB/Packages/VB/DirListBox/#zorder", + "/tB/Packages/VB/DriveListBox/", + "/tB/Packages/VB/DriveListBox/#appearance", + "/tB/Packages/VB/DriveListBox/#backcolor", + "/tB/Packages/VB/DriveListBox/#causesvalidation", + "/tB/Packages/VB/DriveListBox/#change", + "/tB/Packages/VB/DriveListBox/#closeup", + "/tB/Packages/VB/DriveListBox/#controltype", + "/tB/Packages/VB/DriveListBox/#drag", + "/tB/Packages/VB/DriveListBox/#dragdrop", + "/tB/Packages/VB/DriveListBox/#dragicon", + "/tB/Packages/VB/DriveListBox/#dragmode", + "/tB/Packages/VB/DriveListBox/#dragover", + "/tB/Packages/VB/DriveListBox/#drive", + "/tB/Packages/VB/DriveListBox/#dropdown", + "/tB/Packages/VB/DriveListBox/#enabled", + "/tB/Packages/VB/DriveListBox/#font", + "/tB/Packages/VB/DriveListBox/#forecolor", + "/tB/Packages/VB/DriveListBox/#gotfocus", + "/tB/Packages/VB/DriveListBox/#height", + "/tB/Packages/VB/DriveListBox/#helpcontextid", + "/tB/Packages/VB/DriveListBox/#hwnd", + "/tB/Packages/VB/DriveListBox/#index", + "/tB/Packages/VB/DriveListBox/#initialize", + "/tB/Packages/VB/DriveListBox/#keydown", + "/tB/Packages/VB/DriveListBox/#keypress", + "/tB/Packages/VB/DriveListBox/#keyup", + "/tB/Packages/VB/DriveListBox/#left", + "/tB/Packages/VB/DriveListBox/#list", + "/tB/Packages/VB/DriveListBox/#listcount", + "/tB/Packages/VB/DriveListBox/#listindex", + "/tB/Packages/VB/DriveListBox/#lostfocus", + "/tB/Packages/VB/DriveListBox/#mouseicon", + "/tB/Packages/VB/DriveListBox/#mousepointer", + "/tB/Packages/VB/DriveListBox/#move", + "/tB/Packages/VB/DriveListBox/#name", + "/tB/Packages/VB/DriveListBox/#newindex", + "/tB/Packages/VB/DriveListBox/#olecompletedrag", + "/tB/Packages/VB/DriveListBox/#oledrag", + "/tB/Packages/VB/DriveListBox/#oledragdrop", + "/tB/Packages/VB/DriveListBox/#oledragover", + "/tB/Packages/VB/DriveListBox/#oledropmode", + "/tB/Packages/VB/DriveListBox/#olegivefeedback", + "/tB/Packages/VB/DriveListBox/#olesetdata", + "/tB/Packages/VB/DriveListBox/#olestartdrag", + "/tB/Packages/VB/DriveListBox/#opacity", + "/tB/Packages/VB/DriveListBox/#parent", + "/tB/Packages/VB/DriveListBox/#refresh", + "/tB/Packages/VB/DriveListBox/#scroll", + "/tB/Packages/VB/DriveListBox/#setfocus", + "/tB/Packages/VB/DriveListBox/#showwhatsthis", + "/tB/Packages/VB/DriveListBox/#tabindex", + "/tB/Packages/VB/DriveListBox/#tabstop", + "/tB/Packages/VB/DriveListBox/#tag", + "/tB/Packages/VB/DriveListBox/#tooltiptext", + "/tB/Packages/VB/DriveListBox/#top", + "/tB/Packages/VB/DriveListBox/#topindex", + "/tB/Packages/VB/DriveListBox/#transparencykey", + "/tB/Packages/VB/DriveListBox/#validate", + "/tB/Packages/VB/DriveListBox/#visible", + "/tB/Packages/VB/DriveListBox/#visualstyles", + "/tB/Packages/VB/DriveListBox/#whatsthishelpid", + "/tB/Packages/VB/DriveListBox/#wheelscrollevent", + "/tB/Packages/VB/DriveListBox/#width", + "/tB/Packages/VB/DriveListBox/#zorder", + "/tB/Packages/VB/FileListBox/", + "/tB/Packages/VB/FileListBox/#appearance", + "/tB/Packages/VB/FileListBox/#archive", + "/tB/Packages/VB/FileListBox/#backcolor", + "/tB/Packages/VB/FileListBox/#borderstyle", + "/tB/Packages/VB/FileListBox/#causesvalidation", + "/tB/Packages/VB/FileListBox/#click", + "/tB/Packages/VB/FileListBox/#controltype", + "/tB/Packages/VB/FileListBox/#dblclick", + "/tB/Packages/VB/FileListBox/#drag", + "/tB/Packages/VB/FileListBox/#dragdrop", + "/tB/Packages/VB/FileListBox/#dragicon", + "/tB/Packages/VB/FileListBox/#dragmode", + "/tB/Packages/VB/FileListBox/#dragover", + "/tB/Packages/VB/FileListBox/#enabled", + "/tB/Packages/VB/FileListBox/#filename", + "/tB/Packages/VB/FileListBox/#font", + "/tB/Packages/VB/FileListBox/#forecolor", + "/tB/Packages/VB/FileListBox/#gotfocus", + "/tB/Packages/VB/FileListBox/#height", + "/tB/Packages/VB/FileListBox/#helpcontextid", + "/tB/Packages/VB/FileListBox/#hidden", + "/tB/Packages/VB/FileListBox/#hwnd", + "/tB/Packages/VB/FileListBox/#index", + "/tB/Packages/VB/FileListBox/#initialize", + "/tB/Packages/VB/FileListBox/#integralheight", + "/tB/Packages/VB/FileListBox/#keydown", + "/tB/Packages/VB/FileListBox/#keypress", + "/tB/Packages/VB/FileListBox/#keyup", + "/tB/Packages/VB/FileListBox/#left", + "/tB/Packages/VB/FileListBox/#list", + "/tB/Packages/VB/FileListBox/#listcount", + "/tB/Packages/VB/FileListBox/#listindex", + "/tB/Packages/VB/FileListBox/#lostfocus", + "/tB/Packages/VB/FileListBox/#mousedown", + "/tB/Packages/VB/FileListBox/#mouseicon", + "/tB/Packages/VB/FileListBox/#mousemove", + "/tB/Packages/VB/FileListBox/#mousepointer", + "/tB/Packages/VB/FileListBox/#mouseup", + "/tB/Packages/VB/FileListBox/#move", + "/tB/Packages/VB/FileListBox/#multiselect", + "/tB/Packages/VB/FileListBox/#name", + "/tB/Packages/VB/FileListBox/#normal", + "/tB/Packages/VB/FileListBox/#olecompletedrag", + "/tB/Packages/VB/FileListBox/#oledrag", + "/tB/Packages/VB/FileListBox/#oledragdrop", + "/tB/Packages/VB/FileListBox/#oledragmode", + "/tB/Packages/VB/FileListBox/#oledragover", + "/tB/Packages/VB/FileListBox/#oledropmode", + "/tB/Packages/VB/FileListBox/#olegivefeedback", + "/tB/Packages/VB/FileListBox/#olesetdata", + "/tB/Packages/VB/FileListBox/#olestartdrag", + "/tB/Packages/VB/FileListBox/#opacity", + "/tB/Packages/VB/FileListBox/#parent", + "/tB/Packages/VB/FileListBox/#path", + "/tB/Packages/VB/FileListBox/#pathchange", + "/tB/Packages/VB/FileListBox/#pathwithbackslash", + "/tB/Packages/VB/FileListBox/#pattern", + "/tB/Packages/VB/FileListBox/#patternchange", + "/tB/Packages/VB/FileListBox/#readonly", + "/tB/Packages/VB/FileListBox/#refresh", + "/tB/Packages/VB/FileListBox/#scroll", + "/tB/Packages/VB/FileListBox/#selcount", + "/tB/Packages/VB/FileListBox/#selected", + "/tB/Packages/VB/FileListBox/#selectedindices", + "/tB/Packages/VB/FileListBox/#setfocus", + "/tB/Packages/VB/FileListBox/#showwhatsthis", + "/tB/Packages/VB/FileListBox/#system", + "/tB/Packages/VB/FileListBox/#tabindex", + "/tB/Packages/VB/FileListBox/#tabstop", + "/tB/Packages/VB/FileListBox/#tag", + "/tB/Packages/VB/FileListBox/#tooltiptext", + "/tB/Packages/VB/FileListBox/#top", + "/tB/Packages/VB/FileListBox/#topindex", + "/tB/Packages/VB/FileListBox/#transparencykey", + "/tB/Packages/VB/FileListBox/#validate", + "/tB/Packages/VB/FileListBox/#visible", + "/tB/Packages/VB/FileListBox/#visualstyles", + "/tB/Packages/VB/FileListBox/#whatsthishelpid", + "/tB/Packages/VB/FileListBox/#wheelscrollevent", + "/tB/Packages/VB/FileListBox/#width", + "/tB/Packages/VB/FileListBox/#zorder", + "/tB/Packages/VB/Form/", + "/tB/Packages/VB/Form/#activate", + "/tB/Packages/VB/Form/#activecontrol", + "/tB/Packages/VB/Form/#alwaysshowkeyboardcues", + "/tB/Packages/VB/Form/#appearance", + "/tB/Packages/VB/Form/#autoredraw", + "/tB/Packages/VB/Form/#backcolor", + "/tB/Packages/VB/Form/#borderstyle", + "/tB/Packages/VB/Form/#caption", + "/tB/Packages/VB/Form/#circle", + "/tB/Packages/VB/Form/#click", + "/tB/Packages/VB/Form/#clipcontrols", + "/tB/Packages/VB/Form/#close", + "/tB/Packages/VB/Form/#cls", + "/tB/Packages/VB/Form/#controlbox", + "/tB/Packages/VB/Form/#controls", + "/tB/Packages/VB/Form/#controltype", + "/tB/Packages/VB/Form/#count", + "/tB/Packages/VB/Form/#currentx", + "/tB/Packages/VB/Form/#currenty", + "/tB/Packages/VB/Form/#dblclick", + "/tB/Packages/VB/Form/#deactivate", + "/tB/Packages/VB/Form/#dpichange", + "/tB/Packages/VB/Form/#dpiscalefactorx", + "/tB/Packages/VB/Form/#dpiscalefactory", + "/tB/Packages/VB/Form/#dragdrop", + "/tB/Packages/VB/Form/#dragover", + "/tB/Packages/VB/Form/#drawmode", + "/tB/Packages/VB/Form/#drawstyle", + "/tB/Packages/VB/Form/#drawwidth", + "/tB/Packages/VB/Form/#enabled", + "/tB/Packages/VB/Form/#fillcolor", + "/tB/Packages/VB/Form/#fillstyle", + "/tB/Packages/VB/Form/#font", + "/tB/Packages/VB/Form/#fonttransparent", + "/tB/Packages/VB/Form/#forecolor", + "/tB/Packages/VB/Form/#gotfocus", + "/tB/Packages/VB/Form/#hasdc", + "/tB/Packages/VB/Form/#hdc", + "/tB/Packages/VB/Form/#height", + "/tB/Packages/VB/Form/#helpcontextid", + "/tB/Packages/VB/Form/#hide", + "/tB/Packages/VB/Form/#hwnd", + "/tB/Packages/VB/Form/#icon", + "/tB/Packages/VB/Form/#image", + "/tB/Packages/VB/Form/#initialize", + "/tB/Packages/VB/Form/#keydown", + "/tB/Packages/VB/Form/#keypress", + "/tB/Packages/VB/Form/#keypreview", + "/tB/Packages/VB/Form/#keyup", + "/tB/Packages/VB/Form/#left", + "/tB/Packages/VB/Form/#line", + "/tB/Packages/VB/Form/#linkclose", + "/tB/Packages/VB/Form/#linkerror", + "/tB/Packages/VB/Form/#linkexecute", + "/tB/Packages/VB/Form/#linkmode", + "/tB/Packages/VB/Form/#linkopen", + "/tB/Packages/VB/Form/#linktopic", + "/tB/Packages/VB/Form/#load", + "/tB/Packages/VB/Form/#lostfocus", + "/tB/Packages/VB/Form/#maxbutton", + "/tB/Packages/VB/Form/#maxheight", + "/tB/Packages/VB/Form/#maxwidth", + "/tB/Packages/VB/Form/#mdichild", + "/tB/Packages/VB/Form/#minbutton", + "/tB/Packages/VB/Form/#minheight", + "/tB/Packages/VB/Form/#minwidth", + "/tB/Packages/VB/Form/#mousedown", + "/tB/Packages/VB/Form/#mouseicon", + "/tB/Packages/VB/Form/#mousemove", + "/tB/Packages/VB/Form/#mousepointer", + "/tB/Packages/VB/Form/#mouseup", + "/tB/Packages/VB/Form/#mousewheel", + "/tB/Packages/VB/Form/#move", + "/tB/Packages/VB/Form/#moveable", + "/tB/Packages/VB/Form/#name", + "/tB/Packages/VB/Form/#negotiatemenus", + "/tB/Packages/VB/Form/#olecompletedrag", + "/tB/Packages/VB/Form/#oledrag", + "/tB/Packages/VB/Form/#oledragdrop", + "/tB/Packages/VB/Form/#oledragover", + "/tB/Packages/VB/Form/#oledropmode", + "/tB/Packages/VB/Form/#olegivefeedback", + "/tB/Packages/VB/Form/#olesetdata", + "/tB/Packages/VB/Form/#olestartdrag", + "/tB/Packages/VB/Form/#opacity", + "/tB/Packages/VB/Form/#paint", + "/tB/Packages/VB/Form/#paintpicture", + "/tB/Packages/VB/Form/#palette", + "/tB/Packages/VB/Form/#palettemode", + "/tB/Packages/VB/Form/#picture", + "/tB/Packages/VB/Form/#picturedpiscaling", + "/tB/Packages/VB/Form/#point", + "/tB/Packages/VB/Form/#popupmenu", + "/tB/Packages/VB/Form/#print", + "/tB/Packages/VB/Form/#printform", + "/tB/Packages/VB/Form/#pset", + "/tB/Packages/VB/Form/#queryunload", + "/tB/Packages/VB/Form/#refresh", + "/tB/Packages/VB/Form/#resize", + "/tB/Packages/VB/Form/#righttoleft", + "/tB/Packages/VB/Form/#scale", + "/tB/Packages/VB/Form/#scaleheight", + "/tB/Packages/VB/Form/#scaleleft", + "/tB/Packages/VB/Form/#scalemode", + "/tB/Packages/VB/Form/#scaletop", + "/tB/Packages/VB/Form/#scalewidth", + "/tB/Packages/VB/Form/#scalex", + "/tB/Packages/VB/Form/#scaley", + "/tB/Packages/VB/Form/#setfocus", + "/tB/Packages/VB/Form/#show", + "/tB/Packages/VB/Form/#showintaskbar", + "/tB/Packages/VB/Form/#startupposition", + "/tB/Packages/VB/Form/#tabfocusautoselect", + "/tB/Packages/VB/Form/#tag", + "/tB/Packages/VB/Form/#terminate", + "/tB/Packages/VB/Form/#textheight", + "/tB/Packages/VB/Form/#textwidth", + "/tB/Packages/VB/Form/#top", + "/tB/Packages/VB/Form/#topmost", + "/tB/Packages/VB/Form/#transparencykey", + "/tB/Packages/VB/Form/#unload", + "/tB/Packages/VB/Form/#validatecontrols", + "/tB/Packages/VB/Form/#visible", + "/tB/Packages/VB/Form/#whatsthisbutton", + "/tB/Packages/VB/Form/#whatsthishelp", + "/tB/Packages/VB/Form/#whatsthismode", + "/tB/Packages/VB/Form/#width", + "/tB/Packages/VB/Form/#windowstate", + "/tB/Packages/VB/Form/#zorder", + "/tB/Packages/VB/Frame/", + "/tB/Packages/VB/Frame/#anchors", + "/tB/Packages/VB/Frame/#appearance", + "/tB/Packages/VB/Frame/#backcolor", + "/tB/Packages/VB/Frame/#borderstyle", + "/tB/Packages/VB/Frame/#caption", + "/tB/Packages/VB/Frame/#click", + "/tB/Packages/VB/Frame/#clipcontrols", + "/tB/Packages/VB/Frame/#container", + "/tB/Packages/VB/Frame/#controltype", + "/tB/Packages/VB/Frame/#dblclick", + "/tB/Packages/VB/Frame/#dock", + "/tB/Packages/VB/Frame/#drag", + "/tB/Packages/VB/Frame/#dragdrop", + "/tB/Packages/VB/Frame/#dragicon", + "/tB/Packages/VB/Frame/#dragmode", + "/tB/Packages/VB/Frame/#dragover", + "/tB/Packages/VB/Frame/#enabled", + "/tB/Packages/VB/Frame/#font", + "/tB/Packages/VB/Frame/#fontbold", + "/tB/Packages/VB/Frame/#fontitalic", + "/tB/Packages/VB/Frame/#fontname", + "/tB/Packages/VB/Frame/#fontsize", + "/tB/Packages/VB/Frame/#fontstrikethru", + "/tB/Packages/VB/Frame/#fontunderline", + "/tB/Packages/VB/Frame/#forecolor", + "/tB/Packages/VB/Frame/#height", + "/tB/Packages/VB/Frame/#helpcontextid", + "/tB/Packages/VB/Frame/#hwnd", + "/tB/Packages/VB/Frame/#index", + "/tB/Packages/VB/Frame/#initialize", + "/tB/Packages/VB/Frame/#left", + "/tB/Packages/VB/Frame/#mousedown", + "/tB/Packages/VB/Frame/#mouseicon", + "/tB/Packages/VB/Frame/#mousemove", + "/tB/Packages/VB/Frame/#mousepointer", + "/tB/Packages/VB/Frame/#mouseup", + "/tB/Packages/VB/Frame/#mousewheel", + "/tB/Packages/VB/Frame/#move", + "/tB/Packages/VB/Frame/#multiframeposition", + "/tB/Packages/VB/Frame/#multiframesize", + "/tB/Packages/VB/Frame/#name", + "/tB/Packages/VB/Frame/#olecompletedrag", + "/tB/Packages/VB/Frame/#oledrag", + "/tB/Packages/VB/Frame/#oledragdrop", + "/tB/Packages/VB/Frame/#oledragover", + "/tB/Packages/VB/Frame/#oledropmode", + "/tB/Packages/VB/Frame/#olegivefeedback", + "/tB/Packages/VB/Frame/#olesetdata", + "/tB/Packages/VB/Frame/#olestartdrag", + "/tB/Packages/VB/Frame/#opacity", + "/tB/Packages/VB/Frame/#originalmultiframeposition", + "/tB/Packages/VB/Frame/#parent", + "/tB/Packages/VB/Frame/#refresh", + "/tB/Packages/VB/Frame/#righttoleft", + "/tB/Packages/VB/Frame/#setfocus", + "/tB/Packages/VB/Frame/#showwhatsthis", + "/tB/Packages/VB/Frame/#tabindex", + "/tB/Packages/VB/Frame/#tag", + "/tB/Packages/VB/Frame/#tooltiptext", + "/tB/Packages/VB/Frame/#top", + "/tB/Packages/VB/Frame/#transparencykey", + "/tB/Packages/VB/Frame/#visible", + "/tB/Packages/VB/Frame/#visualstyles", + "/tB/Packages/VB/Frame/#whatsthishelpid", + "/tB/Packages/VB/Frame/#width", + "/tB/Packages/VB/Frame/#zorder", + "/tB/Packages/VB/Global/", + "/tB/Packages/VB/Global/#app", + "/tB/Packages/VB/Global/#clipboard", + "/tB/Packages/VB/Global/#forms", + "/tB/Packages/VB/Global/#load", + "/tB/Packages/VB/Global/#loadpicture", + "/tB/Packages/VB/Global/#loadresdata", + "/tB/Packages/VB/Global/#loadresidlist", + "/tB/Packages/VB/Global/#loadrespicture", + "/tB/Packages/VB/Global/#loadresstring", + "/tB/Packages/VB/Global/#printer", + "/tB/Packages/VB/Global/#printers", + "/tB/Packages/VB/Global/#screen", + "/tB/Packages/VB/Global/#unload", + "/tB/Packages/VB/HScrollBar/", + "/tB/Packages/VB/HScrollBar/#anchors", + "/tB/Packages/VB/HScrollBar/#causesvalidation", + "/tB/Packages/VB/HScrollBar/#change", + "/tB/Packages/VB/HScrollBar/#container", + "/tB/Packages/VB/HScrollBar/#controltype", + "/tB/Packages/VB/HScrollBar/#dock", + "/tB/Packages/VB/HScrollBar/#drag", + "/tB/Packages/VB/HScrollBar/#dragdrop", + "/tB/Packages/VB/HScrollBar/#dragicon", + "/tB/Packages/VB/HScrollBar/#dragmode", + "/tB/Packages/VB/HScrollBar/#dragover", + "/tB/Packages/VB/HScrollBar/#enabled", + "/tB/Packages/VB/HScrollBar/#gotfocus", + "/tB/Packages/VB/HScrollBar/#height", + "/tB/Packages/VB/HScrollBar/#helpcontextid", + "/tB/Packages/VB/HScrollBar/#hwnd", + "/tB/Packages/VB/HScrollBar/#index", + "/tB/Packages/VB/HScrollBar/#initialize", + "/tB/Packages/VB/HScrollBar/#keydown", + "/tB/Packages/VB/HScrollBar/#keypress", + "/tB/Packages/VB/HScrollBar/#keyup", + "/tB/Packages/VB/HScrollBar/#largechange", + "/tB/Packages/VB/HScrollBar/#left", + "/tB/Packages/VB/HScrollBar/#lostfocus", + "/tB/Packages/VB/HScrollBar/#max", + "/tB/Packages/VB/HScrollBar/#min", + "/tB/Packages/VB/HScrollBar/#mouseicon", + "/tB/Packages/VB/HScrollBar/#mousepointer", + "/tB/Packages/VB/HScrollBar/#move", + "/tB/Packages/VB/HScrollBar/#name", + "/tB/Packages/VB/HScrollBar/#opacity", + "/tB/Packages/VB/HScrollBar/#parent", + "/tB/Packages/VB/HScrollBar/#refresh", + "/tB/Packages/VB/HScrollBar/#righttoleft", + "/tB/Packages/VB/HScrollBar/#scroll", + "/tB/Packages/VB/HScrollBar/#setfocus", + "/tB/Packages/VB/HScrollBar/#showwhatsthis", + "/tB/Packages/VB/HScrollBar/#smallchange", + "/tB/Packages/VB/HScrollBar/#syncscrollbar", + "/tB/Packages/VB/HScrollBar/#tabindex", + "/tB/Packages/VB/HScrollBar/#tabstop", + "/tB/Packages/VB/HScrollBar/#tag", + "/tB/Packages/VB/HScrollBar/#top", + "/tB/Packages/VB/HScrollBar/#transparencykey", + "/tB/Packages/VB/HScrollBar/#validate", + "/tB/Packages/VB/HScrollBar/#value", + "/tB/Packages/VB/HScrollBar/#visible", + "/tB/Packages/VB/HScrollBar/#visualstyles", + "/tB/Packages/VB/HScrollBar/#whatsthishelpid", + "/tB/Packages/VB/HScrollBar/#width", + "/tB/Packages/VB/HScrollBar/#zorder", + "/tB/Packages/VB/IVBPrint", + "/tB/Packages/VB/Image/", + "/tB/Packages/VB/Image/#anchors", + "/tB/Packages/VB/Image/#angle", + "/tB/Packages/VB/Image/#appearance", + "/tB/Packages/VB/Image/#borderstyle", + "/tB/Packages/VB/Image/#click", + "/tB/Packages/VB/Image/#container", + "/tB/Packages/VB/Image/#controltype", + "/tB/Packages/VB/Image/#datachanged", + "/tB/Packages/VB/Image/#datafield", + "/tB/Packages/VB/Image/#dataformat", + "/tB/Packages/VB/Image/#datamember", + "/tB/Packages/VB/Image/#datasource", + "/tB/Packages/VB/Image/#dblclick", + "/tB/Packages/VB/Image/#dock", + "/tB/Packages/VB/Image/#drag", + "/tB/Packages/VB/Image/#dragdrop", + "/tB/Packages/VB/Image/#dragicon", + "/tB/Packages/VB/Image/#dragmode", + "/tB/Packages/VB/Image/#dragover", + "/tB/Packages/VB/Image/#enabled", + "/tB/Packages/VB/Image/#height", + "/tB/Packages/VB/Image/#index", + "/tB/Packages/VB/Image/#initialize", + "/tB/Packages/VB/Image/#left", + "/tB/Packages/VB/Image/#mousedown", + "/tB/Packages/VB/Image/#mouseicon", + "/tB/Packages/VB/Image/#mousemove", + "/tB/Packages/VB/Image/#mousepointer", + "/tB/Packages/VB/Image/#mouseup", + "/tB/Packages/VB/Image/#move", + "/tB/Packages/VB/Image/#name", + "/tB/Packages/VB/Image/#olecompletedrag", + "/tB/Packages/VB/Image/#oledrag", + "/tB/Packages/VB/Image/#oledragdrop", + "/tB/Packages/VB/Image/#oledragmode", + "/tB/Packages/VB/Image/#oledragover", + "/tB/Packages/VB/Image/#oledropmode", + "/tB/Packages/VB/Image/#olegivefeedback", + "/tB/Packages/VB/Image/#olesetdata", + "/tB/Packages/VB/Image/#olestartdrag", + "/tB/Packages/VB/Image/#parent", + "/tB/Packages/VB/Image/#picture", + "/tB/Packages/VB/Image/#picturedpiscaling", + "/tB/Packages/VB/Image/#refresh", + "/tB/Packages/VB/Image/#showwhatsthis", + "/tB/Packages/VB/Image/#stretch", + "/tB/Packages/VB/Image/#stretchmode", + "/tB/Packages/VB/Image/#tag", + "/tB/Packages/VB/Image/#tooltiptext", + "/tB/Packages/VB/Image/#top", + "/tB/Packages/VB/Image/#visible", + "/tB/Packages/VB/Image/#whatsthishelpid", + "/tB/Packages/VB/Image/#width", + "/tB/Packages/VB/Image/#zorder", + "/tB/Packages/VB/Label/", + "/tB/Packages/VB/Label/#alignment", + "/tB/Packages/VB/Label/#anchors", + "/tB/Packages/VB/Label/#angle", + "/tB/Packages/VB/Label/#appearance", + "/tB/Packages/VB/Label/#autosize", + "/tB/Packages/VB/Label/#backcolor", + "/tB/Packages/VB/Label/#backstyle", + "/tB/Packages/VB/Label/#bordercustomoptions", + "/tB/Packages/VB/Label/#borderstyle", + "/tB/Packages/VB/Label/#caption", + "/tB/Packages/VB/Label/#change", + "/tB/Packages/VB/Label/#click", + "/tB/Packages/VB/Label/#container", + "/tB/Packages/VB/Label/#controltype", + "/tB/Packages/VB/Label/#datachanged", + "/tB/Packages/VB/Label/#datafield", + "/tB/Packages/VB/Label/#datafieldaggregate", + "/tB/Packages/VB/Label/#datafieldaggregatevalue", + "/tB/Packages/VB/Label/#dataformat", + "/tB/Packages/VB/Label/#datamember", + "/tB/Packages/VB/Label/#datasource", + "/tB/Packages/VB/Label/#dblclick", + "/tB/Packages/VB/Label/#dock", + "/tB/Packages/VB/Label/#drag", + "/tB/Packages/VB/Label/#dragdrop", + "/tB/Packages/VB/Label/#dragicon", + "/tB/Packages/VB/Label/#dragmode", + "/tB/Packages/VB/Label/#dragover", + "/tB/Packages/VB/Label/#enabled", + "/tB/Packages/VB/Label/#font", + "/tB/Packages/VB/Label/#fontbold", + "/tB/Packages/VB/Label/#fontitalic", + "/tB/Packages/VB/Label/#fontname", + "/tB/Packages/VB/Label/#fontsize", + "/tB/Packages/VB/Label/#fontstrikethru", + "/tB/Packages/VB/Label/#fontunderline", + "/tB/Packages/VB/Label/#forecolor", + "/tB/Packages/VB/Label/#height", + "/tB/Packages/VB/Label/#index", + "/tB/Packages/VB/Label/#initialize", + "/tB/Packages/VB/Label/#left", + "/tB/Packages/VB/Label/#linespacing", + "/tB/Packages/VB/Label/#linkclose", + "/tB/Packages/VB/Label/#linkerror", + "/tB/Packages/VB/Label/#linkexecute", + "/tB/Packages/VB/Label/#linkitem", + "/tB/Packages/VB/Label/#linkmode", + "/tB/Packages/VB/Label/#linknotify", + "/tB/Packages/VB/Label/#linkopen", + "/tB/Packages/VB/Label/#linkpoke", + "/tB/Packages/VB/Label/#linkrequest", + "/tB/Packages/VB/Label/#linksend", + "/tB/Packages/VB/Label/#linktimeout", + "/tB/Packages/VB/Label/#linktopic", + "/tB/Packages/VB/Label/#mousedown", + "/tB/Packages/VB/Label/#mouseicon", + "/tB/Packages/VB/Label/#mousemove", + "/tB/Packages/VB/Label/#mousepointer", + "/tB/Packages/VB/Label/#mouseup", + "/tB/Packages/VB/Label/#move", + "/tB/Packages/VB/Label/#name", + "/tB/Packages/VB/Label/#olecompletedrag", + "/tB/Packages/VB/Label/#oledrag", + "/tB/Packages/VB/Label/#oledragdrop", + "/tB/Packages/VB/Label/#oledragover", + "/tB/Packages/VB/Label/#oledropmode", + "/tB/Packages/VB/Label/#olegivefeedback", + "/tB/Packages/VB/Label/#olesetdata", + "/tB/Packages/VB/Label/#olestartdrag", + "/tB/Packages/VB/Label/#parent", + "/tB/Packages/VB/Label/#refresh", + "/tB/Packages/VB/Label/#righttoleft", + "/tB/Packages/VB/Label/#showwhatsthis", + "/tB/Packages/VB/Label/#tabindex", + "/tB/Packages/VB/Label/#tag", + "/tB/Packages/VB/Label/#tooltiptext", + "/tB/Packages/VB/Label/#top", + "/tB/Packages/VB/Label/#usemnemonic", + "/tB/Packages/VB/Label/#verticalalignment", + "/tB/Packages/VB/Label/#visible", + "/tB/Packages/VB/Label/#whatsthishelpid", + "/tB/Packages/VB/Label/#width", + "/tB/Packages/VB/Label/#wordwrap", + "/tB/Packages/VB/Label/#zorder", + "/tB/Packages/VB/Line/", + "/tB/Packages/VB/Line/#bordercolor", + "/tB/Packages/VB/Line/#borderstyle", + "/tB/Packages/VB/Line/#borderwidth", + "/tB/Packages/VB/Line/#container", + "/tB/Packages/VB/Line/#controltype", + "/tB/Packages/VB/Line/#drawmode", + "/tB/Packages/VB/Line/#index", + "/tB/Packages/VB/Line/#initialize", + "/tB/Packages/VB/Line/#name", + "/tB/Packages/VB/Line/#parent", + "/tB/Packages/VB/Line/#tag", + "/tB/Packages/VB/Line/#visible", + "/tB/Packages/VB/Line/#x1", + "/tB/Packages/VB/Line/#x2", + "/tB/Packages/VB/Line/#y1", + "/tB/Packages/VB/Line/#y2", + "/tB/Packages/VB/Line/#zorder", + "/tB/Packages/VB/ListBox/", + "/tB/Packages/VB/ListBox/#additem", + "/tB/Packages/VB/ListBox/#anchors", + "/tB/Packages/VB/ListBox/#appearance", + "/tB/Packages/VB/ListBox/#backcolor", + "/tB/Packages/VB/ListBox/#borderstyle", + "/tB/Packages/VB/ListBox/#causesvalidation", + "/tB/Packages/VB/ListBox/#clear", + "/tB/Packages/VB/ListBox/#click", + "/tB/Packages/VB/ListBox/#columns", + "/tB/Packages/VB/ListBox/#container", + "/tB/Packages/VB/ListBox/#controltype", + "/tB/Packages/VB/ListBox/#datachanged", + "/tB/Packages/VB/ListBox/#datafield", + "/tB/Packages/VB/ListBox/#dataformat", + "/tB/Packages/VB/ListBox/#datamember", + "/tB/Packages/VB/ListBox/#datasource", + "/tB/Packages/VB/ListBox/#dblclick", + "/tB/Packages/VB/ListBox/#dock", + "/tB/Packages/VB/ListBox/#drag", + "/tB/Packages/VB/ListBox/#dragdrop", + "/tB/Packages/VB/ListBox/#dragicon", + "/tB/Packages/VB/ListBox/#dragmode", + "/tB/Packages/VB/ListBox/#dragover", + "/tB/Packages/VB/ListBox/#enabled", + "/tB/Packages/VB/ListBox/#font", + "/tB/Packages/VB/ListBox/#forecolor", + "/tB/Packages/VB/ListBox/#gotfocus", + "/tB/Packages/VB/ListBox/#height", + "/tB/Packages/VB/ListBox/#helpcontextid", + "/tB/Packages/VB/ListBox/#hwnd", + "/tB/Packages/VB/ListBox/#index", + "/tB/Packages/VB/ListBox/#initialize", + "/tB/Packages/VB/ListBox/#integralheight", + "/tB/Packages/VB/ListBox/#itemcheck", + "/tB/Packages/VB/ListBox/#itemdata", + "/tB/Packages/VB/ListBox/#keydown", + "/tB/Packages/VB/ListBox/#keypress", + "/tB/Packages/VB/ListBox/#keyup", + "/tB/Packages/VB/ListBox/#left", + "/tB/Packages/VB/ListBox/#list", + "/tB/Packages/VB/ListBox/#listcount", + "/tB/Packages/VB/ListBox/#listindex", + "/tB/Packages/VB/ListBox/#lostfocus", + "/tB/Packages/VB/ListBox/#maxcheckboxsize", + "/tB/Packages/VB/ListBox/#mousedown", + "/tB/Packages/VB/ListBox/#mouseicon", + "/tB/Packages/VB/ListBox/#mousemove", + "/tB/Packages/VB/ListBox/#mousepointer", + "/tB/Packages/VB/ListBox/#mouseup", + "/tB/Packages/VB/ListBox/#move", + "/tB/Packages/VB/ListBox/#multiselect", + "/tB/Packages/VB/ListBox/#name", + "/tB/Packages/VB/ListBox/#newindex", + "/tB/Packages/VB/ListBox/#olecompletedrag", + "/tB/Packages/VB/ListBox/#oledrag", + "/tB/Packages/VB/ListBox/#oledragdrop", + "/tB/Packages/VB/ListBox/#oledragmode", + "/tB/Packages/VB/ListBox/#oledragover", + "/tB/Packages/VB/ListBox/#oledropmode", + "/tB/Packages/VB/ListBox/#olegivefeedback", + "/tB/Packages/VB/ListBox/#olesetdata", + "/tB/Packages/VB/ListBox/#olestartdrag", + "/tB/Packages/VB/ListBox/#opacity", + "/tB/Packages/VB/ListBox/#parent", + "/tB/Packages/VB/ListBox/#refresh", + "/tB/Packages/VB/ListBox/#removeitem", + "/tB/Packages/VB/ListBox/#righttoleft", + "/tB/Packages/VB/ListBox/#scroll", + "/tB/Packages/VB/ListBox/#selcount", + "/tB/Packages/VB/ListBox/#selected", + "/tB/Packages/VB/ListBox/#selectedindices", + "/tB/Packages/VB/ListBox/#setfocus", + "/tB/Packages/VB/ListBox/#showwhatsthis", + "/tB/Packages/VB/ListBox/#sorted", + "/tB/Packages/VB/ListBox/#style-1", + "/tB/Packages/VB/ListBox/#tabindex", + "/tB/Packages/VB/ListBox/#tabstop", + "/tB/Packages/VB/ListBox/#tag", + "/tB/Packages/VB/ListBox/#text", + "/tB/Packages/VB/ListBox/#tooltiptext", + "/tB/Packages/VB/ListBox/#top", + "/tB/Packages/VB/ListBox/#topindex", + "/tB/Packages/VB/ListBox/#transparencykey", + "/tB/Packages/VB/ListBox/#usetabstops", + "/tB/Packages/VB/ListBox/#validate", + "/tB/Packages/VB/ListBox/#visible", + "/tB/Packages/VB/ListBox/#visualstyles", + "/tB/Packages/VB/ListBox/#whatsthishelpid", + "/tB/Packages/VB/ListBox/#wheelscrollevent", + "/tB/Packages/VB/ListBox/#width", + "/tB/Packages/VB/ListBox/#zorder", + "/tB/Packages/VB/MDIForm/", + "/tB/Packages/VB/MDIForm/#activate", + "/tB/Packages/VB/MDIForm/#activecontrol", + "/tB/Packages/VB/MDIForm/#activeform", + "/tB/Packages/VB/MDIForm/#alwaysshowkeyboardcues", + "/tB/Packages/VB/MDIForm/#appearance", + "/tB/Packages/VB/MDIForm/#arrange", + "/tB/Packages/VB/MDIForm/#autoshowchildren", + "/tB/Packages/VB/MDIForm/#backcolor", + "/tB/Packages/VB/MDIForm/#caption", + "/tB/Packages/VB/MDIForm/#click", + "/tB/Packages/VB/MDIForm/#close", + "/tB/Packages/VB/MDIForm/#controls", + "/tB/Packages/VB/MDIForm/#controltype", + "/tB/Packages/VB/MDIForm/#count", + "/tB/Packages/VB/MDIForm/#dblclick", + "/tB/Packages/VB/MDIForm/#deactivate", + "/tB/Packages/VB/MDIForm/#dpichange", + "/tB/Packages/VB/MDIForm/#dpiscalefactorx", + "/tB/Packages/VB/MDIForm/#dpiscalefactory", + "/tB/Packages/VB/MDIForm/#dragdrop", + "/tB/Packages/VB/MDIForm/#dragover", + "/tB/Packages/VB/MDIForm/#enabled", + "/tB/Packages/VB/MDIForm/#height", + "/tB/Packages/VB/MDIForm/#helpcontextid", + "/tB/Packages/VB/MDIForm/#hide", + "/tB/Packages/VB/MDIForm/#hwnd", + "/tB/Packages/VB/MDIForm/#icon", + "/tB/Packages/VB/MDIForm/#initialize", + "/tB/Packages/VB/MDIForm/#left", + "/tB/Packages/VB/MDIForm/#linkclose", + "/tB/Packages/VB/MDIForm/#linkerror", + "/tB/Packages/VB/MDIForm/#linkexecute", + "/tB/Packages/VB/MDIForm/#linkmode", + "/tB/Packages/VB/MDIForm/#linkopen", + "/tB/Packages/VB/MDIForm/#linktopic", + "/tB/Packages/VB/MDIForm/#load", + "/tB/Packages/VB/MDIForm/#maxheight", + "/tB/Packages/VB/MDIForm/#maxwidth", + "/tB/Packages/VB/MDIForm/#minheight", + "/tB/Packages/VB/MDIForm/#minwidth", + "/tB/Packages/VB/MDIForm/#mousedown", + "/tB/Packages/VB/MDIForm/#mouseicon", + "/tB/Packages/VB/MDIForm/#mousemove", + "/tB/Packages/VB/MDIForm/#mousepointer", + "/tB/Packages/VB/MDIForm/#mouseup", + "/tB/Packages/VB/MDIForm/#mousewheel", + "/tB/Packages/VB/MDIForm/#move", + "/tB/Packages/VB/MDIForm/#moveable", + "/tB/Packages/VB/MDIForm/#name", + "/tB/Packages/VB/MDIForm/#negotiatetoolbars", + "/tB/Packages/VB/MDIForm/#olecompletedrag", + "/tB/Packages/VB/MDIForm/#oledrag", + "/tB/Packages/VB/MDIForm/#oledragdrop", + "/tB/Packages/VB/MDIForm/#oledragover", + "/tB/Packages/VB/MDIForm/#oledropmode", + "/tB/Packages/VB/MDIForm/#olegivefeedback", + "/tB/Packages/VB/MDIForm/#olesetdata", + "/tB/Packages/VB/MDIForm/#olestartdrag", + "/tB/Packages/VB/MDIForm/#opacity", + "/tB/Packages/VB/MDIForm/#picture", + "/tB/Packages/VB/MDIForm/#picturedpiscaling", + "/tB/Packages/VB/MDIForm/#popupmenu", + "/tB/Packages/VB/MDIForm/#queryunload", + "/tB/Packages/VB/MDIForm/#resize", + "/tB/Packages/VB/MDIForm/#righttoleft", + "/tB/Packages/VB/MDIForm/#scaleheight", + "/tB/Packages/VB/MDIForm/#scalewidth", + "/tB/Packages/VB/MDIForm/#setfocus", + "/tB/Packages/VB/MDIForm/#show", + "/tB/Packages/VB/MDIForm/#startupposition", + "/tB/Packages/VB/MDIForm/#tabfocusautoselect", + "/tB/Packages/VB/MDIForm/#tag", + "/tB/Packages/VB/MDIForm/#terminate", + "/tB/Packages/VB/MDIForm/#top", + "/tB/Packages/VB/MDIForm/#topmost", + "/tB/Packages/VB/MDIForm/#transparencykey", + "/tB/Packages/VB/MDIForm/#unload", + "/tB/Packages/VB/MDIForm/#validatecontrols", + "/tB/Packages/VB/MDIForm/#visible", + "/tB/Packages/VB/MDIForm/#whatsthishelp", + "/tB/Packages/VB/MDIForm/#whatsthismode", + "/tB/Packages/VB/MDIForm/#width", + "/tB/Packages/VB/MDIForm/#windowstate", + "/tB/Packages/VB/MDIForm/#zorder", + "/tB/Packages/VB/Menu/", + "/tB/Packages/VB/Menu/#caption", + "/tB/Packages/VB/Menu/#checked", + "/tB/Packages/VB/Menu/#click", + "/tB/Packages/VB/Menu/#container", + "/tB/Packages/VB/Menu/#controltype", + "/tB/Packages/VB/Menu/#enabled", + "/tB/Packages/VB/Menu/#helpcontextid", + "/tB/Packages/VB/Menu/#iconsizex", + "/tB/Packages/VB/Menu/#iconsizey", + "/tB/Packages/VB/Menu/#index", + "/tB/Packages/VB/Menu/#name", + "/tB/Packages/VB/Menu/#negotiateposition", + "/tB/Packages/VB/Menu/#parent", + "/tB/Packages/VB/Menu/#picture", + "/tB/Packages/VB/Menu/#shortcut", + "/tB/Packages/VB/Menu/#shortcutid", + "/tB/Packages/VB/Menu/#tag", + "/tB/Packages/VB/Menu/#visible", + "/tB/Packages/VB/Menu/#windowlist", + "/tB/Packages/VB/MultiFrame/", + "/tB/Packages/VB/MultiFrame/#anchors", + "/tB/Packages/VB/MultiFrame/#backcolor", + "/tB/Packages/VB/MultiFrame/#container", + "/tB/Packages/VB/MultiFrame/#controltype", + "/tB/Packages/VB/MultiFrame/#direction", + "/tB/Packages/VB/MultiFrame/#dock", + "/tB/Packages/VB/MultiFrame/#framescount", + "/tB/Packages/VB/MultiFrame/#height", + "/tB/Packages/VB/MultiFrame/#hwnd", + "/tB/Packages/VB/MultiFrame/#index", + "/tB/Packages/VB/MultiFrame/#initialize", + "/tB/Packages/VB/MultiFrame/#left", + "/tB/Packages/VB/MultiFrame/#move", + "/tB/Packages/VB/MultiFrame/#name", + "/tB/Packages/VB/MultiFrame/#parent", + "/tB/Packages/VB/MultiFrame/#refresh", + "/tB/Packages/VB/MultiFrame/#tabindex", + "/tB/Packages/VB/MultiFrame/#tabstop", + "/tB/Packages/VB/MultiFrame/#tag", + "/tB/Packages/VB/MultiFrame/#top", + "/tB/Packages/VB/MultiFrame/#visible", + "/tB/Packages/VB/MultiFrame/#width", + "/tB/Packages/VB/MultiFrame/#zorder", + "/tB/Packages/VB/OLE/", + "/tB/Packages/VB/OLE/#action", + "/tB/Packages/VB/OLE/#anchors", + "/tB/Packages/VB/OLE/#appearance", + "/tB/Packages/VB/OLE/#appisrunning", + "/tB/Packages/VB/OLE/#autoactivate", + "/tB/Packages/VB/OLE/#autoverbmenu", + "/tB/Packages/VB/OLE/#backcolor", + "/tB/Packages/VB/OLE/#backstyle", + "/tB/Packages/VB/OLE/#borderstyle", + "/tB/Packages/VB/OLE/#causesvalidation", + "/tB/Packages/VB/OLE/#class", + "/tB/Packages/VB/OLE/#click", + "/tB/Packages/VB/OLE/#close", + "/tB/Packages/VB/OLE/#container", + "/tB/Packages/VB/OLE/#controltype", + "/tB/Packages/VB/OLE/#copy", + "/tB/Packages/VB/OLE/#createembed", + "/tB/Packages/VB/OLE/#createlink", + "/tB/Packages/VB/OLE/#data", + "/tB/Packages/VB/OLE/#datachanged", + "/tB/Packages/VB/OLE/#datafield", + "/tB/Packages/VB/OLE/#datasource", + "/tB/Packages/VB/OLE/#datatext", + "/tB/Packages/VB/OLE/#dblclick", + "/tB/Packages/VB/OLE/#delete", + "/tB/Packages/VB/OLE/#displaytype", + "/tB/Packages/VB/OLE/#dock", + "/tB/Packages/VB/OLE/#doverb", + "/tB/Packages/VB/OLE/#drag", + "/tB/Packages/VB/OLE/#dragdrop", + "/tB/Packages/VB/OLE/#dragicon", + "/tB/Packages/VB/OLE/#dragmode", + "/tB/Packages/VB/OLE/#dragover", + "/tB/Packages/VB/OLE/#enabled", + "/tB/Packages/VB/OLE/#fetchverbs", + "/tB/Packages/VB/OLE/#filenumber", + "/tB/Packages/VB/OLE/#format", + "/tB/Packages/VB/OLE/#gotfocus", + "/tB/Packages/VB/OLE/#height", + "/tB/Packages/VB/OLE/#helpcontextid", + "/tB/Packages/VB/OLE/#hostname", + "/tB/Packages/VB/OLE/#hwnd", + "/tB/Packages/VB/OLE/#index", + "/tB/Packages/VB/OLE/#initialize", + "/tB/Packages/VB/OLE/#insertobjdlg", + "/tB/Packages/VB/OLE/#keydown", + "/tB/Packages/VB/OLE/#keypress", + "/tB/Packages/VB/OLE/#keyup", + "/tB/Packages/VB/OLE/#left", + "/tB/Packages/VB/OLE/#lostfocus", + "/tB/Packages/VB/OLE/#lpoleobject", + "/tB/Packages/VB/OLE/#miscflags", + "/tB/Packages/VB/OLE/#mousedown", + "/tB/Packages/VB/OLE/#mouseicon", + "/tB/Packages/VB/OLE/#mousemove", + "/tB/Packages/VB/OLE/#mousepointer", + "/tB/Packages/VB/OLE/#mouseup", + "/tB/Packages/VB/OLE/#move", + "/tB/Packages/VB/OLE/#name", + "/tB/Packages/VB/OLE/#object", + "/tB/Packages/VB/OLE/#objectacceptformats", + "/tB/Packages/VB/OLE/#objectacceptformatscount", + "/tB/Packages/VB/OLE/#objectgetformats", + "/tB/Packages/VB/OLE/#objectgetformatscount", + "/tB/Packages/VB/OLE/#objectmove", + "/tB/Packages/VB/OLE/#objectverbflags", + "/tB/Packages/VB/OLE/#objectverbs", + "/tB/Packages/VB/OLE/#objectverbscount", + "/tB/Packages/VB/OLE/#oledropallowed", + "/tB/Packages/VB/OLE/#oletype", + "/tB/Packages/VB/OLE/#oletypeallowed", + "/tB/Packages/VB/OLE/#parent", + "/tB/Packages/VB/OLE/#paste", + "/tB/Packages/VB/OLE/#pasteok", + "/tB/Packages/VB/OLE/#pastespecialdlg", + "/tB/Packages/VB/OLE/#picture", + "/tB/Packages/VB/OLE/#readfromfile", + "/tB/Packages/VB/OLE/#resize", + "/tB/Packages/VB/OLE/#savetofile", + "/tB/Packages/VB/OLE/#savetoole1file", + "/tB/Packages/VB/OLE/#setfocus", + "/tB/Packages/VB/OLE/#showwhatsthis", + "/tB/Packages/VB/OLE/#sizemode", + "/tB/Packages/VB/OLE/#sourcedoc", + "/tB/Packages/VB/OLE/#sourceitem", + "/tB/Packages/VB/OLE/#tabindex", + "/tB/Packages/VB/OLE/#tabstop", + "/tB/Packages/VB/OLE/#tag", + "/tB/Packages/VB/OLE/#top", + "/tB/Packages/VB/OLE/#update", + "/tB/Packages/VB/OLE/#updated", + "/tB/Packages/VB/OLE/#updateoptions", + "/tB/Packages/VB/OLE/#validate", + "/tB/Packages/VB/OLE/#verb", + "/tB/Packages/VB/OLE/#visible", + "/tB/Packages/VB/OLE/#whatsthishelpid", + "/tB/Packages/VB/OLE/#width", + "/tB/Packages/VB/OLE/#zorder", + "/tB/Packages/VB/OptionButton/", + "/tB/Packages/VB/OptionButton/#alignment", + "/tB/Packages/VB/OptionButton/#anchors", + "/tB/Packages/VB/OptionButton/#appearance", + "/tB/Packages/VB/OptionButton/#backcolor", + "/tB/Packages/VB/OptionButton/#caption", + "/tB/Packages/VB/OptionButton/#causesvalidation", + "/tB/Packages/VB/OptionButton/#click", + "/tB/Packages/VB/OptionButton/#container", + "/tB/Packages/VB/OptionButton/#controltype", + "/tB/Packages/VB/OptionButton/#dblclick", + "/tB/Packages/VB/OptionButton/#disabledpicture", + "/tB/Packages/VB/OptionButton/#dock", + "/tB/Packages/VB/OptionButton/#downpicture", + "/tB/Packages/VB/OptionButton/#drag", + "/tB/Packages/VB/OptionButton/#dragdrop", + "/tB/Packages/VB/OptionButton/#dragicon", + "/tB/Packages/VB/OptionButton/#dragmode", + "/tB/Packages/VB/OptionButton/#dragover", + "/tB/Packages/VB/OptionButton/#enabled", + "/tB/Packages/VB/OptionButton/#font", + "/tB/Packages/VB/OptionButton/#forecolor", + "/tB/Packages/VB/OptionButton/#gotfocus", + "/tB/Packages/VB/OptionButton/#height", + "/tB/Packages/VB/OptionButton/#helpcontextid", + "/tB/Packages/VB/OptionButton/#hwnd", + "/tB/Packages/VB/OptionButton/#index", + "/tB/Packages/VB/OptionButton/#initialize", + "/tB/Packages/VB/OptionButton/#keydown", + "/tB/Packages/VB/OptionButton/#keypress", + "/tB/Packages/VB/OptionButton/#keyup", + "/tB/Packages/VB/OptionButton/#left", + "/tB/Packages/VB/OptionButton/#lostfocus", + "/tB/Packages/VB/OptionButton/#maskcolor", + "/tB/Packages/VB/OptionButton/#mousedown", + "/tB/Packages/VB/OptionButton/#mouseicon", + "/tB/Packages/VB/OptionButton/#mousemove", + "/tB/Packages/VB/OptionButton/#mousepointer", + "/tB/Packages/VB/OptionButton/#mouseup", + "/tB/Packages/VB/OptionButton/#move", + "/tB/Packages/VB/OptionButton/#name", + "/tB/Packages/VB/OptionButton/#olecompletedrag", + "/tB/Packages/VB/OptionButton/#oledrag", + "/tB/Packages/VB/OptionButton/#oledragdrop", + "/tB/Packages/VB/OptionButton/#oledragover", + "/tB/Packages/VB/OptionButton/#oledropmode", + "/tB/Packages/VB/OptionButton/#olegivefeedback", + "/tB/Packages/VB/OptionButton/#olesetdata", + "/tB/Packages/VB/OptionButton/#olestartdrag", + "/tB/Packages/VB/OptionButton/#opacity", + "/tB/Packages/VB/OptionButton/#padding", + "/tB/Packages/VB/OptionButton/#parent", + "/tB/Packages/VB/OptionButton/#picture", + "/tB/Packages/VB/OptionButton/#picturealignment", + "/tB/Packages/VB/OptionButton/#picturedpiscaling", + "/tB/Packages/VB/OptionButton/#refresh", + "/tB/Packages/VB/OptionButton/#righttoleft", + "/tB/Packages/VB/OptionButton/#setfocus", + "/tB/Packages/VB/OptionButton/#showwhatsthis", + "/tB/Packages/VB/OptionButton/#style", + "/tB/Packages/VB/OptionButton/#tabindex", + "/tB/Packages/VB/OptionButton/#tabstop", + "/tB/Packages/VB/OptionButton/#tag", + "/tB/Packages/VB/OptionButton/#tooltiptext", + "/tB/Packages/VB/OptionButton/#top", + "/tB/Packages/VB/OptionButton/#transparencykey", + "/tB/Packages/VB/OptionButton/#usemaskcolor", + "/tB/Packages/VB/OptionButton/#validate", + "/tB/Packages/VB/OptionButton/#value", + "/tB/Packages/VB/OptionButton/#visible", + "/tB/Packages/VB/OptionButton/#visualstyles", + "/tB/Packages/VB/OptionButton/#whatsthishelpid", + "/tB/Packages/VB/OptionButton/#width", + "/tB/Packages/VB/OptionButton/#zorder", + "/tB/Packages/VB/PictureBox/", + "/tB/Packages/VB/PictureBox/#align", + "/tB/Packages/VB/PictureBox/#anchors", + "/tB/Packages/VB/PictureBox/#appearance", + "/tB/Packages/VB/PictureBox/#autoredraw", + "/tB/Packages/VB/PictureBox/#autosize", + "/tB/Packages/VB/PictureBox/#backcolor", + "/tB/Packages/VB/PictureBox/#borderstyle", + "/tB/Packages/VB/PictureBox/#causesvalidation", + "/tB/Packages/VB/PictureBox/#change", + "/tB/Packages/VB/PictureBox/#circle", + "/tB/Packages/VB/PictureBox/#click", + "/tB/Packages/VB/PictureBox/#clipcontrols", + "/tB/Packages/VB/PictureBox/#cls", + "/tB/Packages/VB/PictureBox/#container", + "/tB/Packages/VB/PictureBox/#controltype", + "/tB/Packages/VB/PictureBox/#currentx", + "/tB/Packages/VB/PictureBox/#currenty", + "/tB/Packages/VB/PictureBox/#datachanged", + "/tB/Packages/VB/PictureBox/#datafield", + "/tB/Packages/VB/PictureBox/#dataformat", + "/tB/Packages/VB/PictureBox/#datamember", + "/tB/Packages/VB/PictureBox/#datasource", + "/tB/Packages/VB/PictureBox/#dblclick", + "/tB/Packages/VB/PictureBox/#dock", + "/tB/Packages/VB/PictureBox/#drag", + "/tB/Packages/VB/PictureBox/#dragdrop", + "/tB/Packages/VB/PictureBox/#dragicon", + "/tB/Packages/VB/PictureBox/#dragmode", + "/tB/Packages/VB/PictureBox/#dragover", + "/tB/Packages/VB/PictureBox/#drawmode", + "/tB/Packages/VB/PictureBox/#drawstyle", + "/tB/Packages/VB/PictureBox/#drawwidth", + "/tB/Packages/VB/PictureBox/#enabled", + "/tB/Packages/VB/PictureBox/#fillcolor", + "/tB/Packages/VB/PictureBox/#fillstyle", + "/tB/Packages/VB/PictureBox/#font", + "/tB/Packages/VB/PictureBox/#fontbold", + "/tB/Packages/VB/PictureBox/#fontitalic", + "/tB/Packages/VB/PictureBox/#fontname", + "/tB/Packages/VB/PictureBox/#fontsize", + "/tB/Packages/VB/PictureBox/#fontstrikethru", + "/tB/Packages/VB/PictureBox/#fonttransparent", + "/tB/Packages/VB/PictureBox/#fontunderline", + "/tB/Packages/VB/PictureBox/#forecolor", + "/tB/Packages/VB/PictureBox/#gotfocus", + "/tB/Packages/VB/PictureBox/#hasdc", + "/tB/Packages/VB/PictureBox/#hdc", + "/tB/Packages/VB/PictureBox/#height", + "/tB/Packages/VB/PictureBox/#helpcontextid", + "/tB/Packages/VB/PictureBox/#hwnd", + "/tB/Packages/VB/PictureBox/#image", + "/tB/Packages/VB/PictureBox/#index", + "/tB/Packages/VB/PictureBox/#initialize", + "/tB/Packages/VB/PictureBox/#keydown", + "/tB/Packages/VB/PictureBox/#keypress", + "/tB/Packages/VB/PictureBox/#keyup", + "/tB/Packages/VB/PictureBox/#left", + "/tB/Packages/VB/PictureBox/#line", + "/tB/Packages/VB/PictureBox/#linkclose", + "/tB/Packages/VB/PictureBox/#linkerror", + "/tB/Packages/VB/PictureBox/#linkexecute", + "/tB/Packages/VB/PictureBox/#linkitem", + "/tB/Packages/VB/PictureBox/#linkmode", + "/tB/Packages/VB/PictureBox/#linknotify", + "/tB/Packages/VB/PictureBox/#linkopen", + "/tB/Packages/VB/PictureBox/#linkpoke", + "/tB/Packages/VB/PictureBox/#linkrequest", + "/tB/Packages/VB/PictureBox/#linksend", + "/tB/Packages/VB/PictureBox/#linktimeout", + "/tB/Packages/VB/PictureBox/#linktopic", + "/tB/Packages/VB/PictureBox/#lostfocus", + "/tB/Packages/VB/PictureBox/#mousedown", + "/tB/Packages/VB/PictureBox/#mouseicon", + "/tB/Packages/VB/PictureBox/#mousemove", + "/tB/Packages/VB/PictureBox/#mousepointer", + "/tB/Packages/VB/PictureBox/#mouseup", + "/tB/Packages/VB/PictureBox/#mousewheel", + "/tB/Packages/VB/PictureBox/#move", + "/tB/Packages/VB/PictureBox/#name", + "/tB/Packages/VB/PictureBox/#negotiate", + "/tB/Packages/VB/PictureBox/#olecompletedrag", + "/tB/Packages/VB/PictureBox/#oledrag", + "/tB/Packages/VB/PictureBox/#oledragdrop", + "/tB/Packages/VB/PictureBox/#oledragmode", + "/tB/Packages/VB/PictureBox/#oledragover", + "/tB/Packages/VB/PictureBox/#olegivefeedback", + "/tB/Packages/VB/PictureBox/#olesetdata", + "/tB/Packages/VB/PictureBox/#olestartdrag", + "/tB/Packages/VB/PictureBox/#opacity", + "/tB/Packages/VB/PictureBox/#paint", + "/tB/Packages/VB/PictureBox/#paintpicture", + "/tB/Packages/VB/PictureBox/#parent", + "/tB/Packages/VB/PictureBox/#picture", + "/tB/Packages/VB/PictureBox/#picturedpiscaling", + "/tB/Packages/VB/PictureBox/#point", + "/tB/Packages/VB/PictureBox/#print", + "/tB/Packages/VB/PictureBox/#pset", + "/tB/Packages/VB/PictureBox/#refresh", + "/tB/Packages/VB/PictureBox/#resize", + "/tB/Packages/VB/PictureBox/#righttoleft", + "/tB/Packages/VB/PictureBox/#scale", + "/tB/Packages/VB/PictureBox/#scaleheight", + "/tB/Packages/VB/PictureBox/#scaleleft", + "/tB/Packages/VB/PictureBox/#scalemode", + "/tB/Packages/VB/PictureBox/#scaletop", + "/tB/Packages/VB/PictureBox/#scalewidth", + "/tB/Packages/VB/PictureBox/#scalex", + "/tB/Packages/VB/PictureBox/#scaley", + "/tB/Packages/VB/PictureBox/#setfocus", + "/tB/Packages/VB/PictureBox/#showwhatsthis", + "/tB/Packages/VB/PictureBox/#tabindex", + "/tB/Packages/VB/PictureBox/#tabstop", + "/tB/Packages/VB/PictureBox/#tag", + "/tB/Packages/VB/PictureBox/#textheight", + "/tB/Packages/VB/PictureBox/#textwidth", + "/tB/Packages/VB/PictureBox/#tooltiptext", + "/tB/Packages/VB/PictureBox/#top", + "/tB/Packages/VB/PictureBox/#transparencykey", + "/tB/Packages/VB/PictureBox/#validate", + "/tB/Packages/VB/PictureBox/#visible", + "/tB/Packages/VB/PictureBox/#whatsthishelpid", + "/tB/Packages/VB/PictureBox/#width", + "/tB/Packages/VB/PictureBox/#zorder", + "/tB/Packages/VB/Printer/", + "/tB/Packages/VB/Printer/#circle", + "/tB/Packages/VB/Printer/#colormode", + "/tB/Packages/VB/Printer/#copies", + "/tB/Packages/VB/Printer/#currentx", + "/tB/Packages/VB/Printer/#currenty", + "/tB/Packages/VB/Printer/#devicename", + "/tB/Packages/VB/Printer/#drawmode", + "/tB/Packages/VB/Printer/#drawstyle", + "/tB/Packages/VB/Printer/#drawwidth", + "/tB/Packages/VB/Printer/#drivername", + "/tB/Packages/VB/Printer/#duplex", + "/tB/Packages/VB/Printer/#enddoc", + "/tB/Packages/VB/Printer/#fillcolor", + "/tB/Packages/VB/Printer/#fillstyle", + "/tB/Packages/VB/Printer/#font", + "/tB/Packages/VB/Printer/#fontbold", + "/tB/Packages/VB/Printer/#fontcount", + "/tB/Packages/VB/Printer/#fontitalic", + "/tB/Packages/VB/Printer/#fontname", + "/tB/Packages/VB/Printer/#fonts", + "/tB/Packages/VB/Printer/#fontsize", + "/tB/Packages/VB/Printer/#fontstrikethru", + "/tB/Packages/VB/Printer/#fonttransparent", + "/tB/Packages/VB/Printer/#fontunderline", + "/tB/Packages/VB/Printer/#forecolor", + "/tB/Packages/VB/Printer/#hdc", + "/tB/Packages/VB/Printer/#height", + "/tB/Packages/VB/Printer/#killdoc", + "/tB/Packages/VB/Printer/#line", + "/tB/Packages/VB/Printer/#newpage", + "/tB/Packages/VB/Printer/#orientation", + "/tB/Packages/VB/Printer/#outputfile", + "/tB/Packages/VB/Printer/#page", + "/tB/Packages/VB/Printer/#paintpicture", + "/tB/Packages/VB/Printer/#paperbin", + "/tB/Packages/VB/Printer/#papersize", + "/tB/Packages/VB/Printer/#port", + "/tB/Packages/VB/Printer/#print", + "/tB/Packages/VB/Printer/#printquality", + "/tB/Packages/VB/Printer/#pset", + "/tB/Packages/VB/Printer/#righttoleft", + "/tB/Packages/VB/Printer/#scale", + "/tB/Packages/VB/Printer/#scaleheight", + "/tB/Packages/VB/Printer/#scaleleft", + "/tB/Packages/VB/Printer/#scalemode", + "/tB/Packages/VB/Printer/#scaletop", + "/tB/Packages/VB/Printer/#scalewidth", + "/tB/Packages/VB/Printer/#scalex", + "/tB/Packages/VB/Printer/#scaley", + "/tB/Packages/VB/Printer/#textheight", + "/tB/Packages/VB/Printer/#textwidth", + "/tB/Packages/VB/Printer/#trackdefault", + "/tB/Packages/VB/Printer/#twipsperpixelx", + "/tB/Packages/VB/Printer/#twipsperpixely", + "/tB/Packages/VB/Printer/#width", + "/tB/Packages/VB/Printer/#zoom", + "/tB/Packages/VB/Printers/", + "/tB/Packages/VB/Printers/#count", + "/tB/Packages/VB/Printers/#item", + "/tB/Packages/VB/PropertyPage/", + "/tB/Packages/VB/PropertyPage/#activecontrol", + "/tB/Packages/VB/PropertyPage/#appearance", + "/tB/Packages/VB/PropertyPage/#applychanges", + "/tB/Packages/VB/PropertyPage/#autoredraw", + "/tB/Packages/VB/PropertyPage/#backcolor", + "/tB/Packages/VB/PropertyPage/#caption", + "/tB/Packages/VB/PropertyPage/#changed", + "/tB/Packages/VB/PropertyPage/#circle", + "/tB/Packages/VB/PropertyPage/#click", + "/tB/Packages/VB/PropertyPage/#clipcontrols", + "/tB/Packages/VB/PropertyPage/#cls", + "/tB/Packages/VB/PropertyPage/#controls", + "/tB/Packages/VB/PropertyPage/#controltype", + "/tB/Packages/VB/PropertyPage/#count", + "/tB/Packages/VB/PropertyPage/#currentx", + "/tB/Packages/VB/PropertyPage/#currenty", + "/tB/Packages/VB/PropertyPage/#dblclick", + "/tB/Packages/VB/PropertyPage/#dpichange", + "/tB/Packages/VB/PropertyPage/#dpiscalefactorx", + "/tB/Packages/VB/PropertyPage/#dpiscalefactory", + "/tB/Packages/VB/PropertyPage/#dragdrop", + "/tB/Packages/VB/PropertyPage/#dragover", + "/tB/Packages/VB/PropertyPage/#drawmode", + "/tB/Packages/VB/PropertyPage/#drawstyle", + "/tB/Packages/VB/PropertyPage/#drawwidth", + "/tB/Packages/VB/PropertyPage/#editproperty", + "/tB/Packages/VB/PropertyPage/#fillcolor", + "/tB/Packages/VB/PropertyPage/#fillstyle", + "/tB/Packages/VB/PropertyPage/#font", + "/tB/Packages/VB/PropertyPage/#fontbold", + "/tB/Packages/VB/PropertyPage/#fontitalic", + "/tB/Packages/VB/PropertyPage/#fontname", + "/tB/Packages/VB/PropertyPage/#fontsize", + "/tB/Packages/VB/PropertyPage/#fontstrikethru", + "/tB/Packages/VB/PropertyPage/#fonttransparent", + "/tB/Packages/VB/PropertyPage/#fontunderline", + "/tB/Packages/VB/PropertyPage/#forecolor", + "/tB/Packages/VB/PropertyPage/#gotfocus", + "/tB/Packages/VB/PropertyPage/#hasdc", + "/tB/Packages/VB/PropertyPage/#hdc", + "/tB/Packages/VB/PropertyPage/#height", + "/tB/Packages/VB/PropertyPage/#helpcontextid", + "/tB/Packages/VB/PropertyPage/#hwnd", + "/tB/Packages/VB/PropertyPage/#initialize", + "/tB/Packages/VB/PropertyPage/#keydown", + "/tB/Packages/VB/PropertyPage/#keypress", + "/tB/Packages/VB/PropertyPage/#keypreview", + "/tB/Packages/VB/PropertyPage/#keyup", + "/tB/Packages/VB/PropertyPage/#left", + "/tB/Packages/VB/PropertyPage/#line", + "/tB/Packages/VB/PropertyPage/#lostfocus", + "/tB/Packages/VB/PropertyPage/#mousedown", + "/tB/Packages/VB/PropertyPage/#mouseicon", + "/tB/Packages/VB/PropertyPage/#mousemove", + "/tB/Packages/VB/PropertyPage/#mousepointer", + "/tB/Packages/VB/PropertyPage/#mouseup", + "/tB/Packages/VB/PropertyPage/#name", + "/tB/Packages/VB/PropertyPage/#olecompletedrag", + "/tB/Packages/VB/PropertyPage/#oledrag", + "/tB/Packages/VB/PropertyPage/#oledragdrop", + "/tB/Packages/VB/PropertyPage/#oledragover", + "/tB/Packages/VB/PropertyPage/#oledropmode", + "/tB/Packages/VB/PropertyPage/#olegivefeedback", + "/tB/Packages/VB/PropertyPage/#olesetdata", + "/tB/Packages/VB/PropertyPage/#olestartdrag", + "/tB/Packages/VB/PropertyPage/#paint", + "/tB/Packages/VB/PropertyPage/#paintpicture", + "/tB/Packages/VB/PropertyPage/#palette", + "/tB/Packages/VB/PropertyPage/#palettemode", + "/tB/Packages/VB/PropertyPage/#picture", + "/tB/Packages/VB/PropertyPage/#picturedpiscaling", + "/tB/Packages/VB/PropertyPage/#point", + "/tB/Packages/VB/PropertyPage/#print", + "/tB/Packages/VB/PropertyPage/#pset", + "/tB/Packages/VB/PropertyPage/#refresh", + "/tB/Packages/VB/PropertyPage/#righttoleft", + "/tB/Packages/VB/PropertyPage/#scale", + "/tB/Packages/VB/PropertyPage/#scaleheight", + "/tB/Packages/VB/PropertyPage/#scaleleft", + "/tB/Packages/VB/PropertyPage/#scalemode", + "/tB/Packages/VB/PropertyPage/#scaletop", + "/tB/Packages/VB/PropertyPage/#scalewidth", + "/tB/Packages/VB/PropertyPage/#scalex", + "/tB/Packages/VB/PropertyPage/#scaley", + "/tB/Packages/VB/PropertyPage/#selectedcontrols", + "/tB/Packages/VB/PropertyPage/#selectionchanged", + "/tB/Packages/VB/PropertyPage/#setfocus", + "/tB/Packages/VB/PropertyPage/#standardsize", + "/tB/Packages/VB/PropertyPage/#tag", + "/tB/Packages/VB/PropertyPage/#terminate", + "/tB/Packages/VB/PropertyPage/#textheight", + "/tB/Packages/VB/PropertyPage/#textwidth", + "/tB/Packages/VB/PropertyPage/#top", + "/tB/Packages/VB/PropertyPage/#validatecontrols", + "/tB/Packages/VB/PropertyPage/#width", + "/tB/Packages/VB/QRCode/", + "/tB/Packages/VB/QRCode/#anchors", + "/tB/Packages/VB/QRCode/#appearance", + "/tB/Packages/VB/QRCode/#borderstyle", + "/tB/Packages/VB/QRCode/#click", + "/tB/Packages/VB/QRCode/#container", + "/tB/Packages/VB/QRCode/#controltype", + "/tB/Packages/VB/QRCode/#datachanged", + "/tB/Packages/VB/QRCode/#datafield", + "/tB/Packages/VB/QRCode/#dataformat", + "/tB/Packages/VB/QRCode/#datamember", + "/tB/Packages/VB/QRCode/#datasource", + "/tB/Packages/VB/QRCode/#dblclick", + "/tB/Packages/VB/QRCode/#dock", + "/tB/Packages/VB/QRCode/#drag", + "/tB/Packages/VB/QRCode/#dragdrop", + "/tB/Packages/VB/QRCode/#dragicon", + "/tB/Packages/VB/QRCode/#dragmode", + "/tB/Packages/VB/QRCode/#dragover", + "/tB/Packages/VB/QRCode/#eccboost", + "/tB/Packages/VB/QRCode/#eccmode", + "/tB/Packages/VB/QRCode/#enabled", + "/tB/Packages/VB/QRCode/#forecolor", + "/tB/Packages/VB/QRCode/#height", + "/tB/Packages/VB/QRCode/#index", + "/tB/Packages/VB/QRCode/#initialize", + "/tB/Packages/VB/QRCode/#left", + "/tB/Packages/VB/QRCode/#masktype", + "/tB/Packages/VB/QRCode/#maxversion", + "/tB/Packages/VB/QRCode/#minversion", + "/tB/Packages/VB/QRCode/#modulesize", + "/tB/Packages/VB/QRCode/#mousedown", + "/tB/Packages/VB/QRCode/#mouseicon", + "/tB/Packages/VB/QRCode/#mousemove", + "/tB/Packages/VB/QRCode/#mousepointer", + "/tB/Packages/VB/QRCode/#mouseup", + "/tB/Packages/VB/QRCode/#move", + "/tB/Packages/VB/QRCode/#name", + "/tB/Packages/VB/QRCode/#olecompletedrag", + "/tB/Packages/VB/QRCode/#oledrag", + "/tB/Packages/VB/QRCode/#oledragdrop", + "/tB/Packages/VB/QRCode/#oledragmode", + "/tB/Packages/VB/QRCode/#oledragover", + "/tB/Packages/VB/QRCode/#oledropmode", + "/tB/Packages/VB/QRCode/#olegivefeedback", + "/tB/Packages/VB/QRCode/#olesetdata", + "/tB/Packages/VB/QRCode/#olestartdrag", + "/tB/Packages/VB/QRCode/#parent", + "/tB/Packages/VB/QRCode/#payload", + "/tB/Packages/VB/QRCode/#picture", + "/tB/Packages/VB/QRCode/#refresh", + "/tB/Packages/VB/QRCode/#showwhatsthis", + "/tB/Packages/VB/QRCode/#square", + "/tB/Packages/VB/QRCode/#squaremodules", + "/tB/Packages/VB/QRCode/#tag", + "/tB/Packages/VB/QRCode/#tooltiptext", + "/tB/Packages/VB/QRCode/#top", + "/tB/Packages/VB/QRCode/#visible", + "/tB/Packages/VB/QRCode/#whatsthishelpid", + "/tB/Packages/VB/QRCode/#width", + "/tB/Packages/VB/QRCode/#zorder", + "/tB/Packages/VB/Report/", + "/tB/Packages/VB/Report/#activate", + "/tB/Packages/VB/Report/#appearance", + "/tB/Packages/VB/Report/#autoredraw", + "/tB/Packages/VB/Report/#backcolor", + "/tB/Packages/VB/Report/#beforepaintsection", + "/tB/Packages/VB/Report/#borderstyle", + "/tB/Packages/VB/Report/#caption", + "/tB/Packages/VB/Report/#changepagesize", + "/tB/Packages/VB/Report/#circle", + "/tB/Packages/VB/Report/#click", + "/tB/Packages/VB/Report/#clipcontrols", + "/tB/Packages/VB/Report/#close", + "/tB/Packages/VB/Report/#cls", + "/tB/Packages/VB/Report/#controlbox", + "/tB/Packages/VB/Report/#controls", + "/tB/Packages/VB/Report/#controltype", + "/tB/Packages/VB/Report/#count", + "/tB/Packages/VB/Report/#currentx", + "/tB/Packages/VB/Report/#currenty", + "/tB/Packages/VB/Report/#dblclick", + "/tB/Packages/VB/Report/#deactivate", + "/tB/Packages/VB/Report/#dpichange", + "/tB/Packages/VB/Report/#dpiscalefactorx", + "/tB/Packages/VB/Report/#dpiscalefactory", + "/tB/Packages/VB/Report/#drawmode", + "/tB/Packages/VB/Report/#drawstyle", + "/tB/Packages/VB/Report/#drawwidth", + "/tB/Packages/VB/Report/#enabled", + "/tB/Packages/VB/Report/#fillcolor", + "/tB/Packages/VB/Report/#fillstyle", + "/tB/Packages/VB/Report/#font", + "/tB/Packages/VB/Report/#fonttransparent", + "/tB/Packages/VB/Report/#forecolor", + "/tB/Packages/VB/Report/#gotfocus", + "/tB/Packages/VB/Report/#hasdc", + "/tB/Packages/VB/Report/#hdc", + "/tB/Packages/VB/Report/#height", + "/tB/Packages/VB/Report/#helpcontextid", + "/tB/Packages/VB/Report/#hide", + "/tB/Packages/VB/Report/#hwnd", + "/tB/Packages/VB/Report/#icon", + "/tB/Packages/VB/Report/#image", + "/tB/Packages/VB/Report/#initialize", + "/tB/Packages/VB/Report/#keydown", + "/tB/Packages/VB/Report/#keypress", + "/tB/Packages/VB/Report/#keypreview", + "/tB/Packages/VB/Report/#keyup", + "/tB/Packages/VB/Report/#left", + "/tB/Packages/VB/Report/#line", + "/tB/Packages/VB/Report/#load", + "/tB/Packages/VB/Report/#lostfocus", + "/tB/Packages/VB/Report/#maxbutton", + "/tB/Packages/VB/Report/#maxheight", + "/tB/Packages/VB/Report/#maxwidth", + "/tB/Packages/VB/Report/#mdichild", + "/tB/Packages/VB/Report/#minbutton", + "/tB/Packages/VB/Report/#minheight", + "/tB/Packages/VB/Report/#minwidth", + "/tB/Packages/VB/Report/#mousedown", + "/tB/Packages/VB/Report/#mouseicon", + "/tB/Packages/VB/Report/#mousemove", + "/tB/Packages/VB/Report/#mousepointer", + "/tB/Packages/VB/Report/#mouseup", + "/tB/Packages/VB/Report/#move", + "/tB/Packages/VB/Report/#moveable", + "/tB/Packages/VB/Report/#name", + "/tB/Packages/VB/Report/#opacity", + "/tB/Packages/VB/Report/#page", + "/tB/Packages/VB/Report/#pages", + "/tB/Packages/VB/Report/#paintpicture", + "/tB/Packages/VB/Report/#papercolor", + "/tB/Packages/VB/Report/#picture", + "/tB/Packages/VB/Report/#picturedpiscaling", + "/tB/Packages/VB/Report/#pixelsbottommargin", + "/tB/Packages/VB/Report/#pixelsleftmargin", + "/tB/Packages/VB/Report/#pixelsreportheight", + "/tB/Packages/VB/Report/#pixelsreportwidth", + "/tB/Packages/VB/Report/#pixelsrightmargin", + "/tB/Packages/VB/Report/#pixelstopmargin", + "/tB/Packages/VB/Report/#print", + "/tB/Packages/VB/Report/#printreport", + "/tB/Packages/VB/Report/#pset", + "/tB/Packages/VB/Report/#queryunload", + "/tB/Packages/VB/Report/#recordnum", + "/tB/Packages/VB/Report/#recordset", + "/tB/Packages/VB/Report/#refresh", + "/tB/Packages/VB/Report/#resize", + "/tB/Packages/VB/Report/#righttoleft", + "/tB/Packages/VB/Report/#scale", + "/tB/Packages/VB/Report/#scaleheight", + "/tB/Packages/VB/Report/#scaleleft", + "/tB/Packages/VB/Report/#scalemode", + "/tB/Packages/VB/Report/#scaletop", + "/tB/Packages/VB/Report/#scalewidth", + "/tB/Packages/VB/Report/#scalex", + "/tB/Packages/VB/Report/#scaley", + "/tB/Packages/VB/Report/#setfocus", + "/tB/Packages/VB/Report/#show", + "/tB/Packages/VB/Report/#showintaskbar", + "/tB/Packages/VB/Report/#startupposition", + "/tB/Packages/VB/Report/#tag", + "/tB/Packages/VB/Report/#terminate", + "/tB/Packages/VB/Report/#textheight", + "/tB/Packages/VB/Report/#textwidth", + "/tB/Packages/VB/Report/#top", + "/tB/Packages/VB/Report/#topmost", + "/tB/Packages/VB/Report/#transparencykey", + "/tB/Packages/VB/Report/#unload", + "/tB/Packages/VB/Report/#visible", + "/tB/Packages/VB/Report/#width", + "/tB/Packages/VB/Report/#windowstate", + "/tB/Packages/VB/Report/#zoomautofit", + "/tB/Packages/VB/Report/#zoompercent", + "/tB/Packages/VB/Report/#zoomstep", + "/tB/Packages/VB/Report/#zorder", + "/tB/Packages/VB/Screen/", + "/tB/Packages/VB/Screen/#activecontrol", + "/tB/Packages/VB/Screen/#activeform", + "/tB/Packages/VB/Screen/#fontcount", + "/tB/Packages/VB/Screen/#fonts-1", + "/tB/Packages/VB/Screen/#height", + "/tB/Packages/VB/Screen/#mouseicon", + "/tB/Packages/VB/Screen/#mousepointer", + "/tB/Packages/VB/Screen/#twipsperpixelx", + "/tB/Packages/VB/Screen/#twipsperpixely", + "/tB/Packages/VB/Screen/#width", + "/tB/Packages/VB/Shape/", + "/tB/Packages/VB/Shape/#anchors", + "/tB/Packages/VB/Shape/#angle", + "/tB/Packages/VB/Shape/#backcolor", + "/tB/Packages/VB/Shape/#backstyle", + "/tB/Packages/VB/Shape/#bordercolor", + "/tB/Packages/VB/Shape/#borderstyle", + "/tB/Packages/VB/Shape/#borderwidth", + "/tB/Packages/VB/Shape/#container", + "/tB/Packages/VB/Shape/#controltype", + "/tB/Packages/VB/Shape/#dock", + "/tB/Packages/VB/Shape/#drawmode", + "/tB/Packages/VB/Shape/#fillcolor", + "/tB/Packages/VB/Shape/#fillcoloralt", + "/tB/Packages/VB/Shape/#fillstyle", + "/tB/Packages/VB/Shape/#height", + "/tB/Packages/VB/Shape/#index", + "/tB/Packages/VB/Shape/#initialize", + "/tB/Packages/VB/Shape/#left", + "/tB/Packages/VB/Shape/#move", + "/tB/Packages/VB/Shape/#name", + "/tB/Packages/VB/Shape/#parent", + "/tB/Packages/VB/Shape/#refresh", + "/tB/Packages/VB/Shape/#roundedcornersize", + "/tB/Packages/VB/Shape/#shape", + "/tB/Packages/VB/Shape/#tabindex", + "/tB/Packages/VB/Shape/#tabstop", + "/tB/Packages/VB/Shape/#tag", + "/tB/Packages/VB/Shape/#top", + "/tB/Packages/VB/Shape/#variationa", + "/tB/Packages/VB/Shape/#variationb", + "/tB/Packages/VB/Shape/#variationc", + "/tB/Packages/VB/Shape/#visible", + "/tB/Packages/VB/Shape/#width", + "/tB/Packages/VB/Shape/#zorder", + "/tB/Packages/VB/TextBox/", + "/tB/Packages/VB/TextBox/#alignment", + "/tB/Packages/VB/TextBox/#anchors", + "/tB/Packages/VB/TextBox/#appearance", + "/tB/Packages/VB/TextBox/#backcolor", + "/tB/Packages/VB/TextBox/#borderstyle", + "/tB/Packages/VB/TextBox/#causesvalidation", + "/tB/Packages/VB/TextBox/#change", + "/tB/Packages/VB/TextBox/#click", + "/tB/Packages/VB/TextBox/#container", + "/tB/Packages/VB/TextBox/#controltype", + "/tB/Packages/VB/TextBox/#datachanged", + "/tB/Packages/VB/TextBox/#datafield", + "/tB/Packages/VB/TextBox/#dataformat", + "/tB/Packages/VB/TextBox/#datamember", + "/tB/Packages/VB/TextBox/#datasource", + "/tB/Packages/VB/TextBox/#dblclick", + "/tB/Packages/VB/TextBox/#dock", + "/tB/Packages/VB/TextBox/#drag", + "/tB/Packages/VB/TextBox/#dragdrop", + "/tB/Packages/VB/TextBox/#dragicon", + "/tB/Packages/VB/TextBox/#dragmode", + "/tB/Packages/VB/TextBox/#dragover", + "/tB/Packages/VB/TextBox/#enabled", + "/tB/Packages/VB/TextBox/#font", + "/tB/Packages/VB/TextBox/#fontbold", + "/tB/Packages/VB/TextBox/#fontitalic", + "/tB/Packages/VB/TextBox/#fontname", + "/tB/Packages/VB/TextBox/#fontsize", + "/tB/Packages/VB/TextBox/#fontstrikethru", + "/tB/Packages/VB/TextBox/#fontunderline", + "/tB/Packages/VB/TextBox/#forecolor", + "/tB/Packages/VB/TextBox/#gotfocus", + "/tB/Packages/VB/TextBox/#height", + "/tB/Packages/VB/TextBox/#helpcontextid", + "/tB/Packages/VB/TextBox/#hideselection", + "/tB/Packages/VB/TextBox/#hwnd", + "/tB/Packages/VB/TextBox/#index", + "/tB/Packages/VB/TextBox/#initialize", + "/tB/Packages/VB/TextBox/#keydown", + "/tB/Packages/VB/TextBox/#keypress", + "/tB/Packages/VB/TextBox/#keyup", + "/tB/Packages/VB/TextBox/#left", + "/tB/Packages/VB/TextBox/#linkclose", + "/tB/Packages/VB/TextBox/#linkerror", + "/tB/Packages/VB/TextBox/#linkexecute", + "/tB/Packages/VB/TextBox/#linkitem", + "/tB/Packages/VB/TextBox/#linkmode", + "/tB/Packages/VB/TextBox/#linknotify", + "/tB/Packages/VB/TextBox/#linkopen", + "/tB/Packages/VB/TextBox/#linkpoke", + "/tB/Packages/VB/TextBox/#linkrequest", + "/tB/Packages/VB/TextBox/#linksend", + "/tB/Packages/VB/TextBox/#linktimeout", + "/tB/Packages/VB/TextBox/#linktopic", + "/tB/Packages/VB/TextBox/#locked", + "/tB/Packages/VB/TextBox/#lostfocus", + "/tB/Packages/VB/TextBox/#maxlength", + "/tB/Packages/VB/TextBox/#mousedown", + "/tB/Packages/VB/TextBox/#mouseicon", + "/tB/Packages/VB/TextBox/#mousemove", + "/tB/Packages/VB/TextBox/#mousepointer", + "/tB/Packages/VB/TextBox/#mouseup", + "/tB/Packages/VB/TextBox/#mousewheel", + "/tB/Packages/VB/TextBox/#move", + "/tB/Packages/VB/TextBox/#multiline", + "/tB/Packages/VB/TextBox/#name", + "/tB/Packages/VB/TextBox/#numbersonly", + "/tB/Packages/VB/TextBox/#olecompletedrag", + "/tB/Packages/VB/TextBox/#oledrag", + "/tB/Packages/VB/TextBox/#oledragdrop", + "/tB/Packages/VB/TextBox/#oledragmode", + "/tB/Packages/VB/TextBox/#oledragover", + "/tB/Packages/VB/TextBox/#oledropmode", + "/tB/Packages/VB/TextBox/#olegivefeedback", + "/tB/Packages/VB/TextBox/#olesetdata", + "/tB/Packages/VB/TextBox/#olestartdrag", + "/tB/Packages/VB/TextBox/#opacity", + "/tB/Packages/VB/TextBox/#parent", + "/tB/Packages/VB/TextBox/#passwordchar", + "/tB/Packages/VB/TextBox/#refresh", + "/tB/Packages/VB/TextBox/#righttoleft", + "/tB/Packages/VB/TextBox/#scroll", + "/tB/Packages/VB/TextBox/#scrollbars", + "/tB/Packages/VB/TextBox/#sellength", + "/tB/Packages/VB/TextBox/#selstart", + "/tB/Packages/VB/TextBox/#seltext", + "/tB/Packages/VB/TextBox/#setfocus", + "/tB/Packages/VB/TextBox/#showwhatsthis", + "/tB/Packages/VB/TextBox/#tabfocusautoselect", + "/tB/Packages/VB/TextBox/#tabindex", + "/tB/Packages/VB/TextBox/#tabstop", + "/tB/Packages/VB/TextBox/#tag", + "/tB/Packages/VB/TextBox/#text", + "/tB/Packages/VB/TextBox/#texthint", + "/tB/Packages/VB/TextBox/#texthintalways", + "/tB/Packages/VB/TextBox/#tooltiptext", + "/tB/Packages/VB/TextBox/#top", + "/tB/Packages/VB/TextBox/#transparencykey", + "/tB/Packages/VB/TextBox/#validate", + "/tB/Packages/VB/TextBox/#visible", + "/tB/Packages/VB/TextBox/#visualstyles", + "/tB/Packages/VB/TextBox/#whatsthishelpid", + "/tB/Packages/VB/TextBox/#wheelscrollevent", + "/tB/Packages/VB/TextBox/#width", + "/tB/Packages/VB/TextBox/#zorder", + "/tB/Packages/VB/Timer/", + "/tB/Packages/VB/Timer/#controltype", + "/tB/Packages/VB/Timer/#enabled", + "/tB/Packages/VB/Timer/#index", + "/tB/Packages/VB/Timer/#interval", + "/tB/Packages/VB/Timer/#left", + "/tB/Packages/VB/Timer/#name", + "/tB/Packages/VB/Timer/#parent", + "/tB/Packages/VB/Timer/#tag", + "/tB/Packages/VB/Timer/#timer", + "/tB/Packages/VB/Timer/#top", + "/tB/Packages/VB/UserControl/", + "/tB/Packages/VB/UserControl/#accesskeypress", + "/tB/Packages/VB/UserControl/#accesskeys", + "/tB/Packages/VB/UserControl/#activecontrol", + "/tB/Packages/VB/UserControl/#alignable", + "/tB/Packages/VB/UserControl/#ambient", + "/tB/Packages/VB/UserControl/#ambientchanged", + "/tB/Packages/VB/UserControl/#appearance", + "/tB/Packages/VB/UserControl/#asyncread", + "/tB/Packages/VB/UserControl/#asyncreadcomplete", + "/tB/Packages/VB/UserControl/#asyncreadprogress", + "/tB/Packages/VB/UserControl/#autoredraw", + "/tB/Packages/VB/UserControl/#backcolor", + "/tB/Packages/VB/UserControl/#backstyle", + "/tB/Packages/VB/UserControl/#borderstyle", + "/tB/Packages/VB/UserControl/#cancelasyncread", + "/tB/Packages/VB/UserControl/#cangetfocus", + "/tB/Packages/VB/UserControl/#canpropertychange", + "/tB/Packages/VB/UserControl/#circle", + "/tB/Packages/VB/UserControl/#click", + "/tB/Packages/VB/UserControl/#clipbehavior", + "/tB/Packages/VB/UserControl/#cls", + "/tB/Packages/VB/UserControl/#containedcontrols", + "/tB/Packages/VB/UserControl/#containerhwnd", + "/tB/Packages/VB/UserControl/#controlcontainer", + "/tB/Packages/VB/UserControl/#controls", + "/tB/Packages/VB/UserControl/#controltype", + "/tB/Packages/VB/UserControl/#count", + "/tB/Packages/VB/UserControl/#currentx", + "/tB/Packages/VB/UserControl/#currenty", + "/tB/Packages/VB/UserControl/#databindingbehavior", + "/tB/Packages/VB/UserControl/#datamemberchanged", + "/tB/Packages/VB/UserControl/#datamembers", + "/tB/Packages/VB/UserControl/#datasourcebehavior", + "/tB/Packages/VB/UserControl/#dblclick", + "/tB/Packages/VB/UserControl/#defaultcancel", + "/tB/Packages/VB/UserControl/#dpichange", + "/tB/Packages/VB/UserControl/#dpiscale", + "/tB/Packages/VB/UserControl/#dragdrop", + "/tB/Packages/VB/UserControl/#dragover", + "/tB/Packages/VB/UserControl/#drawmode", + "/tB/Packages/VB/UserControl/#drawstyle", + "/tB/Packages/VB/UserControl/#drawwidth", + "/tB/Packages/VB/UserControl/#editatdesigntime", + "/tB/Packages/VB/UserControl/#enabled", + "/tB/Packages/VB/UserControl/#enterfocus", + "/tB/Packages/VB/UserControl/#eventsfrozen", + "/tB/Packages/VB/UserControl/#exitfocus", + "/tB/Packages/VB/UserControl/#extender", + "/tB/Packages/VB/UserControl/#fillcolor", + "/tB/Packages/VB/UserControl/#fillstyle", + "/tB/Packages/VB/UserControl/#font", + "/tB/Packages/VB/UserControl/#fontbold", + "/tB/Packages/VB/UserControl/#fontitalic", + "/tB/Packages/VB/UserControl/#fontname", + "/tB/Packages/VB/UserControl/#fontsize", + "/tB/Packages/VB/UserControl/#fontstrikethru", + "/tB/Packages/VB/UserControl/#fonttransparent", + "/tB/Packages/VB/UserControl/#fontunderline", + "/tB/Packages/VB/UserControl/#forceresizetocontainer", + "/tB/Packages/VB/UserControl/#forecolor", + "/tB/Packages/VB/UserControl/#formdesignerid", + "/tB/Packages/VB/UserControl/#forwardfocus", + "/tB/Packages/VB/UserControl/#getdatamember", + "/tB/Packages/VB/UserControl/#gotfocus", + "/tB/Packages/VB/UserControl/#hasdc", + "/tB/Packages/VB/UserControl/#hdc", + "/tB/Packages/VB/UserControl/#height", + "/tB/Packages/VB/UserControl/#hide", + "/tB/Packages/VB/UserControl/#hitbehavior", + "/tB/Packages/VB/UserControl/#hittest", + "/tB/Packages/VB/UserControl/#hwnd", + "/tB/Packages/VB/UserControl/#hyperlink", + "/tB/Packages/VB/UserControl/#image", + "/tB/Packages/VB/UserControl/#index", + "/tB/Packages/VB/UserControl/#initialize", + "/tB/Packages/VB/UserControl/#initproperties", + "/tB/Packages/VB/UserControl/#internalenumerator", + "/tB/Packages/VB/UserControl/#invisibleatruntime", + "/tB/Packages/VB/UserControl/#keydown", + "/tB/Packages/VB/UserControl/#keypress", + "/tB/Packages/VB/UserControl/#keypreview", + "/tB/Packages/VB/UserControl/#keyup", + "/tB/Packages/VB/UserControl/#left", + "/tB/Packages/VB/UserControl/#line", + "/tB/Packages/VB/UserControl/#lostfocus", + "/tB/Packages/VB/UserControl/#maskcolor", + "/tB/Packages/VB/UserControl/#maskpicture", + "/tB/Packages/VB/UserControl/#mousedown", + "/tB/Packages/VB/UserControl/#mouseicon", + "/tB/Packages/VB/UserControl/#mousemove", + "/tB/Packages/VB/UserControl/#mousepointer", + "/tB/Packages/VB/UserControl/#mouseup", + "/tB/Packages/VB/UserControl/#mousewheel", + "/tB/Packages/VB/UserControl/#name", + "/tB/Packages/VB/UserControl/#olecompletedrag", + "/tB/Packages/VB/UserControl/#oledrag", + "/tB/Packages/VB/UserControl/#oledragdrop", + "/tB/Packages/VB/UserControl/#oledragover", + "/tB/Packages/VB/UserControl/#olegivefeedback", + "/tB/Packages/VB/UserControl/#olesetdata", + "/tB/Packages/VB/UserControl/#olestartdrag", + "/tB/Packages/VB/UserControl/#paint", + "/tB/Packages/VB/UserControl/#paintpicture", + "/tB/Packages/VB/UserControl/#palette", + "/tB/Packages/VB/UserControl/#palettemode", + "/tB/Packages/VB/UserControl/#parent", + "/tB/Packages/VB/UserControl/#parentcontrols", + "/tB/Packages/VB/UserControl/#picture", + "/tB/Packages/VB/UserControl/#picturedpiscaling", + "/tB/Packages/VB/UserControl/#point", + "/tB/Packages/VB/UserControl/#popupmenu", + "/tB/Packages/VB/UserControl/#prekeydown", + "/tB/Packages/VB/UserControl/#prekeyevents", + "/tB/Packages/VB/UserControl/#prekeyup", + "/tB/Packages/VB/UserControl/#print", + "/tB/Packages/VB/UserControl/#propertychanged", + "/tB/Packages/VB/UserControl/#propertypages", + "/tB/Packages/VB/UserControl/#pset", + "/tB/Packages/VB/UserControl/#public", + "/tB/Packages/VB/UserControl/#readproperties", + "/tB/Packages/VB/UserControl/#refresh", + "/tB/Packages/VB/UserControl/#resize", + "/tB/Packages/VB/UserControl/#righttoleft", + "/tB/Packages/VB/UserControl/#scale", + "/tB/Packages/VB/UserControl/#scaleheight", + "/tB/Packages/VB/UserControl/#scaleleft", + "/tB/Packages/VB/UserControl/#scalemode", + "/tB/Packages/VB/UserControl/#scaletop", + "/tB/Packages/VB/UserControl/#scalewidth", + "/tB/Packages/VB/UserControl/#scalex", + "/tB/Packages/VB/UserControl/#scaley", + "/tB/Packages/VB/UserControl/#setfocus", + "/tB/Packages/VB/UserControl/#show", + "/tB/Packages/VB/UserControl/#size", + "/tB/Packages/VB/UserControl/#tag", + "/tB/Packages/VB/UserControl/#terminate", + "/tB/Packages/VB/UserControl/#textheight", + "/tB/Packages/VB/UserControl/#textwidth", + "/tB/Packages/VB/UserControl/#top", + "/tB/Packages/VB/UserControl/#validatecontrols", + "/tB/Packages/VB/UserControl/#verbinvoked", + "/tB/Packages/VB/UserControl/#verbs", + "/tB/Packages/VB/UserControl/#width", + "/tB/Packages/VB/UserControl/#windowless", + "/tB/Packages/VB/UserControl/#writeproperties", + "/tB/Packages/VB/VScrollBar/", + "/tB/Packages/VB/VScrollBar/#anchors", + "/tB/Packages/VB/VScrollBar/#causesvalidation", + "/tB/Packages/VB/VScrollBar/#change", + "/tB/Packages/VB/VScrollBar/#container", + "/tB/Packages/VB/VScrollBar/#controltype", + "/tB/Packages/VB/VScrollBar/#dock", + "/tB/Packages/VB/VScrollBar/#drag", + "/tB/Packages/VB/VScrollBar/#dragdrop", + "/tB/Packages/VB/VScrollBar/#dragicon", + "/tB/Packages/VB/VScrollBar/#dragmode", + "/tB/Packages/VB/VScrollBar/#dragover", + "/tB/Packages/VB/VScrollBar/#enabled", + "/tB/Packages/VB/VScrollBar/#gotfocus", + "/tB/Packages/VB/VScrollBar/#height", + "/tB/Packages/VB/VScrollBar/#helpcontextid", + "/tB/Packages/VB/VScrollBar/#hwnd", + "/tB/Packages/VB/VScrollBar/#index", + "/tB/Packages/VB/VScrollBar/#initialize", + "/tB/Packages/VB/VScrollBar/#keydown", + "/tB/Packages/VB/VScrollBar/#keypress", + "/tB/Packages/VB/VScrollBar/#keyup", + "/tB/Packages/VB/VScrollBar/#largechange", + "/tB/Packages/VB/VScrollBar/#left", + "/tB/Packages/VB/VScrollBar/#lostfocus", + "/tB/Packages/VB/VScrollBar/#max", + "/tB/Packages/VB/VScrollBar/#min", + "/tB/Packages/VB/VScrollBar/#mouseicon", + "/tB/Packages/VB/VScrollBar/#mousepointer", + "/tB/Packages/VB/VScrollBar/#move", + "/tB/Packages/VB/VScrollBar/#name", + "/tB/Packages/VB/VScrollBar/#opacity", + "/tB/Packages/VB/VScrollBar/#parent", + "/tB/Packages/VB/VScrollBar/#refresh", + "/tB/Packages/VB/VScrollBar/#righttoleft", + "/tB/Packages/VB/VScrollBar/#scroll", + "/tB/Packages/VB/VScrollBar/#setfocus", + "/tB/Packages/VB/VScrollBar/#showwhatsthis", + "/tB/Packages/VB/VScrollBar/#smallchange", + "/tB/Packages/VB/VScrollBar/#syncscrollbar", + "/tB/Packages/VB/VScrollBar/#tabindex", + "/tB/Packages/VB/VScrollBar/#tabstop", + "/tB/Packages/VB/VScrollBar/#tag", + "/tB/Packages/VB/VScrollBar/#top", + "/tB/Packages/VB/VScrollBar/#transparencykey", + "/tB/Packages/VB/VScrollBar/#validate", + "/tB/Packages/VB/VScrollBar/#value", + "/tB/Packages/VB/VScrollBar/#visible", + "/tB/Packages/VB/VScrollBar/#visualstyles", + "/tB/Packages/VB/VScrollBar/#whatsthishelpid", + "/tB/Packages/VB/VScrollBar/#width", + "/tB/Packages/VB/VScrollBar/#zorder", + "/tB/Packages/VBA", + "/tB/Packages/VBRUN/", + "/tB/Packages/VBRUN/AmbientProperties/", + "/tB/Packages/VBRUN/AmbientProperties/BackColor", + "/tB/Packages/VBRUN/AmbientProperties/DisplayAsDefault", + "/tB/Packages/VBRUN/AmbientProperties/DisplayName", + "/tB/Packages/VBRUN/AmbientProperties/Font", + "/tB/Packages/VBRUN/AmbientProperties/ForeColor", + "/tB/Packages/VBRUN/AmbientProperties/LocaleID", + "/tB/Packages/VBRUN/AmbientProperties/MessageReflect", + "/tB/Packages/VBRUN/AmbientProperties/Palette", + "/tB/Packages/VBRUN/AmbientProperties/RightToLeft", + "/tB/Packages/VBRUN/AmbientProperties/ScaleUnits", + "/tB/Packages/VBRUN/AmbientProperties/ShowGrabHandles", + "/tB/Packages/VBRUN/AmbientProperties/ShowHatching", + "/tB/Packages/VBRUN/AmbientProperties/SupportsMnemonics", + "/tB/Packages/VBRUN/AmbientProperties/TextAlign", + "/tB/Packages/VBRUN/AmbientProperties/UIDead", + "/tB/Packages/VBRUN/AmbientProperties/UserMode", + "/tB/Packages/VBRUN/AsyncProperty/", + "/tB/Packages/VBRUN/AsyncProperty/AsyncType", + "/tB/Packages/VBRUN/AsyncProperty/BytesMax", + "/tB/Packages/VBRUN/AsyncProperty/BytesRead", + "/tB/Packages/VBRUN/AsyncProperty/PropertyName", + "/tB/Packages/VBRUN/AsyncProperty/Status", + "/tB/Packages/VBRUN/AsyncProperty/StatusCode", + "/tB/Packages/VBRUN/AsyncProperty/Target", + "/tB/Packages/VBRUN/AsyncProperty/Value", + "/tB/Packages/VBRUN/Constants/", + "/tB/Packages/VBRUN/Constants/AlignConstants", + "/tB/Packages/VBRUN/Constants/AlignmentConstants", + "/tB/Packages/VBRUN/Constants/AlignmentConstantsNoCenter", + "/tB/Packages/VBRUN/Constants/AppearanceConstants", + "/tB/Packages/VBRUN/Constants/ApplicationStartConstants", + "/tB/Packages/VBRUN/Constants/AspectTypeConstants", + "/tB/Packages/VBRUN/Constants/AsyncReadConstants", + "/tB/Packages/VBRUN/Constants/AsyncStatusCodeConstants", + "/tB/Packages/VBRUN/Constants/AsyncTypeConstants", + "/tB/Packages/VBRUN/Constants/BackFillStyleConstants", + "/tB/Packages/VBRUN/Constants/BorderStyleConstants", + "/tB/Packages/VBRUN/Constants/ButtonConstants", + "/tB/Packages/VBRUN/Constants/CheckBoxConstants", + "/tB/Packages/VBRUN/Constants/ClipboardConstants", + "/tB/Packages/VBRUN/Constants/ColorConstants", + "/tB/Packages/VBRUN/Constants/ComboBoxConstants", + "/tB/Packages/VBRUN/Constants/ControlBorderStyleConstants", + "/tB/Packages/VBRUN/Constants/ControlBorderStyleConstantsCustom", + "/tB/Packages/VBRUN/Constants/ControlTypeConstants", + "/tB/Packages/VBRUN/Constants/DataBOFconstants", + "/tB/Packages/VBRUN/Constants/DataEOFConstants", + "/tB/Packages/VBRUN/Constants/DataErrorConstants", + "/tB/Packages/VBRUN/Constants/DataValidateConstants", + "/tB/Packages/VBRUN/Constants/DatabaseTypeConstants", + "/tB/Packages/VBRUN/Constants/DefaultCursorTypeConstants", + "/tB/Packages/VBRUN/Constants/DockModeConstants", + "/tB/Packages/VBRUN/Constants/DragConstants", + "/tB/Packages/VBRUN/Constants/DragModeConstants", + "/tB/Packages/VBRUN/Constants/DragOverConstants", + "/tB/Packages/VBRUN/Constants/DrawModeConstants", + "/tB/Packages/VBRUN/Constants/DrawStyleConstants", + "/tB/Packages/VBRUN/Constants/FillStyleConstants", + "/tB/Packages/VBRUN/Constants/FillStyleConstantsEx", + "/tB/Packages/VBRUN/Constants/FormArrangeConstants", + "/tB/Packages/VBRUN/Constants/FormBorderStyleConstants", + "/tB/Packages/VBRUN/Constants/FormShowConstants", + "/tB/Packages/VBRUN/Constants/FormWindowStateConstants", + "/tB/Packages/VBRUN/Constants/HitResultConstants", + "/tB/Packages/VBRUN/Constants/KeyCodeConstants", + "/tB/Packages/VBRUN/Constants/LinkModeConstants", + "/tB/Packages/VBRUN/Constants/ListBoxConstants", + "/tB/Packages/VBRUN/Constants/LoadPictureColorConstants", + "/tB/Packages/VBRUN/Constants/LoadPictureSizeConstants", + "/tB/Packages/VBRUN/Constants/LoadResConstants", + "/tB/Packages/VBRUN/Constants/LogEventTypeConstants", + "/tB/Packages/VBRUN/Constants/LogModeConstants", + "/tB/Packages/VBRUN/Constants/MenuAccelConstants", + "/tB/Packages/VBRUN/Constants/MenuControlConstants", + "/tB/Packages/VBRUN/Constants/MouseButtonConstants", + "/tB/Packages/VBRUN/Constants/MousePointerConstants", + "/tB/Packages/VBRUN/Constants/MultiSelectConstants", + "/tB/Packages/VBRUN/Constants/NegotiatePositionConstants", + "/tB/Packages/VBRUN/Constants/OLEContainerActivateConstants", + "/tB/Packages/VBRUN/Constants/OLEContainerConstants", + "/tB/Packages/VBRUN/Constants/OLEContainerDisplayTypeConstants", + "/tB/Packages/VBRUN/Constants/OLEContainerSizeModeConstants", + "/tB/Packages/VBRUN/Constants/OLEContainerTypesAllowedConstants", + "/tB/Packages/VBRUN/Constants/OLEContainerUpdateOptionsConstants", + "/tB/Packages/VBRUN/Constants/OLEDragConstants", + "/tB/Packages/VBRUN/Constants/OLEDropConstants", + "/tB/Packages/VBRUN/Constants/OLEDropEffectConstants", + "/tB/Packages/VBRUN/Constants/OldLinkModeConstants", + "/tB/Packages/VBRUN/Constants/PaletteModeConstants", + "/tB/Packages/VBRUN/Constants/ParentControlsType", + "/tB/Packages/VBRUN/Constants/PictureTypeConstants", + "/tB/Packages/VBRUN/Constants/PrinterObjectConstants", + "/tB/Packages/VBRUN/Constants/PrinterObjectConstants_ColorMode", + "/tB/Packages/VBRUN/Constants/PrinterObjectConstants_Duplex", + "/tB/Packages/VBRUN/Constants/PrinterObjectConstants_Orientation", + "/tB/Packages/VBRUN/Constants/PrinterObjectConstants_PaperBin", + "/tB/Packages/VBRUN/Constants/PrinterObjectConstants_PaperSize", + "/tB/Packages/VBRUN/Constants/PrinterObjectConstants_PrintQuality", + "/tB/Packages/VBRUN/Constants/QueryUnloadConstants", + "/tB/Packages/VBRUN/Constants/RasterOpConstants", + "/tB/Packages/VBRUN/Constants/RecordsetTypeConstants", + "/tB/Packages/VBRUN/Constants/ScaleModeConstants", + "/tB/Packages/VBRUN/Constants/ScrollBarConstants", + "/tB/Packages/VBRUN/Constants/ShapeConstants", + "/tB/Packages/VBRUN/Constants/ShiftConstants", + "/tB/Packages/VBRUN/Constants/ShortcutConstants", + "/tB/Packages/VBRUN/Constants/StartUpPositionConstants", + "/tB/Packages/VBRUN/Constants/StorageTypeContants", + "/tB/Packages/VBRUN/Constants/SystemColorConstants", + "/tB/Packages/VBRUN/Constants/VariantTypeConstants", + "/tB/Packages/VBRUN/Constants/VerticalAlignmentConstants", + "/tB/Packages/VBRUN/Constants/ZOrderConstants", + "/tB/Packages/VBRUN/ContainedControls/", + "/tB/Packages/VBRUN/ContainedControls/#count", + "/tB/Packages/VBRUN/ContainedControls/#item", + "/tB/Packages/VBRUN/DataMembers/", + "/tB/Packages/VBRUN/DataMembers/#add", + "/tB/Packages/VBRUN/DataMembers/#clear", + "/tB/Packages/VBRUN/DataMembers/#count", + "/tB/Packages/VBRUN/DataMembers/#item", + "/tB/Packages/VBRUN/DataMembers/#remove", + "/tB/Packages/VBRUN/DataObject/", + "/tB/Packages/VBRUN/DataObject/AvailableFormats", + "/tB/Packages/VBRUN/DataObject/Clear", + "/tB/Packages/VBRUN/DataObject/DataObjectFiles", + "/tB/Packages/VBRUN/DataObject/DataObjectFiles#add", + "/tB/Packages/VBRUN/DataObject/DataObjectFiles#clear", + "/tB/Packages/VBRUN/DataObject/DataObjectFiles#count", + "/tB/Packages/VBRUN/DataObject/DataObjectFiles#item", + "/tB/Packages/VBRUN/DataObject/DataObjectFiles#remove", + "/tB/Packages/VBRUN/DataObject/DataObjectFormat", + "/tB/Packages/VBRUN/DataObject/DataObjectFormat#aspectindex", + "/tB/Packages/VBRUN/DataObject/DataObjectFormat#aspecttype", + "/tB/Packages/VBRUN/DataObject/DataObjectFormat#formattype", + "/tB/Packages/VBRUN/DataObject/DataObjectFormat#name", + "/tB/Packages/VBRUN/DataObject/DataObjectFormat#storagetype", + "/tB/Packages/VBRUN/DataObject/DataObjectFormats", + "/tB/Packages/VBRUN/DataObject/DataObjectFormats#count", + "/tB/Packages/VBRUN/DataObject/DataObjectFormats#item", + "/tB/Packages/VBRUN/DataObject/Files", + "/tB/Packages/VBRUN/DataObject/GetData", + "/tB/Packages/VBRUN/DataObject/GetDataByName", + "/tB/Packages/VBRUN/DataObject/GetFormat", + "/tB/Packages/VBRUN/DataObject/GetFormatByName", + "/tB/Packages/VBRUN/DataObject/SetData", + "/tB/Packages/VBRUN/ErrorCallstack/", + "/tB/Packages/VBRUN/ErrorCallstack/#count", + "/tB/Packages/VBRUN/ErrorCallstack/#items", + "/tB/Packages/VBRUN/ErrorContext/", + "/tB/Packages/VBRUN/ErrorContext/#callstack", + "/tB/Packages/VBRUN/ErrorContext/#description", + "/tB/Packages/VBRUN/ErrorContext/#helpcontext", + "/tB/Packages/VBRUN/ErrorContext/#helpfile", + "/tB/Packages/VBRUN/ErrorContext/#lastdllerror", + "/tB/Packages/VBRUN/ErrorContext/#number", + "/tB/Packages/VBRUN/ErrorContext/#source", + "/tB/Packages/VBRUN/ErrorContext/#state", + "/tB/Packages/VBRUN/ErrorStackFrame/", + "/tB/Packages/VBRUN/ErrorStackFrame/#modulename", + "/tB/Packages/VBRUN/ErrorStackFrame/#procedurename", + "/tB/Packages/VBRUN/ErrorStackFrame/#projectname", + "/tB/Packages/VBRUN/Hyperlink/", + "/tB/Packages/VBRUN/Hyperlink/#goback", + "/tB/Packages/VBRUN/Hyperlink/#goforward", + "/tB/Packages/VBRUN/Hyperlink/#navigateto", + "/tB/Packages/VBRUN/ParentControls/", + "/tB/Packages/VBRUN/ParentControls/#count", + "/tB/Packages/VBRUN/ParentControls/#item", + "/tB/Packages/VBRUN/ParentControls/#parentcontrolstype", + "/tB/Packages/VBRUN/PropertyBag/", + "/tB/Packages/VBRUN/PropertyBag/#contents", + "/tB/Packages/VBRUN/PropertyBag/#readproperty", + "/tB/Packages/VBRUN/PropertyBag/#writeproperty", + "/tB/Packages/WebView2/", + "/tB/Packages/WebView2/Enumerations/wv2DefaultDownloadCornerAlign", + "/tB/Packages/WebView2/Enumerations/wv2ErrorStatus", + "/tB/Packages/WebView2/Enumerations/wv2HostResourceAccessKind", + "/tB/Packages/WebView2/Enumerations/wv2KeyEventKind", + "/tB/Packages/WebView2/Enumerations/wv2PermissionKind", + "/tB/Packages/WebView2/Enumerations/wv2PermissionState", + "/tB/Packages/WebView2/Enumerations/wv2PrintOrientation", + "/tB/Packages/WebView2/Enumerations/wv2ProcessFailedKind", + "/tB/Packages/WebView2/Enumerations/wv2ScriptDialogKind", + "/tB/Packages/WebView2/Enumerations/wv2WebResourceContext", + "/tB/Packages/WebView2/Types/COREWEBVIEW2_PHYSICAL_KEY_STATUS", + "/tB/Packages/WebView2/WebView2/", + "/tB/Packages/WebView2/WebView2/#acceleratorkeypressed", + "/tB/Packages/WebView2/WebView2/#additionalallowedframeancestors", + "/tB/Packages/WebView2/WebView2/#addobject", + "/tB/Packages/WebView2/WebView2/#addscripttoexecuteondocumentcreated", + "/tB/Packages/WebView2/WebView2/#addwebresourcerequestedfilter", + "/tB/Packages/WebView2/WebView2/#anchors", + "/tB/Packages/WebView2/WebView2/#arebrowseracceleratorkeysenabled", + "/tB/Packages/WebView2/WebView2/#aredefaultcontextmenusenabled", + "/tB/Packages/WebView2/WebView2/#aredefaultscriptdialogsenabled", + "/tB/Packages/WebView2/WebView2/#aredevtoolsenabled", + "/tB/Packages/WebView2/WebView2/#arehostobjectsallowed", + "/tB/Packages/WebView2/WebView2/#backcolor", + "/tB/Packages/WebView2/WebView2/#browserprocessid", + "/tB/Packages/WebView2/WebView2/#calldevtoolsprotocolmethod", + "/tB/Packages/WebView2/WebView2/#cangoback", + "/tB/Packages/WebView2/WebView2/#cangoforward", + "/tB/Packages/WebView2/WebView2/#causesvalidation", + "/tB/Packages/WebView2/WebView2/#clearvirtualhostnametofoldermapping", + "/tB/Packages/WebView2/WebView2/#closedefaultdownloaddialog", + "/tB/Packages/WebView2/WebView2/#container", + "/tB/Packages/WebView2/WebView2/#controltype", + "/tB/Packages/WebView2/WebView2/#create", + "/tB/Packages/WebView2/WebView2/#devtoolsprotocolresponse", + "/tB/Packages/WebView2/WebView2/#documenttitle", + "/tB/Packages/WebView2/WebView2/#documenttitlechanged", + "/tB/Packages/WebView2/WebView2/#documenturl", + "/tB/Packages/WebView2/WebView2/#domcontentloaded", + "/tB/Packages/WebView2/WebView2/#downloadstarting", + "/tB/Packages/WebView2/WebView2/#drag", + "/tB/Packages/WebView2/WebView2/#dragicon", + "/tB/Packages/WebView2/WebView2/#dragmode", + "/tB/Packages/WebView2/WebView2/#enabled", + "/tB/Packages/WebView2/WebView2/#environmentoptions", + "/tB/Packages/WebView2/WebView2/#error", + "/tB/Packages/WebView2/WebView2/#executescript", + "/tB/Packages/WebView2/WebView2/#goback", + "/tB/Packages/WebView2/WebView2/#goforward", + "/tB/Packages/WebView2/WebView2/#height", + "/tB/Packages/WebView2/WebView2/#hwnd", + "/tB/Packages/WebView2/WebView2/#index", + "/tB/Packages/WebView2/WebView2/#isbuiltinerrorpageenabled", + "/tB/Packages/WebView2/WebView2/#isdefaultdownloaddialogopen", + "/tB/Packages/WebView2/WebView2/#isdocumentplayingaudio", + "/tB/Packages/WebView2/WebView2/#isgeneralautofillenabled", + "/tB/Packages/WebView2/WebView2/#ismuted", + "/tB/Packages/WebView2/WebView2/#ispasswordautosaveenabled", + "/tB/Packages/WebView2/WebView2/#ispinchzoomenabled", + "/tB/Packages/WebView2/WebView2/#isscriptenabled", + "/tB/Packages/WebView2/WebView2/#isstatusbarenabled", + "/tB/Packages/WebView2/WebView2/#issuspended", + "/tB/Packages/WebView2/WebView2/#isswipenavigationenabled", + "/tB/Packages/WebView2/WebView2/#iswebmessageenabled", + "/tB/Packages/WebView2/WebView2/#iszoomcontrolenabled", + "/tB/Packages/WebView2/WebView2/#jsasyncresult", + "/tB/Packages/WebView2/WebView2/#jscalltimeoutseconds", + "/tB/Packages/WebView2/WebView2/#jsmessage", + "/tB/Packages/WebView2/WebView2/#jsprop", + "/tB/Packages/WebView2/WebView2/#jsrun", + "/tB/Packages/WebView2/WebView2/#jsrunasync", + "/tB/Packages/WebView2/WebView2/#left", + "/tB/Packages/WebView2/WebView2/#mouseicon", + "/tB/Packages/WebView2/WebView2/#mousepointer", + "/tB/Packages/WebView2/WebView2/#move", + "/tB/Packages/WebView2/WebView2/#movefocus", + "/tB/Packages/WebView2/WebView2/#name", + "/tB/Packages/WebView2/WebView2/#navigate", + "/tB/Packages/WebView2/WebView2/#navigatecustom", + "/tB/Packages/WebView2/WebView2/#navigatetostring", + "/tB/Packages/WebView2/WebView2/#navigationcomplete", + "/tB/Packages/WebView2/WebView2/#navigationstarting", + "/tB/Packages/WebView2/WebView2/#newwindowrequested", + "/tB/Packages/WebView2/WebView2/#opendefaultdownloaddialog", + "/tB/Packages/WebView2/WebView2/#opendevtoolswindow", + "/tB/Packages/WebView2/WebView2/#opentaskmanagerwindow", + "/tB/Packages/WebView2/WebView2/#permissionrequested", + "/tB/Packages/WebView2/WebView2/#postwebmessage", + "/tB/Packages/WebView2/WebView2/#postwebmessagejson", + "/tB/Packages/WebView2/WebView2/#printtopdf", + "/tB/Packages/WebView2/WebView2/#printtopdfcompleted", + "/tB/Packages/WebView2/WebView2/#printtopdffailed", + "/tB/Packages/WebView2/WebView2/#processfailed", + "/tB/Packages/WebView2/WebView2/#ready", + "/tB/Packages/WebView2/WebView2/#reload", + "/tB/Packages/WebView2/WebView2/#removeobject", + "/tB/Packages/WebView2/WebView2/#removewebresourcerequestedfilter", + "/tB/Packages/WebView2/WebView2/#resume", + "/tB/Packages/WebView2/WebView2/#scriptdialogopening", + "/tB/Packages/WebView2/WebView2/#setfocus", + "/tB/Packages/WebView2/WebView2/#setvirtualhostnametofoldermapping", + "/tB/Packages/WebView2/WebView2/#sourcechanged", + "/tB/Packages/WebView2/WebView2/#supportsacceleratorkeysfeatures", + "/tB/Packages/WebView2/WebView2/#supportsaudiofeatures", + "/tB/Packages/WebView2/WebView2/#supportsautofillfeatures", + "/tB/Packages/WebView2/WebView2/#supportsdownloaddialogfeatures", + "/tB/Packages/WebView2/WebView2/#supportsfoldermappingfeatures", + "/tB/Packages/WebView2/WebView2/#supportsnavigatecustomfeatures", + "/tB/Packages/WebView2/WebView2/#supportspdffeatures", + "/tB/Packages/WebView2/WebView2/#supportspinchzoomfeatures", + "/tB/Packages/WebView2/WebView2/#supportssuspendresumefeatures", + "/tB/Packages/WebView2/WebView2/#supportsswipenavigationfeatures", + "/tB/Packages/WebView2/WebView2/#supportstaskmanagerfeatures", + "/tB/Packages/WebView2/WebView2/#supportsuseragentfeatures", + "/tB/Packages/WebView2/WebView2/#suspend", + "/tB/Packages/WebView2/WebView2/#suspendcompleted", + "/tB/Packages/WebView2/WebView2/#suspendfailed", + "/tB/Packages/WebView2/WebView2/#tabindex", + "/tB/Packages/WebView2/WebView2/#tabstop", + "/tB/Packages/WebView2/WebView2/#tag", + "/tB/Packages/WebView2/WebView2/#top", + "/tB/Packages/WebView2/WebView2/#usedeferredevents", + "/tB/Packages/WebView2/WebView2/#useragent", + "/tB/Packages/WebView2/WebView2/#usercontextmenu", + "/tB/Packages/WebView2/WebView2/#visible", + "/tB/Packages/WebView2/WebView2/#webresourcerequested", + "/tB/Packages/WebView2/WebView2/#width", + "/tB/Packages/WebView2/WebView2/#zoomfactor", + "/tB/Packages/WebView2/WebView2/#zorder", + "/tB/Packages/WebView2/WebView2/EnvironmentOptions", + "/tB/Packages/WebView2/WebView2/EnvironmentOptions#additionalbrowserarguments", + "/tB/Packages/WebView2/WebView2/EnvironmentOptions#allowsinglesignonusingosprimaryaccount", + "/tB/Packages/WebView2/WebView2/EnvironmentOptions#browserexecutablefolder", + "/tB/Packages/WebView2/WebView2/EnvironmentOptions#enabletrackingprevention", + "/tB/Packages/WebView2/WebView2/EnvironmentOptions#exclusiveuserdatafolderaccess", + "/tB/Packages/WebView2/WebView2/EnvironmentOptions#language", + "/tB/Packages/WebView2/WebView2/EnvironmentOptions#targetcompatiblebrowserversion", + "/tB/Packages/WebView2/WebView2/EnvironmentOptions#userdatafolder", + "/tB/Packages/WebView2/WebView2Header", + "/tB/Packages/WebView2/WebView2Header#name", + "/tB/Packages/WebView2/WebView2Header#new", + "/tB/Packages/WebView2/WebView2Header#value", + "/tB/Packages/WebView2/WebView2HeadersCollection", + "/tB/Packages/WebView2/WebView2HeadersCollection#new", + "/tB/Packages/WebView2/WebView2Request", + "/tB/Packages/WebView2/WebView2Request#contentbytes", + "/tB/Packages/WebView2/WebView2Request#contentutf8", + "/tB/Packages/WebView2/WebView2Request#headers", + "/tB/Packages/WebView2/WebView2Request#method", + "/tB/Packages/WebView2/WebView2Request#uri", + "/tB/Packages/WebView2/WebView2RequestHeaders", + "/tB/Packages/WebView2/WebView2RequestHeaders#appendheader", + "/tB/Packages/WebView2/WebView2RequestHeaders#contains", + "/tB/Packages/WebView2/WebView2RequestHeaders#getheader", + "/tB/Packages/WebView2/WebView2RequestHeaders#getheaders", + "/tB/Packages/WebView2/WebView2RequestHeaders#removeheader", + "/tB/Packages/WebView2/WebView2Response", + "/tB/Packages/WebView2/WebView2Response#contentbytes", + "/tB/Packages/WebView2/WebView2Response#contentutf8", + "/tB/Packages/WebView2/WebView2Response#headers", + "/tB/Packages/WebView2/WebView2Response#reasonphrase", + "/tB/Packages/WebView2/WebView2Response#statuscode", + "/tB/Packages/WebView2/WebView2ResponseHeaders", + "/tB/Packages/WebView2/WebView2ResponseHeaders#appendheader", + "/tB/Packages/WebView2/WebView2ResponseHeaders#contains", + "/tB/Packages/WebView2/WebView2ResponseHeaders#getheader", + "/tB/Packages/WebView2/WebView2ResponseHeaders#getheaders", + "/tB/Packages/WinEventLogLib/", + "/tB/Packages/WinEventLogLib/EventLog", + "/tB/Packages/WinEventLogLib/EventLog#logfailure", + "/tB/Packages/WinEventLogLib/EventLog#logsuccess", + "/tB/Packages/WinEventLogLib/EventLog#new", + "/tB/Packages/WinEventLogLib/EventLog#register", + "/tB/Packages/WinEventLogLib/EventLogHelperPublic", + "/tB/Packages/WinEventLogLib/EventLogHelperPublic#registereventloginternal", + "/tB/Packages/WinNamedPipesLib/", + "/tB/Packages/WinNamedPipesLib/NamedPipeClientConnection", + "/tB/Packages/WinNamedPipesLib/NamedPipeClientConnection#asyncclose", + "/tB/Packages/WinNamedPipesLib/NamedPipeClientConnection#asyncread", + "/tB/Packages/WinNamedPipesLib/NamedPipeClientConnection#asyncwrite", + "/tB/Packages/WinNamedPipesLib/NamedPipeClientConnection#connected", + "/tB/Packages/WinNamedPipesLib/NamedPipeClientConnection#customdata", + "/tB/Packages/WinNamedPipesLib/NamedPipeClientConnection#disconnected", + "/tB/Packages/WinNamedPipesLib/NamedPipeClientConnection#handle", + "/tB/Packages/WinNamedPipesLib/NamedPipeClientConnection#messagereceived", + "/tB/Packages/WinNamedPipesLib/NamedPipeClientConnection#messagesent", + "/tB/Packages/WinNamedPipesLib/NamedPipeClientConnection#new", + "/tB/Packages/WinNamedPipesLib/NamedPipeClientConnection#pipename", + "/tB/Packages/WinNamedPipesLib/NamedPipeClientManager", + "/tB/Packages/WinNamedPipesLib/NamedPipeClientManager#connect", + "/tB/Packages/WinNamedPipesLib/NamedPipeClientManager#continuouslyreadfrompipe", + "/tB/Packages/WinNamedPipesLib/NamedPipeClientManager#findnamedpipes", + "/tB/Packages/WinNamedPipesLib/NamedPipeClientManager#freethreadingevents", + "/tB/Packages/WinNamedPipesLib/NamedPipeClientManager#messagebuffersize", + "/tB/Packages/WinNamedPipesLib/NamedPipeClientManager#new", + "/tB/Packages/WinNamedPipesLib/NamedPipeClientManager#numthreadsiocp", + "/tB/Packages/WinNamedPipesLib/NamedPipeClientManager#stop", + "/tB/Packages/WinNamedPipesLib/NamedPipeServer", + "/tB/Packages/WinNamedPipesLib/NamedPipeServer#asyncbroadcast", + "/tB/Packages/WinNamedPipesLib/NamedPipeServer#clientconnected", + "/tB/Packages/WinNamedPipesLib/NamedPipeServer#clientdisconnected", + "/tB/Packages/WinNamedPipesLib/NamedPipeServer#clientmessagereceived", + "/tB/Packages/WinNamedPipesLib/NamedPipeServer#clientmessagesent", + "/tB/Packages/WinNamedPipesLib/NamedPipeServer#continuouslyreadfrompipe", + "/tB/Packages/WinNamedPipesLib/NamedPipeServer#freethreadingevents", + "/tB/Packages/WinNamedPipesLib/NamedPipeServer#manualmessageloopenter", + "/tB/Packages/WinNamedPipesLib/NamedPipeServer#manualmessageloopleave", + "/tB/Packages/WinNamedPipesLib/NamedPipeServer#messagebuffersize", + "/tB/Packages/WinNamedPipesLib/NamedPipeServer#new", + "/tB/Packages/WinNamedPipesLib/NamedPipeServer#numthreadsiocp", + "/tB/Packages/WinNamedPipesLib/NamedPipeServer#pipename", + "/tB/Packages/WinNamedPipesLib/NamedPipeServer#serverready", + "/tB/Packages/WinNamedPipesLib/NamedPipeServer#start", + "/tB/Packages/WinNamedPipesLib/NamedPipeServer#stop", + "/tB/Packages/WinNamedPipesLib/NamedPipeServerConnection", + "/tB/Packages/WinNamedPipesLib/NamedPipeServerConnection#asyncclose", + "/tB/Packages/WinNamedPipesLib/NamedPipeServerConnection#asyncread", + "/tB/Packages/WinNamedPipesLib/NamedPipeServerConnection#asyncwrite", + "/tB/Packages/WinNamedPipesLib/NamedPipeServerConnection#customdata", + "/tB/Packages/WinNamedPipesLib/NamedPipeServerConnection#handle", + "/tB/Packages/WinNamedPipesLib/NamedPipeServerConnection#isconnected", + "/tB/Packages/WinNamedPipesLib/NamedPipeServerConnection#isopening", + "/tB/Packages/WinNamedPipesLib/NamedPipeServerConnection#new", + "/tB/Packages/WinNativeCommonCtls/", + "/tB/Packages/WinNativeCommonCtls/DTPicker", + "/tB/Packages/WinNativeCommonCtls/DTPicker#calendarbackcolor", + "/tB/Packages/WinNativeCommonCtls/DTPicker#calendarforecolor", + "/tB/Packages/WinNativeCommonCtls/DTPicker#calendarshowtoday", + "/tB/Packages/WinNativeCommonCtls/DTPicker#calendarshowtodaycircle", + "/tB/Packages/WinNativeCommonCtls/DTPicker#calendarshowtrailingdates", + "/tB/Packages/WinNativeCommonCtls/DTPicker#calendarshowweeknumbers", + "/tB/Packages/WinNativeCommonCtls/DTPicker#calendartitlebackcolor", + "/tB/Packages/WinNativeCommonCtls/DTPicker#calendartitleforecolor", + "/tB/Packages/WinNativeCommonCtls/DTPicker#calendartrailingforecolor", + "/tB/Packages/WinNativeCommonCtls/DTPicker#callbackkeydown", + "/tB/Packages/WinNativeCommonCtls/DTPicker#change", + "/tB/Packages/WinNativeCommonCtls/DTPicker#checkbox", + "/tB/Packages/WinNativeCommonCtls/DTPicker#click", + "/tB/Packages/WinNativeCommonCtls/DTPicker#closeup", + "/tB/Packages/WinNativeCommonCtls/DTPicker#customformat", + "/tB/Packages/WinNativeCommonCtls/DTPicker#day", + "/tB/Packages/WinNativeCommonCtls/DTPicker#daycount", + "/tB/Packages/WinNativeCommonCtls/DTPicker#dayofweek", + "/tB/Packages/WinNativeCommonCtls/DTPicker#dblclick", + "/tB/Packages/WinNativeCommonCtls/DTPicker#dragdrop", + "/tB/Packages/WinNativeCommonCtls/DTPicker#dragover", + "/tB/Packages/WinNativeCommonCtls/DTPicker#dropdown", + "/tB/Packages/WinNativeCommonCtls/DTPicker#format", + "/tB/Packages/WinNativeCommonCtls/DTPicker#formatsize", + "/tB/Packages/WinNativeCommonCtls/DTPicker#gotfocus", + "/tB/Packages/WinNativeCommonCtls/DTPicker#hour", + "/tB/Packages/WinNativeCommonCtls/DTPicker#hwndcalendar", + "/tB/Packages/WinNativeCommonCtls/DTPicker#initialize", + "/tB/Packages/WinNativeCommonCtls/DTPicker#lostfocus", + "/tB/Packages/WinNativeCommonCtls/DTPicker#maxdate", + "/tB/Packages/WinNativeCommonCtls/DTPicker#mindate", + "/tB/Packages/WinNativeCommonCtls/DTPicker#minute", + "/tB/Packages/WinNativeCommonCtls/DTPicker#month", + "/tB/Packages/WinNativeCommonCtls/DTPicker#mousedown", + "/tB/Packages/WinNativeCommonCtls/DTPicker#mousemove", + "/tB/Packages/WinNativeCommonCtls/DTPicker#mouseup", + "/tB/Packages/WinNativeCommonCtls/DTPicker#olecompletedrag-oledragdrop-oledragover-olegivefeedback-olesetdata-olestartdrag", + "/tB/Packages/WinNativeCommonCtls/DTPicker#righttoleft", + "/tB/Packages/WinNativeCommonCtls/DTPicker#second", + "/tB/Packages/WinNativeCommonCtls/DTPicker#startofweek", + "/tB/Packages/WinNativeCommonCtls/DTPicker#updown", + "/tB/Packages/WinNativeCommonCtls/DTPicker#validate", + "/tB/Packages/WinNativeCommonCtls/DTPicker#value", + "/tB/Packages/WinNativeCommonCtls/DTPicker#week", + "/tB/Packages/WinNativeCommonCtls/DTPicker#year", + "/tB/Packages/WinNativeCommonCtls/Enumerations/DTPickerFormatConstants", + "/tB/Packages/WinNativeCommonCtls/Enumerations/ImlDrawConstants", + "/tB/Packages/WinNativeCommonCtls/Enumerations/OrientationConstants", + "/tB/Packages/WinNativeCommonCtls/Enumerations/TreeBorderStyleConstants", + "/tB/Packages/WinNativeCommonCtls/Enumerations/TreeLabelEditConstants", + "/tB/Packages/WinNativeCommonCtls/Enumerations/TreeLineStyleConstants", + "/tB/Packages/WinNativeCommonCtls/Enumerations/TreeRelationshipConstants", + "/tB/Packages/WinNativeCommonCtls/Enumerations/TreeSortOrderConstants", + "/tB/Packages/WinNativeCommonCtls/Enumerations/TreeSortTypeConstants", + "/tB/Packages/WinNativeCommonCtls/Enumerations/TreeStyleConstants", + "/tB/Packages/WinNativeCommonCtls/ImageList/", + "/tB/Packages/WinNativeCommonCtls/ImageList/#backcolor", + "/tB/Packages/WinNativeCommonCtls/ImageList/#colordepth", + "/tB/Packages/WinNativeCommonCtls/ImageList/#himagelist", + "/tB/Packages/WinNativeCommonCtls/ImageList/#imageheight", + "/tB/Packages/WinNativeCommonCtls/ImageList/#imagewidth", + "/tB/Packages/WinNativeCommonCtls/ImageList/#listimages", + "/tB/Packages/WinNativeCommonCtls/ImageList/#maskcolor", + "/tB/Packages/WinNativeCommonCtls/ImageList/#overlay", + "/tB/Packages/WinNativeCommonCtls/ImageList/#usebackcolor", + "/tB/Packages/WinNativeCommonCtls/ImageList/#usemaskcolor", + "/tB/Packages/WinNativeCommonCtls/ImageList/ListImage", + "/tB/Packages/WinNativeCommonCtls/ImageList/ListImage#draw", + "/tB/Packages/WinNativeCommonCtls/ImageList/ListImage#extracticon", + "/tB/Packages/WinNativeCommonCtls/ImageList/ListImage#index", + "/tB/Packages/WinNativeCommonCtls/ImageList/ListImage#key", + "/tB/Packages/WinNativeCommonCtls/ImageList/ListImage#picture", + "/tB/Packages/WinNativeCommonCtls/ImageList/ListImage#tag", + "/tB/Packages/WinNativeCommonCtls/ImageList/ListImages", + "/tB/Packages/WinNativeCommonCtls/ImageList/ListImages#_newenum", + "/tB/Packages/WinNativeCommonCtls/ImageList/ListImages#add", + "/tB/Packages/WinNativeCommonCtls/ImageList/ListImages#clear", + "/tB/Packages/WinNativeCommonCtls/ImageList/ListImages#count", + "/tB/Packages/WinNativeCommonCtls/ImageList/ListImages#exists", + "/tB/Packages/WinNativeCommonCtls/ImageList/ListImages#item", + "/tB/Packages/WinNativeCommonCtls/ImageList/ListImages#remove", + "/tB/Packages/WinNativeCommonCtls/ListView/", + "/tB/Packages/WinNativeCommonCtls/ListView/#afterlabeledit", + "/tB/Packages/WinNativeCommonCtls/ListView/#allowcolumnreorder", + "/tB/Packages/WinNativeCommonCtls/ListView/#appearance", + "/tB/Packages/WinNativeCommonCtls/ListView/#arrange", + "/tB/Packages/WinNativeCommonCtls/ListView/#backcolor", + "/tB/Packages/WinNativeCommonCtls/ListView/#beforelabeledit", + "/tB/Packages/WinNativeCommonCtls/ListView/#borderstyle", + "/tB/Packages/WinNativeCommonCtls/ListView/#checkboxes", + "/tB/Packages/WinNativeCommonCtls/ListView/#click", + "/tB/Packages/WinNativeCommonCtls/ListView/#columnclick", + "/tB/Packages/WinNativeCommonCtls/ListView/#columnheadericons", + "/tB/Packages/WinNativeCommonCtls/ListView/#columnheaders", + "/tB/Packages/WinNativeCommonCtls/ListView/#dblclick", + "/tB/Packages/WinNativeCommonCtls/ListView/#dragdrop-dragover", + "/tB/Packages/WinNativeCommonCtls/ListView/#flatscrollbar", + "/tB/Packages/WinNativeCommonCtls/ListView/#fullrowselect", + "/tB/Packages/WinNativeCommonCtls/ListView/#getfirstvisible", + "/tB/Packages/WinNativeCommonCtls/ListView/#gridlines", + "/tB/Packages/WinNativeCommonCtls/ListView/#hidecolumnheaders", + "/tB/Packages/WinNativeCommonCtls/ListView/#hideselection", + "/tB/Packages/WinNativeCommonCtls/ListView/#hottracking", + "/tB/Packages/WinNativeCommonCtls/ListView/#hwnd", + "/tB/Packages/WinNativeCommonCtls/ListView/#hwndheader", + "/tB/Packages/WinNativeCommonCtls/ListView/#icons", + "/tB/Packages/WinNativeCommonCtls/ListView/#initialize", + "/tB/Packages/WinNativeCommonCtls/ListView/#itemcheck", + "/tB/Packages/WinNativeCommonCtls/ListView/#itemclick", + "/tB/Packages/WinNativeCommonCtls/ListView/#keydown-keypress-keyup", + "/tB/Packages/WinNativeCommonCtls/ListView/#labeledit", + "/tB/Packages/WinNativeCommonCtls/ListView/#labelwrap", + "/tB/Packages/WinNativeCommonCtls/ListView/#listitems", + "/tB/Packages/WinNativeCommonCtls/ListView/#mousedown-mousemove-mouseup", + "/tB/Packages/WinNativeCommonCtls/ListView/#multiselect", + "/tB/Packages/WinNativeCommonCtls/ListView/#olecompletedrag-oledragdrop-oledragover-olegivefeedback-olesetdata-olestartdrag", + "/tB/Packages/WinNativeCommonCtls/ListView/#scroll", + "/tB/Packages/WinNativeCommonCtls/ListView/#selecteditem", + "/tB/Packages/WinNativeCommonCtls/ListView/#selecteditemindex", + "/tB/Packages/WinNativeCommonCtls/ListView/#smallicons", + "/tB/Packages/WinNativeCommonCtls/ListView/#startlabeledit", + "/tB/Packages/WinNativeCommonCtls/ListView/#textbackground", + "/tB/Packages/WinNativeCommonCtls/ListView/#validate", + "/tB/Packages/WinNativeCommonCtls/ListView/#view", + "/tB/Packages/WinNativeCommonCtls/ListView/ColumnHeader", + "/tB/Packages/WinNativeCommonCtls/ListView/ColumnHeader#alignment", + "/tB/Packages/WinNativeCommonCtls/ListView/ColumnHeader#icon", + "/tB/Packages/WinNativeCommonCtls/ListView/ColumnHeader#index", + "/tB/Packages/WinNativeCommonCtls/ListView/ColumnHeader#key", + "/tB/Packages/WinNativeCommonCtls/ListView/ColumnHeader#left", + "/tB/Packages/WinNativeCommonCtls/ListView/ColumnHeader#position", + "/tB/Packages/WinNativeCommonCtls/ListView/ColumnHeader#subitemindex", + "/tB/Packages/WinNativeCommonCtls/ListView/ColumnHeader#tag", + "/tB/Packages/WinNativeCommonCtls/ListView/ColumnHeader#text", + "/tB/Packages/WinNativeCommonCtls/ListView/ColumnHeader#width", + "/tB/Packages/WinNativeCommonCtls/ListView/ColumnHeaders", + "/tB/Packages/WinNativeCommonCtls/ListView/ColumnHeaders#_newenum", + "/tB/Packages/WinNativeCommonCtls/ListView/ColumnHeaders#add", + "/tB/Packages/WinNativeCommonCtls/ListView/ColumnHeaders#clear", + "/tB/Packages/WinNativeCommonCtls/ListView/ColumnHeaders#count", + "/tB/Packages/WinNativeCommonCtls/ListView/ColumnHeaders#item", + "/tB/Packages/WinNativeCommonCtls/ListView/ColumnHeaders#remove", + "/tB/Packages/WinNativeCommonCtls/ListView/ListItem", + "/tB/Packages/WinNativeCommonCtls/ListView/ListItem#backcolor", + "/tB/Packages/WinNativeCommonCtls/ListView/ListItem#bold", + "/tB/Packages/WinNativeCommonCtls/ListView/ListItem#checked", + "/tB/Packages/WinNativeCommonCtls/ListView/ListItem#createdragimage", + "/tB/Packages/WinNativeCommonCtls/ListView/ListItem#ensurevisible", + "/tB/Packages/WinNativeCommonCtls/ListView/ListItem#forecolor", + "/tB/Packages/WinNativeCommonCtls/ListView/ListItem#ghosted", + "/tB/Packages/WinNativeCommonCtls/ListView/ListItem#height", + "/tB/Packages/WinNativeCommonCtls/ListView/ListItem#icon", + "/tB/Packages/WinNativeCommonCtls/ListView/ListItem#index", + "/tB/Packages/WinNativeCommonCtls/ListView/ListItem#key", + "/tB/Packages/WinNativeCommonCtls/ListView/ListItem#left", + "/tB/Packages/WinNativeCommonCtls/ListView/ListItem#selected", + "/tB/Packages/WinNativeCommonCtls/ListView/ListItem#smallicon", + "/tB/Packages/WinNativeCommonCtls/ListView/ListItem#tag", + "/tB/Packages/WinNativeCommonCtls/ListView/ListItem#text", + "/tB/Packages/WinNativeCommonCtls/ListView/ListItem#tooltiptext", + "/tB/Packages/WinNativeCommonCtls/ListView/ListItem#top", + "/tB/Packages/WinNativeCommonCtls/ListView/ListItem#width", + "/tB/Packages/WinNativeCommonCtls/ListView/ListItems", + "/tB/Packages/WinNativeCommonCtls/ListView/ListItems#_newenum", + "/tB/Packages/WinNativeCommonCtls/ListView/ListItems#add", + "/tB/Packages/WinNativeCommonCtls/ListView/ListItems#clear", + "/tB/Packages/WinNativeCommonCtls/ListView/ListItems#count", + "/tB/Packages/WinNativeCommonCtls/ListView/ListItems#item", + "/tB/Packages/WinNativeCommonCtls/ListView/ListItems#remove", + "/tB/Packages/WinNativeCommonCtls/MonthView", + "/tB/Packages/WinNativeCommonCtls/MonthView#appearance", + "/tB/Packages/WinNativeCommonCtls/MonthView#backcolor", + "/tB/Packages/WinNativeCommonCtls/MonthView#borderstyle", + "/tB/Packages/WinNativeCommonCtls/MonthView#calendarcount", + "/tB/Packages/WinNativeCommonCtls/MonthView#click", + "/tB/Packages/WinNativeCommonCtls/MonthView#dateclick", + "/tB/Packages/WinNativeCommonCtls/MonthView#datedblclick", + "/tB/Packages/WinNativeCommonCtls/MonthView#day", + "/tB/Packages/WinNativeCommonCtls/MonthView#daycount", + "/tB/Packages/WinNativeCommonCtls/MonthView#dayofweek", + "/tB/Packages/WinNativeCommonCtls/MonthView#dblclick", + "/tB/Packages/WinNativeCommonCtls/MonthView#dragdrop-dragover", + "/tB/Packages/WinNativeCommonCtls/MonthView#forecolor", + "/tB/Packages/WinNativeCommonCtls/MonthView#getdaybold", + "/tB/Packages/WinNativeCommonCtls/MonthView#getmonthrange", + "/tB/Packages/WinNativeCommonCtls/MonthView#gotfocus-lostfocus", + "/tB/Packages/WinNativeCommonCtls/MonthView#initialize", + "/tB/Packages/WinNativeCommonCtls/MonthView#keydown-keypress-keyup", + "/tB/Packages/WinNativeCommonCtls/MonthView#maxdate", + "/tB/Packages/WinNativeCommonCtls/MonthView#maxselcount", + "/tB/Packages/WinNativeCommonCtls/MonthView#mindate", + "/tB/Packages/WinNativeCommonCtls/MonthView#month", + "/tB/Packages/WinNativeCommonCtls/MonthView#monthbackcolor", + "/tB/Packages/WinNativeCommonCtls/MonthView#monthcolumns", + "/tB/Packages/WinNativeCommonCtls/MonthView#monthrows", + "/tB/Packages/WinNativeCommonCtls/MonthView#mousedown-mousemove-mouseup", + "/tB/Packages/WinNativeCommonCtls/MonthView#multiselect", + "/tB/Packages/WinNativeCommonCtls/MonthView#olecompletedrag-oledragdrop-oledragover-olegivefeedback-olesetdata-olestartdrag", + "/tB/Packages/WinNativeCommonCtls/MonthView#resizetofit", + "/tB/Packages/WinNativeCommonCtls/MonthView#righttoleft", + "/tB/Packages/WinNativeCommonCtls/MonthView#scrollrate", + "/tB/Packages/WinNativeCommonCtls/MonthView#selchange", + "/tB/Packages/WinNativeCommonCtls/MonthView#selend", + "/tB/Packages/WinNativeCommonCtls/MonthView#selstart", + "/tB/Packages/WinNativeCommonCtls/MonthView#showtoday", + "/tB/Packages/WinNativeCommonCtls/MonthView#showtodaycircle", + "/tB/Packages/WinNativeCommonCtls/MonthView#showtrailingdates", + "/tB/Packages/WinNativeCommonCtls/MonthView#showweeknumbers", + "/tB/Packages/WinNativeCommonCtls/MonthView#startofweek", + "/tB/Packages/WinNativeCommonCtls/MonthView#titlebackcolor", + "/tB/Packages/WinNativeCommonCtls/MonthView#titleforecolor", + "/tB/Packages/WinNativeCommonCtls/MonthView#trailingforecolor", + "/tB/Packages/WinNativeCommonCtls/MonthView#validate", + "/tB/Packages/WinNativeCommonCtls/MonthView#value", + "/tB/Packages/WinNativeCommonCtls/MonthView#week", + "/tB/Packages/WinNativeCommonCtls/MonthView#year", + "/tB/Packages/WinNativeCommonCtls/ProgressBar", + "/tB/Packages/WinNativeCommonCtls/ProgressBar#backcolor", + "/tB/Packages/WinNativeCommonCtls/ProgressBar#borderstyle", + "/tB/Packages/WinNativeCommonCtls/ProgressBar#change", + "/tB/Packages/WinNativeCommonCtls/ProgressBar#click-dblclick", + "/tB/Packages/WinNativeCommonCtls/ProgressBar#dragdrop-dragover", + "/tB/Packages/WinNativeCommonCtls/ProgressBar#forecolor", + "/tB/Packages/WinNativeCommonCtls/ProgressBar#initialize", + "/tB/Packages/WinNativeCommonCtls/ProgressBar#marqueeanimation", + "/tB/Packages/WinNativeCommonCtls/ProgressBar#marqueespeed", + "/tB/Packages/WinNativeCommonCtls/ProgressBar#max", + "/tB/Packages/WinNativeCommonCtls/ProgressBar#min", + "/tB/Packages/WinNativeCommonCtls/ProgressBar#mousedown-mousemove-mouseup", + "/tB/Packages/WinNativeCommonCtls/ProgressBar#olecompletedrag-oledragdrop-oledragover-olegivefeedback-olesetdata-olestartdrag", + "/tB/Packages/WinNativeCommonCtls/ProgressBar#orientation", + "/tB/Packages/WinNativeCommonCtls/ProgressBar#scrolling", + "/tB/Packages/WinNativeCommonCtls/ProgressBar#smoothreverse", + "/tB/Packages/WinNativeCommonCtls/ProgressBar#state", + "/tB/Packages/WinNativeCommonCtls/ProgressBar#step", + "/tB/Packages/WinNativeCommonCtls/ProgressBar#stepit", + "/tB/Packages/WinNativeCommonCtls/ProgressBar#value", + "/tB/Packages/WinNativeCommonCtls/Slider", + "/tB/Packages/WinNativeCommonCtls/Slider#backcolor", + "/tB/Packages/WinNativeCommonCtls/Slider#borderstyle", + "/tB/Packages/WinNativeCommonCtls/Slider#change", + "/tB/Packages/WinNativeCommonCtls/Slider#click", + "/tB/Packages/WinNativeCommonCtls/Slider#dragdrop-dragover", + "/tB/Packages/WinNativeCommonCtls/Slider#gotfocus-lostfocus", + "/tB/Packages/WinNativeCommonCtls/Slider#hidethumb", + "/tB/Packages/WinNativeCommonCtls/Slider#initialize", + "/tB/Packages/WinNativeCommonCtls/Slider#keydown-keypress-keyup", + "/tB/Packages/WinNativeCommonCtls/Slider#largechange", + "/tB/Packages/WinNativeCommonCtls/Slider#max", + "/tB/Packages/WinNativeCommonCtls/Slider#min", + "/tB/Packages/WinNativeCommonCtls/Slider#mousedown-mousemove-mouseup", + "/tB/Packages/WinNativeCommonCtls/Slider#olecompletedrag-oledragdrop-oledragover-olegivefeedback-olesetdata-olestartdrag", + "/tB/Packages/WinNativeCommonCtls/Slider#orientation", + "/tB/Packages/WinNativeCommonCtls/Slider#scroll", + "/tB/Packages/WinNativeCommonCtls/Slider#selectrange", + "/tB/Packages/WinNativeCommonCtls/Slider#sellength", + "/tB/Packages/WinNativeCommonCtls/Slider#selstart", + "/tB/Packages/WinNativeCommonCtls/Slider#showtip", + "/tB/Packages/WinNativeCommonCtls/Slider#smallchange", + "/tB/Packages/WinNativeCommonCtls/Slider#textposition", + "/tB/Packages/WinNativeCommonCtls/Slider#tickfrequency", + "/tB/Packages/WinNativeCommonCtls/Slider#tickstyle", + "/tB/Packages/WinNativeCommonCtls/Slider#validate", + "/tB/Packages/WinNativeCommonCtls/Slider#value", + "/tB/Packages/WinNativeCommonCtls/TreeView/", + "/tB/Packages/WinNativeCommonCtls/TreeView/#afterlabeledit", + "/tB/Packages/WinNativeCommonCtls/TreeView/#appearance", + "/tB/Packages/WinNativeCommonCtls/TreeView/#beforecollapse", + "/tB/Packages/WinNativeCommonCtls/TreeView/#beforeexpand", + "/tB/Packages/WinNativeCommonCtls/TreeView/#beforelabeledit", + "/tB/Packages/WinNativeCommonCtls/TreeView/#borderstyle", + "/tB/Packages/WinNativeCommonCtls/TreeView/#checkboxes-1", + "/tB/Packages/WinNativeCommonCtls/TreeView/#click", + "/tB/Packages/WinNativeCommonCtls/TreeView/#collapse", + "/tB/Packages/WinNativeCommonCtls/TreeView/#dblclick", + "/tB/Packages/WinNativeCommonCtls/TreeView/#dragdrop-dragover", + "/tB/Packages/WinNativeCommonCtls/TreeView/#drophighlight", + "/tB/Packages/WinNativeCommonCtls/TreeView/#expand", + "/tB/Packages/WinNativeCommonCtls/TreeView/#fullrowselect", + "/tB/Packages/WinNativeCommonCtls/TreeView/#getvisiblecount", + "/tB/Packages/WinNativeCommonCtls/TreeView/#hideselection", + "/tB/Packages/WinNativeCommonCtls/TreeView/#hittest", + "/tB/Packages/WinNativeCommonCtls/TreeView/#hottracking", + "/tB/Packages/WinNativeCommonCtls/TreeView/#hwnd", + "/tB/Packages/WinNativeCommonCtls/TreeView/#hwndlabeledit", + "/tB/Packages/WinNativeCommonCtls/TreeView/#imagelist", + "/tB/Packages/WinNativeCommonCtls/TreeView/#indentation", + "/tB/Packages/WinNativeCommonCtls/TreeView/#initialize", + "/tB/Packages/WinNativeCommonCtls/TreeView/#keydown-keypress-keyup", + "/tB/Packages/WinNativeCommonCtls/TreeView/#labeledit", + "/tB/Packages/WinNativeCommonCtls/TreeView/#linestyle", + "/tB/Packages/WinNativeCommonCtls/TreeView/#mousedown-mousemove-mouseup", + "/tB/Packages/WinNativeCommonCtls/TreeView/#nodecheck", + "/tB/Packages/WinNativeCommonCtls/TreeView/#nodeclick", + "/tB/Packages/WinNativeCommonCtls/TreeView/#nodes", + "/tB/Packages/WinNativeCommonCtls/TreeView/#nodeselect", + "/tB/Packages/WinNativeCommonCtls/TreeView/#olecompletedrag-oledragdrop-oledragover-olegivefeedback-olesetdata-olestartdrag", + "/tB/Packages/WinNativeCommonCtls/TreeView/#pathseparator", + "/tB/Packages/WinNativeCommonCtls/TreeView/#scroll", + "/tB/Packages/WinNativeCommonCtls/TreeView/#selecteditem", + "/tB/Packages/WinNativeCommonCtls/TreeView/#singlesel", + "/tB/Packages/WinNativeCommonCtls/TreeView/#sorted", + "/tB/Packages/WinNativeCommonCtls/TreeView/#sortorder", + "/tB/Packages/WinNativeCommonCtls/TreeView/#sorttype", + "/tB/Packages/WinNativeCommonCtls/TreeView/#startlabeledit", + "/tB/Packages/WinNativeCommonCtls/TreeView/#style", + "/tB/Packages/WinNativeCommonCtls/TreeView/#validate", + "/tB/Packages/WinNativeCommonCtls/TreeView/#wheelscrollevent", + "/tB/Packages/WinNativeCommonCtls/TreeView/Node", + "/tB/Packages/WinNativeCommonCtls/TreeView/Node#backcolor", + "/tB/Packages/WinNativeCommonCtls/TreeView/Node#bold", + "/tB/Packages/WinNativeCommonCtls/TreeView/Node#checked", + "/tB/Packages/WinNativeCommonCtls/TreeView/Node#child", + "/tB/Packages/WinNativeCommonCtls/TreeView/Node#children", + "/tB/Packages/WinNativeCommonCtls/TreeView/Node#ensurevisible", + "/tB/Packages/WinNativeCommonCtls/TreeView/Node#expanded", + "/tB/Packages/WinNativeCommonCtls/TreeView/Node#firstsibling", + "/tB/Packages/WinNativeCommonCtls/TreeView/Node#forecolor", + "/tB/Packages/WinNativeCommonCtls/TreeView/Node#fullpath", + "/tB/Packages/WinNativeCommonCtls/TreeView/Node#image", + "/tB/Packages/WinNativeCommonCtls/TreeView/Node#index", + "/tB/Packages/WinNativeCommonCtls/TreeView/Node#key", + "/tB/Packages/WinNativeCommonCtls/TreeView/Node#lastsibling", + "/tB/Packages/WinNativeCommonCtls/TreeView/Node#next", + "/tB/Packages/WinNativeCommonCtls/TreeView/Node#parent", + "/tB/Packages/WinNativeCommonCtls/TreeView/Node#previous", + "/tB/Packages/WinNativeCommonCtls/TreeView/Node#root", + "/tB/Packages/WinNativeCommonCtls/TreeView/Node#selected", + "/tB/Packages/WinNativeCommonCtls/TreeView/Node#selectedimage", + "/tB/Packages/WinNativeCommonCtls/TreeView/Node#sorted", + "/tB/Packages/WinNativeCommonCtls/TreeView/Node#sortorder", + "/tB/Packages/WinNativeCommonCtls/TreeView/Node#sorttype", + "/tB/Packages/WinNativeCommonCtls/TreeView/Node#tag", + "/tB/Packages/WinNativeCommonCtls/TreeView/Node#text", + "/tB/Packages/WinNativeCommonCtls/TreeView/Node#visible", + "/tB/Packages/WinNativeCommonCtls/TreeView/Nodes", + "/tB/Packages/WinNativeCommonCtls/TreeView/Nodes#_newenum", + "/tB/Packages/WinNativeCommonCtls/TreeView/Nodes#add", + "/tB/Packages/WinNativeCommonCtls/TreeView/Nodes#clear", + "/tB/Packages/WinNativeCommonCtls/TreeView/Nodes#count", + "/tB/Packages/WinNativeCommonCtls/TreeView/Nodes#item", + "/tB/Packages/WinNativeCommonCtls/TreeView/Nodes#remove", + "/tB/Packages/WinNativeCommonCtls/UpDown", + "/tB/Packages/WinNativeCommonCtls/UpDown#change", + "/tB/Packages/WinNativeCommonCtls/UpDown#downclick", + "/tB/Packages/WinNativeCommonCtls/UpDown#dragdrop-dragover", + "/tB/Packages/WinNativeCommonCtls/UpDown#gotfocus-lostfocus", + "/tB/Packages/WinNativeCommonCtls/UpDown#increment", + "/tB/Packages/WinNativeCommonCtls/UpDown#initialize", + "/tB/Packages/WinNativeCommonCtls/UpDown#max", + "/tB/Packages/WinNativeCommonCtls/UpDown#min", + "/tB/Packages/WinNativeCommonCtls/UpDown#mousedown-mousemove-mouseup", + "/tB/Packages/WinNativeCommonCtls/UpDown#olecompletedrag-oledragdrop-oledragover-olegivefeedback-olesetdata-olestartdrag", + "/tB/Packages/WinNativeCommonCtls/UpDown#orientation", + "/tB/Packages/WinNativeCommonCtls/UpDown#tooltiptext", + "/tB/Packages/WinNativeCommonCtls/UpDown#upclick", + "/tB/Packages/WinNativeCommonCtls/UpDown#validate", + "/tB/Packages/WinNativeCommonCtls/UpDown#value", + "/tB/Packages/WinNativeCommonCtls/UpDown#visualstyles", + "/tB/Packages/WinServicesLib/", + "/tB/Packages/WinServicesLib/Enumerations/ServiceControlCodeConstants", + "/tB/Packages/WinServicesLib/Enumerations/ServiceStartConstants", + "/tB/Packages/WinServicesLib/Enumerations/ServiceStatusConstants", + "/tB/Packages/WinServicesLib/Enumerations/ServiceTypeConstants", + "/tB/Packages/WinServicesLib/ITbService", + "/tB/Packages/WinServicesLib/ITbService#changestate", + "/tB/Packages/WinServicesLib/ITbService#entrypoint", + "/tB/Packages/WinServicesLib/ITbService#startupfailed", + "/tB/Packages/WinServicesLib/ServiceCreator", + "/tB/Packages/WinServicesLib/ServiceCreator#createinstance", + "/tB/Packages/WinServicesLib/ServiceManager", + "/tB/Packages/WinServicesLib/ServiceManager#autoinitializecom", + "/tB/Packages/WinServicesLib/ServiceManager#dependentservices", + "/tB/Packages/WinServicesLib/ServiceManager#description", + "/tB/Packages/WinServicesLib/ServiceManager#install", + "/tB/Packages/WinServicesLib/ServiceManager#installcmdline", + "/tB/Packages/WinServicesLib/ServiceManager#installstartmode", + "/tB/Packages/WinServicesLib/ServiceManager#instancecreator", + "/tB/Packages/WinServicesLib/ServiceManager#launchargs", + "/tB/Packages/WinServicesLib/ServiceManager#name", + "/tB/Packages/WinServicesLib/ServiceManager#new", + "/tB/Packages/WinServicesLib/ServiceManager#reportstatus", + "/tB/Packages/WinServicesLib/ServiceManager#resyncstatus", + "/tB/Packages/WinServicesLib/ServiceManager#servicecontrolhandlercallback", + "/tB/Packages/WinServicesLib/ServiceManager#serviceentrypoint", + "/tB/Packages/WinServicesLib/ServiceManager#supportspausing", + "/tB/Packages/WinServicesLib/ServiceManager#type", + "/tB/Packages/WinServicesLib/ServiceManager#uninstall", + "/tB/Packages/WinServicesLib/ServiceState", + "/tB/Packages/WinServicesLib/ServiceState#checkpoint", + "/tB/Packages/WinServicesLib/ServiceState#controlsaccepted", + "/tB/Packages/WinServicesLib/ServiceState#currentstate", + "/tB/Packages/WinServicesLib/ServiceState#currentstatetext", + "/tB/Packages/WinServicesLib/ServiceState#exitcode", + "/tB/Packages/WinServicesLib/ServiceState#flags", + "/tB/Packages/WinServicesLib/ServiceState#new", + "/tB/Packages/WinServicesLib/ServiceState#processid", + "/tB/Packages/WinServicesLib/ServiceState#servicespecificexitcode", + "/tB/Packages/WinServicesLib/ServiceState#type", + "/tB/Packages/WinServicesLib/ServiceState#waithint", + "/tB/Packages/WinServicesLib/Services", + "/tB/Packages/WinServicesLib/Services#_newenum", + "/tB/Packages/WinServicesLib/Services#configurenew", + "/tB/Packages/WinServicesLib/Services#controlservice", + "/tB/Packages/WinServicesLib/Services#getconfiguredservice", + "/tB/Packages/WinServicesLib/Services#installall", + "/tB/Packages/WinServicesLib/Services#launchservice", + "/tB/Packages/WinServicesLib/Services#querystateofservice", + "/tB/Packages/WinServicesLib/Services#runservicedispatcher", + "/tB/Packages/WinServicesLib/Services#uninstallall", + "/tB/Packages/tbIDE/", + "/tB/Packages/tbIDE/AddIn", + "/tB/Packages/tbIDE/AddIn#name", + "/tB/Packages/tbIDE/AddinTimer", + "/tB/Packages/tbIDE/AddinTimer#enabled", + "/tB/Packages/tbIDE/AddinTimer#interval", + "/tB/Packages/tbIDE/AddinTimer#timer", + "/tB/Packages/tbIDE/Button", + "/tB/Packages/tbIDE/Button#caption", + "/tB/Packages/tbIDE/Button#icondata", + "/tB/Packages/tbIDE/Button#id", + "/tB/Packages/tbIDE/Button#onclick", + "/tB/Packages/tbIDE/CodeEditor", + "/tB/Packages/tbIDE/CodeEditor#addmonacowidget", + "/tB/Packages/tbIDE/CodeEditor#executemonacocommand", + "/tB/Packages/tbIDE/CodeEditor#getselectioninfo", + "/tB/Packages/tbIDE/CodeEditor#revealrange", + "/tB/Packages/tbIDE/CodeEditor#selectedtext", + "/tB/Packages/tbIDE/CodeEditor#setselectioninfo", + "/tB/Packages/tbIDE/CodeEditor#text", + "/tB/Packages/tbIDE/DebugConsole", + "/tB/Packages/tbIDE/DebugConsole#clear", + "/tB/Packages/tbIDE/DebugConsole#printtext", + "/tB/Packages/tbIDE/DebugConsole#setfocus", + "/tB/Packages/tbIDE/Editor", + "/tB/Packages/tbIDE/Editor#close", + "/tB/Packages/tbIDE/Editor#isdirty", + "/tB/Packages/tbIDE/Editor#path", + "/tB/Packages/tbIDE/Editor#save", + "/tB/Packages/tbIDE/Editor#setfocus", + "/tB/Packages/tbIDE/Editor#type", + "/tB/Packages/tbIDE/Editors", + "/tB/Packages/tbIDE/Editors#count", + "/tB/Packages/tbIDE/Editors#item", + "/tB/Packages/tbIDE/Editors#open", + "/tB/Packages/tbIDE/File", + "/tB/Packages/tbIDE/File#data", + "/tB/Packages/tbIDE/File#datalen", + "/tB/Packages/tbIDE/File#isdirty", + "/tB/Packages/tbIDE/File#readtext", + "/tB/Packages/tbIDE/File#text", + "/tB/Packages/tbIDE/FileSystem", + "/tB/Packages/tbIDE/FileSystem#resolvepath", + "/tB/Packages/tbIDE/FileSystem#rootfolder", + "/tB/Packages/tbIDE/FileSystemItem", + "/tB/Packages/tbIDE/FileSystemItem#name", + "/tB/Packages/tbIDE/FileSystemItem#parent", + "/tB/Packages/tbIDE/FileSystemItem#path", + "/tB/Packages/tbIDE/FileSystemItem#type", + "/tB/Packages/tbIDE/Folder", + "/tB/Packages/tbIDE/Folder#count", + "/tB/Packages/tbIDE/Folder#ispackagesfolder", + "/tB/Packages/tbIDE/Folder#item", + "/tB/Packages/tbIDE/Host", + "/tB/Packages/tbIDE/Host#activeeditors", + "/tB/Packages/tbIDE/Host#compilerversion", + "/tB/Packages/tbIDE/Host#currentproject", + "/tB/Packages/tbIDE/Host#debugconsole", + "/tB/Packages/tbIDE/Host#filesystem", + "/tB/Packages/tbIDE/Host#ideprocessid", + "/tB/Packages/tbIDE/Host#idewindowhandle", + "/tB/Packages/tbIDE/Host#keyboardshortcuts", + "/tB/Packages/tbIDE/Host#onchangedactiveeditor", + "/tB/Packages/tbIDE/Host#onchangedtheme", + "/tB/Packages/tbIDE/Host#onprojectloaded", + "/tB/Packages/tbIDE/Host#showmessagebox", + "/tB/Packages/tbIDE/Host#shownotification", + "/tB/Packages/tbIDE/Host#themes", + "/tB/Packages/tbIDE/Host#toolbars", + "/tB/Packages/tbIDE/Host#toolwindows", + "/tB/Packages/tbIDE/HtmlElement", + "/tB/Packages/tbIDE/HtmlElement#addeventlistener", + "/tB/Packages/tbIDE/HtmlElement#childdomelements", + "/tB/Packages/tbIDE/HtmlElement#name", + "/tB/Packages/tbIDE/HtmlElement#properties-1", + "/tB/Packages/tbIDE/HtmlElement#remove", + "/tB/Packages/tbIDE/HtmlElementProperties", + "/tB/Packages/tbIDE/HtmlElementProperties#item", + "/tB/Packages/tbIDE/HtmlElementProperty", + "/tB/Packages/tbIDE/HtmlElementProperty#properties-1", + "/tB/Packages/tbIDE/HtmlElementProperty#value", + "/tB/Packages/tbIDE/HtmlElements", + "/tB/Packages/tbIDE/HtmlElements#add", + "/tB/Packages/tbIDE/HtmlElements#item", + "/tB/Packages/tbIDE/HtmlEventProperties", + "/tB/Packages/tbIDE/HtmlEventProperties#item", + "/tB/Packages/tbIDE/HtmlEventProperty", + "/tB/Packages/tbIDE/HtmlEventProperty#properties-1", + "/tB/Packages/tbIDE/HtmlEventProperty#value", + "/tB/Packages/tbIDE/KeyboardShortcuts", + "/tB/Packages/tbIDE/KeyboardShortcuts#add", + "/tB/Packages/tbIDE/Project", + "/tB/Packages/tbIDE/Project#architecture", + "/tB/Packages/tbIDE/Project#basefolderpath", + "/tB/Packages/tbIDE/Project#build", + "/tB/Packages/tbIDE/Project#buildfileextension", + "/tB/Packages/tbIDE/Project#buildoutputpath", + "/tB/Packages/tbIDE/Project#buildtype", + "/tB/Packages/tbIDE/Project#clean", + "/tB/Packages/tbIDE/Project#close", + "/tB/Packages/tbIDE/Project#evaluate", + "/tB/Packages/tbIDE/Project#loadmetadata", + "/tB/Packages/tbIDE/Project#name", + "/tB/Packages/tbIDE/Project#path", + "/tB/Packages/tbIDE/Project#projectid", + "/tB/Packages/tbIDE/Project#rootfolder", + "/tB/Packages/tbIDE/Project#save", + "/tB/Packages/tbIDE/Project#savemetadata", + "/tB/Packages/tbIDE/Project#versionbuild-versionmajor-versionminor-versionrevision", + "/tB/Packages/tbIDE/Themes", + "/tB/Packages/tbIDE/Themes#activethemename", + "/tB/Packages/tbIDE/Themes#activethemenamegroup", + "/tB/Packages/tbIDE/ToolWindow", + "/tB/Packages/tbIDE/ToolWindow#applycss", + "/tB/Packages/tbIDE/ToolWindow#close", + "/tB/Packages/tbIDE/ToolWindow#name", + "/tB/Packages/tbIDE/ToolWindow#onclose", + "/tB/Packages/tbIDE/ToolWindow#resizable", + "/tB/Packages/tbIDE/ToolWindow#rootdomelement", + "/tB/Packages/tbIDE/ToolWindow#title", + "/tB/Packages/tbIDE/ToolWindow#visible", + "/tB/Packages/tbIDE/ToolWindows", + "/tB/Packages/tbIDE/ToolWindows#add", + "/tB/Packages/tbIDE/Toolbar", + "/tB/Packages/tbIDE/Toolbar#addbutton", + "/tB/Packages/tbIDE/Toolbar#addsplitter", + "/tB/Packages/tbIDE/Toolbars", + "/tB/Packages/tbIDE/Toolbars#count", + "/tB/Packages/tbIDE/Toolbars#item" + ] +} diff --git a/builder/symbol-baseline.mjs b/builder/symbol-baseline.mjs new file mode 100644 index 00000000..931e09da --- /dev/null +++ b/builder/symbol-baseline.mjs @@ -0,0 +1,125 @@ +// The symbol index's drift guard: is every URL the last committed build put in +// tB/symbols.json still in it? +// +// The index is a contract with code outside this repository. The IDE help +// add-in carries a copy of it, and an installed add-in keeps its copy until it +// is updated, so a URL the index once gave out has to go on resolving. A page +// URL is protected by `redirect_from:`, but an anchor is not -- redirects are +// whole-page stubs with no fragment remapping, so rewording `### Add` to `### +// Add method` moves `#add` to `#add-method` and every copy of the index that +// has `ToolWindows#add` now lands at the top of the page. Nothing else in the +// build can see that: the link check only follows links made inside the tree, +// and the reworded heading's own page is fine. +// +// So builder/symbol-baseline.json lists every URL the index has published, and +// the build compares, the way builder/page-baseline.mjs compares page counts: +// +// a URL gone the build fails and names it +// URLs added the list is rewritten, and the changed file turns up in +// `git status` to be committed with the pages that added them +// +// A URL that goes is a fault even when it is meant, because meaning it is a +// decision Permanent Links makes rules for -- a redirect where anything can +// carry the URL, and the commit message naming it. Accepting one is a flagged +// run, `--update-symbol-baseline`, which puts the shorter list in the same +// commit as the change that shortened it. The usual fix is not that but to pin +// the old anchor on the reworded heading with `{: #add }`. +// +// It writes under the same restrictions as the page guard, for the same +// reasons: never under CI, which would bless the loss it was asked to catch; +// never under --serve, whose rebuilds follow every half-typed heading; and +// only for the source tree the list describes. + +import { readFile, writeFile } from "node:fs/promises"; +import { GUARDED_SRC } from "./page-baseline.mjs"; + +export const SYMBOL_BASELINE_PATH = new URL("./symbol-baseline.json", import.meta.url); + +const ACCEPT_CMD_WIN = "build.bat --update-symbol-baseline"; +const ACCEPT_CMD_POSIX = + "node builder/tbdocs.mjs --src docs --check-audit-index --update-symbol-baseline"; + +// How many lost URLs the failure names before it summarises the rest. +const SHOWN = 25; + +async function readBaseline(file) { + try { + return JSON.parse(await readFile(file, "utf8")); + } catch (err) { + if (err.code === "ENOENT") return null; + throw err; + } +} + +// One URL to a line, so a diff of the file reads as the URLs that came and went. +async function writeBaseline(file, src, urls) { + const body = urls.map((u) => ` ${JSON.stringify(u)}`).join(",\n"); + await writeFile(file, `{\n "src": ${JSON.stringify(src)},\n "urls": [\n${body}\n ]\n}\n`, "utf8"); +} + +/** + * Compare this build's symbol-index URLs with the committed list. + * + * @param {object} o + * @param {string} o.src this build's source root, repo-relative with + * forward slashes; anything but GUARDED_SRC is + * skipped + * @param {Iterable} o.urls every URL in this build's index + * @param {boolean} o.write may the list be rewritten? (false under CI, + * --serve and --dry-run) + * @param {boolean} [o.force] write it whatever changed (--update-symbol-baseline) + * @param {URL|string} [o.file] the list to read and write; only the self-test + * passes one + * @returns {Promise<{failed: boolean, text: string}>} + */ +export async function checkSymbolBaseline({ src, urls, write, force = false, file = SYMBOL_BASELINE_PATH }) { + if (src !== GUARDED_SRC) return { failed: false, text: "" }; + const current = [...new Set(urls)].sort(); + const baseline = await readBaseline(file); + + if (force) { + await writeBaseline(file, src, current); + const was = baseline?.urls?.length; + return { failed: false, text: `symbol baseline updated: ${was ?? "-"} -> ${current.length} URLs\n` }; + } + + if (!baseline) { + if (!write) { + return { + failed: true, + text: "ERROR: builder/symbol-baseline.json is missing, so nothing checks that the symbol\n" + + " index still has every URL it has published.\n" + + " Restore it from git, or regenerate it with:\n" + + ` ${ACCEPT_CMD_WIN}\n` + + ` ${ACCEPT_CMD_POSIX}\n`, + }; + } + await writeBaseline(file, src, current); + return { failed: false, text: `symbol baseline created: ${current.length} URLs\n` }; + } + + const now = new Set(current); + const lost = (baseline.urls ?? []).filter((u) => !now.has(u)); + if (lost.length) { + const shown = lost.slice(0, SHOWN).map((u) => ` ${u}\n`).join(""); + const more = lost.length > SHOWN ? ` ... and ${lost.length - SHOWN} more\n` : ""; + return { + failed: true, + text: `ERROR: ${lost.length} URL(s) the symbol index has published are no longer in it:\n` + + shown + more + + " An installed IDE help add-in keeps these. A reworded heading moves its anchor:\n" + + " pin the old one on it, as `{: #add }`. If the symbol is retired, follow\n" + + " Permanent Links and record the removal in the same commit:\n" + + ` ${ACCEPT_CMD_WIN}\n` + + ` ${ACCEPT_CMD_POSIX}\n`, + }; + } + + const known = new Set(baseline.urls ?? []); + const added = current.filter((u) => !known.has(u)).length; + if (added && write) { + await writeBaseline(file, src, current); + return { failed: false, text: `symbol baseline raised: +${added} URLs (commit builder/symbol-baseline.json)\n` }; + } + return { failed: false, text: "" }; +} diff --git a/builder/symbols.mjs b/builder/symbols.mjs new file mode 100644 index 00000000..5e0d12d3 --- /dev/null +++ b/builder/symbols.mjs @@ -0,0 +1,603 @@ +// The documentation's symbol index: every name the reference documents, and +// the page or heading that documents it. Published as tB/symbols.json for the +// IDE help add-in (WIP.HelpAddin.md, Stage 3), which looks up the name under +// the cursor in it, and a copy of which the add-in carries for when the site +// cannot be reached. +// +// **The entries come from the pages; the packages only annotate them.** A URL +// is a page's `permalink:` exactly as written -- folder-style pages end in `/`, +// single-file ones do not, and VBA's package page is `/tB/Packages/VBA` with +// neither -- or that plus the id the build gave a heading, read from the +// rendered HTML and never computed a second time. What the pages cannot say +// comes from builder/package-api.json, which scripts/build_package_api.mjs +// writes from the packages an install ships: the kind of a member that has a +// page of its own, the values of an enumeration, which type declares a member +// a page documents, and the interface a CoClass's members are declared on. A +// name the pages document and the packages do not declare is still indexed; a +// name the packages declare and no page documents is not, and is reported as +// a gap instead. +// +// How a page is read: +// +// - Reference/Core/: a statement or operator page names its keywords in its +// title and first heading -- "Do...Loop", "Lock, Unlock", "& and &= +// operators". The first word of each form is the statement or operator, +// the rest keywords of it: Loop, Next, Wend, Then. Attributes.md, which is +// /tB/Core/Attributes, has one attribute to each `##`. +// - A package folder: a page is a type's when its title or first heading +// names a type the package declares ("Strings Module" is Strings, "Len, +// LenB" is Len and LenB). A page under a type's page in the nav, named +// for one of the type's members, is that member's. A heading on a type's +// page is a member's when every name in it is an identifier and one is a +// member -- or when it sits under Properties, Methods or Events, which is +// how a member no package declares, such as a Form's Print, is still found. +// - A member documented on the page of the type that declares it -- Close, +// on Editor's page -- is found from every type that inherits it: +// CodeEditor.Close has Editor's URL. +// - A page filed under one module but declared in another -- VBA's Array, +// documented under Information and declared in _HiddenModule -- is placed +// under the type that declares it, when exactly one does. +// - The `$` form of a function shares its base's page: `Left$` goes where +// `Left` goes, as Permanent Links promises. +// +// **A page can name what it documents**, with `symbols:` in its frontmatter, +// when its title cannot: `(Default) Module` is `_HiddenModule`, and the +// Comparison operators page documents `=`, `<>` and four more. The list +// replaces the names the title and first heading give; on a Core page its +// first name is the statement or operator and the rest are keywords. + +// The package folders the reference has, and the projects each documents. A +// project's name is how code names it, and how hover does -- `in Assert.Exact` +// -- which is not always the folder's. +export const PACKAGE_FOLDERS = [ + { folder: "Reference/Default/VBA", projects: ["VBA"] }, + { folder: "Reference/Default/VBRUN", projects: ["VBRUN"] }, + { folder: "Reference/Default/VB", projects: ["VB"] }, + { folder: "Reference/Built-In/AppGlobalClassObject", projects: ["AppGlobalClassProject"] }, + { folder: "Reference/Built-In/CEF", projects: ["cefPackage"] }, + { folder: "Reference/Built-In/CustomControls", projects: ["CustomControls", "CustomControlsPackage"] }, + { folder: "Reference/Built-In/TwinBasicAssertions", projects: ["Assert"] }, + { folder: "Reference/Built-In/WebView2", projects: ["WebView2Package"] }, + { folder: "Reference/Built-In/WinEventLogLib", projects: ["WinEventLogLib"] }, + { folder: "Reference/Built-In/WinNamedPipesLib", projects: ["WinNamedPipesLib"] }, + { folder: "Reference/Built-In/WinNativeCommonCtls", projects: ["WinNativeCommonCtls"] }, + { folder: "Reference/Built-In/WinServicesLib", projects: ["WinServicesLib"] }, + { folder: "Reference/Built-In/tbIDE", projects: ["tbIDE"] }, +]; + +const CORE_FOLDER = "Reference/Core/"; +const ATTRIBUTES_PAGE = "Reference/Attributes.md"; + +// Section headings under which every heading names a member, and the kind +// each gives one the packages do not declare. +const MEMBER_SECTIONS = new Map([["properties", "property"], ["methods", "method"], ["events", "event"]]); +// Headings that open a section of members rather than name one. Such a heading +// is never a member's, even when the type has a member of that name -- tbIDE's +// HtmlElement has a Properties property, and its page's `## Properties` is the +// section, not the property. +const SECTION_TITLES = new Set(["properties", "methods", "events", "members", "fields", "constants", "values"]); + +// What a title or first heading adds to the name it documents. +const DECORATION = /\s+(?:class|module|interface|coclass|enumeration|enum|type|package|control|object|statement|function|property|method|event|operators?|directives?)$/i; +const IDENTIFIER = /^[A-Za-z_][A-Za-z0-9_]*[$]?$/; +const DIRECTIVE = /^#[A-Za-z]+$/; +const OPERATOR = /^[-+*/\\^&<>=]+$/; +// The typographer turns "..." into an ellipsis in rendered headings, and the +// frontmatter title keeps the three dots. +const FORM_BREAK = /\.\.\.|…|\s+/; + +// ------------------------------------------------------------ rendered HTML + +const ID_ATTRIBUTE = /\sid="([^"]*)"/; +const TAG = /<[^>]*>/g; +const ENTITY = /&(#x[0-9a-f]+|#[0-9]+|amp|lt|gt|quot|apos|nbsp);/gi; +const NAMED = { amp: "&", lt: "<", gt: ">", quot: '"', apos: "'", nbsp: " " }; + +function decode(s) { + return String(s ?? "").replace(ENTITY, (_, e) => { + const k = e.toLowerCase(); + if (k.startsWith("#x")) return String.fromCodePoint(parseInt(k.slice(2), 16)); + if (k.startsWith("#")) return String.fromCodePoint(parseInt(k.slice(1), 10)); + return NAMED[k]; + }); +} + +/** + * The headings of a rendered page, in order: `{level, id, text}`. A scan for + * ``, not one regex over the page: that pattern is cubic in + * the worst case, and this runs over every reference page. + */ +export function headingsOf(html) { + const s = String(html ?? ""); + const out = []; + for (let i = s.indexOf("= 0; i = s.indexOf("= 1 && level <= 6) || !/[\s>]/.test(s[i + 3] ?? "")) continue; + const gt = s.indexOf(">", i); + const close = gt < 0 ? -1 : s.indexOf(``, gt); + if (close < 0) break; + const text = decode(s.slice(gt + 1, close).replace(TAG, "")).replace(/\s+/g, " ").trim(); + out.push({ level, id: ID_ATTRIBUTE.exec(s.slice(i, gt))?.[1] ?? null, text }); + i = close; + } + return out; +} + +// ------------------------------------------------------------ the package API + +// One project's types, found by name without regard to case, as the language +// finds them. Where two types share a name, the public one is found. +function projectModel(name, project) { + const types = project?.types ?? []; + const byName = new Map(); + for (const t of [...types].sort((a, b) => Number(a.public === false) - Number(b.public === false))) { + const k = t.name.toLowerCase(); + if (!byName.has(k)) byName.set(k, t); + } + return { name, types, byName }; +} + +// Every member a type offers code: its own; a CoClass's default interface's, +// and its source interfaces' as events; a class's bases', however many levels +// up and in whichever package; an interface's base's. Each is `{name, kind, +// from}`, `from` the type that declares it. The first declaration of a name +// wins. +function membersOf(type, model, models, seen = new Set()) { + const out = new Map(); + if (!type || seen.has(type)) return out; + seen.add(type); + const put = (name, kind) => { const k = name.toLowerCase(); if (!out.has(k)) out.set(k, { name, kind, from: type }); }; + for (const [name, kind] of Object.entries(type.members ?? {})) put(name, memberKind(kind, type.kind)); + for (const v of type.values ?? []) put(v, "enumvalue"); + for (const f of type.fields ?? []) put(f, "field"); + const follow = (ref, as) => { + const target = lookup(ref, model, models); + if (!target) return; + for (const [k, m] of membersOf(target, model, models, seen)) if (!out.has(k)) out.set(k, as ? { ...m, kind: as } : m); + }; + if (type.default) follow(type.default); + for (const s of type.source ?? []) follow(s, "event"); + for (const b of type.inherits ?? []) follow(b); + if (type.extends) follow(type.extends); + return out; +} + +function lookup(ref, model, models) { + const dot = ref.lastIndexOf("."); + if (dot < 0) return model.byName.get(ref.toLowerCase()) ?? null; + return models.get(ref.slice(0, dot))?.byName.get(ref.slice(dot + 1).toLowerCase()) ?? null; +} + +function memberKind(kind, container) { + const inModule = container === "module"; + switch (kind) { + case "sub": return inModule ? "sub" : "method"; + case "function": return inModule ? "function" : "method"; + case "field": return inModule ? "variable" : container === "class" ? "property" : "field"; + case "const": return "constant"; + default: return kind; // property, event, delegate, enumvalue + } +} + +function typeKind(type) { + if (type.control) return "control"; + if (type.kind === "coclass") return "class"; + if (type.kind === "union") return "type"; + return type.kind; // module, class, interface, enum, type +} + +// ------------------------------------------------------------------ pages + +const cleanName = (s) => decode(s).trim().replace(DECORATION, "").trim(); + +// The names a page says it documents: its `symbols:` if it has them, else its +// title and the comma-separated names of its first heading. +function pageNames(page) { + if (page.symbols?.length) return page.symbols.map(String); + const names = [cleanName(page.title)]; + const h1 = page.headings.find((h) => h.level === 1); + if (h1) for (const part of h1.text.split(/,\s*/)) names.push(cleanName(part)); + return [...new Set(names.filter(Boolean))]; +} + +// --------------------------------------------------------------------- main + +/** + * @param {object} o + * @param {{src: string, url: string, title: string, parent?: string, + * symbols?: string[], headings: {level, id, text}[]}[]} o.pages + * every page, `src` relative to the source root and `url` its permalink; + * only those under /tB/ are read + * @param {object} o.api builder/package-api.json, parsed + * @returns {{symbols: object[], interfaces: object, packages: object, + * gaps: object[], unplaced: object[]}} `gaps` are public members and types + * no page documents, `unplaced` the package pages that gave no entry + */ +export function deriveSymbolIndex({ pages, api }) { + const models = new Map(Object.entries(api?.packages ?? {}).map(([n, p]) => [n, projectModel(n, p)])); + const symbols = []; + const seen = new Set(); + const add = (e) => { + const key = [e.name.toLowerCase(), e.package ?? "", (e.container ?? "").toLowerCase(), e.kind, e.url].join("\0"); + if (seen.has(key)) return; + seen.add(key); + symbols.push(e); + }; + const tbPages = pages.filter((p) => String(p.url).startsWith("/tB/")); + + // ---- the language + for (const page of tbPages) { + if (page.src === ATTRIBUTES_PAGE) { + for (const h of page.headings) { + const name = /^[A-Za-z_]\w*/.exec(h.text)?.[0]; + if (h.level === 2 && h.id && name) add(entry(name, null, null, "attribute", `${page.url}#${h.id}`)); + } + } else if (page.src.startsWith(CORE_FOLDER)) { + const isOperator = /^operators$/i.test(page.parent ?? ""); + for (const form of languageForms(page, isOperator)) { + form.forEach((name, i) => { + const kind = DIRECTIVE.test(name) ? "directive" : i > 0 ? "keyword" : isOperator ? "operator" : "statement"; + add(entry(name, null, null, kind, page.url)); + }); + } + } + } + + // ---- the packages + const gaps = []; + const unplaced = []; + const interfaces = {}; + const packages = {}; + for (const { folder, projects } of PACKAGE_FOLDERS) { + const inFolder = tbPages.filter((p) => p.src.startsWith(folder + "/")); + if (!inFolder.length) continue; + const label = packageLabel(inFolder, folder); + for (const pr of projects) packages[pr] = label; + const used = placeFolder({ folder, projects, pages: inFolder, models, add, gaps, interfaces }); + for (const p of inFolder) { + if (used.has(p) || isSectionPage(p, folder)) continue; + unplaced.push({ package: label, url: p.url, title: p.title }); + } + } + + // By code unit, not localeCompare, whose order depends on the machine's + // locale: two builds of one tree must write one file. + const cmp = (x, y) => (x < y ? -1 : x > y ? 1 : 0); + symbols.sort((a, b) => cmp(a.url, b.url) || cmp(a.name, b.name) || cmp(a.kind, b.kind) || + cmp(String(a.package), String(b.package)) || cmp(String(a.container), String(b.container))); + return { symbols, interfaces, packages, gaps, unplaced }; +} + +function entry(name, pkg, container, kind, url) { + return { name, package: pkg, container, kind, url }; +} + +// The forms a Core page documents, each a list of words whose first is the +// statement's own: "On...GoTo, On...GoSub" is [On, GoTo] and [On, GoSub]. A +// statement's words are identifiers and directives; an operator page's may +// be operators too. +function languageForms(page, isOperator) { + const keep = (w) => IDENTIFIER.test(w) || DIRECTIVE.test(w) || (isOperator && OPERATOR.test(w)); + // `symbols:` on an operator page lists operators, each its own form; on a + // statement page, the statement and then its keywords. + if (page.symbols?.length) return isOperator ? page.symbols.map((s) => [String(s)]) : [page.symbols.map(String)]; + const forms = []; + const h1 = page.headings.find((h) => h.level === 1)?.text; + for (const text of [page.title, h1]) { + for (const part of decode(text).split(/,\s*|\s+and\s+/)) { + const words = cleanName(part).split(FORM_BREAK).filter(keep); + if (words.length) forms.push(words); + } + } + return forms; +} + +// The package's name as its own page gives it: "Assert Package" is Assert. +function packageLabel(pages, folder) { + const index = pages.find((p) => p.src === `${folder}/index.md`); + return cleanName(index?.title ?? folder.split("/").pop()); +} + +// A folder's landing page -- CustomControls' Styles, WebView2's Enumerations -- +// is a list of other pages, not a symbol's. +function isSectionPage(page, folder) { + return /\/index\.md$/.test(page.src) && page.src !== `${folder}/index.md` && + cleanName(page.title) === page.src.split("/").slice(-2)[0]; +} + +// Place a folder's projects on its pages -- CustomControls' folder documents +// two. Returns the pages that gave at least one entry. +function placeFolder({ folder, projects, pages, models, add, gaps, interfaces }) { + const names = new Map(pages.map((p) => [p, pageNames(p).map((n) => n.toLowerCase())])); + const used = new Set(); + const folderIndex = pages.find((p) => p.src === `${folder}/index.md`); + const typePages = new Set(); + + // Each project's types on the pages naming them, before any member is + // placed: a page that is one project's type is no other type's member. + const states = projects.map((pr) => { + const model = models.get(pr) ?? projectModel(pr, null); + if (folderIndex) { add(entry(pr, pr, null, "package", folderIndex.url)); used.add(folderIndex); } + const typePage = findTypePages(model, pages, names, folderIndex); + for (const p of typePage.values()) typePages.add(p); + const state = { pr, model, typePage, members: new Map(), urls: new Map() }; + state.put = (t, name, url, kind) => { + const k = name.toLowerCase(); + if (!state.members.has(t)) { state.members.set(t, membersOf(t, model, models)); state.urls.set(t, new Map()); } + const u = state.urls.get(t); + if (u.has(k)) return; + u.set(k, url); + const m = state.members.get(t).get(k); + add(entry(m?.name ?? name, pr, t.name, kind ?? m?.kind ?? "member", url)); + }; + return state; + }); + + for (const s of states) placeOwnPages(s, { pages, names, typePages, models, add, used, interfaces }); + for (const s of states) placeInherited(s); + placeByDeclarer(states, { pages, names, typePages, used }); + placeObjects(states[0], { pages, typePages, folderIndex, add, used }); + for (const s of states) placeDollarForms(s); + for (const s of states) collectGaps(s, gaps); + return used; +} + +// Each type's page: the page naming it. A nested type prefers a page under its +// container's, which is how VBRUN's Constants enumerations are laid out, and a +// public type is placed before a private one of the same name. A CoClass with +// no page of its own is documented on its default interface's: +// AppGlobalClassObject's App is on _App. +function findTypePages(model, pages, names, folderIndex) { + const typePage = new Map(); + const byPublic = [...model.types].sort((a, b) => Number(a.public === false) - Number(b.public === false)); + for (const t of byPublic) { + const hits = pages.filter((p) => p !== folderIndex && names.get(p).includes(t.name.toLowerCase())); + if (!hits.length) continue; + const under = t.in ? hits.filter((p) => cleanName(p.parent).toLowerCase() === t.in.toLowerCase()) : []; + typePage.set(t, (under.length ? under : hits)[0]); + } + for (const t of model.types) { + if (t.kind !== "coclass" || typePage.has(t) || !t.default) continue; + const iface = model.byName.get(t.default.toLowerCase()); + if (iface && typePage.has(iface)) typePage.set(t, typePage.get(iface)); + } + return typePage; +} + +// What each type's own page documents: members with a page of their own under +// the type's page in the nav, members with a heading on it, and what it lists +// in a table rather than under a heading -- an enumeration's values, a Type's +// fields, a module's constants. +function placeOwnPages(s, { pages, names, typePages, models, add, used, interfaces }) { + const { pr, model, typePage, put } = s; + for (const [t, page] of typePage) { + used.add(page); + add(entry(t.name, pr, t.in ?? null, typeKind(t), page.url)); + if (t.kind === "coclass" && t.default) interfaces[`${pr}.${t.default}`] = `${pr}.${t.name}`; + if (!s.members.has(t)) { s.members.set(t, membersOf(t, model, models)); s.urls.set(t, new Map()); } + const ms = s.members.get(t); + + const title = cleanName(page.title).toLowerCase(); + for (const child of pages) { + if (child === page || typePages.has(child) || cleanName(child.parent).toLowerCase() !== title) continue; + for (const n of names.get(child)) if (ms.has(n)) { put(t, n, child.url); used.add(child); } + } + placeHeadings(page, t.name, (name, url, kind) => { + if (ms.has(name.toLowerCase())) put(t, name, url); + else if (kind) put(t, name, url, kind); + }); + for (const m of ms.values()) { + if (m.kind === "enumvalue" || m.kind === "field" || (m.kind === "constant" && t.kind === "module")) put(t, m.name, page.url); + } + } +} + +// An inherited member documented on the page of the type that declares it -- +// or of the CoClass whose default interface declares it -- has that URL from +// every type that inherits it. +function placeInherited(s) { + const { model, typePage, members, urls, put } = s; + const declaredOn = (declarer, k) => { + for (const [t, u] of urls) { + const viaDefault = t.kind === "coclass" && t.default && model.byName.get(t.default.toLowerCase()) === declarer; + if (u.has(k) && (t === declarer || viaDefault)) return u.get(k); + } + return null; + }; + for (const t of typePage.keys()) { + for (const [k, m] of members.get(t)) { + if (urls.get(t).has(k) || m.from === t) continue; + const url = declaredOn(m.from, k); + if (url) put(t, m.name, url); + } + } +} + +// A page no type claimed, named for a member exactly one type declares, is +// that member's -- VBA's Array, filed under Information and declared in +// _HiddenModule, and TbExpressionService's Bind, declared on ITbCustomBinder. +function placeByDeclarer(states, { pages, names, typePages, used }) { + const declarers = new Map(); + for (const s of states) { + for (const t of s.model.types) { + const own = [...Object.keys(t.members ?? {}), ...(t.values ?? []), ...(t.fields ?? [])]; + for (const n of own) { + const k = n.toLowerCase(); + if (!declarers.has(k)) declarers.set(k, []); + declarers.get(k).push({ s, t }); + } + } + } + for (const p of pages) { + if (used.has(p) || typePages.has(p)) continue; + for (const n of names.get(p)) { + const ds = declarers.get(n) ?? []; + if (ds.length !== 1) continue; + ds[0].s.put(ds[0].t, n, p.url); + used.add(p); + } + } +} + +// A page no package declares anything for, whose headings name members of it, +// is an object's -- VBA's Debug, with `## Debug.Print` and three more. +function placeObjects(s, { pages, typePages, folderIndex, add, used }) { + for (const p of pages) { + if (used.has(p) || typePages.has(p) || p === folderIndex) continue; + const own = cleanName(p.title); + if (!IDENTIFIER.test(own)) continue; + const found = []; + placeHeadings(p, own, (name, url, kind, qualified) => { if (qualified || kind) found.push([name, url, kind]); }); + if (!found.length) continue; + add(entry(own, s.pr, null, "object", p.url)); + for (const [name, url, kind] of found) add(entry(name, s.pr, own, kind ?? "member", url)); + used.add(p); + } +} + +// A `$` form goes where its base went: Left$ to Left, LeftB$ to LeftB. +function placeDollarForms(s) { + for (const [t, u] of s.urls) { + for (const [k, m] of s.members.get(t)) { + const base = k.endsWith("$") ? u.get(k.slice(0, -1)) : null; + if (base) s.put(t, m.name, base); + } + } +} + +// Declared, public, and on no page. A class a documented class inherits from +// is not one -- WinNativeCommonCtls' DTPickerBaseCtl is documented as DTPicker, +// and its members are counted there. +function collectGaps(s, gaps) { + const { pr, model, typePage, members, urls } = s; + for (const [t, page] of typePage) { + for (const [k, m] of members.get(t)) { + if (!urls.get(t).has(k) && !isInternal(m)) gaps.push({ package: pr, container: t.name, name: m.name, kind: m.kind, page: page.url }); + } + } + const bases = new Set(); + const walk = (t) => { + for (const ref of t.inherits ?? []) { + const b = lookup(ref, model, new Map([[pr, model]])); + if (b && !bases.has(b)) { bases.add(b); walk(b); } + } + }; + for (const t of typePage.keys()) walk(t); + for (const t of model.types) { + if (t.public === false || t.hidden || typePage.has(t) || bases.has(t) || t.kind === "interface") continue; + gaps.push({ package: pr, container: t.in ?? null, name: t.name, kind: typeKind(t), page: null }); + } +} + +// Headings pages put among members that are prose, not members: an interface's +// `### Example` under its `## Methods`, a property's `#### Example`. +const PROSE_HEADINGS = new Set(["example", "examples", "remarks", "syntax", "notes", "usage", "parameters", "returns"]); + +// Call `found(name, url, kind, qualified)` for each heading on `page` that can +// name a member of `typeName`: every part of it an identifier, or written +// `typeName.Member`. `kind` is the section's for a heading one level under +// Properties, Methods or Events that is not one of PROSE_HEADINGS, and null +// otherwise -- a declared member is found by its name whatever `kind` says, and +// `kind` is what lets an undeclared one be found at all. +// +// Headings one level under a section of members come first, then the rest, so +// a member takes the heading under Properties over a prose section of the same +// name: VB's Screen page has `## Fonts`, about fonts, above the Fonts +// property's `### Fonts`. +function placeHeadings(page, typeName, found) { + const prefix = `${typeName.toLowerCase()}.`; + const inSections = []; + const elsewhere = []; + let section = null; + let inMembers = false; + for (const h of page.headings) { + if (h.level === 1) { section = null; inMembers = false; continue; } + const text = h.text.toLowerCase(); + if (h.level === 2) { section = MEMBER_SECTIONS.get(text) ?? null; inMembers = SECTION_TITLES.has(text); } + if (!h.id || (h.level === 2 && SECTION_TITLES.has(text))) continue; + const parts = h.text.split(/,\s*/).map((x) => x.trim()); + const qualified = parts.every((x) => x.toLowerCase().startsWith(prefix)); + const bare = qualified ? parts.map((x) => x.slice(prefix.length)) : parts; + if (!bare.every((x) => IDENTIFIER.test(x))) continue; + const memberLevel = inMembers && h.level === 3 && !PROSE_HEADINGS.has(text); + const kind = memberLevel ? section : null; + for (const x of bare) (memberLevel ? inSections : elsewhere).push([x, `${page.url}#${h.id}`, kind, qualified]); + } + for (const args of [...inSections, ...elsewhere]) found(...args); +} + +// Members no page is expected to document: constructors and destructors, and +// hidden names. +function isInternal(m) { + if (/^(New|Class_Initialize|Class_Terminate)$/i.test(m.name) || m.name.startsWith("_")) return true; + return (m.from?.hiddenMembers ?? []).some((h) => h.toLowerCase() === m.name.toLowerCase()); +} + +// ------------------------------------------------------------------- output + +// Bumped when an entry's fields change meaning, so that an add-in holding an +// index it does not understand can tell. +export const SYMBOL_INDEX_FORMAT = 1; +export const SYMBOL_INDEX_REL = "tB/symbols.json"; + +/** + * The build's pages as deriveSymbolIndex reads them: those under /tB/, with the + * headings of their rendered HTML. + */ +export function symbolPages(pages) { + return pages + .filter((p) => String(p.permalink ?? "").startsWith("/tB/") && typeof p.renderedContent === "string") + .map((p) => { + const fm = p.frontmatter ?? {}; + return { + src: p.srcRel, url: p.permalink, title: fm.title, parent: fm.parent, + symbols: fm.symbols == null ? null : [].concat(fm.symbols).map(String), + excludeFromDocs: fm.exclude_from_docs == null ? null : [].concat(fm.exclude_from_docs).map(String), + headings: headingsOf(p.renderedContent), + }; + }); +} + +/** + * The published file: its header, then one entry to a line, so a person can + * read it and a diff of two builds shows the entries that changed. + */ +export function serializeSymbolIndex({ symbols, interfaces, packages }, api) { + const head = { + format: SYMBOL_INDEX_FORMAT, + api: api?.build ?? null, + packages, + interfaces, + }; + const lines = ["{"]; + for (const [k, v] of Object.entries(head)) lines.push(` ${JSON.stringify(k)}: ${JSON.stringify(v)},`); + lines.push(` "symbols": [`); + symbols.forEach((s, i) => lines.push(` ${JSON.stringify(s)}${i < symbols.length - 1 ? "," : ""}`)); + lines.push(" ]", "}"); + return lines.join("\n") + "\n"; +} + +/** + * The gaps a maintainer would act on: public members and types no page + * documents, less what a package's index page lists under + * `exclude_from_docs:` -- deliberately undocumented modules and classes, and + * the types inside them -- and types declared inside a type that is not public. + */ +export function reportableGaps(result, pages, api) { + const excluded = new Map(); // project -> Set of lowercased names + for (const { folder, projects } of PACKAGE_FOLDERS) { + const index = pages.find((p) => p.src === `${folder}/index.md`); + const names = new Set((index?.excludeFromDocs ?? []).map((n) => n.toLowerCase())); + for (const pr of projects) excluded.set(pr, names); + } + const typeOf = (pr, name) => (api?.packages?.[pr]?.types ?? []).find((t) => t.name.toLowerCase() === String(name).toLowerCase()); + return result.gaps.filter((g) => { + const skip = excluded.get(g.package) ?? new Set(); + if (skip.has(String(g.container ?? "").toLowerCase()) || (!g.container && skip.has(g.name.toLowerCase()))) return false; + if (g.page === null && g.container) { + const container = typeOf(g.package, g.container); + if (container?.public === false || skip.has(String(container?.in ?? "").toLowerCase())) return false; + } + return true; + }); +} diff --git a/builder/tbdocs.mjs b/builder/tbdocs.mjs index 1c052eaf..cf51a8cd 100644 --- a/builder/tbdocs.mjs +++ b/builder/tbdocs.mjs @@ -6,6 +6,8 @@ // [--fetch-assets | --no-fetch-assets] [--profile-offline] // [--check | --no-check] [--check-audit-index] // [--check-findings ] [--serve] [--port ] +// [--update-page-baseline] [--update-symbol-baseline] +// [--symbol-gaps ] // // --check runs the link + integrity check over the HTML the build // already holds in worker memory, instead of writing ~270 MB out and @@ -49,7 +51,7 @@ import { } from "./render.mjs"; import { loadHighlightTheme } from "./highlight-theme.mjs"; import { buildInitConfig, renderSidebar } from "./template.mjs"; -import { writePhase, prepareDestinations, preparePageDirs } from "./write.mjs"; +import { writePhase, prepareDestinations, preparePageDirs, writeFileMkdirp } from "./write.mjs"; import { writeRedirects, deriveRedirectStubs } from "./redirects.mjs"; import { writeSitemap, deriveSitemapUrls } from "./sitemap.mjs"; import { writeSearchDataFromChunks } from "./search.mjs"; @@ -64,6 +66,9 @@ import { writePdf } from "./pdf.mjs"; // build without --check pays nothing. import { deriveTreeRels } from "./check-tree.mjs"; import { checkPageBaseline } from "./page-baseline.mjs"; +import { checkSymbolBaseline } from "./symbol-baseline.mjs"; +import { deriveSymbolIndex, reportableGaps, serializeSymbolIndex, + symbolPages, SYMBOL_INDEX_REL } from "./symbols.mjs"; import { publishPolicyFor, unpublishableSourceFiles, unpublishableTreePaths, formatPublishRefusal } from "./publish-policy.mjs"; import { packShared } from "./sab-broadcast.mjs"; @@ -76,6 +81,7 @@ import { } from "./sab-scheduler.mjs"; const CPU_WORKER_URL = new URL("./cpu-worker.mjs", import.meta.url); +const PACKAGE_API_PATH = new URL("./package-api.json", import.meta.url); // builder/ sits one level under the repository root. Used to state a build's // source root the same way however it was invoked, for the page-count drift @@ -96,6 +102,8 @@ function parseArgs(argv) { check: false, auditIndex: false, updatePageBaseline: false, + updateSymbolBaseline: false, + symbolGaps: null, checkFindings: null, serve: false, port: 4000, @@ -158,6 +166,13 @@ function parseArgs(argv) { // whichever direction it moved. The build only ever raises it on its // own; lowering it is a deliberate act, so it takes a deliberate flag. args.updatePageBaseline = true; + } else if (a === "--update-symbol-baseline") { + // The same for the URLs tB/symbols.json has published: record the + // current list whatever left it. See symbol-baseline.mjs. + args.updateSymbolBaseline = true; + } else if (a === "--symbol-gaps") { + // Write the public symbols no page documents, as JSON, to a file. + args.symbolGaps = argv[++i]; } else if (a === "--serve") { args.serve = true; } else if (a === "--port") { @@ -943,6 +958,42 @@ const TASKS = { submit() {}, }, + // Write tB/symbols.json, the symbol index the IDE help add-in reads -- see + // builder/symbols.mjs. renderJoin because an entry's anchor is the id the + // render gave its heading, read from the HTML; prepDest for the tree. The + // package half comes from builder/package-api.json, a committed snapshot the + // build never regenerates, because regenerating it needs a twinBASIC install. + symbolIndex: { + expected: ["renderJoin", "prepDest"], + runOnMain: true, + async execute(_, ctx, state) { + let api; + try { + api = JSON.parse(await fs.readFile(PACKAGE_API_PATH, "utf8")); + } catch (err) { + if (err.code !== "ENOENT") throw err; + throw new Error("builder/package-api.json is missing, and the symbol index needs it. " + + "Restore it from git, or regenerate it with node scripts/build_package_api.mjs"); + } + const pages = symbolPages(state.pages); + const result = deriveSymbolIndex({ pages, api }); + const gaps = reportableGaps(result, pages, api); + if (!ctx.opts.dryRun) { + await writeFileMkdirp(path.join(ctx.destRoot, SYMBOL_INDEX_REL), serializeSymbolIndex(result, api)); + } + if (ctx.opts.symbolGaps) { + await fs.writeFile(ctx.opts.symbolGaps, `${JSON.stringify(gaps, null, 1)}\n`, "utf8"); + } + return { + entries: result.symbols.length, + urls: [...new Set(result.symbols.map((s) => s.url))], + gaps: gaps.length, + unplaced: result.unplaced, + }; + }, + submit() {}, + }, + // Write redirect stubs + sitemap/robots. Waits for writeAssets (theme on // disk), searchData, deriveRedirects, and deriveSitemap. // Passes searchStats through to writeOffline (for search-data.js). @@ -1154,7 +1205,9 @@ const TASKS = { // another few milliseconds. On the real site scss happens to finish // long before the check; on a three-page fixture it does not, and // the audit failed the build over nothing. - expected: ["linkJoin", "checkBook", "scss"], + // symbolIndex for the same reason: tB/symbols.json is in the online tree's + // index, and the audit must not look for it before it is written. + expected: ["linkJoin", "checkBook", "scss", "symbolIndex"], runOnMain: true, async execute({ linkJoin: trees, checkBook: book }, ctx, state) { if (!state.checkTrees) return null; @@ -1222,7 +1275,7 @@ const GANTT_SECTION = { deriveRedirects: "Spine", deriveSitemap: "Spine", dispatch: "Render", prepDest: "Render", prepPageDirs: "Render", renderJoin: "Render", flushJoin: "Write", - writeAssets: "Write", searchData: "Write", writeAux: "Write", writeOffline: "Write", writePdf: "Write", + writeAssets: "Write", searchData: "Write", symbolIndex: "Write", writeAux: "Write", writeOffline: "Write", writePdf: "Write", linkJoin: "Check", checkBook: "Check", checkReport: "Check", }; const GANTT_SECTION_ORDER = ["Seeds", "Spine", "Render", "Write", "Check"]; @@ -1431,6 +1484,19 @@ export async function runBuild(opts) { `${auxResult.sitemapStats.entries} sitemap entries, ` + `${auxResult.searchStats.entries} search-index entries`); } + const symbolStats = results.get("symbolIndex"); + if (symbolStats) { + console.log(` ${pc.bold("symbols:")} ${symbolStats.entries} entries at ${symbolStats.urls.length} URLs in ` + + `${SYMBOL_INDEX_REL}, ${symbolStats.gaps} public symbol(s) no page documents` + + (opts.symbolGaps ? ` (listed in ${opts.symbolGaps})` : "")); + // A page in a package folder the index could not place documents something + // it cannot find: a title that names nothing the package declares, most + // often. `symbols:` in its frontmatter says what it is. + for (const u of symbolStats.unplaced) { + console.log(` ${pc.yellow("symbols: no entry for")} ${u.url} (${u.title}) -- ` + + "its title names nothing the package declares; see symbols: in Authoring"); + } + } if (offlineResult) { console.log(` ${pc.bold("offline:")} -> ${pc.cyan(`${destRoot}-offline`)}`); console.log(` ${flushStats.offlineWritten} HTML, ${offlineResult.css} CSS, ` + @@ -1516,19 +1582,34 @@ export async function runBuild(opts) { // the check above claims bits 1 and 2, and the old `= 1` here clobbered // them, so a build with both an integrity failure and a page drop reported // only the drop. + // Repo-relative and forward-slashed, so it matches GUARDED_SRC however the + // build was invoked. tbdocs also runs over test/fixtures/check-src, which + // has no baseline and must not be measured against the site's. + const guardedSrc = path.relative(REPO_ROOT, path.resolve(opts.src ?? "docs")).replaceAll(path.sep, "/"); + const mayWrite = !process.env.CI && !opts.serve && !opts.dryRun; const drift = await checkPageBaseline({ - // Repo-relative and forward-slashed, so it matches GUARDED_SRC however the - // build was invoked. tbdocs also runs over test/fixtures/check-src, which - // has no baseline and must not be measured against the site's. - src: path.relative(REPO_ROOT, path.resolve(opts.src ?? "docs")).replaceAll(path.sep, "/"), + src: guardedSrc, pages: pages.length, staticFiles: staticFiles.length, - write: !process.env.CI && !opts.serve && !opts.dryRun, + write: mayWrite, force: !!opts.updatePageBaseline, }); if (drift.text) process.stdout.write(drift.text); if (drift.failed) process.exitCode = (process.exitCode ?? 0) | 1; + // The same guard over the URLs tB/symbols.json has published, which an + // installed IDE help add-in holds a copy of -- see symbol-baseline.mjs. + if (symbolStats) { + const lost = await checkSymbolBaseline({ + src: guardedSrc, + urls: symbolStats.urls, + write: mayWrite, + force: !!opts.updateSymbolBaseline, + }); + if (lost.text) process.stdout.write(lost.text); + if (lost.failed) process.exitCode = (process.exitCode ?? 0) | 1; + } + return { pages, staticFiles, site, destRoot }; } diff --git a/docs/Documentation/Authoring.md b/docs/Documentation/Authoring.md index 08dc1fcd..456c4031 100644 --- a/docs/Documentation/Authoring.md +++ b/docs/Documentation/Authoring.md @@ -162,8 +162,9 @@ Every page opens with a YAML frontmatter block. The keys that matter: - **`redirect_from`** --- optional. List any earlier URL the page has moved from, so existing links keep resolving. Each entry becomes a small stub page at that URL, so two rules apply and the build aborts naming both files if either is broken: a `redirect_from` entry may not point at a URL some page already publishes at, and no two pages may claim the same one. - **`vba_attribution`** --- set to `true` only on pages adapted from the VBA-Docs source; see [Attribution](#attribution). - **`nav_exclude`**, **`sitemap: false`**, **`search_exclude: true`** --- optional opt-outs, each from exactly one thing: the sidebar, `sitemap.xml`, and the search index. They are independent; a page that should be unlisted everywhere sets all three. The build's own link check honours the last two, so a page that opts out is not then reported as missing from the index it opted out of. +- **`symbols`** --- optional, and rare. The names a page documents, when its title and first heading cannot say; see [Naming what a page documents](#symbols). -A package's `index.md` may also carry **`indexed_from`**, **`exclude_from_docs`** and **`exclude_kinds`**. Those are provenance for the authoring pass, not build input: they record which twinBASIC build the package download was indexed against, and what was deliberately left undocumented, so a later re-index can tell a genuine gap from a deliberate omission. The build ignores them and they never reach the HTML. **Leave them in place**, and bump `indexed_from` in the same commit if you re-index a package against a newer build. +A package's `index.md` may also carry **`indexed_from`**, **`exclude_from_docs`** and **`exclude_kinds`**. Those are provenance for the authoring pass: they record which twinBASIC build the package download was indexed against, and what was deliberately left undocumented, so a later re-index can tell a genuine gap from a deliberate omission. The build reads `exclude_from_docs` for one thing only, to leave those names out of the [symbol index](Building#the-symbol-index)'s count of undocumented symbols; none of the three reaches the HTML. **Leave them in place**, and bump `indexed_from` in the same commit if you re-index a package against a newer build. Any key the build does not recognise is simply inert --- nothing iterates frontmatter generically, so an unknown key is never emitted into the page. A key whose *value* is not valid YAML is a different matter: the build aborts with `Failed to parse frontmatter in `, quoting the YAML parser's own line and column. @@ -295,9 +296,27 @@ The same attribute works inline, attached to a span instead of a block, and that To find what a rename would break, start with `grep -rn "#old-anchor" docs`, then let the build settle it. `build.bat` resolves every fragment in the tree against the ids that actually reached the HTML and reports `fragment #old-anchor not found` for each link that misses. It is the oracle rather than grep because almost every id is generated: it exists in the built page and in no source file, so there is nothing for grep to match on the receiving end. -That check sees only links made from inside this repository, and the `/tB/` anchors have a consumer outside it. [Permanent Links](Permanent-Links) enumerates the `#` anchors on `/tB/Core/Attributes` --- the URLs the IDE help system resolves against. They are covered by the build's check only because that page links to each one, so an attribute added to `Attributes.md` and not added to that list is unchecked from the moment it is written. Two were in exactly that position until recently, and adding them to the list is what put them under the check. +That check sees only links made from inside this repository, and the `/tB/` anchors have a consumer outside it: the IDE help add-in, through the [symbol index](Building#the-symbol-index). Every member heading on a reference page, and every attribute heading on `/tB/Core/Attributes`, is an entry in that index, and **a build that loses one of its URLs fails**, naming it --- so a reworded member heading is caught whether or not anything in the site links to it. The fix is the one above: keep the new wording and pin the old id. -Every heading on that page also carries a pinned `{: #... }` id, and that is not decoration. Three of them once had none and resolved on the default slug alone --- which ties the published URL to the heading text, so appending a parenthesised type to one, to match its neighbours, would have broken it silently. Pin the id when you add the heading. +Every heading on the attributes page also carries a pinned `{: #... }` id, and that is not decoration. Three of them once had none and resolved on the default slug alone --- which ties the published URL to the heading text, so appending a parenthesised type to one, to match its neighbours, would have broken it silently. Pin the id when you add the heading. + +## Naming what a page documents +{: #symbols } + +The [symbol index](Building#the-symbol-index) learns what a reference page documents from the page itself: its title, less a trailing word such as `Module` or `class`, and the comma-separated names of its first heading --- `# Left, LeftB` documents both. For a Core page, the words of the title are the statement and its keywords: `Do...Loop` is the **Do** statement, and **Loop** is a keyword that leads to it. + +A page whose title cannot name its subject says so with `symbols:`, which replaces those names: + +```yaml +--- +title: (Default) Module +parent: VBA Package +permalink: /tB/Modules/HiddenModule/ +symbols: [_HiddenModule] +--- +``` + +On a statement page the first name is the statement and the rest are its keywords; on an operator page each is an operator of its own --- the comparison operators page lists `["=", "<>", "<", "<=", ">", ">="]`, quoted, because a bare `>` is YAML syntax. Only two pages need it today. The build tells you when a third does: a page in a package folder that gives the index no entry at all is named after the build's summary. ## Counts the build fills in {: #counts } diff --git a/docs/Documentation/Builder.md b/docs/Documentation/Builder.md index 45ae3b7d..099558e6 100644 --- a/docs/Documentation/Builder.md +++ b/docs/Documentation/Builder.md @@ -186,12 +186,12 @@ The complete layout, allocation helper, and the `readTaskMeta` / `writeTaskMeta` ## Task DAG by section -The pipeline has 31 named static tasks plus 2N dynamic ones (N render chunks + N flush tasks). The Gantt chart groups them into five sections that also organise the discussion below: +The pipeline has 32 named static tasks plus 2N dynamic ones (N render chunks + N flush tasks). The Gantt chart groups them into five sections that also organise the discussion below: - **Seeds**: `buildInfo`, `scssLight`, `scssDark`, `config`, `warmInit`, `highlighterInit`, `discover`, `loadData`, `vendorAssets` - **Spine**: `nav`, `dot`, `buildInit`, `markdownInit`, `deriveSitemap`, `deriveRedirects`, `resolveBookChapters` - **Render**: `dispatch`, `prepDest`, `prepPageDirs`, `renderEnvInit`, `render:i`, `renderJoin` -- **Write**: `scss`, `flush:i`, `flushJoin`, `writeAssets`, `searchData`, `writeAux`, `writeOffline`, `writePdf` +- **Write**: `scss`, `flush:i`, `flushJoin`, `writeAssets`, `searchData`, `symbolIndex`, `writeAux`, `writeOffline`, `writePdf` - **Check**: `linkJoin`, `checkBook`, `checkReport` --- present on every ordinary build, because `build.bat` always passes `--check-audit-index` The task DAG, with every static task and every dependency between them, follows: @@ -251,12 +251,13 @@ dispatch ┬→ render:0 ─┬→ flush:0 ─┐ └→ renderJoin ←──────────┘ ↓ ↓ searchData flushJoin + symbolIndex ``` - `renderEnvInit` (worker, `on_demand` + `unique_per_worker`) --- per-lane render environment setup: unpack the shared SAB, reconstruct the link-table Maps, instantiate the worker's own markdown-it. Declared as a `perWorkerDeps` on every `render:i` so the first render claim per lane pulls it in. - `render:i` (worker, dynamic) --- the per-chunk compute. Each one runs five sub-stages over its slice of `state.pages`: `renderPhase` (markdown-it body render) → `computeChunkSeo` (per-page SEO fields) → `templatePhase` (just-the-docs layout wrap) → `deriveOfflinePageCached` (offline HTML rewrite) → `deriveSearchEntries` (per-section search entries). Returns a delta containing `renderedContent` per page, plus the per-chunk search entries. - `flush:i` (worker, dynamic, `pin_to_predecessor`) --- writes the chunk's page HTML to disk on the same worker that rendered it. Online tree always; offline tree too unless `skipOffline`. The pinning is what makes per-chunk flush correct: the worker stores a batch on its own `_pendingFlush` FIFO at the end of `render`, and only the matching `flush:i` ever drains it. **When `--check` is on, the link and integrity check runs here too**, over the chunk's just-written HTML --- both trees' final strings are already decoded and in worker memory at that moment, so the check never writes ~270 MB out to read it back. -- `renderJoin` (main, `on_demand`) --- barrier that unblocks `searchData` and `writePdf`. `dispatch.submit()` sets its dep count to N *and* rewrites its `expected` list with every chunk name; the dep count alone is not a barrier over the submits. See [Pipeline Stages](Pipeline-Stages#renderjoin-main-on_demand). +- `renderJoin` (main, `on_demand`) --- barrier that unblocks `searchData`, `symbolIndex` and `writePdf`. `dispatch.submit()` sets its dep count to N *and* rewrites its `expected` list with every chunk name; the dep count alone is not a barrier over the submits. See [Pipeline Stages](Pipeline-Stages#renderjoin-main-on_demand). - `flushJoin` (main, `on_demand`) --- barrier that aggregates per-chunk write stats and gates `writeAux` + `writePdf`. ### Write @@ -265,6 +266,7 @@ Once `renderJoin` fires the auxiliary writers can run; once `flushJoin` fires th - `writeAssets` (main) --- writes generated CSS, copies vendored theme JS, copies the project's static files. Page HTML is *not* written here --- the per-chunk `flush:i` tasks already did that. Depends on `prepPageDirs` so the directory tree exists. - `searchData` (main) --- concatenates `state.searchChunks` (already populated by each `render:i`'s `submit()`), renumbers the global `i` index, writes `search-data.json`. The heavy work (heading split, content sanitisation, URL encoding) ran on the workers; this task only consolidates. +- `symbolIndex` (main) --- writes `tB/symbols.json`, the [symbol index](Building#the-symbol-index) the IDE help add-in reads. Reads the heading ids out of every `/tB/` page's `renderedContent`, joins them with the committed `builder/package-api.json`, and returns the index's URLs for the drift guard that `runBuild` runs once the build is done. Depends on `renderJoin` and `prepDest`; `checkReport` waits for it, because the file is in the online tree's index. - `writeAux` (main) --- writes redirect stubs + sitemap + robots.txt. Depends on `writeAssets`, `searchData`, `flushJoin`, `deriveRedirects`, `deriveSitemap`. - `writeOffline` (main) --- produces `_site-offline/`. The per-page offline HTML was already computed inside `render:i` and written by `flush:i`, so this task only handles the cross-cutting work: CSS url() rewriting, the just-the-docs.js AST patch, the `search-data.js` wrapper, theme assets, redirect stubs. - `writePdf` (main) --- assembles `_site-pdf/book.html` and copies the images it references. Depends on `flushJoin` (so `renderedContent` is filled), `resolveBookChapters` (so `bookData._chapters` is wired), and `dot` (so diagram SVGs are in `staticFiles`). @@ -288,7 +290,7 @@ For a one-page reference, every task and its execution locus: | Render | `render:i` | worker | Body + SEO + template + offline + search per chunk. | | Render | `flush:i` | worker (pinned) | Page HTML write, online + offline. | | Render | `renderJoin`, `flushJoin` | main | Barriers. | -| Write | `writeAssets`, `searchData`, `writeAux`, `writeOffline`, `writePdf` | main | I/O bound; cooperative async concurrency. | +| Write | `writeAssets`, `searchData`, `symbolIndex`, `writeAux`, `writeOffline`, `writePdf` | main | I/O bound; cooperative async concurrency. | Three pieces of work newly distributed to render workers under the current design: diff --git a/docs/Documentation/Building.md b/docs/Documentation/Building.md index 5f6180ec..ac151691 100644 --- a/docs/Documentation/Building.md +++ b/docs/Documentation/Building.md @@ -74,6 +74,7 @@ Each `.bat` opens with `@pushd "%~dp0"`, which is what lets it be invoked from a && node scripts/check_code_regions.mjs \ && node scripts/check_page_baseline.mjs \ && node scripts/check_book_coverage.mjs \ + && node scripts/check_symbol_index.mjs \ && node scripts/check_axe_patch_equiv.mjs `book.bat` has one step that is invisible from the command it ends with. `render-book.mjs` writes the PDF with a plain file write and never creates the directory above it, so `docs/_pdf/` has to exist first --- otherwise the render fails with `ENOENT` at the very last moment, after the whole page-breaking pass has already run. The deploy workflow does the same `mkdir` before its render, for the same reason: @@ -143,7 +144,8 @@ each gate's probes and a line per gate; every probe passes on a clean tree. Two more things are normal and read as alarming. A page-count **rise** rewrites `builder/page-baseline.json` and says so in the log --- that is the guard accepting new -work, and the changed file belongs in your commit. And `git status` after a build can show +work, and the changed file belongs in your commit. A new heading on a reference page does +the same to `builder/symbol-baseline.json`, for the [symbol index](#the-symbol-index). And `git status` after a build can show a regenerated diagram `.svg` or `gantt.svg`; both are committed artifacts, so a diff there means the build genuinely produced something different. @@ -346,6 +348,51 @@ for sources newer than the built tree. Without that, the build writing a raised baseline at the end of its own run would make the tree it had just produced report as stale. +## The symbol index and its drift guard +{: #the-symbol-index } + +The build also writes `tB/symbols.json`: every name the reference documents --- +statements, operators, attributes, and each package's modules, classes, members +and enumeration values --- with the URL of the page or heading that documents it. +The IDE help add-in looks up the name under the cursor in it. [Permanent +Links](Permanent-Links#the-symbol-index) describes the file. + +The entries come from the pages: a page's `permalink:`, and the id the build +gave a heading, read from the rendered HTML. What the pages cannot say --- the +kind of a member, the values of an enumeration --- comes from +`builder/package-api.json`, a committed snapshot of what the shipped packages +declare. The build never regenerates it, because that needs a twinBASIC +install; [`build_package_api.mjs`](Tools#build-package-api) does, when the +reference is re-indexed against a newer build. The summary line says how many +entries the index has, and how many public symbols no page documents. + +An installed add-in keeps its copy of the index, so a URL the index has given +out has to keep resolving. A page URL is protected by `redirect_from:`, but an +anchor is not --- rewording `### Add` to `### Add method` moves `#add` to +`#add-method`, and nothing else in the build notices, because the link check +only follows links made inside the site. So `builder/symbol-baseline.json` lists +every URL the index has published, and a build that loses one fails: + + ERROR: 1 URL(s) the symbol index has published are no longer in it: + /tB/Packages/tbIDE/ToolWindows#add + An installed IDE help add-in keeps these. A reworded heading moves its anchor: + pin the old one on it, as `{: #add }`. If the symbol is retired, follow + Permanent Links and record the removal in the same commit: + build.bat --update-symbol-baseline + node builder/tbdocs.mjs --src docs --check-audit-index --update-symbol-baseline + +The usual fix is the first one: keep the new wording and pin the old id on the +heading. New URLs need nothing --- an ordinary local build adds them to the +list and says so, and the changed file is committed with the pages. It writes +under the same three restrictions as the page-count guard above, and +`check_tree_fresh.mjs` skips it for the same reason. + +A page in a package folder that gives no entry at all is reported by name after +the summary. Its title names nothing the package declares --- most often +because the page's subject has an internal name, as the (Default) module's is +`_HiddenModule`. [`symbols:` in its frontmatter](Authoring#symbols) says what it +documents. + ## Checking accessibility check.bat @@ -408,8 +455,8 @@ say your own page came out right. Read that one in [`serve.bat`](#building-and-local-serving) as well. Skipping `test.bat` locally cannot let anything through: **both CI workflows run -all six unconditionally**, and always did --- CI invokes the scripts directly -and has never used the batch wrappers. +every one of them unconditionally**, and always did --- CI invokes the scripts +directly and has never used the batch wrappers. The split is by what a gate *interrogates*, not by what it happens to open. `check_axe_patch_equiv.mjs` loads a built page and needs Chromium, but only @@ -505,7 +552,7 @@ Two workflows cover the repository: - `.github/workflows/checks.yml` runs on every pull request into `staging` or `main`. It builds, checks, and stops --- it has no deploy rights at all. It also has no `paths:` filter, deliberately: an earlier `docs/**` filter skipped any pull request touching only `builder/` or `scripts/`, which is exactly the code most able to break the build, the link checker or asset vendoring. - `.github/workflows/tbdocs-gh-pages.yml` runs on every push to `staging` and on manual dispatch. It runs the same gates, then renders the PDF book and publishes `docs/_site/` to Pages. A manual dispatch additionally cuts a GitHub release with the offline site copy and the book attached. -Both run nine of the ten local gates --- all six of `test.bat`'s and three of `check.bat`'s four --- in the same relative order; the tenth is covered at the end of this section. What follows is the delta --- each item a way a clean local run can still come back red. +Both run every local gate but one --- all of `test.bat`'s, and all of `check.bat`'s except its freshness check --- in the same relative order; that one is covered at the end of this section. What follows is the delta --- each item a way a clean local run can still come back red. ### A missing image is an error there and a download here diff --git a/docs/Documentation/Permanent-Links.md b/docs/Documentation/Permanent-Links.md index 203da93a..bde6deb1 100644 --- a/docs/Documentation/Permanent-Links.md +++ b/docs/Documentation/Permanent-Links.md @@ -18,13 +18,39 @@ The stable, or machine-accessible, part of the documentation tree is rooted on t The guarantee is that a published `/tB/` URL is never **re-pointed**: it is not renamed, not restructured, and never made to resolve to a different symbol. A page that moves on disk keeps its `permalink`, which is why [the Default / Built-In split](../../tB/Packages/) changed no URL at all, and a page that takes over another's subject declares the old URL in `redirect_from:` rather than leaving it dead. -**One case falls outside it: a symbol that no longer exists in twinBASIC.** Its page is [removed](Authoring#removing-a-page) and its URL goes with it, and that is a deliberate decision rather than a routine edit --- nothing in the build will stop you, because the link check only resolves links made from inside the tree and no link inside the tree survives the removal. Three things are expected of one: +**One case falls outside it: a symbol that no longer exists in twinBASIC.** Its page is [removed](Authoring#removing-a-page) and its URL goes with it, and that is a deliberate decision rather than a routine edit. The link check would not notice, because it only resolves links made from inside the tree and no link inside the tree survives the removal; what stops the build is the [symbol index](#the-symbol-index)'s list of every URL it has published, until a run with `--update-symbol-baseline` records the removal. Three things are expected of one: - **A redirect wherever anything can carry the URL.** If another page covers the subject now, it takes a `redirect_from:` entry for the old URL. Only a URL nothing can stand in for is allowed to 404. - **The entry comes out of this page in the same commit.** This page is the contract; a URL listed here that no longer resolves is worse than one that was never listed, because it is the thing an implementer reads to decide what is safe to link to. - **The commit message says which URL was retired.** Consumers of the contract are outside this repository --- the IDE help system above all --- and a commit message naming the URL is the only record they can be pointed at. -Renaming a heading is the quieter version of the same thing: `redirect_from:` emits whole-page stubs and has no fragment remapping, so an anchor that some page links into breaks silently when its heading is reworded. Anchors named in the sections below are part of the contract for the same reason the URLs are. +Renaming a heading is the quieter version of the same thing: `redirect_from:` emits whole-page stubs and has no fragment remapping, so an anchor that some page links into breaks silently when its heading is reworded. Anchors named in the sections below are part of the contract for the same reason the URLs are, and so is every anchor in the symbol index --- a build that loses one fails, and the fix is to pin the old id on the reworded heading with `{: #old-id }` ([Renaming a heading](Authoring#renaming-a-heading-without-breaking-its-links)). + +## /tB/symbols.json --- the symbol index +{: #the-symbol-index } + +Every name the reference documents, and the URL of the page or heading that documents it, in one file the build generates: `/tB/symbols.json`. The IDE help add-in looks up the name under the cursor in it. The file's own URL is part of this contract, and so is every URL in it. + +```json +{ + "format": 1, + "api": 983, + "packages": {"VBA": "VBA", "Assert": "Assert", "cefPackage": "CEF", ...}, + "interfaces": {"VBA._Collection": "VBA.Collection", "tbIDE.IToolWindowsV1": "tbIDE.ToolWindows", ...}, + "symbols": [ + {"name": "Add", "package": "tbIDE", "container": "ToolWindows", "kind": "method", "url": "/tB/Packages/tbIDE/ToolWindows#add"}, + ... + ] +} +``` + +- **`format`** changes when an entry's fields change meaning, so a reader holding a file it does not understand can tell. +- **`api`** is the twinBASIC build whose packages the file's kinds and members were read from. +- **`packages`** maps each package's name as code writes it --- `Assert`, `cefPackage` --- to the name its pages use. +- **`interfaces`** maps an interface to the class whose members it declares. The compiler names a member by the interface it is declared on --- hover over `Collection.Add` says `VBA._Collection` --- so a reader that has the compiler's answer looks the interface up here first. +- **`symbols`** has one entry per name and URL. `name` is as the package declares it and is matched without regard to case; `package` and `container` are null for the language itself; and `url` is a path below the site's root: a page's permalink exactly as written, with the heading's id after `#` for a member documented under a heading. `kind` is one of `statement`, `keyword`, `operator`, `directive`, `attribute`, `package`, `module`, `class`, `control`, `interface`, `enum`, `type`, `object`, `function`, `sub`, `property`, `method`, `event`, `constant`, `variable`, `field`, `enumvalue`, `delegate` and `member` --- the last for a name the pages document and the packages do not declare. + +A name can have several entries, and many do: `Add` is a method of a dozen classes, and `Print` is a statement, a method of six classes and a member of `Debug`. The index does not choose between them; its reader does. The `$` form of a function has the entry of its base --- `Left$` goes to `Left` --- as the section on modules below describes. ## /tB/Core/\ diff --git a/docs/Documentation/Pipeline-Stages.md b/docs/Documentation/Pipeline-Stages.md index 0bac48db..261b3ed9 100644 --- a/docs/Documentation/Pipeline-Stages.md +++ b/docs/Documentation/Pipeline-Stages.md @@ -409,6 +409,17 @@ searchData.expected = ["renderJoin", "prepDest"] Calls `writeSearchDataFromChunks(state.searchChunks, destRoot)` from `search.mjs`. Flattens the per-chunk entry arrays, renumbers the global `i` index sequentially, writes `assets/js/search-data.json`. Returns `{ entries, json }`. The heavy work (heading split, content sanitisation, URL encoding) ran on the workers; this task only concatenates. +### `symbolIndex` (main) + +```js +symbolIndex.expected = ["renderJoin", "prepDest"] +symbolIndex.execute() → { entries, urls, gaps, unplaced } +``` + +Writes `tB/symbols.json`, the [symbol index](Building#the-symbol-index). Reads `builder/package-api.json` --- the build fails, naming `scripts/build_package_api.mjs`, if it is missing --- then calls `symbolPages(state.pages)`, `deriveSymbolIndex({ pages, api })` and `serializeSymbolIndex(...)` from `symbols.mjs`. `renderJoin` is the dependency that matters: an entry's anchor is the id the render gave its heading, read out of `renderedContent`, never computed a second time. ~50 ms over the reference's pages. With `--symbol-gaps ` it also writes `reportableGaps(...)` there as JSON. + +`urls` is every distinct URL in the index. `runBuild` hands it to `checkSymbolBaseline` from `symbol-baseline.mjs` after the check report, beside the page-count guard; `unplaced` names the package pages that gave no entry, which the summary prints. `checkReport` waits for this task, since `tB/symbols.json` is in the online tree's index and `--check-audit-index` must not look for it early. + ### `writeAux` (main) ```js @@ -476,7 +487,7 @@ Checks `_site-pdf/book.html` as a single one-document chunk, against a tree inde ### `checkReport` (main, terminal) ```js -checkReport.expected = ["linkJoin", "checkBook", "scss"] +checkReport.expected = ["linkJoin", "checkBook", "scss", "symbolIndex"] checkReport.execute({ linkJoin, checkBook }) → void ``` @@ -486,7 +497,7 @@ Formats every tree's result, decides the exit code, and optionally writes the ma - **`--check-findings `** writes the findings as JSON for [`check_links_diff.mjs`](Tools#check-links-diff) to diff against the standalone script's. Written *before* the exit code is decided, so a failing check still produces the file that says what it found. - **`--check-audit-index`** additionally diffs the tree index the build derived from its own records against what actually landed on disk. This is the one failure mode the two-checker findings comparison structurally cannot see: a *missing* index entry turns a working link into a reported break, which is loud, but a *spurious* one makes the oracle answer "exists" for a path that 404s in production, and on a clean site nothing links to a path that does not exist, so nothing would ever notice. Cost is one `readdir` per tree. -`scss` is in `expected` for a reason worth keeping: `--check-audit-index` reads the tree off disk, and the combined stylesheet is in the index from the moment `dispatch` builds it. Without that edge the audit can run first and report the file as "indexed but not on disk" --- which it was, for another few milliseconds. On the real site `scss` finishes long before the check; on a three-page fixture it does not, and the audit failed the build over nothing. +`scss` is in `expected` for a reason worth keeping: `--check-audit-index` reads the tree off disk, and the combined stylesheet is in the index from the moment `dispatch` builds it. Without that edge the audit can run first and report the file as "indexed but not on disk" --- which it was, for another few milliseconds. On the real site `scss` finishes long before the check; on a three-page fixture it does not, and the audit failed the build over nothing. `symbolIndex` is there for the same reason: `tB/symbols.json` is in the online tree's index too. --- @@ -777,6 +788,25 @@ For **renderer rules**, order inverts. Both image plugins capture the current `m | `renderEntryString` | `(entry) → string` | Per-entry JSON shape matching the upstream template output byte-for-byte. | | `searchIncludes` | `(page) → boolean` | The opt-out predicate: a page is indexed when it has a `title` and does not set `search_exclude: true`. Exported so `linkJoin` exempts the same pages the generator skipped. | +### `symbols.mjs` + +| Symbol | Signature | Description | +|---|---|---| +| `symbolPages` | `(pages) → object[]` | The pages under `/tB/`, each as `{ src, url, title, parent, symbols, excludeFromDocs, headings }`, `headings` read from `renderedContent`. | +| `headingsOf` | `(html) → { level, id, text }[]` | Every heading of a rendered page, in order, with the id the render gave it. A scan for `` | The symbol index's drift guard: fails on a URL `builder/symbol-baseline.json` has and `urls` does not, rewrites the file when `urls` adds one and `write` is set, and does nothing for a source root other than `docs`. | +| `SYMBOL_BASELINE_PATH` | `URL` | `builder/symbol-baseline.json`. | + ### `offline.mjs` | Symbol | Signature | Description | @@ -911,6 +941,9 @@ The handler table is built from the imported `HANDLERS` constant: | `auditIndex` | `false` | Implies `check`. Additionally diff the derived tree index against what landed on disk. | | `checkFindings` | `null` | Implies `check`. Path to write the findings JSON to. | | `fetchAssets` | `null` | Force remote-asset vendoring on or off. `null` means "download unless `$CI` is set". | +| `updatePageBaseline` | `false` | Record this build's page and static-file counts in `builder/page-baseline.json` whichever way they moved. | +| `updateSymbolBaseline` | `false` | Record this build's symbol-index URLs in `builder/symbol-baseline.json` whichever left it. | +| `symbolGaps` | `null` | Path to write the public symbols no page documents to, as JSON. | | `serve` | `false` | Start the dev server instead of the one-shot build. | | `port` | `4000` | HTTP port for serve mode. | | `pool` | `null` | Optional external `WorkerPool`. Set by `serve.mjs` to reuse the pool across rebuilds. | diff --git a/docs/Documentation/Tools.md b/docs/Documentation/Tools.md index fb75abd4..64945db2 100644 --- a/docs/Documentation/Tools.md +++ b/docs/Documentation/Tools.md @@ -15,7 +15,7 @@ One-line-per-tool reference for every executable in the documentation repository ## Batch wrappers at the repository root {: #batch-wrappers } -All seven sit at the repository root, beside `package.json` --- not under `docs/`. Each uses `@pushd "%~dp0"` to run from that root regardless of where it is invoked from, and each entry below gives the POSIX equivalent of what it runs. Those equivalents have no `pushd` in front of them, so **run them from the repository root** --- `tbdocs`'s `--src docs`, [`check_publish_policy.mjs`](#check-publish-policy)'s default source root, and every path handed to [`render-book.mjs`](#bookrender-bookmjs) are all resolved against the working directory. `examples.bat` and `addin-test.bat` are the exceptions to "each entry below gives the POSIX equivalent": they need a twinBASIC install and drive the IDE, so they are Windows-only, and neither is part of the site build. Three other tools are Windows-specific for the same reason and are likewise not part of it: [`scripts/tbbuild.mjs`](#tbbuild) and [`scripts/tbrun.mjs`](#tbrun), which drive the twinBASIC IDE, and [`census_attributes.mjs`](#census-attributes), which runs the twinBASIC compiler's `export` verb --- though that one is cross-platform when given an already-exported tree with `--src`. Nothing else in the repository is: `tbdocs` and every gate in both wrappers is a Node script, and CI runs all of them on `ubuntu-latest` except [`check_tree_fresh.mjs`](#check-tree-fresh), which guards against a failure mode CI cannot have. +All seven sit at the repository root, beside `package.json` --- not under `docs/`. Each uses `@pushd "%~dp0"` to run from that root regardless of where it is invoked from, and each entry below gives the POSIX equivalent of what it runs. Those equivalents have no `pushd` in front of them, so **run them from the repository root** --- `tbdocs`'s `--src docs`, [`check_publish_policy.mjs`](#check-publish-policy)'s default source root, and every path handed to [`render-book.mjs`](#bookrender-bookmjs) are all resolved against the working directory. `examples.bat` and `addin-test.bat` are the exceptions to "each entry below gives the POSIX equivalent": they need a twinBASIC install and drive the IDE, so they are Windows-only, and neither is part of the site build. Four other tools are Windows-specific for the same reason and are likewise not part of it: [`scripts/tbbuild.mjs`](#tbbuild) and [`scripts/tbrun.mjs`](#tbrun), which drive the twinBASIC IDE, and [`census_attributes.mjs`](#census-attributes) and [`build_package_api.mjs`](#build-package-api), which run the twinBASIC compiler's `export` verb --- though those two are cross-platform when given an already-exported tree with `--src`. Nothing else in the repository is: `tbdocs` and every gate in both wrappers is a Node script, and CI runs all of them on `ubuntu-latest` except [`check_tree_fresh.mjs`](#check-tree-fresh), which guards against a failure mode CI cannot have. ### build.bat @@ -65,7 +65,7 @@ One of the four does not mean the same thing locally as it does in CI, on any pl test.bat -The tests the toolchain has to pass. Seven steps, each stopping the run if it fails: +The tests the toolchain has to pass. Eight steps, each stopping the run if it fails: 1. [`scripts/check_publish_policy.mjs`](#check-publish-policy) --- verifies the publish allowlist still refuses the types it is meant to. Needs neither a browser nor a built tree, so it goes first. 2. [`scripts/check_gate_lists.mjs`](#check-gate-lists) --- verifies the two gate lists on this page still match the wrappers that run them. @@ -73,7 +73,8 @@ The tests the toolchain has to pass. Seven steps, each stopping the run if it fa 4. [`scripts/check_code_regions.mjs`](#check-code-regions) --- verifies no pre-render rewrite alters the contents of a code fence or code span. 5. [`scripts/check_page_baseline.mjs`](#check-page-baseline) --- verifies the page-count drift guard still refuses a fall. 6. [`scripts/check_book_coverage.mjs`](#check-book-coverage) --- verifies the build still warns about a page `docs/_book.yml` does not mention. -7. [`scripts/check_axe_patch_equiv.mjs`](#check-axe-patch-equiv) --- verifies the vendored axe source patch still produces identical colour values. +7. [`scripts/check_symbol_index.mjs`](#check-symbol-index) --- verifies the symbol index still places each kind of symbol, and its drift guard still refuses a lost URL. +8. [`scripts/check_axe_patch_equiv.mjs`](#check-axe-patch-equiv) --- verifies the vendored axe source patch still produces identical colour values. POSIX: @@ -83,9 +84,10 @@ POSIX: && node scripts/check_code_regions.mjs \ && node scripts/check_page_baseline.mjs \ && node scripts/check_book_coverage.mjs \ + && node scripts/check_symbol_index.mjs \ && node scripts/check_axe_patch_equiv.mjs -**Five of the seven cannot be affected by an edit confined to `docs/`**, which is why they are separate from `check.bat`. Run this one when the change touches `builder/`, `scripts/`, `book/`, `eval/` or `wisdom/`. Both CI workflows run all seven unconditionally, as they always did, so skipping it locally cannot let a tooling regression reach `staging`. +**Six of the eight cannot be affected by an edit confined to `docs/`**, which is why they are separate from `check.bat`. Run this one when the change touches `builder/`, `scripts/`, `book/`, `eval/` or `wisdom/`. Both CI workflows run all eight unconditionally, as they always did, so skipping it locally cannot let a tooling regression reach `staging`. The two exceptions are [`check_code_regions.mjs`](#check-code-regions) and [`check_gate_lists.mjs`](#check-gate-lists), which reads this page. The first is worth knowing in detail. Its corpus sweep tokenises every markdown file under `docs/`, so a page that provokes a rewrite into altering a code region fails it. Its fixed probes are a different matter: they run against their own sources whatever the tree holds, and they cover the *mirror* fault, where a rewrite silently stops firing. The sweep cannot see that one --- text the rewrite skipped is stashed and restored unchanged, so every region still matches. Add a page with an unusual code construct and run `test.bat`, but read the built page too. @@ -192,7 +194,8 @@ Full invocation: [--profile-offline] [--check] [--no-check] [--check-audit-index] [--check-findings ] - [--update-page-baseline] + [--update-page-baseline] [--update-symbol-baseline] + [--symbol-gaps ] [--serve] [--port ] `build.bat` passes `--src docs --check-audit-index`, and forwards anything else given to it. @@ -214,6 +217,8 @@ Full invocation: | `--check-audit-index` | Implies `--check`, and additionally diffs the tree index the build derives from its own records against what landed on disk. A spurious entry makes the link oracle answer "exists" for a path that 404s in production, and nothing else would notice. This is what `build.bat` passes. | | `--check-findings ` | Implies `--check`, and writes the findings as JSON for a tool to read. Used by [`scripts/check_links_diff.mjs`](#check-links-diff). | | `--update-page-baseline` | Record this build's page and static-file counts in `builder/page-baseline.json` as the drift guard's new baseline, in whichever direction they moved. An ordinary build raises the baseline by itself; only a **fall** needs this flag, because a fall is what the guard exists to catch. See [the page-count drift guard](Building#the-page-count-drift-guard). | +| `--update-symbol-baseline` | Record this build's symbol-index URLs in `builder/symbol-baseline.json`, whichever left it. New URLs are recorded by an ordinary build; only a URL the index has **stopped** publishing needs this flag --- and usually needs a pinned heading id instead. See [the symbol index and its drift guard](Building#the-symbol-index). | +| `--symbol-gaps ` | Write the public symbols no page documents to a JSON file: each one's package, container, name, kind, and the page its container is on. Names a package's `exclude_from_docs:` lists are left out. | | `--stall-timeout ` | How long the build waits with no task completing before it gives up, names the outstanding tasks and exits 1. Default: 120. `0` disables the watchdog and returns the build to hanging in silence on a wedged worker. See [when a build stops instead of failing](Building#when-a-build-stops). | | `--serve` | Start the long-lived dev server (watch + rebuild + SSE live-reload). Offline and PDF passes are skipped each rebuild. | | `--port ` | HTTP port for `--serve` mode. Default: 4000. | @@ -463,6 +468,17 @@ Eight probes give each of the five findings a fault to report: a page with no en Exits 1 on any failed probe, 2 if it cannot run. +### check_symbol_index.mjs +{: #check-symbol-index } + + node scripts/check_symbol_index.mjs + +Verifies the [symbol index](Building#the-symbol-index) still places each kind of symbol, and that its drift guard still refuses a URL the index has stopped publishing. Every probe is a fixture of its own --- a few lines of twinBASIC, a page or three, a scratch baseline file --- so it needs no built tree and no twinBASIC install, and never touches `builder/symbol-baseline.json`. Under a second. + +A build that indexes the reference cleanly says nothing about the rules that did not fire on it, so each rule is asserted against the case that made it necessary. The `.twin` scanner's: a `Type` whose `Sub`s have bodies, an `Interface` line inside a `CoClass`, `[Hidden]` on a module whose members are global, a `$` name escaped in brackets. The derivation's: a member on a page of its own and under a heading, an inherited member found on its declaring type's page, a page filed under one module and declared in another, a `$` form, a `## Properties` heading on a type that has a `Properties` property, and the ellipsis the typographer puts in a Core page's heading. And the guard's: a lost anchor fails and is named, and CI never writes the list. + +Exits 1 on any failed probe, 2 if it cannot run. + ### check_axe_patch_equiv.mjs {: #check-axe-patch-equiv } @@ -524,6 +540,16 @@ Regenerates the subset webfonts under `docs/assets/fonts/` from pinned upstream Measures Inter's advance widths in a browser and writes `builder/inter-metrics.json`, the table `builder/dot-metrics.mjs` installs into Graphviz before any layout runs. The widths are measured from the committed `.woff2` files rather than read out of the font binary, because the browser's shaped advance is the number the layout has to match. Development tooling; the JSON is committed and the build never runs the generator. Run it after [`build_fonts.py`](#build-fonts) touches Inter --- forgetting is not silent, but it surfaces as [`check_dot_fit.mjs`](#check-dot-fit) failing rather than as anything naming the metrics. It measures Inter by name, so giving the diagrams a different face means editing this script, not only rerunning it; see [Changing a typeface](Builder#changing-a-typeface). +### build_package_api.mjs +{: #build-package-api } + + node scripts/build_package_api.mjs # regenerate + node scripts/build_package_api.mjs --check # fail if stale + +Writes `builder/package-api.json`: every type the packages of a twinBASIC install declare, public or not, and the public members of each with their kinds. The [symbol index](Building#the-symbol-index) takes its entries from the pages and this file annotates them --- the kind of a member documented on a page of its own, an enumeration's values, the interface a CoClass's members are declared on --- and says which public symbols no page documents. Development tooling like [`build_dot_metrics.mjs`](#build-dot-metrics): the JSON is committed and the build never runs the generator, because running it needs a twinBASIC install, so it is Windows-only in the way [`census_attributes.mjs`](#census-attributes) is. Run it when the reference is re-indexed against a newer build, and commit the result with the pages. + +It shares [`census_attributes.mjs`](#census-attributes)'s export and cache, and takes the same `--ide`, `--src`, `--cache` and `--refresh` flags; `--out` writes elsewhere. Packages are keyed by the name code uses for them --- the project name, which is not always the folder's: TwinBasicAssertions is `Assert`, and the three CEF builds are one `cefPackage`, whose APIs the tool checks are identical. Exits 0 when written or up to date, 1 when `--check` finds the file stale, and 2 when the install or an export cannot be read. + ### convert_em_dash_separators.mjs {: #convert-em-dash-separators } diff --git a/docs/Reference/Core/Comparison-Operators.md b/docs/Reference/Core/Comparison-Operators.md index ab1fd40a..b3b53099 100644 --- a/docs/Reference/Core/Comparison-Operators.md +++ b/docs/Reference/Core/Comparison-Operators.md @@ -4,6 +4,7 @@ parent: Operators grand_parent: Reference Section permalink: /tB/Core/Comparison-Operators vba_attribution: true +symbols: ["=", "<>", "<", "<=", ">", ">="] --- # Comparison operators {: .no_toc } diff --git a/docs/Reference/Core/IntegerDivide.md b/docs/Reference/Core/IntegerDivide.md index bc41d395..ee6f7ca0 100644 --- a/docs/Reference/Core/IntegerDivide.md +++ b/docs/Reference/Core/IntegerDivide.md @@ -5,7 +5,7 @@ grand_parent: Reference Section permalink: /tB/Core/IntegerDivide vba_attribution: true --- -# \ and \= operators +# \\ and \\= operators {: .no_toc } Used to divide two numbers and return an integer result. The compound form **\\=** divides-and-assigns in one step. diff --git a/docs/Reference/Default/VBA/HiddenModule/index.md b/docs/Reference/Default/VBA/HiddenModule/index.md index 3913a6d6..c98e9057 100644 --- a/docs/Reference/Default/VBA/HiddenModule/index.md +++ b/docs/Reference/Default/VBA/HiddenModule/index.md @@ -5,6 +5,7 @@ permalink: /tB/Modules/HiddenModule/ redirect_from: - /tB/Modules/_HiddenModule has_toc: false +symbols: [_HiddenModule] --- # (Default) module diff --git a/docs/assets/images/dot/scheduler-dag.dot b/docs/assets/images/dot/scheduler-dag.dot index 033c3f66..6a2dc4b2 100644 --- a/docs/assets/images/dot/scheduler-dag.dot +++ b/docs/assets/images/dot/scheduler-dag.dot @@ -60,6 +60,7 @@ digraph scheduler { FJ [label=[M]>, fillcolor="#fef7e0", color="#f9ab00"] WA [label=[M]>, fillcolor="#fef7e0", color="#f9ab00"] SDt [label=[M]>, fillcolor="#fef7e0", color="#f9ab00"] + SYM [label=[M]>, fillcolor="#fef7e0", color="#f9ab00"] WX [label=[M]>, fillcolor="#fef7e0", color="#f9ab00"] WO [label=[M]>, fillcolor="#fef7e0", color="#f9ab00"] WP [label=[M]>, fillcolor="#fef7e0", color="#f9ab00"] @@ -116,6 +117,9 @@ digraph scheduler { RJ -> SDt PD -> SDt + RJ -> SYM + PD -> SYM + WA -> WX SDt -> WX FJ -> WX @@ -140,4 +144,5 @@ digraph scheduler { LJ -> CR CB -> CR SCSS -> CR + SYM -> CR } diff --git a/docs/assets/images/dot/scheduler-dag.svg b/docs/assets/images/dot/scheduler-dag.svg index 4af814d2..06adefac 100644 --- a/docs/assets/images/dot/scheduler-dag.svg +++ b/docs/assets/images/dot/scheduler-dag.svg @@ -1,62 +1,62 @@ - + scheduler CF - -config -[M] + +config +[M] HI - -highlighterInit -[M] + +highlighterInit +[M] CF->HI - - + + DI - -discover -[M] + +discover +[M] CF->DI - - + + BI - -buildInfo -[W] + +buildInfo +[W] DP - -dispatch -[M] + +dispatch +[M] BI->DP - - + + @@ -94,484 +94,509 @@ LD - -loadData -[M] + +loadData +[M] HI->LD - - + + WA - -writeAssets -[M] + +writeAssets +[M] HI->WA - - + + - + WP - -writePdf -[M] + +writePdf +[M] - + HI->WP - - + + RBC - -resolveBookChapters -[M] + +resolveBookChapters +[M] LD->RBC - - + + WI - -warmInit -[W] per-lane -on_demand, idle + +warmInit +[W] per-lane +on_demand, idle REI - -renderEnvInit -[W] per-lane + +renderEnvInit +[W] per-lane WI->REI - - + + VA - -vendorAssets -[M] + +vendorAssets +[M] DI->VA - - + + NV - -nav -[M] + +nav +[M] DI->NV - - + + BU - -buildInit -[M] + +buildInit +[M] DI->BU - - + + MI - -markdownInit -[M] + +markdownInit +[M] DI->MI - - + + DR - -deriveRedirects -[M] + +deriveRedirects +[M] DI->DR - - + + VA->MI - - + + VA->WA - - + + NV->DP - - + + BU->DP - - + + MI->DP - - + + DR->DP - - + + - + WX - -writeAux -[M] + +writeAux +[M] - + DR->WX - - + + DT - -dot -[W] + +dot +[W] DT->DP - - + + DT->WA - - + + - + DT->WP - - + + DSi - -deriveSitemap -[M] + +deriveSitemap +[M] DSi->RBC - - + + - + DSi->WX - - + + - + RBC->WP - - + + DP->DSi - - + + PD - -prepDest -[M] + +prepDest +[M] DP->PD - - + + DP->REI - - + + Ri - -render:i -[W] + +render:i +[W] DP->Ri - - + + PPD - -prepPageDirs -[M] + +prepPageDirs +[M] PD->PPD - - + + PD->SCSS - - + + SDt - -searchData -[M] + +searchData +[M] PD->SDt - - + + + + + +SYM + +symbolIndex +[M] + + + +PD->SYM + + Fi - -flush:i -[W] pinned + +flush:i +[W] pinned PPD->Fi - - + + PPD->WA - - + + REI->Ri - - + + RJ - -renderJoin -[M] + +renderJoin +[M] Ri->RJ - - + + Ri->Fi - - + + RJ->SDt - - + + + + + +RJ->SYM + + - + RJ->WP - - + + - + CR - -checkReport -[M] + +checkReport +[M] - + SCSS->CR - - + + FJ - -flushJoin -[M] + +flushJoin +[M] Fi->FJ - - + + - + FJ->WX - - + + - + FJ->WP - - + + - + LJ - -linkJoin -[M] + +linkJoin +[M] - + FJ->LJ - - + + - + WA->WX - - + + - + WO - -writeOffline -[M] + +writeOffline +[M] - + WA->WO - - + + - + SDt->WX - - + + + + + +SYM->CR + + - + WX->WO - - + + - + WX->LJ - - + + - + WO->LJ - - + + - + CB - -checkBook -[M] + +checkBook +[M] - + WP->CB - - + + - + LJ->CR - - + + - + CB->CR - - + + diff --git a/scripts/build_package_api.mjs b/scripts/build_package_api.mjs new file mode 100644 index 00000000..5251576d --- /dev/null +++ b/scripts/build_package_api.mjs @@ -0,0 +1,183 @@ +#!/usr/bin/env node +// Record the public API of the packages a twinBASIC install ships, as the +// package half of the documentation's symbol index. +// +// node scripts/build_package_api.mjs # regenerate builder/package-api.json +// node scripts/build_package_api.mjs --check # fail if it is stale +// +// --ide the install root, or its twinBASIC.exe (default: $TB_IDE, +// else the newest Desktop\twinBASIC_IDE_BETA_) +// --src read an existing export of the packages instead +// --cache where exports are kept (default %TEMP%\tb-census\beta-, +// shared with builder/census_attributes.mjs) +// --refresh export again even if the cache has this build +// --out write somewhere other than builder/package-api.json +// +// Exit codes: 0 written (or up to date, with --check), 1 stale (--check), 2 the +// tool failed. +// +// Dev tooling, not part of the render pipeline, in the same way as +// scripts/build_dot_metrics.mjs: tbdocs reads builder/package-api.json and never +// runs this, because running it needs a twinBASIC install and CI has none. +// Regenerate it when the documentation is re-indexed against a newer build, and +// commit it with the pages that change. +// +// WHAT THE BUILD TAKES FROM IT. The symbol index (builder/symbols.mjs) takes its +// entries and their URLs from the pages. Four things only the packages know: +// +// - the kind of a member documented on a page of its own -- `Collection.Add` +// is a method and `_App.Path` a property, and nothing on either page says so +// in a form a build can read; +// - the values of an enumeration, which pages list in tables, not headings; +// - the interface a CoClass's members are declared on, since that is what the +// compiler names a member by: hover says `in VBA._Collection` for +// `Collection.Add` and `in tbIDE.IToolWindowsV1` for `ToolWindows.Add`; +// - which public symbols have no page, which the build reports. +// +// So the file holds every type each package declares, marked when it is not +// public, with the public members of each that code can reach: a public +// type's, and those of a non-public type a public one exposes -- `CheckBox` +// declares almost nothing itself and gets its members from `CheckBoxBaseCtl`, +// `ButtonBase` and three levels more, and `Clipboard`'s are on a Private +// Interface. apiSnapshot in scripts/lib/twin-api.mjs says which is which. + +import { existsSync, readdirSync, readFileSync, statSync, writeFileSync } from "node:fs"; +import path from "node:path"; +import { fileURLToPath } from "node:url"; +import { buildNumber, findIde } from "./lib/tb-install.mjs"; +import { defaultCache, exportPackages, packageName } from "./lib/tb-packages.mjs"; +import { apiSnapshot, parsePackage } from "./lib/twin-api.mjs"; + +const REPO = path.dirname(path.dirname(fileURLToPath(import.meta.url))); +const OUT = path.join(REPO, "builder", "package-api.json"); + +const argv = process.argv.slice(2); +const flag = (n) => argv.includes(`--${n}`); +const opt = (n) => { const i = argv.indexOf(`--${n}`); return i < 0 ? undefined : argv[i + 1]; }; +const die = (code, msg) => { console.error(msg); process.exit(code); }; + +function sources() { + // --src takes a folder of exports, or a cache holding `packages\` and more: + // a folder with a Settings file is an export, and one without is looked into. + const src = opt("src"); + if (src) { + if (!existsSync(src) || !statSync(src).isDirectory()) die(2, `not a directory: ${src}`); + const packages = []; + const look = (dir, depth) => { + for (const e of readdirSync(dir, { withFileTypes: true })) { + if (!e.isDirectory()) continue; + const d = path.join(dir, e.name); + if (existsSync(path.join(d, "Settings"))) packages.push({ name: packageName(e.name), dir: d }); + else if (depth > 0) look(d, depth - 1); + } + }; + look(src, 1); + if (!packages.length) die(2, `no exported package under ${src}`); + return { build: null, packages }; + } + // --ide and TB_IDE may name the install root or the executable in it. + let ide = findIde(opt("ide")); + if (ide && !/\.exe$/i.test(ide)) ide = path.join(ide, "twinBASIC.exe"); + if (!ide || !existsSync(ide)) die(2, "no twinBASIC install found; pass --ide or set TB_IDE"); + const root = path.dirname(ide); + const build = buildNumber(ide); + const cache = opt("cache") ?? defaultCache(build); + console.error(`install : ${root}`); + console.error(`cache : ${cache}`); + let r; + try { + r = exportPackages({ root, cache, refresh: flag("refresh"), log: (l) => console.error(l) }); + } catch (e) { + die(2, e.message); + } + if (r.failed.length) die(2, `${r.failed.length} package(s) did not export; the API would be incomplete`); + return { build, packages: r.projects.map((p) => ({ name: p.name, dir: p.dir })) }; +} + +// ------------------------------------------------------------------ the model + +// A package is known to code, and to the compiler, by its project name, which +// is not always its folder's: TwinBasicAssertions is `Assert`, all three CEF +// builds are `cefPackage`, and AppGlobalClassObject is `AppGlobalClassProject`. +// Hover says `in Assert.Exact`, so the snapshot is keyed by the project name, +// and the exports each name covers are listed under it. +function projectName(dir, fallback) { + try { + const m = /"project\.name"\s*:\s*"([^"]+)"/.exec(readFileSync(path.join(dir, "Settings"), "utf8")); + if (m) return m[1]; + } catch { /* no Settings: an export that is not a project */ } + return fallback; +} + +function readAll(packages) { + const parsed = new Map(); // project name -> types + const exportsOf = new Map(); // project name -> export names + const problems = []; + // By code unit, not localeCompare: the file is committed, and a regeneration + // on a machine with another locale must not reorder it. + for (const p of [...packages].sort((a, b) => (a.name < b.name ? -1 : a.name > b.name ? 1 : 0))) { + const project = projectName(p.dir, p.name); + const r = parsePackage(p.dir); + if (parsed.has(project)) { + // Several exports under one name must declare one API, or the name + // would stand for two things. + const same = JSON.stringify(strip(parsed.get(project))) === JSON.stringify(strip(r.types)); + if (!same) die(2, `${p.name} and ${exportsOf.get(project).join(", ")} are all '${project}' but declare different APIs`); + } else { + parsed.set(project, r.types); + for (const x of r.problems) problems.push({ pkg: project, ...x }); + } + exportsOf.set(project, [...(exportsOf.get(project) ?? []), p.name]); + } + return { parsed, exportsOf, problems }; +} + +// A type as declared, without where: two builds of one package differ in +// their line numbers. +const strip = (types) => types.map(({ line, members, ...t }) => ({ ...t, members: members.map(({ line: _, ...m }) => m) })); + +// One type to a line, so that a regeneration against a newer build diffs as the +// types that changed rather than as a rewritten file. +function serialize({ build, packages, exportsOf }) { + const lines = ["{", ` "build": ${JSON.stringify(build)},`, ` "packages": {`]; + const names = Object.keys(packages); + names.forEach((pkg, i) => { + lines.push(` ${JSON.stringify(pkg)}: {`); + lines.push(` "exports": ${JSON.stringify(exportsOf.get(pkg))},`); + lines.push(` "types": [`); + const types = packages[pkg]; + types.forEach((t, j) => lines.push(` ${JSON.stringify(t)}${j < types.length - 1 ? "," : ""}`)); + lines.push(" ]", ` }${i < names.length - 1 ? "," : ""}`); + }); + lines.push(" }", "}"); + return lines.join("\n") + "\n"; +} + +// --------------------------------------------------------------------- main + +const { build, packages } = sources(); +const { parsed, exportsOf, problems } = readAll(packages); +const { packages: model, unresolved } = apiSnapshot(parsed); +const text = serialize({ build, packages: model, exportsOf }); + +let types = 0; +let members = 0; +for (const list of Object.values(model)) { + types += list.length; + for (const t of list) members += Object.keys(t.members ?? {}).length + (t.values?.length ?? 0) + (t.fields?.length ?? 0); +} +console.error(`read : ${packages.length} package(s), ${types} type(s), ${members} member(s)`); +for (const p of problems.slice(0, 20)) console.error(` ? ${p.pkg} ${p.file}:${p.line} ${p.why}`); +if (problems.length > 20) console.error(` ? ... and ${problems.length - 20} more`); +for (const u of [...new Set(unresolved)].slice(0, 20)) console.error(` ? not found: ${u}`); + +const out = opt("out") ?? OUT; +if (flag("check")) { + const committed = existsSync(out) ? readFileSync(out, "utf8").replace(/\r\n/g, "\n") : null; + if (committed === text) { console.error(`up to date: ${path.relative(REPO, out)}`); process.exit(0); } + console.error(`STALE: ${path.relative(REPO, out)} differs from what BETA ${build ?? "?"} gives; ` + + `run node scripts/build_package_api.mjs and commit the result`); + process.exit(1); +} +writeFileSync(out, text, "utf8"); +console.error(`wrote : ${path.relative(REPO, out)} (${(text.length / 1024).toFixed(0)} KB)`); diff --git a/scripts/check_symbol_index.mjs b/scripts/check_symbol_index.mjs new file mode 100644 index 00000000..8dc7aec9 --- /dev/null +++ b/scripts/check_symbol_index.mjs @@ -0,0 +1,370 @@ +// Self-test for the symbol index: the .twin declaration scanner that +// scripts/build_package_api.mjs runs over the packages, the derivation +// builder/symbols.mjs runs over the pages, and the drift guard +// builder/symbol-baseline.mjs keeps over the URLs the index publishes. +// +// node scripts/check_symbol_index.mjs +// +// Every probe is a fixture of its own -- a few lines of twinBASIC, a page or +// three, a scratch baseline file -- so none of it needs a build, a tree or a +// twinBASIC install, and nothing here touches builder/symbol-baseline.json. +// +// A build that indexes the reference cleanly says nothing about any of this: +// the site is one input, and the rules that did not fire on it are exactly the +// ones that stopped working unnoticed. So each rule is asserted here against +// the case that made it necessary: +// +// - the scanner's traps, each met in the BETA 983 packages -- a Type whose +// Subs have bodies, an Interface line inside a CoClass, `[Hidden]` on a +// module whose members are global, a `$` name escaped in brackets, an +// attribute on the declaration's own line, an attribute run spread over +// continued lines; +// - the derivation's rules -- a member on a page of its own and under a +// heading, a member a base type declares found on the base's page, a page +// filed under the wrong module, a `$` form, `symbols:`, a heading that +// opens a section and must not be read as a member of the same name, the +// typographer's ellipsis in a Core heading, and an attribute's `##`; +// - the drift guard's refusals, which on a healthy tree it never shows. + +import { mkdtemp, readFile, rm, writeFile } from "node:fs/promises"; +import { tmpdir } from "node:os"; +import path from "node:path"; +import { checkSymbolBaseline } from "../builder/symbol-baseline.mjs"; +import { deriveSymbolIndex, headingsOf, serializeSymbolIndex } from "../builder/symbols.mjs"; +import { GUARDED_SRC } from "../builder/page-baseline.mjs"; +import { apiSnapshot, isPublicType, parseTwin } from "./lib/twin-api.mjs"; + +// A crash is the harness failing, not a finding: exit 2. +process.on("uncaughtException", (err) => { console.error(err); process.exit(2); }); + +let failures = 0; +const results = []; +function check(name, ok, detail) { + results.push({ name, ok, detail }); + if (!ok) failures++; +} +const show = (x) => JSON.stringify(x); + +// ------------------------------------------------------------ the scanner + +{ + const { types, problems } = parseTwin([ + "Private Module HDCModule", + " Type HDC", + " Value As LongPtr", + " Private Sub Type_Assignment(ByVal RHS As LongPtr)", + " Me.Value = RHS", + " End Sub", + " End Type", + "End Module", + ].join("\n")); + const hdc = types.find((t) => t.name === "HDC"); + check("a Type's Sub has a body, and its End Sub closes it", problems.length === 0 && hdc?.members.length === 2, + show({ problems, members: hdc?.members })); + check("a Type inside a Private module is not public", hdc && !isPublicType(hdc, types)); +} + +{ + const { types, problems } = parseTwin([ + "Interface _Collection", + " [DispId(1)]", + " Sub Add(ByRef Item As Variant)", + " [DispId(-4),Hidden,Restricted] Function _NewEnum() As stdole.IUnknown", + "End Interface", + "[CoClassId(\"A4C4671C-499F-101B-BB78-00AA00383CBB\")]", + "CoClass Collection", + " [Default] Interface _Collection", + " [Source] Interface _CollectionEvents", + "End CoClass", + ].join("\n")); + const co = types.find((t) => t.name === "Collection"); + const iface = types.find((t) => t.name === "_Collection"); + check("an Interface line inside a CoClass is not a block", problems.length === 0 && types.length === 2, show(problems)); + check("a CoClass knows its default and source interfaces", + co?.interfaces.find((i) => i.isDefault)?.name === "_Collection" && co?.interfaces.find((i) => i.isSource)?.name === "_CollectionEvents", + show(co?.interfaces)); + check("an attribute on the declaration's own line applies to it", + iface?.members.find((m) => m.name === "_NewEnum")?.hidden === true && iface?.members.find((m) => m.name === "Add")?.hidden === false, + show(iface?.members)); +} + +{ + const { types, problems } = parseTwin([ + "[Hidden]", + "Module [_HiddenModule]", + " [Description(\"Returns \" & vbCrLf & _", + " \"a [bracketed], string\")]", + " Public DeclareWide PtrSafe Function [Chr$] Lib \"\" Alias \"#4\" (ByVal C As Long) As String", + " Public DeclareWide PtrSafe Function Array Lib \"\" Alias \"#-30\" (ParamArray A As Variant()) As Variant", + " Private Const Secret As Long = 1", + " Public Enum Paper", + " [A4 Portrait] = 1", + " Letter", + " End Enum", + "End Module", + ].join("\n")); + const mod = types.find((t) => t.kind === "module"); + check("an escaped module name is read without its brackets", mod?.name === "_HiddenModule", show(mod?.name)); + check("[Hidden] on a module is recorded, and its members are still public", + mod?.hidden === true && mod.members.filter((m) => m.vis === "public").map((m) => m.name).join() === "Chr$,Array", + show(mod?.members)); + check("an attribute continued over lines, with brackets and commas in its string, is one attribute", + problems.length === 0 && mod?.members.length === 3, show({ problems, members: mod?.members })); + const paper = types.find((t) => t.name === "Paper"); + check("an escaped enumeration value keeps its space", paper?.members.map((m) => m.name).join("|") === "A4 Portrait|Letter", + show(paper?.members)); +} + +{ + const { types } = parseTwin([ + "Class CommandButtonBaseCtl", + " Public Default As Boolean", + " Public Public As Boolean = True", + " Public Default Property Get Caption() As String", + " End Property", + "End Class", + ].join("\n")); + const names = types[0]?.members.map((m) => `${m.name}:${m.kind}`).join() ?? ""; + check("a field named after a modifier is a field, and a modifier before Property is a modifier", + names === "Default:field,Public:field,Caption:property", names); +} + +{ + const parsed = new Map([["VB", parseTwin([ + "Private Interface _Clipboard Extends stdole.IUnknown", + " Function GetText() As String", + "End Interface", + "Public CoClass Clipboard", + " [Default] Interface _Clipboard", + "End CoClass", + "Private Class ButtonBase", + " Public Caption As String", + "End Class", + "Class CommandButton", + " Inherits ButtonBase", + "End Class", + "Private Module USER32", + " Public DeclareWide PtrSafe Function GetDC Lib \"user32\" (ByVal h As LongPtr) As LongPtr", + "End Module", + ].join("\n")).types]]); + const { packages } = apiSnapshot(parsed); + const rec = (n) => packages.VB.find((t) => t.name === n); + check("a private interface a public CoClass is built on keeps its members", + rec("_Clipboard")?.public === false && rec("_Clipboard")?.members?.GetText === "function", show(rec("_Clipboard"))); + check("a private class a public class inherits keeps its members", + rec("ButtonBase")?.members?.Caption === "field", show(rec("ButtonBase"))); + check("a private module nothing exposes is kept by name, without its members", + rec("USER32")?.public === false && rec("USER32")?.members === undefined, show(rec("USER32"))); +} + +{ + const { problems } = parseTwin([ + "Alias HINSTANCE As LongPtr", + "Class Widget", + " Inherits BaseWidget", + " Implements IWidget", + " Public Caption As String", + " Public Property Get Height() As Long", + " #If WIN64 Then", + " Return 2", + " #Else", + " Return 1", + " #End If", + " End Property", + " Event Clicked()", + "End Class", + ].join("\n")); + check("a file-level Alias and a #If inside a body are not problems", problems.length === 0, show(problems)); +} + +// ------------------------------------------------------------ the pages + +const api = { + build: 983, + packages: { + VBA: { + exports: ["VBA"], + types: [ + { name: "Strings", kind: "module", members: { Left: "function", "Left$": "function", LeftB: "function", "LeftB$": "function" } }, + { name: "Information", kind: "module", members: { IsArray: "function" } }, + { name: "_HiddenModule", kind: "module", hidden: true, members: { Array: "function" } }, + { name: "_Collection", kind: "interface", members: { Add: "sub", Count: "property" } }, + { name: "Collection", kind: "coclass", default: "_Collection" }, + { name: "Constants", kind: "module" }, + { name: "VbMsgBoxStyle", kind: "enum", in: "Constants", values: ["vbOKOnly", "vbOKCancel"] }, + ], + }, + tbIDE: { + exports: ["tbIDE"], + types: [ + { name: "IEditorV1", kind: "interface", members: { Close: "sub", Path: "property" } }, + { name: "ICodeEditorV1", kind: "interface", extends: "tbIDE.IEditorV1", members: { Text: "property" } }, + { name: "IHtmlElementV1", kind: "interface", members: { Properties: "property", Name: "property" } }, + { name: "Editor", kind: "coclass", default: "IEditorV1" }, + { name: "CodeEditor", kind: "coclass", default: "ICodeEditorV1" }, + { name: "HtmlElement", kind: "coclass", default: "IHtmlElementV1" }, + ], + }, + }, +}; + +const h = (level, text, id = null) => ({ level, text, id }); +const page = (src, url, title, parent, headings, extra = {}) => ({ src, url, title, parent, headings, ...extra }); +const pages = [ + page("Reference/Default/VBA/index.md", "/tB/Packages/VBA", "VBA Package", undefined, [h(1, "VBA Package")]), + page("Reference/Default/VBA/Strings/index.md", "/tB/Modules/Strings/", "Strings Module", "VBA Package", [h(1, "Strings module")]), + page("Reference/Default/VBA/Strings/Left.md", "/tB/Modules/Strings/Left", "Left", "Strings Module", [h(1, "Left, LeftB")]), + page("Reference/Default/VBA/Information/index.md", "/tB/Modules/Information/", "Information Module", "VBA Package", [h(1, "Information module")]), + page("Reference/Default/VBA/Information/Array.md", "/tB/Modules/Information/Array", "Array", "Information Module", [h(1, "Array")]), + page("Reference/Default/VBA/HiddenModule/index.md", "/tB/Modules/HiddenModule/", "(Default) Module", "VBA Package", + [h(1, "(Default) module")], { symbols: ["_HiddenModule"] }), + page("Reference/Default/VBA/Collection/index.md", "/tB/Modules/Collection/", "Collection", "VBA Package", [h(1, "Collection")]), + page("Reference/Default/VBA/Collection/Add.md", "/tB/Modules/Collection/Add", "Add", "Collection", [h(1, "Add")]), + page("Reference/Default/VBA/Constants/VbMsgBoxStyle.md", "/tB/Modules/Constants/VbMsgBoxStyle", "VbMsgBoxStyle", "Constants Module", + [h(1, "VbMsgBoxStyle")]), + page("Reference/Default/VBA/Debug.md", "/tB/Modules/Debug", "Debug", "VBA Package", + [h(1, "Debug", "debug"), h(2, "Debug.Print", "debugprint"), h(2, "See Also", "see-also")]), + page("Reference/Built-In/tbIDE/index.md", "/tB/Packages/tbIDE/", "tbIDE Package", "Built-In Packages", [h(1, "tbIDE Package")]), + page("Reference/Built-In/tbIDE/Editor.md", "/tB/Packages/tbIDE/Editor", "Editor", "tbIDE Package", + [h(1, "Editor class", "editor-class"), h(2, "Methods", "methods"), h(3, "Close", "close"), h(2, "Properties", "properties"), h(3, "Path", "path")]), + page("Reference/Built-In/tbIDE/CodeEditor.md", "/tB/Packages/tbIDE/CodeEditor", "CodeEditor", "tbIDE Package", + [h(1, "CodeEditor class", "codeeditor-class"), h(2, "Properties", "properties"), h(3, "Text", "text"), + h(3, "Undeclared", "undeclared"), h(4, "Example", "example"), h(3, "Example", "example-1")]), + page("Reference/Built-In/tbIDE/HtmlElement.md", "/tB/Packages/tbIDE/HtmlElement", "HtmlElement", "tbIDE Package", + [h(1, "HtmlElement class", "htmlelement-class"), h(2, "Name", "name"), h(2, "Properties", "properties"), + h(3, "Name", "name-1"), h(3, "Properties", "properties-1")]), + page("Reference/Core/Do-Loop.md", "/tB/Core/Do-Loop", "Do...Loop", "Statements", [h(1, "Do…Loop")]), + page("Reference/Core/If-Then-Else.md", "/tB/Core/If-Then-Else", "If", "Statements", [h(1, "If…Then…Else")]), + page("Reference/Core/Comparison-Operators.md", "/tB/Core/Comparison-Operators", "Comparison", "Operators", + [h(1, "Comparison operators")], { symbols: ["=", "<>"] }), + page("Reference/Core/Concat.md", "/tB/Core/Concat", "&, &=", "Operators", [h(1, "& and &= operators")]), + page("Reference/Attributes.md", "/tB/Core/Attributes", "Attributes", "Reference Section", + [h(1, "Attributes", "attributes"), h(2, "AppObject (optional Bool)", "appobject")]), + page("Reference/Default/VBA/Guide.md", "/Reference/Guide", "Guide", "VBA Package", [h(1, "Guide")]), +]; + +const r = deriveSymbolIndex({ pages, api }); +const find = (name, container) => r.symbols.filter((s) => s.name === name && (container === undefined || s.container === container)); +const urlOf = (name, container) => find(name, container).map((s) => s.url); + +check("a module is its page's by the title, less 'Module'", urlOf("Strings", null).join() === "/tB/Modules/Strings/"); +check("a member with a page of its own under the module's page", urlOf("Left", "Strings").join() === "/tB/Modules/Strings/Left"); +check("a name in the first heading's list shares the page", urlOf("LeftB", "Strings").join() === "/tB/Modules/Strings/Left"); +check("a $ form goes where its base went", urlOf("Left$", "Strings").join() === "/tB/Modules/Strings/Left" && + urlOf("LeftB$", "Strings").join() === "/tB/Modules/Strings/Left", show(find("LeftB$"))); +check("a page filed under one module and declared in another is the declarer's", + find("Array").length === 1 && find("Array")[0].container === "_HiddenModule" && find("Array")[0].url === "/tB/Modules/Information/Array", + show(find("Array"))); +check("symbols: names a page's subject when its title cannot", urlOf("_HiddenModule", null).join() === "/tB/Modules/HiddenModule/", + show(find("_HiddenModule"))); +check("a CoClass's member on its own page, by the default interface", + find("Add", "Collection")[0]?.url === "/tB/Modules/Collection/Add" && find("Add", "Collection")[0]?.kind === "method", + show(find("Add"))); +check("an enumeration's values are on its page, not under a heading", + urlOf("vbOKOnly", "VbMsgBoxStyle").join() === "/tB/Modules/Constants/VbMsgBoxStyle" && find("vbOKOnly")[0]?.kind === "enumvalue"); +check("an inherited member is found on the page of the type that declares it", + urlOf("Close", "CodeEditor").join() === "/tB/Packages/tbIDE/Editor#close", show(find("Close"))); +check("a heading under Properties is a member whatever the package declares", + find("Undeclared", "CodeEditor")[0]?.kind === "property", show(find("Undeclared"))); +check("an Example heading among members, at their level or under one, is not a member", + !find("Example").length, show(find("Example"))); +check("a section heading is never taken for a member of the same name", + urlOf("Properties", "HtmlElement").join() === "/tB/Packages/tbIDE/HtmlElement#properties-1", show(find("Properties"))); +check("a member's heading under Properties wins over a prose section of the same name above it", + urlOf("Name", "HtmlElement").join() === "/tB/Packages/tbIDE/HtmlElement#name-1", show(find("Name"))); +check("a page no package declares, with Name.Member headings, is an object's", + find("Debug")[0]?.kind === "object" && urlOf("Print", "Debug").join() === "/tB/Modules/Debug#debugprint", show(find("Print"))); +check("a statement's other words are its keywords, through the typographer's ellipsis", + find("Loop")[0]?.kind === "keyword" && find("Do")[0]?.kind === "statement" && + find("Else")[0]?.url === "/tB/Core/If-Then-Else", show(r.symbols.filter((s) => s.package === null))); +check("an operator page's symbols: are each an operator", + find("<>")[0]?.kind === "operator" && find("=")[0]?.kind === "operator", show(find("<>"))); +check("an operator page's title gives its operators", find("&=")[0]?.kind === "operator", show(find("&="))); +check("an attribute is its ## heading's, by the id the build gave it", + urlOf("AppObject").join() === "/tB/Core/Attributes#appobject", show(find("AppObject"))); +check("a CoClass's default interface maps to it", + r.interfaces["tbIDE.ICodeEditorV1"] === "tbIDE.CodeEditor" && r.interfaces["VBA._Collection"] === "VBA.Collection", + show(r.interfaces)); +check("only /tB/ pages are read", !r.symbols.some((s) => !s.url.startsWith("/tB/")) && !find("Guide").length); +check("a declared member no page documents is a gap, not an entry", + r.gaps.some((g) => g.container === "Collection" && g.name === "Count") && !find("Count").length, show(r.gaps)); + +{ + const text = serializeSymbolIndex(r, api); + const back = JSON.parse(text); + check("the published file parses, and names its format and API build", + back.format === 1 && back.api === 983 && back.symbols.length === r.symbols.length); + const lines = text.split("\n"); + const body = lines.slice(lines.indexOf(' "symbols": [') + 1, lines.lastIndexOf(" ]")); + const parsed = body.map((l) => { try { return JSON.parse(l.trim().replace(/,$/, "")); } catch { return null; } }); + check("the published file has one entry to a line", + body.length === r.symbols.length && parsed.every((e, i) => e?.url === r.symbols[i].url), `${body.length} entry lines`); +} + +{ + const got = headingsOf('

A & B


' + + '

C D

no id

'); + check("headings are read with their ids and text, and
and
are not headings", + show(got) === show([{ level: 1, id: "a", text: "A & B" }, { level: 3, id: "c", text: "C D" }, { level: 2, id: null, text: "no id" }]), + show(got)); +} + +// ------------------------------------------------------------ the drift guard + +async function withBaseline(initial, fn) { + const dir = await mkdtemp(path.join(tmpdir(), "tb-symbolbaseline-")); + const file = path.join(dir, "symbol-baseline.json"); + try { + if (initial) await writeFile(file, JSON.stringify({ src: GUARDED_SRC, urls: initial }), "utf8"); + return await fn(file); + } finally { + await rm(dir, { recursive: true, force: true }); + } +} +const urlsIn = async (file) => JSON.parse(await readFile(file, "utf8")).urls; +const BASE = ["/tB/Modules/Strings/Left", "/tB/Packages/tbIDE/ToolWindows#add"]; + +await withBaseline(BASE, async (file) => { + const out = await checkSymbolBaseline({ src: GUARDED_SRC, urls: ["/tB/Modules/Strings/Left", "/tB/Packages/tbIDE/ToolWindows#add-method"], write: true, file }); + check("a reworded heading's lost anchor fails, and is named", + out.failed && out.text.includes("ToolWindows#add") && (await urlsIn(file)).length === 2, out.text.trim()); +}); +await withBaseline(BASE, async (file) => { + const out = await checkSymbolBaseline({ src: GUARDED_SRC, urls: [...BASE, "/tB/Core/Dim"], write: true, file }); + check("a new URL is accepted and recorded", !out.failed && (await urlsIn(file)).includes("/tB/Core/Dim"), out.text.trim()); +}); +await withBaseline(BASE, async (file) => { + const out = await checkSymbolBaseline({ src: GUARDED_SRC, urls: [...BASE, "/tB/Core/Dim"], write: false, file }); + check("a new URL with write:false leaves the file alone", !out.failed && (await urlsIn(file)).length === 2, out.text.trim()); +}); +await withBaseline(BASE, async (file) => { + const out = await checkSymbolBaseline({ src: GUARDED_SRC, urls: BASE, write: true, file }); + check("an unchanged index says nothing", !out.failed && out.text === "", show(out.text)); +}); +await withBaseline(BASE, async (file) => { + await checkSymbolBaseline({ src: GUARDED_SRC, urls: BASE.slice(0, 1), write: false, force: true, file }); + check("--update-symbol-baseline records a removal on request", (await urlsIn(file)).length === 1); +}); +await withBaseline(BASE, async (file) => { + const out = await checkSymbolBaseline({ src: "test/fixtures/check-src", urls: [], write: true, file }); + check("a foreign source root is ignored, not measured", !out.failed && out.text === "" && (await urlsIn(file)).length === 2); +}); +await withBaseline(null, async (file) => { + const out = await checkSymbolBaseline({ src: GUARDED_SRC, urls: BASE, write: false, file }); + check("a missing list fails where the build may not write (CI)", out.failed && out.text.includes("missing"), out.text.trim()); +}); +await withBaseline(null, async (file) => { + const out = await checkSymbolBaseline({ src: GUARDED_SRC, urls: BASE, write: true, file }); + check("a missing list is created where it may write", !out.failed && (await urlsIn(file)).length === 2, out.text.trim()); +}); + +// ------------------------------------------------------------ report + +for (const { name, ok, detail } of results) { + console.log(` ${ok ? "ok " : "FAIL"} ${name}`); + if (!ok && detail) console.log(` ${detail}`); +} +console.log(failures + ? `check_symbol_index: ${failures} of ${results.length} probes failed` + : `check_symbol_index: ${results.length} probes, all pass`); +process.exit(failures ? 1 : 0); diff --git a/scripts/check_tree_fresh.mjs b/scripts/check_tree_fresh.mjs index df94ff2b..a6944aea 100644 --- a/scripts/check_tree_fresh.mjs +++ b/scripts/check_tree_fresh.mjs @@ -50,14 +50,17 @@ const IGNORED_DIRS = new Set([".git", "node_modules"]); // writes them after the tree, including one would mark every fresh tree stale. // page-baseline.json is written by the drift guard whenever the page count // rises (builder/page-baseline.mjs), so `build.bat && check.bat` would have -// failed on the next run after any page addition. +// failed on the next run after any page addition. symbol-baseline.json is the +// same for the symbol index's URLs (builder/symbol-baseline.mjs), and is +// rewritten by any build that adds a heading. package-api.json is not here: the +// build reads it, and it decides the bytes of tB/symbols.json. // census_attributes.mjs lives under builder/ but decides none of the built // bytes -- it censuses twinBASIC package sources and never runs during a build. // Without this, editing it marks every output tree stale, which blocks check.bat // and makes book.bat refuse to render, for a tool the build never calls. Same // reasoning as page-baseline.json: the sources this script watches are "the // inputs that decide the built bytes", and neither file is one. -const IGNORED_FILES = new Set(["page-baseline.json", "census_attributes.mjs"]); +const IGNORED_FILES = new Set(["page-baseline.json", "symbol-baseline.json", "census_attributes.mjs"]); // The inputs that decide the built bytes. The source tree is the obvious // one; the builder and the theme sources matter just as much, and are diff --git a/scripts/lib/tb-packages.mjs b/scripts/lib/tb-packages.mjs new file mode 100644 index 00000000..360bc4bb --- /dev/null +++ b/scripts/lib/tb-packages.mjs @@ -0,0 +1,91 @@ +// The packages an IDE install ships, exported as source trees. Shared by +// builder/census_attributes.mjs and scripts/build_package_api.mjs, which read +// the same trees for different questions, so that one export -- and one cache +// of it -- answers both. +// +// A package's sources are inside a .twinproj archive under the install's +// `packages\`, one folder per package, named `{GUID}_`, with a leading +// dot on the two the IDE hides: `.{...}_VBA` and `.{...}_VBRUN`. The compiler +// executable's `export` verb unpacks one into `Settings` plus `Sources\`. +// +// Two traps, both from WIP.md and both still live: every path given the +// executable must use backslashes (path.join gives them here), because a folder +// named with forward slashes cannot be created or even found; and stdin has to +// be detached, or the executable consumes the caller's and a loop's later +// iterations never run. + +import { existsSync, mkdirSync, readdirSync, rmSync } from "node:fs"; +import os from "node:os"; +import path from "node:path"; +import { runCompiler } from "./tb-install.mjs"; + +/** The package's name, from its folder: `.{54F9...}_VBA` gives `VBA`. */ +export const packageName = (folder) => folder.replace(/^\.?\{[^}]+\}_/, ""); + +/** Where exports of a build are kept unless the caller says otherwise. */ +export const defaultCache = (build) => path.join(os.tmpdir(), "tb-census", `beta-${build ?? "unknown"}`); + +/** + * Export every project under the install's `packages\` -- and, with `samples`, + * under `projects\` and `addins\` too -- into `cache\\`. A + * folder already in the cache is taken as a finished export unless `refresh` + * is set: a failed export removes its folder, so one left behind is complete. + * + * @param {object} o + * @param {string} o.root the install root, holding `bin\` and `packages\` + * @param {string} o.cache + * @param {boolean} [o.refresh] + * @param {boolean} [o.samples] + * @param {(line: string) => void} [o.log] + * @returns {{projects: {name, folder, group, proj, dir}[], exported: number, + * failed: {name, why}[]}} `projects` lists every project found, with the + * folder its export is in; a failed one is in `failed` as well + */ +export function exportPackages({ root, cache, refresh = false, samples = false, log = () => {} }) { + const exe = path.join(root, "bin", "twinBASIC_win32.exe"); + if (!existsSync(exe)) throw new Error(`no compiler at ${exe}`); + + const roots = [path.join(root, "packages")]; + if (samples) { + for (const d of ["projects", "addins"]) { + const p = path.join(root, d); + if (existsSync(p)) roots.push(p); + } + } + + const projects = []; + for (const r of roots) { + for (const entry of readdirSync(r, { withFileTypes: true })) { + if (!entry.isDirectory()) continue; + const dir = path.join(r, entry.name); + for (const f of readdirSync(dir)) { + if (!f.toLowerCase().endsWith(".twinproj")) continue; + projects.push({ + name: packageName(entry.name), folder: entry.name, group: path.basename(r), + proj: path.join(dir, f), dir: path.join(cache, path.basename(r), entry.name), + }); + } + } + } + if (!projects.length) throw new Error(`no .twinproj found under ${roots.join(", ")}`); + + mkdirSync(cache, { recursive: true }); + let exported = 0; + const failed = []; + for (const p of projects) { + if (existsSync(p.dir) && !refresh) continue; + mkdirSync(p.dir, { recursive: true }); + // The exit code does not say whether export worked -- see runCompiler. + const r = runCompiler(exe, ["export", p.proj, p.dir + path.sep, "--overwrite"]); + if (r.done) { + exported++; + } else { + rmSync(p.dir, { recursive: true, force: true }); + const why = `${r.why.trim() || "no DONE line"}: ${r.tail.split("\n").pop()}`; + failed.push({ name: p.name, why }); + log(` ! export failed: ${p.name} ${why}`); + } + } + log(` exported ${exported} project(s), ${projects.length} total in cache`); + return { projects, exported, failed }; +} diff --git a/scripts/lib/twin-api.mjs b/scripts/lib/twin-api.mjs new file mode 100644 index 00000000..25ba5a3c --- /dev/null +++ b/scripts/lib/twin-api.mjs @@ -0,0 +1,494 @@ +// The declarations an exported twinBASIC package makes, read from its .twin +// sources: every Module, Class, Interface, CoClass, Enum and Type, and every +// member each one declares, with its visibility and kind. +// +// It exists for the documentation's symbol index (WIP.HelpAddin.md, Stage 3), +// whose package half is scripts/build_package_api.mjs. The index takes its +// entries from the pages; what it needs from the packages is what only the +// source says -- the kind of a member documented on a page of its own, the +// values of an enumeration, the interface a CoClass's members are declared on +// -- and, as a side effect, which public symbols have no page at all. +// +// **This is a declaration scanner, not a compiler.** It reads each logical line +// once, keeps no expression, and follows no #If: every branch of a conditional +// is read, which is right for this corpus -- the branches it has guard features, +// not alternatives -- and what it cannot place goes to `problems` rather than +// being guessed at. Seven ways to misread this corpus, each met in the BETA 983 +// packages (builder/census_attributes.mjs lists six more, about attributes): +// +// 1. A Type is not a record only. `Type HDC` in the VB package declares +// Private Subs with bodies, and a scanner that thinks a Type holds fields +// reads their `End Sub` as closing nothing -- 1,388 of them. +// 2. `Alias HINSTANCE As LongPtr` is a statement at file level, in CEF. +// 3. An `Interface X` line inside a CoClass names one of its interfaces; it +// has no body and no `End Interface`. `[Default]` marks the one the +// CoClass's members are declared on, `[Source]` the one its events are. +// 4. `[Hidden]` is not "inaccessible". VBA's `Module [_HiddenModule]` carries +// it, and its members -- Array, Input, Choose and 89 more -- are globals +// every project calls. Hidden is recorded, never used to drop a symbol. +// 5. A `$` name is an escaped identifier: `Function [Chr$] Lib ...`. So is a +// module name, `[_HiddenModule]`, and an enumeration value, `[A4 Portrait]`. +// 6. An Enum can sit inside an Interface (VBA's ITbExpressionService), and a +// type declared inside a Private module is not public, whatever its own +// modifier says. +// 7. A declaration can carry its attributes on the same line -- +// `[DispId(-4),Hidden,Restricted] Function _NewEnum() ...` -- or on lines +// of their own before it, joined by line continuations. + +import { readdirSync, readFileSync } from "node:fs"; +import path from "node:path"; + +// ------------------------------------------------------------------ lexing + +/** + * The logical lines of a source file: comments removed, the contents of string + * literals blanked (their quotes kept, so a comma or bracket inside one is + * never read as syntax), and lines ending in ` _` joined to the next. + * + * @returns {{text: string, line: number}[]} `line` is the 1-based line the + * logical line starts on + */ +export function logicalLines(src) { + const raw = String(src).replace(/^/, "").split(/\r?\n/); + const out = []; + let buf = ""; + let start = 0; + let inBlock = false; // inside /* ... */, which may span lines + for (let i = 0; i < raw.length; i++) { + const s = raw[i]; + let t = ""; + let inStr = false; + for (let k = 0; k < s.length; k++) { + const c = s[k]; + if (inBlock) { + if (c === "*" && s[k + 1] === "/") { inBlock = false; k++; t += " "; } + continue; + } + if (inStr) { + if (c === '"' && s[k + 1] === '"') { t += " "; k++; continue; } + if (c === '"') inStr = false; + t += c === '"' ? c : " "; + continue; + } + if (c === '"') { inStr = true; t += c; continue; } + if (c === "/" && s[k + 1] === "*") { inBlock = true; k++; continue; } + if (c === "'") break; + t += c; + } + if (/^\s*Rem(\s|$)/i.test(t)) t = ""; + if (!buf) start = i + 1; + if (/(^|\s)_\s*$/.test(t)) { buf += t.replace(/_\s*$/, " "); continue; } + out.push({ text: buf + t, line: start }); + buf = ""; + } + if (buf) out.push({ text: buf, line: start }); + return out; +} + +// Leading attribute groups, `[A, B(1)] [C]`, split off a logical line. An +// escaped identifier used as an expression -- `[_HiddenModule].Foo`, +// `[_MAX] = 0` -- is not an attribute, and ends the run where it starts. +// `open` is true when a bracket is still unclosed at the end of the line. +function splitAttributes(text) { + const names = []; + let i = 0; + for (;;) { + while (i < text.length && /\s/.test(text[i])) i++; + if (text[i] !== "[") break; + let depth = 0; + let j = i; + for (; j < text.length; j++) { + if (text[j] === "[") depth++; + else if (text[j] === "]" && --depth === 0) break; + } + if (j >= text.length) return { names, rest: text.slice(i), open: true }; + const inner = text.slice(i + 1, j); + const after = text.slice(j + 1).trimStart(); + if (!names.length && /^[.=(]/.test(after) && !/[(,]/.test(inner)) break; + names.push(...attributeNames(inner)); + i = j + 1; + } + return { names, rest: text.slice(i), open: false }; +} + +function attributeNames(inner) { + let s = inner; + for (let prev = null; prev !== s;) { prev = s; s = s.replace(/\([^()]*\)/g, ""); } + return s.split(",").map((x) => x.trim().split(/\s/)[0]).filter(Boolean); +} + +// ------------------------------------------------------------------ parsing + +const NAME = String.raw`(?:\[[^\]]+\]|[A-Za-z_][A-Za-z0-9_]*[$%&!#@]?)`; +const MODIFIERS = new RegExp(String.raw`^\s*(Public|Private|Friend|Protected|Global|Static|Shared|` + + String.raw`Overrides|Overridable|Virtual|MustOverride|NotInheritable|NotDispatchable|Partial|` + + String.raw`Default|ReadOnly|WriteOnly|WithEvents|Dim|Iterator)\b\s*`, "i"); +const TYPE_OPEN = new RegExp(String.raw`^(Module|Class|Interface|CoClass|Enum|Type|Union)\s+(${NAME})(.*)$`, "i"); +const TYPE_OR_PROC_END = /^End\s+(Sub|Function|Property|Module|Class|Interface|CoClass|Enum|Type|Union)\b/i; +const DECLARE = new RegExp(String.raw`^(?:DeclareWide|Declare)\s+(?:PtrSafe\s+)?(Sub|Function|Property\s+(?:Get|Let|Set))\s+(${NAME})`, "i"); +const PROC = new RegExp(String.raw`^(Sub|Function|Property\s+(?:Get|Let|Set))\s+(${NAME})`, "i"); +const EVENT = new RegExp(String.raw`^Event\s+(${NAME})`, "i"); +const DELEGATE = new RegExp(String.raw`^Delegate\s+(?:Sub|Function)\s+(${NAME})`, "i"); +const LEADING_NAME = new RegExp(String.raw`^\s*(${NAME})`); +const FIELD = new RegExp(String.raw`^\s*(${NAME})\s*(\(|As\b|$)`, "i"); +const ENUM_VALUE = new RegExp(String.raw`^(${NAME})\s*(=|$)`); + +// Types whose procedures have bodies, and so an `End Sub` to wait for. +const WITH_BODIES = new Set(["module", "class", "type", "union"]); + +const unescape = (name) => name.replace(/^\[(.*)\]$/, "$1"); + +function kindOf(keyword) { + const k = keyword.toLowerCase(); + if (k.startsWith("property")) return "property"; + return k; // sub, function +} + +/** + * Every type a source file declares, and every member each declares. + * + * @returns {{types: object[], problems: {file, line, why}[]}} + * Each type is `{kind, name, file, line, vis, hidden, attributes, container, + * members, inherits, implements, interfaces, extends}`; `kind` is module, + * class, interface, coclass, enum, type or union, `container` the name of the + * type it is declared in or null, `interfaces` a CoClass's + * `{name, isDefault, isSource}`. Each member is `{name, kind, vis, hidden, + * line}` with `kind` sub, function, property, event, delegate, const, field + * or enumvalue. + */ +export function parseTwin(src, file = "") { + const lines = logicalLines(src); + const types = []; + const problems = []; + const stack = []; // open types, and {proc: true} for a body + let pending = []; // attributes waiting for their declaration + + const openType = () => { + for (let k = stack.length - 1; k >= 0; k--) if (stack[k].type) return stack[k].type; + return null; + }; + const inBody = () => stack.some((s) => s.proc); + + for (let li = 0; li < lines.length; li++) { + let { text } = lines[li]; + const { line } = lines[li]; + if (!text.trim() || /^\s*#/.test(text)) continue; // #If, #Region, #Const + + let split = splitAttributes(text); + while (split.open && li + 1 < lines.length) { + text += " " + lines[++li].text; + split = splitAttributes(text); + } + pending.push(...split.names); + const rest = split.rest.trim(); + if (!rest) continue; + const attributes = pending; + pending = []; + + const end = TYPE_OR_PROC_END.exec(rest); + if (end) { + const k = end[1].toLowerCase(); + const top = stack[stack.length - 1]; + if (k === "sub" || k === "function" || k === "property") { + if (top?.proc) stack.pop(); + else problems.push({ file, line, why: `End ${end[1]} with no procedure open` }); + } else if (top?.type?.kind === k) { + stack.pop(); + } else { + problems.push({ file, line, why: `End ${end[1]} does not close what is open` }); + } + continue; + } + if (inBody()) continue; + + // A modifier word followed by `As` or `(` is the declaration's name, not a + // modifier: `Public Default As Boolean` on CommandButton, and `Public + // Public As Boolean` on UserControl. + let decl = rest; + const modifiers = []; + for (let m; (m = MODIFIERS.exec(decl));) { + const after = decl.slice(m[0].length); + if (modifiers.length && /^(As\b|\(|=|$)/i.test(after)) break; + modifiers.push(m[1].toLowerCase()); + decl = after; + } + const vis = modifiers.includes("private") ? "private" + : modifiers.includes("friend") ? "friend" + : modifiers.includes("protected") ? "protected" + : modifiers.includes("public") || modifiers.includes("global") ? "public" : null; + const hidden = attributes.some((a) => /^(Hidden|Restricted)$/i.test(a)); + const parent = openType(); + + const open = TYPE_OPEN.exec(decl); + if (open && !/^As$/i.test(open[2])) { + const kind = open[1].toLowerCase(); + const name = unescape(open[2]); + if (kind === "interface" && parent?.kind === "coclass") { + parent.interfaces.push({ + name, + isDefault: attributes.some((a) => /^Default$/i.test(a)), + isSource: attributes.some((a) => /^Source$/i.test(a)), + }); + continue; + } + const type = { + kind, name, file, line, + vis: vis ?? "public", hidden, attributes, + container: parent ? parent.name : null, + members: [], inherits: [], implements: [], interfaces: [], + extends: /\bExtends\s+([\w.[\]]+)/i.exec(open[3])?.[1] ?? null, + }; + types.push(type); + stack.push({ type }); + continue; + } + + if (/^Alias\s/i.test(decl)) continue; // Alias X As Y + if (!parent) { + if (!/^(Option|Imports)\b/i.test(decl)) problems.push({ file, line, why: `outside any type: ${rest.slice(0, 60)}` }); + continue; + } + + let m; + if ((m = /^Inherits\s+([\w.[\]]+)/i.exec(decl))) { parent.inherits.push(m[1]); continue; } + if ((m = /^Implements\s+([\w.[\]]+)/i.exec(decl))) { parent.implements.push(m[1]); continue; } + + if (parent.kind === "enum") { + if ((m = ENUM_VALUE.exec(decl))) add(parent, m[1], "enumvalue", "public", hidden, line); + else problems.push({ file, line, why: `not an enumeration value: ${rest.slice(0, 60)}` }); + continue; + } + if ((m = DECLARE.exec(decl))) { add(parent, m[2], kindOf(m[1]), vis, hidden, line, "private"); continue; } + if ((m = PROC.exec(decl))) { + add(parent, m[2], kindOf(m[1]), vis, hidden, line, "public"); + if (WITH_BODIES.has(parent.kind) && !modifiers.includes("mustoverride")) stack.push({ proc: true }); + continue; + } + if ((m = EVENT.exec(decl))) { add(parent, m[1], "event", vis, hidden, line, "public"); continue; } + if ((m = DELEGATE.exec(decl))) { add(parent, m[1], "delegate", vis, hidden, line, "public"); continue; } + if ((m = /^Const\s+(.*)$/i.exec(decl))) { + for (const piece of splitTopLevel(m[1])) { + const n = LEADING_NAME.exec(piece); + if (n) add(parent, n[1], "const", vis, hidden, line, "private"); + } + continue; + } + if (modifiers.length || parent.kind === "type" || parent.kind === "union") { + for (const piece of splitTopLevel(decl)) { + const n = FIELD.exec(piece); + if (n) add(parent, n[1], "field", vis, hidden, line, "private"); + } + continue; + } + if (/^(Option|Attribute|Events|Def[A-Za-z]+\s)/i.test(decl)) continue; + problems.push({ file, line, why: `not understood in ${parent.kind} ${parent.name}: ${rest.slice(0, 80)}` }); + } + + for (const s of stack) { + problems.push({ file, line: s.type?.line ?? 0, why: `${s.type ? `${s.type.kind} ${s.type.name}` : "a procedure"} is never closed` }); + } + return { types, problems }; + + // `fallback` is the visibility a member has with no modifier in a Module or + // Class: Public for a procedure, Private for a variable, constant or Declare. + // Everything in an Interface, CoClass, Enum, Type or Union is public. + function add(type, rawName, kind, vis, hidden, line, fallback) { + const implicit = ["interface", "coclass", "enum", "type", "union"].includes(type.kind) ? "public" : fallback; + type.members.push({ name: unescape(rawName), kind, vis: vis ?? implicit, hidden, line }); + } +} + +function splitTopLevel(s) { + const out = []; + let depth = 0; + let cur = ""; + for (const c of s) { + if (c === "(") depth++; + else if (c === ")") depth--; + if (c === "," && depth === 0) { out.push(cur); cur = ""; continue; } + cur += c; + } + if (cur.trim()) out.push(cur); + return out; +} + +// ----------------------------------------------------------------- packages + +/** + * Parse every .twin file of an exported package, whose tree is `Settings` plus + * `Sources/`. The export's own `Packages/` folder, which holds copies of the + * packages this one references, is not read. + */ +export function parsePackage(dir) { + const types = []; + const problems = []; + for (const file of twinFiles(path.join(dir, "Sources"))) { + const rel = path.relative(dir, file).replaceAll("\\", "/"); + const r = parseTwin(readFileSync(file, "utf8"), rel); + types.push(...r.types); + problems.push(...r.problems); + } + return { types, problems }; +} + +function twinFiles(dir, out = []) { + let entries; + try { entries = readdirSync(dir, { withFileTypes: true }); } catch { return out; } + entries.sort((a, b) => (a.name < b.name ? -1 : a.name > b.name ? 1 : 0)); + for (const e of entries) { + const p = path.join(dir, e.name); + if (e.isDirectory()) twinFiles(p, out); + else if (e.name.toLowerCase().endsWith(".twin")) out.push(p); + } + return out; +} + +/** + * Whether a type can be named from outside its package: declared Public (or + * with no modifier), and not inside a type that is not. + */ +export function isPublicType(type, types) { + for (let t = type; t;) { + if (t.vis !== "public") return false; + if (!t.container) return true; + t = types.find((x) => x.name === t.container && x.file === t.file && x !== t) ?? null; + } + return true; +} + +// ----------------------------------------------------------- the snapshot + +// Attributes that make a class a control a form can hold. +const CONTROL_ATTRIBUTES = /^(WindowsControl|CustomControl|COMControl)$/i; +// Interfaces every COM interface extends; naming them adds nothing. +const ROOT_INTERFACES = /^(stdole\.)?(IUnknown|IDispatch)$/i; + +// A type named in `Inherits`, `Extends` or a CoClass's interface list: in the +// package written before the dot, else in the naming type's own package, else +// in any package that has one of the kind wanted. +function resolver(parsed) { + return (ref, fromPkg, kinds) => { + const clean = ref.replace(/[[\]]/g, ""); + const dot = clean.lastIndexOf("."); + const name = dot < 0 ? clean : clean.slice(dot + 1); + const want = (t) => t.name.toLowerCase() === name.toLowerCase() && kinds.includes(t.kind); + const order = dot < 0 ? [fromPkg, ...[...parsed.keys()].filter((k) => k !== fromPkg)] + : [...parsed.keys()].filter((k) => k.toLowerCase() === clean.slice(0, dot).toLowerCase()); + for (const pkg of order) { + const t = parsed.get(pkg)?.find(want); + if (t) return { pkg, type: t }; + } + return null; + }; +} + +/** + * The record builder/package-api.json keeps of each package's types, from + * parsed packages keyed by project name. + * + * Every type a package declares is kept, public or not. Which ones code outside + * the package can reach is not decidable from the source alone, and the pages + * document both kinds: CEF's CefLogSeverity is a Public Enum inside a Private + * Module, CustomControls' Borders is a Private Class that code reaches through + * a control's Borders property, CheckBox's members are declared on a Private + * Class it inherits from, and VB's Clipboard is a Public CoClass whose members + * are declared on a Private Interface. So each is marked, not dropped: `public: + * false` on one declared Private, or declared inside a Private type -- except + * an Enum, which the corpus declares inside Private modules for public use. + * + * A type that is not public keeps its members only when a public type exposes + * them: a class a public class inherits from, an interface a public CoClass is + * built on, and the interfaces those extend. The rest -- the Win32 + * declarations the VB and CEF packages wrap in Private modules, mostly -- would + * double the file for members no page documents; a page about one still finds + * it by name. + * + * @param {Map} parsed project name -> parseTwin's types + * @returns {{packages: Object, unresolved: string[]}} + */ +export function apiSnapshot(parsed) { + const resolve = resolver(parsed); + const out = {}; + const unresolved = []; + + const isPublicIn = (t, types) => (t.kind === "enum" ? t.vis === "public" : isPublicType(t, types)); + const exposed = new Set(); + const queue = []; + for (const [pkg, types] of parsed) { + for (const t of types) if (["class", "coclass", "interface"].includes(t.kind) && isPublicIn(t, types)) queue.push({ pkg, t }); + } + const expose = (hit) => { + if (hit && !exposed.has(hit.type)) { exposed.add(hit.type); queue.push({ pkg: hit.pkg, t: hit.type }); } + }; + while (queue.length) { + const { pkg, t } = queue.shift(); + for (const ref of t.inherits) expose(resolve(ref, pkg, ["class"])); + for (const i of t.interfaces) expose(resolve(i.name, pkg, ["interface"])); + if (t.extends && !ROOT_INTERFACES.test(t.extends)) expose(resolve(t.extends, pkg, ["interface"])); + } + + for (const [pkg, types] of parsed) { + const list = []; + for (const t of types) { + const isPublic = isPublicIn(t, types); + const rec = { name: t.name, kind: t.kind }; + if (t.container) rec.in = t.container; + if (!isPublic) rec.public = false; + if (t.hidden) rec.hidden = true; + if (t.kind === "class" && t.attributes.some((a) => CONTROL_ATTRIBUTES.test(a))) rec.control = true; + if (t.kind === "coclass") { + const def = t.interfaces.find((i) => i.isDefault); + if (def) rec.default = def.name; + const src = t.interfaces.filter((i) => i.isSource).map((i) => i.name); + if (src.length) rec.source = src; + const other = t.interfaces.filter((i) => !i.isDefault && !i.isSource).map((i) => i.name); + if (other.length) rec.interfaces = other; + } + const qualify = (ref, kinds) => { + const hit = resolve(ref, pkg, kinds); + if (!hit) { unresolved.push(`${pkg}.${t.name}: ${ref}`); return ref.replace(/[[\]]/g, ""); } + return `${hit.pkg}.${hit.type.name}`; + }; + if (t.inherits.length) rec.inherits = t.inherits.map((b) => qualify(b, ["class"])); + if (t.extends && !ROOT_INTERFACES.test(t.extends)) rec.extends = qualify(t.extends, ["interface"]); + if (!isPublic && !exposed.has(t)) { list.push(rec); continue; } + + const members = t.members.filter((m) => m.vis === "public"); + if (t.kind === "enum") { + rec.values = unique(members.map((m) => m.name)); + } else if (t.kind === "type" || t.kind === "union") { + const fields = unique(members.filter((m) => m.kind === "field").map((m) => m.name)); + if (fields.length) rec.fields = fields; + const methods = members.filter((m) => m.kind !== "field"); + if (methods.length) rec.members = kinds(methods); + } else if (members.length) { + rec.members = kinds(members); + } + const hidden = unique(members.filter((m) => m.hidden).map((m) => m.name)); + if (hidden.length) rec.hiddenMembers = hidden; + list.push(rec); + } + if (list.length) out[pkg] = list; + } + return { packages: out, unresolved }; +} + +function unique(names) { + const seen = new Set(); + return names.filter((n) => { const k = n.toLowerCase(); if (seen.has(k)) return false; seen.add(k); return true; }); +} + +// {name: kind}, the first declaration of a name deciding its kind -- a +// Property Get and its Let are one property, and two overloads of LBound one +// function. +function kinds(members) { + const out = {}; + const seen = new Set(); + for (const m of members) { + const k = m.name.toLowerCase(); + if (seen.has(k)) continue; + seen.add(k); + out[m.name] = m.kind; + } + return out; +} diff --git a/test.bat b/test.bat index 355864a6..31afd9e4 100644 --- a/test.bat +++ b/test.bat @@ -86,6 +86,16 @@ node scripts/check_page_baseline.mjs @rem empty docs\. No tree, no browser, well under a second. node scripts/check_book_coverage.mjs @if errorlevel 1 goto :fail +@rem The symbol index (tB/symbols.json) is read by the IDE help add-in, +@rem and a build that indexes the reference cleanly says nothing about the +@rem rules that did not fire on it. These probes assert each one against +@rem the case that made it necessary: the .twin scanner's traps, the rules +@rem that place a symbol on a page or heading, and the drift guard's +@rem refusal of a URL the index has stopped publishing -- a reworded +@rem heading moves its anchor, and an installed add-in keeps the old one. +@rem Fixtures only: no tree, no install, ~100 ms. +node scripts/check_symbol_index.mjs +@if errorlevel 1 goto :fail @rem check_a11y.mjs injects a PATCHED axe bundle (plain-color-fields, @rem -26 % on a realistic page set). The patch asserts its substitution @rem targets, so an axe-core bump fails loudly; this catches the other