obsidian-integration-testing 10.4.0 → 11.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/lib/cjs/eval-in-obsidian.cjs +1 -1
- package/dist/lib/cjs/eval-in-obsidian.d.cts +55 -2
- package/dist/lib/cjs/index.cjs +4 -1
- package/dist/lib/cjs/index.d.cts +7 -4
- package/dist/lib/cjs/library.cjs +1 -1
- package/dist/lib/cjs/namespace-bootstrap.cjs +45 -2
- package/dist/lib/cjs/obsidian-metadata.cjs +1135 -332
- package/dist/lib/cjs/obsidian-metadata.d.cts +57 -6
- package/dist/lib/cjs/open-obsidian-settings-tab.cjs +51 -0
- package/dist/lib/cjs/open-obsidian-settings-tab.d.cts +49 -0
- package/dist/lib/cjs/transport-desktop-cdp.cjs +1 -1
- package/dist/lib/cjs/transport-desktop-cdp.d.cts +1 -2
- package/dist/lib/esm/eval-in-obsidian.d.mts +55 -2
- package/dist/lib/esm/eval-in-obsidian.mjs +1 -1
- package/dist/lib/esm/index.d.mts +7 -4
- package/dist/lib/esm/index.mjs +3 -1
- package/dist/lib/esm/library.mjs +1 -1
- package/dist/lib/esm/namespace-bootstrap.mjs +45 -2
- package/dist/lib/esm/obsidian-metadata.d.mts +57 -6
- package/dist/lib/esm/obsidian-metadata.mjs +1135 -332
- package/dist/lib/esm/open-obsidian-settings-tab.d.mts +49 -0
- package/dist/lib/esm/open-obsidian-settings-tab.mjs +27 -0
- package/dist/lib/esm/transport-desktop-cdp.d.mts +1 -2
- package/dist/lib/esm/transport-desktop-cdp.mjs +1 -1
- package/package.json +12 -12
package/README.md
CHANGED
|
@@ -17,7 +17,7 @@ Full documentation lives at **[mnaoumov.dev/obsidian-integration-testing](https:
|
|
|
17
17
|
- [Getting started](https://mnaoumov.dev/obsidian-integration-testing/guides/getting-started/) — install, wire up Vitest or Jest, first assertion.
|
|
18
18
|
- [Writing tests](https://mnaoumov.dev/obsidian-integration-testing/guides/writing-tests/) — how `evalInObsidian` executes a callback, arguments, results, `ContextId`, internal APIs.
|
|
19
19
|
- [Simulating user input](https://mnaoumov.dev/obsidian-integration-testing/guides/user-input/) — trusted keyboard and pointer events, and `waitUntil`.
|
|
20
|
-
- [The `lib` bag](https://mnaoumov.dev/obsidian-integration-testing/guides/lib/) — inject your own helpers into callbacks; `createNote`.
|
|
20
|
+
- [The `lib` bag](https://mnaoumov.dev/obsidian-integration-testing/guides/lib/) — inject your own helpers into callbacks; `createNote`, `openSettingsTab`.
|
|
21
21
|
- [Vaults and fixtures](https://mnaoumov.dev/obsidian-integration-testing/guides/vaults/) — temporary vaults, pre-populating files, seeding a plugin's `demo-vault/`, non-plugin consumers.
|
|
22
22
|
- [Transport modes](https://mnaoumov.dev/obsidian-integration-testing/guides/transports/) — version pinning, window visibility, attaching to a running Obsidian, multi-platform runs.
|
|
23
23
|
- [Android testing](https://mnaoumov.dev/obsidian-integration-testing/guides/android/) — Appium setup, AVD provisioning, troubleshooting.
|
|
@@ -79,4 +79,4 @@ ${sanitizedDetail}`);
|
|
|
79
79
|
0 && (module.exports = {
|
|
80
80
|
evalInObsidian
|
|
81
81
|
});
|
|
82
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2V2YWwtaW4tb2JzaWRpYW4udHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBFdmFsdWF0ZXMgYSBmdW5jdGlvbiBpbnNpZGUgYSBydW5uaW5nIE9ic2lkaWFuIGluc3RhbmNlIHZpYSBhIHBsdWdnYWJsZSB0cmFuc3BvcnQuXG4gKi9cblxuaW1wb3J0IHR5cGUge1xuICBBcHAsXG4gIEVkaXRvcixcbiAgTW9kaWZpZXIsXG4gIFRGaWxlXG59IGZyb20gJ29ic2lkaWFuJztcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQteC9uby1uYW1lc3BhY2UgLS0gV2UgbmVlZCB0byByZWZlcmVuY2UgYG9ic2lkaWFuYCBtb2R1bGUuXG5pbXBvcnQgdHlwZSAqIGFzIG9ic2lkaWFuIGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgUHJvbWlzYWJsZSB9IGZyb20gJ3R5cGUtZmVzdCc7XG5cbmltcG9ydCB7IGV4aXN0c1N5bmMgfSBmcm9tICdub2RlOmZzJztcbmltcG9ydCBwcm9jZXNzIGZyb20gJ25vZGU6cHJvY2Vzcyc7XG5cbmltcG9ydCB0eXBlIHtcbiAgQ29udGV4dEFyZ3VtZW50cyxcbiAgQ29udGV4dElkXG59IGZyb20gJy4vY29udGV4dC1pZC5janMnO1xuaW1wb3J0IHR5cGUgeyBHZW5lcmF0ZU5hbWVzcGFjZUNhbGxQYXJhbXMgfSBmcm9tICcuL2dlbmVyYXRlLWZ1bmN0aW9uLWNhbGwuY2pzJztcbmltcG9ydCB0eXBlIHsgT2JzaWRpYW5UcmFuc3BvcnQgfSBmcm9tICcuL3RyYW5zcG9ydC5janMnO1xuXG5pbXBvcnQge1xuICBnZXRUcmFuc3BvcnRPcHRpb25zLFxuICBnZXRWYXVsdFBhdGhcbn0gZnJvbSAnLi9jb250ZXh0LXByb3ZpZGVyLmNqcyc7XG5pbXBvcnQgeyBnZW5lcmF0ZU5hbWVzcGFjZUNhbGwgfSBmcm9tICcuL2dlbmVyYXRlLWZ1bmN0aW9uLWNhbGwuY2pzJztcbmltcG9ydCB7IGVuc3VyZU5hbWVzcGFjZUJvb3RzdHJhcHBlZCB9IGZyb20gJy4vbmFtZXNwYWNlLWJvb3RzdHJhcC5janMnO1xuaW1wb3J0IHsgZ2V0T3JDcmVhdGVUcmFuc3BvcnQgfSBmcm9tICcuL3RyYW5zcG9ydC1mYWN0b3J5LmNqcyc7XG5cbmludGVyZmFjZSBFdmFsRXJyb3JFbnZlbG9wZSB7XG4gIHR5cGU6ICdlcnJvcic7XG4gIHZhbHVlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogRGlzY3JpbWluYXRlZCBlbnZlbG9wZSByZXR1cm5lZCBieSB0aGUgcmVnaXN0ZXJlZCBgZXZhbFdyYXBwZXJgIGZyb20gaW5zaWRlIHRoZSBPYnNpZGlhbiBwcm9jZXNzLlxuICpcbiAqIC0gYEV2YWxFcnJvckVudmVsb3BlYCBcdTIwMTQgYGNhbGxiYWNrYCB0aHJldzsgYHZhbHVlYCBpcyB0aGUgc2VyaWFsaXplZCBlcnJvci5cbiAqIC0gYEV2YWxVbmRlZmluZWRFbnZlbG9wZWAgXHUyMDE0IGBjYWxsYmFja2AgcmV0dXJuZWQgYHVuZGVmaW5lZGAuXG4gKiAtIGBFdmFsVmFsdWVFbnZlbG9wZWAgXHUyMDE0IGBjYWxsYmFja2AgcmV0dXJuZWQgYSBKU09OLXNlcmlhbGl6YWJsZSB2YWx1ZS5cbiAqL1xudHlwZSBFdmFsUmVzdWx0RW52ZWxvcGUgPVxuICB8IEV2YWxFcnJvckVudmVsb3BlXG4gIHwgRXZhbFVuZGVmaW5lZEVudmVsb3BlXG4gIHwgRXZhbFZhbHVlRW52ZWxvcGU7XG5cbmludGVyZmFjZSBFdmFsVW5kZWZpbmVkRW52ZWxvcGUge1xuICB0eXBlOiAndW5kZWZpbmVkJztcbn1cblxuaW50ZXJmYWNlIEV2YWxWYWx1ZUVudmVsb3BlIHtcbiAgdmFsdWU6IHVua25vd247XG59XG5cbmNvbnN0IE5PX09VVFBVVCA9ICcobm8gb3V0cHV0KSc7XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIENvbW1vbkFyZ3VtZW50cy5jbGlja0VsZW1lbnR9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENsaWNrRWxlbWVudFBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgbW91c2UgYnV0dG9uIHRvIHByZXNzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgJ2xlZnQnYFxuICAgKi9cbiAgcmVhZG9ubHkgYnV0dG9uPzogTW91c2VCdXR0b247XG5cbiAgLyoqXG4gICAqIFRoZSBlbGVtZW50IHRvIGNsaWNrLiBUaGUgcG9pbnRlciBpcyBtb3ZlZCB0byBpdHMgY2VudGVyLiBUaGlzIGlzIGEgbGl2ZVxuICAgKiByZW5kZXJlciBET00gbm9kZSBcdTIwMTQgdGhlIGNhbGxiYWNrIHJ1bnMgaW4tcmVuZGVyZXIsIHNvIG5vIGNyb3NzLXByb2Nlc3NcbiAgICogc2VyaWFsaXphdGlvbiBpcyBuZWVkZWQgKHNhbWUgYXMge0BsaW5rIFR5cGVJbnRvRWRpdG9yUGFyYW1zLmVkaXRvcn0pLlxuICAgKi9cbiAgcmVhZG9ubHkgZWxlbWVudDogSFRNTEVsZW1lbnQ7XG5cbiAgLyoqXG4gICAqIFRoZSBtb2RpZmllciBrZXlzIHRvIGhvbGQsIHVzaW5nIE9ic2lkaWFuJ3Mge0BsaW5rIE1vZGlmaWVyfSBuYW1lcy4gYCdNb2QnYFxuICAgKiByZXNvbHZlcyBwZXItcGxhdGZvcm0gKENtZCBvbiBtYWNPUywgQ3RybCBlbHNld2hlcmUpLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgW11gXG4gICAqL1xuICByZWFkb25seSBtb2RpZmllcnM/OiByZWFkb25seSBNb2RpZmllcltdO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBDb21tb25Bcmd1bWVudHMuY2xpY2tNb3VzZX0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2xpY2tNb3VzZVBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgbW91c2UgYnV0dG9uIHRvIHByZXNzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgJ2xlZnQnYFxuICAgKi9cbiAgcmVhZG9ubHkgYnV0dG9uPzogTW91c2VCdXR0b247XG5cbiAgLyoqXG4gICAqIFRoZSBtb2RpZmllciBrZXlzIHRvIGhvbGQsIHVzaW5nIE9ic2lkaWFuJ3Mge0BsaW5rIE1vZGlmaWVyfSBuYW1lcy4gYCdNb2QnYFxuICAgKiByZXNvbHZlcyBwZXItcGxhdGZvcm0gKENtZCBvbiBtYWNPUywgQ3RybCBlbHNld2hlcmUpLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgW11gXG4gICAqL1xuICByZWFkb25seSBtb2RpZmllcnM/OiByZWFkb25seSBNb2RpZmllcltdO1xuXG4gIC8qKlxuICAgKiBUaGUgeCBjb29yZGluYXRlICh3ZWItY29udGVudHMgRElQKSB0byBjbGljayBhdC5cbiAgICovXG4gIHJlYWRvbmx5IHg6IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIHkgY29vcmRpbmF0ZSAod2ViLWNvbnRlbnRzIERJUCkgdG8gY2xpY2sgYXQuXG4gICAqL1xuICByZWFkb25seSB5OiBudW1iZXI7XG59XG5cbi8qKlxuICogQ29tbW9uIGFyZ3VtZW50cyBhdXRvbWF0aWNhbGx5IHByb3ZpZGVkIHRvIGV2ZXJ5IHtAbGluayBldmFsSW5PYnNpZGlhbn0gY2FsbGJhY2suXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29tbW9uQXJndW1lbnRzIHtcbiAgLyoqXG4gICAqIFRoZSBPYnNpZGlhbiB7QGxpbmsgQXBwfSBpbnN0YW5jZS5cbiAgICovXG4gIGFwcDogQXBwO1xuXG4gIC8qKlxuICAgKiBUaGUgc2hhcmVkIGxpYnJhcnkgYmFnIGluamVjdGVkIGludG8gZXZlcnkgY2FsbGJhY2sgXHUyMDE0IHNlZSB7QGxpbmsgTGlifS5cbiAgICpcbiAgICogTmV2ZXIgZW1wdHk6IHRoZSBoYXJuZXNzIHByZS1wb3B1bGF0ZXMgYSAqKmJhc2UqKiBzZXQgb2YgcmVuZGVyZXItZHJpdmluZ1xuICAgKiBoZWxwZXJzICh0cnVzdGVkIGlucHV0IFx1MjAxNCBgdHlwZUludG9FZGl0b3JgIC8gYHByZXNzS2V5YCAvIGBtb3ZlTW91c2VgIC9cbiAgICogYGNsaWNrTW91c2VgIC8gYGhvdmVyRWxlbWVudGAgLyBgdW5ob3ZlckVsZW1lbnRgIC8gYGNsaWNrRWxlbWVudGAgXHUyMDE0IGFuZFxuICAgKiBgd2FpdFVudGlsYCksIGFuZCBwcm92aWRlciBwYWNrYWdlc1xuICAgKiAoY2hpZWZseSBgb2JzaWRpYW4tZGV2LXV0aWxzYCkgYE9iamVjdC5hc3NpZ25gIHRoZWlyIHdob2xlIHJlbmRlcmVyLXNhZmVcbiAgICogbGlicmFyeSBvbiB0b3AgdmlhIHtAbGluayByZWdpc3RlckxpYlJlc29sdmVyfS4gQSBzZXJpYWxpemVkIGNsb3N1cmUgcmVhY2hlc1xuICAgKiBldmVyeSBzaGFyZWQgaGVscGVyIHRocm91Z2ggYGxpYmAgXHUyMDE0IGBsaWIudHlwZUludG9FZGl0b3IoeyBlZGl0b3IsIHRleHQgfSlgLFxuICAgKiBgbGliLmdldEZpbGVPck51bGwoeyBhcHAsIFx1MjAyNiB9KWAgXHUyMDE0IGluc3RlYWQgb2YgaW1wb3J0aW5nIG9yIGhhbmQtcm9sbGluZyB0aGVtLlxuICAgKi9cbiAgbGliOiBMaWI7XG5cbiAgLyoqXG4gICAqIFRoZSBgb2JzaWRpYW5gIG1vZHVsZSwgcmVzb2x2ZWQgYXQgcnVudGltZSBpbnNpZGUgdGhlIE9ic2lkaWFuIHByb2Nlc3MuXG4gICAqL1xuICBvYnNpZGlhbk1vZHVsZTogdHlwZW9mIG9ic2lkaWFuO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBDb21tb25Bcmd1bWVudHMuY3JlYXRlTm90ZX0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlTm90ZVBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgbm90ZSdzIGNvbnRlbnQuIFRoaXMgZXhhY3Qgc3RyaW5nIGlzIHdoYXQgdGhlIGNyZWF0ZWQgbm90ZSBpcyByZWFkIGJhY2tcbiAgICogYWdhaW5zdCwgc28gaXQgaXMgdGhlIGRlZmluaXRpb24gb2YgYSBzdWNjZXNzZnVsIHdyaXRlLlxuICAgKi9cbiAgcmVhZG9ubHkgY29udGVudDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdmF1bHQtcmVsYXRpdmUgcGF0aCB0byBjcmVhdGUsIGV4dGVuc2lvbiBpbmNsdWRlZC5cbiAgICovXG4gIHJlYWRvbmx5IHBhdGg6IHN0cmluZztcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgZXZhbEluT2JzaWRpYW59LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV2YWxJbk9ic2lkaWFuUGFyYW1zPElucHV0IGV4dGVuZHMgR2VuZXJpY09iamVjdCwgUmVzdWx0LCBUQ29udGV4dElkIGV4dGVuZHMgQ29udGV4dElkPHVua25vd24+IHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkPiB7XG4gIC8qKlxuICAgKiBUaGUgZnVuY3Rpb24gdG8gZXZhbHVhdGUgaW4gdGhlIE9ic2lkaWFuIGNvbnRleHQuXG4gICAqL1xuICBjYWxsYmFjayhpbnB1dDogQ29tbW9uQXJndW1lbnRzICYgQ29udGV4dEFyZ3VtZW50czxUQ29udGV4dElkPiAmIElucHV0KTogUHJvbWlzYWJsZTxSZXN1bHQ+O1xuXG4gIC8qKlxuICAgKiBBIHtAbGluayBDb250ZXh0SWR9IGxpbmtpbmcgdGhpcyBjYWxsIHRvIGEgcGVyc2lzdGVudCBzdG9yZSBvbiBgd2luZG93YFxuICAgKiBpbiB0aGUgT2JzaWRpYW4gcHJvY2Vzcy4gVGhlIGNhbGxiYWNrIHJlY2VpdmVzIGEgdHlwZWQgYGNvbnRleHRgIG9iamVjdFxuICAgKiB0aGF0IHN1cnZpdmVzIGFjcm9zcyBjYWxscyBzaGFyaW5nIHRoZSBzYW1lIElELlxuICAgKlxuICAgKiBXaGVuIG9taXR0ZWQsIGBjb250ZXh0YCBpcyBhIGZyZXNoIGVtcHR5IG9iamVjdCBlYWNoIGNhbGwuXG4gICAqL1xuICByZWFkb25seSBjb250ZXh0SWQ/OiBUQ29udGV4dElkO1xuXG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIGFyZ3VtZW50cyB0byBwYXNzIHRvIHRoZSBmdW5jdGlvbi4gVmFsdWVzIG1heSBpbmNsdWRlIGZ1bmN0aW9ucyBcdTIwMTRcbiAgICogdGhleSBhcmUgc2VyaWFsaXplZCB2aWEgYHRvU3RyaW5nKClgLlxuICAgKi9cbiAgcmVhZG9ubHkgaW5wdXQ/OiBJbnB1dDtcblxuICAvKipcbiAgICogU2tpcHMgcHJlLWZsaWdodCBjaGVja3MgKHZhdWx0IHJlZ2lzdHJhdGlvbiwgQ0xJIGF2YWlsYWJpbGl0eSkuXG4gICAqIFVzZWQgaW50ZXJuYWxseSBieSB2YXVsdCByZWdpc3RyYXRpb24gZnVuY3Rpb25zLlxuICAgKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZFNraXBQcmVmbGlnaHRDaGVja3M/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBPdmVycmlkZSB0aGUgdHJhbnNwb3J0IGZvciB0aGlzIGNhbGwuIFdoZW4gb21pdHRlZCwgdXNlcyB0aGUgdHJhbnNwb3J0XG4gICAqIGNvbmZpZ3VyZWQgdmlhIHRoZSBjb250ZXh0IHByb3ZpZGVyIChzZXQgYnkgdGhlIGZyYW1ld29yayBhZGFwdGVyJ3MgZ2xvYmFsIHNldHVwKS5cbiAgICovXG4gIHJlYWRvbmx5IHRyYW5zcG9ydD86IE9ic2lkaWFuVHJhbnNwb3J0O1xuXG4gIC8qKlxuICAgKiBUaGUgcGF0aCB0byB0aGUgT2JzaWRpYW4gdmF1bHQuIERlZmF1bHRzIHRvIGBwcm9jZXNzLmN3ZCgpYC5cbiAgICovXG4gIHJlYWRvbmx5IHZhdWx0UGF0aD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBBIHBsYWluIG9iamVjdCB3aXRoIHN0cmluZyBrZXlzLlxuICovXG5leHBvcnQgdHlwZSBHZW5lcmljT2JqZWN0ID0gUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIENvbW1vbkFyZ3VtZW50cy5ob3ZlckVsZW1lbnR9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEhvdmVyRWxlbWVudFBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgZWxlbWVudCB0byBob3Zlci4gVGhlIHBvaW50ZXIgaXMgbW92ZWQgdG8gaXRzIGNlbnRlci4gVGhpcyBpcyBhIGxpdmVcbiAgICogcmVuZGVyZXIgRE9NIG5vZGUgXHUyMDE0IHRoZSBjYWxsYmFjayBydW5zIGluLXJlbmRlcmVyLCBzbyBubyBjcm9zcy1wcm9jZXNzXG4gICAqIHNlcmlhbGl6YXRpb24gaXMgbmVlZGVkIChzYW1lIGFzIHtAbGluayBUeXBlSW50b0VkaXRvclBhcmFtcy5lZGl0b3J9KS5cbiAgICovXG4gIHJlYWRvbmx5IGVsZW1lbnQ6IEhUTUxFbGVtZW50O1xufVxuXG4vKipcbiAqIFRoZSBzaGFyZWQgbGlicmFyeSBiYWcgaW5qZWN0ZWQgaW50byBldmVyeSB7QGxpbmsgZXZhbEluT2JzaWRpYW59IGNhbGxiYWNrIGFzXG4gKiB7QGxpbmsgQ29tbW9uQXJndW1lbnRzLmxpYn0uXG4gKlxuICogVHdvIGxheWVycyBjb21wb3NlIGludG8gdGhpcyBvbmUgYmFnLiBUaGUgKipiYXNlKiogXHUyMDE0IHRoZSBoYXJuZXNzLXByb3ZpZGVkXG4gKiByZW5kZXJlci1kcml2aW5nIGhlbHBlcnMgZGVjbGFyZWQgYmVsb3cgKHRoZSB0cnVzdGVkLWlucHV0IHByaW1pdGl2ZXMgYW5kXG4gKiB7QGxpbmsgTGliLndhaXRVbnRpbH0pIFx1MjAxNCBpcyBhbHdheXMgcHJlc2VudC4gT24gdG9wLCBwcm92aWRlciBwYWNrYWdlcyByZWdpc3RlclxuICogYSByZW5kZXJlci1zaWRlIHJlc29sdmVyIHZpYSB7QGxpbmsgcmVnaXN0ZXJMaWJSZXNvbHZlcn0gdG8gYE9iamVjdC5hc3NpZ25gXG4gKiB0aGVpciB3aG9sZSByZW5kZXJlci1zYWZlIGxpYnJhcnkgYXQgcnVudGltZSwgYW5kIGF1Z21lbnQgdGhpcyAqKmF1Z21lbnRhYmxlKipcbiAqIGludGVyZmFjZSAodGhlIGBpMThuZXh0YCBgQ3VzdG9tVHlwZU9wdGlvbnNgIGlkaW9tKSB2aWFcbiAqIGBkZWNsYXJlIG1vZHVsZSAnb2JzaWRpYW4taW50ZWdyYXRpb24tdGVzdGluZydgIHRvIHR5cGUgaXQuIE11bHRpcGxlIHByb3ZpZGVyc1xuICogY29tcG9zZTogdGhlaXIgZXhwb3J0cyBtZXJnZSBhdCBydW50aW1lIGFuZCB0aGVpciBhdWdtZW50YXRpb25zIG1lcmdlIGluIHRoZVxuICogdHlwZSBzeXN0ZW0gKGBpbnRlcmZhY2UgTGliIGV4dGVuZHMgXHUyMDI2YCkuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiBkZWNsYXJlIG1vZHVsZSAnb2JzaWRpYW4taW50ZWdyYXRpb24tdGVzdGluZycge1xuICogICBpbnRlcmZhY2UgTGliIGV4dGVuZHMgKHR5cGVvZiBpbXBvcnQoJ29ic2lkaWFuLWRldi11dGlscy9fX21lcmdlZCcpKSB7fVxuICogfVxuICogYGBgXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGliIHtcbiAgLyoqXG4gICAqIENsaWNrcyB0aGUgY2VudGVyIG9mIGFuIGVsZW1lbnQgdXNpbmcgKip0cnVzdGVkKiogRWxlY3Ryb24gcG9pbnRlciBpbnB1dC5cbiAgICpcbiAgICogVGhlIGVsZW1lbnQtcmVsYXRpdmUgY291bnRlcnBhcnQgb2Yge0BsaW5rIExpYi5jbGlja01vdXNlfSwgbWlycm9yaW5nIHRoZVxuICAgKiB7QGxpbmsgTGliLm1vdmVNb3VzZX0gLyB7QGxpbmsgTGliLmhvdmVyRWxlbWVudH0gc3BsaXQuIFVzZVxuICAgKiB7QGxpbmsgTGliLmNsaWNrTW91c2V9IGRpcmVjdGx5IHdoZW4gdGhlIHBvaW50IHRvIGNsaWNrIGlzICoqbm90KiogdGhlXG4gICAqIGVsZW1lbnQncyBjZW50ZXIgXHUyMDE0IHRoZSBtYXJrZG93biBlZGl0b3IncyBtYXJnaW4sIGZvciBpbnN0YW5jZSwgbGllcyBpbnNpZGVcbiAgICogYGNtLnNjcm9sbERPTWAgYnV0IG91dHNpZGUgYC5jbS1zaXplcmAsIHNvIG5vIGVsZW1lbnQncyBjZW50ZXIgbGFuZHMgb24gaXQuXG4gICAqXG4gICAqIFN5bmNocm9ub3VzOiBpbmplY3RpbmcgdGhlIHRydXN0ZWQgY2xpY2sgZG9lcyBubyByZWFsIGF3YWl0aW5nLCBzbyB0aGVcbiAgICogY2FsbGVyIGRvZXMgbm90IG5lZWQgdG8gYGF3YWl0YCBpdC5cbiAgICpcbiAgICogQHBhcmFtIHBhcmFtcyAtIFRoZSBlbGVtZW50IHRvIGNsaWNrLCB0aGUgYnV0dG9uIHRvIHByZXNzIGFuZCBhbnkgbW9kaWZpZXJzXG4gICAqICAgdG8gaG9sZC5cbiAgICovXG4gIGNsaWNrRWxlbWVudCh0aGlzOiB2b2lkLCBwYXJhbXM6IENsaWNrRWxlbWVudFBhcmFtcyk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIENsaWNrcyBhdCB0aGUgZ2l2ZW4gd2ViLWNvbnRlbnRzIGNvb3JkaW5hdGVzIHVzaW5nICoqdHJ1c3RlZCoqIEVsZWN0cm9uXG4gICAqIHBvaW50ZXIgaW5wdXQsIHNvIENocm9taXVtIHN5bnRoZXNpemVzIGEgcmVhbCBgY2xpY2tgIChvciBgY29udGV4dG1lbnVgLFxuICAgKiBmb3IgdGhlIHJpZ2h0IGJ1dHRvbikgd2l0aCBgaXNUcnVzdGVkID09PSB0cnVlYC5cbiAgICpcbiAgICogVGhpcyBpcyB3aGF0IGBlbGVtZW50LmRpc3BhdGNoRXZlbnQobmV3IE1vdXNlRXZlbnQoJ2NsaWNrJykpYCBjYW5ub3QgZG86XG4gICAqIE9ic2lkaWFuIGFuZCBDb2RlTWlycm9yIGdhdGUgb24gYGlzVHJ1c3RlZGAsIHNvIGEgZGlzcGF0Y2hlZCBldmVudCBzaWxlbnRseVxuICAgKiBleGVyY2lzZXMgbm90aGluZyB3aGlsZSB0aGUgdGVzdCBzdGlsbCBwYXNzZXMgd2hhdGV2ZXIgd2Vha2VyIGFzc2VydGlvbiBpdFxuICAgKiBtYWtlcy4gT2JzaWRpYW4gMS4xMy43J3MgbWFya2Rvd24gdmlld3BvcnQgKG1hcmdpbikgbWVudSwgZm9yIGV4YW1wbGUsXG4gICAqIG9wZW5zIGZyb20gYSBgY20uc2Nyb2xsRE9NYCBgY29udGV4dG1lbnVgIGxpc3RlbmVyIGd1YXJkZWQgYnlcbiAgICogYGUuaXNUcnVzdGVkYCwgd2hpY2ggYSBkaXNwYXRjaGVkIGV2ZW50IG5ldmVyIGdldHMgcGFzdC5cbiAgICpcbiAgICogSXQgaXMgdGhlIGxvdy1sZXZlbCBwcmltaXRpdmU6IGEgc2luZ2xlIHRydXN0ZWQgYG1vdXNlTW92ZWAgXHUyMTkyIGBtb3VzZURvd25gIFx1MjE5MlxuICAgKiBgbW91c2VVcGAgYXQgb25lIHBvaW50LCB3aXRoIG5vIHdhaXRpbmcgZm9yIGFueSBlZmZlY3QgKGNhbGxlcnMgcG9sbCB0aGVpclxuICAgKiBvd24gcmVhZGluZXNzIHNpZ25hbCkuIFRoZSBsZWFkaW5nIG1vdmUgaXMgd2hhdCBwdXRzIHRoZSBwb2ludGVyIG92ZXIgdGhlXG4gICAqIGhpdC10ZXN0IHRhcmdldCBiZWZvcmUgdGhlIGJ1dHRvbiBnb2VzIGRvd24uIFByZWZlclxuICAgKiB7QGxpbmsgTGliLmNsaWNrRWxlbWVudH0gZm9yIGVsZW1lbnQtcmVsYXRpdmUgY2xpY2tzLlxuICAgKlxuICAgKiBBIHJlYWwgY29udGV4dCBtZW51IGFjdHVhbGx5IG9wZW5zLCBzbyBhIHN1aXRlIGRyaXZpbmcgYSByaWdodCBjbGljayBtdXN0XG4gICAqIGNsb3NlIGl0IChvciByZW1vdmUgdGhlIGxlZnRvdmVyIGAubWVudWAgZWxlbWVudCkgYmVmb3JlIHRoZSBuZXh0IHRlc3QuXG4gICAqXG4gICAqIFN5bmNocm9ub3VzOiBpbmplY3RpbmcgdGhlIHRydXN0ZWQgY2xpY2sgZG9lcyBubyByZWFsIGF3YWl0aW5nLCBzbyB0aGVcbiAgICogY2FsbGVyIGRvZXMgbm90IG5lZWQgdG8gYGF3YWl0YCBpdC5cbiAgICpcbiAgICogQHBhcmFtIHBhcmFtcyAtIFRoZSB3ZWItY29udGVudHMgRElQIGNvb3JkaW5hdGVzIHRvIGNsaWNrIGF0LCB0aGUgYnV0dG9uIHRvXG4gICAqICAgcHJlc3MgYW5kIGFueSBtb2RpZmllcnMgdG8gaG9sZC5cbiAgICovXG4gIGNsaWNrTW91c2UodGhpczogdm9pZCwgcGFyYW1zOiBDbGlja01vdXNlUGFyYW1zKTogdm9pZDtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5vdGUgYW5kIGRvZXMgbm90IHJldHVybiB1bnRpbCBpdHMgY29udGVudCBpcyB2ZXJpZmlhYmx5IG9uXG4gICAqIGRpc2ssIHJld3JpdGluZyBpdCBpZiBpdCBpcyBub3QuXG4gICAqXG4gICAqIFVzZSB0aGlzIGluc3RlYWQgb2YgYGFwcC52YXVsdC5jcmVhdGVgIGluIGFueSBzdWl0ZSB0aGF0IG1heSBydW4gb25cbiAgICogQW5kcm9pZC4gVGhlIGVtdWxhdG9yIHRyYW5zcG9ydCBsb3NlcyByb3VnaGx5ICoqMC45ICUqKiBvZiBgdmF1bHQuY3JlYXRlYFxuICAgKiB3cml0ZXMgKG1lYXN1cmVkOiA3IGxvc3QgaW4gODAwIGNyZWF0ZXMpOiB0aGUgZmlsZSBsYW5kcyAqKjAgYnl0ZXMqKiBvblxuICAgKiBkaXNrIHdoaWxlIE9ic2lkaWFuJ3MgaW4tbWVtb3J5IGBURmlsZS5zdGF0YCByZXBvcnRzIHRoZSBmdWxsIGJ5dGUgY291bnQsXG4gICAqIGFuZCBpdCBkb2VzIG5vdCBoZWFsIG9uIGl0cyBvd24uIEEgc3VpdGUgZG9pbmcgfjM0IGNyZWF0ZXMgcGVyIHJ1blxuICAgKiB0aGVyZWZvcmUgaGFzIGEgfjI2ICUgY2hhbmNlIG9mIGF0IGxlYXN0IG9uZSBsb3N0IHdyaXRlLCBhbmQgd2hpY2hldmVyIHRlc3RcbiAgICogbG9zZXMgdGhhdCBsb3R0ZXJ5IGZhaWxzIG9uIGEgYHdhaXRVbnRpbGAgZm9yIGNvbnRlbnQgdGhhdCB3YXMgbmV2ZXJcbiAgICogd3JpdHRlbiBcdTIwMTQgd2hpY2ggaXMgd2h5IGl0IHJlYWRzIGFzIGFuIHVucmVsYXRlZCBwZXItdGVzdCBmbGFrZSByYXRoZXIgdGhhblxuICAgKiBvbmUgc2hhcmVkIGNhdXNlLlxuICAgKlxuICAgKiBWZXJpZmljYXRpb24gaXMgYnkgKipyZWFkaW5nIHRoZSBub3RlIGJhY2sqKiwgbmV2ZXIgYnkgaW5zcGVjdGluZ1xuICAgKiBgVEZpbGUuc3RhdGA6IGBzdGF0YCBpcyBleGFjdGx5IHRoZSBmaWVsZCB0aGF0IGxpZXMgaGVyZS4gQSByZXdyaXRlIHRocm91Z2hcbiAgICogYHZhdWx0Lm1vZGlmeWAgd2l0aCB0aGUgc2FtZSBjb250ZW50IGxhbmRzIGNvcnJlY3RseSAoYWxzbyBtZWFzdXJlZCksIHNvIGFcbiAgICogbG9zdCB3cml0ZSBjb3N0cyBhIHJldHJ5IHJhdGhlciB0aGFuIGEgZmFpbHVyZS4gQSBub3RlIHdob3NlIGNvbnRlbnQgc3RpbGxcbiAgICogZG9lcyBub3QgbWF0Y2ggYWZ0ZXIgdGhlIGJvdW5kZWQgcmV0cmllcyB0aHJvd3MsIG5hbWluZyB0aGUgcGF0aCBhbmQgYm90aFxuICAgKiBsZW5ndGhzLCBzbyBhIGdlbnVpbmVseSBicm9rZW4gd3JpdGUgZmFpbHMgbG91ZGx5IGluc3RlYWQgb2Ygc3Bpbm5pbmcuXG4gICAqXG4gICAqIEhhcm1sZXNzIGV2ZXJ5d2hlcmUgZWxzZSBcdTIwMTQgb24gYSB0cmFuc3BvcnQgdGhhdCBkb2VzIG5vdCBsb3NlIHdyaXRlcyB0aGVcbiAgICogcmVhZC1iYWNrIG1hdGNoZXMgZmlyc3QgdGltZSBhbmQgbm90aGluZyBpcyByZXdyaXR0ZW4uXG4gICAqXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgbm90ZSBwYXRoIGFuZCBjb250ZW50LlxuICAgKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSByZXNvbHZpbmcgdG8gdGhlIGNyZWF0ZWQgZmlsZSwgb25jZSBpdHMgY29udGVudFxuICAgKiAgIGlzIGNvbmZpcm1lZC5cbiAgICovXG4gIGNyZWF0ZU5vdGUodGhpczogdm9pZCwgcGFyYW1zOiBDcmVhdGVOb3RlUGFyYW1zKTogUHJvbWlzZTxURmlsZT47XG5cbiAgLyoqXG4gICAqIE1vdmVzIHRoZSBtb3VzZSBwb2ludGVyIHRvIHRoZSBjZW50ZXIgb2YgYW4gZWxlbWVudCB1c2luZyAqKnRydXN0ZWQqKlxuICAgKiBFbGVjdHJvbiBwb2ludGVyIGlucHV0LCB0aGVuIHBvbGxzIHVudGlsIHRoZSBlbGVtZW50IGFjdHVhbGx5IG1hdGNoZXNcbiAgICogYDpob3ZlcmAuXG4gICAqXG4gICAqIEJlY2F1c2UgdGhlIG1vdmUgaXMgdHJ1c3RlZCAoc2VlIHtAbGluayBMaWIubW92ZU1vdXNlfSksIHRoZSByZWFsIGA6aG92ZXJgXG4gICAqIHN0YXRlIHRha2VzIGVmZmVjdCBpbiB0aGUgQ1NTIGVuZ2luZSBcdTIwMTQgcmVhbCB0aGVtZSBgdmFyKClgIHZhbHVlcyBhbmQgcmVhbFxuICAgKiBjb21wb3NpdGluZyBcdTIwMTQgaW5zdGVhZCBvZiBhIGhhbmQtc2ltdWxhdGVkIGNhc2NhZGUuIEl0IHBvbGxzIHRoZSBsaXZlXG4gICAqIGBlbGVtZW50Lm1hdGNoZXMoJzpob3ZlcicpYCBzdGF0ZSAobm90IGEgZml4ZWQgZGVsYXkpLCBzbyBpdCBpcyByb2J1c3QgdW5kZXJcbiAgICogc2hhcmVkLWluc3RhbmNlIGxvYWQuIEl0IHRhcmdldHMgdGhlIHNpbmdsZSBzaGFyZWQgd2luZG93J3MgKipnbG9iYWwqKlxuICAgKiBwb2ludGVyLCBzbyBvbmx5IG9uZSBlbGVtZW50IGlzIGhvdmVyZWQgYXQgYSB0aW1lLlxuICAgKlxuICAgKiBAcGFyYW0gcGFyYW1zIC0gVGhlIGVsZW1lbnQgdG8gaG92ZXIuXG4gICAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgb25jZSB0aGUgZWxlbWVudCBtYXRjaGVzIGA6aG92ZXJgLlxuICAgKi9cbiAgaG92ZXJFbGVtZW50KHRoaXM6IHZvaWQsIHBhcmFtczogSG92ZXJFbGVtZW50UGFyYW1zKTogUHJvbWlzZTx2b2lkPjtcblxuICAvKipcbiAgICogTW92ZXMgdGhlIG1vdXNlIHBvaW50ZXIgdG8gdGhlIGdpdmVuIHdlYi1jb250ZW50cyBjb29yZGluYXRlcyB1c2luZyBhXG4gICAqICoqdHJ1c3RlZCoqIEVsZWN0cm9uIHBvaW50ZXIgbW92ZS5cbiAgICpcbiAgICogQSB0cnVzdGVkIG1vdmUgKGluamVjdGVkIHZpYSBFbGVjdHJvbidzIGB3ZWJDb250ZW50cy5zZW5kSW5wdXRFdmVudGApXG4gICAqIHVwZGF0ZXMgdGhlIHJlYWwgcG9pbnRlciBzdGF0ZSBpbiB0aGUgQ1NTIGVuZ2luZSwgc28gYDpob3ZlcmAgcnVsZXNcbiAgICogZ2VudWluZWx5IGFwcGx5IFx1MjAxNCB1bmxpa2UgYGRpc3BhdGNoRXZlbnQobmV3IE1vdXNlRXZlbnQoJ21vdXNlb3ZlcicpKWAsXG4gICAqIHdoaWNoIGlzIHVudHJ1c3RlZCBhbmQgbmV2ZXIgc2V0cyBgOmhvdmVyYC4gSXQgdGFyZ2V0cyB0aGUgc2luZ2xlIHNoYXJlZFxuICAgKiB3aW5kb3cncyAqKmdsb2JhbCoqIHBvaW50ZXIsIHNvIG9ubHkgb25lIGVsZW1lbnQgaXMgaG92ZXJlZCBhdCBhIHRpbWUuXG4gICAqXG4gICAqIFRoaXMgaXMgdGhlIGxvdy1sZXZlbCBwcmltaXRpdmU6IGl0IHBlcmZvcm1zIGEgc2luZ2xlIG1vdmUgYW5kIGRvZXMgKipub3QqKlxuICAgKiB3YWl0IGZvciBhbnkgc3RhdGUgdG8gc2V0dGxlIChjYWxsZXJzIHBvbGwgdGhlaXIgb3duIHJlYWRpbmVzcyBzaWduYWwpLlxuICAgKiBQcmVmZXIge0BsaW5rIExpYi5ob3ZlckVsZW1lbnR9IC8ge0BsaW5rIExpYi51bmhvdmVyRWxlbWVudH0gZm9yXG4gICAqIGVsZW1lbnQtcmVsYXRpdmUgbW92ZXM7IHVzZSBgbW92ZU1vdXNlYCBkaXJlY3RseSB3aGVuIGFuIGVsZW1lbnQtcmVsYXRpdmVcbiAgICogdGFyZ2V0IGRvZXMgbm90IGZpdCAoZS5nLiBhbiBlbGVtZW50IHNwYW5uaW5nIHRoZSBmdWxsIHZpZXdwb3J0IHdpZHRoKS5cbiAgICpcbiAgICogU3luY2hyb25vdXM6IGluamVjdGluZyB0aGUgdHJ1c3RlZCBtb3ZlIGRvZXMgbm8gcmVhbCBhd2FpdGluZywgc28gdGhlIGNhbGxlclxuICAgKiBkb2VzIG5vdCBuZWVkIHRvIGBhd2FpdGAgaXQuXG4gICAqXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgd2ViLWNvbnRlbnRzIERJUCBjb29yZGluYXRlcyB0byBtb3ZlIHRvLlxuICAgKi9cbiAgbW92ZU1vdXNlKHRoaXM6IHZvaWQsIHBhcmFtczogTW92ZU1vdXNlUGFyYW1zKTogdm9pZDtcblxuICAvKipcbiAgICogUHJlc3NlcyBhIHNpbmdsZSBrZXkgKG9wdGlvbmFsbHkgd2l0aCBtb2RpZmllcnMpIHVzaW5nICoqdHJ1c3RlZCoqIEVsZWN0cm9uXG4gICAqIGtleWJvYXJkIGlucHV0LCBmaXJpbmcgdGhlIGZ1bGwgcmVhbCBrZXkgcGlwZWxpbmUgXHUyMDE0XG4gICAqIGBrZXlkb3duYCBcdTIxOTIgYGtleXByZXNzYCBcdTIxOTIgYGJlZm9yZWlucHV0YCBcdTIxOTIgYGlucHV0YCBcdTIxOTIgYGtleXVwYC5cbiAgICpcbiAgICogVGhpcyBpcyB0aGUga2V5LXByZXNzIGFuYWxvZyBvZiB7QGxpbmsgTGliLnR5cGVJbnRvRWRpdG9yfTogaXQgaW5qZWN0cyBhXG4gICAqIHRydXN0ZWQgYGtleURvd25gIFx1MjE5MiBgY2hhcmAgXHUyMTkyIGBrZXlVcGAgc2VxdWVuY2UgdmlhIEVsZWN0cm9uJ3NcbiAgICogYHdlYkNvbnRlbnRzLnNlbmRJbnB1dEV2ZW50YCwgc28gaXQgaXMgZGVsaXZlcmVkIHRvIHRoZSB3aW5kb3cncyBET00tZm9jdXNlZFxuICAgKiBlbGVtZW50IGFuZCBmbG93cyB0aHJvdWdoIHRoZSByZWFsIGlucHV0IHBpcGVsaW5lIFx1MjAxNCB1bmxpa2VcbiAgICogYGRpc3BhdGNoRXZlbnQobmV3IEtleWJvYXJkRXZlbnQoLi4uKSlgLCB3aGljaCBpcyB1bnRydXN0ZWQgKGBpc1RydXN0ZWQ6XG4gICAqIGZhbHNlYCkgYW5kIGlnbm9yZWQgYnkgQ29kZU1pcnJvciBhbmQgbW9zdCBrZXkgaGFuZGxlcnMuIFVzZSBpdCBmb3Igc3BlY2lhbFxuICAgKiBrZXlzIChgJ0VudGVyJ2AsIGAnRXNjYXBlJ2AsIGAnVGFiJ2AsIGFycm93IGtleXMpIGFuZCBtb2RpZmllciBjb21iaW5hdGlvbnNcbiAgICogKGBTaGlmdCtFbnRlcmAsIGBDdHJsK0FgKSB0aGF0IHtAbGluayBMaWIudHlwZUludG9FZGl0b3J9ICh3aGljaCB0eXBlc1xuICAgKiBwcmludGFibGUgdGV4dCkgZG9lcyBub3QgY292ZXIuXG4gICAqXG4gICAqIFRoaXMgaXMgdGhlIGxvdy1sZXZlbCBwcmltaXRpdmU6IGl0IGluamVjdHMgdGhlIGtleSBwcmVzcyBhbmQgZG9lcyAqKm5vdCoqXG4gICAqIHBvbGwgZm9yIGFueSBlZmZlY3QgKGEga2V5IHByZXNzIGhhcyBubyB1bml2ZXJzYWwgb2JzZXJ2YWJsZSBvdXRjb21lIFx1MjAxNFxuICAgKiBgRW50ZXJgIGVkaXRzIHRoZSBkb2N1bWVudCwgYEVzY2FwZWAgY2xvc2VzIGEgbW9kYWwsIGBBcnJvd0Rvd25gIG1vdmVzIHRoZVxuICAgKiBzZWxlY3Rpb24pLiBUaGUgY2FsbGVyIGZvY3VzZXMgdGhlIGludGVuZGVkIHRhcmdldCBmaXJzdCwgdGhlbiBhd2FpdHMgdGhlXG4gICAqIGV4cGVjdGVkIGVmZmVjdCB2aWEge0BsaW5rIExpYi53YWl0VW50aWx9LiBJdCB0YXJnZXRzIHRoZSBzaW5nbGUgc2hhcmVkXG4gICAqIHdpbmRvdydzICoqZ2xvYmFsKiogZm9jdXMsIHNvIG9ubHkgdGhlIERPTS1mb2N1c2VkIGVsZW1lbnQgcmVjZWl2ZXMgdGhlIGtleS5cbiAgICpcbiAgICogU3luY2hyb25vdXM6IGluamVjdGluZyB0aGUgdHJ1c3RlZCBrZXkgcHJlc3MgZG9lcyBubyByZWFsIGF3YWl0aW5nLCBzbyB0aGVcbiAgICogY2FsbGVyIGRvZXMgbm90IG5lZWQgdG8gYGF3YWl0YCBpdC5cbiAgICpcbiAgICogQHBhcmFtIHBhcmFtcyAtIFRoZSBrZXkgdG8gcHJlc3MgYW5kIGFueSBtb2RpZmllcnMgdG8gaG9sZC5cbiAgICovXG4gIHByZXNzS2V5KHRoaXM6IHZvaWQsIHBhcmFtczogUHJlc3NLZXlQYXJhbXMpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBUeXBlcyB0ZXh0IGludG8gYSBDb2RlTWlycm9yIHtAbGluayBFZGl0b3J9IHVzaW5nICoqdHJ1c3RlZCoqIEVsZWN0cm9uXG4gICAqIGtleWJvYXJkIGlucHV0LlxuICAgKlxuICAgKiBUeXBpbmcgaXMgcHJlc3NpbmcgZWFjaCBjaGFyYWN0ZXIga2V5IGluIHR1cm46IHRoaXMgZm9jdXNlcyB0aGUgZWRpdG9yXG4gICAqIChjYXJldCB0byBlbmQpIGFuZCBwcmVzc2VzIGV2ZXJ5IGNvZGUgcG9pbnQgb2YgYHRleHRgIHZpYVxuICAgKiB7QGxpbmsgTGliLnByZXNzS2V5fSBcdTIwMTQgdGhlIHNhbWUgdHJ1c3RlZCBga2V5RG93bmAgXHUyMTkyIGBjaGFyYCBcdTIxOTIgYGtleVVwYCBhIHJlYWxcbiAgICogdXNlciBwcm9kdWNlcy4gRWFjaCBrZXlzdHJva2UgaXMgZGVsaXZlcmVkIHRvIHRoZSB3aW5kb3cncyBET00tZm9jdXNlZFxuICAgKiBlbGVtZW50IGFuZCBmbG93cyB0aHJvdWdoIENvZGVNaXJyb3IncyByZWFsIGlucHV0IHBpcGVsaW5lLCBzbyB0aGUgdHlwZWRcbiAgICogdGV4dCByZWFjaGVzIHRoZSBkb2N1bWVudCAqKm9ubHkgaWYgdGhlIGVkaXRvciBnZW51aW5lbHkgaG9sZHMgZm9jdXMqKi5cbiAgICogVGhpcyBtYWtlcyBcInRoZSB1c2VyIHR5cGVkIGludG8gdGhlIGVkaXRvclwiIGEgZmFpdGhmdWwgZW5kLXRvLWVuZCBjaGVjayxcbiAgICogdW5saWtlIGBkaXNwYXRjaEV2ZW50KG5ldyBLZXlib2FyZEV2ZW50KC4uLikpYCAodW50cnVzdGVkIFx1MjAxNCBpZ25vcmVkIGJ5XG4gICAqIENvZGVNaXJyb3IpIG9yIGBleGVjQ29tbWFuZCgnaW5zZXJ0VGV4dCcpYCAobXV0YXRlcyB0aGUgc2VsZWN0aW9uIGV2ZW5cbiAgICogd2hlbiB0aGUgZWRpdG9yIGlzIG5vdCBmb2N1c2VkLCBtYXNraW5nIGZvY3VzIGJ1Z3MgYXMgZmFsc2UgcG9zaXRpdmVzKS5cbiAgICpcbiAgICogQWZ0ZXIgaW5qZWN0aW5nIHRoZSBrZXlzdHJva2VzIGl0IHBvbGxzIHVudGlsIHRoZSBkb2N1bWVudCByZWZsZWN0cyB0aGVcbiAgICogaW5wdXQsIG9yIGEgYm91bmRlZCB0aW1lb3V0IGVsYXBzZXMgKHRoZSBleHBlY3RlZCBvdXRjb21lIHdoZW4gdGhlIGVkaXRvclxuICAgKiBpcyByZWFkLW9ubHkgYW5kIHJlamVjdHMgdGhlIGlucHV0LCBvciB3aGVuIGZvY3VzIHdhcyBzdG9sZW4pLlxuICAgKlxuICAgKiBAcGFyYW0gcGFyYW1zIC0gVGhlIGVkaXRvciB0byB0eXBlIGludG8gYW5kIHRoZSB0ZXh0IHRvIHR5cGUuXG4gICAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgb25jZSB0aGUga2V5c3Ryb2tlcyBoYXZlIHNldHRsZWQuXG4gICAqL1xuICB0eXBlSW50b0VkaXRvcih0aGlzOiB2b2lkLCBwYXJhbXM6IFR5cGVJbnRvRWRpdG9yUGFyYW1zKTogUHJvbWlzZTx2b2lkPjtcblxuICAvKipcbiAgICogTW92ZXMgdGhlIG1vdXNlIHBvaW50ZXIgdG8gYSBwb2ludCBqdXN0IG91dHNpZGUgYW4gZWxlbWVudCdzIGJvdW5kaW5nIGJveFxuICAgKiB1c2luZyBhICoqdHJ1c3RlZCoqIEVsZWN0cm9uIHBvaW50ZXIgbW92ZSwgdGhlbiBwb2xscyB1bnRpbCB0aGUgZWxlbWVudCBub1xuICAgKiBsb25nZXIgbWF0Y2hlcyBgOmhvdmVyYC5cbiAgICpcbiAgICogVGhlIGludmVyc2Ugb2Yge0BsaW5rIExpYi5ob3ZlckVsZW1lbnR9LiBJdCB0YXJnZXRzIHRoZSBzaW5nbGUgc2hhcmVkXG4gICAqIHdpbmRvdydzICoqZ2xvYmFsKiogcG9pbnRlciwgc28gb25seSBvbmUgZWxlbWVudCBpcyBob3ZlcmVkIGF0IGEgdGltZS4gV2hlblxuICAgKiBhbiBlbGVtZW50IHNwYW5zIHRoZSBmdWxsIHZpZXdwb3J0IChubyBwb2ludCBvdXRzaWRlIGl0cyBib3ggaXMgcmVhY2hhYmxlKSxcbiAgICogdXNlIHtAbGluayBMaWIubW92ZU1vdXNlfSBkaXJlY3RseSB0byBtb3ZlIHRoZSBwb2ludGVyIHRvIGEga25vd24gZW1wdHlcbiAgICogY29vcmRpbmF0ZSBpbnN0ZWFkLlxuICAgKlxuICAgKiBAcGFyYW0gcGFyYW1zIC0gVGhlIGVsZW1lbnQgdG8gbW92ZSB0aGUgcG9pbnRlciBhd2F5IGZyb20uXG4gICAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgb25jZSB0aGUgZWxlbWVudCBubyBsb25nZXIgbWF0Y2hlc1xuICAgKiAgIGA6aG92ZXJgLlxuICAgKi9cbiAgdW5ob3ZlckVsZW1lbnQodGhpczogdm9pZCwgcGFyYW1zOiBVbmhvdmVyRWxlbWVudFBhcmFtcyk6IFByb21pc2U8dm9pZD47XG5cbiAgLyoqXG4gICAqIFBvbGxzIGEgcHJlZGljYXRlIHVudGlsIGl0IGJlY29tZXMgdHJ1dGh5LCBvciByZWplY3RzIG9uY2UgYSBib3VuZGVkXG4gICAqIHRpbWVvdXQgZWxhcHNlcy5cbiAgICpcbiAgICogSW50ZWdyYXRpb24tdGVzdCBgZXZhbEluT2JzaWRpYW5gIGNhbGxiYWNrcyByb3V0aW5lbHkgbmVlZCB0byB3YWl0IGZvciBhblxuICAgKiBhc3luY2hyb25vdXMgZWZmZWN0IHRvIHNldHRsZSAoYSB2aWV3IHRvIG9wZW4sIGEgRE9NIG5vZGUgdG8gYXBwZWFyLCBhXG4gICAqIHNldHRpbmcgdG8gYXBwbHkpLiBCZWNhdXNlIHRoZSBjYWxsYmFjayBpcyBzZXJpYWxpemVkIHZpYSBgdG9TdHJpbmcoKWAgYW5kXG4gICAqIGNhbm5vdCBpbXBvcnQgbW9kdWxlcywgaXQgY2FuJ3QgcmV1c2UgYG9ic2lkaWFuLWRldi11dGlsc2AnXG4gICAqIGByZXRyeVdpdGhUaW1lb3V0YCAvIGBydW5XaXRoVGltZW91dGAuIFRoaXMgaGVscGVyIGlzIHRoZSBzaGFyZWQsIGluamVjdGVkXG4gICAqIHJlcGxhY2VtZW50IGZvciB0aGUgcGVyLWNsb3N1cmUgcG9sbCBsb29wcyBjb25zdW1lcnMgd291bGQgb3RoZXJ3aXNlXG4gICAqIGhhbmQtcm9sbC5cbiAgICpcbiAgICogVGhlIGBwcmVkaWNhdGVgIG1heSBiZSBzeW5jaHJvbm91cyBvciBhc3luY2hyb25vdXMgXHUyMDE0IGl0IGlzIGF3YWl0ZWQgb24gZXZlcnlcbiAgICogcG9sbC4gSXQgaXMgY2hlY2tlZCBpbW1lZGlhdGVseSwgdGhlbiByZS1jaGVja2VkIGV2ZXJ5XG4gICAqIGBpbnRlcnZhbEluTWlsbGlzZWNvbmRzYCB1bnRpbCBpdCByZXR1cm5zIHRydXRoeSBvciBgdGltZW91dEluTWlsbGlzZWNvbmRzYFxuICAgKiBlbGFwc2VzLCBhdCB3aGljaCBwb2ludCB0aGUgcmV0dXJuZWQge0BsaW5rIFByb21pc2V9IHJlamVjdHMgKHRoZSBlcnJvclxuICAgKiBpbmNsdWRlcyBgbWVzc2FnZWAgd2hlbiBwcm92aWRlZCkuXG4gICAqXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcHJlZGljYXRlIHRvIHBvbGwgcGx1cyBvcHRpb25hbCB0aW1lb3V0LCBpbnRlcnZhbCwgYW5kXG4gICAqICAgdGltZW91dCBtZXNzYWdlLlxuICAgKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIG9uY2UgdGhlIHByZWRpY2F0ZSBpcyB0cnV0aHkuXG4gICAqL1xuICB3YWl0VW50aWwodGhpczogdm9pZCwgcGFyYW1zOiBXYWl0VW50aWxQYXJhbXMpOiBQcm9taXNlPHZvaWQ+O1xufVxuXG4vKipcbiAqIFRoZSBtb3VzZSBidXR0b24gYSB0cnVzdGVkIGNsaWNrIHByZXNzZXMsIGluIEVsZWN0cm9uJ3MgYHNlbmRJbnB1dEV2ZW50YFxuICogc3BlbGxpbmcuXG4gKi9cbmV4cG9ydCB0eXBlIE1vdXNlQnV0dG9uID0gJ2xlZnQnIHwgJ21pZGRsZScgfCAncmlnaHQnO1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBDb21tb25Bcmd1bWVudHMubW92ZU1vdXNlfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNb3ZlTW91c2VQYXJhbXMge1xuICAvKipcbiAgICogVGhlIHggY29vcmRpbmF0ZSAod2ViLWNvbnRlbnRzIERJUCkgdG8gbW92ZSB0aGUgcG9pbnRlciB0by5cbiAgICovXG4gIHJlYWRvbmx5IHg6IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIHkgY29vcmRpbmF0ZSAod2ViLWNvbnRlbnRzIERJUCkgdG8gbW92ZSB0aGUgcG9pbnRlciB0by5cbiAgICovXG4gIHJlYWRvbmx5IHk6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgQ29tbW9uQXJndW1lbnRzLnByZXNzS2V5fS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQcmVzc0tleVBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUga2V5IHRvIHByZXNzLCBnaXZlbiBhcyBhbiBFbGVjdHJvbiBBY2NlbGVyYXRvciBrZXkgbmFtZSBcdTIwMTQgZS5nLlxuICAgKiBgJ0VudGVyJ2AsIGAnRXNjYXBlJ2AsIGAnVGFiJ2AsIGAnQmFja3NwYWNlJ2AsIGAnRGVsZXRlJ2AsIGFuIGFycm93IGtleVxuICAgKiAoYCdVcCdgIC8gYCdEb3duJ2AgLyBgJ0xlZnQnYCAvIGAnUmlnaHQnYCksIG9yIGEgcHJpbnRhYmxlIGNoYXJhY3RlclxuICAgKiAoYCdhJ2AsIGAnMSdgKS4gVGhlIHByb2R1Y2VkIGNoYXJhY3RlciAod2hlbiB0aGUga2V5IGluc2VydHMgdGV4dCkgaXMgdGhlXG4gICAqIGxpdGVyYWwgYGtleWAgdmFsdWU7IGNhc2UtY29ycmVjdCB0ZXh0IGJlbG9uZ3MgdG9cbiAgICoge0BsaW5rIENvbW1vbkFyZ3VtZW50cy50eXBlSW50b0VkaXRvcn0sIG5vdCBhIGtleS1wcmVzcyBwcmltaXRpdmUuXG4gICAqL1xuICByZWFkb25seSBrZXk6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG1vZGlmaWVyIGtleXMgdG8gaG9sZCB3aGlsZSB0aGUga2V5IGlzIHByZXNzZWQsIHVzaW5nIE9ic2lkaWFuJ3NcbiAgICoge0BsaW5rIE1vZGlmaWVyfSBuYW1lcyAodGhlIHNhbWUgdmFsdWVzIGFzIGFuIE9ic2lkaWFuIGBIb3RrZXlgKS4gYCdNb2QnYFxuICAgKiByZXNvbHZlcyBwZXItcGxhdGZvcm0gKENtZCBvbiBtYWNPUywgQ3RybCBlbHNld2hlcmUpOyBlYWNoIGlzIG1hcHBlZCB0b1xuICAgKiBFbGVjdHJvbidzIGxvd2VyY2FzZSBgc2VuZElucHV0RXZlbnRgIG1vZGlmaWVyIG5hbWUuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBbXWBcbiAgICovXG4gIHJlYWRvbmx5IG1vZGlmaWVycz86IHJlYWRvbmx5IE1vZGlmaWVyW107XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIENvbW1vbkFyZ3VtZW50cy50eXBlSW50b0VkaXRvcn0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVHlwZUludG9FZGl0b3JQYXJhbXMge1xuICAvKipcbiAgICogVGhlIGVkaXRvciB0byB0eXBlIGludG8uIEl0IGlzIGZvY3VzZWQgKHdpdGggdGhlIGNhcmV0IG1vdmVkIHRvIHRoZSBlbmQgb2ZcbiAgICogdGhlIGRvY3VtZW50KSBiZWZvcmUgdGhlIGtleXN0cm9rZXMgYXJlIGluamVjdGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgZWRpdG9yOiBFZGl0b3I7XG5cbiAgLyoqXG4gICAqIFRoZSB0ZXh0IHRvIHR5cGUuIEVhY2ggY29kZSBwb2ludCBpcyBwcmVzc2VkIHZpYSB7QGxpbmsgQ29tbW9uQXJndW1lbnRzLnByZXNzS2V5fVxuICAgKiAoYSB0cnVzdGVkIGBrZXlEb3duYCBcdTIxOTIgYGNoYXJgIFx1MjE5MiBga2V5VXBgKSwgZXhhY3RseSBhcyBhIHJlYWwgdXNlciB0eXBpbmcuXG4gICAqL1xuICByZWFkb25seSB0ZXh0OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIENvbW1vbkFyZ3VtZW50cy51bmhvdmVyRWxlbWVudH0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVW5ob3ZlckVsZW1lbnRQYXJhbXMge1xuICAvKipcbiAgICogVGhlIGVsZW1lbnQgdG8gbW92ZSB0aGUgcG9pbnRlciBhd2F5IGZyb20uIFRoZSBwb2ludGVyIGlzIG1vdmVkIHRvIGEgcG9pbnRcbiAgICoganVzdCBvdXRzaWRlIGl0cyBib3VuZGluZyBib3guIFRoaXMgaXMgYSBsaXZlIHJlbmRlcmVyIERPTSBub2RlIFx1MjAxNCB0aGVcbiAgICogY2FsbGJhY2sgcnVucyBpbi1yZW5kZXJlciwgc28gbm8gY3Jvc3MtcHJvY2VzcyBzZXJpYWxpemF0aW9uIGlzIG5lZWRlZFxuICAgKiAoc2FtZSBhcyB7QGxpbmsgVHlwZUludG9FZGl0b3JQYXJhbXMuZWRpdG9yfSkuXG4gICAqL1xuICByZWFkb25seSBlbGVtZW50OiBIVE1MRWxlbWVudDtcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgQ29tbW9uQXJndW1lbnRzLndhaXRVbnRpbH0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV2FpdFVudGlsUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBwb2xsaW5nIGludGVydmFsIGJldHdlZW4gcHJlZGljYXRlIGNoZWNrcy5cbiAgICpcbiAgICogQGRlZmF1bHQgYDUwYFxuICAgKi9cbiAgcmVhZG9ubHkgaW50ZXJ2YWxJbk1pbGxpc2Vjb25kcz86IG51bWJlcjtcblxuICAvKipcbiAgICogQW4gb3B0aW9uYWwgZGV0YWlsIGFwcGVuZGVkIHRvIHRoZSB0aW1lb3V0IGVycm9yIG1lc3NhZ2UsIGRlc2NyaWJpbmcgd2hhdFxuICAgKiB3YXMgYmVpbmcgd2FpdGVkIGZvci5cbiAgICovXG4gIHJlYWRvbmx5IG1lc3NhZ2U/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBjb25kaXRpb24gdG8gd2FpdCBmb3IuIFBvbGxlZCBpbW1lZGlhdGVseSwgdGhlbiBvbiBldmVyeSBpbnRlcnZhbCB1bnRpbFxuICAgKiBpdCByZXR1cm5zIGEgdHJ1dGh5IHZhbHVlLiBNYXkgYmUgc3luY2hyb25vdXMgb3IgYXN5bmNocm9ub3VzIFx1MjAxNCBpdCBpc1xuICAgKiBhd2FpdGVkIG9uIGVhY2ggcG9sbC5cbiAgICpcbiAgICogQHJldHVybnMgV2hldGhlciB0aGUgYXdhaXRlZCBjb25kaXRpb24gaGFzIGJlZW4gbWV0LlxuICAgKi9cbiAgcHJlZGljYXRlKHRoaXM6IHZvaWQpOiBib29sZWFuIHwgUHJvbWlzZTxib29sZWFuPjtcblxuICAvKipcbiAgICogVGhlIG1heGltdW0gdGltZSB0byB3YWl0IGJlZm9yZSByZWplY3RpbmcuXG4gICAqXG4gICAqIEBkZWZhdWx0IGA1MDAwYFxuICAgKi9cbiAgcmVhZG9ubHkgdGltZW91dEluTWlsbGlzZWNvbmRzPzogbnVtYmVyO1xufVxuXG4vKipcbiAqIEV2YWx1YXRlcyBhIGZ1bmN0aW9uIGluc2lkZSB0aGUgcnVubmluZyBPYnNpZGlhbiBpbnN0YW5jZVxuICogdmlhIHRoZSBhY3RpdmUgdHJhbnNwb3J0IGFuZCByZXR1cm5zIHRoZSBwYXJzZWQgcmVzdWx0LlxuICpcbiAqIFRoZSBmdW5jdGlvbiByZWNlaXZlcyBhbiBpbnB1dCBvYmplY3QgdGhhdCBpbmNsdWRlcyBgYXBwYCwgYG9ic2lkaWFuTW9kdWxlYCxcbiAqIGBjb250ZXh0YCwgYW5kIGFueSBhZGRpdGlvbmFsIGBpbnB1dGAgcGFzc2VkIGJ5IHRoZSBjYWxsZXIuXG4gKiBJdCBpcyBzZXJpYWxpemVkIHZpYSBgdG9TdHJpbmcoKWAgYW5kIGludm9rZWQgYXMgYW4gSUlGRS5cbiAqIFRoZSBmdW5jdGlvbiBtdXN0IGJlIHNlbGYtY29udGFpbmVkIFx1MjAxNCBjbG9zdXJlcyBvdmVyIGxvY2FsIHZhcmlhYmxlcyB3aWxsIG5vdCB3b3JrLlxuICogUGFzcyBhbnkgbmVlZGVkIHZhbHVlcyBhcyBgaW5wdXRgIFx1MjAxNCB0aGV5IGFyZSBKU09OLXNlcmlhbGl6ZWQgYW5kIGRlc2VyaWFsaXplZCBvbiB0aGUgT2JzaWRpYW4gc2lkZS5cbiAqXG4gKiBUaGUgcmVzdWx0IGlzIGBKU09OLnN0cmluZ2lmeWAnZCBvbiB0aGUgT2JzaWRpYW4gc2lkZSBhbmQgcGFyc2VkIGJhY2suXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZnVuY3Rpb24gdG8gZXZhbHVhdGUuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIHRoZSByZXR1cm4gdmFsdWUgb2YgYGNhbGxiYWNrYC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGV2YWxJbk9ic2lkaWFuPElucHV0IGV4dGVuZHMgR2VuZXJpY09iamVjdCwgUmVzdWx0LCBUQ29udGV4dElkIGV4dGVuZHMgQ29udGV4dElkPHVua25vd24+IHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkPihcbiAgcGFyYW1zOiBFdmFsSW5PYnNpZGlhblBhcmFtczxJbnB1dCwgUmVzdWx0LCBUQ29udGV4dElkPlxuKTogUHJvbWlzZTxSZXN1bHQ+IHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC91bmJvdW5kLW1ldGhvZCAtLSBgY2FsbGJhY2tgIGNhbiBiZSB1bmJvdW5kLlxuICBjb25zdCB7IGNhbGxiYWNrLCBjb250ZXh0SWQsIGlucHV0ID0ge30sIHNob3VsZFNraXBQcmVmbGlnaHRDaGVja3MgPSBmYWxzZSwgdHJhbnNwb3J0OiB0cmFuc3BvcnRPdmVycmlkZSwgdmF1bHRQYXRoIH0gPSBwYXJhbXM7XG4gIGNvbnN0IGN3ZCA9IHZhdWx0UGF0aCA/PyBnZXRWYXVsdFBhdGgoKSA/PyBwcm9jZXNzLmN3ZCgpO1xuXG4gIC8vIENoZWNrOiBWYXVsdCBwYXRoIGV4aXN0cyBvbiBkaXNrLlxuICBpZiAodmF1bHRQYXRoICE9PSB1bmRlZmluZWQgJiYgIWV4aXN0c1N5bmModmF1bHRQYXRoKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgVmF1bHQgcGF0aCBkb2VzIG5vdCBleGlzdDogJHt2YXVsdFBhdGh9YCk7XG4gIH1cblxuICBjb25zdCB0cmFuc3BvcnQgPSB0cmFuc3BvcnRPdmVycmlkZSA/PyBhd2FpdCBnZXRPckNyZWF0ZVRyYW5zcG9ydChnZXRUcmFuc3BvcnRPcHRpb25zKCkpO1xuXG4gIGlmICghc2hvdWxkU2tpcFByZWZsaWdodENoZWNrcykge1xuICAgIGF3YWl0IHRyYW5zcG9ydC5wcmVmbGlnaHRDaGVjayhjd2QpO1xuICB9XG5cbiAgYXdhaXQgZW5zdXJlTmFtZXNwYWNlQm9vdHN0cmFwcGVkKHRyYW5zcG9ydCwgY3dkKTtcblxuICBjb25zdCBuYW1lc3BhY2VDYWxsUGFyYW1zOiBHZW5lcmF0ZU5hbWVzcGFjZUNhbGxQYXJhbXMgPSB7XG4gICAgY2FsbGJhY2ssXG4gICAgaW5wdXQsXG4gICAgLi4uKGNvbnRleHRJZCAhPT0gdW5kZWZpbmVkICYmIHsgY29udGV4dElkOiBTdHJpbmcoY29udGV4dElkKSB9KVxuICB9O1xuXG4gIGNvbnN0IGV4cHJlc3Npb24gPSBnZW5lcmF0ZU5hbWVzcGFjZUNhbGwobmFtZXNwYWNlQ2FsbFBhcmFtcyk7XG5cbiAgY29uc3QgcmVzdWx0U3RyaW5nID0gYXdhaXQgdHJhbnNwb3J0LmV2YWx1YXRlKGV4cHJlc3Npb24sIHsgY3dkIH0pO1xuXG4gIGlmIChyZXN1bHRTdHJpbmcgPT09ICcnIHx8IHJlc3VsdFN0cmluZyA9PT0gTk9fT1VUUFVUKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZCBhcyBSZXN1bHQ7XG4gIH1cblxuICBsZXQgZW52ZWxvcGU6IEV2YWxSZXN1bHRFbnZlbG9wZTtcbiAgdHJ5IHtcbiAgICBlbnZlbG9wZSA9IEpTT04ucGFyc2UocmVzdWx0U3RyaW5nKSBhcyBFdmFsUmVzdWx0RW52ZWxvcGU7XG4gIH0gY2F0Y2gge1xuICAgIHRocm93IG5ldyBFcnJvcihgZXZhbEluT2JzaWRpYW46IE9ic2lkaWFuIHJldHVybmVkIG5vbi1KU09OIG91dHB1dDogJHtyZXN1bHRTdHJpbmd9YCk7XG4gIH1cblxuICBpZiAoJ3R5cGUnIGluIGVudmVsb3BlKSB7XG4gICAgaWYgKGVudmVsb3BlLnR5cGUgPT09ICdlcnJvcicpIHtcbiAgICAgIC8vIFJld3JpdGUgYmFyZS1vcmlnaW4gbG9jYWxob3N0IHN0YWNrIGZyYW1lcyBsaWtlIFwiKGh0dHA6Ly9sb2NhbGhvc3QvOjkxNTozMilcIlxuICAgICAgLy8gU28gVml0ZXN0J3Mgc291cmNlLW1hcCByZXNvbHZlciB3b24ndCBleHRyYWN0IFwiL1wiIGFzIHRoZSBmaWxlIHBhdGggYW5kIGNyYXNoXG4gICAgICAvLyBXaXRoIEVJU0RJUiB3aGVuIGl0IHRyaWVzIHRvIHJlYWRGaWxlU3luYyBvbiB0aGUgcm9vdCBkaXJlY3RvcnkuXG4gICAgICBjb25zdCBzYW5pdGl6ZWREZXRhaWwgPSBlbnZlbG9wZS52YWx1ZVxuICAgICAgICAucmVwbGFjZUFsbCgvXFwoaHR0cHM/OlxcL1xcL2xvY2FsaG9zdFxcLzooPzxsaW5lPlxcZCkvZywgJyhvYnNpZGlhbi13ZWJ2aWV3OiQ8bGluZT4nKTtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgZXZhbEluT2JzaWRpYW46IEVycm9yIGluc2lkZSBPYnNpZGlhbjpcXG4ke3Nhbml0aXplZERldGFpbH1gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdW5kZWZpbmVkIGFzIFJlc3VsdDtcbiAgfVxuXG4gIHJldHVybiBlbnZlbG9wZS52YWx1ZSBhcyBSZXN1bHQ7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQWdCQSxxQkFBMkI7QUFDM0IsMEJBQW9CO0FBU3BCLDhCQUdPO0FBQ1Asb0NBQXNDO0FBQ3RDLGlDQUE0QztBQUM1QywrQkFBcUM7QUEyQnJDLE1BQU0sWUFBWTtBQTJnQmxCLGVBQXNCLGVBQ3BCLFFBQ2lCO0FBRWpCLFFBQU0sRUFBRSxVQUFVLFdBQVcsUUFBUSxDQUFDLEdBQUcsNEJBQTRCLE9BQU8sV0FBVyxtQkFBbUIsVUFBVSxJQUFJO0FBQ3hILFFBQU0sTUFBTSxpQkFBYSxzQ0FBYSxLQUFLLG9CQUFBQSxRQUFRLElBQUk7QUFHdkQsTUFBSSxjQUFjLFVBQWEsS0FBQywyQkFBVyxTQUFTLEdBQUc7QUFDckQsVUFBTSxJQUFJLE1BQU0sOEJBQThCLFNBQVMsRUFBRTtBQUFBLEVBQzNEO0FBRUEsUUFBTSxZQUFZLHFCQUFxQixVQUFNLG1EQUFxQiw2Q0FBb0IsQ0FBQztBQUV2RixNQUFJLENBQUMsMkJBQTJCO0FBQzlCLFVBQU0sVUFBVSxlQUFlLEdBQUc7QUFBQSxFQUNwQztBQUVBLFlBQU0sd0RBQTRCLFdBQVcsR0FBRztBQUVoRCxRQUFNLHNCQUFtRDtBQUFBLElBQ3ZEO0FBQUEsSUFDQTtBQUFBLElBQ0EsR0FBSSxjQUFjLFVBQWEsRUFBRSxXQUFXLE9BQU8sU0FBUyxFQUFFO0FBQUEsRUFDaEU7QUFFQSxRQUFNLGlCQUFhLHFEQUFzQixtQkFBbUI7QUFFNUQsUUFBTSxlQUFlLE1BQU0sVUFBVSxTQUFTLFlBQVksRUFBRSxJQUFJLENBQUM7QUFFakUsTUFBSSxpQkFBaUIsTUFBTSxpQkFBaUIsV0FBVztBQUNyRCxXQUFPO0FBQUEsRUFDVDtBQUVBLE1BQUk7QUFDSixNQUFJO0FBQ0YsZUFBVyxLQUFLLE1BQU0sWUFBWTtBQUFBLEVBQ3BDLFFBQVE7QUFDTixVQUFNLElBQUksTUFBTSxzREFBc0QsWUFBWSxFQUFFO0FBQUEsRUFDdEY7QUFFQSxNQUFJLFVBQVUsVUFBVTtBQUN0QixRQUFJLFNBQVMsU0FBUyxTQUFTO0FBSTdCLFlBQU0sa0JBQWtCLFNBQVMsTUFDOUIsV0FBVyx5Q0FBeUMsMkJBQTJCO0FBQ2xGLFlBQU0sSUFBSSxNQUFNO0FBQUEsRUFBMkMsZUFBZSxFQUFFO0FBQUEsSUFDOUU7QUFFQSxXQUFPO0FBQUEsRUFDVDtBQUVBLFNBQU8sU0FBUztBQUNsQjsiLAogICJuYW1lcyI6IFsicHJvY2VzcyJdCn0K
|
|
82
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2V2YWwtaW4tb2JzaWRpYW4udHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBFdmFsdWF0ZXMgYSBmdW5jdGlvbiBpbnNpZGUgYSBydW5uaW5nIE9ic2lkaWFuIGluc3RhbmNlIHZpYSBhIHBsdWdnYWJsZSB0cmFuc3BvcnQuXG4gKi9cblxuaW1wb3J0IHR5cGUge1xuICBBcHAsXG4gIEVkaXRvcixcbiAgTW9kaWZpZXIsXG4gIFRGaWxlXG59IGZyb20gJ29ic2lkaWFuJztcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQteC9uby1uYW1lc3BhY2UgLS0gV2UgbmVlZCB0byByZWZlcmVuY2UgYG9ic2lkaWFuYCBtb2R1bGUuXG5pbXBvcnQgdHlwZSAqIGFzIG9ic2lkaWFuIGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgUHJvbWlzYWJsZSB9IGZyb20gJ3R5cGUtZmVzdCc7XG5cbmltcG9ydCB7IGV4aXN0c1N5bmMgfSBmcm9tICdub2RlOmZzJztcbmltcG9ydCBwcm9jZXNzIGZyb20gJ25vZGU6cHJvY2Vzcyc7XG5cbmltcG9ydCB0eXBlIHtcbiAgQ29udGV4dEFyZ3VtZW50cyxcbiAgQ29udGV4dElkXG59IGZyb20gJy4vY29udGV4dC1pZC5janMnO1xuaW1wb3J0IHR5cGUgeyBHZW5lcmF0ZU5hbWVzcGFjZUNhbGxQYXJhbXMgfSBmcm9tICcuL2dlbmVyYXRlLWZ1bmN0aW9uLWNhbGwuY2pzJztcbmltcG9ydCB0eXBlIHsgT2JzaWRpYW5UcmFuc3BvcnQgfSBmcm9tICcuL3RyYW5zcG9ydC5janMnO1xuXG5pbXBvcnQge1xuICBnZXRUcmFuc3BvcnRPcHRpb25zLFxuICBnZXRWYXVsdFBhdGhcbn0gZnJvbSAnLi9jb250ZXh0LXByb3ZpZGVyLmNqcyc7XG5pbXBvcnQgeyBnZW5lcmF0ZU5hbWVzcGFjZUNhbGwgfSBmcm9tICcuL2dlbmVyYXRlLWZ1bmN0aW9uLWNhbGwuY2pzJztcbmltcG9ydCB7IGVuc3VyZU5hbWVzcGFjZUJvb3RzdHJhcHBlZCB9IGZyb20gJy4vbmFtZXNwYWNlLWJvb3RzdHJhcC5janMnO1xuaW1wb3J0IHsgZ2V0T3JDcmVhdGVUcmFuc3BvcnQgfSBmcm9tICcuL3RyYW5zcG9ydC1mYWN0b3J5LmNqcyc7XG5cbmludGVyZmFjZSBFdmFsRXJyb3JFbnZlbG9wZSB7XG4gIHR5cGU6ICdlcnJvcic7XG4gIHZhbHVlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogRGlzY3JpbWluYXRlZCBlbnZlbG9wZSByZXR1cm5lZCBieSB0aGUgcmVnaXN0ZXJlZCBgZXZhbFdyYXBwZXJgIGZyb20gaW5zaWRlIHRoZSBPYnNpZGlhbiBwcm9jZXNzLlxuICpcbiAqIC0gYEV2YWxFcnJvckVudmVsb3BlYCBcdTIwMTQgYGNhbGxiYWNrYCB0aHJldzsgYHZhbHVlYCBpcyB0aGUgc2VyaWFsaXplZCBlcnJvci5cbiAqIC0gYEV2YWxVbmRlZmluZWRFbnZlbG9wZWAgXHUyMDE0IGBjYWxsYmFja2AgcmV0dXJuZWQgYHVuZGVmaW5lZGAuXG4gKiAtIGBFdmFsVmFsdWVFbnZlbG9wZWAgXHUyMDE0IGBjYWxsYmFja2AgcmV0dXJuZWQgYSBKU09OLXNlcmlhbGl6YWJsZSB2YWx1ZS5cbiAqL1xudHlwZSBFdmFsUmVzdWx0RW52ZWxvcGUgPVxuICB8IEV2YWxFcnJvckVudmVsb3BlXG4gIHwgRXZhbFVuZGVmaW5lZEVudmVsb3BlXG4gIHwgRXZhbFZhbHVlRW52ZWxvcGU7XG5cbmludGVyZmFjZSBFdmFsVW5kZWZpbmVkRW52ZWxvcGUge1xuICB0eXBlOiAndW5kZWZpbmVkJztcbn1cblxuaW50ZXJmYWNlIEV2YWxWYWx1ZUVudmVsb3BlIHtcbiAgdmFsdWU6IHVua25vd247XG59XG5cbmNvbnN0IE5PX09VVFBVVCA9ICcobm8gb3V0cHV0KSc7XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIENvbW1vbkFyZ3VtZW50cy5jbGlja0VsZW1lbnR9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENsaWNrRWxlbWVudFBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgbW91c2UgYnV0dG9uIHRvIHByZXNzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgJ2xlZnQnYFxuICAgKi9cbiAgcmVhZG9ubHkgYnV0dG9uPzogTW91c2VCdXR0b247XG5cbiAgLyoqXG4gICAqIFRoZSBlbGVtZW50IHRvIGNsaWNrLiBUaGUgcG9pbnRlciBpcyBtb3ZlZCB0byBpdHMgY2VudGVyLiBUaGlzIGlzIGEgbGl2ZVxuICAgKiByZW5kZXJlciBET00gbm9kZSBcdTIwMTQgdGhlIGNhbGxiYWNrIHJ1bnMgaW4tcmVuZGVyZXIsIHNvIG5vIGNyb3NzLXByb2Nlc3NcbiAgICogc2VyaWFsaXphdGlvbiBpcyBuZWVkZWQgKHNhbWUgYXMge0BsaW5rIFR5cGVJbnRvRWRpdG9yUGFyYW1zLmVkaXRvcn0pLlxuICAgKi9cbiAgcmVhZG9ubHkgZWxlbWVudDogSFRNTEVsZW1lbnQ7XG5cbiAgLyoqXG4gICAqIFRoZSBtb2RpZmllciBrZXlzIHRvIGhvbGQsIHVzaW5nIE9ic2lkaWFuJ3Mge0BsaW5rIE1vZGlmaWVyfSBuYW1lcy4gYCdNb2QnYFxuICAgKiByZXNvbHZlcyBwZXItcGxhdGZvcm0gKENtZCBvbiBtYWNPUywgQ3RybCBlbHNld2hlcmUpLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgW11gXG4gICAqL1xuICByZWFkb25seSBtb2RpZmllcnM/OiByZWFkb25seSBNb2RpZmllcltdO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBDb21tb25Bcmd1bWVudHMuY2xpY2tNb3VzZX0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2xpY2tNb3VzZVBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgbW91c2UgYnV0dG9uIHRvIHByZXNzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgJ2xlZnQnYFxuICAgKi9cbiAgcmVhZG9ubHkgYnV0dG9uPzogTW91c2VCdXR0b247XG5cbiAgLyoqXG4gICAqIFRoZSBtb2RpZmllciBrZXlzIHRvIGhvbGQsIHVzaW5nIE9ic2lkaWFuJ3Mge0BsaW5rIE1vZGlmaWVyfSBuYW1lcy4gYCdNb2QnYFxuICAgKiByZXNvbHZlcyBwZXItcGxhdGZvcm0gKENtZCBvbiBtYWNPUywgQ3RybCBlbHNld2hlcmUpLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgW11gXG4gICAqL1xuICByZWFkb25seSBtb2RpZmllcnM/OiByZWFkb25seSBNb2RpZmllcltdO1xuXG4gIC8qKlxuICAgKiBUaGUgeCBjb29yZGluYXRlICh3ZWItY29udGVudHMgRElQKSB0byBjbGljayBhdC5cbiAgICovXG4gIHJlYWRvbmx5IHg6IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIHkgY29vcmRpbmF0ZSAod2ViLWNvbnRlbnRzIERJUCkgdG8gY2xpY2sgYXQuXG4gICAqL1xuICByZWFkb25seSB5OiBudW1iZXI7XG59XG5cbi8qKlxuICogQ29tbW9uIGFyZ3VtZW50cyBhdXRvbWF0aWNhbGx5IHByb3ZpZGVkIHRvIGV2ZXJ5IHtAbGluayBldmFsSW5PYnNpZGlhbn0gY2FsbGJhY2suXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29tbW9uQXJndW1lbnRzIHtcbiAgLyoqXG4gICAqIFRoZSBPYnNpZGlhbiB7QGxpbmsgQXBwfSBpbnN0YW5jZS5cbiAgICovXG4gIGFwcDogQXBwO1xuXG4gIC8qKlxuICAgKiBUaGUgc2hhcmVkIGxpYnJhcnkgYmFnIGluamVjdGVkIGludG8gZXZlcnkgY2FsbGJhY2sgXHUyMDE0IHNlZSB7QGxpbmsgTGlifS5cbiAgICpcbiAgICogTmV2ZXIgZW1wdHk6IHRoZSBoYXJuZXNzIHByZS1wb3B1bGF0ZXMgYSAqKmJhc2UqKiBzZXQgb2YgcmVuZGVyZXItZHJpdmluZ1xuICAgKiBoZWxwZXJzICh0cnVzdGVkIGlucHV0IFx1MjAxNCBgdHlwZUludG9FZGl0b3JgIC8gYHByZXNzS2V5YCAvIGBtb3ZlTW91c2VgIC9cbiAgICogYGNsaWNrTW91c2VgIC8gYGhvdmVyRWxlbWVudGAgLyBgdW5ob3ZlckVsZW1lbnRgIC8gYGNsaWNrRWxlbWVudGAgXHUyMDE0IHBsdXNcbiAgICogYHdhaXRVbnRpbGAsIGBjcmVhdGVOb3RlYCBhbmQgYG9wZW5TZXR0aW5nc1RhYmApLCBhbmQgcHJvdmlkZXIgcGFja2FnZXNcbiAgICogKGNoaWVmbHkgYG9ic2lkaWFuLWRldi11dGlsc2ApIGBPYmplY3QuYXNzaWduYCB0aGVpciB3aG9sZSByZW5kZXJlci1zYWZlXG4gICAqIGxpYnJhcnkgb24gdG9wIHZpYSB7QGxpbmsgcmVnaXN0ZXJMaWJSZXNvbHZlcn0uIEEgc2VyaWFsaXplZCBjbG9zdXJlIHJlYWNoZXNcbiAgICogZXZlcnkgc2hhcmVkIGhlbHBlciB0aHJvdWdoIGBsaWJgIFx1MjAxNCBgbGliLnR5cGVJbnRvRWRpdG9yKHsgZWRpdG9yLCB0ZXh0IH0pYCxcbiAgICogYGxpYi5nZXRGaWxlT3JOdWxsKHsgYXBwLCBcdTIwMjYgfSlgIFx1MjAxNCBpbnN0ZWFkIG9mIGltcG9ydGluZyBvciBoYW5kLXJvbGxpbmcgdGhlbS5cbiAgICovXG4gIGxpYjogTGliO1xuXG4gIC8qKlxuICAgKiBUaGUgYG9ic2lkaWFuYCBtb2R1bGUsIHJlc29sdmVkIGF0IHJ1bnRpbWUgaW5zaWRlIHRoZSBPYnNpZGlhbiBwcm9jZXNzLlxuICAgKi9cbiAgb2JzaWRpYW5Nb2R1bGU6IHR5cGVvZiBvYnNpZGlhbjtcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgQ29tbW9uQXJndW1lbnRzLmNyZWF0ZU5vdGV9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZU5vdGVQYXJhbXMge1xuICAvKipcbiAgICogVGhlIG5vdGUncyBjb250ZW50LiBUaGlzIGV4YWN0IHN0cmluZyBpcyB3aGF0IHRoZSBjcmVhdGVkIG5vdGUgaXMgcmVhZCBiYWNrXG4gICAqIGFnYWluc3QsIHNvIGl0IGlzIHRoZSBkZWZpbml0aW9uIG9mIGEgc3VjY2Vzc2Z1bCB3cml0ZS5cbiAgICovXG4gIHJlYWRvbmx5IGNvbnRlbnQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHZhdWx0LXJlbGF0aXZlIHBhdGggdG8gY3JlYXRlLCBleHRlbnNpb24gaW5jbHVkZWQuXG4gICAqL1xuICByZWFkb25seSBwYXRoOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIGV2YWxJbk9ic2lkaWFufS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFdmFsSW5PYnNpZGlhblBhcmFtczxJbnB1dCBleHRlbmRzIEdlbmVyaWNPYmplY3QsIFJlc3VsdCwgVENvbnRleHRJZCBleHRlbmRzIENvbnRleHRJZDx1bmtub3duPiB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZD4ge1xuICAvKipcbiAgICogVGhlIGZ1bmN0aW9uIHRvIGV2YWx1YXRlIGluIHRoZSBPYnNpZGlhbiBjb250ZXh0LlxuICAgKi9cbiAgY2FsbGJhY2soaW5wdXQ6IENvbW1vbkFyZ3VtZW50cyAmIENvbnRleHRBcmd1bWVudHM8VENvbnRleHRJZD4gJiBJbnB1dCk6IFByb21pc2FibGU8UmVzdWx0PjtcblxuICAvKipcbiAgICogQSB7QGxpbmsgQ29udGV4dElkfSBsaW5raW5nIHRoaXMgY2FsbCB0byBhIHBlcnNpc3RlbnQgc3RvcmUgb24gYHdpbmRvd2BcbiAgICogaW4gdGhlIE9ic2lkaWFuIHByb2Nlc3MuIFRoZSBjYWxsYmFjayByZWNlaXZlcyBhIHR5cGVkIGBjb250ZXh0YCBvYmplY3RcbiAgICogdGhhdCBzdXJ2aXZlcyBhY3Jvc3MgY2FsbHMgc2hhcmluZyB0aGUgc2FtZSBJRC5cbiAgICpcbiAgICogV2hlbiBvbWl0dGVkLCBgY29udGV4dGAgaXMgYSBmcmVzaCBlbXB0eSBvYmplY3QgZWFjaCBjYWxsLlxuICAgKi9cbiAgcmVhZG9ubHkgY29udGV4dElkPzogVENvbnRleHRJZDtcblxuICAvKipcbiAgICogQWRkaXRpb25hbCBhcmd1bWVudHMgdG8gcGFzcyB0byB0aGUgZnVuY3Rpb24uIFZhbHVlcyBtYXkgaW5jbHVkZSBmdW5jdGlvbnMgXHUyMDE0XG4gICAqIHRoZXkgYXJlIHNlcmlhbGl6ZWQgdmlhIGB0b1N0cmluZygpYC5cbiAgICovXG4gIHJlYWRvbmx5IGlucHV0PzogSW5wdXQ7XG5cbiAgLyoqXG4gICAqIFNraXBzIHByZS1mbGlnaHQgY2hlY2tzICh2YXVsdCByZWdpc3RyYXRpb24sIENMSSBhdmFpbGFiaWxpdHkpLlxuICAgKiBVc2VkIGludGVybmFsbHkgYnkgdmF1bHQgcmVnaXN0cmF0aW9uIGZ1bmN0aW9ucy5cbiAgICpcbiAgICogQGludGVybmFsXG4gICAqL1xuICByZWFkb25seSBzaG91bGRTa2lwUHJlZmxpZ2h0Q2hlY2tzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogT3ZlcnJpZGUgdGhlIHRyYW5zcG9ydCBmb3IgdGhpcyBjYWxsLiBXaGVuIG9taXR0ZWQsIHVzZXMgdGhlIHRyYW5zcG9ydFxuICAgKiBjb25maWd1cmVkIHZpYSB0aGUgY29udGV4dCBwcm92aWRlciAoc2V0IGJ5IHRoZSBmcmFtZXdvcmsgYWRhcHRlcidzIGdsb2JhbCBzZXR1cCkuXG4gICAqL1xuICByZWFkb25seSB0cmFuc3BvcnQ/OiBPYnNpZGlhblRyYW5zcG9ydDtcblxuICAvKipcbiAgICogVGhlIHBhdGggdG8gdGhlIE9ic2lkaWFuIHZhdWx0LiBEZWZhdWx0cyB0byBgcHJvY2Vzcy5jd2QoKWAuXG4gICAqL1xuICByZWFkb25seSB2YXVsdFBhdGg/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQSBwbGFpbiBvYmplY3Qgd2l0aCBzdHJpbmcga2V5cy5cbiAqL1xuZXhwb3J0IHR5cGUgR2VuZXJpY09iamVjdCA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBDb21tb25Bcmd1bWVudHMuaG92ZXJFbGVtZW50fS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBIb3ZlckVsZW1lbnRQYXJhbXMge1xuICAvKipcbiAgICogVGhlIGVsZW1lbnQgdG8gaG92ZXIuIFRoZSBwb2ludGVyIGlzIG1vdmVkIHRvIGl0cyBjZW50ZXIuIFRoaXMgaXMgYSBsaXZlXG4gICAqIHJlbmRlcmVyIERPTSBub2RlIFx1MjAxNCB0aGUgY2FsbGJhY2sgcnVucyBpbi1yZW5kZXJlciwgc28gbm8gY3Jvc3MtcHJvY2Vzc1xuICAgKiBzZXJpYWxpemF0aW9uIGlzIG5lZWRlZCAoc2FtZSBhcyB7QGxpbmsgVHlwZUludG9FZGl0b3JQYXJhbXMuZWRpdG9yfSkuXG4gICAqL1xuICByZWFkb25seSBlbGVtZW50OiBIVE1MRWxlbWVudDtcbn1cblxuLyoqXG4gKiBUaGUgc2hhcmVkIGxpYnJhcnkgYmFnIGluamVjdGVkIGludG8gZXZlcnkge0BsaW5rIGV2YWxJbk9ic2lkaWFufSBjYWxsYmFjayBhc1xuICoge0BsaW5rIENvbW1vbkFyZ3VtZW50cy5saWJ9LlxuICpcbiAqIFR3byBsYXllcnMgY29tcG9zZSBpbnRvIHRoaXMgb25lIGJhZy4gVGhlICoqYmFzZSoqIFx1MjAxNCB0aGUgaGFybmVzcy1wcm92aWRlZFxuICogcmVuZGVyZXItZHJpdmluZyBoZWxwZXJzIGRlY2xhcmVkIGJlbG93ICh0aGUgdHJ1c3RlZC1pbnB1dCBwcmltaXRpdmVzIGFuZFxuICoge0BsaW5rIExpYi53YWl0VW50aWx9KSBcdTIwMTQgaXMgYWx3YXlzIHByZXNlbnQuIE9uIHRvcCwgcHJvdmlkZXIgcGFja2FnZXMgcmVnaXN0ZXJcbiAqIGEgcmVuZGVyZXItc2lkZSByZXNvbHZlciB2aWEge0BsaW5rIHJlZ2lzdGVyTGliUmVzb2x2ZXJ9IHRvIGBPYmplY3QuYXNzaWduYFxuICogdGhlaXIgd2hvbGUgcmVuZGVyZXItc2FmZSBsaWJyYXJ5IGF0IHJ1bnRpbWUsIGFuZCBhdWdtZW50IHRoaXMgKiphdWdtZW50YWJsZSoqXG4gKiBpbnRlcmZhY2UgKHRoZSBgaTE4bmV4dGAgYEN1c3RvbVR5cGVPcHRpb25zYCBpZGlvbSkgdmlhXG4gKiBgZGVjbGFyZSBtb2R1bGUgJ29ic2lkaWFuLWludGVncmF0aW9uLXRlc3RpbmcnYCB0byB0eXBlIGl0LiBNdWx0aXBsZSBwcm92aWRlcnNcbiAqIGNvbXBvc2U6IHRoZWlyIGV4cG9ydHMgbWVyZ2UgYXQgcnVudGltZSBhbmQgdGhlaXIgYXVnbWVudGF0aW9ucyBtZXJnZSBpbiB0aGVcbiAqIHR5cGUgc3lzdGVtIChgaW50ZXJmYWNlIExpYiBleHRlbmRzIFx1MjAyNmApLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogZGVjbGFyZSBtb2R1bGUgJ29ic2lkaWFuLWludGVncmF0aW9uLXRlc3RpbmcnIHtcbiAqICAgaW50ZXJmYWNlIExpYiBleHRlbmRzICh0eXBlb2YgaW1wb3J0KCdvYnNpZGlhbi1kZXYtdXRpbHMvX19tZXJnZWQnKSkge31cbiAqIH1cbiAqIGBgYFxuICovXG5leHBvcnQgaW50ZXJmYWNlIExpYiB7XG4gIC8qKlxuICAgKiBDbGlja3MgdGhlIGNlbnRlciBvZiBhbiBlbGVtZW50IHVzaW5nICoqdHJ1c3RlZCoqIEVsZWN0cm9uIHBvaW50ZXIgaW5wdXQuXG4gICAqXG4gICAqIFRoZSBlbGVtZW50LXJlbGF0aXZlIGNvdW50ZXJwYXJ0IG9mIHtAbGluayBMaWIuY2xpY2tNb3VzZX0sIG1pcnJvcmluZyB0aGVcbiAgICoge0BsaW5rIExpYi5tb3ZlTW91c2V9IC8ge0BsaW5rIExpYi5ob3ZlckVsZW1lbnR9IHNwbGl0LiBVc2VcbiAgICoge0BsaW5rIExpYi5jbGlja01vdXNlfSBkaXJlY3RseSB3aGVuIHRoZSBwb2ludCB0byBjbGljayBpcyAqKm5vdCoqIHRoZVxuICAgKiBlbGVtZW50J3MgY2VudGVyIFx1MjAxNCB0aGUgbWFya2Rvd24gZWRpdG9yJ3MgbWFyZ2luLCBmb3IgaW5zdGFuY2UsIGxpZXMgaW5zaWRlXG4gICAqIGBjbS5zY3JvbGxET01gIGJ1dCBvdXRzaWRlIGAuY20tc2l6ZXJgLCBzbyBubyBlbGVtZW50J3MgY2VudGVyIGxhbmRzIG9uIGl0LlxuICAgKlxuICAgKiBTeW5jaHJvbm91czogaW5qZWN0aW5nIHRoZSB0cnVzdGVkIGNsaWNrIGRvZXMgbm8gcmVhbCBhd2FpdGluZywgc28gdGhlXG4gICAqIGNhbGxlciBkb2VzIG5vdCBuZWVkIHRvIGBhd2FpdGAgaXQuXG4gICAqXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgZWxlbWVudCB0byBjbGljaywgdGhlIGJ1dHRvbiB0byBwcmVzcyBhbmQgYW55IG1vZGlmaWVyc1xuICAgKiAgIHRvIGhvbGQuXG4gICAqL1xuICBjbGlja0VsZW1lbnQodGhpczogdm9pZCwgcGFyYW1zOiBDbGlja0VsZW1lbnRQYXJhbXMpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBDbGlja3MgYXQgdGhlIGdpdmVuIHdlYi1jb250ZW50cyBjb29yZGluYXRlcyB1c2luZyAqKnRydXN0ZWQqKiBFbGVjdHJvblxuICAgKiBwb2ludGVyIGlucHV0LCBzbyBDaHJvbWl1bSBzeW50aGVzaXplcyBhIHJlYWwgYGNsaWNrYCAob3IgYGNvbnRleHRtZW51YCxcbiAgICogZm9yIHRoZSByaWdodCBidXR0b24pIHdpdGggYGlzVHJ1c3RlZCA9PT0gdHJ1ZWAuXG4gICAqXG4gICAqIFRoaXMgaXMgd2hhdCBgZWxlbWVudC5kaXNwYXRjaEV2ZW50KG5ldyBNb3VzZUV2ZW50KCdjbGljaycpKWAgY2Fubm90IGRvOlxuICAgKiBPYnNpZGlhbiBhbmQgQ29kZU1pcnJvciBnYXRlIG9uIGBpc1RydXN0ZWRgLCBzbyBhIGRpc3BhdGNoZWQgZXZlbnQgc2lsZW50bHlcbiAgICogZXhlcmNpc2VzIG5vdGhpbmcgd2hpbGUgdGhlIHRlc3Qgc3RpbGwgcGFzc2VzIHdoYXRldmVyIHdlYWtlciBhc3NlcnRpb24gaXRcbiAgICogbWFrZXMuIE9ic2lkaWFuIDEuMTMuNydzIG1hcmtkb3duIHZpZXdwb3J0IChtYXJnaW4pIG1lbnUsIGZvciBleGFtcGxlLFxuICAgKiBvcGVucyBmcm9tIGEgYGNtLnNjcm9sbERPTWAgYGNvbnRleHRtZW51YCBsaXN0ZW5lciBndWFyZGVkIGJ5XG4gICAqIGBlLmlzVHJ1c3RlZGAsIHdoaWNoIGEgZGlzcGF0Y2hlZCBldmVudCBuZXZlciBnZXRzIHBhc3QuXG4gICAqXG4gICAqIEl0IGlzIHRoZSBsb3ctbGV2ZWwgcHJpbWl0aXZlOiBhIHNpbmdsZSB0cnVzdGVkIGBtb3VzZU1vdmVgIFx1MjE5MiBgbW91c2VEb3duYCBcdTIxOTJcbiAgICogYG1vdXNlVXBgIGF0IG9uZSBwb2ludCwgd2l0aCBubyB3YWl0aW5nIGZvciBhbnkgZWZmZWN0IChjYWxsZXJzIHBvbGwgdGhlaXJcbiAgICogb3duIHJlYWRpbmVzcyBzaWduYWwpLiBUaGUgbGVhZGluZyBtb3ZlIGlzIHdoYXQgcHV0cyB0aGUgcG9pbnRlciBvdmVyIHRoZVxuICAgKiBoaXQtdGVzdCB0YXJnZXQgYmVmb3JlIHRoZSBidXR0b24gZ29lcyBkb3duLiBQcmVmZXJcbiAgICoge0BsaW5rIExpYi5jbGlja0VsZW1lbnR9IGZvciBlbGVtZW50LXJlbGF0aXZlIGNsaWNrcy5cbiAgICpcbiAgICogQSByZWFsIGNvbnRleHQgbWVudSBhY3R1YWxseSBvcGVucywgc28gYSBzdWl0ZSBkcml2aW5nIGEgcmlnaHQgY2xpY2sgbXVzdFxuICAgKiBjbG9zZSBpdCAob3IgcmVtb3ZlIHRoZSBsZWZ0b3ZlciBgLm1lbnVgIGVsZW1lbnQpIGJlZm9yZSB0aGUgbmV4dCB0ZXN0LlxuICAgKlxuICAgKiBTeW5jaHJvbm91czogaW5qZWN0aW5nIHRoZSB0cnVzdGVkIGNsaWNrIGRvZXMgbm8gcmVhbCBhd2FpdGluZywgc28gdGhlXG4gICAqIGNhbGxlciBkb2VzIG5vdCBuZWVkIHRvIGBhd2FpdGAgaXQuXG4gICAqXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgd2ViLWNvbnRlbnRzIERJUCBjb29yZGluYXRlcyB0byBjbGljayBhdCwgdGhlIGJ1dHRvbiB0b1xuICAgKiAgIHByZXNzIGFuZCBhbnkgbW9kaWZpZXJzIHRvIGhvbGQuXG4gICAqL1xuICBjbGlja01vdXNlKHRoaXM6IHZvaWQsIHBhcmFtczogQ2xpY2tNb3VzZVBhcmFtcyk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBub3RlIGFuZCBkb2VzIG5vdCByZXR1cm4gdW50aWwgaXRzIGNvbnRlbnQgaXMgdmVyaWZpYWJseSBvblxuICAgKiBkaXNrLCByZXdyaXRpbmcgaXQgaWYgaXQgaXMgbm90LlxuICAgKlxuICAgKiBVc2UgdGhpcyBpbnN0ZWFkIG9mIGBhcHAudmF1bHQuY3JlYXRlYCBpbiBhbnkgc3VpdGUgdGhhdCBtYXkgcnVuIG9uXG4gICAqIEFuZHJvaWQuIFRoZSBlbXVsYXRvciB0cmFuc3BvcnQgbG9zZXMgcm91Z2hseSAqKjAuOSAlKiogb2YgYHZhdWx0LmNyZWF0ZWBcbiAgICogd3JpdGVzIChtZWFzdXJlZDogNyBsb3N0IGluIDgwMCBjcmVhdGVzKTogdGhlIGZpbGUgbGFuZHMgKiowIGJ5dGVzKiogb25cbiAgICogZGlzayB3aGlsZSBPYnNpZGlhbidzIGluLW1lbW9yeSBgVEZpbGUuc3RhdGAgcmVwb3J0cyB0aGUgZnVsbCBieXRlIGNvdW50LFxuICAgKiBhbmQgaXQgZG9lcyBub3QgaGVhbCBvbiBpdHMgb3duLiBBIHN1aXRlIGRvaW5nIH4zNCBjcmVhdGVzIHBlciBydW5cbiAgICogdGhlcmVmb3JlIGhhcyBhIH4yNiAlIGNoYW5jZSBvZiBhdCBsZWFzdCBvbmUgbG9zdCB3cml0ZSwgYW5kIHdoaWNoZXZlciB0ZXN0XG4gICAqIGxvc2VzIHRoYXQgbG90dGVyeSBmYWlscyBvbiBhIGB3YWl0VW50aWxgIGZvciBjb250ZW50IHRoYXQgd2FzIG5ldmVyXG4gICAqIHdyaXR0ZW4gXHUyMDE0IHdoaWNoIGlzIHdoeSBpdCByZWFkcyBhcyBhbiB1bnJlbGF0ZWQgcGVyLXRlc3QgZmxha2UgcmF0aGVyIHRoYW5cbiAgICogb25lIHNoYXJlZCBjYXVzZS5cbiAgICpcbiAgICogVmVyaWZpY2F0aW9uIGlzIGJ5ICoqcmVhZGluZyB0aGUgbm90ZSBiYWNrKiosIG5ldmVyIGJ5IGluc3BlY3RpbmdcbiAgICogYFRGaWxlLnN0YXRgOiBgc3RhdGAgaXMgZXhhY3RseSB0aGUgZmllbGQgdGhhdCBsaWVzIGhlcmUuIEEgcmV3cml0ZSB0aHJvdWdoXG4gICAqIGB2YXVsdC5tb2RpZnlgIHdpdGggdGhlIHNhbWUgY29udGVudCBsYW5kcyBjb3JyZWN0bHkgKGFsc28gbWVhc3VyZWQpLCBzbyBhXG4gICAqIGxvc3Qgd3JpdGUgY29zdHMgYSByZXRyeSByYXRoZXIgdGhhbiBhIGZhaWx1cmUuIEEgbm90ZSB3aG9zZSBjb250ZW50IHN0aWxsXG4gICAqIGRvZXMgbm90IG1hdGNoIGFmdGVyIHRoZSBib3VuZGVkIHJldHJpZXMgdGhyb3dzLCBuYW1pbmcgdGhlIHBhdGggYW5kIGJvdGhcbiAgICogbGVuZ3Rocywgc28gYSBnZW51aW5lbHkgYnJva2VuIHdyaXRlIGZhaWxzIGxvdWRseSBpbnN0ZWFkIG9mIHNwaW5uaW5nLlxuICAgKlxuICAgKiBIYXJtbGVzcyBldmVyeXdoZXJlIGVsc2UgXHUyMDE0IG9uIGEgdHJhbnNwb3J0IHRoYXQgZG9lcyBub3QgbG9zZSB3cml0ZXMgdGhlXG4gICAqIHJlYWQtYmFjayBtYXRjaGVzIGZpcnN0IHRpbWUgYW5kIG5vdGhpbmcgaXMgcmV3cml0dGVuLlxuICAgKlxuICAgKiBAcGFyYW0gcGFyYW1zIC0gVGhlIG5vdGUgcGF0aCBhbmQgY29udGVudC5cbiAgICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gcmVzb2x2aW5nIHRvIHRoZSBjcmVhdGVkIGZpbGUsIG9uY2UgaXRzIGNvbnRlbnRcbiAgICogICBpcyBjb25maXJtZWQuXG4gICAqL1xuICBjcmVhdGVOb3RlKHRoaXM6IHZvaWQsIHBhcmFtczogQ3JlYXRlTm90ZVBhcmFtcyk6IFByb21pc2U8VEZpbGU+O1xuXG4gIC8qKlxuICAgKiBNb3ZlcyB0aGUgbW91c2UgcG9pbnRlciB0byB0aGUgY2VudGVyIG9mIGFuIGVsZW1lbnQgdXNpbmcgKip0cnVzdGVkKipcbiAgICogRWxlY3Ryb24gcG9pbnRlciBpbnB1dCwgdGhlbiBwb2xscyB1bnRpbCB0aGUgZWxlbWVudCBhY3R1YWxseSBtYXRjaGVzXG4gICAqIGA6aG92ZXJgLlxuICAgKlxuICAgKiBCZWNhdXNlIHRoZSBtb3ZlIGlzIHRydXN0ZWQgKHNlZSB7QGxpbmsgTGliLm1vdmVNb3VzZX0pLCB0aGUgcmVhbCBgOmhvdmVyYFxuICAgKiBzdGF0ZSB0YWtlcyBlZmZlY3QgaW4gdGhlIENTUyBlbmdpbmUgXHUyMDE0IHJlYWwgdGhlbWUgYHZhcigpYCB2YWx1ZXMgYW5kIHJlYWxcbiAgICogY29tcG9zaXRpbmcgXHUyMDE0IGluc3RlYWQgb2YgYSBoYW5kLXNpbXVsYXRlZCBjYXNjYWRlLiBJdCBwb2xscyB0aGUgbGl2ZVxuICAgKiBgZWxlbWVudC5tYXRjaGVzKCc6aG92ZXInKWAgc3RhdGUgKG5vdCBhIGZpeGVkIGRlbGF5KSwgc28gaXQgaXMgcm9idXN0IHVuZGVyXG4gICAqIHNoYXJlZC1pbnN0YW5jZSBsb2FkLiBJdCB0YXJnZXRzIHRoZSBzaW5nbGUgc2hhcmVkIHdpbmRvdydzICoqZ2xvYmFsKipcbiAgICogcG9pbnRlciwgc28gb25seSBvbmUgZWxlbWVudCBpcyBob3ZlcmVkIGF0IGEgdGltZS5cbiAgICpcbiAgICogQHBhcmFtIHBhcmFtcyAtIFRoZSBlbGVtZW50IHRvIGhvdmVyLlxuICAgKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIG9uY2UgdGhlIGVsZW1lbnQgbWF0Y2hlcyBgOmhvdmVyYC5cbiAgICovXG4gIGhvdmVyRWxlbWVudCh0aGlzOiB2b2lkLCBwYXJhbXM6IEhvdmVyRWxlbWVudFBhcmFtcyk6IFByb21pc2U8dm9pZD47XG5cbiAgLyoqXG4gICAqIE1vdmVzIHRoZSBtb3VzZSBwb2ludGVyIHRvIHRoZSBnaXZlbiB3ZWItY29udGVudHMgY29vcmRpbmF0ZXMgdXNpbmcgYVxuICAgKiAqKnRydXN0ZWQqKiBFbGVjdHJvbiBwb2ludGVyIG1vdmUuXG4gICAqXG4gICAqIEEgdHJ1c3RlZCBtb3ZlIChpbmplY3RlZCB2aWEgRWxlY3Ryb24ncyBgd2ViQ29udGVudHMuc2VuZElucHV0RXZlbnRgKVxuICAgKiB1cGRhdGVzIHRoZSByZWFsIHBvaW50ZXIgc3RhdGUgaW4gdGhlIENTUyBlbmdpbmUsIHNvIGA6aG92ZXJgIHJ1bGVzXG4gICAqIGdlbnVpbmVseSBhcHBseSBcdTIwMTQgdW5saWtlIGBkaXNwYXRjaEV2ZW50KG5ldyBNb3VzZUV2ZW50KCdtb3VzZW92ZXInKSlgLFxuICAgKiB3aGljaCBpcyB1bnRydXN0ZWQgYW5kIG5ldmVyIHNldHMgYDpob3ZlcmAuIEl0IHRhcmdldHMgdGhlIHNpbmdsZSBzaGFyZWRcbiAgICogd2luZG93J3MgKipnbG9iYWwqKiBwb2ludGVyLCBzbyBvbmx5IG9uZSBlbGVtZW50IGlzIGhvdmVyZWQgYXQgYSB0aW1lLlxuICAgKlxuICAgKiBUaGlzIGlzIHRoZSBsb3ctbGV2ZWwgcHJpbWl0aXZlOiBpdCBwZXJmb3JtcyBhIHNpbmdsZSBtb3ZlIGFuZCBkb2VzICoqbm90KipcbiAgICogd2FpdCBmb3IgYW55IHN0YXRlIHRvIHNldHRsZSAoY2FsbGVycyBwb2xsIHRoZWlyIG93biByZWFkaW5lc3Mgc2lnbmFsKS5cbiAgICogUHJlZmVyIHtAbGluayBMaWIuaG92ZXJFbGVtZW50fSAvIHtAbGluayBMaWIudW5ob3ZlckVsZW1lbnR9IGZvclxuICAgKiBlbGVtZW50LXJlbGF0aXZlIG1vdmVzOyB1c2UgYG1vdmVNb3VzZWAgZGlyZWN0bHkgd2hlbiBhbiBlbGVtZW50LXJlbGF0aXZlXG4gICAqIHRhcmdldCBkb2VzIG5vdCBmaXQgKGUuZy4gYW4gZWxlbWVudCBzcGFubmluZyB0aGUgZnVsbCB2aWV3cG9ydCB3aWR0aCkuXG4gICAqXG4gICAqIFN5bmNocm9ub3VzOiBpbmplY3RpbmcgdGhlIHRydXN0ZWQgbW92ZSBkb2VzIG5vIHJlYWwgYXdhaXRpbmcsIHNvIHRoZSBjYWxsZXJcbiAgICogZG9lcyBub3QgbmVlZCB0byBgYXdhaXRgIGl0LlxuICAgKlxuICAgKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHdlYi1jb250ZW50cyBESVAgY29vcmRpbmF0ZXMgdG8gbW92ZSB0by5cbiAgICovXG4gIG1vdmVNb3VzZSh0aGlzOiB2b2lkLCBwYXJhbXM6IE1vdmVNb3VzZVBhcmFtcyk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIE9wZW5zIE9ic2lkaWFuJ3Mgc2V0dGluZ3MgbW9kYWwgb24gYSBnaXZlbiB0YWIsIGFuZCBkb2VzIG5vdCByZXR1cm4gdW50aWxcbiAgICogdGhhdCB0YWIgaGFzIGFjdHVhbGx5IHJlbmRlcmVkLlxuICAgKlxuICAgKiAqKlRoaXMgZXhpc3RzIGJlY2F1c2UgYGFwcC5zZXR0aW5nLm9wZW4oKWAgb24gaXRzIG93biBkb2VzIG5vdCB3b3JrIGZyb20gYVxuICAgKiB0ZXN0LioqIGBhcHAuc2V0dGluZy5jb250YWluZXJFbGAgaXMgYnVpbHQgYXQgc3RhcnR1cCBidXQgaXMgbmV2ZXIgaW4gdGhlXG4gICAqIGRvY3VtZW50LCBhbmQgYG9wZW4oKWAgZG9lcyBub3QgYXR0YWNoIGl0IFx1MjAxNCBzbyB0aGUgbW9kYWwgYnVpbGRzIGludG8gYVxuICAgKiBkZXRhY2hlZCB0cmVlLCBgb3BlbigpYCByZXR1cm5zIHdpdGhvdXQgdGhyb3dpbmcsIGFuZCBhIHNjcmVlbnNob3QgdGFrZW5cbiAgICogYWZ0ZXJ3YXJkcyBzaG93cyB0aGUgdW50b3VjaGVkIGRvY3VtZW50LiBUaGF0IGlzIHdoYXQgbWFkZSB0aGUgc2V0dGluZ3MgdGFiXG4gICAqIGxvb2sgaW1wb3NzaWJsZSB0byBjYXB0dXJlLCBhbmQgZ290IHJlY29yZGVkIGFzIHN1Y2ggaW4gdHdvIHBsdWdpbnMuXG4gICAqXG4gICAqIFRoZSBmaXggaXMgb25lIHN0ZXAsIGFuZCBpdHMgKipvcmRlciBpcyBsb2FkLWJlYXJpbmcqKjogdGhlIGNvbnRhaW5lciBpc1xuICAgKiBhcHBlbmRlZCB0byBgZG9jdW1lbnQuYm9keWAgKipiZWZvcmUqKiBgb3BlbigpYC4gQXR0YWNoaW5nIGFmdGVyd2FyZHMgaXMgdG9vXG4gICAqIGxhdGUgXHUyMDE0IHdoYXRldmVyIHRoZSBtb2RhbCBkcmV3IG9uIG9wZW4gaGFzIGFscmVhZHkgZ29uZSBpbnRvIHRoZSBkZXRhY2hlZFxuICAgKiBjb250YWluZXIsIHNvIGl0IGVuZHMgdXAgb24gc2NyZWVuIHNob3dpbmcgdGhlIHdyb25nIHRoaW5nLiBUaGF0IGZhaWx1cmVcbiAgICogbG9va3MgbGlrZSBzdWNjZXNzIHVudGlsIHRoZSBjYXB0dXJlZCBmcmFtZSBpcyBleGFtaW5lZCwgd2hpY2ggaXMgdGhlIHRyYXBcbiAgICogdGhpcyBoZWxwZXIgZXhpc3RzIHRvIHJlbW92ZS5cbiAgICpcbiAgICogUmUtYXR0YWNoaW5nIGlzIGlkZW1wb3RlbnQsIHNvIGEgdGFiIGNsb3NlZCB3aXRoIGBhcHAuc2V0dGluZy5jbG9zZSgpYCBjYW5cbiAgICogc2ltcGx5IGJlIHJlLW9wZW5lZC5cbiAgICpcbiAgICogQHBhcmFtIHBhcmFtcyAtIFRoZSB0YWIgdG8gb3BlbiBhbmQgaG93IGxvbmcgdG8gd2FpdCBmb3IgaXQgdG8gcmVuZGVyLlxuICAgKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSByZXNvbHZpbmcgdG8gdGhlIG5hbWVzIG9mIHRoZSBzZXR0aW5nIHJvd3MgdGhlXG4gICAqICAgdGFiIHJlbmRlcmVkIFx1MjAxNCBib3RoIHRoZSBwcm9vZiBpdCByZW5kZXJlZCBhbmQgd2hhdCBhIGNhbGxlciBhc3NlcnRzIG9uLiBBXG4gICAqICAgdGFiIHRoYXQgbGVnaXRpbWF0ZWx5IHJlbmRlcnMgbm8gYC5zZXR0aW5nLWl0ZW0tbmFtZWAgcm93cyAoSG90a2V5cywgc2F5KVxuICAgKiAgIHJlc29sdmVzIHRvIGFuIGVtcHR5IGFycmF5LlxuICAgKiBAdGhyb3dzIEVycm9yIGlmIG5vIHRhYiBjYXJyaWVzIHtAbGluayBPcGVuU2V0dGluZ3NUYWJQYXJhbXMudGFiSWR9LCBvciBpZlxuICAgKiAgIHRoZSB0YWIgZG9lcyBub3QgcmVuZGVyIHdpdGhpbiB0aGUgdGltZW91dC5cbiAgICovXG4gIG9wZW5TZXR0aW5nc1RhYih0aGlzOiB2b2lkLCBwYXJhbXM6IE9wZW5TZXR0aW5nc1RhYlBhcmFtcyk6IFByb21pc2U8c3RyaW5nW10+O1xuXG4gIC8qKlxuICAgKiBQcmVzc2VzIGEgc2luZ2xlIGtleSAob3B0aW9uYWxseSB3aXRoIG1vZGlmaWVycykgdXNpbmcgKip0cnVzdGVkKiogRWxlY3Ryb25cbiAgICoga2V5Ym9hcmQgaW5wdXQsIGZpcmluZyB0aGUgZnVsbCByZWFsIGtleSBwaXBlbGluZSBcdTIwMTRcbiAgICogYGtleWRvd25gIFx1MjE5MiBga2V5cHJlc3NgIFx1MjE5MiBgYmVmb3JlaW5wdXRgIFx1MjE5MiBgaW5wdXRgIFx1MjE5MiBga2V5dXBgLlxuICAgKlxuICAgKiBUaGlzIGlzIHRoZSBrZXktcHJlc3MgYW5hbG9nIG9mIHtAbGluayBMaWIudHlwZUludG9FZGl0b3J9OiBpdCBpbmplY3RzIGFcbiAgICogdHJ1c3RlZCBga2V5RG93bmAgXHUyMTkyIGBjaGFyYCBcdTIxOTIgYGtleVVwYCBzZXF1ZW5jZSB2aWEgRWxlY3Ryb24nc1xuICAgKiBgd2ViQ29udGVudHMuc2VuZElucHV0RXZlbnRgLCBzbyBpdCBpcyBkZWxpdmVyZWQgdG8gdGhlIHdpbmRvdydzIERPTS1mb2N1c2VkXG4gICAqIGVsZW1lbnQgYW5kIGZsb3dzIHRocm91Z2ggdGhlIHJlYWwgaW5wdXQgcGlwZWxpbmUgXHUyMDE0IHVubGlrZVxuICAgKiBgZGlzcGF0Y2hFdmVudChuZXcgS2V5Ym9hcmRFdmVudCguLi4pKWAsIHdoaWNoIGlzIHVudHJ1c3RlZCAoYGlzVHJ1c3RlZDpcbiAgICogZmFsc2VgKSBhbmQgaWdub3JlZCBieSBDb2RlTWlycm9yIGFuZCBtb3N0IGtleSBoYW5kbGVycy4gVXNlIGl0IGZvciBzcGVjaWFsXG4gICAqIGtleXMgKGAnRW50ZXInYCwgYCdFc2NhcGUnYCwgYCdUYWInYCwgYXJyb3cga2V5cykgYW5kIG1vZGlmaWVyIGNvbWJpbmF0aW9uc1xuICAgKiAoYFNoaWZ0K0VudGVyYCwgYEN0cmwrQWApIHRoYXQge0BsaW5rIExpYi50eXBlSW50b0VkaXRvcn0gKHdoaWNoIHR5cGVzXG4gICAqIHByaW50YWJsZSB0ZXh0KSBkb2VzIG5vdCBjb3Zlci5cbiAgICpcbiAgICogVGhpcyBpcyB0aGUgbG93LWxldmVsIHByaW1pdGl2ZTogaXQgaW5qZWN0cyB0aGUga2V5IHByZXNzIGFuZCBkb2VzICoqbm90KipcbiAgICogcG9sbCBmb3IgYW55IGVmZmVjdCAoYSBrZXkgcHJlc3MgaGFzIG5vIHVuaXZlcnNhbCBvYnNlcnZhYmxlIG91dGNvbWUgXHUyMDE0XG4gICAqIGBFbnRlcmAgZWRpdHMgdGhlIGRvY3VtZW50LCBgRXNjYXBlYCBjbG9zZXMgYSBtb2RhbCwgYEFycm93RG93bmAgbW92ZXMgdGhlXG4gICAqIHNlbGVjdGlvbikuIFRoZSBjYWxsZXIgZm9jdXNlcyB0aGUgaW50ZW5kZWQgdGFyZ2V0IGZpcnN0LCB0aGVuIGF3YWl0cyB0aGVcbiAgICogZXhwZWN0ZWQgZWZmZWN0IHZpYSB7QGxpbmsgTGliLndhaXRVbnRpbH0uIEl0IHRhcmdldHMgdGhlIHNpbmdsZSBzaGFyZWRcbiAgICogd2luZG93J3MgKipnbG9iYWwqKiBmb2N1cywgc28gb25seSB0aGUgRE9NLWZvY3VzZWQgZWxlbWVudCByZWNlaXZlcyB0aGUga2V5LlxuICAgKlxuICAgKiBTeW5jaHJvbm91czogaW5qZWN0aW5nIHRoZSB0cnVzdGVkIGtleSBwcmVzcyBkb2VzIG5vIHJlYWwgYXdhaXRpbmcsIHNvIHRoZVxuICAgKiBjYWxsZXIgZG9lcyBub3QgbmVlZCB0byBgYXdhaXRgIGl0LlxuICAgKlxuICAgKiBAcGFyYW0gcGFyYW1zIC0gVGhlIGtleSB0byBwcmVzcyBhbmQgYW55IG1vZGlmaWVycyB0byBob2xkLlxuICAgKi9cbiAgcHJlc3NLZXkodGhpczogdm9pZCwgcGFyYW1zOiBQcmVzc0tleVBhcmFtcyk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIFR5cGVzIHRleHQgaW50byBhIENvZGVNaXJyb3Ige0BsaW5rIEVkaXRvcn0gdXNpbmcgKip0cnVzdGVkKiogRWxlY3Ryb25cbiAgICoga2V5Ym9hcmQgaW5wdXQuXG4gICAqXG4gICAqIFR5cGluZyBpcyBwcmVzc2luZyBlYWNoIGNoYXJhY3RlciBrZXkgaW4gdHVybjogdGhpcyBmb2N1c2VzIHRoZSBlZGl0b3JcbiAgICogKGNhcmV0IHRvIGVuZCkgYW5kIHByZXNzZXMgZXZlcnkgY29kZSBwb2ludCBvZiBgdGV4dGAgdmlhXG4gICAqIHtAbGluayBMaWIucHJlc3NLZXl9IFx1MjAxNCB0aGUgc2FtZSB0cnVzdGVkIGBrZXlEb3duYCBcdTIxOTIgYGNoYXJgIFx1MjE5MiBga2V5VXBgIGEgcmVhbFxuICAgKiB1c2VyIHByb2R1Y2VzLiBFYWNoIGtleXN0cm9rZSBpcyBkZWxpdmVyZWQgdG8gdGhlIHdpbmRvdydzIERPTS1mb2N1c2VkXG4gICAqIGVsZW1lbnQgYW5kIGZsb3dzIHRocm91Z2ggQ29kZU1pcnJvcidzIHJlYWwgaW5wdXQgcGlwZWxpbmUsIHNvIHRoZSB0eXBlZFxuICAgKiB0ZXh0IHJlYWNoZXMgdGhlIGRvY3VtZW50ICoqb25seSBpZiB0aGUgZWRpdG9yIGdlbnVpbmVseSBob2xkcyBmb2N1cyoqLlxuICAgKiBUaGlzIG1ha2VzIFwidGhlIHVzZXIgdHlwZWQgaW50byB0aGUgZWRpdG9yXCIgYSBmYWl0aGZ1bCBlbmQtdG8tZW5kIGNoZWNrLFxuICAgKiB1bmxpa2UgYGRpc3BhdGNoRXZlbnQobmV3IEtleWJvYXJkRXZlbnQoLi4uKSlgICh1bnRydXN0ZWQgXHUyMDE0IGlnbm9yZWQgYnlcbiAgICogQ29kZU1pcnJvcikgb3IgYGV4ZWNDb21tYW5kKCdpbnNlcnRUZXh0JylgIChtdXRhdGVzIHRoZSBzZWxlY3Rpb24gZXZlblxuICAgKiB3aGVuIHRoZSBlZGl0b3IgaXMgbm90IGZvY3VzZWQsIG1hc2tpbmcgZm9jdXMgYnVncyBhcyBmYWxzZSBwb3NpdGl2ZXMpLlxuICAgKlxuICAgKiBBZnRlciBpbmplY3RpbmcgdGhlIGtleXN0cm9rZXMgaXQgcG9sbHMgdW50aWwgdGhlIGRvY3VtZW50IHJlZmxlY3RzIHRoZVxuICAgKiBpbnB1dCwgb3IgYSBib3VuZGVkIHRpbWVvdXQgZWxhcHNlcyAodGhlIGV4cGVjdGVkIG91dGNvbWUgd2hlbiB0aGUgZWRpdG9yXG4gICAqIGlzIHJlYWQtb25seSBhbmQgcmVqZWN0cyB0aGUgaW5wdXQsIG9yIHdoZW4gZm9jdXMgd2FzIHN0b2xlbikuXG4gICAqXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgZWRpdG9yIHRvIHR5cGUgaW50byBhbmQgdGhlIHRleHQgdG8gdHlwZS5cbiAgICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyBvbmNlIHRoZSBrZXlzdHJva2VzIGhhdmUgc2V0dGxlZC5cbiAgICovXG4gIHR5cGVJbnRvRWRpdG9yKHRoaXM6IHZvaWQsIHBhcmFtczogVHlwZUludG9FZGl0b3JQYXJhbXMpOiBQcm9taXNlPHZvaWQ+O1xuXG4gIC8qKlxuICAgKiBNb3ZlcyB0aGUgbW91c2UgcG9pbnRlciB0byBhIHBvaW50IGp1c3Qgb3V0c2lkZSBhbiBlbGVtZW50J3MgYm91bmRpbmcgYm94XG4gICAqIHVzaW5nIGEgKip0cnVzdGVkKiogRWxlY3Ryb24gcG9pbnRlciBtb3ZlLCB0aGVuIHBvbGxzIHVudGlsIHRoZSBlbGVtZW50IG5vXG4gICAqIGxvbmdlciBtYXRjaGVzIGA6aG92ZXJgLlxuICAgKlxuICAgKiBUaGUgaW52ZXJzZSBvZiB7QGxpbmsgTGliLmhvdmVyRWxlbWVudH0uIEl0IHRhcmdldHMgdGhlIHNpbmdsZSBzaGFyZWRcbiAgICogd2luZG93J3MgKipnbG9iYWwqKiBwb2ludGVyLCBzbyBvbmx5IG9uZSBlbGVtZW50IGlzIGhvdmVyZWQgYXQgYSB0aW1lLiBXaGVuXG4gICAqIGFuIGVsZW1lbnQgc3BhbnMgdGhlIGZ1bGwgdmlld3BvcnQgKG5vIHBvaW50IG91dHNpZGUgaXRzIGJveCBpcyByZWFjaGFibGUpLFxuICAgKiB1c2Uge0BsaW5rIExpYi5tb3ZlTW91c2V9IGRpcmVjdGx5IHRvIG1vdmUgdGhlIHBvaW50ZXIgdG8gYSBrbm93biBlbXB0eVxuICAgKiBjb29yZGluYXRlIGluc3RlYWQuXG4gICAqXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgZWxlbWVudCB0byBtb3ZlIHRoZSBwb2ludGVyIGF3YXkgZnJvbS5cbiAgICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyBvbmNlIHRoZSBlbGVtZW50IG5vIGxvbmdlciBtYXRjaGVzXG4gICAqICAgYDpob3ZlcmAuXG4gICAqL1xuICB1bmhvdmVyRWxlbWVudCh0aGlzOiB2b2lkLCBwYXJhbXM6IFVuaG92ZXJFbGVtZW50UGFyYW1zKTogUHJvbWlzZTx2b2lkPjtcblxuICAvKipcbiAgICogUG9sbHMgYSBwcmVkaWNhdGUgdW50aWwgaXQgYmVjb21lcyB0cnV0aHksIG9yIHJlamVjdHMgb25jZSBhIGJvdW5kZWRcbiAgICogdGltZW91dCBlbGFwc2VzLlxuICAgKlxuICAgKiBJbnRlZ3JhdGlvbi10ZXN0IGBldmFsSW5PYnNpZGlhbmAgY2FsbGJhY2tzIHJvdXRpbmVseSBuZWVkIHRvIHdhaXQgZm9yIGFuXG4gICAqIGFzeW5jaHJvbm91cyBlZmZlY3QgdG8gc2V0dGxlIChhIHZpZXcgdG8gb3BlbiwgYSBET00gbm9kZSB0byBhcHBlYXIsIGFcbiAgICogc2V0dGluZyB0byBhcHBseSkuIEJlY2F1c2UgdGhlIGNhbGxiYWNrIGlzIHNlcmlhbGl6ZWQgdmlhIGB0b1N0cmluZygpYCBhbmRcbiAgICogY2Fubm90IGltcG9ydCBtb2R1bGVzLCBpdCBjYW4ndCByZXVzZSBgb2JzaWRpYW4tZGV2LXV0aWxzYCdcbiAgICogYHJldHJ5V2l0aFRpbWVvdXRgIC8gYHJ1bldpdGhUaW1lb3V0YC4gVGhpcyBoZWxwZXIgaXMgdGhlIHNoYXJlZCwgaW5qZWN0ZWRcbiAgICogcmVwbGFjZW1lbnQgZm9yIHRoZSBwZXItY2xvc3VyZSBwb2xsIGxvb3BzIGNvbnN1bWVycyB3b3VsZCBvdGhlcndpc2VcbiAgICogaGFuZC1yb2xsLlxuICAgKlxuICAgKiBUaGUgYHByZWRpY2F0ZWAgbWF5IGJlIHN5bmNocm9ub3VzIG9yIGFzeW5jaHJvbm91cyBcdTIwMTQgaXQgaXMgYXdhaXRlZCBvbiBldmVyeVxuICAgKiBwb2xsLiBJdCBpcyBjaGVja2VkIGltbWVkaWF0ZWx5LCB0aGVuIHJlLWNoZWNrZWQgZXZlcnlcbiAgICogYGludGVydmFsSW5NaWxsaXNlY29uZHNgIHVudGlsIGl0IHJldHVybnMgdHJ1dGh5IG9yIGB0aW1lb3V0SW5NaWxsaXNlY29uZHNgXG4gICAqIGVsYXBzZXMsIGF0IHdoaWNoIHBvaW50IHRoZSByZXR1cm5lZCB7QGxpbmsgUHJvbWlzZX0gcmVqZWN0cyAodGhlIGVycm9yXG4gICAqIGluY2x1ZGVzIGBtZXNzYWdlYCB3aGVuIHByb3ZpZGVkKS5cbiAgICpcbiAgICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwcmVkaWNhdGUgdG8gcG9sbCBwbHVzIG9wdGlvbmFsIHRpbWVvdXQsIGludGVydmFsLCBhbmRcbiAgICogICB0aW1lb3V0IG1lc3NhZ2UuXG4gICAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgb25jZSB0aGUgcHJlZGljYXRlIGlzIHRydXRoeS5cbiAgICovXG4gIHdhaXRVbnRpbCh0aGlzOiB2b2lkLCBwYXJhbXM6IFdhaXRVbnRpbFBhcmFtcyk6IFByb21pc2U8dm9pZD47XG59XG5cbi8qKlxuICogVGhlIG1vdXNlIGJ1dHRvbiBhIHRydXN0ZWQgY2xpY2sgcHJlc3NlcywgaW4gRWxlY3Ryb24ncyBgc2VuZElucHV0RXZlbnRgXG4gKiBzcGVsbGluZy5cbiAqL1xuZXhwb3J0IHR5cGUgTW91c2VCdXR0b24gPSAnbGVmdCcgfCAnbWlkZGxlJyB8ICdyaWdodCc7XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIENvbW1vbkFyZ3VtZW50cy5tb3ZlTW91c2V9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1vdmVNb3VzZVBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgeCBjb29yZGluYXRlICh3ZWItY29udGVudHMgRElQKSB0byBtb3ZlIHRoZSBwb2ludGVyIHRvLlxuICAgKi9cbiAgcmVhZG9ubHkgeDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgeSBjb29yZGluYXRlICh3ZWItY29udGVudHMgRElQKSB0byBtb3ZlIHRoZSBwb2ludGVyIHRvLlxuICAgKi9cbiAgcmVhZG9ubHkgeTogbnVtYmVyO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBMaWIub3BlblNldHRpbmdzVGFifS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPcGVuU2V0dGluZ3NUYWJQYXJhbXMge1xuICAvKipcbiAgICogVGhlIGlkIG9mIHRoZSBzZXR0aW5ncyB0YWIgdG8gb3BlbiBcdTIwMTQgYSBwbHVnaW4gaWQgZm9yIGEgcGx1Z2luJ3Mgb3duIHRhYiwgb3JcbiAgICogYSBjb3JlIHRhYiBpZCAoYCdlZGl0b3InYCwgYCdob3RrZXlzJ2AsIFx1MjAyNikuXG4gICAqXG4gICAqIFJlcXVpcmVkLCBiZWNhdXNlIG9wZW5pbmcgdGhlIG1vZGFsIHdpdGhvdXQgbmFtaW5nIGEgdGFiIHJlbmRlcnMgKipub3RoaW5nKipcbiAgICogb24gYSBoYXJuZXNzLW93bmVkIGluc3RhbmNlOiB0aGUgbW9kYWwgcmVzdG9yZXMgdGhlIGxhc3QgdGFiIHRoZSBwcm9maWxlXG4gICAqIHVzZWQsIGFuZCBhbiBpc29sYXRlZCBwcm9maWxlIGhhcyBuZXZlciBvcGVuZWQgb25lLCBzbyBgYWN0aXZlVGFiYCBzdGF5c1xuICAgKiBgbnVsbGAgYW5kIG5vIHJvdyBpcyBkcmF3bi4gQW4gdW5rbm93biBpZCBpcyByZWplY3RlZCBpbW1lZGlhdGVseSwgbGlzdGluZ1xuICAgKiB0aGUgaWRzIHRoYXQgZG8gZXhpc3QuXG4gICAqL1xuICByZWFkb25seSB0YWJJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbWF4aW11bSB0aW1lIHRvIHdhaXQgZm9yIHRoZSBtb2RhbCB0byBvcGVuIGFuZCBmb3IgdGhlIHJlcXVlc3RlZCB0YWIgdG9cbiAgICogcmVuZGVyIGl0cyBjb250ZW50LlxuICAgKlxuICAgKiBAZGVmYXVsdCBgNTAwMGBcbiAgICovXG4gIHJlYWRvbmx5IHRpbWVvdXRJbk1pbGxpc2Vjb25kcz86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgQ29tbW9uQXJndW1lbnRzLnByZXNzS2V5fS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQcmVzc0tleVBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUga2V5IHRvIHByZXNzLCBnaXZlbiBhcyBhbiBFbGVjdHJvbiBBY2NlbGVyYXRvciBrZXkgbmFtZSBcdTIwMTQgZS5nLlxuICAgKiBgJ0VudGVyJ2AsIGAnRXNjYXBlJ2AsIGAnVGFiJ2AsIGAnQmFja3NwYWNlJ2AsIGAnRGVsZXRlJ2AsIGFuIGFycm93IGtleVxuICAgKiAoYCdVcCdgIC8gYCdEb3duJ2AgLyBgJ0xlZnQnYCAvIGAnUmlnaHQnYCksIG9yIGEgcHJpbnRhYmxlIGNoYXJhY3RlclxuICAgKiAoYCdhJ2AsIGAnMSdgKS4gVGhlIHByb2R1Y2VkIGNoYXJhY3RlciAod2hlbiB0aGUga2V5IGluc2VydHMgdGV4dCkgaXMgdGhlXG4gICAqIGxpdGVyYWwgYGtleWAgdmFsdWU7IGNhc2UtY29ycmVjdCB0ZXh0IGJlbG9uZ3MgdG9cbiAgICoge0BsaW5rIENvbW1vbkFyZ3VtZW50cy50eXBlSW50b0VkaXRvcn0sIG5vdCBhIGtleS1wcmVzcyBwcmltaXRpdmUuXG4gICAqL1xuICByZWFkb25seSBrZXk6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG1vZGlmaWVyIGtleXMgdG8gaG9sZCB3aGlsZSB0aGUga2V5IGlzIHByZXNzZWQsIHVzaW5nIE9ic2lkaWFuJ3NcbiAgICoge0BsaW5rIE1vZGlmaWVyfSBuYW1lcyAodGhlIHNhbWUgdmFsdWVzIGFzIGFuIE9ic2lkaWFuIGBIb3RrZXlgKS4gYCdNb2QnYFxuICAgKiByZXNvbHZlcyBwZXItcGxhdGZvcm0gKENtZCBvbiBtYWNPUywgQ3RybCBlbHNld2hlcmUpOyBlYWNoIGlzIG1hcHBlZCB0b1xuICAgKiBFbGVjdHJvbidzIGxvd2VyY2FzZSBgc2VuZElucHV0RXZlbnRgIG1vZGlmaWVyIG5hbWUuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBbXWBcbiAgICovXG4gIHJlYWRvbmx5IG1vZGlmaWVycz86IHJlYWRvbmx5IE1vZGlmaWVyW107XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIENvbW1vbkFyZ3VtZW50cy50eXBlSW50b0VkaXRvcn0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVHlwZUludG9FZGl0b3JQYXJhbXMge1xuICAvKipcbiAgICogVGhlIGVkaXRvciB0byB0eXBlIGludG8uIEl0IGlzIGZvY3VzZWQgKHdpdGggdGhlIGNhcmV0IG1vdmVkIHRvIHRoZSBlbmQgb2ZcbiAgICogdGhlIGRvY3VtZW50KSBiZWZvcmUgdGhlIGtleXN0cm9rZXMgYXJlIGluamVjdGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgZWRpdG9yOiBFZGl0b3I7XG5cbiAgLyoqXG4gICAqIFRoZSB0ZXh0IHRvIHR5cGUuIEVhY2ggY29kZSBwb2ludCBpcyBwcmVzc2VkIHZpYSB7QGxpbmsgQ29tbW9uQXJndW1lbnRzLnByZXNzS2V5fVxuICAgKiAoYSB0cnVzdGVkIGBrZXlEb3duYCBcdTIxOTIgYGNoYXJgIFx1MjE5MiBga2V5VXBgKSwgZXhhY3RseSBhcyBhIHJlYWwgdXNlciB0eXBpbmcuXG4gICAqL1xuICByZWFkb25seSB0ZXh0OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIENvbW1vbkFyZ3VtZW50cy51bmhvdmVyRWxlbWVudH0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVW5ob3ZlckVsZW1lbnRQYXJhbXMge1xuICAvKipcbiAgICogVGhlIGVsZW1lbnQgdG8gbW92ZSB0aGUgcG9pbnRlciBhd2F5IGZyb20uIFRoZSBwb2ludGVyIGlzIG1vdmVkIHRvIGEgcG9pbnRcbiAgICoganVzdCBvdXRzaWRlIGl0cyBib3VuZGluZyBib3guIFRoaXMgaXMgYSBsaXZlIHJlbmRlcmVyIERPTSBub2RlIFx1MjAxNCB0aGVcbiAgICogY2FsbGJhY2sgcnVucyBpbi1yZW5kZXJlciwgc28gbm8gY3Jvc3MtcHJvY2VzcyBzZXJpYWxpemF0aW9uIGlzIG5lZWRlZFxuICAgKiAoc2FtZSBhcyB7QGxpbmsgVHlwZUludG9FZGl0b3JQYXJhbXMuZWRpdG9yfSkuXG4gICAqL1xuICByZWFkb25seSBlbGVtZW50OiBIVE1MRWxlbWVudDtcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgQ29tbW9uQXJndW1lbnRzLndhaXRVbnRpbH0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV2FpdFVudGlsUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBwb2xsaW5nIGludGVydmFsIGJldHdlZW4gcHJlZGljYXRlIGNoZWNrcy5cbiAgICpcbiAgICogQGRlZmF1bHQgYDUwYFxuICAgKi9cbiAgcmVhZG9ubHkgaW50ZXJ2YWxJbk1pbGxpc2Vjb25kcz86IG51bWJlcjtcblxuICAvKipcbiAgICogQW4gb3B0aW9uYWwgZGV0YWlsIGFwcGVuZGVkIHRvIHRoZSB0aW1lb3V0IGVycm9yIG1lc3NhZ2UsIGRlc2NyaWJpbmcgd2hhdFxuICAgKiB3YXMgYmVpbmcgd2FpdGVkIGZvci5cbiAgICovXG4gIHJlYWRvbmx5IG1lc3NhZ2U/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBjb25kaXRpb24gdG8gd2FpdCBmb3IuIFBvbGxlZCBpbW1lZGlhdGVseSwgdGhlbiBvbiBldmVyeSBpbnRlcnZhbCB1bnRpbFxuICAgKiBpdCByZXR1cm5zIGEgdHJ1dGh5IHZhbHVlLiBNYXkgYmUgc3luY2hyb25vdXMgb3IgYXN5bmNocm9ub3VzIFx1MjAxNCBpdCBpc1xuICAgKiBhd2FpdGVkIG9uIGVhY2ggcG9sbC5cbiAgICpcbiAgICogQHJldHVybnMgV2hldGhlciB0aGUgYXdhaXRlZCBjb25kaXRpb24gaGFzIGJlZW4gbWV0LlxuICAgKi9cbiAgcHJlZGljYXRlKHRoaXM6IHZvaWQpOiBib29sZWFuIHwgUHJvbWlzZTxib29sZWFuPjtcblxuICAvKipcbiAgICogVGhlIG1heGltdW0gdGltZSB0byB3YWl0IGJlZm9yZSByZWplY3RpbmcuXG4gICAqXG4gICAqIEBkZWZhdWx0IGA1MDAwYFxuICAgKi9cbiAgcmVhZG9ubHkgdGltZW91dEluTWlsbGlzZWNvbmRzPzogbnVtYmVyO1xufVxuXG4vKipcbiAqIEV2YWx1YXRlcyBhIGZ1bmN0aW9uIGluc2lkZSB0aGUgcnVubmluZyBPYnNpZGlhbiBpbnN0YW5jZVxuICogdmlhIHRoZSBhY3RpdmUgdHJhbnNwb3J0IGFuZCByZXR1cm5zIHRoZSBwYXJzZWQgcmVzdWx0LlxuICpcbiAqIFRoZSBmdW5jdGlvbiByZWNlaXZlcyBhbiBpbnB1dCBvYmplY3QgdGhhdCBpbmNsdWRlcyBgYXBwYCwgYG9ic2lkaWFuTW9kdWxlYCxcbiAqIGBjb250ZXh0YCwgYW5kIGFueSBhZGRpdGlvbmFsIGBpbnB1dGAgcGFzc2VkIGJ5IHRoZSBjYWxsZXIuXG4gKiBJdCBpcyBzZXJpYWxpemVkIHZpYSBgdG9TdHJpbmcoKWAgYW5kIGludm9rZWQgYXMgYW4gSUlGRS5cbiAqIFRoZSBmdW5jdGlvbiBtdXN0IGJlIHNlbGYtY29udGFpbmVkIFx1MjAxNCBjbG9zdXJlcyBvdmVyIGxvY2FsIHZhcmlhYmxlcyB3aWxsIG5vdCB3b3JrLlxuICogUGFzcyBhbnkgbmVlZGVkIHZhbHVlcyBhcyBgaW5wdXRgIFx1MjAxNCB0aGV5IGFyZSBKU09OLXNlcmlhbGl6ZWQgYW5kIGRlc2VyaWFsaXplZCBvbiB0aGUgT2JzaWRpYW4gc2lkZS5cbiAqXG4gKiBUaGUgcmVzdWx0IGlzIGBKU09OLnN0cmluZ2lmeWAnZCBvbiB0aGUgT2JzaWRpYW4gc2lkZSBhbmQgcGFyc2VkIGJhY2suXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZnVuY3Rpb24gdG8gZXZhbHVhdGUuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIHRoZSByZXR1cm4gdmFsdWUgb2YgYGNhbGxiYWNrYC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGV2YWxJbk9ic2lkaWFuPElucHV0IGV4dGVuZHMgR2VuZXJpY09iamVjdCwgUmVzdWx0LCBUQ29udGV4dElkIGV4dGVuZHMgQ29udGV4dElkPHVua25vd24+IHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkPihcbiAgcGFyYW1zOiBFdmFsSW5PYnNpZGlhblBhcmFtczxJbnB1dCwgUmVzdWx0LCBUQ29udGV4dElkPlxuKTogUHJvbWlzZTxSZXN1bHQ+IHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC91bmJvdW5kLW1ldGhvZCAtLSBgY2FsbGJhY2tgIGNhbiBiZSB1bmJvdW5kLlxuICBjb25zdCB7IGNhbGxiYWNrLCBjb250ZXh0SWQsIGlucHV0ID0ge30sIHNob3VsZFNraXBQcmVmbGlnaHRDaGVja3MgPSBmYWxzZSwgdHJhbnNwb3J0OiB0cmFuc3BvcnRPdmVycmlkZSwgdmF1bHRQYXRoIH0gPSBwYXJhbXM7XG4gIGNvbnN0IGN3ZCA9IHZhdWx0UGF0aCA/PyBnZXRWYXVsdFBhdGgoKSA/PyBwcm9jZXNzLmN3ZCgpO1xuXG4gIC8vIENoZWNrOiBWYXVsdCBwYXRoIGV4aXN0cyBvbiBkaXNrLlxuICBpZiAodmF1bHRQYXRoICE9PSB1bmRlZmluZWQgJiYgIWV4aXN0c1N5bmModmF1bHRQYXRoKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgVmF1bHQgcGF0aCBkb2VzIG5vdCBleGlzdDogJHt2YXVsdFBhdGh9YCk7XG4gIH1cblxuICBjb25zdCB0cmFuc3BvcnQgPSB0cmFuc3BvcnRPdmVycmlkZSA/PyBhd2FpdCBnZXRPckNyZWF0ZVRyYW5zcG9ydChnZXRUcmFuc3BvcnRPcHRpb25zKCkpO1xuXG4gIGlmICghc2hvdWxkU2tpcFByZWZsaWdodENoZWNrcykge1xuICAgIGF3YWl0IHRyYW5zcG9ydC5wcmVmbGlnaHRDaGVjayhjd2QpO1xuICB9XG5cbiAgYXdhaXQgZW5zdXJlTmFtZXNwYWNlQm9vdHN0cmFwcGVkKHRyYW5zcG9ydCwgY3dkKTtcblxuICBjb25zdCBuYW1lc3BhY2VDYWxsUGFyYW1zOiBHZW5lcmF0ZU5hbWVzcGFjZUNhbGxQYXJhbXMgPSB7XG4gICAgY2FsbGJhY2ssXG4gICAgaW5wdXQsXG4gICAgLi4uKGNvbnRleHRJZCAhPT0gdW5kZWZpbmVkICYmIHsgY29udGV4dElkOiBTdHJpbmcoY29udGV4dElkKSB9KVxuICB9O1xuXG4gIGNvbnN0IGV4cHJlc3Npb24gPSBnZW5lcmF0ZU5hbWVzcGFjZUNhbGwobmFtZXNwYWNlQ2FsbFBhcmFtcyk7XG5cbiAgY29uc3QgcmVzdWx0U3RyaW5nID0gYXdhaXQgdHJhbnNwb3J0LmV2YWx1YXRlKGV4cHJlc3Npb24sIHsgY3dkIH0pO1xuXG4gIGlmIChyZXN1bHRTdHJpbmcgPT09ICcnIHx8IHJlc3VsdFN0cmluZyA9PT0gTk9fT1VUUFVUKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZCBhcyBSZXN1bHQ7XG4gIH1cblxuICBsZXQgZW52ZWxvcGU6IEV2YWxSZXN1bHRFbnZlbG9wZTtcbiAgdHJ5IHtcbiAgICBlbnZlbG9wZSA9IEpTT04ucGFyc2UocmVzdWx0U3RyaW5nKSBhcyBFdmFsUmVzdWx0RW52ZWxvcGU7XG4gIH0gY2F0Y2gge1xuICAgIHRocm93IG5ldyBFcnJvcihgZXZhbEluT2JzaWRpYW46IE9ic2lkaWFuIHJldHVybmVkIG5vbi1KU09OIG91dHB1dDogJHtyZXN1bHRTdHJpbmd9YCk7XG4gIH1cblxuICBpZiAoJ3R5cGUnIGluIGVudmVsb3BlKSB7XG4gICAgaWYgKGVudmVsb3BlLnR5cGUgPT09ICdlcnJvcicpIHtcbiAgICAgIC8vIFJld3JpdGUgYmFyZS1vcmlnaW4gbG9jYWxob3N0IHN0YWNrIGZyYW1lcyBsaWtlIFwiKGh0dHA6Ly9sb2NhbGhvc3QvOjkxNTozMilcIlxuICAgICAgLy8gU28gVml0ZXN0J3Mgc291cmNlLW1hcCByZXNvbHZlciB3b24ndCBleHRyYWN0IFwiL1wiIGFzIHRoZSBmaWxlIHBhdGggYW5kIGNyYXNoXG4gICAgICAvLyBXaXRoIEVJU0RJUiB3aGVuIGl0IHRyaWVzIHRvIHJlYWRGaWxlU3luYyBvbiB0aGUgcm9vdCBkaXJlY3RvcnkuXG4gICAgICBjb25zdCBzYW5pdGl6ZWREZXRhaWwgPSBlbnZlbG9wZS52YWx1ZVxuICAgICAgICAucmVwbGFjZUFsbCgvXFwoaHR0cHM/OlxcL1xcL2xvY2FsaG9zdFxcLzooPzxsaW5lPlxcZCkvZywgJyhvYnNpZGlhbi13ZWJ2aWV3OiQ8bGluZT4nKTtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgZXZhbEluT2JzaWRpYW46IEVycm9yIGluc2lkZSBPYnNpZGlhbjpcXG4ke3Nhbml0aXplZERldGFpbH1gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdW5kZWZpbmVkIGFzIFJlc3VsdDtcbiAgfVxuXG4gIHJldHVybiBlbnZlbG9wZS52YWx1ZSBhcyBSZXN1bHQ7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQWdCQSxxQkFBMkI7QUFDM0IsMEJBQW9CO0FBU3BCLDhCQUdPO0FBQ1Asb0NBQXNDO0FBQ3RDLGlDQUE0QztBQUM1QywrQkFBcUM7QUEyQnJDLE1BQU0sWUFBWTtBQW1rQmxCLGVBQXNCLGVBQ3BCLFFBQ2lCO0FBRWpCLFFBQU0sRUFBRSxVQUFVLFdBQVcsUUFBUSxDQUFDLEdBQUcsNEJBQTRCLE9BQU8sV0FBVyxtQkFBbUIsVUFBVSxJQUFJO0FBQ3hILFFBQU0sTUFBTSxpQkFBYSxzQ0FBYSxLQUFLLG9CQUFBQSxRQUFRLElBQUk7QUFHdkQsTUFBSSxjQUFjLFVBQWEsS0FBQywyQkFBVyxTQUFTLEdBQUc7QUFDckQsVUFBTSxJQUFJLE1BQU0sOEJBQThCLFNBQVMsRUFBRTtBQUFBLEVBQzNEO0FBRUEsUUFBTSxZQUFZLHFCQUFxQixVQUFNLG1EQUFxQiw2Q0FBb0IsQ0FBQztBQUV2RixNQUFJLENBQUMsMkJBQTJCO0FBQzlCLFVBQU0sVUFBVSxlQUFlLEdBQUc7QUFBQSxFQUNwQztBQUVBLFlBQU0sd0RBQTRCLFdBQVcsR0FBRztBQUVoRCxRQUFNLHNCQUFtRDtBQUFBLElBQ3ZEO0FBQUEsSUFDQTtBQUFBLElBQ0EsR0FBSSxjQUFjLFVBQWEsRUFBRSxXQUFXLE9BQU8sU0FBUyxFQUFFO0FBQUEsRUFDaEU7QUFFQSxRQUFNLGlCQUFhLHFEQUFzQixtQkFBbUI7QUFFNUQsUUFBTSxlQUFlLE1BQU0sVUFBVSxTQUFTLFlBQVksRUFBRSxJQUFJLENBQUM7QUFFakUsTUFBSSxpQkFBaUIsTUFBTSxpQkFBaUIsV0FBVztBQUNyRCxXQUFPO0FBQUEsRUFDVDtBQUVBLE1BQUk7QUFDSixNQUFJO0FBQ0YsZUFBVyxLQUFLLE1BQU0sWUFBWTtBQUFBLEVBQ3BDLFFBQVE7QUFDTixVQUFNLElBQUksTUFBTSxzREFBc0QsWUFBWSxFQUFFO0FBQUEsRUFDdEY7QUFFQSxNQUFJLFVBQVUsVUFBVTtBQUN0QixRQUFJLFNBQVMsU0FBUyxTQUFTO0FBSTdCLFlBQU0sa0JBQWtCLFNBQVMsTUFDOUIsV0FBVyx5Q0FBeUMsMkJBQTJCO0FBQ2xGLFlBQU0sSUFBSSxNQUFNO0FBQUEsRUFBMkMsZUFBZSxFQUFFO0FBQUEsSUFDOUU7QUFFQSxXQUFPO0FBQUEsRUFDVDtBQUVBLFNBQU8sU0FBUztBQUNsQjsiLAogICJuYW1lcyI6IFsicHJvY2VzcyJdCn0K
|
|
@@ -71,8 +71,8 @@ export interface CommonArguments {
|
|
|
71
71
|
*
|
|
72
72
|
* Never empty: the harness pre-populates a **base** set of renderer-driving
|
|
73
73
|
* helpers (trusted input — `typeIntoEditor` / `pressKey` / `moveMouse` /
|
|
74
|
-
* `clickMouse` / `hoverElement` / `unhoverElement` / `clickElement` —
|
|
75
|
-
* `waitUntil`), and provider packages
|
|
74
|
+
* `clickMouse` / `hoverElement` / `unhoverElement` / `clickElement` — plus
|
|
75
|
+
* `waitUntil`, `createNote` and `openSettingsTab`), and provider packages
|
|
76
76
|
* (chiefly `obsidian-dev-utils`) `Object.assign` their whole renderer-safe
|
|
77
77
|
* library on top via {@link registerLibResolver}. A serialized closure reaches
|
|
78
78
|
* every shared helper through `lib` — `lib.typeIntoEditor({ editor, text })`,
|
|
@@ -284,6 +284,36 @@ export interface Lib {
|
|
|
284
284
|
* @param params - The web-contents DIP coordinates to move to.
|
|
285
285
|
*/
|
|
286
286
|
moveMouse(this: void, params: MoveMouseParams): void;
|
|
287
|
+
/**
|
|
288
|
+
* Opens Obsidian's settings modal on a given tab, and does not return until
|
|
289
|
+
* that tab has actually rendered.
|
|
290
|
+
*
|
|
291
|
+
* **This exists because `app.setting.open()` on its own does not work from a
|
|
292
|
+
* test.** `app.setting.containerEl` is built at startup but is never in the
|
|
293
|
+
* document, and `open()` does not attach it — so the modal builds into a
|
|
294
|
+
* detached tree, `open()` returns without throwing, and a screenshot taken
|
|
295
|
+
* afterwards shows the untouched document. That is what made the settings tab
|
|
296
|
+
* look impossible to capture, and got recorded as such in two plugins.
|
|
297
|
+
*
|
|
298
|
+
* The fix is one step, and its **order is load-bearing**: the container is
|
|
299
|
+
* appended to `document.body` **before** `open()`. Attaching afterwards is too
|
|
300
|
+
* late — whatever the modal drew on open has already gone into the detached
|
|
301
|
+
* container, so it ends up on screen showing the wrong thing. That failure
|
|
302
|
+
* looks like success until the captured frame is examined, which is the trap
|
|
303
|
+
* this helper exists to remove.
|
|
304
|
+
*
|
|
305
|
+
* Re-attaching is idempotent, so a tab closed with `app.setting.close()` can
|
|
306
|
+
* simply be re-opened.
|
|
307
|
+
*
|
|
308
|
+
* @param params - The tab to open and how long to wait for it to render.
|
|
309
|
+
* @returns A {@link Promise} resolving to the names of the setting rows the
|
|
310
|
+
* tab rendered — both the proof it rendered and what a caller asserts on. A
|
|
311
|
+
* tab that legitimately renders no `.setting-item-name` rows (Hotkeys, say)
|
|
312
|
+
* resolves to an empty array.
|
|
313
|
+
* @throws Error if no tab carries {@link OpenSettingsTabParams.tabId}, or if
|
|
314
|
+
* the tab does not render within the timeout.
|
|
315
|
+
*/
|
|
316
|
+
openSettingsTab(this: void, params: OpenSettingsTabParams): Promise<string[]>;
|
|
287
317
|
/**
|
|
288
318
|
* Presses a single key (optionally with modifiers) using **trusted** Electron
|
|
289
319
|
* keyboard input, firing the full real key pipeline —
|
|
@@ -393,6 +423,29 @@ export interface MoveMouseParams {
|
|
|
393
423
|
*/
|
|
394
424
|
readonly y: number;
|
|
395
425
|
}
|
|
426
|
+
/**
|
|
427
|
+
* Parameters for {@link Lib.openSettingsTab}.
|
|
428
|
+
*/
|
|
429
|
+
export interface OpenSettingsTabParams {
|
|
430
|
+
/**
|
|
431
|
+
* The id of the settings tab to open — a plugin id for a plugin's own tab, or
|
|
432
|
+
* a core tab id (`'editor'`, `'hotkeys'`, …).
|
|
433
|
+
*
|
|
434
|
+
* Required, because opening the modal without naming a tab renders **nothing**
|
|
435
|
+
* on a harness-owned instance: the modal restores the last tab the profile
|
|
436
|
+
* used, and an isolated profile has never opened one, so `activeTab` stays
|
|
437
|
+
* `null` and no row is drawn. An unknown id is rejected immediately, listing
|
|
438
|
+
* the ids that do exist.
|
|
439
|
+
*/
|
|
440
|
+
readonly tabId: string;
|
|
441
|
+
/**
|
|
442
|
+
* The maximum time to wait for the modal to open and for the requested tab to
|
|
443
|
+
* render its content.
|
|
444
|
+
*
|
|
445
|
+
* @default `5000`
|
|
446
|
+
*/
|
|
447
|
+
readonly timeoutInMilliseconds?: number;
|
|
448
|
+
}
|
|
396
449
|
/**
|
|
397
450
|
* Parameters for {@link CommonArguments.pressKey}.
|
|
398
451
|
*/
|
package/dist/lib/cjs/index.cjs
CHANGED
|
@@ -45,6 +45,7 @@ __export(index_exports, {
|
|
|
45
45
|
getVersionMetadata: () => import_obsidian_metadata.getVersionMetadata,
|
|
46
46
|
isPng: () => import_capture_screenshot.isPng,
|
|
47
47
|
labelScreenshot: () => import_label_screenshot.labelScreenshot,
|
|
48
|
+
openObsidianSettingsTab: () => import_open_obsidian_settings_tab.openObsidianSettingsTab,
|
|
48
49
|
pollInObsidian: () => import_poll_in_obsidian.pollInObsidian,
|
|
49
50
|
readDemoVaultTree: () => import_demo_vault_tree.readDemoVaultTree,
|
|
50
51
|
readPngDimensions: () => import_capture_screenshot.readPngDimensions,
|
|
@@ -77,6 +78,7 @@ var import_label_screenshot = require("./label-screenshot.cjs");
|
|
|
77
78
|
var import_lib_registry = require("./lib-registry.cjs");
|
|
78
79
|
var import_obsidian_metadata = require("./obsidian-metadata.cjs");
|
|
79
80
|
var import_obsidian_version = require("./obsidian-version.cjs");
|
|
81
|
+
var import_open_obsidian_settings_tab = require("./open-obsidian-settings-tab.cjs");
|
|
80
82
|
var import_poll_in_obsidian = require("./poll-in-obsidian.cjs");
|
|
81
83
|
var import_renderer_failed_to_initialize_error = require("./renderer-failed-to-initialize-error.cjs");
|
|
82
84
|
var import_run_version_matrix = require("./run-version-matrix.cjs");
|
|
@@ -117,6 +119,7 @@ var import_version_matrix = require("./version-matrix.cjs");
|
|
|
117
119
|
getVersionMetadata,
|
|
118
120
|
isPng,
|
|
119
121
|
labelScreenshot,
|
|
122
|
+
openObsidianSettingsTab,
|
|
120
123
|
pollInObsidian,
|
|
121
124
|
readDemoVaultTree,
|
|
122
125
|
readPngDimensions,
|
|
@@ -130,4 +133,4 @@ var import_version_matrix = require("./version-matrix.cjs");
|
|
|
130
133
|
setVaultPathResolver,
|
|
131
134
|
unregisterVault
|
|
132
135
|
});
|
|
133
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
136
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2luZGV4LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogQ29udGFpbnMgdGhlIGVudHJ5IHBvaW50IGZvciB0aGUgaW50ZWdyYXRpb24gdGVzdGluZyBtb2R1bGUuXG4gKi9cblxuZXhwb3J0IHR5cGUge1xuICBBc2FyRmFsbGJhY2ssXG4gIEFzYXJGYWxsYmFja1RpZXIsXG4gIFJlc29sdmVBc2FyRmFsbGJhY2tQYXJhbXNcbn0gZnJvbSAnLi9hc2FyLWZhbGxiYWNrLWRldGVjdGlvbi5janMnO1xuZXhwb3J0IHsgcmVzb2x2ZUFzYXJGYWxsYmFjayB9IGZyb20gJy4vYXNhci1mYWxsYmFjay1kZXRlY3Rpb24uY2pzJztcbmV4cG9ydCB0eXBlIHsgQ2FwdHVyZU9ic2lkaWFuU2NyZWVuc2hvdE9wdGlvbnMgfSBmcm9tICcuL2NhcHR1cmUtb2JzaWRpYW4tc2NyZWVuc2hvdC5janMnO1xuZXhwb3J0IHsgY2FwdHVyZU9ic2lkaWFuU2NyZWVuc2hvdCB9IGZyb20gJy4vY2FwdHVyZS1vYnNpZGlhbi1zY3JlZW5zaG90LmNqcyc7XG5leHBvcnQgdHlwZSB7XG4gIENhcHR1cmVTY3JlZW5zaG90UGFyYW1zLFxuICBQbmdEaW1lbnNpb25zXG59IGZyb20gJy4vY2FwdHVyZS1zY3JlZW5zaG90LmNqcyc7XG5leHBvcnQge1xuICBidWlsZERldmljZU1ldHJpY3NPdmVycmlkZSxcbiAgZGVjb2RlQmFzZTY0UG5nLFxuICBpc1BuZyxcbiAgcmVhZFBuZ0RpbWVuc2lvbnNcbn0gZnJvbSAnLi9jYXB0dXJlLXNjcmVlbnNob3QuY2pzJztcbmV4cG9ydCB0eXBlIHtcbiAgQ2RwQ29ubmVjdGlvbixcbiAgQ29ubmVjdFRvQ2RwT3B0aW9uc1xufSBmcm9tICcuL2Nvbm5lY3QtdG8tY2RwLmNqcyc7XG5leHBvcnQgeyBjb25uZWN0VG9DZHAgfSBmcm9tICcuL2Nvbm5lY3QtdG8tY2RwLmNqcyc7XG5leHBvcnQgdHlwZSB7XG4gIENvbnRleHRBcmd1bWVudHMsXG4gIENvbnRleHRPZlxufSBmcm9tICcuL2NvbnRleHQtaWQuY2pzJztcbmV4cG9ydCB7IENvbnRleHRJZCB9IGZyb20gJy4vY29udGV4dC1pZC5janMnO1xuZXhwb3J0IHR5cGUge1xuICBUcmFuc3BvcnRPcHRpb25zUmVzb2x2ZXIsXG4gIFZhdWx0UGF0aFJlc29sdmVyXG59IGZyb20gJy4vY29udGV4dC1wcm92aWRlci5janMnO1xuZXhwb3J0IHtcbiAgc2V0VHJhbnNwb3J0T3B0aW9uc1Jlc29sdmVyLFxuICBzZXRWYXVsdFBhdGhSZXNvbHZlclxufSBmcm9tICcuL2NvbnRleHQtcHJvdmlkZXIuY2pzJztcbmV4cG9ydCB0eXBlIHtcbiAgQnVpbGREZW1vVmF1bHRQb3B1bGF0ZVBhcmFtcyxcbiAgSW5qZWN0UGx1Z2luUGFyYW1zXG59IGZyb20gJy4vZGVtby12YXVsdC1wb3B1bGF0ZS5janMnO1xuZXhwb3J0IHsgYnVpbGREZW1vVmF1bHRQb3B1bGF0ZSB9IGZyb20gJy4vZGVtby12YXVsdC1wb3B1bGF0ZS5janMnO1xuZXhwb3J0IHR5cGUgeyBSZWFkRGVtb1ZhdWx0VHJlZVBhcmFtcyB9IGZyb20gJy4vZGVtby12YXVsdC10cmVlLmNqcyc7XG5leHBvcnQgeyByZWFkRGVtb1ZhdWx0VHJlZSB9IGZyb20gJy4vZGVtby12YXVsdC10cmVlLmNqcyc7XG5leHBvcnQgeyBEZXNrdG9wT25seVBsdWdpblNraXBFcnJvciB9IGZyb20gJy4vZGVza3RvcC1vbmx5LXBsdWdpbi1za2lwLWVycm9yLmNqcyc7XG5leHBvcnQgdHlwZSB7XG4gIEVsZWN0cm9uQ29tcGF0aWJpbGl0eSxcbiAgRWxlY3Ryb25Db21wYXRpYmlsaXR5VGllcixcbiAgUmVzb2x2ZUVsZWN0cm9uQ29tcGF0aWJpbGl0eVBhcmFtc1xufSBmcm9tICcuL2VsZWN0cm9uLWNvbXBhdGliaWxpdHkuY2pzJztcbmV4cG9ydCB7IHJlc29sdmVFbGVjdHJvbkNvbXBhdGliaWxpdHkgfSBmcm9tICcuL2VsZWN0cm9uLWNvbXBhdGliaWxpdHkuY2pzJztcbmV4cG9ydCB0eXBlIHtcbiAgQ2xpY2tFbGVtZW50UGFyYW1zLFxuICBDbGlja01vdXNlUGFyYW1zLFxuICBDb21tb25Bcmd1bWVudHMsXG4gIENyZWF0ZU5vdGVQYXJhbXMsXG4gIEV2YWxJbk9ic2lkaWFuUGFyYW1zLFxuICBHZW5lcmljT2JqZWN0LFxuICBIb3ZlckVsZW1lbnRQYXJhbXMsXG4gIExpYixcbiAgTW91c2VCdXR0b24sXG4gIE1vdmVNb3VzZVBhcmFtcyxcbiAgT3BlblNldHRpbmdzVGFiUGFyYW1zLFxuICBQcmVzc0tleVBhcmFtcyxcbiAgVHlwZUludG9FZGl0b3JQYXJhbXMsXG4gIFVuaG92ZXJFbGVtZW50UGFyYW1zLFxuICBXYWl0VW50aWxQYXJhbXNcbn0gZnJvbSAnLi9ldmFsLWluLW9ic2lkaWFuLmNqcyc7XG5leHBvcnQgeyBldmFsSW5PYnNpZGlhbiB9IGZyb20gJy4vZXZhbC1pbi1vYnNpZGlhbi5janMnO1xuZXhwb3J0IHR5cGUge1xuICBDb21wdXRlRml0VG9DYW52YXNQYXJhbXMsXG4gIEZpdFNjcmVlbnNob3RUb0NhbnZhc09wdGlvbnMsXG4gIEZpdFRvQ2FudmFzR2VvbWV0cnlcbn0gZnJvbSAnLi9maXQtc2NyZWVuc2hvdC5janMnO1xuZXhwb3J0IHtcbiAgY29tcHV0ZUZpdFRvQ2FudmFzLFxuICBmaXRTY3JlZW5zaG90VG9DYW52YXNcbn0gZnJvbSAnLi9maXQtc2NyZWVuc2hvdC5janMnO1xuZXhwb3J0IHR5cGUgeyBJbmNvbXBhdGlibGVJbnN0YWxsZXJWZXJzaW9uRXJyb3JDb25zdHJ1Y3RvclBhcmFtcyB9IGZyb20gJy4vaW5jb21wYXRpYmxlLWluc3RhbGxlci12ZXJzaW9uLWVycm9yLmNqcyc7XG5leHBvcnQgeyBJbmNvbXBhdGlibGVJbnN0YWxsZXJWZXJzaW9uRXJyb3IgfSBmcm9tICcuL2luY29tcGF0aWJsZS1pbnN0YWxsZXItdmVyc2lvbi1lcnJvci5janMnO1xuZXhwb3J0IHR5cGUge1xuICBJbnN0YWxsZXJDb21wYXRpYmlsaXR5LFxuICBJbnN0YWxsZXJDb21wYXRpYmlsaXR5VGllcixcbiAgUmVzb2x2ZUluc3RhbGxlckNvbXBhdGliaWxpdHlQYXJhbXNcbn0gZnJvbSAnLi9pbnN0YWxsZXItY29tcGF0aWJpbGl0eS5janMnO1xuZXhwb3J0IHsgcmVzb2x2ZUluc3RhbGxlckNvbXBhdGliaWxpdHkgfSBmcm9tICcuL2luc3RhbGxlci1jb21wYXRpYmlsaXR5LmNqcyc7XG5leHBvcnQgdHlwZSB7XG4gIENvbXB1dGVMYWJlbEJhbmRQYXJhbXMsXG4gIExhYmVsQmFuZEdlb21ldHJ5LFxuICBMYWJlbFNjcmVlbnNob3RPcHRpb25zXG59IGZyb20gJy4vbGFiZWwtc2NyZWVuc2hvdC5janMnO1xuZXhwb3J0IHtcbiAgYnVpbGRMYWJlbFN2ZyxcbiAgY29tcHV0ZUxhYmVsQmFuZCxcbiAgZXNjYXBlU3ZnVGV4dCxcbiAgbGFiZWxTY3JlZW5zaG90XG59IGZyb20gJy4vbGFiZWwtc2NyZWVuc2hvdC5janMnO1xuZXhwb3J0IHR5cGUgeyBMaWJSZXNvbHZlciB9IGZyb20gJy4vbGliLXJlZ2lzdHJ5LmNqcyc7XG5leHBvcnQgeyByZWdpc3RlckxpYlJlc29sdmVyIH0gZnJvbSAnLi9saWItcmVnaXN0cnkuY2pzJztcbmV4cG9ydCB0eXBlIHtcbiAgT2JzaWRpYW5SdW50aW1lVmVyc2lvbnMsXG4gIE9ic2lkaWFuVmVyc2lvbkNoYW5nZWxvZ1VybHMsXG4gIE9ic2lkaWFuVmVyc2lvbkRvd25sb2FkcyxcbiAgT2JzaWRpYW5WZXJzaW9uTWV0YWRhdGFcbn0gZnJvbSAnLi9vYnNpZGlhbi1tZXRhZGF0YS5janMnO1xuZXhwb3J0IHsgZ2V0VmVyc2lvbk1ldGFkYXRhIH0gZnJvbSAnLi9vYnNpZGlhbi1tZXRhZGF0YS5janMnO1xuZXhwb3J0IHtcbiAgQ0FUQUxZU1RfTEFURVNULFxuICBQVUJMSUNfTEFURVNUXG59IGZyb20gJy4vb2JzaWRpYW4tdmVyc2lvbi5janMnO1xuZXhwb3J0IHR5cGUgeyBPcGVuT2JzaWRpYW5TZXR0aW5nc1RhYk9wdGlvbnMgfSBmcm9tICcuL29wZW4tb2JzaWRpYW4tc2V0dGluZ3MtdGFiLmNqcyc7XG5leHBvcnQgeyBvcGVuT2JzaWRpYW5TZXR0aW5nc1RhYiB9IGZyb20gJy4vb3Blbi1vYnNpZGlhbi1zZXR0aW5ncy10YWIuY2pzJztcbmV4cG9ydCB0eXBlIHsgUG9sbEluT2JzaWRpYW5QYXJhbXMgfSBmcm9tICcuL3BvbGwtaW4tb2JzaWRpYW4uY2pzJztcbmV4cG9ydCB7IHBvbGxJbk9ic2lkaWFuIH0gZnJvbSAnLi9wb2xsLWluLW9ic2lkaWFuLmNqcyc7XG5leHBvcnQgeyBSZW5kZXJlckZhaWxlZFRvSW5pdGlhbGl6ZUVycm9yIH0gZnJvbSAnLi9yZW5kZXJlci1mYWlsZWQtdG8taW5pdGlhbGl6ZS1lcnJvci5janMnO1xuZXhwb3J0IHR5cGUgeyBSdW5PYnNpZGlhblZlcnNpb25NYXRyaXhQYXJhbXMgfSBmcm9tICcuL3J1bi12ZXJzaW9uLW1hdHJpeC5janMnO1xuZXhwb3J0IHsgcnVuT2JzaWRpYW5WZXJzaW9uTWF0cml4IH0gZnJvbSAnLi9ydW4tdmVyc2lvbi1tYXRyaXguY2pzJztcbmV4cG9ydCB0eXBlIHsgU2lsZW50QXNhckZhbGxiYWNrRXJyb3JDb25zdHJ1Y3RvclBhcmFtcyB9IGZyb20gJy4vc2lsZW50LWFzYXItZmFsbGJhY2stZXJyb3IuY2pzJztcbmV4cG9ydCB7IFNpbGVudEFzYXJGYWxsYmFja0Vycm9yIH0gZnJvbSAnLi9zaWxlbnQtYXNhci1mYWxsYmFjay1lcnJvci5janMnO1xuZXhwb3J0IHR5cGUge1xuICBQb3B1bGF0ZUZpbGVDb250ZW50LFxuICBQb3B1bGF0ZUZpbGVzUGFyYW1zXG59IGZyb20gJy4vdGVtcG9yYXJ5LXZhdWx0LmNqcyc7XG5leHBvcnQgeyBUZW1wb3JhcnlWYXVsdCB9IGZyb20gJy4vdGVtcG9yYXJ5LXZhdWx0LmNqcyc7XG5leHBvcnQgdHlwZSB7XG4gIEFwcGl1bVNlc3Npb25JbmZvLFxuICBBcHBpdW1UcmFuc3BvcnRDb25maWdcbn0gZnJvbSAnLi90cmFuc3BvcnQtYXBwaXVtLmNqcyc7XG5leHBvcnQgeyBBcHBpdW1UcmFuc3BvcnQgfSBmcm9tICcuL3RyYW5zcG9ydC1hcHBpdW0uY2pzJztcbmV4cG9ydCB0eXBlIHtcbiAgRGVza3RvcENkcFRyYW5zcG9ydENvbmZpZyxcbiAgT3duZWRJbnN0YW5jZUFzYXIsXG4gIE93bmVkSW5zdGFuY2VDb25maWcsXG4gIE93bmVkSW5zdGFuY2VFbmRwb2ludFxufSBmcm9tICcuL3RyYW5zcG9ydC1kZXNrdG9wLWNkcC5janMnO1xuZXhwb3J0IHsgRGVza3RvcENkcFRyYW5zcG9ydCB9IGZyb20gJy4vdHJhbnNwb3J0LWRlc2t0b3AtY2RwLmNqcyc7XG5leHBvcnQgeyBjcmVhdGVUcmFuc3BvcnRGcm9tT3B0aW9ucyB9IGZyb20gJy4vdHJhbnNwb3J0LWZhY3RvcnkuY2pzJztcbmV4cG9ydCB0eXBlIHtcbiAgT2JzaWRpYW5BbmRyb2lkQXBwaXVtVHJhbnNwb3J0T3B0aW9ucyxcbiAgT2JzaWRpYW5DZHBUcmFuc3BvcnRPcHRpb25zLFxuICBPYnNpZGlhblRyYW5zcG9ydE9wdGlvbnNcbn0gZnJvbSAnLi90cmFuc3BvcnQtb3B0aW9ucy5janMnO1xuZXhwb3J0IHsgY2hlY2tJc01vYmlsZVRyYW5zcG9ydCB9IGZyb20gJy4vdHJhbnNwb3J0LW9wdGlvbnMuY2pzJztcbmV4cG9ydCB0eXBlIHtcbiAgQ29uc29sZUNhcHR1cmVIYW5kbGUsXG4gIE9ic2lkaWFuVHJhbnNwb3J0LFxuICBUcmFuc3BvcnRFdmFsT3B0aW9uc1xufSBmcm9tICcuL3RyYW5zcG9ydC5janMnO1xuZXhwb3J0IHtcbiAgcmVnaXN0ZXJWYXVsdCxcbiAgdW5yZWdpc3RlclZhdWx0XG59IGZyb20gJy4vdmF1bHQtcmVnaXN0cnkuY2pzJztcbmV4cG9ydCB0eXBlIHsgT2JzaWRpYW5WZXJzaW9uTWF0cml4RW50cnkgfSBmcm9tICcuL3ZlcnNpb24tbWF0cml4LmNqcyc7XG5leHBvcnQgeyBERUZBVUxUX09CU0lESUFOX1ZFUlNJT05fU1BFQ1MgfSBmcm9tICcuL3ZlcnNpb24tbWF0cml4LmNqcyc7XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBV0EscUNBQW9DO0FBRXBDLHlDQUEwQztBQUsxQyxnQ0FLTztBQUtQLDRCQUE2QjtBQUs3Qix3QkFBMEI7QUFLMUIsOEJBR087QUFLUCxpQ0FBdUM7QUFFdkMsNkJBQWtDO0FBQ2xDLDRDQUEyQztBQU0zQyxvQ0FBNkM7QUFrQjdDLDhCQUErQjtBQU0vQiw0QkFHTztBQUVQLGtEQUFrRDtBQU1sRCxxQ0FBOEM7QUFNOUMsOEJBS087QUFFUCwwQkFBb0M7QUFPcEMsK0JBQW1DO0FBQ25DLDhCQUdPO0FBRVAsd0NBQXdDO0FBRXhDLDhCQUErQjtBQUMvQixpREFBZ0Q7QUFFaEQsZ0NBQXlDO0FBRXpDLHdDQUF3QztBQUt4Qyw2QkFBK0I7QUFLL0IsOEJBQWdDO0FBT2hDLG1DQUFvQztBQUNwQywrQkFBMkM7QUFNM0MsK0JBQXVDO0FBTXZDLDRCQUdPO0FBRVAsNEJBQStDOyIsCiAgIm5hbWVzIjogW10KfQo=
|
package/dist/lib/cjs/index.d.cts
CHANGED
|
@@ -11,6 +11,7 @@ export type { CaptureScreenshotParams, PngDimensions } from './capture-screensho
|
|
|
11
11
|
export { buildDeviceMetricsOverride, decodeBase64Png, isPng, readPngDimensions } from './capture-screenshot.cjs';
|
|
12
12
|
export type { CdpConnection, ConnectToCdpOptions } from './connect-to-cdp.cjs';
|
|
13
13
|
export { connectToCdp } from './connect-to-cdp.cjs';
|
|
14
|
+
export type { ContextArguments, ContextOf } from './context-id.cjs';
|
|
14
15
|
export { ContextId } from './context-id.cjs';
|
|
15
16
|
export type { TransportOptionsResolver, VaultPathResolver } from './context-provider.cjs';
|
|
16
17
|
export { setTransportOptionsResolver, setVaultPathResolver } from './context-provider.cjs';
|
|
@@ -21,7 +22,7 @@ export { readDemoVaultTree } from './demo-vault-tree.cjs';
|
|
|
21
22
|
export { DesktopOnlyPluginSkipError } from './desktop-only-plugin-skip-error.cjs';
|
|
22
23
|
export type { ElectronCompatibility, ElectronCompatibilityTier, ResolveElectronCompatibilityParams } from './electron-compatibility.cjs';
|
|
23
24
|
export { resolveElectronCompatibility } from './electron-compatibility.cjs';
|
|
24
|
-
export type { EvalInObsidianParams, HoverElementParams, Lib, MoveMouseParams, PressKeyParams, TypeIntoEditorParams, UnhoverElementParams, WaitUntilParams } from './eval-in-obsidian.cjs';
|
|
25
|
+
export type { ClickElementParams, ClickMouseParams, CommonArguments, CreateNoteParams, EvalInObsidianParams, GenericObject, HoverElementParams, Lib, MouseButton, MoveMouseParams, OpenSettingsTabParams, PressKeyParams, TypeIntoEditorParams, UnhoverElementParams, WaitUntilParams } from './eval-in-obsidian.cjs';
|
|
25
26
|
export { evalInObsidian } from './eval-in-obsidian.cjs';
|
|
26
27
|
export type { ComputeFitToCanvasParams, FitScreenshotToCanvasOptions, FitToCanvasGeometry } from './fit-screenshot.cjs';
|
|
27
28
|
export { computeFitToCanvas, fitScreenshotToCanvas } from './fit-screenshot.cjs';
|
|
@@ -33,9 +34,11 @@ export type { ComputeLabelBandParams, LabelBandGeometry, LabelScreenshotOptions
|
|
|
33
34
|
export { buildLabelSvg, computeLabelBand, escapeSvgText, labelScreenshot } from './label-screenshot.cjs';
|
|
34
35
|
export type { LibResolver } from './lib-registry.cjs';
|
|
35
36
|
export { registerLibResolver } from './lib-registry.cjs';
|
|
36
|
-
export type { ObsidianRuntimeVersions, ObsidianVersionDownloads, ObsidianVersionMetadata } from './obsidian-metadata.cjs';
|
|
37
|
+
export type { ObsidianRuntimeVersions, ObsidianVersionChangelogUrls, ObsidianVersionDownloads, ObsidianVersionMetadata } from './obsidian-metadata.cjs';
|
|
37
38
|
export { getVersionMetadata } from './obsidian-metadata.cjs';
|
|
38
39
|
export { CATALYST_LATEST, PUBLIC_LATEST } from './obsidian-version.cjs';
|
|
40
|
+
export type { OpenObsidianSettingsTabOptions } from './open-obsidian-settings-tab.cjs';
|
|
41
|
+
export { openObsidianSettingsTab } from './open-obsidian-settings-tab.cjs';
|
|
39
42
|
export type { PollInObsidianParams } from './poll-in-obsidian.cjs';
|
|
40
43
|
export { pollInObsidian } from './poll-in-obsidian.cjs';
|
|
41
44
|
export { RendererFailedToInitializeError } from './renderer-failed-to-initialize-error.cjs';
|
|
@@ -47,12 +50,12 @@ export type { PopulateFileContent, PopulateFilesParams } from './temporary-vault
|
|
|
47
50
|
export { TemporaryVault } from './temporary-vault.cjs';
|
|
48
51
|
export type { AppiumSessionInfo, AppiumTransportConfig } from './transport-appium.cjs';
|
|
49
52
|
export { AppiumTransport } from './transport-appium.cjs';
|
|
50
|
-
export type { DesktopCdpTransportConfig, OwnedInstanceAsar, OwnedInstanceConfig } from './transport-desktop-cdp.cjs';
|
|
53
|
+
export type { DesktopCdpTransportConfig, OwnedInstanceAsar, OwnedInstanceConfig, OwnedInstanceEndpoint } from './transport-desktop-cdp.cjs';
|
|
51
54
|
export { DesktopCdpTransport } from './transport-desktop-cdp.cjs';
|
|
52
55
|
export { createTransportFromOptions } from './transport-factory.cjs';
|
|
53
56
|
export type { ObsidianAndroidAppiumTransportOptions, ObsidianCdpTransportOptions, ObsidianTransportOptions } from './transport-options.cjs';
|
|
54
57
|
export { checkIsMobileTransport } from './transport-options.cjs';
|
|
55
|
-
export type { ObsidianTransport, TransportEvalOptions } from './transport.cjs';
|
|
58
|
+
export type { ConsoleCaptureHandle, ObsidianTransport, TransportEvalOptions } from './transport.cjs';
|
|
56
59
|
export { registerVault, unregisterVault } from './vault-registry.cjs';
|
|
57
60
|
export type { ObsidianVersionMatrixEntry } from './version-matrix.cjs';
|
|
58
61
|
export { DEFAULT_OBSIDIAN_VERSION_SPECS } from './version-matrix.cjs';
|
package/dist/lib/cjs/library.cjs
CHANGED
|
@@ -21,7 +21,7 @@ __export(library_exports, {
|
|
|
21
21
|
LIBRARY_VERSION: () => LIBRARY_VERSION
|
|
22
22
|
});
|
|
23
23
|
module.exports = __toCommonJS(library_exports);
|
|
24
|
-
const LIBRARY_VERSION = false ? "dev" : "
|
|
24
|
+
const LIBRARY_VERSION = false ? "dev" : "11.0.0";
|
|
25
25
|
// Annotate the CommonJS export names for ESM import in node:
|
|
26
26
|
0 && (module.exports = {
|
|
27
27
|
LIBRARY_VERSION
|