obsidian-integration-testing 12.3.0 → 14.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/dist/lib/cjs/adb.cjs +1 -1
- package/dist/lib/cjs/app-config.cjs +1 -1
- package/dist/lib/cjs/app-config.d.cts +24 -24
- package/dist/lib/cjs/appium-dependencies.cjs +1 -1
- package/dist/lib/cjs/appium-session-config.cjs +1 -1
- package/dist/lib/cjs/connect-to-cdp.cjs +1 -1
- package/dist/lib/cjs/connect-to-cdp.d.cts +4 -4
- package/dist/lib/cjs/demo-vault-bootstrap.cjs +1 -1
- package/dist/lib/cjs/demo-vault-bootstrap.d.cts +10 -2
- package/dist/lib/cjs/desktop-only-plugin-skip-error.cjs +1 -1
- package/dist/lib/cjs/device-readiness.cjs +1 -1
- package/dist/lib/cjs/device-settings.cjs +1 -1
- package/dist/lib/cjs/emulator-reclaim.cjs +1 -1
- package/dist/lib/cjs/emulator-reclaim.d.cts +17 -17
- package/dist/lib/cjs/enable-plugin.cjs +1 -1
- package/dist/lib/cjs/eval-in-obsidian.cjs +1 -1
- package/dist/lib/cjs/eval-in-obsidian.d.cts +17 -12
- package/dist/lib/cjs/fit-screenshot.cjs +1 -1
- package/dist/lib/cjs/generate-function-call.cjs +1 -1
- package/dist/lib/cjs/generate-function-call.d.cts +1 -1
- package/dist/lib/cjs/global-setup-core.cjs +1 -1
- package/dist/lib/cjs/global-setup-core.d.cts +4 -4
- package/dist/lib/cjs/index.cjs +1 -1
- package/dist/lib/cjs/index.d.cts +4 -4
- package/dist/lib/cjs/integration-setup-failed-error.cjs +1 -1
- package/dist/lib/cjs/jest/global-setup.cjs +1 -1
- package/dist/lib/cjs/jest/global-setup.d.cts +6 -6
- package/dist/lib/cjs/library.cjs +1 -1
- package/dist/lib/cjs/mobile-input.cjs +1 -1
- package/dist/lib/cjs/namespace-bootstrap.cjs +13 -3
- package/dist/lib/cjs/obsidian-instance.cjs +1 -1
- package/dist/lib/cjs/obsidian-instance.d.cts +3 -3
- package/dist/lib/cjs/obsidian-version-switch.cjs +1 -1
- package/dist/lib/cjs/open-obsidian-settings-tab.cjs +3 -3
- package/dist/lib/cjs/open-obsidian-settings-tab.d.cts +4 -4
- package/dist/lib/cjs/owned-vault-seed.cjs +3 -3
- package/dist/lib/cjs/parent-liveness.cjs +1 -1
- package/dist/lib/cjs/parent-liveness.d.cts +1 -1
- package/dist/lib/cjs/poll-in-obsidian.cjs +1 -1
- package/dist/lib/cjs/poll-in-obsidian.d.cts +3 -3
- package/dist/lib/cjs/poll-until.cjs +1 -1
- package/dist/lib/cjs/poll-until.d.cts +4 -4
- package/dist/lib/cjs/process-capture.cjs +1 -1
- package/dist/lib/cjs/process-capture.d.cts +2 -2
- package/dist/lib/cjs/process-exit-message.cjs +1 -1
- package/dist/lib/cjs/process-exit-message.d.cts +2 -2
- package/dist/lib/cjs/run-version-matrix.cjs +3 -3
- package/dist/lib/cjs/setup-lock.cjs +1 -1
- package/dist/lib/cjs/setup-lock.d.cts +1 -1
- package/dist/lib/cjs/sharp-loader.cjs +1 -1
- package/dist/lib/cjs/sharp-loader.d.cts +6 -6
- package/dist/lib/cjs/temporary-vault.cjs +3 -2
- package/dist/lib/cjs/temporary-vault.d.cts +4 -4
- package/dist/lib/cjs/transport-appium.cjs +3 -1
- package/dist/lib/cjs/transport-desktop-cdp.cjs +7 -5
- package/dist/lib/cjs/transport-factory.cjs +2 -2
- package/dist/lib/cjs/transport-options.cjs +1 -1
- package/dist/lib/cjs/transport.cjs +1 -1
- package/dist/lib/cjs/transport.d.cts +10 -10
- package/dist/lib/cjs/vault-teardown-verdict.cjs +1 -1
- package/dist/lib/cjs/vitest/global-setup.cjs +1 -1
- package/dist/lib/cjs/vitest/global-setup.d.cts +6 -6
- package/dist/lib/cjs/webview-cdp.cjs +1 -1
- package/dist/lib/esm/adb.mjs +1 -1
- package/dist/lib/esm/app-config.d.mts +24 -24
- package/dist/lib/esm/app-config.mjs +1 -1
- package/dist/lib/esm/appium-dependencies.mjs +1 -1
- package/dist/lib/esm/appium-session-config.mjs +1 -1
- package/dist/lib/esm/connect-to-cdp.d.mts +4 -4
- package/dist/lib/esm/connect-to-cdp.mjs +1 -1
- package/dist/lib/esm/demo-vault-bootstrap.d.mts +10 -2
- package/dist/lib/esm/demo-vault-bootstrap.mjs +1 -1
- package/dist/lib/esm/desktop-only-plugin-skip-error.mjs +1 -1
- package/dist/lib/esm/device-readiness.mjs +1 -1
- package/dist/lib/esm/device-settings.mjs +1 -1
- package/dist/lib/esm/emulator-reclaim.d.mts +17 -17
- package/dist/lib/esm/emulator-reclaim.mjs +1 -1
- package/dist/lib/esm/enable-plugin.mjs +1 -1
- package/dist/lib/esm/eval-in-obsidian.d.mts +17 -12
- package/dist/lib/esm/eval-in-obsidian.mjs +1 -1
- package/dist/lib/esm/fit-screenshot.mjs +1 -1
- package/dist/lib/esm/generate-function-call.d.mts +1 -1
- package/dist/lib/esm/generate-function-call.mjs +1 -1
- package/dist/lib/esm/global-setup-core.d.mts +4 -4
- package/dist/lib/esm/global-setup-core.mjs +1 -1
- package/dist/lib/esm/index.d.mts +4 -4
- package/dist/lib/esm/index.mjs +1 -1
- package/dist/lib/esm/integration-setup-failed-error.mjs +1 -1
- package/dist/lib/esm/jest/global-setup.d.mts +6 -6
- package/dist/lib/esm/jest/global-setup.mjs +1 -1
- package/dist/lib/esm/library.mjs +1 -1
- package/dist/lib/esm/mobile-input.mjs +1 -1
- package/dist/lib/esm/namespace-bootstrap.mjs +13 -3
- package/dist/lib/esm/obsidian-instance.d.mts +3 -3
- package/dist/lib/esm/obsidian-instance.mjs +1 -1
- package/dist/lib/esm/obsidian-version-switch.mjs +1 -1
- package/dist/lib/esm/open-obsidian-settings-tab.d.mts +4 -4
- package/dist/lib/esm/open-obsidian-settings-tab.mjs +3 -3
- package/dist/lib/esm/owned-vault-seed.mjs +3 -3
- package/dist/lib/esm/parent-liveness.d.mts +1 -1
- package/dist/lib/esm/parent-liveness.mjs +1 -1
- package/dist/lib/esm/poll-in-obsidian.d.mts +3 -3
- package/dist/lib/esm/poll-in-obsidian.mjs +1 -1
- package/dist/lib/esm/poll-until.d.mts +4 -4
- package/dist/lib/esm/poll-until.mjs +1 -1
- package/dist/lib/esm/process-capture.d.mts +2 -2
- package/dist/lib/esm/process-capture.mjs +1 -1
- package/dist/lib/esm/process-exit-message.d.mts +2 -2
- package/dist/lib/esm/process-exit-message.mjs +1 -1
- package/dist/lib/esm/run-version-matrix.mjs +3 -3
- package/dist/lib/esm/setup-lock.d.mts +1 -1
- package/dist/lib/esm/setup-lock.mjs +1 -1
- package/dist/lib/esm/sharp-loader.d.mts +6 -6
- package/dist/lib/esm/sharp-loader.mjs +1 -1
- package/dist/lib/esm/temporary-vault.d.mts +4 -4
- package/dist/lib/esm/temporary-vault.mjs +3 -2
- package/dist/lib/esm/transport-appium.mjs +3 -1
- package/dist/lib/esm/transport-desktop-cdp.mjs +7 -5
- package/dist/lib/esm/transport-factory.mjs +2 -2
- package/dist/lib/esm/transport-options.mjs +1 -1
- package/dist/lib/esm/transport.d.mts +10 -10
- package/dist/lib/esm/vault-teardown-verdict.mjs +1 -1
- package/dist/lib/esm/vitest/global-setup.d.mts +6 -6
- package/dist/lib/esm/vitest/global-setup.mjs +1 -1
- package/dist/lib/esm/webview-cdp.mjs +1 -1
- package/package.json +1 -7
|
@@ -36,4 +36,4 @@ function resolveOwnedConfigDirectory(options) {
|
|
|
36
36
|
checkIsMobileTransport,
|
|
37
37
|
resolveOwnedConfigDirectory
|
|
38
38
|
});
|
|
39
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3RyYW5zcG9ydC1vcHRpb25zLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogRGlzY3JpbWluYXRlZCB1bmlvbiB0eXBlcyBmb3IgY29uZmlndXJpbmcgdGhlIE9ic2lkaWFuIHRyYW5zcG9ydFxuICogdmlhIHZpdGVzdCBgZW52aXJvbm1lbnRPcHRpb25zYC5cbiAqL1xuXG4vKipcbiAqIFRyYW5zcG9ydCBvcHRpb25zIGZvciBBbmRyb2lkIHRlc3RpbmcgdmlhIEFwcGl1bSBXZWJWaWV3IGluamVjdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPYnNpZGlhbkFuZHJvaWRBcHBpdW1UcmFuc3BvcnRPcHRpb25zIHtcbiAgLyoqXG4gICAqIEFwcCBwYWNrYWdlIChBbmRyb2lkKSBvciBidW5kbGUgSUQgKGlPUykuXG4gICAqIERlZmF1bHRzIHRvIGAnbWQub2JzaWRpYW4nYFxuICAgKi9cbiAgcmVhZG9ubHkgYXBwSWQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzIGZvciB0aGUgYXV0by1zdGFydGVkIEFwcGl1bSBzZXJ2ZXIgdG8gYmVjb21lIHJlYWR5XG4gICAqIChpdHMgYC9zdGF0dXNgIGVuZHBvaW50IHRvIHJlc3BvbmQpLlxuICAgKlxuICAgKiBPbmx5IGFwcGxpZXMgd2hlbiB0aGUgaGFybmVzcyBhdXRvLXN0YXJ0cyB0aGUgQXBwaXVtIHNlcnZlclxuICAgKiAoe0BsaW5rIHNob3VsZEF1dG9TdGFydEFwcGl1bX0pOyBpZ25vcmVkIHdoZW4gYXR0YWNoaW5nIHRvIGFuXG4gICAqIGFscmVhZHktcnVubmluZyBzZXJ2ZXIuIE9uIGEgY29sZCBtYWNoaW5lIHRoZSBgbnB4IGFwcGl1bWAgc2VydmVyIGNhbiB0YWtlXG4gICAqIGEgd2hpbGUgdG8gZmluaXNoIGJvb3RpbmcsIHNvIHJhaXNlIHRoaXMgaWYgc3RhcnR1cCB0aW1lcyBvdXQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGAxODAwMDBgXG4gICAqL1xuICByZWFkb25seSBhcHBpdW1TdGFydFRpbWVvdXRJbk1pbGxpc2Vjb25kcz86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIEFwcGl1bSBzZXJ2ZXIgVVJMIChlLmcuIGAnaHR0cDovL2xvY2FsaG9zdDo0NzIzJ2ApLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBwaXVtVXJsOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzIGZvciBPYnNpZGlhbiBNb2JpbGUgdG8gZ2V0IGFzIGZhciBhcyBgZ2xvYmFsVGhpcy5hcHBgXG4gICAqIGV4aXN0aW5nIGFmdGVyIHRoZSB2YXVsdCBpcyAocmUpb3BlbmVkLlxuICAgKlxuICAgKiBUaGUgZmlyc3Qgb2YgdGhlIHR3byBidWRnZXRzIHRoZSB0cmFuc3BvcnQgc3BlbmRzIGFmdGVyIGBsb2NhdGlvbi5yZWxvYWQoKWAuXG4gICAqIEl0IGNvdmVycyB0aGUgYXBwJ3Mgb3duIGNvbGQgc3RhcnQgXHUyMDE0IHRoZSBXZWJWaWV3IHJlbG9hZGluZyBhbmQgT2JzaWRpYW4nc1xuICAgKiBidW5kbGUgY29taW5nIHVwIFx1MjAxNCB3aGljaCBvbiBhIGNvbGQgb3IgY29udGVuZGVkIGd1ZXN0IGNhbiB0YWtlIG1pbnV0ZXMsIGFuZFxuICAgKiBpcyBub3Qgd29yayB7QGxpbmsgbGF5b3V0UmVhZHlUaW1lb3V0SW5NaWxsaXNlY29uZHN9IHNob3VsZCBiZSBzaXplZCBmb3IuXG4gICAqIE9ubHkgb25jZSBgZ2xvYmFsVGhpcy5hcHBgIGFwcGVhcnMgZG9lcyB0aGF0IGZhciB0aWdodGVyIGNsb2NrIHN0YXJ0LlxuICAgKlxuICAgKiBTcGxpdHRpbmcgdGhlIHR3byBpcyB3aGF0IHN0b3BzIGEgZmlyc3QgcnVuIGFmdGVyIGEgbWFjaGluZSByZXN0YXJ0IGZyb21cbiAgICogZmFpbGluZyBieSBkZXNpZ246IHRoZSBvbGQgc2luZ2xlIDkwcyB3YWxsIGNsb2NrIHN0YXJ0ZWQgYXQgdGhlIHJlbG9hZCwgc28gYVxuICAgKiBjb2xkIGFwcCBzdGFydCBzcGVudCBpdCBiZWZvcmUgT2JzaWRpYW4gaGFkIGJlZ3VuIGxheWluZyBhbnl0aGluZyBvdXQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGAxODAwMDBgXG4gICAqL1xuICByZWFkb25seSBhcHBTdGFydFRpbWVvdXRJbk1pbGxpc2Vjb25kcz86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIEFuZHJvaWQgQVZEIChBbmRyb2lkIFZpcnR1YWwgRGV2aWNlKSBuYW1lLlxuICAgKlxuICAgKiBUaGUgdHJhbnNwb3J0IGZhY3RvcnkgbGF1bmNoZXMgYGVtdWxhdG9yIC1hdmQgPGF2ZE5hbWU+YCBhcyBhIGJhY2tncm91bmRcbiAgICogcHJvY2VzcyBhbmQgcG9sbHMgdW50aWwgdGhlIGRldmljZSBhcHBlYXJzLiBUaGUgZW11bGF0b3IgaXMga2lsbGVkXG4gICAqIG9uIHRyYW5zcG9ydCBkaXNwb3NhbC5cbiAgICpcbiAgICogUnVuIGBlbXVsYXRvciAtbGlzdC1hdmRzYCB0byBzZWUgYXZhaWxhYmxlIEFWRCBuYW1lcy5cbiAgICovXG4gIHJlYWRvbmx5IGF2ZE5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGRldmljZSBVRElEIHRvIHJldXNlIChlLmcuIGAnZW11bGF0b3ItNTU1NCdgKS5cbiAgICpcbiAgICogUG9wdWxhdGVkIGF1dG9tYXRpY2FsbHkgYnkgdGhlIGdsb2JhbCBzZXR1cCBhZnRlciB0aGUgQXBwaXVtIHNlc3Npb24gaXNcbiAgICogZXN0YWJsaXNoZWQuIFdoZW4gcHJlc2VudCBhbG9uZ3NpZGUge0BsaW5rIHNlc3Npb25JZH0sIHRoZSB0cmFuc3BvcnRcbiAgICogZmFjdG9yeSBza2lwcyBlbXVsYXRvciBzdGFydHVwIGFuZCBhdHRhY2hlcyB0byB0aGUgZXhpc3Rpbmcgc2Vzc2lvbi5cbiAgICovXG4gIHJlYWRvbmx5IGRldmljZUlkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaW1lb3V0IGluIG1pbGxpc2Vjb25kcyBmb3Igd2FpdGluZywgYWZ0ZXIgYHN5cy5ib290X2NvbXBsZXRlZGAsIGZvciB0aGVcbiAgICogZW11bGF0b3IgdG8gYmVjb21lIGlkbGUgYmVmb3JlIHRoZSBBcHBpdW0gc2Vzc2lvbiBpcyBlc3RhYmxpc2hlZC5cbiAgICpcbiAgICogYHN5cy5ib290X2NvbXBsZXRlZGAgZmlyZXMgKmJlZm9yZSogdGhlIGd1ZXN0IGlzIGFjdHVhbGx5IGlkbGU6IHBhY2thZ2VcbiAgICogb3B0aW1pemF0aW9uIGFuZCBzeXN0ZW0gc2VydmljZXMga2VlcCBjaHVybmluZywgc28gZXN0YWJsaXNoaW5nIHRoZSBzZXNzaW9uXG4gICAqIGltbWVkaWF0ZWx5IG1ha2VzIGV2ZXJ5IG9uZSBvZiBVaUF1dG9tYXRvcjIncyBzZXJpYWxpemVkIGBhZGJgIHJvdW5kLXRyaXBzXG4gICAqIGNvbnRlbmQgd2l0aCB0aGF0IHdvcmsgYW5kIGluZmxhdGVzIHNlc3Npb24gZXN0YWJsaXNobWVudCB+M3guIFRoZSBmYWN0b3J5XG4gICAqIGluc3RlYWQgd2FpdHMgdW50aWwgdGhlIGJvb3QgYW5pbWF0aW9uIGhhcyBzdG9wcGVkIGFuZCB0aGUgcGFja2FnZSBtYW5hZ2VyXG4gICAqIGlzIHNlcnZpbmcsIHByb2NlZWRpbmcgZWFybHkgb25jZSBpZGxlIG9yIGFmdGVyIHRoaXMgYnVkZ2V0IChiZXN0LWVmZm9ydCBcdTIwMTQgYVxuICAgKiB0aW1lb3V0IGxvZ3MgYSB3YXJuaW5nIGFuZCBwcm9jZWVkcykuIFNldCBgMGAgdG8gc2tpcCB0aGUgd2FpdC5cbiAgICpcbiAgICogQXBwbGllcyB0byBhICoqcmV1c2VkKiogZGV2aWNlIGFzIHdlbGwgYXMgYSBoYXJuZXNzLXN0YXJ0ZWQgb25lLiBBIGRldmljZVxuICAgKiB0aGF0IGlzIG1lcmVseSBwcmVzZW50IGluIGBhZGIgZGV2aWNlc2AgY2FuIHN0aWxsIGJlIG1pZC1gZGV4Mm9hdGAsIGFuZFxuICAgKiBza2lwcGluZyB0aGUgZ2F0ZSB0aGVyZSBpcyB3aGF0IGxlZnQgYSBydW4gcG9sbGluZyBhIGNodXJuaW5nIGd1ZXN0IHVudGlsXG4gICAqIHtAbGluayBsYXlvdXRSZWFkeVRpbWVvdXRJbk1pbGxpc2Vjb25kc30gcmFuIG91dC5cbiAgICpcbiAgICogQGRlZmF1bHQgYDYwMDAwYFxuICAgKi9cbiAgcmVhZG9ubHkgZGV2aWNlSWRsZVRpbWVvdXRJbk1pbGxpc2Vjb25kcz86IG51bWJlcjtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgYXV0by1zdGFydGVkIEFwcGl1bSBzZXJ2ZXIgY29uc29sZSB3aW5kb3cgaXMgc2hvd24uXG4gICAqXG4gICAqIFdoZW4gYGZhbHNlYCAodGhlIGRlZmF1bHQpLCB0aGUgYG5weCBhcHBpdW1gIHNlcnZlciBwcm9jZXNzIGlzIHNwYXduZWQgd2l0aFxuICAgKiBpdHMgY29uc29sZSB3aW5kb3cgaGlkZGVuIChgd2luZG93c0hpZGVgKSBhbmQgaXRzIG91dHB1dCBkaXNjYXJkZWQsIHNvIGl0XG4gICAqIG5laXRoZXIgc3RlYWxzIGZvY3VzIG5vciB3cml0ZXMgdG8gdGhlIGludm9raW5nIHRlcm1pbmFsLiBJZ25vcmVkIHdoZW5cbiAgICogYXR0YWNoaW5nIHRvIGFuIGFscmVhZHktcnVubmluZyBBcHBpdW0gc2VydmVyICh7QGxpbmsgc2hvdWxkQXV0b1N0YXJ0QXBwaXVtfVxuICAgKiBgZmFsc2VgLCBvciB0aGUgc2VydmVyIGFscmVhZHkgcmVhY2hhYmxlKS4gU2V0IGB0cnVlYCB0byBzZWUgdGhlIHNlcnZlciBsb2cgd2luZG93XG4gICAqIGFuZCBpdHMgbGl2ZSBvdXRwdXQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIHJlYWRvbmx5IGlzQXBwaXVtQ29uc29sZVZpc2libGU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBhdXRvLXN0YXJ0ZWQgQW5kcm9pZCBlbXVsYXRvciB3aW5kb3cgaXMgc2hvd24gb24gc2NyZWVuLlxuICAgKlxuICAgKiBXaGVuIGBmYWxzZWAgKHRoZSBkZWZhdWx0KSwgdGhlIGVtdWxhdG9yIGlzIHN0YXJ0ZWQgd2l0aCBgLW5vLXdpbmRvd2BcbiAgICogKGhlYWRsZXNzKSwgc28gaXQgbmV2ZXIgc3RlYWxzIGZvY3VzLiBJZ25vcmVkIHdoZW4gcmV1c2luZyBhbiBhbHJlYWR5LXJ1bm5pbmdcbiAgICogZGV2aWNlIChub3RoaW5nIGlzIGxhdW5jaGVkIHRvIGhpZGUpLiBTZXQgYHRydWVgIHRvIHdhdGNoIHRoZSBlbXVsYXRvciBVSS5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgcmVhZG9ubHkgaXNFbXVsYXRvclZpc2libGU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaW1lb3V0IGluIG1pbGxpc2Vjb25kcyBmb3Igd2FpdGluZyBmb3IgYGFwcC53b3Jrc3BhY2UubGF5b3V0UmVhZHlgLCBjb3VudGVkXG4gICAqIGZyb20gdGhlIG1vbWVudCB7QGxpbmsgYXBwU3RhcnRUaW1lb3V0SW5NaWxsaXNlY29uZHN9IGlzIHNhdGlzZmllZCBcdTIwMTQgbm90XG4gICAqIGZyb20gdGhlIHJlbG9hZC5cbiAgICpcbiAgICogVGhlIHNlY29uZCBvZiB0aGUgdHdvIGJ1ZGdldHMgdGhlIHRyYW5zcG9ydCBzcGVuZHMgYWZ0ZXIgYGxvY2F0aW9uLnJlbG9hZCgpYC5cbiAgICogSXQgY292ZXJzIG9ubHkgT2JzaWRpYW4ncyBvd24gd29yayBcdTIwMTQgb3BlbmluZyB0aGUgdmF1bHQgYW5kIGxvYWRpbmcgZXZlcnlcbiAgICogcGx1Z2luIFx1MjAxNCBvbmNlIHRoZSBhcHAgaXRzZWxmIGlzIHVwLCB3aGljaCBpcyB3aHkgaXQgY2FuIHN0YXkgdGlnaHQ6IG1lYXN1cmVkXG4gICAqIGF0IH4xcywgYW5kIFx1MjI2NDguNHMgdW5kZXIgMTItY29yZSArIGRpc2sgKyBtZW1vcnkgc3RyZXNzLlxuICAgKlxuICAgKiBCbG93aW5nIGl0IHRoZXJlZm9yZSBtZWFucyBPYnNpZGlhbiBnZW51aW5lbHkgc3RhbGxlZCwgKipvcioqIHRoYXQgZWFjaCBwcm9iZVxuICAgKiByb3VuZC10cmlwIGlzIGJlaW5nIGluZmxhdGVkIGJ5IGEgYnVzeSBndWVzdC4gVGhlIHRpbWVvdXQgZXJyb3IgbmFtZXMgd2hpY2gsXG4gICAqIGJ5IHJlcG9ydGluZyB0aGUgcHJvYmUgY291bnQgYW5kIHNsb3dlc3Qgcm91bmQtdHJpcCBhbG9uZ3NpZGUgdGhlIGZ1cnRoZXN0XG4gICAqIHN0YXJ0dXAgbWlsZXN0b25lIHJlYWNoZWQ6IGEgaGFuZGZ1bCBvZiBwcm9iZXMgZWFjaCB0YWtpbmcgdGVucyBvZiBzZWNvbmRzIGlzXG4gICAqIGEgY29udGVuZGVkIGd1ZXN0LCBhbmQgdGhlIGtub2IgZm9yIHRoYXQgaXNcbiAgICoge0BsaW5rIGRldmljZUlkbGVUaW1lb3V0SW5NaWxsaXNlY29uZHN9LCBub3QgdGhpcyBvbmUuXG4gICAqXG4gICAqIEBkZWZhdWx0IGA5MDAwMGBcbiAgICovXG4gIHJlYWRvbmx5IGxheW91dFJlYWR5VGltZW91dEluTWlsbGlzZWNvbmRzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBIb3cgb2xkIGEgbGVmdG92ZXIgKipob3N0KiogZGlyZWN0b3J5IG11c3QgYmUgYmVmb3JlXG4gICAqIHtAbGluayBzaG91bGRTd2VlcExlZnRvdmVyc30gcmVtb3ZlcyBpdC5cbiAgICpcbiAgICogR292ZXJucyB0aGUgaG9zdC1zaWRlIHN3ZWVwIG9ubHkgKHRoZSBgdGVtcC12YXVsdC0qYCBzdGFnaW5nIGRpcmVjdG9yaWVzXG4gICAqIHRoaXMgcnVuJ3MgbWFjaGluZSBhY2N1bXVsYXRlcyBpbiBpdHMgdGVtcCBkaXIpLiBUaGUgKipkZXZpY2UqKiBzd2VlcCBpc1xuICAgKiB1bmNvbmRpdGlvbmFsOiBBbmRyb2lkIHJ1bnMgaG9sZCB0aGUgZXhjbHVzaXZlIGBhbmRyb2lkYCBzZXR1cCBsb2NrLCBzbyBub1xuICAgKiBjb25jdXJyZW50IHJ1biBjYW4gb3duIGEgZGV2aWNlIHZhdWx0LCBhbmQgYW4gYWdlIGdhdGUgdGhlcmUgd291bGQgbGV0IGFcbiAgICogdmF1bHQgbGVha2VkIG1pbnV0ZXMgYWdvIHN1cnZpdmUgaW50byB0aGUgbmV4dCBydW4gXHUyMDE0IHdoaWNoIGlzIHRoZSBmYWlsdXJlXG4gICAqIGxvb3AgdGhlIHN3ZWVwIGV4aXN0cyB0byBicmVhay4gU2V0IGAwYCB0byByZW1vdmUgZXZlcnkgaG9zdCBtYXRjaCB0b28uXG4gICAqXG4gICAqIEBkZWZhdWx0IGA3MjAwMDAwYFxuICAgKi9cbiAgcmVhZG9ubHkgbGVmdG92ZXJNYXhBZ2VJbk1pbGxpc2Vjb25kcz86IG51bWJlcjtcblxuICAvKipcbiAgICogVGltZW91dCBpbiBtaWxsaXNlY29uZHMgZm9yIHdhaXRpbmcsIGFmdGVyIHRoZSBkZXZpY2UtaWRsZSBnYXRlLCBmb3IgdGhlXG4gICAqIGVtdWxhdG9yIHRvIHJlcG9ydCBhICoqdmFsaWRhdGVkIGRlZmF1bHQgbmV0d29yayoqIGJlZm9yZSB0aGUgQXBwaXVtIHNlc3Npb25cbiAgICogaXMgZXN0YWJsaXNoZWQuXG4gICAqXG4gICAqIEEgZGV2aWNlIGNhbiBiZSBpZGxlLCBmdWxseSBwYWNrYWdlZCBhbmQgYW5zd2VyaW5nIGBhZGJgIHdoaWxlIHN0aWxsIGhhdmluZ1xuICAgKiBubyByb3V0ZTogdGhlIHR3byB7QGxpbmsgZGV2aWNlSWRsZVRpbWVvdXRJbk1pbGxpc2Vjb25kc30gc2lnbmFscyBhcmVcbiAgICogc2F0aXNmaWVkIHdlbGwgYmVmb3JlIHRoZSBkZWZhdWx0IG5ldHdvcmsgaXMgY3JlYXRlZCBhbmQgdmFsaWRhdGVkLCB3aGljaFxuICAgKiBsYW5kcyB+ODBzIGludG8gZ3Vlc3QgdXB0aW1lLiBUaGF0IGdhcCBpcyBkYW5nZXJvdXMgcmF0aGVyIHRoYW4gbWVyZWx5IHNsb3dcbiAgICogXHUyMDE0IGEgdGVzdCB0aGF0IHJlYWNoZXMgdGhlIG5ldHdvcmsgdGhlcmUgcnVucyB0byBjb21wbGV0aW9uIGFnYWluc3QgYVxuICAgKiBzaWxlbnRseSAqKmVtcHR5IHJlc3VsdCoqLCB3aGljaCBubyBhc3NlcnRpb24gaW5zaWRlIHRoZSBzdWl0ZSBjYW4gdGVsbFxuICAgKiBhcGFydCBmcm9tIGEgZ2VudWluZWx5IGVtcHR5IHJlc3BvbnNlLlxuICAgKlxuICAgKiBUaGUgZmFjdG9yeSBwb2xscyBgZHVtcHN5cyBjb25uZWN0aXZpdHlgIHVudGlsIGFuIGFjdGl2ZSBkZWZhdWx0IG5ldHdvcmtcbiAgICogcmVwb3J0cyB2YWxpZGF0aW9uLCBwcm9jZWVkaW5nIGVhcmx5IG9uY2UgaXQgZG9lcyBvciBhZnRlciB0aGlzIGJ1ZGdldFxuICAgKiAoYmVzdC1lZmZvcnQgXHUyMDE0IGEgdGltZW91dCBsb2dzIGEgd2FybmluZyBuYW1pbmcgdGhlIG1pc3NpbmcgbmV0d29yayBhbmRcbiAgICogcHJvY2VlZHMpLiBTZXQgYDBgIHRvIHNraXAgdGhlIHdhaXQsIGUuZy4gZm9yIGEgZGVsaWJlcmF0ZWx5IG9mZmxpbmUgQVZEIG9yXG4gICAqIGEgc3VpdGUgdGhhdCBuZXZlciB0b3VjaGVzIHRoZSBuZXR3b3JrLlxuICAgKlxuICAgKiBBcHBsaWVzIHRvIGEgKipyZXVzZWQqKiBkZXZpY2UgYXMgd2VsbCBhcyBhIGhhcm5lc3Mtc3RhcnRlZCBvbmUsIGZvciB0aGVcbiAgICogc2FtZSByZWFzb24gdGhlIGlkbGUgZ2F0ZSBkb2VzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgMTIwMDAwYFxuICAgKi9cbiAgcmVhZG9ubHkgbmV0d29ya1JlYWR5VGltZW91dEluTWlsbGlzZWNvbmRzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBOdW1iZXIgb2YgZXh0cmEgYXR0ZW1wdHMgdG8gZW5hYmxlIHRoZSBwbHVnaW4gYW5kIHZlcmlmeSBpdCBsb2FkZWQsIG9uIHRvcFxuICAgKiBvZiB0aGUgZmlyc3QgYXR0ZW1wdC5cbiAgICpcbiAgICogT24gYSBmcmVzaGx5IGNvbGQtYm9vdGVkIGVtdWxhdG9yIHRoZSBwbHVnaW4gc3Vic3lzdGVtIGNhbiBzdGlsbCBiZSBzZXR0bGluZ1xuICAgKiB3aGVuIHRoZSBoYXJuZXNzIGVuYWJsZXMgdGhlIHBsdWdpbiwgc28gdGhlIGVuYWJsZSBsYW5kcyBpbiB0aGUgZW5hYmxlZCBzZXRcbiAgICogYnV0IHRoZSBsb2FkIHJhY2VzIGFuZCBmYWlscyAoYFwiPGlkPlwiIGlzIGluIHRoZSBlbmFibGVkIHNldCBidXQgbm90IGxvYWRlZGApLlxuICAgKiBEZXZpY2UtaWRsZSBhbmQgYGxheW91dFJlYWR5YCBhcmUgYWxyZWFkeSBhd2FpdGVkLCBzbyB0aGlzIGlzIHRoZSBuYXJyb3dcbiAgICogcmVzaWR1YWwgcmFjZTogdGhlIGhhcm5lc3MgcmV0cmllcyB0aGUgZW5hYmxlICsgbG9hZC12ZXJpZmljYXRpb24gdGhpcyBtYW55XG4gICAqIHRpbWVzIHdpdGggZXhwb25lbnRpYWwgYmFja29mZiAoc2VlXG4gICAqIHtAbGluayBwbHVnaW5FbmFibGVSZXRyeURlbGF5SW5NaWxsaXNlY29uZHN9KSwgZm9yY2luZyBhIGdlbnVpbmUgcmVsb2FkIGVhY2hcbiAgICogYXR0ZW1wdC4gQSBjYXB0dXJlZCBwbHVnaW4gbG9hZCBlcnJvciBpcyB0cmVhdGVkIGFzIGEgZGV0ZXJtaW5pc3RpYyBidWcgYW5kXG4gICAqIGlzICoqbm90KiogcmV0cmllZC4gU2V0IGAwYCB0byBkaXNhYmxlIHJldHJ5IChhIHNpbmdsZSBhdHRlbXB0KS5cbiAgICpcbiAgICogQGRlZmF1bHQgYDNgXG4gICAqL1xuICByZWFkb25seSBwbHVnaW5FbmFibGVSZXRyeUNvdW50PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBCYXNlIGRlbGF5IGluIG1pbGxpc2Vjb25kcyBiZXR3ZWVuIHBsdWdpbi1lbmFibGUgYXR0ZW1wdHMgKHNlZVxuICAgKiB7QGxpbmsgcGx1Z2luRW5hYmxlUmV0cnlDb3VudH0pLlxuICAgKlxuICAgKiBUaGUgZGVsYXkgZ3Jvd3MgZXhwb25lbnRpYWxseSBwZXIgcmV0cnk6IHRoZSBmaXJzdCByZXRyeSB3YWl0cyB0aGlzIGxvbmcsXG4gICAqIHRoZSBzZWNvbmQgdHdpY2UgYXMgbG9uZywgdGhlIHRoaXJkIGZvdXIgdGltZXMsIGFuZCBzbyBvbiBcdTIwMTQgZ2l2aW5nIGFcbiAgICogc3RpbGwtc2V0dGxpbmcgY29sZCBndWVzdCBwcm9ncmVzc2l2ZWx5IG1vcmUgdGltZSB0byBiZWNvbWUgcmVhZHkuXG4gICAqXG4gICAqIEBkZWZhdWx0IGAyMDAwYFxuICAgKi9cbiAgcmVhZG9ubHkgcGx1Z2luRW5hYmxlUmV0cnlEZWxheUluTWlsbGlzZWNvbmRzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaW1lb3V0IGluIG1pbGxpc2Vjb25kcyBmb3IgYSBzaW5nbGUgc2NyaXB0IGV4ZWN1dGVkIGluc2lkZSBPYnNpZGlhbiBcdTIwMTQgdGhlXG4gICAqIHBlci1gZXZhbEluT2JzaWRpYW5gIGNhcCBvbiB0aGlzIHRyYW5zcG9ydC5cbiAgICpcbiAgICogSXQgaXMgZW5mb3JjZWQgYnkgdGhlIHRyYW5zcG9ydCBpdHNlbGYsIG9uIHRoZSBOb2RlIHNpZGUsIGFuZCBpcyBhbHNvIHNlbnQgYXNcbiAgICogdGhlIFczQyBgdGltZW91dHMuc2NyaXB0YCBjYXBhYmlsaXR5IFx1MjAxNCBidXQgdGhlIGNhcGFiaWxpdHkgaXMgZGVjb3JhdGlvbi5cbiAgICogTWVhc3VyZWQgb24gYSBsaXZlIGVtdWxhdG9yOiBpdCBpcyBhY2NlcHRlZCBhbmQgcmVhZHMgYmFjayBhc1xuICAgKiBgMzAwMDBgIGluIHRoZSBXZWJWaWV3IGNvbnRleHQsIGFuZCBub3RoaW5nIGV2ZXIgYWN0cyBvbiBpdC4gT3Zlci1jYXBcbiAgICogY2xvc3VyZXMgcmFuIHBhc3QgYSA2MHMgY2VpbGluZyB3aXRob3V0IFdlYkRyaXZlciByYWlzaW5nIGBzY3JpcHQgdGltZW91dGBcbiAgICogb25jZSwgaW4gYm90aCB0aGUgc2xlZXBpbmcgYW5kIHRoZSBzcGlubmluZyBzaGFwZSwgd2l0aCBhbmQgd2l0aG91dCBhblxuICAgKiBleHBsaWNpdCBgc2V0VGltZW91dHNgLlxuICAgKlxuICAgKiBXaGF0IGhhcHBlbnMgcGFzdCByb3VnaGx5IGhhbGYgYSBtaW51dGUgaXMgd29yc2UgdGhhbiBhIGxhdGUgYW5zd2VyOiB0aGVcbiAgICogY2xvc3VyZSBjb21wbGV0ZXMgaW4gdGhlIGd1ZXN0IG9uIHNjaGVkdWxlIGFuZCBpdHMgRXhlY3V0ZSBTY3JpcHQgcmVzcG9uc2VcbiAgICogbmV2ZXIgcmVhY2hlcyB0aGUgY2xpZW50LCBzbyB0aGUgY2FsbCBzaW1wbHkgbmV2ZXIgcmV0dXJucy4gVGhpcyB0aW1lb3V0IGlzXG4gICAqIHdoYXQgdHVybnMgdGhhdCBzaWxlbmNlIGludG8gYW4ge0BsaW5rIEV2YWxDYXBFeGNlZWRlZEVycm9yfSBuYW1pbmcgdGhlXG4gICAqIGNsb3N1cmUgYXMgdGhlIGNhdXNlLlxuICAgKlxuICAgKiBSYWlzaW5nIGl0IGlzIGFsbW9zdCBuZXZlciB0aGUgcmlnaHQgYW5zd2VyLiBBIGNsb3N1cmUgdGhhdCBuZWVkcyB0byB3YWl0XG4gICAqIGxvbmdlciB0aGFuIHRoaXMgc2hvdWxkIG5vdCBiZSB3YWl0aW5nIGluc2lkZSBPYnNpZGlhbiBhdCBhbGwgXHUyMDE0IHVzZVxuICAgKiBgcG9sbEluT2JzaWRpYW5gLCB3aGljaCBrZWVwcyBlYWNoIGNsb3N1cmUgc2hvcnQgYW5kIGRvZXMgdGhlIHdhaXRpbmdcbiAgICogZnJvbSBOb2RlLiBUaGUga25vYiBleGlzdHMgc28gdGhlIGNhcCBpcyBleHBsaWNpdCBhbmQgbWF0Y2hlc1xuICAgKiB7QGxpbmsgT2JzaWRpYW5DZHBUcmFuc3BvcnRPcHRpb25zLmNvbW1hbmRUaW1lb3V0SW5NaWxsaXNlY29uZHN9IG9uIGRlc2t0b3AuXG4gICAqXG4gICAqIFRoZSBkZWZhdWx0IGlzIGBERUZBVUxUX0VWQUxfQ0FQX0lOX01JTExJU0VDT05EU2AsIGV4cG9ydGVkIGZyb20gdGhlIHBhY2thZ2VcbiAgICogcm9vdCBcdTIwMTQgaW1wb3J0IGl0IHJhdGhlciB0aGFuIHJlc3RhdGluZyB0aGUgbnVtYmVyLCBzbyBhIGNsb3N1cmUgc2l6ZWRcbiAgICogYWdhaW5zdCB0aGUgY2FwIGZvbGxvd3MgaXQgaWYgaXQgZXZlciBtb3Zlcy5cbiAgICpcbiAgICogQGRlZmF1bHQgYDMwMDAwYFxuICAgKi9cbiAgcmVhZG9ubHkgc2NyaXB0VGltZW91dEluTWlsbGlzZWNvbmRzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaW1lb3V0IGluIG1pbGxpc2Vjb25kcyBmb3IgZXN0YWJsaXNoaW5nIHRoZSBBcHBpdW0gc2Vzc2lvbiAoV2ViRHJpdmVySU9cbiAgICogYHJlbW90ZSgpYCBcdTIwMTQgVWlBdXRvbWF0b3IyIHNlcnZlciBpbnN0YWxsICsgYXBwIGxhdW5jaCkuXG4gICAqXG4gICAqIFRoaXMgaXMgdGhlIGxhcmdlc3QgYW5kIG1vc3QgbG9hZC1zZW5zaXRpdmUgc3RlcCBvZiB0aGUgQW5kcm9pZCBzZXR1cDpcbiAgICogb24gYSBjb2xkIG9yIGNvbnRlbmRlZCBlbXVsYXRvciBpdCBkb21pbmF0ZXMgc3RhcnR1cCBhbmQgY2FuIHRha2UgYSBmZXdcbiAgICogbWludXRlcy4gUmFpc2UgaXQgaWYgc2Vzc2lvbiBlc3RhYmxpc2htZW50IHRpbWVzIG91dCB1bmRlciBsb2FkLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgMTgwMDAwYFxuICAgKi9cbiAgcmVhZG9ubHkgc2Vzc2lvbkNvbm5lY3Rpb25SZXRyeVRpbWVvdXRJbk1pbGxpc2Vjb25kcz86IG51bWJlcjtcblxuICAvKipcbiAgICogQW4gZXhpc3RpbmcgQXBwaXVtIHNlc3Npb24gSUQgdG8gcmVhdHRhY2ggdG8uXG4gICAqXG4gICAqIFBvcHVsYXRlZCBhdXRvbWF0aWNhbGx5IGJ5IHRoZSBnbG9iYWwgc2V0dXAgYW5kIHByb3ZpZGVkIHRvIHRlc3Qgd29ya2Vyc1xuICAgKiB2aWEgdGhlIGZyYW1ld29yaydzIGNvbnRleHQgbWVjaGFuaXNtIChlLmcuIFZpdGVzdCBgcHJvdmlkZWAvYGluamVjdGApLlxuICAgKiBXaGVuIHByZXNlbnQsIHRoZSB0cmFuc3BvcnQgZmFjdG9yeSB1c2VzIFdlYkRyaXZlcklPJ3MgYGF0dGFjaCgpYCBpbnN0ZWFkXG4gICAqIG9mIGNyZWF0aW5nIGEgbmV3IHNlc3Npb24sIGF2b2lkaW5nIGR1cGxpY2F0ZSBBcHBpdW0vQURCIGNvbm5lY3Rpb25zLlxuICAgKi9cbiAgcmVhZG9ubHkgc2Vzc2lvbklkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGF1dG9tYXRpY2FsbHkgaW5zdGFsbCBtaXNzaW5nIEFwcGl1bSBkZXBlbmRlbmNpZXMgKHRoZVxuICAgKiBgdWlhdXRvbWF0b3IyYCBkcml2ZXIsIGFuZCBBcHBpdW0gaXRzZWxmKSBiZWZvcmUgYXV0by1zdGFydGluZyB0aGUgc2VydmVyLlxuICAgKlxuICAgKiBXaGVuIGB0cnVlYCAodGhlIGRlZmF1bHQpIGFuZCB0aGUgaGFybmVzcyBpcyBhYm91dCB0byBhdXRvLXN0YXJ0IHRoZSBBcHBpdW1cbiAgICogc2VydmVyICh7QGxpbmsgc2hvdWxkQXV0b1N0YXJ0QXBwaXVtfSksIHRoZSBmYWN0b3J5IGZpcnN0IGVuc3VyZXMgQXBwaXVtIGlzXG4gICAqIGluc3RhbGxlZCAoZ2xvYmFsbHksIHZpYSBgbnBtIGluc3RhbGwgLWcgYXBwaXVtYCkgYW5kIHRoYXQgdGhlXG4gICAqIGB1aWF1dG9tYXRvcjJgIGRyaXZlciBpcyBpbnN0YWxsZWQgKGBhcHBpdW0gZHJpdmVyIGluc3RhbGwgdWlhdXRvbWF0b3IyYCksXG4gICAqIGluc3RhbGxpbmcgd2hpY2hldmVyIGlzIG1pc3NpbmcuIElnbm9yZWQgd2hlbiBhdHRhY2hpbmcgdG8gYW5cbiAgICogYWxyZWFkeS1ydW5uaW5nIHNlcnZlciAobm90aGluZyBpcyBhdXRvLXN0YXJ0ZWQsIHNvIG5vdGhpbmcgaXMgaW5zdGFsbGVkKSBvclxuICAgKiB3aGVuIHtAbGluayBzaG91bGRBdXRvU3RhcnRBcHBpdW19IGlzIGBmYWxzZWAuIFNldCBpdCB0byBgZmFsc2VgIHRvIG1hbmFnZVxuICAgKiB0aGUgQXBwaXVtIHRvb2xjaGFpbiB5b3Vyc2VsZiBhbmQgc2tpcCB0aGUgbWFjaGluZS1tdXRhdGluZyBnbG9iYWwgaW5zdGFsbC5cbiAgICpcbiAgICogQGRlZmF1bHQgYHRydWVgXG4gICAqL1xuICByZWFkb25seSBzaG91bGRBdXRvSW5zdGFsbEFwcGl1bURlcGVuZGVuY2llcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gYXV0b21hdGljYWxseSBzdGFydCB0aGUgQXBwaXVtIHNlcnZlciBpZiBpdCBpcyBub3QgcmVhY2hhYmxlLlxuICAgKlxuICAgKiBXaGVuIGB0cnVlYCAodGhlIGRlZmF1bHQpLCB0aGUgdHJhbnNwb3J0IGZhY3Rvcnkgc3Bhd25zIGBucHggYXBwaXVtYFxuICAgKiBhcyBhIGJhY2tncm91bmQgcHJvY2VzcyB3aGVuIHRoZSBwcmVmbGlnaHQgY2hlY2sgZmFpbHMsIGFuZCBraWxscyBpdFxuICAgKiBvbiB0cmFuc3BvcnQgZGlzcG9zYWwuXG4gICAqXG4gICAqIEBkZWZhdWx0IGB0cnVlYFxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkQXV0b1N0YXJ0QXBwaXVtPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgYXV0by1zdGFydGVkIGVtdWxhdG9yIG1heSByZXN1bWUgXHUyMDE0IGFuZCByZWZyZXNoIFx1MjAxNCB0aGUgQVZEJ3NcbiAgICogc2F2ZWQgYm9vdCBzbmFwc2hvdC5cbiAgICpcbiAgICogV2hlbiBgZmFsc2VgICh0aGUgZGVmYXVsdCkgdGhlIGVtdWxhdG9yIGlzIHN0YXJ0ZWQgd2l0aFxuICAgKiBgLW5vLXNuYXBzaG90LWxvYWQgLW5vLXNuYXBzaG90LXNhdmVgLCBzbyBldmVyeSBydW4gY29sZC1ib290cyBhIGd1ZXN0IHdob3NlXG4gICAqIHN0YXRlIG5vdGhpbmcgY2FycmllZCBvdmVyLiBUaGF0IGlzIHRoZSBoZXJtZXRpYyBkZWZhdWx0IGEgdGVzdCBoYXJuZXNzXG4gICAqIG93ZXMgaXRzIGNhbGxlcnMsIGFuZCBpdCBpcyBhbHNvIHRoZSBzYWZlIG9uZTogYSBzbmFwc2hvdCB0aGUgaGFybmVzcyBsb2Fkc1xuICAgKiBidXQgbmV2ZXIgd3JpdGVzIHJvdHMgdW5ub3RpY2VkLCBhbmQgdGhlIGZhaWx1cmUgaXQgZXZlbnR1YWxseSBwcm9kdWNlcyBcdTIwMTQgYVxuICAgKiBkZXZpY2UgdGhhdCBzZXJ2ZXMgYWRiLCBhY2NlcHRzIGEgc2Vzc2lvbiwgdGhlbiBkcm9wcyBgb2ZmbGluZWAgYWJvdXQgaGFsZiBhXG4gICAqIG1pbnV0ZSBsYXRlciBcdTIwMTQgaXMgaW5kaXN0aW5ndWlzaGFibGUgZnJvbSBhIGNvZGUgcmVncmVzc2lvbi4gTWVhc3VyZWQgb24gb25lXG4gICAqIEFWRCBiYWNrIHRvIGJhY2ssIGEgcmVzdW1lZCBzbmFwc2hvdCBraWxsZWQgdGhlIGd1ZXN0IH45MHMgaW4gKmV2ZXJ5KiB0aW1lLFxuICAgKiB3aGlsZSB0aGUgc2FtZSBBVkQgY29sZC1ib290ZWQgaW4gNTBzIGFuZCBzdGF5ZWQgdXAuXG4gICAqXG4gICAqIFNldCBpdCB0byBgdHJ1ZWAgb24gYSAqKnBlcnNpc3RlbnQgcnVubmVyKiogd2hvc2UgQVZEIGlzIG5vdCBzaGFyZWQgd2l0aFxuICAgKiBhbnl0aGluZyBlbHNlOiB0aGUgZW11bGF0b3IgdGhlbiBib3RoIGxvYWRzIGFuZCBzYXZlcyBgZGVmYXVsdF9ib290YCwgc28gdGhlXG4gICAqIHNuYXBzaG90IGVhY2ggcnVuIHJlc3VtZXMgaXMgb25lIGEgcHJldmlvdXMgcnVuIHdyb3RlLCBhbmQgdGhlIH4xMTJzIGNvbGRcbiAgICogYm9vdCBpcyBsYXJnZWx5IGJvdWdodCBiYWNrLiBUaGUgdHJhZGUgaXMgdGVzdCBpc29sYXRpb24gXHUyMDE0IGEgZ3Vlc3QgdGhhdFxuICAgKiBjYXJyaWVzIHN0YXRlIGJldHdlZW4gcnVucyBcdTIwMTQgc28gaXQgaXMgb3B0LWluIHBlciBwcm9qZWN0LCBuZXZlciBhIGRlZmF1bHQuXG4gICAqIElnbm9yZWQgd2hlbiByZXVzaW5nIGFuIGFscmVhZHktcnVubmluZyBkZXZpY2UgKG5vdGhpbmcgaXMgbGF1bmNoZWQpLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICByZWFkb25seSBzaG91bGRSZXVzZUVtdWxhdG9yU25hcHNob3Q/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBoYXJuZXNzIHJlbW92ZXMgdGhlIHRlbXBvcmFyeSBkaXJlY3RvcmllcyBlYXJsaWVyIHJ1bnMgbGVha2VkLlxuICAgKlxuICAgKiBXaGVuIGB0cnVlYCAodGhlIGRlZmF1bHQpLCBlYWNoIHJ1biBzd2VlcHMgYXQgc3RhcnQgKiphbmQqKiBhdCBlbmQ6IG9uIHRoZVxuICAgKiBkZXZpY2UsIGV2ZXJ5IGB0ZW1wLXZhdWx0LSpgIGRpcmVjdG9yeSB1bmRlciB7QGxpbmsgdmF1bHRCYXNlUGF0aH0gKHBsdXMgdGhlXG4gICAqIHN0YWxlIHZhdWx0IHJlZ2lzdHJhdGlvbnMgaW4gT2JzaWRpYW4gTW9iaWxlJ3MgYGxvY2FsU3RvcmFnZWApOyBvbiB0aGUgaG9zdCxcbiAgICogdGhlIGxlZnRvdmVyIGB0ZW1wLXZhdWx0LSpgIGFuZCBvd25lZCBgdXNlcmRhdGEtKmAgZGlyZWN0b3JpZXMgb2xkZXIgdGhhblxuICAgKiB7QGxpbmsgbGVmdG92ZXJNYXhBZ2VJbk1pbGxpc2Vjb25kc30uXG4gICAqXG4gICAqIEEgcnVuIHRoYXQgZGllcyBjYW5ub3QgY2xlYW4gdXAgYWZ0ZXIgaXRzZWxmIFx1MjAxNCBpdHMgdGVhcmRvd24gZ29lcyB0aHJvdWdoIHRoZVxuICAgKiBXZWJWaWV3LCBhbmQgYSBkZWFkIFdlYlZpZXcgaXMgd2hhdCBtb3N0IEFuZHJvaWQgZmFpbHVyZXMgYXJlIFx1MjAxNCBzbyB0aGVcbiAgICogcmVzaWR1ZSBhY2N1bXVsYXRlcyBhbmQgc2xvd3MgdGhlIG5leHQgcnVuJ3Mgc3RhcnR1cCBlbnVtZXJhdGlvbiB1bnRpbCBpdFxuICAgKiBtaXNzZXMgdGhlIFdlYlZpZXctcmVhZGluZXNzIGJ1ZGdldC4gVGhlIHN0YXJ0IHN3ZWVwIGlzIHRoZSBoYWxmIHRoYXQgYnJlYWtzXG4gICAqIHRoYXQgbG9vcCwgYmVjYXVzZSBpdCBydW5zIGJlZm9yZSBhbnl0aGluZyB0aGF0IGNhbiBkaWUuXG4gICAqXG4gICAqIEBkZWZhdWx0IGB0cnVlYFxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkU3dlZXBMZWZ0b3ZlcnM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBEaXNjcmltaW5hbnQgZm9yIHRoZSB0cmFuc3BvcnQgdHlwZS5cbiAgICovXG4gIHJlYWRvbmx5IHR5cGU6ICdvYnNpZGlhbi1hbmRyb2lkLWFwcGl1bSc7XG5cbiAgLyoqXG4gICAqIEJhc2UgcGF0aCBvbiB0aGUgZGV2aWNlIHdoZXJlIE9ic2lkaWFuIHN0b3JlcyB2YXVsdHMuXG4gICAqXG4gICAqIERlZmF1bHRzOlxuICAgKiAtIEFuZHJvaWQ6IGAvc2RjYXJkL0RvY3VtZW50cy9gXG4gICAqIC0gaU9TOiBgQG1kLm9ic2lkaWFuOmRvY3VtZW50cy9gXG4gICAqL1xuICByZWFkb25seSB2YXVsdEJhc2VQYXRoPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaW1lb3V0IGluIG1pbGxpc2Vjb25kcyBmb3Igd2FpdGluZyBmb3IgdGhlIFdlYlZpZXcgY29udGV4dCB0byBiZWNvbWUgYXZhaWxhYmxlLlxuICAgKlxuICAgKiBPbiBzbG93IGVtdWxhdG9ycywgdGhlIENocm9tZURyaXZlciBwcm94eSB0aGF0IGhhbmRsZXMgV2ViVmlldyBjb21tYW5kc1xuICAgKiBtYXkgbm90IGJlIHJlYWR5IGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBBcHBpdW0gc2Vzc2lvbiBzdGFydHMuIFRoaXMgdGltZW91dFxuICAgKiBjb250cm9scyBob3cgbG9uZyB0byBwb2xsIGJlZm9yZSBnaXZpbmcgdXAuXG4gICAqXG4gICAqIEBkZWZhdWx0IGA2MDAwMGBcbiAgICovXG4gIHJlYWRvbmx5IHdlYnZpZXdUaW1lb3V0SW5NaWxsaXNlY29uZHM/OiBudW1iZXI7XG59XG5cbi8qKlxuICogVHJhbnNwb3J0IG9wdGlvbnMgZm9yIGRlc2t0b3AgdGVzdGluZyB2aWEgQ2hyb21lIERldlRvb2xzIFByb3RvY29sLlxuICpcbiAqIFRoaXMgaXMgdGhlIGRlZmF1bHQgZGVza3RvcCB0cmFuc3BvcnQuIEJ5IGRlZmF1bHQgdGhlIGhhcm5lc3MgKipsYXVuY2hlcyBhbmRcbiAqIG93bnMgYW4gaXNvbGF0ZWQgT2JzaWRpYW4gaW5zdGFuY2UqKiBpbiBhIHRlbXBvcmFyeSB1c2VyLWRhdGEgZGlyIChuZXZlclxuICogdG91Y2hpbmcgdGhlIHVzZXIncyBPYnNpZGlhbiksIGNvbm5lY3RlZCBvdmVyIGEgZnJlZSBDRFAgcG9ydC4gUHJvdmlkZVxuICoge0BsaW5rIE9ic2lkaWFuQ2RwVHJhbnNwb3J0T3B0aW9ucy5wb3J0fSB0byBpbnN0ZWFkIGF0dGFjaCB0byBhblxuICogYWxyZWFkeS1ydW5uaW5nIE9ic2lkaWFuLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE9ic2lkaWFuQ2RwVHJhbnNwb3J0T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaW1lb3V0IGluIG1pbGxpc2Vjb25kcyBmb3IgaW5kaXZpZHVhbCBDRFAgY29tbWFuZHMuXG4gICAqXG4gICAqIEEgdGVzdCdzIGNsb3N1cmUgdHJhdmVscyBhcyBvbmUgYFJ1bnRpbWUuZXZhbHVhdGVgIGNvbW1hbmQsIHNvIHRoaXMgaXMgYWxzb1xuICAgKiB0aGUgZGVza3RvcCBwZXItZXZhbCBjYXAuIFRoZSBkZWZhdWx0IGlzIGBERUZBVUxUX0VWQUxfQ0FQX0lOX01JTExJU0VDT05EU2AsXG4gICAqIGV4cG9ydGVkIGZyb20gdGhlIHBhY2thZ2Ugcm9vdCBcdTIwMTQgaW1wb3J0IGl0IHJhdGhlciB0aGFuIHJlc3RhdGluZyB0aGUgbnVtYmVyLFxuICAgKiBzbyBhIGNsb3N1cmUgc2l6ZWQgYWdhaW5zdCB0aGUgY2FwIGZvbGxvd3MgaXQgaWYgaXQgZXZlciBtb3Zlcy5cbiAgICpcbiAgICogQGRlZmF1bHQgYDMwMDAwYFxuICAgKi9cbiAgcmVhZG9ubHkgY29tbWFuZFRpbWVvdXRJbk1pbGxpc2Vjb25kcz86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIHZhdWx0J3MgKipjb25maWcgZm9sZGVyKiogXHUyMDE0IE9ic2lkaWFuJ3MgcGVyLXZhdWx0ICpPdmVycmlkZSBjb25maWdcbiAgICogZm9sZGVyKiBzZXR0aW5nLCBlLmcuIGAnLm9ic2lkaWFuLWRlc2t0b3AnYC4gTXVzdCBzdGFydCB3aXRoIGEgZG90LCBtdXN0IG5vdFxuICAgKiBiZSB0aGUgYmFyZSBkb3QsIGFuZCBtdXN0IG5vdCBjb250YWluIGEgcGF0aCBzZXBhcmF0b3I7IGFueXRoaW5nIGVsc2UgdGhyb3dzXG4gICAqIGJlZm9yZSBPYnNpZGlhbiBpcyBsYXVuY2hlZCwgYmVjYXVzZSBPYnNpZGlhbiBpdHNlbGYgd291bGQgc2lsZW50bHlcbiAgICogc3Vic3RpdHV0ZSBgLm9ic2lkaWFuYC5cbiAgICpcbiAgICogTmVlZGVkIHRvIG9wZW4gYSB2YXVsdCB0aGF0IGtlZXBzIGl0cyBzZXR0aW5ncyBzb21ld2hlcmUgb3RoZXIgdGhhblxuICAgKiBgLm9ic2lkaWFuYCBcdTIwMTQgYSB2YXVsdCB3aXRoIGEgc3RhbGUgYC5vYnNpZGlhbmAgYmVzaWRlIHRoZSByZWFsIGZvbGRlciB3b3VsZFxuICAgKiBvdGhlcndpc2Ugb3BlbiBzdWNjZXNzZnVsbHkgYWdhaW5zdCB0aGUgd3Jvbmcgc2V0dGluZ3MgYW5kIHJlcG9ydCBzdWNjZXNzLlxuICAgKiBUaGUgb3ZlcnJpZGUgbGl2ZXMgaW4gYGxvY2FsU3RvcmFnZWAsIGtleWVkIGJ5IHZhdWx0IGlkLCBhbmQgc28gaXMgc2NvcGVkIHRvXG4gICAqIGEgdXNlci1kYXRhIGRpcmVjdG9yeTogYW4gb3duZWQgaW5zdGFuY2UgZ2V0cyBhIGZyZXNoIHRlbXAgb25lIGFuZCB0aGVyZWZvcmVcbiAgICogaW5oZXJpdHMgbm90aGluZyBmcm9tIHRoZSB1c2VyJ3MgT2JzaWRpYW4sIGhvd2V2ZXIgdGhhdCB2YXVsdCBpcyBjb25maWd1cmVkXG4gICAqIHRoZXJlLlxuICAgKlxuICAgKiBTZXR0aW5nIGl0IGNvc3RzIG9uZSBleHRyYSBib290IHBoYXNlOiB0aGUgaW5zdGFuY2UgaXMgbGF1bmNoZWQgdG8gdGhlXG4gICAqIHN0YXJ0ZXIgc2NyZWVuLCB0aGUgb3ZlcnJpZGUgaXMgd3JpdHRlbiBpbiB0aGF0IHJlbmRlcmVyLCBhbmQgdGhlIHZhdWx0IGlzXG4gICAqIHRoZW4gb3BlbmVkIG92ZXIgSVBDLiBBZnRlciB0aGUgdmF1bHQgaXMgcmVhZHkgaXRzIGFjdHVhbFxuICAgKiBgYXBwLnZhdWx0LmNvbmZpZ0RpcmAgaXMgcmVhZCBiYWNrIGFuZCBhbnkgbWlzbWF0Y2ggdGhyb3dzXG4gICAqIGBDb25maWdEaXJlY3RvcnlGYWxsYmFja0Vycm9yYCBcdTIwMTQgdGhlcmUgaXMgbm8ga25vYiB0byBkb3duZ3JhZGUgdGhhdCwgYmVjYXVzZSBhXG4gICAqIHZhdWx0IG9wZW5lZCBhZ2FpbnN0IHRoZSB3cm9uZyBjb25maWcgZm9sZGVyIGlzIHNpbGVudGx5IHRoZSB3cm9uZyB2YXVsdC5cbiAgICpcbiAgICogT25seSBtZWFuaW5nZnVsIGluIG93bmVkIG1vZGU7ICoqaWdub3JlZCBpbiBhdHRhY2ggbW9kZSoqICh7QGxpbmsgT2JzaWRpYW5DZHBUcmFuc3BvcnRPcHRpb25zLnBvcnR9XG4gICAqIHNldCksIHdoZXJlIHRoZSB2YXVsdCBpcyBvcGVuZWQgYnkgdGhlIHVzZXIncyBvd24gT2JzaWRpYW4gdW5kZXIgaXRzIG93blxuICAgKiBjb25maWcuXG4gICAqXG4gICAqIEBkZWZhdWx0IGB1bmRlZmluZWRgIChPYnNpZGlhbidzIG93biBkZWZhdWx0LCBgLm9ic2lkaWFuYClcbiAgICovXG4gIHJlYWRvbmx5IGNvbmZpZ0RpcmVjdG9yeT86IHN0cmluZztcblxuICAvKipcbiAgICogR3JhY2Ugd2luZG93IGluIG1pbGxpc2Vjb25kcyBmb3IgZmFzdC1mYWlsaW5nIGEgKipkZWFkIGJvb3QqKiBvZiB0aGUgb3duZWRcbiAgICogaW5zdGFuY2UuXG4gICAqXG4gICAqIFdoZW4gYW4gYXNhciBjYW5ub3QgcnVuIG9uIHRoZSBsYXVuY2hlZCBFbGVjdHJvbiBzaGVsbCAodGhlIGluc3RhbGxlclxuICAgKiB2ZXJzaW9uIGlzIHRvbyBvbGQgZm9yIHRoZSBhcHAgdmVyc2lvbiksIHRoZSByZW5kZXJlciBsb2FkcyBidXQgbmV2ZXJcbiAgICogYm9vdHN0cmFwczogYGRvY3VtZW50LmJvZHlgIHN0YXlzIGVtcHR5IGFuZCBgd2luZG93LmFwcGAgcmVtYWluc1xuICAgKiBgdW5kZWZpbmVkYCBcdTIwMTQgYSBibGFjayBzY3JlZW4uIFJhdGhlciB0aGFuIHdhaXRpbmcgb3V0IHRoZSBmdWxsIHJlYWRpbmVzc1xuICAgKiB0aW1lb3V0LCB0aGUgb3duZWQtdmF1bHQgcmVhZGluZXNzIHBvbGwgY29uY2x1ZGVzIHRoZSBib290IGlzIGRlYWQgb25jZSB0aGVcbiAgICogcmVuZGVyZXIgaGFzIGJlZW4gYGRvY3VtZW50LnJlYWR5U3RhdGVgIGAnY29tcGxldGUnYCBmb3IgdGhpcyBsb25nIHdpdGggbm9cbiAgICogYHdpbmRvdy5hcHBgIGFuZCBhbiBlbXB0eSBgPGJvZHk+YCwgYW5kIHRocm93cyBhXG4gICAqIGBSZW5kZXJlckZhaWxlZFRvSW5pdGlhbGl6ZUVycm9yYC4gT25seSBhcHBsaWVzIHRvIGFuIG93bmVkIGluc3RhbmNlXG4gICAqIChpZ25vcmVkIGluIGF0dGFjaCBtb2RlLCB7QGxpbmsgcG9ydH0gc2V0KS4gU2V0IGAwYCB0byBkaXNhYmxlIGZhc3QtZmFpbCBhbmRcbiAgICogcmVzdG9yZSB0aGUgcGxhaW4gd2FpdC1vdXQtdGhlLXJlYWRpbmVzcy10aW1lb3V0IGJlaGF2aW9yLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgMTAwMDBgXG4gICAqL1xuICByZWFkb25seSBkZWFkQm9vdEdyYWNlSW5NaWxsaXNlY29uZHM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIENEUCBob3N0LlxuICAgKiBEZWZhdWx0cyB0byBgJ2xvY2FsaG9zdCdgXG4gICAqL1xuICByZWFkb25seSBob3N0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBNYXJrcyB7QGxpbmsgcG9ydH0gYXMgdGhlIENEUCBwb3J0IG9mIGEgKipoYXJuZXNzLW93bmVkLCBpc29sYXRlZCBpbnN0YW5jZSoqXG4gICAqIHRoYXQgdGhlIGdsb2JhbCBzZXR1cCBhbHJlYWR5IGxhdW5jaGVkIGFuZCBwcmVwYXJlZCAodmF1bHQgcmVnaXN0ZXJlZCxcbiAgICogcGx1Z2luIGVuYWJsZWQpLlxuICAgKlxuICAgKiBQb3B1bGF0ZWQgYXV0b21hdGljYWxseSBieSB0aGUgZ2xvYmFsIHNldHVwIGFuZCBwcm92aWRlZCB0byB0ZXN0IHdvcmtlcnMgdmlhXG4gICAqIHRoZSBmcmFtZXdvcmsncyBjb250ZXh0IG1lY2hhbmlzbSAoZS5nLiBWaXRlc3QgYHByb3ZpZGVgL2BpbmplY3RgKS4gV2hlbiBzZXQsXG4gICAqIHRoZSB3b3JrZXIgKiphdHRhY2hlcyoqIHRvIHRoZSBvd25lZCBpbnN0YW5jZSBvbiB7QGxpbmsgcG9ydH0gaW5zdGVhZCBvZlxuICAgKiBsYXVuY2hpbmcgaXRzIG93biwgYW5kIHNraXBzIHRoZSB1c2VyLXNjb3BlIHZhdWx0LXJlZ2lzdHJhdGlvbiBwcmVmbGlnaHQgXHUyMDE0XG4gICAqIHRoZSBvd25lZCBpbnN0YW5jZSdzIHZhdWx0IGxpdmVzIGluIGFuIGlzb2xhdGVkIHVzZXItZGF0YSBjb25maWcsIG5vdCB0aGVcbiAgICogdXNlci1zY29wZSByZWdpc3RyeS4gRG8gbm90IHNldCB0aGlzIG1hbnVhbGx5OyBmb3IgcGxhaW4gYXR0YWNoIG1vZGUgdXNlXG4gICAqIHtAbGluayBwb3J0fSBhbG9uZS5cbiAgICpcbiAgICogQGRlZmF1bHQgYHVuZGVmaW5lZGBcbiAgICovXG4gIHJlYWRvbmx5IGlzSGFybmVzc093bmVkSW5zdGFuY2U/OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBvd25lZCBkZXNrdG9wIE9ic2lkaWFuIHdpbmRvdyBpcyBzaG93biBvbiBzY3JlZW4uXG4gICAqXG4gICAqIFdoZW4gYGZhbHNlYCwgdGhlIGhhcm5lc3MgbGF1bmNoZXMgdGhlIG93bmVkIGluc3RhbmNlIHdpdGhcbiAgICoga2VlcC1hbGl2ZSBDaHJvbWl1bSBmbGFncyBhbmQgbW92ZXMgaXRzIHdpbmRvdyAqKm9mZi1zY3JlZW4qKiBvbmNlIEVsZWN0cm9uJ3NcbiAgICogcmVtb3RlIGJyaWRnZSBpcyBhdmFpbGFibGUsIHNvIHRoZSBydW4gbmV2ZXIgc3RlYWxzIGZvY3VzIG9yIHBvcHMgYSB3aW5kb3cgaW5cbiAgICogZnJvbnQgb2YgeW91LiBPZmYtc2NyZWVuIChub3QgbWluaW1pemVkKSBrZWVwcyB0aGUgcmVuZGVyZXIgbGl2ZSwgc29cbiAgICogYHNldFRpbWVvdXRgLCBgcmVxdWVzdEFuaW1hdGlvbkZyYW1lYCwgYDpob3ZlcmAsIGFuZCB0cnVzdGVkIGlucHV0IGJlaGF2ZVxuICAgKiBpZGVudGljYWxseSB0byBhIHZpc2libGUgd2luZG93LiBEZWZhdWx0cyB0byBgdHJ1ZWA7IGludGVncmF0aW9uIHNldHVwXG4gICAqIGV4cGxpY2l0bHkgcGFzc2VzIGBmYWxzZWAgdG8gYXZvaWQgc3RlYWxpbmcgZm9jdXMuIElnbm9yZWQgaW4gYXR0YWNoIG1vZGVcbiAgICogKHtAbGluayBwb3J0fSBzZXQpIFx1MjAxNCB0aGUgaGFybmVzcyBuZXZlclxuICAgKiBtb3ZlcyB0aGUgdXNlcidzIG93biBydW5uaW5nIHdpbmRvdy5cbiAgICpcbiAgICogQGRlZmF1bHQgYHRydWVgXG4gICAqL1xuICByZWFkb25seSBpc09ic2lkaWFuQXBwVmlzaWJsZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEhvdyBvbGQgYSBsZWZ0b3ZlciBkaXJlY3RvcnkgbXVzdCBiZSBiZWZvcmUge0BsaW5rIHNob3VsZFN3ZWVwTGVmdG92ZXJzfVxuICAgKiByZW1vdmVzIGl0LlxuICAgKlxuICAgKiBUaGUgZ2F0ZSBtYXR0ZXJzIG1vc3Qgb24gZGVza3RvcDogcnVucyBhcmUgZGVsaWJlcmF0ZWx5ICoqbm90Kiogc2VyaWFsaXplZFxuICAgKiAoZWFjaCBvd25zIGFuIGlzb2xhdGVkIGluc3RhbmNlKSwgYW5kIGV2ZXJ5IHByb2plY3Qgb24gdGhlIG1hY2hpbmUgc2hhcmVzXG4gICAqIG9uZSB0ZW1wIGRpcmVjdG9yeSwgc28gYSB5b3VuZyBgdGVtcC12YXVsdC0qYCAvIGB1c2VyZGF0YS0qYCBkaXJlY3RvcnkgbWF5XG4gICAqIHdlbGwgYmVsb25nIHRvIGEgcnVuIHRoYXQgaXMgc3RpbGwgaW4gZmxpZ2h0LiBSYWlzZSBpdCBpZiBhIHJ1biBvZiB5b3VycyBjYW5cbiAgICogb3V0bGl2ZSB0aGUgZGVmYXVsdDsgc2V0IGAwYCB0byByZW1vdmUgZXZlcnkgbWF0Y2ggcmVnYXJkbGVzcyBvZiBhZ2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IGA3MjAwMDAwYFxuICAgKi9cbiAgcmVhZG9ubHkgbGVmdG92ZXJNYXhBZ2VJbk1pbGxpc2Vjb25kcz86IG51bWJlcjtcblxuICAvKipcbiAgICogUGlucyB0aGUgKipFbGVjdHJvbiBzaGVsbCoqIChpbnN0YWxsZXIgYnVpbGQpIHRoZSBvd25lZCBpbnN0YW5jZSBydW5zLlxuICAgKlxuICAgKiBBY2NlcHRzIGFuIGV4cGxpY2l0IGAneC55LnonYCwgYCdwdWJsaWMtbGF0ZXN0J2AsIG9yIGAnY2F0YWx5c3QtbGF0ZXN0J2AuXG4gICAqIFRoZSBtYXRjaGluZyBHaXRIdWIgcmVsZWFzZSBpbnN0YWxsZXIgaXMgZG93bmxvYWRlZCBhbmQgZXh0cmFjdGVkIHRvIGFcbiAgICogcG9ydGFibGUgc2hlbGwgKGNhY2hlZCBmb3IgcmV1c2UpLiBQdWJsaWMgcmVsZWFzZXMgb25seSBcdTIwMTQgY2F0YWx5c3QgYnVpbGRzXG4gICAqIGhhdmUgbm8gcHVibGljIGluc3RhbGxlci4gSWdub3JlZCB3aGVuIHtAbGluayBwb3J0fSAoYXR0YWNoIG1vZGUpIGlzIHNldC5cbiAgICpcbiAgICogQGRlZmF1bHQgYHVuZGVmaW5lZGBcbiAgICovXG4gIHJlYWRvbmx5IG9ic2lkaWFuSW5zdGFsbGVyVmVyc2lvbj86IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogUGlucyB0aGUgKipPYnNpZGlhbiBhcHAgdmVyc2lvbioqIChhc2FyKSB0aGUgb3duZWQgaW5zdGFuY2UgcnVucy5cbiAgICpcbiAgICogQWNjZXB0cyBhbiBleHBsaWNpdCBgJ3gueS56J2AsIGAncHVibGljLWxhdGVzdCdgLCBvciBgJ2NhdGFseXN0LWxhdGVzdCdgLlxuICAgKiBWZXJzaW9ucyBhdCBvciBhYm92ZSB0aGUgc2hlbGwgdmVyc2lvbiBhcmUgYXBwbGllZCBhcyBhIGNoZWFwIGFzYXIgc3dhcDtcbiAgICogb2xkZXIgdmVyc2lvbnMgdHJhbnNwYXJlbnRseSB1c2UgdGhlIG1hdGNoaW5nIGluc3RhbGxlciBzaGVsbC4gV2hlbiBvbWl0dGVkLFxuICAgKiB0aGUgdXNlcidzIGN1cnJlbnRseS1pbnN0YWxsZWQgdmVyc2lvbiBpcyB1c2VkLiBJZ25vcmVkIHdoZW4ge0BsaW5rIHBvcnR9XG4gICAqIChhdHRhY2ggbW9kZSkgaXMgc2V0LlxuICAgKlxuICAgKiBAZGVmYXVsdCBgdW5kZWZpbmVkYFxuICAgKi9cbiAgcmVhZG9ubHkgb2JzaWRpYW5WZXJzaW9uPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBDRFAgcG9ydCBvZiBhbiBhbHJlYWR5LXJ1bm5pbmcgT2JzaWRpYW4gdG8gKiphdHRhY2gqKiB0byAodGhlXG4gICAqIGAtLXJlbW90ZS1kZWJ1Z2dpbmctcG9ydGAgaXQgd2FzIGxhdW5jaGVkIHdpdGgpLiBXaGVuIHNldCwgdGhlIGhhcm5lc3NcbiAgICogYXR0YWNoZXMgaW5zdGVhZCBvZiBvd25pbmcgYW4gaW5zdGFuY2UsIGFuZCB0aGUgdmVyc2lvbiBrbm9icyBhcmUgaWdub3JlZC5cbiAgICogV2hlbiBvbWl0dGVkLCBhbiBvd25lZCBpc29sYXRlZCBpbnN0YW5jZSBpcyBsYXVuY2hlZCBvbiBhbiBhdXRvbWF0aWNhbGx5XG4gICAqIGNob3NlbiBmcmVlIHBvcnQgKG5vIHBvcnQgaXMgaGFyZGNvZGVkKS5cbiAgICpcbiAgICogQGRlZmF1bHQgYHVuZGVmaW5lZGBcbiAgICovXG4gIHJlYWRvbmx5IHBvcnQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gbGF1bmNoIHRoZSBvd25lZCBpbnN0YW5jZSB3aXRoIENocm9taXVtJ3Mgc2FuZGJveCBkaXNhYmxlZFxuICAgKiAoYC0tbm8tc2FuZGJveGApLlxuICAgKlxuICAgKiBOZWVkZWQgdG8gYm9vdCBhbiBvd25lZCBpbnN0YW5jZSBvbiBMaW51eCB3aGVuIHRoZXJlIGlzIG5vXG4gICAqIGNvcnJlY3RseS1jb25maWd1cmVkIHNldHVpZCBgY2hyb21lLXNhbmRib3hgIGhlbHBlciBcdTIwMTQgZS5nLiBhIHBvcnRhYmxlIHNoZWxsXG4gICAqIGV4dHJhY3RlZCBmcm9tIGFuIGluc3RhbGxlciwgb3IgYSBDSSBydW5uZXIgbGF1bmNoaW5nIGFzIGEgbm9uLXJvb3QgdXNlciwgaW5cbiAgICogd2hpY2ggY2FzZSB0aGUgcmVuZGVyZXIgb3RoZXJ3aXNlIHJlZnVzZXMgdG8gc3RhcnQuIEhhcm1sZXNzIG9uXG4gICAqIFdpbmRvd3MvbWFjT1MuIElnbm9yZWQgaW4gYXR0YWNoIG1vZGUgKHtAbGluayBwb3J0fSBzZXQpIFx1MjAxNCB0aGUgaGFybmVzcyBuZXZlclxuICAgKiByZWxhdW5jaGVzIHRoZSB1c2VyJ3MgcnVubmluZyBpbnN0YW5jZS5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkRGlzYWJsZVNhbmRib3g/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBoYXJuZXNzIHJlbW92ZXMgdGhlIHRlbXBvcmFyeSBkaXJlY3RvcmllcyBlYXJsaWVyIHJ1bnMgbGVha2VkLlxuICAgKlxuICAgKiBXaGVuIGB0cnVlYCAodGhlIGRlZmF1bHQpLCBlYWNoIHJ1biBzd2VlcHMgYXQgc3RhcnQgYW5kIGF0IGVuZCBmb3JcbiAgICogYHRlbXAtdmF1bHQtKmAgc3RhZ2luZyBkaXJlY3RvcmllcyBhbmQgb3duZWQgYHVzZXJkYXRhLSpgIGluc3RhbmNlIHByb2ZpbGVzXG4gICAqIG9sZGVyIHRoYW4ge0BsaW5rIGxlZnRvdmVyTWF4QWdlSW5NaWxsaXNlY29uZHN9LiBBIHJ1biBraWxsZWQgbWlkLWZsaWdodFxuICAgKiBuZXZlciByZWFjaGVzIGl0cyBvd24gY2xlYW51cCwgc28gd2l0aG91dCB0aGlzIHRoZSB0ZW1wIGRpcmVjdG9yeSBncm93c1xuICAgKiB3aXRob3V0IGJvdW5kLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgdHJ1ZWBcbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZFN3ZWVwTGVmdG92ZXJzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciBhbiAqKnVucnVubmFibGUqKiBpbnN0YWxsZXJcdTIxOTRhcHAgdmVyc2lvbiBwYWlyIGZhaWxzIGZhc3QgYmVmb3JlIGxhdW5jaC5cbiAgICpcbiAgICogV2hlbiBgdHJ1ZWAgKHRoZSBkZWZhdWx0KSwgYW4gaW5zdGFsbGVyIGJlbG93IHRoZSBhcHAncyBydW4gZmxvb3IgKHRoZVxuICAgKiBvbGRlc3QgaW5zdGFsbGVyIHRoZSBhcHAncyBhc2FyIGNhbiBib290IG9uKSB0aHJvd3NcbiAgICogYEluY29tcGF0aWJsZUluc3RhbGxlclZlcnNpb25FcnJvcmAgZnJvbSB2ZXJzaW9uIHJlc29sdXRpb24sIGJlZm9yZSBhbnl0aGluZ1xuICAgKiBpcyBkb3dubG9hZGVkIG9yIGxhdW5jaGVkLiBTZXQgYGZhbHNlYCB0byBsZXQgdGhlIHBpbiBwcm9jZWVkIHRvIGxhdW5jaFxuICAgKiBpbnN0ZWFkIFx1MjAxNCB3aGVyZSB0aGUgcmVhY3RpdmUgZGVhZC1ib290IGZhc3QtZmFpbFxuICAgKiAoYFJlbmRlcmVyRmFpbGVkVG9Jbml0aWFsaXplRXJyb3JgLCBzZWUge0BsaW5rIGRlYWRCb290R3JhY2VJbk1pbGxpc2Vjb25kc30pXG4gICAqIHN0aWxsIGNhdGNoZXMgdGhlIGJsYWNrLXNjcmVlbiBib290LCBhbmQgdGhlIGAndW5ydW5uYWJsZSdgIHZlcmRpY3QgaXNcbiAgICogc3VyZmFjZWQgYXMgZGF0YSByYXRoZXIgdGhhbiB0aHJvd24uIE9ubHkgYXBwbGllcyB0byBhbiBvd25lZCBpbnN0YW5jZVxuICAgKiAoaWdub3JlZCBpbiBhdHRhY2ggbW9kZSwge0BsaW5rIHBvcnR9IHNldCkuXG4gICAqXG4gICAqIEBkZWZhdWx0IGB0cnVlYFxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkVGhyb3dPbkluY29tcGF0aWJsZUluc3RhbGxlcj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgYSAqKnNpbGVudCBhc2FyIGZhbGxiYWNrKiogZmFpbHMgZmFzdCBhZnRlciBib290LlxuICAgKlxuICAgKiBXaGVuIGFuIGFzYXIgaXMgc3dhcHBlZCBvbnRvIGFuIGluc3RhbGxlciBzaGVsbCB0b28gb2xkIGZvciBpdCwgdGhlIGluc3RhbmNlXG4gICAqIG1heSBub3QgZGVhZC1ib290IFx1MjAxNCBpdCBjYW4gc2lsZW50bHkgcmV2ZXJ0IHRvIHRoZSBpbnN0YWxsZXIncyBvd24gYnVuZGxlZFxuICAgKiBhc2FyIGFuZCBydW4gdGhlICoqd3JvbmcgKG9sZGVyKSoqIHZlcnNpb24gYmVoaW5kIGEgaGVhbHRoeSBVSS4gV2hlbiBgdHJ1ZWBcbiAgICogKHRoZSBkZWZhdWx0KSwgdGhlIHRyYW5zcG9ydCB2ZXJpZmllcyB0aGUgcnVubmluZyBhcHAgdmVyc2lvbiBhZ2FpbnN0IHRoZSBwaW5cbiAgICogcG9zdC1ib290IGFuZCB0aHJvd3MgYFNpbGVudEFzYXJGYWxsYmFja0Vycm9yYCBvbiBhIG1pc21hdGNoLiBTZXQgYGZhbHNlYCB0b1xuICAgKiBsZXQgdGhlIGJvb3QgcHJvY2VlZCBcdTIwMTQgdGhlIG1pc21hdGNoIGlzIHRoZW4gc3VyZmFjZWQgYXMgZGF0YSAodGhlIGZhbGxiYWNrXG4gICAqIHZlcmRpY3QpIHJhdGhlciB0aGFuIHRocm93bi4gT25seSBhcHBsaWVzIHRvIGFuIG93bmVkIGluc3RhbmNlIHJ1bm5pbmcgYVxuICAgKiBzd2FwcGVkLWluIGFzYXIgKGlnbm9yZWQgaW4gYXR0YWNoIG1vZGUsIHtAbGluayBwb3J0fSBzZXQsIGFuZCB3aGVuIG5vIGFzYXIgaXNcbiAgICogc3dhcHBlZCBcdTIwMTQgdGhlcmUgaXMgbm90aGluZyB0byB2ZXJpZnkpLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgdHJ1ZWBcbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZFRocm93T25TaWxlbnRBc2FyRmFsbGJhY2s/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBvd25lZC1pbnN0YW5jZSBjb21wYXRpYmlsaXR5ICoqbmFnIHdhcm5pbmdzKiogYXJlIGVtaXR0ZWQuXG4gICAqXG4gICAqIENvdmVycyAqKmJvdGgqKiBjb21wYXRpYmlsaXR5IG5hZ3M6IHRoZSBvZmZsaW5lIGluc3RhbGxlclx1MjE5NGFwcCB3YXJuaW5nIChhXG4gICAqIHJ1bm5hYmxlIGluc3RhbGxlciBiZWxvdyB0aGUgcmVjb21tZW5kZWQgZmxvb3IpIGFuZCB0aGUgcG9zdC1ib290XG4gICAqIHJ1bnRpbWUtRWxlY3Ryb24gd2FybmluZyAoYSBsaXZlIEVsZWN0cm9uIGJlbG93IHRoZSBhcHAncyByZWNvbW1lbmRlZFxuICAgKiBtaW5pbXVtKS4gV2hlbiBgdHJ1ZWAgKHRoZSBkZWZhdWx0KSBlYWNoIGZpcmVzIHZpYSB0aGUgaGFybmVzcyBsb2c7IHNldFxuICAgKiBgZmFsc2VgIHRvIHNpbGVuY2UgYm90aCBcdTIwMTQgdGhlIHZlcmRpY3RzIGFyZSBzdGlsbCBjb21wdXRlZCBhbmQgc3VyZmFjZWQgYXNcbiAgICogZGF0YSAoYGNvbXBhdGliaWxpdHlgIC8gYGVsZWN0cm9uQ29tcGF0aWJpbGl0eWApLCBvbmx5IHRoZSBsb2cgaXMgc3VwcHJlc3NlZC5cbiAgICogRG9lcyBub3QgYWZmZWN0IHRoZSBgJ3VucnVubmFibGUnYCB0aHJvdyAoc2VlXG4gICAqIHtAbGluayBzaG91bGRUaHJvd09uSW5jb21wYXRpYmxlSW5zdGFsbGVyfSkuIE9ubHkgYXBwbGllcyB0byBhbiBvd25lZFxuICAgKiBpbnN0YW5jZSAoaWdub3JlZCBpbiBhdHRhY2ggbW9kZSwge0BsaW5rIHBvcnR9IHNldCkuXG4gICAqXG4gICAqIEBkZWZhdWx0IGB0cnVlYFxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkV2Fybk9uQ29tcGF0aWJpbGl0eUlzc3Vlcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIERpc2NyaW1pbmFudCBmb3IgdGhlIHRyYW5zcG9ydCB0eXBlLlxuICAgKi9cbiAgcmVhZG9ubHkgdHlwZTogJ29ic2lkaWFuLWNkcCc7XG59XG5cbi8qKlxuICogRGlzY3JpbWluYXRlZCB1bmlvbiBvZiBhbGwgc3VwcG9ydGVkIHRyYW5zcG9ydCBjb25maWd1cmF0aW9ucy5cbiAqXG4gKiBVc2VkIGluIHZpdGVzdCBgZW52aXJvbm1lbnRPcHRpb25zLm9ic2lkaWFuVHJhbnNwb3J0YCB0byBzZWxlY3QgYW5kXG4gKiBjb25maWd1cmUgdGhlIHRyYW5zcG9ydCBmb3IgaW50ZWdyYXRpb24gdGVzdHMuXG4gKi9cbmV4cG9ydCB0eXBlIE9ic2lkaWFuVHJhbnNwb3J0T3B0aW9ucyA9XG4gIHwgT2JzaWRpYW5BbmRyb2lkQXBwaXVtVHJhbnNwb3J0T3B0aW9uc1xuICB8IE9ic2lkaWFuQ2RwVHJhbnNwb3J0T3B0aW9ucztcblxuLyoqXG4gKiBXaGV0aGVyIHRoZXNlIG9wdGlvbnMgZGVzY3JpYmUgYSBtb2JpbGUgdHJhbnNwb3J0LlxuICpcbiAqIFRoZSBzYW1lIGZhY3QgYXMge0BsaW5rIE9ic2lkaWFuVHJhbnNwb3J0LmlzTW9iaWxlfSwgYnV0IGtub3dhYmxlIGZyb20gdGhlIG9wdGlvbnMgYWxvbmUgXHUyMDE0IHNvIGEgY2FsbGVyXG4gKiBjYW4gYWN0IG9uIGl0IGJlZm9yZSBwYXlpbmcgZm9yIGEgZGV2aWNlLiBSZWFkaW5nIGl0IG9mZiBhIGxpdmUgdHJhbnNwb3J0IG1lYW5zIGJvb3RpbmcgdGhlIGVtdWxhdG9yXG4gKiBhbmQgdGhlIEFwcGl1bSBzZXNzaW9uIGZpcnN0LCB3aGljaCBpcyB+NzAgcyB0byBsZWFybiBzb21ldGhpbmcgdGhlIGRpc2NyaW1pbmFudCBhbHJlYWR5IHNheXMuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgcmVzb2x2ZWQgdHJhbnNwb3J0IG9wdGlvbnMuXG4gKiBAcmV0dXJucyBgdHJ1ZWAgZm9yIGEgbW9iaWxlIHRyYW5zcG9ydCwgYGZhbHNlYCBmb3IgZGVza3RvcC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrSXNNb2JpbGVUcmFuc3BvcnQob3B0aW9uczogT2JzaWRpYW5UcmFuc3BvcnRPcHRpb25zKTogYm9vbGVhbiB7XG4gIHJldHVybiBvcHRpb25zLnR5cGUgPT09ICdvYnNpZGlhbi1hbmRyb2lkLWFwcGl1bSc7XG59XG5cbi8qKlxuICogVGhlIGNvbmZpZyBmb2xkZXIgYSB2YXVsdCB0aGUgaGFybmVzcyAqKm93bnMqKiB3aWxsIGFjdHVhbGx5IHJlYWQsIG9yIGB1bmRlZmluZWRgIHdoZW4gaXQgaXNcbiAqIE9ic2lkaWFuJ3Mgb3duIGRlZmF1bHQuXG4gKlxuICoge0BsaW5rIE9ic2lkaWFuQ2RwVHJhbnNwb3J0T3B0aW9ucy5jb25maWdEaXJlY3Rvcnl9IGlzIHRoZSBvbmx5IGtub2IgdGhhdCBtb3ZlcyBpdCwgYW5kIGl0IGlzXG4gKiBtZWFuaW5nZnVsIG9ubHkgaW4gb3duZWQgbW9kZTogaW4gYXR0YWNoIG1vZGUgdGhlIHZhdWx0IGlzIG9wZW5lZCBieSB0aGUgdXNlcidzIG93biBPYnNpZGlhbiB1bmRlclxuICogaXRzIG93biBjb25maWcsIGFuZCBvbiBBbmRyb2lkIHRoZXJlIGlzIG5vIG92ZXJyaWRlIGF0IGFsbC4gQW55dGhpbmcgdGhlIGhhcm5lc3Mgd3JpdGVzIGludG8gYSB2YXVsdFxuICogYmVmb3JlIGl0IGlzIG9wZW5lZCBoYXMgdG8gZ28gd2hlcmUgdGhhdCB2YXVsdCB3aWxsIGxvb2ssIHNvIHRoaXMgaXMgdGhlIGFuc3dlciBldmVyeSBzdWNoIHdyaXRlclxuICogbmVlZHMgXHUyMDE0IHNlZSBgZW5zdXJlSGVhZGxlc3NWYXVsdENvbmZpZ2AuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgcmVzb2x2ZWQgdHJhbnNwb3J0IG9wdGlvbnMuXG4gKiBAcmV0dXJucyBUaGUgb3ZlcnJpZGRlbiBjb25maWcgZm9sZGVyIG5hbWUsIG9yIGB1bmRlZmluZWRgIGZvciBPYnNpZGlhbidzIGRlZmF1bHQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlT3duZWRDb25maWdEaXJlY3Rvcnkob3B0aW9uczogT2JzaWRpYW5UcmFuc3BvcnRPcHRpb25zKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9wdGlvbnMudHlwZSAhPT0gJ29ic2lkaWFuLWNkcCcgfHwgb3B0aW9ucy5wb3J0ICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgcmV0dXJuIG9wdGlvbnMuY29uZmlnRGlyZWN0b3J5O1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBcW5CTyxTQUFTLHVCQUF1QixTQUE0QztBQUNqRixTQUFPLFFBQVEsU0FBUztBQUMxQjtBQWVPLFNBQVMsNEJBQTRCLFNBQXVEO0FBQ2pHLE1BQUksUUFBUSxTQUFTLGtCQUFrQixRQUFRLFNBQVMsUUFBVztBQUNqRSxXQUFPO0FBQUEsRUFDVDtBQUVBLFNBQU8sUUFBUTtBQUNqQjsiLAogICJuYW1lcyI6IFtdCn0K
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3RyYW5zcG9ydC1vcHRpb25zLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogRGlzY3JpbWluYXRlZCB1bmlvbiB0eXBlcyBmb3IgY29uZmlndXJpbmcgdGhlIE9ic2lkaWFuIHRyYW5zcG9ydFxuICogdmlhIHZpdGVzdCBgZW52aXJvbm1lbnRPcHRpb25zYC5cbiAqL1xuXG4vKipcbiAqIFRyYW5zcG9ydCBvcHRpb25zIGZvciBBbmRyb2lkIHRlc3RpbmcgdmlhIEFwcGl1bSBXZWJWaWV3IGluamVjdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPYnNpZGlhbkFuZHJvaWRBcHBpdW1UcmFuc3BvcnRPcHRpb25zIHtcbiAgLyoqXG4gICAqIEFwcCBwYWNrYWdlIChBbmRyb2lkKSBvciBidW5kbGUgSUQgKGlPUykuXG4gICAqIERlZmF1bHRzIHRvIGAnbWQub2JzaWRpYW4nYFxuICAgKi9cbiAgcmVhZG9ubHkgYXBwSWQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzIGZvciB0aGUgYXV0by1zdGFydGVkIEFwcGl1bSBzZXJ2ZXIgdG8gYmVjb21lIHJlYWR5XG4gICAqIChpdHMgYC9zdGF0dXNgIGVuZHBvaW50IHRvIHJlc3BvbmQpLlxuICAgKlxuICAgKiBPbmx5IGFwcGxpZXMgd2hlbiB0aGUgaGFybmVzcyBhdXRvLXN0YXJ0cyB0aGUgQXBwaXVtIHNlcnZlclxuICAgKiAoe0BsaW5rIHNob3VsZEF1dG9TdGFydEFwcGl1bX0pOyBpZ25vcmVkIHdoZW4gYXR0YWNoaW5nIHRvIGFuXG4gICAqIGFscmVhZHktcnVubmluZyBzZXJ2ZXIuIE9uIGEgY29sZCBtYWNoaW5lIHRoZSBgbnB4IGFwcGl1bWAgc2VydmVyIGNhbiB0YWtlXG4gICAqIGEgd2hpbGUgdG8gZmluaXNoIGJvb3RpbmcsIHNvIHJhaXNlIHRoaXMgaWYgc3RhcnR1cCB0aW1lcyBvdXQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGAxODAwMDBgXG4gICAqL1xuICByZWFkb25seSBhcHBpdW1TdGFydFRpbWVvdXRJbk1pbGxpc2Vjb25kcz86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIEFwcGl1bSBzZXJ2ZXIgVVJMIChlLmcuIGAnaHR0cDovL2xvY2FsaG9zdDo0NzIzJ2ApLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBwaXVtVXJsOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzIGZvciBPYnNpZGlhbiBNb2JpbGUgdG8gZ2V0IGFzIGZhciBhcyBgZ2xvYmFsVGhpcy5hcHBgXG4gICAqIGV4aXN0aW5nIGFmdGVyIHRoZSB2YXVsdCBpcyAocmUpb3BlbmVkLlxuICAgKlxuICAgKiBUaGUgZmlyc3Qgb2YgdGhlIHR3byBidWRnZXRzIHRoZSB0cmFuc3BvcnQgc3BlbmRzIGFmdGVyIGBsb2NhdGlvbi5yZWxvYWQoKWAuXG4gICAqIEl0IGNvdmVycyB0aGUgYXBwJ3Mgb3duIGNvbGQgc3RhcnQgXHUyMDE0IHRoZSBXZWJWaWV3IHJlbG9hZGluZyBhbmQgT2JzaWRpYW4nc1xuICAgKiBidW5kbGUgY29taW5nIHVwIFx1MjAxNCB3aGljaCBvbiBhIGNvbGQgb3IgY29udGVuZGVkIGd1ZXN0IGNhbiB0YWtlIG1pbnV0ZXMsIGFuZFxuICAgKiBpcyBub3Qgd29yayB7QGxpbmsgbGF5b3V0UmVhZHlUaW1lb3V0SW5NaWxsaXNlY29uZHN9IHNob3VsZCBiZSBzaXplZCBmb3IuXG4gICAqIE9ubHkgb25jZSBgZ2xvYmFsVGhpcy5hcHBgIGFwcGVhcnMgZG9lcyB0aGF0IGZhciB0aWdodGVyIGNsb2NrIHN0YXJ0LlxuICAgKlxuICAgKiBTcGxpdHRpbmcgdGhlIHR3byBpcyB3aGF0IHN0b3BzIGEgZmlyc3QgcnVuIGFmdGVyIGEgbWFjaGluZSByZXN0YXJ0IGZyb21cbiAgICogZmFpbGluZyBieSBkZXNpZ246IHRoZSBvbGQgc2luZ2xlIDkwcyB3YWxsIGNsb2NrIHN0YXJ0ZWQgYXQgdGhlIHJlbG9hZCwgc28gYVxuICAgKiBjb2xkIGFwcCBzdGFydCBzcGVudCBpdCBiZWZvcmUgT2JzaWRpYW4gaGFkIGJlZ3VuIGxheWluZyBhbnl0aGluZyBvdXQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGAxODAwMDBgXG4gICAqL1xuICByZWFkb25seSBhcHBTdGFydFRpbWVvdXRJbk1pbGxpc2Vjb25kcz86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIEFuZHJvaWQgQVZEIChBbmRyb2lkIFZpcnR1YWwgRGV2aWNlKSBuYW1lLlxuICAgKlxuICAgKiBUaGUgdHJhbnNwb3J0IGZhY3RvcnkgbGF1bmNoZXMgYGVtdWxhdG9yIC1hdmQgPGF2ZE5hbWU+YCBhcyBhIGJhY2tncm91bmRcbiAgICogcHJvY2VzcyBhbmQgcG9sbHMgdW50aWwgdGhlIGRldmljZSBhcHBlYXJzLiBUaGUgZW11bGF0b3IgaXMga2lsbGVkXG4gICAqIG9uIHRyYW5zcG9ydCBkaXNwb3NhbC5cbiAgICpcbiAgICogUnVuIGBlbXVsYXRvciAtbGlzdC1hdmRzYCB0byBzZWUgYXZhaWxhYmxlIEFWRCBuYW1lcy5cbiAgICovXG4gIHJlYWRvbmx5IGF2ZE5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGRldmljZSBVRElEIHRvIHJldXNlIChlLmcuIGAnZW11bGF0b3ItNTU1NCdgKS5cbiAgICpcbiAgICogUG9wdWxhdGVkIGF1dG9tYXRpY2FsbHkgYnkgdGhlIGdsb2JhbCBzZXR1cCBhZnRlciB0aGUgQXBwaXVtIHNlc3Npb24gaXNcbiAgICogZXN0YWJsaXNoZWQuIFdoZW4gcHJlc2VudCBhbG9uZ3NpZGUge0BsaW5rIHNlc3Npb25JZH0sIHRoZSB0cmFuc3BvcnRcbiAgICogZmFjdG9yeSBza2lwcyBlbXVsYXRvciBzdGFydHVwIGFuZCBhdHRhY2hlcyB0byB0aGUgZXhpc3Rpbmcgc2Vzc2lvbi5cbiAgICovXG4gIHJlYWRvbmx5IGRldmljZUlkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaW1lb3V0IGluIG1pbGxpc2Vjb25kcyBmb3Igd2FpdGluZywgYWZ0ZXIgYHN5cy5ib290X2NvbXBsZXRlZGAsIGZvciB0aGVcbiAgICogZW11bGF0b3IgdG8gYmVjb21lIGlkbGUgYmVmb3JlIHRoZSBBcHBpdW0gc2Vzc2lvbiBpcyBlc3RhYmxpc2hlZC5cbiAgICpcbiAgICogYHN5cy5ib290X2NvbXBsZXRlZGAgZmlyZXMgKmJlZm9yZSogdGhlIGd1ZXN0IGlzIGFjdHVhbGx5IGlkbGU6IHBhY2thZ2VcbiAgICogb3B0aW1pemF0aW9uIGFuZCBzeXN0ZW0gc2VydmljZXMga2VlcCBjaHVybmluZywgc28gZXN0YWJsaXNoaW5nIHRoZSBzZXNzaW9uXG4gICAqIGltbWVkaWF0ZWx5IG1ha2VzIGV2ZXJ5IG9uZSBvZiBVaUF1dG9tYXRvcjIncyBzZXJpYWxpemVkIGBhZGJgIHJvdW5kLXRyaXBzXG4gICAqIGNvbnRlbmQgd2l0aCB0aGF0IHdvcmsgYW5kIGluZmxhdGVzIHNlc3Npb24gZXN0YWJsaXNobWVudCB+M3guIFRoZSBmYWN0b3J5XG4gICAqIGluc3RlYWQgd2FpdHMgdW50aWwgdGhlIGJvb3QgYW5pbWF0aW9uIGhhcyBzdG9wcGVkIGFuZCB0aGUgcGFja2FnZSBtYW5hZ2VyXG4gICAqIGlzIHNlcnZpbmcsIHByb2NlZWRpbmcgZWFybHkgb25jZSBpZGxlIG9yIGFmdGVyIHRoaXMgYnVkZ2V0IChiZXN0LWVmZm9ydCBcdTIwMTQgYVxuICAgKiB0aW1lb3V0IGxvZ3MgYSB3YXJuaW5nIGFuZCBwcm9jZWVkcykuIFNldCBgMGAgdG8gc2tpcCB0aGUgd2FpdC5cbiAgICpcbiAgICogQXBwbGllcyB0byBhICoqcmV1c2VkKiogZGV2aWNlIGFzIHdlbGwgYXMgYSBoYXJuZXNzLXN0YXJ0ZWQgb25lLiBBIGRldmljZVxuICAgKiB0aGF0IGlzIG1lcmVseSBwcmVzZW50IGluIGBhZGIgZGV2aWNlc2AgY2FuIHN0aWxsIGJlIG1pZC1gZGV4Mm9hdGAsIGFuZFxuICAgKiBza2lwcGluZyB0aGUgZ2F0ZSB0aGVyZSBpcyB3aGF0IGxlZnQgYSBydW4gcG9sbGluZyBhIGNodXJuaW5nIGd1ZXN0IHVudGlsXG4gICAqIHtAbGluayBsYXlvdXRSZWFkeVRpbWVvdXRJbk1pbGxpc2Vjb25kc30gcmFuIG91dC5cbiAgICpcbiAgICogQGRlZmF1bHQgYDYwMDAwYFxuICAgKi9cbiAgcmVhZG9ubHkgZGV2aWNlSWRsZVRpbWVvdXRJbk1pbGxpc2Vjb25kcz86IG51bWJlcjtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgYXV0by1zdGFydGVkIEFwcGl1bSBzZXJ2ZXIgY29uc29sZSB3aW5kb3cgaXMgc2hvd24uXG4gICAqXG4gICAqIFdoZW4gYGZhbHNlYCAodGhlIGRlZmF1bHQpLCB0aGUgYG5weCBhcHBpdW1gIHNlcnZlciBwcm9jZXNzIGlzIHNwYXduZWQgd2l0aFxuICAgKiBpdHMgY29uc29sZSB3aW5kb3cgaGlkZGVuIChgd2luZG93c0hpZGVgKSBhbmQgaXRzIG91dHB1dCBkaXNjYXJkZWQsIHNvIGl0XG4gICAqIG5laXRoZXIgc3RlYWxzIGZvY3VzIG5vciB3cml0ZXMgdG8gdGhlIGludm9raW5nIHRlcm1pbmFsLiBJZ25vcmVkIHdoZW5cbiAgICogYXR0YWNoaW5nIHRvIGFuIGFscmVhZHktcnVubmluZyBBcHBpdW0gc2VydmVyICh7QGxpbmsgc2hvdWxkQXV0b1N0YXJ0QXBwaXVtfVxuICAgKiBgZmFsc2VgLCBvciB0aGUgc2VydmVyIGFscmVhZHkgcmVhY2hhYmxlKS4gU2V0IGB0cnVlYCB0byBzZWUgdGhlIHNlcnZlciBsb2cgd2luZG93XG4gICAqIGFuZCBpdHMgbGl2ZSBvdXRwdXQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIHJlYWRvbmx5IGlzQXBwaXVtQ29uc29sZVZpc2libGU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBhdXRvLXN0YXJ0ZWQgQW5kcm9pZCBlbXVsYXRvciB3aW5kb3cgaXMgc2hvd24gb24gc2NyZWVuLlxuICAgKlxuICAgKiBXaGVuIGBmYWxzZWAgKHRoZSBkZWZhdWx0KSwgdGhlIGVtdWxhdG9yIGlzIHN0YXJ0ZWQgd2l0aCBgLW5vLXdpbmRvd2BcbiAgICogKGhlYWRsZXNzKSwgc28gaXQgbmV2ZXIgc3RlYWxzIGZvY3VzLiBJZ25vcmVkIHdoZW4gcmV1c2luZyBhbiBhbHJlYWR5LXJ1bm5pbmdcbiAgICogZGV2aWNlIChub3RoaW5nIGlzIGxhdW5jaGVkIHRvIGhpZGUpLiBTZXQgYHRydWVgIHRvIHdhdGNoIHRoZSBlbXVsYXRvciBVSS5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgcmVhZG9ubHkgaXNFbXVsYXRvclZpc2libGU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaW1lb3V0IGluIG1pbGxpc2Vjb25kcyBmb3Igd2FpdGluZyBmb3IgYGFwcC53b3Jrc3BhY2UubGF5b3V0UmVhZHlgLCBjb3VudGVkXG4gICAqIGZyb20gdGhlIG1vbWVudCB7QGxpbmsgYXBwU3RhcnRUaW1lb3V0SW5NaWxsaXNlY29uZHN9IGlzIHNhdGlzZmllZCBcdTIwMTQgbm90XG4gICAqIGZyb20gdGhlIHJlbG9hZC5cbiAgICpcbiAgICogVGhlIHNlY29uZCBvZiB0aGUgdHdvIGJ1ZGdldHMgdGhlIHRyYW5zcG9ydCBzcGVuZHMgYWZ0ZXIgYGxvY2F0aW9uLnJlbG9hZCgpYC5cbiAgICogSXQgY292ZXJzIG9ubHkgT2JzaWRpYW4ncyBvd24gd29yayBcdTIwMTQgb3BlbmluZyB0aGUgdmF1bHQgYW5kIGxvYWRpbmcgZXZlcnlcbiAgICogcGx1Z2luIFx1MjAxNCBvbmNlIHRoZSBhcHAgaXRzZWxmIGlzIHVwLCB3aGljaCBpcyB3aHkgaXQgY2FuIHN0YXkgdGlnaHQ6IG1lYXN1cmVkXG4gICAqIGF0IH4xcywgYW5kIFx1MjI2NDguNHMgdW5kZXIgMTItY29yZSArIGRpc2sgKyBtZW1vcnkgc3RyZXNzLlxuICAgKlxuICAgKiBCbG93aW5nIGl0IHRoZXJlZm9yZSBtZWFucyBPYnNpZGlhbiBnZW51aW5lbHkgc3RhbGxlZCwgKipvcioqIHRoYXQgZWFjaCBwcm9iZVxuICAgKiByb3VuZC10cmlwIGlzIGJlaW5nIGluZmxhdGVkIGJ5IGEgYnVzeSBndWVzdC4gVGhlIHRpbWVvdXQgZXJyb3IgbmFtZXMgd2hpY2gsXG4gICAqIGJ5IHJlcG9ydGluZyB0aGUgcHJvYmUgY291bnQgYW5kIHNsb3dlc3Qgcm91bmQtdHJpcCBhbG9uZ3NpZGUgdGhlIGZ1cnRoZXN0XG4gICAqIHN0YXJ0dXAgbWlsZXN0b25lIHJlYWNoZWQ6IGEgaGFuZGZ1bCBvZiBwcm9iZXMgZWFjaCB0YWtpbmcgdGVucyBvZiBzZWNvbmRzIGlzXG4gICAqIGEgY29udGVuZGVkIGd1ZXN0LCBhbmQgdGhlIGtub2IgZm9yIHRoYXQgaXNcbiAgICoge0BsaW5rIGRldmljZUlkbGVUaW1lb3V0SW5NaWxsaXNlY29uZHN9LCBub3QgdGhpcyBvbmUuXG4gICAqXG4gICAqIEBkZWZhdWx0IGA5MDAwMGBcbiAgICovXG4gIHJlYWRvbmx5IGxheW91dFJlYWR5VGltZW91dEluTWlsbGlzZWNvbmRzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBIb3cgb2xkIGEgbGVmdG92ZXIgKipob3N0KiogZGlyZWN0b3J5IG11c3QgYmUgYmVmb3JlXG4gICAqIHtAbGluayBzaG91bGRTd2VlcExlZnRvdmVyc30gcmVtb3ZlcyBpdC5cbiAgICpcbiAgICogR292ZXJucyB0aGUgaG9zdC1zaWRlIHN3ZWVwIG9ubHkgKHRoZSBgdGVtcC12YXVsdC0qYCBzdGFnaW5nIGRpcmVjdG9yaWVzXG4gICAqIHRoaXMgcnVuJ3MgbWFjaGluZSBhY2N1bXVsYXRlcyBpbiBpdHMgdGVtcCBkaXIpLiBUaGUgKipkZXZpY2UqKiBzd2VlcCBpc1xuICAgKiB1bmNvbmRpdGlvbmFsOiBBbmRyb2lkIHJ1bnMgaG9sZCB0aGUgZXhjbHVzaXZlIGBhbmRyb2lkYCBzZXR1cCBsb2NrLCBzbyBub1xuICAgKiBjb25jdXJyZW50IHJ1biBjYW4gb3duIGEgZGV2aWNlIHZhdWx0LCBhbmQgYW4gYWdlIGdhdGUgdGhlcmUgd291bGQgbGV0IGFcbiAgICogdmF1bHQgbGVha2VkIG1pbnV0ZXMgYWdvIHN1cnZpdmUgaW50byB0aGUgbmV4dCBydW4gXHUyMDE0IHdoaWNoIGlzIHRoZSBmYWlsdXJlXG4gICAqIGxvb3AgdGhlIHN3ZWVwIGV4aXN0cyB0byBicmVhay4gU2V0IGAwYCB0byByZW1vdmUgZXZlcnkgaG9zdCBtYXRjaCB0b28uXG4gICAqXG4gICAqIEBkZWZhdWx0IGA3MjAwMDAwYFxuICAgKi9cbiAgcmVhZG9ubHkgbGVmdG92ZXJNYXhBZ2VJbk1pbGxpc2Vjb25kcz86IG51bWJlcjtcblxuICAvKipcbiAgICogVGltZW91dCBpbiBtaWxsaXNlY29uZHMgZm9yIHdhaXRpbmcsIGFmdGVyIHRoZSBkZXZpY2UtaWRsZSBnYXRlLCBmb3IgdGhlXG4gICAqIGVtdWxhdG9yIHRvIHJlcG9ydCBhICoqdmFsaWRhdGVkIGRlZmF1bHQgbmV0d29yayoqIGJlZm9yZSB0aGUgQXBwaXVtIHNlc3Npb25cbiAgICogaXMgZXN0YWJsaXNoZWQuXG4gICAqXG4gICAqIEEgZGV2aWNlIGNhbiBiZSBpZGxlLCBmdWxseSBwYWNrYWdlZCBhbmQgYW5zd2VyaW5nIGBhZGJgIHdoaWxlIHN0aWxsIGhhdmluZ1xuICAgKiBubyByb3V0ZTogdGhlIHR3byB7QGxpbmsgZGV2aWNlSWRsZVRpbWVvdXRJbk1pbGxpc2Vjb25kc30gc2lnbmFscyBhcmVcbiAgICogc2F0aXNmaWVkIHdlbGwgYmVmb3JlIHRoZSBkZWZhdWx0IG5ldHdvcmsgaXMgY3JlYXRlZCBhbmQgdmFsaWRhdGVkLCB3aGljaFxuICAgKiBsYW5kcyB+ODBzIGludG8gZ3Vlc3QgdXB0aW1lLiBUaGF0IGdhcCBpcyBkYW5nZXJvdXMgcmF0aGVyIHRoYW4gbWVyZWx5IHNsb3dcbiAgICogXHUyMDE0IGEgdGVzdCB0aGF0IHJlYWNoZXMgdGhlIG5ldHdvcmsgdGhlcmUgcnVucyB0byBjb21wbGV0aW9uIGFnYWluc3QgYVxuICAgKiBzaWxlbnRseSAqKmVtcHR5IHJlc3VsdCoqLCB3aGljaCBubyBhc3NlcnRpb24gaW5zaWRlIHRoZSBzdWl0ZSBjYW4gdGVsbFxuICAgKiBhcGFydCBmcm9tIGEgZ2VudWluZWx5IGVtcHR5IHJlc3BvbnNlLlxuICAgKlxuICAgKiBUaGUgZmFjdG9yeSBwb2xscyBgZHVtcHN5cyBjb25uZWN0aXZpdHlgIHVudGlsIGFuIGFjdGl2ZSBkZWZhdWx0IG5ldHdvcmtcbiAgICogcmVwb3J0cyB2YWxpZGF0aW9uLCBwcm9jZWVkaW5nIGVhcmx5IG9uY2UgaXQgZG9lcyBvciBhZnRlciB0aGlzIGJ1ZGdldFxuICAgKiAoYmVzdC1lZmZvcnQgXHUyMDE0IGEgdGltZW91dCBsb2dzIGEgd2FybmluZyBuYW1pbmcgdGhlIG1pc3NpbmcgbmV0d29yayBhbmRcbiAgICogcHJvY2VlZHMpLiBTZXQgYDBgIHRvIHNraXAgdGhlIHdhaXQsIGUuZy4gZm9yIGEgZGVsaWJlcmF0ZWx5IG9mZmxpbmUgQVZEIG9yXG4gICAqIGEgc3VpdGUgdGhhdCBuZXZlciB0b3VjaGVzIHRoZSBuZXR3b3JrLlxuICAgKlxuICAgKiBBcHBsaWVzIHRvIGEgKipyZXVzZWQqKiBkZXZpY2UgYXMgd2VsbCBhcyBhIGhhcm5lc3Mtc3RhcnRlZCBvbmUsIGZvciB0aGVcbiAgICogc2FtZSByZWFzb24gdGhlIGlkbGUgZ2F0ZSBkb2VzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgMTIwMDAwYFxuICAgKi9cbiAgcmVhZG9ubHkgbmV0d29ya1JlYWR5VGltZW91dEluTWlsbGlzZWNvbmRzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBOdW1iZXIgb2YgZXh0cmEgYXR0ZW1wdHMgdG8gZW5hYmxlIHRoZSBwbHVnaW4gYW5kIHZlcmlmeSBpdCBsb2FkZWQsIG9uIHRvcFxuICAgKiBvZiB0aGUgZmlyc3QgYXR0ZW1wdC5cbiAgICpcbiAgICogT24gYSBmcmVzaGx5IGNvbGQtYm9vdGVkIGVtdWxhdG9yIHRoZSBwbHVnaW4gc3Vic3lzdGVtIGNhbiBzdGlsbCBiZSBzZXR0bGluZ1xuICAgKiB3aGVuIHRoZSBoYXJuZXNzIGVuYWJsZXMgdGhlIHBsdWdpbiwgc28gdGhlIGVuYWJsZSBsYW5kcyBpbiB0aGUgZW5hYmxlZCBzZXRcbiAgICogYnV0IHRoZSBsb2FkIHJhY2VzIGFuZCBmYWlscyAoYFwiPGlkPlwiIGlzIGluIHRoZSBlbmFibGVkIHNldCBidXQgbm90IGxvYWRlZGApLlxuICAgKiBEZXZpY2UtaWRsZSBhbmQgYGxheW91dFJlYWR5YCBhcmUgYWxyZWFkeSBhd2FpdGVkLCBzbyB0aGlzIGlzIHRoZSBuYXJyb3dcbiAgICogcmVzaWR1YWwgcmFjZTogdGhlIGhhcm5lc3MgcmV0cmllcyB0aGUgZW5hYmxlICsgbG9hZC12ZXJpZmljYXRpb24gdGhpcyBtYW55XG4gICAqIHRpbWVzIHdpdGggZXhwb25lbnRpYWwgYmFja29mZiAoc2VlXG4gICAqIHtAbGluayBwbHVnaW5FbmFibGVSZXRyeURlbGF5SW5NaWxsaXNlY29uZHN9KSwgZm9yY2luZyBhIGdlbnVpbmUgcmVsb2FkIGVhY2hcbiAgICogYXR0ZW1wdC4gQSBjYXB0dXJlZCBwbHVnaW4gbG9hZCBlcnJvciBpcyB0cmVhdGVkIGFzIGEgZGV0ZXJtaW5pc3RpYyBidWcgYW5kXG4gICAqIGlzICoqbm90KiogcmV0cmllZC4gU2V0IGAwYCB0byBkaXNhYmxlIHJldHJ5IChhIHNpbmdsZSBhdHRlbXB0KS5cbiAgICpcbiAgICogQGRlZmF1bHQgYDNgXG4gICAqL1xuICByZWFkb25seSBwbHVnaW5FbmFibGVSZXRyeUNvdW50PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBCYXNlIGRlbGF5IGluIG1pbGxpc2Vjb25kcyBiZXR3ZWVuIHBsdWdpbi1lbmFibGUgYXR0ZW1wdHMgKHNlZVxuICAgKiB7QGxpbmsgcGx1Z2luRW5hYmxlUmV0cnlDb3VudH0pLlxuICAgKlxuICAgKiBUaGUgZGVsYXkgZ3Jvd3MgZXhwb25lbnRpYWxseSBwZXIgcmV0cnk6IHRoZSBmaXJzdCByZXRyeSB3YWl0cyB0aGlzIGxvbmcsXG4gICAqIHRoZSBzZWNvbmQgdHdpY2UgYXMgbG9uZywgdGhlIHRoaXJkIGZvdXIgdGltZXMsIGFuZCBzbyBvbiBcdTIwMTQgZ2l2aW5nIGFcbiAgICogc3RpbGwtc2V0dGxpbmcgY29sZCBndWVzdCBwcm9ncmVzc2l2ZWx5IG1vcmUgdGltZSB0byBiZWNvbWUgcmVhZHkuXG4gICAqXG4gICAqIEBkZWZhdWx0IGAyMDAwYFxuICAgKi9cbiAgcmVhZG9ubHkgcGx1Z2luRW5hYmxlUmV0cnlEZWxheUluTWlsbGlzZWNvbmRzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaW1lb3V0IGluIG1pbGxpc2Vjb25kcyBmb3IgYSBzaW5nbGUgc2NyaXB0IGV4ZWN1dGVkIGluc2lkZSBPYnNpZGlhbiBcdTIwMTQgdGhlXG4gICAqIHBlci1gZXZhbEluT2JzaWRpYW5gIGNhcCBvbiB0aGlzIHRyYW5zcG9ydC5cbiAgICpcbiAgICogSXQgaXMgZW5mb3JjZWQgYnkgdGhlIHRyYW5zcG9ydCBpdHNlbGYsIG9uIHRoZSBOb2RlIHNpZGUsIGFuZCBpcyBhbHNvIHNlbnQgYXNcbiAgICogdGhlIFczQyBgdGltZW91dHMuc2NyaXB0YCBjYXBhYmlsaXR5IFx1MjAxNCBidXQgdGhlIGNhcGFiaWxpdHkgaXMgZGVjb3JhdGlvbi5cbiAgICogTWVhc3VyZWQgb24gYSBsaXZlIGVtdWxhdG9yOiBpdCBpcyBhY2NlcHRlZCBhbmQgcmVhZHMgYmFjayBhc1xuICAgKiBgMzAwMDBgIGluIHRoZSBXZWJWaWV3IGNvbnRleHQsIGFuZCBub3RoaW5nIGV2ZXIgYWN0cyBvbiBpdC4gT3Zlci1jYXBcbiAgICogY2xvc3VyZXMgcmFuIHBhc3QgYSA2MHMgY2VpbGluZyB3aXRob3V0IFdlYkRyaXZlciByYWlzaW5nIGBzY3JpcHQgdGltZW91dGBcbiAgICogb25jZSwgaW4gYm90aCB0aGUgc2xlZXBpbmcgYW5kIHRoZSBzcGlubmluZyBzaGFwZSwgd2l0aCBhbmQgd2l0aG91dCBhblxuICAgKiBleHBsaWNpdCBgc2V0VGltZW91dHNgLlxuICAgKlxuICAgKiBXaGF0IGhhcHBlbnMgcGFzdCByb3VnaGx5IGhhbGYgYSBtaW51dGUgaXMgd29yc2UgdGhhbiBhIGxhdGUgYW5zd2VyOiB0aGVcbiAgICogY2xvc3VyZSBjb21wbGV0ZXMgaW4gdGhlIGd1ZXN0IG9uIHNjaGVkdWxlIGFuZCBpdHMgRXhlY3V0ZSBTY3JpcHQgcmVzcG9uc2VcbiAgICogbmV2ZXIgcmVhY2hlcyB0aGUgY2xpZW50LCBzbyB0aGUgY2FsbCBzaW1wbHkgbmV2ZXIgcmV0dXJucy4gVGhpcyB0aW1lb3V0IGlzXG4gICAqIHdoYXQgdHVybnMgdGhhdCBzaWxlbmNlIGludG8gYW4ge0BsaW5rIEV2YWxDYXBFeGNlZWRlZEVycm9yfSBuYW1pbmcgdGhlXG4gICAqIGNsb3N1cmUgYXMgdGhlIGNhdXNlLlxuICAgKlxuICAgKiBSYWlzaW5nIGl0IGlzIGFsbW9zdCBuZXZlciB0aGUgcmlnaHQgYW5zd2VyLiBBIGNsb3N1cmUgdGhhdCBuZWVkcyB0byB3YWl0XG4gICAqIGxvbmdlciB0aGFuIHRoaXMgc2hvdWxkIG5vdCBiZSB3YWl0aW5nIGluc2lkZSBPYnNpZGlhbiBhdCBhbGwgXHUyMDE0IHVzZVxuICAgKiBgcG9sbEluT2JzaWRpYW5gLCB3aGljaCBrZWVwcyBlYWNoIGNsb3N1cmUgc2hvcnQgYW5kIGRvZXMgdGhlIHdhaXRpbmdcbiAgICogZnJvbSBOb2RlLiBUaGUga25vYiBleGlzdHMgc28gdGhlIGNhcCBpcyBleHBsaWNpdCBhbmQgbWF0Y2hlc1xuICAgKiB7QGxpbmsgT2JzaWRpYW5DZHBUcmFuc3BvcnRPcHRpb25zLmNvbW1hbmRUaW1lb3V0SW5NaWxsaXNlY29uZHN9IG9uIGRlc2t0b3AuXG4gICAqXG4gICAqIFRoZSBkZWZhdWx0IGlzIGBERUZBVUxUX0VWQUxfQ0FQX0lOX01JTExJU0VDT05EU2AsIGV4cG9ydGVkIGZyb20gdGhlIHBhY2thZ2VcbiAgICogcm9vdCBcdTIwMTQgaW1wb3J0IGl0IHJhdGhlciB0aGFuIHJlc3RhdGluZyB0aGUgbnVtYmVyLCBzbyBhIGNsb3N1cmUgc2l6ZWRcbiAgICogYWdhaW5zdCB0aGUgY2FwIGZvbGxvd3MgaXQgaWYgaXQgZXZlciBtb3Zlcy5cbiAgICpcbiAgICogQGRlZmF1bHQgYDMwMDAwYFxuICAgKi9cbiAgcmVhZG9ubHkgc2NyaXB0VGltZW91dEluTWlsbGlzZWNvbmRzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaW1lb3V0IGluIG1pbGxpc2Vjb25kcyBmb3IgZXN0YWJsaXNoaW5nIHRoZSBBcHBpdW0gc2Vzc2lvbiAoV2ViRHJpdmVySU9cbiAgICogYHJlbW90ZSgpYCBcdTIwMTQgVWlBdXRvbWF0b3IyIHNlcnZlciBpbnN0YWxsICsgYXBwIGxhdW5jaCkuXG4gICAqXG4gICAqIFRoaXMgaXMgdGhlIGxhcmdlc3QgYW5kIG1vc3QgbG9hZC1zZW5zaXRpdmUgc3RlcCBvZiB0aGUgQW5kcm9pZCBzZXR1cDpcbiAgICogb24gYSBjb2xkIG9yIGNvbnRlbmRlZCBlbXVsYXRvciBpdCBkb21pbmF0ZXMgc3RhcnR1cCBhbmQgY2FuIHRha2UgYSBmZXdcbiAgICogbWludXRlcy4gUmFpc2UgaXQgaWYgc2Vzc2lvbiBlc3RhYmxpc2htZW50IHRpbWVzIG91dCB1bmRlciBsb2FkLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgMTgwMDAwYFxuICAgKi9cbiAgcmVhZG9ubHkgc2Vzc2lvbkNvbm5lY3Rpb25SZXRyeVRpbWVvdXRJbk1pbGxpc2Vjb25kcz86IG51bWJlcjtcblxuICAvKipcbiAgICogQW4gZXhpc3RpbmcgQXBwaXVtIHNlc3Npb24gSUQgdG8gcmVhdHRhY2ggdG8uXG4gICAqXG4gICAqIFBvcHVsYXRlZCBhdXRvbWF0aWNhbGx5IGJ5IHRoZSBnbG9iYWwgc2V0dXAgYW5kIHByb3ZpZGVkIHRvIHRlc3Qgd29ya2Vyc1xuICAgKiB2aWEgdGhlIGZyYW1ld29yaydzIGNvbnRleHQgbWVjaGFuaXNtIChlLmcuIFZpdGVzdCBgcHJvdmlkZWAvYGluamVjdGApLlxuICAgKiBXaGVuIHByZXNlbnQsIHRoZSB0cmFuc3BvcnQgZmFjdG9yeSB1c2VzIFdlYkRyaXZlcklPJ3MgYGF0dGFjaCgpYCBpbnN0ZWFkXG4gICAqIG9mIGNyZWF0aW5nIGEgbmV3IHNlc3Npb24sIGF2b2lkaW5nIGR1cGxpY2F0ZSBBcHBpdW0vQURCIGNvbm5lY3Rpb25zLlxuICAgKi9cbiAgcmVhZG9ubHkgc2Vzc2lvbklkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGF1dG9tYXRpY2FsbHkgaW5zdGFsbCBtaXNzaW5nIEFwcGl1bSBkZXBlbmRlbmNpZXMgKHRoZVxuICAgKiBgdWlhdXRvbWF0b3IyYCBkcml2ZXIsIGFuZCBBcHBpdW0gaXRzZWxmKSBiZWZvcmUgYXV0by1zdGFydGluZyB0aGUgc2VydmVyLlxuICAgKlxuICAgKiBXaGVuIGB0cnVlYCAodGhlIGRlZmF1bHQpIGFuZCB0aGUgaGFybmVzcyBpcyBhYm91dCB0byBhdXRvLXN0YXJ0IHRoZSBBcHBpdW1cbiAgICogc2VydmVyICh7QGxpbmsgc2hvdWxkQXV0b1N0YXJ0QXBwaXVtfSksIHRoZSBmYWN0b3J5IGZpcnN0IGVuc3VyZXMgQXBwaXVtIGlzXG4gICAqIGluc3RhbGxlZCAoZ2xvYmFsbHksIHZpYSBgbnBtIGluc3RhbGwgLWcgYXBwaXVtYCkgYW5kIHRoYXQgdGhlXG4gICAqIGB1aWF1dG9tYXRvcjJgIGRyaXZlciBpcyBpbnN0YWxsZWQgKGBhcHBpdW0gZHJpdmVyIGluc3RhbGwgdWlhdXRvbWF0b3IyYCksXG4gICAqIGluc3RhbGxpbmcgd2hpY2hldmVyIGlzIG1pc3NpbmcuIElnbm9yZWQgd2hlbiBhdHRhY2hpbmcgdG8gYW5cbiAgICogYWxyZWFkeS1ydW5uaW5nIHNlcnZlciAobm90aGluZyBpcyBhdXRvLXN0YXJ0ZWQsIHNvIG5vdGhpbmcgaXMgaW5zdGFsbGVkKSBvclxuICAgKiB3aGVuIHtAbGluayBzaG91bGRBdXRvU3RhcnRBcHBpdW19IGlzIGBmYWxzZWAuIFNldCBpdCB0byBgZmFsc2VgIHRvIG1hbmFnZVxuICAgKiB0aGUgQXBwaXVtIHRvb2xjaGFpbiB5b3Vyc2VsZiBhbmQgc2tpcCB0aGUgbWFjaGluZS1tdXRhdGluZyBnbG9iYWwgaW5zdGFsbC5cbiAgICpcbiAgICogQGRlZmF1bHQgYHRydWVgXG4gICAqL1xuICByZWFkb25seSBzaG91bGRBdXRvSW5zdGFsbEFwcGl1bURlcGVuZGVuY2llcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gYXV0b21hdGljYWxseSBzdGFydCB0aGUgQXBwaXVtIHNlcnZlciBpZiBpdCBpcyBub3QgcmVhY2hhYmxlLlxuICAgKlxuICAgKiBXaGVuIGB0cnVlYCAodGhlIGRlZmF1bHQpLCB0aGUgdHJhbnNwb3J0IGZhY3Rvcnkgc3Bhd25zIGBucHggYXBwaXVtYFxuICAgKiBhcyBhIGJhY2tncm91bmQgcHJvY2VzcyB3aGVuIHRoZSBwcmVmbGlnaHQgY2hlY2sgZmFpbHMsIGFuZCBraWxscyBpdFxuICAgKiBvbiB0cmFuc3BvcnQgZGlzcG9zYWwuXG4gICAqXG4gICAqIEBkZWZhdWx0IGB0cnVlYFxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkQXV0b1N0YXJ0QXBwaXVtPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgYXV0by1zdGFydGVkIGVtdWxhdG9yIG1heSByZXN1bWUgXHUyMDE0IGFuZCByZWZyZXNoIFx1MjAxNCB0aGUgQVZEJ3NcbiAgICogc2F2ZWQgYm9vdCBzbmFwc2hvdC5cbiAgICpcbiAgICogV2hlbiBgZmFsc2VgICh0aGUgZGVmYXVsdCkgdGhlIGVtdWxhdG9yIGlzIHN0YXJ0ZWQgd2l0aFxuICAgKiBgLW5vLXNuYXBzaG90LWxvYWQgLW5vLXNuYXBzaG90LXNhdmVgLCBzbyBldmVyeSBydW4gY29sZC1ib290cyBhIGd1ZXN0IHdob3NlXG4gICAqIHN0YXRlIG5vdGhpbmcgY2FycmllZCBvdmVyLiBUaGF0IGlzIHRoZSBoZXJtZXRpYyBkZWZhdWx0IGEgdGVzdCBoYXJuZXNzXG4gICAqIG93ZXMgaXRzIGNhbGxlcnMsIGFuZCBpdCBpcyBhbHNvIHRoZSBzYWZlIG9uZTogYSBzbmFwc2hvdCB0aGUgaGFybmVzcyBsb2Fkc1xuICAgKiBidXQgbmV2ZXIgd3JpdGVzIHJvdHMgdW5ub3RpY2VkLCBhbmQgdGhlIGZhaWx1cmUgaXQgZXZlbnR1YWxseSBwcm9kdWNlcyBcdTIwMTQgYVxuICAgKiBkZXZpY2UgdGhhdCBzZXJ2ZXMgYWRiLCBhY2NlcHRzIGEgc2Vzc2lvbiwgdGhlbiBkcm9wcyBgb2ZmbGluZWAgYWJvdXQgaGFsZiBhXG4gICAqIG1pbnV0ZSBsYXRlciBcdTIwMTQgaXMgaW5kaXN0aW5ndWlzaGFibGUgZnJvbSBhIGNvZGUgcmVncmVzc2lvbi4gTWVhc3VyZWQgb24gb25lXG4gICAqIEFWRCBiYWNrIHRvIGJhY2ssIGEgcmVzdW1lZCBzbmFwc2hvdCBraWxsZWQgdGhlIGd1ZXN0IH45MHMgaW4gKmV2ZXJ5KiB0aW1lLFxuICAgKiB3aGlsZSB0aGUgc2FtZSBBVkQgY29sZC1ib290ZWQgaW4gNTBzIGFuZCBzdGF5ZWQgdXAuXG4gICAqXG4gICAqIFNldCBpdCB0byBgdHJ1ZWAgb24gYSAqKnBlcnNpc3RlbnQgcnVubmVyKiogd2hvc2UgQVZEIGlzIG5vdCBzaGFyZWQgd2l0aFxuICAgKiBhbnl0aGluZyBlbHNlOiB0aGUgZW11bGF0b3IgdGhlbiBib3RoIGxvYWRzIGFuZCBzYXZlcyBgZGVmYXVsdF9ib290YCwgc28gdGhlXG4gICAqIHNuYXBzaG90IGVhY2ggcnVuIHJlc3VtZXMgaXMgb25lIGEgcHJldmlvdXMgcnVuIHdyb3RlLCBhbmQgdGhlIH4xMTJzIGNvbGRcbiAgICogYm9vdCBpcyBsYXJnZWx5IGJvdWdodCBiYWNrLiBUaGUgdHJhZGUgaXMgdGVzdCBpc29sYXRpb24gXHUyMDE0IGEgZ3Vlc3QgdGhhdFxuICAgKiBjYXJyaWVzIHN0YXRlIGJldHdlZW4gcnVucyBcdTIwMTQgc28gaXQgaXMgb3B0LWluIHBlciBwcm9qZWN0LCBuZXZlciBhIGRlZmF1bHQuXG4gICAqIElnbm9yZWQgd2hlbiByZXVzaW5nIGFuIGFscmVhZHktcnVubmluZyBkZXZpY2UgKG5vdGhpbmcgaXMgbGF1bmNoZWQpLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICByZWFkb25seSBzaG91bGRSZXVzZUVtdWxhdG9yU25hcHNob3Q/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBoYXJuZXNzIHJlbW92ZXMgdGhlIHRlbXBvcmFyeSBkaXJlY3RvcmllcyBlYXJsaWVyIHJ1bnMgbGVha2VkLlxuICAgKlxuICAgKiBXaGVuIGB0cnVlYCAodGhlIGRlZmF1bHQpLCBlYWNoIHJ1biBzd2VlcHMgYXQgc3RhcnQgKiphbmQqKiBhdCBlbmQ6IG9uIHRoZVxuICAgKiBkZXZpY2UsIGV2ZXJ5IGB0ZW1wLXZhdWx0LSpgIGRpcmVjdG9yeSB1bmRlciB7QGxpbmsgdmF1bHRCYXNlUGF0aH0gKHBsdXMgdGhlXG4gICAqIHN0YWxlIHZhdWx0IHJlZ2lzdHJhdGlvbnMgaW4gT2JzaWRpYW4gTW9iaWxlJ3MgYGxvY2FsU3RvcmFnZWApOyBvbiB0aGUgaG9zdCxcbiAgICogdGhlIGxlZnRvdmVyIGB0ZW1wLXZhdWx0LSpgIGFuZCBvd25lZCBgdXNlcmRhdGEtKmAgZGlyZWN0b3JpZXMgb2xkZXIgdGhhblxuICAgKiB7QGxpbmsgbGVmdG92ZXJNYXhBZ2VJbk1pbGxpc2Vjb25kc30uXG4gICAqXG4gICAqIEEgcnVuIHRoYXQgZGllcyBjYW5ub3QgY2xlYW4gdXAgYWZ0ZXIgaXRzZWxmIFx1MjAxNCBpdHMgdGVhcmRvd24gZ29lcyB0aHJvdWdoIHRoZVxuICAgKiBXZWJWaWV3LCBhbmQgYSBkZWFkIFdlYlZpZXcgaXMgd2hhdCBtb3N0IEFuZHJvaWQgZmFpbHVyZXMgYXJlIFx1MjAxNCBzbyB0aGVcbiAgICogcmVzaWR1ZSBhY2N1bXVsYXRlcyBhbmQgc2xvd3MgdGhlIG5leHQgcnVuJ3Mgc3RhcnR1cCBlbnVtZXJhdGlvbiB1bnRpbCBpdFxuICAgKiBtaXNzZXMgdGhlIFdlYlZpZXctcmVhZGluZXNzIGJ1ZGdldC4gVGhlIHN0YXJ0IHN3ZWVwIGlzIHRoZSBoYWxmIHRoYXQgYnJlYWtzXG4gICAqIHRoYXQgbG9vcCwgYmVjYXVzZSBpdCBydW5zIGJlZm9yZSBhbnl0aGluZyB0aGF0IGNhbiBkaWUuXG4gICAqXG4gICAqIEBkZWZhdWx0IGB0cnVlYFxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkU3dlZXBMZWZ0b3ZlcnM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBEaXNjcmltaW5hbnQgZm9yIHRoZSB0cmFuc3BvcnQgdHlwZS5cbiAgICovXG4gIHJlYWRvbmx5IHR5cGU6ICdvYnNpZGlhbi1hbmRyb2lkLWFwcGl1bSc7XG5cbiAgLyoqXG4gICAqIEJhc2UgcGF0aCBvbiB0aGUgZGV2aWNlIHdoZXJlIE9ic2lkaWFuIHN0b3JlcyB2YXVsdHMuXG4gICAqXG4gICAqIERlZmF1bHRzOlxuICAgKiAtIEFuZHJvaWQ6IGAvc2RjYXJkL0RvY3VtZW50cy9gXG4gICAqIC0gaU9TOiBgQG1kLm9ic2lkaWFuOmRvY3VtZW50cy9gXG4gICAqL1xuICByZWFkb25seSB2YXVsdEJhc2VQYXRoPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaW1lb3V0IGluIG1pbGxpc2Vjb25kcyBmb3Igd2FpdGluZyBmb3IgdGhlIFdlYlZpZXcgY29udGV4dCB0byBiZWNvbWUgYXZhaWxhYmxlLlxuICAgKlxuICAgKiBPbiBzbG93IGVtdWxhdG9ycywgdGhlIENocm9tZURyaXZlciBwcm94eSB0aGF0IGhhbmRsZXMgV2ViVmlldyBjb21tYW5kc1xuICAgKiBtYXkgbm90IGJlIHJlYWR5IGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBBcHBpdW0gc2Vzc2lvbiBzdGFydHMuIFRoaXMgdGltZW91dFxuICAgKiBjb250cm9scyBob3cgbG9uZyB0byBwb2xsIGJlZm9yZSBnaXZpbmcgdXAuXG4gICAqXG4gICAqIEBkZWZhdWx0IGA2MDAwMGBcbiAgICovXG4gIHJlYWRvbmx5IHdlYnZpZXdUaW1lb3V0SW5NaWxsaXNlY29uZHM/OiBudW1iZXI7XG59XG5cbi8qKlxuICogVHJhbnNwb3J0IG9wdGlvbnMgZm9yIGRlc2t0b3AgdGVzdGluZyB2aWEgQ2hyb21lIERldlRvb2xzIFByb3RvY29sLlxuICpcbiAqIFRoaXMgaXMgdGhlIGRlZmF1bHQgZGVza3RvcCB0cmFuc3BvcnQuIEJ5IGRlZmF1bHQgdGhlIGhhcm5lc3MgKipsYXVuY2hlcyBhbmRcbiAqIG93bnMgYW4gaXNvbGF0ZWQgT2JzaWRpYW4gaW5zdGFuY2UqKiBpbiBhIHRlbXBvcmFyeSB1c2VyLWRhdGEgZGlyIChuZXZlclxuICogdG91Y2hpbmcgdGhlIHVzZXIncyBPYnNpZGlhbiksIGNvbm5lY3RlZCBvdmVyIGEgZnJlZSBDRFAgcG9ydC4gUHJvdmlkZVxuICoge0BsaW5rIE9ic2lkaWFuQ2RwVHJhbnNwb3J0T3B0aW9ucy5wb3J0fSB0byBpbnN0ZWFkIGF0dGFjaCB0byBhblxuICogYWxyZWFkeS1ydW5uaW5nIE9ic2lkaWFuLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE9ic2lkaWFuQ2RwVHJhbnNwb3J0T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaW1lb3V0IGluIG1pbGxpc2Vjb25kcyBmb3IgaW5kaXZpZHVhbCBDRFAgY29tbWFuZHMuXG4gICAqXG4gICAqIEEgdGVzdCdzIGNsb3N1cmUgdHJhdmVscyBhcyBvbmUgYFJ1bnRpbWUuZXZhbHVhdGVgIGNvbW1hbmQsIHNvIHRoaXMgaXMgYWxzb1xuICAgKiB0aGUgZGVza3RvcCBwZXItZXZhbCBjYXAuIFRoZSBkZWZhdWx0IGlzIGBERUZBVUxUX0VWQUxfQ0FQX0lOX01JTExJU0VDT05EU2AsXG4gICAqIGV4cG9ydGVkIGZyb20gdGhlIHBhY2thZ2Ugcm9vdCBcdTIwMTQgaW1wb3J0IGl0IHJhdGhlciB0aGFuIHJlc3RhdGluZyB0aGUgbnVtYmVyLFxuICAgKiBzbyBhIGNsb3N1cmUgc2l6ZWQgYWdhaW5zdCB0aGUgY2FwIGZvbGxvd3MgaXQgaWYgaXQgZXZlciBtb3Zlcy5cbiAgICpcbiAgICogQGRlZmF1bHQgYDMwMDAwYFxuICAgKi9cbiAgcmVhZG9ubHkgY29tbWFuZFRpbWVvdXRJbk1pbGxpc2Vjb25kcz86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIHZhdWx0J3MgKipjb25maWcgZm9sZGVyKiogXHUyMDE0IE9ic2lkaWFuJ3MgcGVyLXZhdWx0ICpPdmVycmlkZSBjb25maWdcbiAgICogZm9sZGVyKiBzZXR0aW5nLCBlLmcuIGAnLm9ic2lkaWFuLWRlc2t0b3AnYC4gTXVzdCBzdGFydCB3aXRoIGEgZG90LCBtdXN0IG5vdFxuICAgKiBiZSB0aGUgYmFyZSBkb3QsIGFuZCBtdXN0IG5vdCBjb250YWluIGEgcGF0aCBzZXBhcmF0b3I7IGFueXRoaW5nIGVsc2UgdGhyb3dzXG4gICAqIGJlZm9yZSBPYnNpZGlhbiBpcyBsYXVuY2hlZCwgYmVjYXVzZSBPYnNpZGlhbiBpdHNlbGYgd291bGQgc2lsZW50bHlcbiAgICogc3Vic3RpdHV0ZSBgLm9ic2lkaWFuYC5cbiAgICpcbiAgICogTmVlZGVkIHRvIG9wZW4gYSB2YXVsdCB0aGF0IGtlZXBzIGl0cyBzZXR0aW5ncyBzb21ld2hlcmUgb3RoZXIgdGhhblxuICAgKiBgLm9ic2lkaWFuYCBcdTIwMTQgYSB2YXVsdCB3aXRoIGEgc3RhbGUgYC5vYnNpZGlhbmAgYmVzaWRlIHRoZSByZWFsIGZvbGRlciB3b3VsZFxuICAgKiBvdGhlcndpc2Ugb3BlbiBzdWNjZXNzZnVsbHkgYWdhaW5zdCB0aGUgd3Jvbmcgc2V0dGluZ3MgYW5kIHJlcG9ydCBzdWNjZXNzLlxuICAgKiBUaGUgb3ZlcnJpZGUgbGl2ZXMgaW4gYGxvY2FsU3RvcmFnZWAsIGtleWVkIGJ5IHZhdWx0IGlkLCBhbmQgc28gaXMgc2NvcGVkIHRvXG4gICAqIGEgdXNlci1kYXRhIGRpcmVjdG9yeTogYW4gb3duZWQgaW5zdGFuY2UgZ2V0cyBhIGZyZXNoIHRlbXAgb25lIGFuZCB0aGVyZWZvcmVcbiAgICogaW5oZXJpdHMgbm90aGluZyBmcm9tIHRoZSB1c2VyJ3MgT2JzaWRpYW4sIGhvd2V2ZXIgdGhhdCB2YXVsdCBpcyBjb25maWd1cmVkXG4gICAqIHRoZXJlLlxuICAgKlxuICAgKiBTZXR0aW5nIGl0IGNvc3RzIG9uZSBleHRyYSBib290IHBoYXNlOiB0aGUgaW5zdGFuY2UgaXMgbGF1bmNoZWQgdG8gdGhlXG4gICAqIHN0YXJ0ZXIgc2NyZWVuLCB0aGUgb3ZlcnJpZGUgaXMgd3JpdHRlbiBpbiB0aGF0IHJlbmRlcmVyLCBhbmQgdGhlIHZhdWx0IGlzXG4gICAqIHRoZW4gb3BlbmVkIG92ZXIgSVBDLiBBZnRlciB0aGUgdmF1bHQgaXMgcmVhZHkgaXRzIGFjdHVhbFxuICAgKiBgYXBwLnZhdWx0LmNvbmZpZ0RpcmAgaXMgcmVhZCBiYWNrIGFuZCBhbnkgbWlzbWF0Y2ggdGhyb3dzXG4gICAqIGBDb25maWdEaXJlY3RvcnlGYWxsYmFja0Vycm9yYCBcdTIwMTQgdGhlcmUgaXMgbm8ga25vYiB0byBkb3duZ3JhZGUgdGhhdCwgYmVjYXVzZSBhXG4gICAqIHZhdWx0IG9wZW5lZCBhZ2FpbnN0IHRoZSB3cm9uZyBjb25maWcgZm9sZGVyIGlzIHNpbGVudGx5IHRoZSB3cm9uZyB2YXVsdC5cbiAgICpcbiAgICogT25seSBtZWFuaW5nZnVsIGluIG93bmVkIG1vZGU7ICoqaWdub3JlZCBpbiBhdHRhY2ggbW9kZSoqICh7QGxpbmsgT2JzaWRpYW5DZHBUcmFuc3BvcnRPcHRpb25zLnBvcnR9XG4gICAqIHNldCksIHdoZXJlIHRoZSB2YXVsdCBpcyBvcGVuZWQgYnkgdGhlIHVzZXIncyBvd24gT2JzaWRpYW4gdW5kZXIgaXRzIG93blxuICAgKiBjb25maWcuXG4gICAqXG4gICAqIEBkZWZhdWx0IGB1bmRlZmluZWRgIChPYnNpZGlhbidzIG93biBkZWZhdWx0LCBgLm9ic2lkaWFuYClcbiAgICovXG4gIHJlYWRvbmx5IGNvbmZpZ0RpcmVjdG9yeT86IHN0cmluZztcblxuICAvKipcbiAgICogR3JhY2Ugd2luZG93IGluIG1pbGxpc2Vjb25kcyBmb3IgZmFzdC1mYWlsaW5nIGEgKipkZWFkIGJvb3QqKiBvZiB0aGUgb3duZWRcbiAgICogaW5zdGFuY2UuXG4gICAqXG4gICAqIFdoZW4gYW4gYXNhciBjYW5ub3QgcnVuIG9uIHRoZSBsYXVuY2hlZCBFbGVjdHJvbiBzaGVsbCAodGhlIGluc3RhbGxlclxuICAgKiB2ZXJzaW9uIGlzIHRvbyBvbGQgZm9yIHRoZSBhcHAgdmVyc2lvbiksIHRoZSByZW5kZXJlciBsb2FkcyBidXQgbmV2ZXJcbiAgICogYm9vdHN0cmFwczogYGRvY3VtZW50LmJvZHlgIHN0YXlzIGVtcHR5IGFuZCBgd2luZG93LmFwcGAgcmVtYWluc1xuICAgKiBgdW5kZWZpbmVkYCBcdTIwMTQgYSBibGFjayBzY3JlZW4uIFJhdGhlciB0aGFuIHdhaXRpbmcgb3V0IHRoZSBmdWxsIHJlYWRpbmVzc1xuICAgKiB0aW1lb3V0LCB0aGUgb3duZWQtdmF1bHQgcmVhZGluZXNzIHBvbGwgY29uY2x1ZGVzIHRoZSBib290IGlzIGRlYWQgb25jZSB0aGVcbiAgICogcmVuZGVyZXIgaGFzIGJlZW4gYGRvY3VtZW50LnJlYWR5U3RhdGVgIGAnY29tcGxldGUnYCBmb3IgdGhpcyBsb25nIHdpdGggbm9cbiAgICogYHdpbmRvdy5hcHBgIGFuZCBhbiBlbXB0eSBgPGJvZHk+YCwgYW5kIHRocm93cyBhXG4gICAqIGBSZW5kZXJlckZhaWxlZFRvSW5pdGlhbGl6ZUVycm9yYC4gT25seSBhcHBsaWVzIHRvIGFuIG93bmVkIGluc3RhbmNlXG4gICAqIChpZ25vcmVkIGluIGF0dGFjaCBtb2RlLCB7QGxpbmsgcG9ydH0gc2V0KS4gU2V0IGAwYCB0byBkaXNhYmxlIGZhc3QtZmFpbCBhbmRcbiAgICogcmVzdG9yZSB0aGUgcGxhaW4gd2FpdC1vdXQtdGhlLXJlYWRpbmVzcy10aW1lb3V0IGJlaGF2aW9yLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgMTAwMDBgXG4gICAqL1xuICByZWFkb25seSBkZWFkQm9vdEdyYWNlSW5NaWxsaXNlY29uZHM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIENEUCBob3N0LlxuICAgKiBEZWZhdWx0cyB0byBgJ2xvY2FsaG9zdCdgXG4gICAqL1xuICByZWFkb25seSBob3N0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBNYXJrcyB7QGxpbmsgcG9ydH0gYXMgdGhlIENEUCBwb3J0IG9mIGEgKipoYXJuZXNzLW93bmVkLCBpc29sYXRlZCBpbnN0YW5jZSoqXG4gICAqIHRoYXQgdGhlIGdsb2JhbCBzZXR1cCBhbHJlYWR5IGxhdW5jaGVkIGFuZCBwcmVwYXJlZCAodmF1bHQgcmVnaXN0ZXJlZCxcbiAgICogcGx1Z2luIGVuYWJsZWQpLlxuICAgKlxuICAgKiBQb3B1bGF0ZWQgYXV0b21hdGljYWxseSBieSB0aGUgZ2xvYmFsIHNldHVwIGFuZCBwcm92aWRlZCB0byB0ZXN0IHdvcmtlcnMgdmlhXG4gICAqIHRoZSBmcmFtZXdvcmsncyBjb250ZXh0IG1lY2hhbmlzbSAoZS5nLiBWaXRlc3QgYHByb3ZpZGVgL2BpbmplY3RgKS4gV2hlbiBzZXQsXG4gICAqIHRoZSB3b3JrZXIgKiphdHRhY2hlcyoqIHRvIHRoZSBvd25lZCBpbnN0YW5jZSBvbiB7QGxpbmsgcG9ydH0gaW5zdGVhZCBvZlxuICAgKiBsYXVuY2hpbmcgaXRzIG93biwgYW5kIHNraXBzIHRoZSB1c2VyLXNjb3BlIHZhdWx0LXJlZ2lzdHJhdGlvbiBwcmVmbGlnaHQgXHUyMDE0XG4gICAqIHRoZSBvd25lZCBpbnN0YW5jZSdzIHZhdWx0IGxpdmVzIGluIGFuIGlzb2xhdGVkIHVzZXItZGF0YSBjb25maWcsIG5vdCB0aGVcbiAgICogdXNlci1zY29wZSByZWdpc3RyeS4gRG8gbm90IHNldCB0aGlzIG1hbnVhbGx5OyBmb3IgcGxhaW4gYXR0YWNoIG1vZGUgdXNlXG4gICAqIHtAbGluayBwb3J0fSBhbG9uZS5cbiAgICpcbiAgICogQGRlZmF1bHQgYHVuZGVmaW5lZGBcbiAgICovXG4gIHJlYWRvbmx5IGlzSGFybmVzc093bmVkSW5zdGFuY2U/OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBvd25lZCBkZXNrdG9wIE9ic2lkaWFuIHdpbmRvdyBpcyBzaG93biBvbiBzY3JlZW4uXG4gICAqXG4gICAqIFdoZW4gYGZhbHNlYCwgdGhlIGhhcm5lc3MgbGF1bmNoZXMgdGhlIG93bmVkIGluc3RhbmNlIHdpdGhcbiAgICoga2VlcC1hbGl2ZSBDaHJvbWl1bSBmbGFncyBhbmQgbW92ZXMgaXRzIHdpbmRvdyAqKm9mZi1zY3JlZW4qKiBvbmNlIEVsZWN0cm9uJ3NcbiAgICogcmVtb3RlIGJyaWRnZSBpcyBhdmFpbGFibGUsIHNvIHRoZSBydW4gbmV2ZXIgc3RlYWxzIGZvY3VzIG9yIHBvcHMgYSB3aW5kb3cgaW5cbiAgICogZnJvbnQgb2YgeW91LiBPZmYtc2NyZWVuIChub3QgbWluaW1pemVkKSBrZWVwcyB0aGUgcmVuZGVyZXIgbGl2ZSwgc29cbiAgICogYHNldFRpbWVvdXRgLCBgcmVxdWVzdEFuaW1hdGlvbkZyYW1lYCwgYDpob3ZlcmAsIGFuZCB0cnVzdGVkIGlucHV0IGJlaGF2ZVxuICAgKiBpZGVudGljYWxseSB0byBhIHZpc2libGUgd2luZG93LiBEZWZhdWx0cyB0byBgdHJ1ZWA7IGludGVncmF0aW9uIHNldHVwXG4gICAqIGV4cGxpY2l0bHkgcGFzc2VzIGBmYWxzZWAgdG8gYXZvaWQgc3RlYWxpbmcgZm9jdXMuIElnbm9yZWQgaW4gYXR0YWNoIG1vZGVcbiAgICogKHtAbGluayBwb3J0fSBzZXQpIFx1MjAxNCB0aGUgaGFybmVzcyBuZXZlclxuICAgKiBtb3ZlcyB0aGUgdXNlcidzIG93biBydW5uaW5nIHdpbmRvdy5cbiAgICpcbiAgICogQGRlZmF1bHQgYHRydWVgXG4gICAqL1xuICByZWFkb25seSBpc09ic2lkaWFuQXBwVmlzaWJsZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEhvdyBvbGQgYSBsZWZ0b3ZlciBkaXJlY3RvcnkgbXVzdCBiZSBiZWZvcmUge0BsaW5rIHNob3VsZFN3ZWVwTGVmdG92ZXJzfVxuICAgKiByZW1vdmVzIGl0LlxuICAgKlxuICAgKiBUaGUgZ2F0ZSBtYXR0ZXJzIG1vc3Qgb24gZGVza3RvcDogcnVucyBhcmUgZGVsaWJlcmF0ZWx5ICoqbm90Kiogc2VyaWFsaXplZFxuICAgKiAoZWFjaCBvd25zIGFuIGlzb2xhdGVkIGluc3RhbmNlKSwgYW5kIGV2ZXJ5IHByb2plY3Qgb24gdGhlIG1hY2hpbmUgc2hhcmVzXG4gICAqIG9uZSB0ZW1wIGRpcmVjdG9yeSwgc28gYSB5b3VuZyBgdGVtcC12YXVsdC0qYCAvIGB1c2VyZGF0YS0qYCBkaXJlY3RvcnkgbWF5XG4gICAqIHdlbGwgYmVsb25nIHRvIGEgcnVuIHRoYXQgaXMgc3RpbGwgaW4gZmxpZ2h0LiBSYWlzZSBpdCBpZiBhIHJ1biBvZiB5b3VycyBjYW5cbiAgICogb3V0bGl2ZSB0aGUgZGVmYXVsdDsgc2V0IGAwYCB0byByZW1vdmUgZXZlcnkgbWF0Y2ggcmVnYXJkbGVzcyBvZiBhZ2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IGA3MjAwMDAwYFxuICAgKi9cbiAgcmVhZG9ubHkgbGVmdG92ZXJNYXhBZ2VJbk1pbGxpc2Vjb25kcz86IG51bWJlcjtcblxuICAvKipcbiAgICogUGlucyB0aGUgKipFbGVjdHJvbiBzaGVsbCoqIChpbnN0YWxsZXIgYnVpbGQpIHRoZSBvd25lZCBpbnN0YW5jZSBydW5zLlxuICAgKlxuICAgKiBBY2NlcHRzIGFuIGV4cGxpY2l0IGAneC55LnonYCwgYCdwdWJsaWMtbGF0ZXN0J2AsIG9yIGAnY2F0YWx5c3QtbGF0ZXN0J2AuXG4gICAqIFRoZSBtYXRjaGluZyBHaXRIdWIgcmVsZWFzZSBpbnN0YWxsZXIgaXMgZG93bmxvYWRlZCBhbmQgZXh0cmFjdGVkIHRvIGFcbiAgICogcG9ydGFibGUgc2hlbGwgKGNhY2hlZCBmb3IgcmV1c2UpLiBQdWJsaWMgcmVsZWFzZXMgb25seSBcdTIwMTQgY2F0YWx5c3QgYnVpbGRzXG4gICAqIGhhdmUgbm8gcHVibGljIGluc3RhbGxlci4gSWdub3JlZCB3aGVuIHtAbGluayBwb3J0fSAoYXR0YWNoIG1vZGUpIGlzIHNldC5cbiAgICpcbiAgICogQGRlZmF1bHQgYHVuZGVmaW5lZGBcbiAgICovXG4gIHJlYWRvbmx5IG9ic2lkaWFuSW5zdGFsbGVyVmVyc2lvbj86IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogUGlucyB0aGUgKipPYnNpZGlhbiBhcHAgdmVyc2lvbioqIChhc2FyKSB0aGUgb3duZWQgaW5zdGFuY2UgcnVucy5cbiAgICpcbiAgICogQWNjZXB0cyBhbiBleHBsaWNpdCBgJ3gueS56J2AsIGAncHVibGljLWxhdGVzdCdgLCBvciBgJ2NhdGFseXN0LWxhdGVzdCdgLlxuICAgKiBWZXJzaW9ucyBhdCBvciBhYm92ZSB0aGUgc2hlbGwgdmVyc2lvbiBhcmUgYXBwbGllZCBhcyBhIGNoZWFwIGFzYXIgc3dhcDtcbiAgICogb2xkZXIgdmVyc2lvbnMgdHJhbnNwYXJlbnRseSB1c2UgdGhlIG1hdGNoaW5nIGluc3RhbGxlciBzaGVsbC4gV2hlbiBvbWl0dGVkLFxuICAgKiB0aGUgdXNlcidzIGN1cnJlbnRseS1pbnN0YWxsZWQgdmVyc2lvbiBpcyB1c2VkLiBJZ25vcmVkIHdoZW4ge0BsaW5rIHBvcnR9XG4gICAqIChhdHRhY2ggbW9kZSkgaXMgc2V0LlxuICAgKlxuICAgKiBAZGVmYXVsdCBgdW5kZWZpbmVkYFxuICAgKi9cbiAgcmVhZG9ubHkgb2JzaWRpYW5WZXJzaW9uPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBDRFAgcG9ydCBvZiBhbiBhbHJlYWR5LXJ1bm5pbmcgT2JzaWRpYW4gdG8gKiphdHRhY2gqKiB0byAodGhlXG4gICAqIGAtLXJlbW90ZS1kZWJ1Z2dpbmctcG9ydGAgaXQgd2FzIGxhdW5jaGVkIHdpdGgpLiBXaGVuIHNldCwgdGhlIGhhcm5lc3NcbiAgICogYXR0YWNoZXMgaW5zdGVhZCBvZiBvd25pbmcgYW4gaW5zdGFuY2UsIGFuZCB0aGUgdmVyc2lvbiBrbm9icyBhcmUgaWdub3JlZC5cbiAgICogV2hlbiBvbWl0dGVkLCBhbiBvd25lZCBpc29sYXRlZCBpbnN0YW5jZSBpcyBsYXVuY2hlZCBvbiBhbiBhdXRvbWF0aWNhbGx5XG4gICAqIGNob3NlbiBmcmVlIHBvcnQgKG5vIHBvcnQgaXMgaGFyZGNvZGVkKS5cbiAgICpcbiAgICogQGRlZmF1bHQgYHVuZGVmaW5lZGBcbiAgICovXG4gIHJlYWRvbmx5IHBvcnQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gbGF1bmNoIHRoZSBvd25lZCBpbnN0YW5jZSB3aXRoIENocm9taXVtJ3Mgc2FuZGJveCBkaXNhYmxlZFxuICAgKiAoYC0tbm8tc2FuZGJveGApLlxuICAgKlxuICAgKiBOZWVkZWQgdG8gYm9vdCBhbiBvd25lZCBpbnN0YW5jZSBvbiBMaW51eCB3aGVuIHRoZXJlIGlzIG5vXG4gICAqIGNvcnJlY3RseS1jb25maWd1cmVkIHNldHVpZCBgY2hyb21lLXNhbmRib3hgIGhlbHBlciBcdTIwMTQgZS5nLiBhIHBvcnRhYmxlIHNoZWxsXG4gICAqIGV4dHJhY3RlZCBmcm9tIGFuIGluc3RhbGxlciwgb3IgYSBDSSBydW5uZXIgbGF1bmNoaW5nIGFzIGEgbm9uLXJvb3QgdXNlciwgaW5cbiAgICogd2hpY2ggY2FzZSB0aGUgcmVuZGVyZXIgb3RoZXJ3aXNlIHJlZnVzZXMgdG8gc3RhcnQuIEhhcm1sZXNzIG9uXG4gICAqIFdpbmRvd3MvbWFjT1MuIElnbm9yZWQgaW4gYXR0YWNoIG1vZGUgKHtAbGluayBwb3J0fSBzZXQpIFx1MjAxNCB0aGUgaGFybmVzcyBuZXZlclxuICAgKiByZWxhdW5jaGVzIHRoZSB1c2VyJ3MgcnVubmluZyBpbnN0YW5jZS5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkRGlzYWJsZVNhbmRib3g/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBoYXJuZXNzIHJlbW92ZXMgdGhlIHRlbXBvcmFyeSBkaXJlY3RvcmllcyBlYXJsaWVyIHJ1bnMgbGVha2VkLlxuICAgKlxuICAgKiBXaGVuIGB0cnVlYCAodGhlIGRlZmF1bHQpLCBlYWNoIHJ1biBzd2VlcHMgYXQgc3RhcnQgYW5kIGF0IGVuZCBmb3JcbiAgICogYHRlbXAtdmF1bHQtKmAgc3RhZ2luZyBkaXJlY3RvcmllcyBhbmQgb3duZWQgYHVzZXJkYXRhLSpgIGluc3RhbmNlIHByb2ZpbGVzXG4gICAqIG9sZGVyIHRoYW4ge0BsaW5rIGxlZnRvdmVyTWF4QWdlSW5NaWxsaXNlY29uZHN9LiBBIHJ1biBraWxsZWQgbWlkLWZsaWdodFxuICAgKiBuZXZlciByZWFjaGVzIGl0cyBvd24gY2xlYW51cCwgc28gd2l0aG91dCB0aGlzIHRoZSB0ZW1wIGRpcmVjdG9yeSBncm93c1xuICAgKiB3aXRob3V0IGJvdW5kLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgdHJ1ZWBcbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZFN3ZWVwTGVmdG92ZXJzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciBhbiAqKnVucnVubmFibGUqKiBpbnN0YWxsZXJcdTIxOTRhcHAgdmVyc2lvbiBwYWlyIGZhaWxzIGZhc3QgYmVmb3JlIGxhdW5jaC5cbiAgICpcbiAgICogV2hlbiBgdHJ1ZWAgKHRoZSBkZWZhdWx0KSwgYW4gaW5zdGFsbGVyIGJlbG93IHRoZSBhcHAncyBydW4gZmxvb3IgKHRoZVxuICAgKiBvbGRlc3QgaW5zdGFsbGVyIHRoZSBhcHAncyBhc2FyIGNhbiBib290IG9uKSB0aHJvd3NcbiAgICogYEluY29tcGF0aWJsZUluc3RhbGxlclZlcnNpb25FcnJvcmAgZnJvbSB2ZXJzaW9uIHJlc29sdXRpb24sIGJlZm9yZSBhbnl0aGluZ1xuICAgKiBpcyBkb3dubG9hZGVkIG9yIGxhdW5jaGVkLiBTZXQgYGZhbHNlYCB0byBsZXQgdGhlIHBpbiBwcm9jZWVkIHRvIGxhdW5jaFxuICAgKiBpbnN0ZWFkIFx1MjAxNCB3aGVyZSB0aGUgcmVhY3RpdmUgZGVhZC1ib290IGZhc3QtZmFpbFxuICAgKiAoYFJlbmRlcmVyRmFpbGVkVG9Jbml0aWFsaXplRXJyb3JgLCBzZWUge0BsaW5rIGRlYWRCb290R3JhY2VJbk1pbGxpc2Vjb25kc30pXG4gICAqIHN0aWxsIGNhdGNoZXMgdGhlIGJsYWNrLXNjcmVlbiBib290LCBhbmQgdGhlIGAndW5ydW5uYWJsZSdgIHZlcmRpY3QgaXNcbiAgICogc3VyZmFjZWQgYXMgZGF0YSByYXRoZXIgdGhhbiB0aHJvd24uIE9ubHkgYXBwbGllcyB0byBhbiBvd25lZCBpbnN0YW5jZVxuICAgKiAoaWdub3JlZCBpbiBhdHRhY2ggbW9kZSwge0BsaW5rIHBvcnR9IHNldCkuXG4gICAqXG4gICAqIEBkZWZhdWx0IGB0cnVlYFxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkVGhyb3dPbkluY29tcGF0aWJsZUluc3RhbGxlcj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgYSAqKnNpbGVudCBhc2FyIGZhbGxiYWNrKiogZmFpbHMgZmFzdCBhZnRlciBib290LlxuICAgKlxuICAgKiBXaGVuIGFuIGFzYXIgaXMgc3dhcHBlZCBvbnRvIGFuIGluc3RhbGxlciBzaGVsbCB0b28gb2xkIGZvciBpdCwgdGhlIGluc3RhbmNlXG4gICAqIG1heSBub3QgZGVhZC1ib290IFx1MjAxNCBpdCBjYW4gc2lsZW50bHkgcmV2ZXJ0IHRvIHRoZSBpbnN0YWxsZXIncyBvd24gYnVuZGxlZFxuICAgKiBhc2FyIGFuZCBydW4gdGhlICoqd3JvbmcgKG9sZGVyKSoqIHZlcnNpb24gYmVoaW5kIGEgaGVhbHRoeSBVSS4gV2hlbiBgdHJ1ZWBcbiAgICogKHRoZSBkZWZhdWx0KSwgdGhlIHRyYW5zcG9ydCB2ZXJpZmllcyB0aGUgcnVubmluZyBhcHAgdmVyc2lvbiBhZ2FpbnN0IHRoZSBwaW5cbiAgICogcG9zdC1ib290IGFuZCB0aHJvd3MgYFNpbGVudEFzYXJGYWxsYmFja0Vycm9yYCBvbiBhIG1pc21hdGNoLiBTZXQgYGZhbHNlYCB0b1xuICAgKiBsZXQgdGhlIGJvb3QgcHJvY2VlZCBcdTIwMTQgdGhlIG1pc21hdGNoIGlzIHRoZW4gc3VyZmFjZWQgYXMgZGF0YSAodGhlIGZhbGxiYWNrXG4gICAqIHZlcmRpY3QpIHJhdGhlciB0aGFuIHRocm93bi4gT25seSBhcHBsaWVzIHRvIGFuIG93bmVkIGluc3RhbmNlIHJ1bm5pbmcgYVxuICAgKiBzd2FwcGVkLWluIGFzYXIgKGlnbm9yZWQgaW4gYXR0YWNoIG1vZGUsIHtAbGluayBwb3J0fSBzZXQsIGFuZCB3aGVuIG5vIGFzYXIgaXNcbiAgICogc3dhcHBlZCBcdTIwMTQgdGhlcmUgaXMgbm90aGluZyB0byB2ZXJpZnkpLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgdHJ1ZWBcbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZFRocm93T25TaWxlbnRBc2FyRmFsbGJhY2s/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBvd25lZC1pbnN0YW5jZSBjb21wYXRpYmlsaXR5ICoqbmFnIHdhcm5pbmdzKiogYXJlIGVtaXR0ZWQuXG4gICAqXG4gICAqIENvdmVycyAqKmJvdGgqKiBjb21wYXRpYmlsaXR5IG5hZ3M6IHRoZSBvZmZsaW5lIGluc3RhbGxlclx1MjE5NGFwcCB3YXJuaW5nIChhXG4gICAqIHJ1bm5hYmxlIGluc3RhbGxlciBiZWxvdyB0aGUgcmVjb21tZW5kZWQgZmxvb3IpIGFuZCB0aGUgcG9zdC1ib290XG4gICAqIHJ1bnRpbWUtRWxlY3Ryb24gd2FybmluZyAoYSBsaXZlIEVsZWN0cm9uIGJlbG93IHRoZSBhcHAncyByZWNvbW1lbmRlZFxuICAgKiBtaW5pbXVtKS4gV2hlbiBgdHJ1ZWAgKHRoZSBkZWZhdWx0KSBlYWNoIGZpcmVzIHZpYSB0aGUgaGFybmVzcyBsb2c7IHNldFxuICAgKiBgZmFsc2VgIHRvIHNpbGVuY2UgYm90aCBcdTIwMTQgdGhlIHZlcmRpY3RzIGFyZSBzdGlsbCBjb21wdXRlZCBhbmQgc3VyZmFjZWQgYXNcbiAgICogZGF0YSAoYGNvbXBhdGliaWxpdHlgIC8gYGVsZWN0cm9uQ29tcGF0aWJpbGl0eWApLCBvbmx5IHRoZSBsb2cgaXMgc3VwcHJlc3NlZC5cbiAgICogRG9lcyBub3QgYWZmZWN0IHRoZSBgJ3VucnVubmFibGUnYCB0aHJvdyAoc2VlXG4gICAqIHtAbGluayBzaG91bGRUaHJvd09uSW5jb21wYXRpYmxlSW5zdGFsbGVyfSkuIE9ubHkgYXBwbGllcyB0byBhbiBvd25lZFxuICAgKiBpbnN0YW5jZSAoaWdub3JlZCBpbiBhdHRhY2ggbW9kZSwge0BsaW5rIHBvcnR9IHNldCkuXG4gICAqXG4gICAqIEBkZWZhdWx0IGB0cnVlYFxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkV2Fybk9uQ29tcGF0aWJpbGl0eUlzc3Vlcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIERpc2NyaW1pbmFudCBmb3IgdGhlIHRyYW5zcG9ydCB0eXBlLlxuICAgKi9cbiAgcmVhZG9ubHkgdHlwZTogJ29ic2lkaWFuLWNkcCc7XG59XG5cbi8qKlxuICogRGlzY3JpbWluYXRlZCB1bmlvbiBvZiBhbGwgc3VwcG9ydGVkIHRyYW5zcG9ydCBjb25maWd1cmF0aW9ucy5cbiAqXG4gKiBVc2VkIGluIHZpdGVzdCBgZW52aXJvbm1lbnRPcHRpb25zLm9ic2lkaWFuVHJhbnNwb3J0YCB0byBzZWxlY3QgYW5kXG4gKiBjb25maWd1cmUgdGhlIHRyYW5zcG9ydCBmb3IgaW50ZWdyYXRpb24gdGVzdHMuXG4gKi9cbmV4cG9ydCB0eXBlIE9ic2lkaWFuVHJhbnNwb3J0T3B0aW9ucyA9XG4gIHwgT2JzaWRpYW5BbmRyb2lkQXBwaXVtVHJhbnNwb3J0T3B0aW9uc1xuICB8IE9ic2lkaWFuQ2RwVHJhbnNwb3J0T3B0aW9ucztcblxuLyoqXG4gKiBXaGV0aGVyIHRoZXNlIG9wdGlvbnMgZGVzY3JpYmUgYSBtb2JpbGUgdHJhbnNwb3J0LlxuICpcbiAqIFRoZSBzYW1lIGZhY3QgYXMge0BsaW5rIE9ic2lkaWFuVHJhbnNwb3J0LmlzTW9iaWxlfSwgYnV0IGtub3dhYmxlIGZyb20gdGhlIG9wdGlvbnMgYWxvbmUgXHUyMDE0IHNvIGEgY2FsbGVyXG4gKiBjYW4gYWN0IG9uIGl0IGJlZm9yZSBwYXlpbmcgZm9yIGEgZGV2aWNlLiBSZWFkaW5nIGl0IG9mZiBhIGxpdmUgdHJhbnNwb3J0IG1lYW5zIGJvb3RpbmcgdGhlIGVtdWxhdG9yXG4gKiBhbmQgdGhlIEFwcGl1bSBzZXNzaW9uIGZpcnN0LCB3aGljaCBpcyB+NzAgcyB0byBsZWFybiBzb21ldGhpbmcgdGhlIGRpc2NyaW1pbmFudCBhbHJlYWR5IHNheXMuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgcmVzb2x2ZWQgdHJhbnNwb3J0IG9wdGlvbnMuXG4gKiBAcmV0dXJucyBgdHJ1ZWAgZm9yIGEgbW9iaWxlIHRyYW5zcG9ydCwgYGZhbHNlYCBmb3IgZGVza3RvcC5cbiAqL1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG9ic2lkaWFuLWRldi11dGlscy9wYXJhbXMtb3B0aW9ucy1uYW1lLW1hdGNoIC0tIFBlcm1hbmVudDogYE9ic2lkaWFuVHJhbnNwb3J0T3B0aW9uc2AgaXMgb25lIHRyYW5zcG9ydCBvcHRpb25zIGJhZyByZWFkIGJ5IGZpdmUgaGVscGVycywgc28gbm8gcGVyLW93bmVyIG5hbWUgY2FuIHNhdGlzZnkgdGhlbSBhbGwuXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tJc01vYmlsZVRyYW5zcG9ydChvcHRpb25zOiBPYnNpZGlhblRyYW5zcG9ydE9wdGlvbnMpOiBib29sZWFuIHtcbiAgcmV0dXJuIG9wdGlvbnMudHlwZSA9PT0gJ29ic2lkaWFuLWFuZHJvaWQtYXBwaXVtJztcbn1cblxuLyoqXG4gKiBUaGUgY29uZmlnIGZvbGRlciBhIHZhdWx0IHRoZSBoYXJuZXNzICoqb3ducyoqIHdpbGwgYWN0dWFsbHkgcmVhZCwgb3IgYHVuZGVmaW5lZGAgd2hlbiBpdCBpc1xuICogT2JzaWRpYW4ncyBvd24gZGVmYXVsdC5cbiAqXG4gKiB7QGxpbmsgT2JzaWRpYW5DZHBUcmFuc3BvcnRPcHRpb25zLmNvbmZpZ0RpcmVjdG9yeX0gaXMgdGhlIG9ubHkga25vYiB0aGF0IG1vdmVzIGl0LCBhbmQgaXQgaXNcbiAqIG1lYW5pbmdmdWwgb25seSBpbiBvd25lZCBtb2RlOiBpbiBhdHRhY2ggbW9kZSB0aGUgdmF1bHQgaXMgb3BlbmVkIGJ5IHRoZSB1c2VyJ3Mgb3duIE9ic2lkaWFuIHVuZGVyXG4gKiBpdHMgb3duIGNvbmZpZywgYW5kIG9uIEFuZHJvaWQgdGhlcmUgaXMgbm8gb3ZlcnJpZGUgYXQgYWxsLiBBbnl0aGluZyB0aGUgaGFybmVzcyB3cml0ZXMgaW50byBhIHZhdWx0XG4gKiBiZWZvcmUgaXQgaXMgb3BlbmVkIGhhcyB0byBnbyB3aGVyZSB0aGF0IHZhdWx0IHdpbGwgbG9vaywgc28gdGhpcyBpcyB0aGUgYW5zd2VyIGV2ZXJ5IHN1Y2ggd3JpdGVyXG4gKiBuZWVkcyBcdTIwMTQgc2VlIGBlbnN1cmVIZWFkbGVzc1ZhdWx0Q29uZmlnYC5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSByZXNvbHZlZCB0cmFuc3BvcnQgb3B0aW9ucy5cbiAqIEByZXR1cm5zIFRoZSBvdmVycmlkZGVuIGNvbmZpZyBmb2xkZXIgbmFtZSwgb3IgYHVuZGVmaW5lZGAgZm9yIE9ic2lkaWFuJ3MgZGVmYXVsdC5cbiAqL1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG9ic2lkaWFuLWRldi11dGlscy9wYXJhbXMtb3B0aW9ucy1uYW1lLW1hdGNoIC0tIFBlcm1hbmVudDogYE9ic2lkaWFuVHJhbnNwb3J0T3B0aW9uc2AgaXMgb25lIHRyYW5zcG9ydCBvcHRpb25zIGJhZyByZWFkIGJ5IGZpdmUgaGVscGVycywgc28gbm8gcGVyLW93bmVyIG5hbWUgY2FuIHNhdGlzZnkgdGhlbSBhbGwuXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZU93bmVkQ29uZmlnRGlyZWN0b3J5KG9wdGlvbnM6IE9ic2lkaWFuVHJhbnNwb3J0T3B0aW9ucyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGlmIChvcHRpb25zLnR5cGUgIT09ICdvYnNpZGlhbi1jZHAnIHx8IG9wdGlvbnMucG9ydCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHJldHVybiBvcHRpb25zLmNvbmZpZ0RpcmVjdG9yeTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXNuQk8sU0FBUyx1QkFBdUIsU0FBNEM7QUFDakYsU0FBTyxRQUFRLFNBQVM7QUFDMUI7QUFnQk8sU0FBUyw0QkFBNEIsU0FBdUQ7QUFDakcsTUFBSSxRQUFRLFNBQVMsa0JBQWtCLFFBQVEsU0FBUyxRQUFXO0FBQ2pFLFdBQU87QUFBQSxFQUNUO0FBRUEsU0FBTyxRQUFRO0FBQ2pCOyIsCiAgIm5hbWVzIjogW10KfQo=
|
|
@@ -14,4 +14,4 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
14
14
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
15
15
|
var transport_exports = {};
|
|
16
16
|
module.exports = __toCommonJS(transport_exports);
|
|
17
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3RyYW5zcG9ydC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIERlZmluZXMgdGhlIHRyYW5zcG9ydCBpbnRlcmZhY2UgZm9yIGNvbW11bmljYXRpbmcgd2l0aCBhIHJ1bm5pbmcgT2JzaWRpYW4gaW5zdGFuY2UuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBDYXB0dXJlU2NyZWVuc2hvdFBhcmFtcyB9IGZyb20gJy4vY2FwdHVyZS1zY3JlZW5zaG90LmNqcyc7XG5cbi8qKlxuICogQW4gb3BhcXVlIGhhbmRsZSBpZGVudGlmeWluZyBhIGNvbnNvbGUtY2FwdHVyZSB3aW5kb3cgb3BlbmVkIGJ5XG4gKiB7QGxpbmsgT2JzaWRpYW5UcmFuc3BvcnQuYmVnaW5Db25zb2xlQ2FwdHVyZX0gYW5kIGNvbnN1bWVkIGJ5XG4gKiB7QGxpbmsgT2JzaWRpYW5UcmFuc3BvcnQucmVhZENvbnNvbGVDYXB0dXJlU2luY2V9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbnNvbGVDYXB0dXJlSGFuZGxlIHtcbiAgLyoqXG4gICAqIEEgdW5pcXVlIG1hcmtlciB3cml0dGVuIGludG8gdGhlIHRhcmdldCdzIGxvZyBzdHJlYW0gYXQgY2FwdHVyZSBzdGFydCxcbiAgICogdXNlZCB0byBzbGljZSBvdXQgZXZlcnl0aGluZyBsb2dnZWQgYWZ0ZXIgdGhpcyBwb2ludC5cbiAgICovXG4gIHJlYWRvbmx5IG1hcmtlcjogc3RyaW5nO1xufVxuXG4vKipcbiAqIEEgcGx1Z2dhYmxlIHRyYW5zcG9ydCB0aGF0IGV2YWx1YXRlcyBKYXZhU2NyaXB0IGV4cHJlc3Npb25zIGluc2lkZSBhIHJ1bm5pbmdcbiAqIE9ic2lkaWFuIGluc3RhbmNlIGFuZCBtYW5hZ2VzIHZhdWx0IGxpZmVjeWNsZS5cbiAqXG4gKiBJbXBsZW1lbnRhdGlvbnMgaGFuZGxlIHRoZSBwbGF0Zm9ybS1zcGVjaWZpYyBkZXRhaWxzOlxuICogLSB7QGxpbmsgRGVza3RvcENkcFRyYW5zcG9ydH0gXHUyMDE0IERlc2t0b3AgT2JzaWRpYW4gdmlhIENocm9tZSBEZXZUb29scyBQcm90b2NvbFxuICogICAoYSBoYXJuZXNzLW93bmVkIGlzb2xhdGVkIGluc3RhbmNlIGJ5IGRlZmF1bHQsIG9yIGF0dGFjaCB0byBhIHJ1bm5pbmcgb25lKVxuICogLSB7QGxpbmsgQXBwaXVtVHJhbnNwb3J0fSBcdTIwMTQgTW9iaWxlIE9ic2lkaWFuIHZpYSBBcHBpdW0gV2ViVmlldyBKUyBpbmplY3Rpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPYnNpZGlhblRyYW5zcG9ydCB7XG4gIC8qKlxuICAgKiBCZWdpbnMgY2FwdHVyaW5nIHRoZSB0YXJnZXQncyBuYXRpdmUgY29uc29sZS9lcnJvciBzdHJlYW0gc28gYSBsYXRlclxuICAgKiB7QGxpbmsgT2JzaWRpYW5UcmFuc3BvcnQucmVhZENvbnNvbGVDYXB0dXJlU2luY2V9IGNhbiByZXR1cm4gZXZlcnl0aGluZ1xuICAgKiBsb2dnZWQgc2luY2UgdGhpcyBjYWxsLlxuICAgKlxuICAgKiBVc2VkIHRvIHN1cmZhY2UgdGhlICpyZWFsKiBwbHVnaW4tbG9hZCBlcnJvciB3aGVuIE9ic2lkaWFuIHN3YWxsb3dzIGl0XG4gICAqIGJlZm9yZSB0aGUgaGFybmVzcydzIGBsb2FkUGx1Z2luYCBtb25rZXktcGF0Y2ggc2VlcyBpdCAodGhlIGVycm9yIHRoZW5cbiAgICogb25seSBleGlzdHMgaW4gdGhlIHJlbmRlcmVyL1dlYlZpZXcgY29uc29sZSkuIE9wdGlvbmFsIGFuZCBwbGF0Zm9ybS1zcGVjaWZpYzpcbiAgICogaW1wbGVtZW50ZWQgYnkge0BsaW5rIEFwcGl1bVRyYW5zcG9ydH0gKHRhaWxzIGBhZGIgbG9nY2F0YCk7IGFic2VudCBvblxuICAgKiB7QGxpbmsgRGVza3RvcENkcFRyYW5zcG9ydH0gKGRlc2t0b3AgZXJyb3JzIGFyZSBzdXJmYWNlZCBpbi1yZW5kZXJlciwgYW5kIGFcbiAgICogZGV2ZWxvcGVyIGNhbiBvcGVuIERldlRvb2xzIGRpcmVjdGx5KS5cbiAgICpcbiAgICogQHJldHVybnMgQW4gb3BhcXVlIGhhbmRsZSB0byBwYXNzIHRvIHtAbGluayBPYnNpZGlhblRyYW5zcG9ydC5yZWFkQ29uc29sZUNhcHR1cmVTaW5jZX0sIG9yIGB1bmRlZmluZWRgIHdoZW4gdW5zdXBwb3J0ZWQuXG4gICAqL1xuICBiZWdpbkNvbnNvbGVDYXB0dXJlPzogKCkgPT4gUHJvbWlzZTxDb25zb2xlQ2FwdHVyZUhhbmRsZSB8IHVuZGVmaW5lZD47XG5cbiAgLyoqXG4gICAqIENhcHR1cmVzIGEgUE5HIHNjcmVlbnNob3Qgb2YgdGhlIHJ1bm5pbmcgT2JzaWRpYW4gaW5zdGFuY2UuXG4gICAqXG4gICAqIE9wdGlvbmFsIGFuZCBwbGF0Zm9ybS1zcGVjaWZpYywgbGlrZSB0aGUgb3RoZXIgbWVtYmVycyBoZXJlLiBJbXBsZW1lbnRlZCBieVxuICAgKiB7QGxpbmsgRGVza3RvcENkcFRyYW5zcG9ydH0gKENEUCBgUGFnZS5jYXB0dXJlU2NyZWVuc2hvdGAsIG9wdGlvbmFsbHkgd2l0aFxuICAgKiB0aGUgdmlld3BvcnQgcGlubmVkIHRvIGFuIGV4YWN0IHNpemUpIGFuZCBieSB7QGxpbmsgQXBwaXVtVHJhbnNwb3J0fVxuICAgKiAoYHRha2VTY3JlZW5zaG90YCwgYWx3YXlzIHRoZSBkZXZpY2UncyBuYXRpdmUgZnJhbWVidWZmZXIgXHUyMDE0IHRoZSBzaXplIGtub2JzXG4gICAqIGFyZSBpZ25vcmVkLCBzbyBhIG1vYmlsZSBjYXB0dXJlIGlzIHNpemVkIGJ5IGNob29zaW5nIGFuIEFWRCB3aXRoIHRoZSB3YW50ZWRcbiAgICogc2NyZWVuIGdlb21ldHJ5KS5cbiAgICpcbiAgICogQHBhcmFtIHBhcmFtcyAtIFdoaWNoIHdpbmRvdyB0byBjYXB0dXJlLCBhbmQgdGhlIGV4YWN0IHNpemUgdG8gY2FwdHVyZSBpdCBhdC5cbiAgICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byB0aGUgcmF3IFBORyBieXRlcy5cbiAgICovXG4gIGNhcHR1cmVTY3JlZW5zaG90PzogKHBhcmFtczogQ2FwdHVyZVNjcmVlbnNob3RQYXJhbXMpID0+IFByb21pc2U8VWludDhBcnJheT47XG5cbiAgLyoqXG4gICAqIERpc3Bvc2VzIG9mIHRyYW5zcG9ydCByZXNvdXJjZXMgKGUuZy4gV2ViU29ja2V0IGNvbm5lY3Rpb25zLCBBcHBpdW0gc2Vzc2lvbnMpLlxuICAgKi9cbiAgZGlzcG9zZT86ICgpID0+IFByb21pc2U8dm9pZD47XG5cbiAgLyoqXG4gICAqIFN5bmNocm9ub3VzIGRpc3Bvc2FsIGZvciB1c2UgaW4gYHByb2Nlc3Mub24oJ2V4aXQnKWAgaGFuZGxlcnMgd2hlcmVcbiAgICogYXN5bmMgd29yayBpcyBub3QgcG9zc2libGUuXG4gICAqXG4gICAqIEltcGxlbWVudGF0aW9ucyBzaG91bGQgcGVyZm9ybSBvbmx5IHN5bmNocm9ub3VzIGNsZWFudXAgaGVyZSAoZS5nLiBraWxsaW5nXG4gICAqIGNoaWxkIHByb2Nlc3NlcykuIEFzeW5jIG9wZXJhdGlvbnMgbGlrZSB1bnJlZ2lzdGVyaW5nIHZhdWx0cyBhcmUgc2tpcHBlZC5cbiAgICovXG4gIGRpc3Bvc2VTeW5jPzogKCkgPT4gdm9pZDtcblxuICAvKipcbiAgICogRXZhbHVhdGVzIGEgSmF2YVNjcmlwdCBleHByZXNzaW9uIHN0cmluZyBpbnNpZGUgT2JzaWRpYW4gYW5kIHJldHVybnMgdGhlXG4gICAqIHJhdyBzdHJpbmcgcmVzdWx0LlxuICAgKlxuICAgKiBUaGUgdHJhbnNwb3J0IG5vcm1hbGl6ZXMgdGhlIG91dHB1dCBcdTIwMTQgc3RyaXBwaW5nIHRyYW5zcG9ydC1zcGVjaWZpYyBwcmVmaXhlc1xuICAgKiBhbmQgaGFuZGxpbmcgdHJhbnNwb3J0LXNwZWNpZmljIGVycm9ycyBcdTIwMTQgc28gY2FsbGVycyByZWNlaXZlIGEgY2xlYW4gcmVzdWx0XG4gICAqIHN0cmluZyAoZS5nLiBhIEpTT04gc3RyaW5nLCBvciBgKG5vIG91dHB1dClgKS5cbiAgICpcbiAgICogQHBhcmFtIGV4cHJlc3Npb24gLSBBIHNlbGYtY29udGFpbmVkIEphdmFTY3JpcHQgZXhwcmVzc2lvbiAodHlwaWNhbGx5IGFuIGFzeW5jIElJRkUpLlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIEV2YWx1YXRpb24gb3B0aW9ucyBpbmNsdWRpbmcgdGhlIHdvcmtpbmcgZGlyZWN0b3J5LlxuICAgKiBAcmV0dXJucyBUaGUgcmF3IHJlc3VsdCBzdHJpbmcgZnJvbSBPYnNpZGlhbi5cbiAgICovXG4gIGV2YWx1YXRlOiAoZXhwcmVzc2lvbjogc3RyaW5nLCBvcHRpb25zOiBUcmFuc3BvcnRFdmFsT3B0aW9ucykgPT4gUHJvbWlzZTxzdHJpbmc+O1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoaXMgdHJhbnNwb3J0IHRhcmdldHMgYSBtb2JpbGUgT2JzaWRpYW4gaW5zdGFuY2UuXG4gICAqXG4gICAqIFdoZW4gYHRydWVgLCBkZXNrdG9wLW9ubHkgcGx1Z2lucyAod2l0aCBgaXNEZXNrdG9wT25seTogdHJ1ZWAgaW4gbWFuaWZlc3QpXG4gICAqIHdpbGwgcmVmdXNlIHRvIHJ1biBpbnRlZ3JhdGlvbiB0ZXN0cy5cbiAgICovXG4gIGlzTW9iaWxlOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBSdW5zIHRyYW5zcG9ydC1zcGVjaWZpYyBwcmVmbGlnaHQgY2hlY2tzIGJlZm9yZSBldmFsdWF0aW9uLlxuICAgKlxuICAgKiBGb3IgZXhhbXBsZSwgdGhlIENMSSB0cmFuc3BvcnQgdmVyaWZpZXMgdGhhdCB0aGUgdmF1bHQgaXMgcmVnaXN0ZXJlZCxcbiAgICogdGhlIENMSSBpcyBlbmFibGVkLCBhbmQgdGhlIENMSSBiaW5hcnkgaXMgaW4gUEFUSC5cbiAgICpcbiAgICogQHBhcmFtIHZhdWx0UGF0aCAtIFRoZSBhYnNvbHV0ZSBwYXRoIHRvIHRoZSB2YXVsdCBmb2xkZXIuXG4gICAqL1xuICBwcmVmbGlnaHRDaGVjazogKHZhdWx0UGF0aDogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+O1xuXG4gIC8qKlxuICAgKiBQdXNoZXMgZmlsZXMgaW50byBhIHZhdWx0IGRpcmVjdG9yeSBvbiB0aGUgdGFyZ2V0IGRldmljZS5cbiAgICpcbiAgICogT24gZGVza3RvcCB0aGlzIGlzIGEgbm8tb3AgKGZpbGVzIGFyZSB3cml0dGVuIHRvIHRoZSBsb2NhbCBmaWxlc3lzdGVtIGRpcmVjdGx5KS5cbiAgICogT24gbW9iaWxlIHRoaXMgdXNlcyB0aGUgZGV2aWNlJ3MgZmlsZSB0cmFuc2ZlciBtZWNoYW5pc20gKGUuZy4gQXBwaXVtIGBwdXNoRmlsZWApLlxuICAgKlxuICAgKiBAcGFyYW0gdmF1bHRQYXRoIC0gVGhlIGFic29sdXRlIHBhdGggdG8gdGhlIHZhdWx0IGZvbGRlci5cbiAgICogQHBhcmFtIGZpbGVzIC0gTWFwIG9mIHJlbGF0aXZlIGZpbGUgcGF0aHMgdG8gY29udGVudCBidWZmZXJzLlxuICAgKi9cbiAgcHVzaEZpbGVzPzogKHZhdWx0UGF0aDogc3RyaW5nLCBmaWxlczogUmVjb3JkPHN0cmluZywgVWludDhBcnJheT4pID0+IFByb21pc2U8dm9pZD47XG5cbiAgLyoqXG4gICAqIFJlYWRzIHRoZSBuYXRpdmUgY29uc29sZS9lcnJvciBvdXRwdXQgY2FwdHVyZWQgc2luY2UgdGhlIG1hdGNoaW5nXG4gICAqIHtAbGluayBPYnNpZGlhblRyYW5zcG9ydC5iZWdpbkNvbnNvbGVDYXB0dXJlfSBjYWxsLlxuICAgKlxuICAgKiBBIGJvdW5kZWQsIHBvc3QtaG9jLCBmYWlsdXJlLXBhdGgtb25seSBkdW1wIFx1MjAxNCBub3QgYSBsaXZlIG1vbml0b3IuXG4gICAqXG4gICAqIEBwYXJhbSBoYW5kbGUgLSBUaGUgaGFuZGxlIHJldHVybmVkIGJ5IHtAbGluayBPYnNpZGlhblRyYW5zcG9ydC5iZWdpbkNvbnNvbGVDYXB0dXJlfSAob3IgYHVuZGVmaW5lZGAgd2hlbiBjYXB0dXJlIHdhcyB1bnN1cHBvcnRlZCkuXG4gICAqIEByZXR1cm5zIFRoZSBjYXB0dXJlZCBjb25zb2xlL2Vycm9yIHRleHQsIG9yIGB1bmRlZmluZWRgIHdoZW4gdW5zdXBwb3J0ZWQgb3Igbm90aGluZyByZWxldmFudCB3YXMgbG9nZ2VkLlxuICAgKi9cbiAgcmVhZENvbnNvbGVDYXB0dXJlU2luY2U/OiAoaGFuZGxlOiBDb25zb2xlQ2FwdHVyZUhhbmRsZSB8IHVuZGVmaW5lZCkgPT4gUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+O1xuXG4gIC8qKlxuICAgKiBSZWdpc3RlcnMgYSB2YXVsdCBwYXRoIHNvIE9ic2lkaWFuIGNhbiB0YXJnZXQgaXQuXG4gICAqXG4gICAqIE9uIGRlc2t0b3A6IHVzZXMgRWxlY3Ryb24gSVBDIHRvIG9wZW4gdGhlIHZhdWx0IGFuZCBwb2xscyBmb3IgcmVhZGluZXNzLlxuICAgKiBPbiBtb2JpbGU6IHB1c2hlcyBvbmx5IGEgbWluaW1hbCBgLm9ic2lkaWFuYCBtYXJrZXIgc28gdGhlIGZvbGRlciBpcyByZWNvZ25pemVkIGFzIGEgdmF1bHQsXG4gICAqIHBvaW50cyB0aGUgYXBwJ3MgYGxvY2FsU3RvcmFnZWAgYXQgaXQsIGFuZCByZWxvYWRzLlxuICAgKlxuICAgKiBJdCBkb2VzICoqbm90KiogY2FycnkgdGhlIHZhdWx0J3MgY29udGVudHMgYWNyb3NzIG9uIGVpdGhlciBwbGF0Zm9ybSBcdTIwMTQgdGhhdCBpc1xuICAgKiB7QGxpbmsgT2JzaWRpYW5UcmFuc3BvcnQucHVzaEZpbGVzfScgam9iLCB3aGljaCBgVGVtcG9yYXJ5VmF1bHQucmVnaXN0ZXJgIHJ1bnMgZmlyc3QuIEEgY2FsbGVyXG4gICAqIGRyaXZpbmcgYSB0cmFuc3BvcnQgZGlyZWN0bHkgaGFzIHRvIHB1c2ggYmVmb3JlIHJlZ2lzdGVyaW5nLCBvciB0aGUgYXBwIG9wZW5zIGFuIGVtcHR5IHZhdWx0XG4gICAqIHdpdGggbm90aGluZyByYWlzZWQgdG8gc2F5IHNvLlxuICAgKlxuICAgKiBAcGFyYW0gdmF1bHRQYXRoIC0gVGhlIGFic29sdXRlIHBhdGggdG8gdGhlIHZhdWx0IGZvbGRlci5cbiAgICovXG4gIHJlZ2lzdGVyVmF1bHQ6ICh2YXVsdFBhdGg6IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPjtcblxuICAvKipcbiAgICogVW5yZWdpc3RlcnMgYSB2YXVsdCBwYXRoIGZyb20gdGhlIHJ1bm5pbmcgT2JzaWRpYW4gaW5zdGFuY2UuXG4gICAqXG4gICAqIE9uIGRlc2t0b3A6IGNsb3NlcyB0aGUgdmF1bHQgd2luZG93IGFuZCByZW1vdmVzIGl0IGZyb20gdGhlIHJlZ2lzdHJ5LlxuICAgKiBPbiBtb2JpbGU6IHJlbW92ZXMgdmF1bHQgZmlsZXMgZnJvbSB0aGUgZGV2aWNlLlxuICAgKlxuICAgKiBAcGFyYW0gdmF1bHRQYXRoIC0gVGhlIGFic29sdXRlIHBhdGggdG8gdGhlIHZhdWx0IGZvbGRlci5cbiAgICovXG4gIHVucmVnaXN0ZXJWYXVsdDogKHZhdWx0UGF0aDogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+O1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGluayBPYnNpZGlhblRyYW5zcG9ydC5ldmFsdWF0ZX0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVHJhbnNwb3J0RXZhbE9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIHdvcmtpbmcgZGlyZWN0b3J5ICh2YXVsdCBwYXRoKSBmb3IgdGhlIGV2YWx1YXRpb24uXG4gICAqL1xuICByZWFkb25seSBjd2Q6IHN0cmluZztcblxuICAvKipcbiAgICogVGltZW91dCBpbiBtaWxsaXNlY29uZHMgZm9yIHRoZSBldmFsdWF0aW9uIGNvbW1hbmQuXG4gICAqL1xuICByZWFkb25seSB0aW1lb3V0SW5NaWxsaXNlY29uZHM/OiBudW1iZXI7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7IiwKICAibmFtZXMiOiBbXQp9Cg==
|
|
@@ -40,7 +40,7 @@ export interface ObsidianTransport {
|
|
|
40
40
|
*
|
|
41
41
|
* @returns An opaque handle to pass to {@link ObsidianTransport.readConsoleCaptureSince}, or `undefined` when unsupported.
|
|
42
42
|
*/
|
|
43
|
-
beginConsoleCapture
|
|
43
|
+
beginConsoleCapture?: () => Promise<ConsoleCaptureHandle | undefined>;
|
|
44
44
|
/**
|
|
45
45
|
* Captures a PNG screenshot of the running Obsidian instance.
|
|
46
46
|
*
|
|
@@ -54,11 +54,11 @@ export interface ObsidianTransport {
|
|
|
54
54
|
* @param params - Which window to capture, and the exact size to capture it at.
|
|
55
55
|
* @returns A {@link Promise} that resolves to the raw PNG bytes.
|
|
56
56
|
*/
|
|
57
|
-
captureScreenshot
|
|
57
|
+
captureScreenshot?: (params: CaptureScreenshotParams) => Promise<Uint8Array>;
|
|
58
58
|
/**
|
|
59
59
|
* Disposes of transport resources (e.g. WebSocket connections, Appium sessions).
|
|
60
60
|
*/
|
|
61
|
-
dispose
|
|
61
|
+
dispose?: () => Promise<void>;
|
|
62
62
|
/**
|
|
63
63
|
* Synchronous disposal for use in `process.on('exit')` handlers where
|
|
64
64
|
* async work is not possible.
|
|
@@ -66,7 +66,7 @@ export interface ObsidianTransport {
|
|
|
66
66
|
* Implementations should perform only synchronous cleanup here (e.g. killing
|
|
67
67
|
* child processes). Async operations like unregistering vaults are skipped.
|
|
68
68
|
*/
|
|
69
|
-
disposeSync
|
|
69
|
+
disposeSync?: () => void;
|
|
70
70
|
/**
|
|
71
71
|
* Evaluates a JavaScript expression string inside Obsidian and returns the
|
|
72
72
|
* raw string result.
|
|
@@ -79,7 +79,7 @@ export interface ObsidianTransport {
|
|
|
79
79
|
* @param options - Evaluation options including the working directory.
|
|
80
80
|
* @returns The raw result string from Obsidian.
|
|
81
81
|
*/
|
|
82
|
-
evaluate(expression: string, options: TransportEvalOptions)
|
|
82
|
+
evaluate: (expression: string, options: TransportEvalOptions) => Promise<string>;
|
|
83
83
|
/**
|
|
84
84
|
* Whether this transport targets a mobile Obsidian instance.
|
|
85
85
|
*
|
|
@@ -95,7 +95,7 @@ export interface ObsidianTransport {
|
|
|
95
95
|
*
|
|
96
96
|
* @param vaultPath - The absolute path to the vault folder.
|
|
97
97
|
*/
|
|
98
|
-
preflightCheck(vaultPath: string)
|
|
98
|
+
preflightCheck: (vaultPath: string) => Promise<void>;
|
|
99
99
|
/**
|
|
100
100
|
* Pushes files into a vault directory on the target device.
|
|
101
101
|
*
|
|
@@ -105,7 +105,7 @@ export interface ObsidianTransport {
|
|
|
105
105
|
* @param vaultPath - The absolute path to the vault folder.
|
|
106
106
|
* @param files - Map of relative file paths to content buffers.
|
|
107
107
|
*/
|
|
108
|
-
pushFiles
|
|
108
|
+
pushFiles?: (vaultPath: string, files: Record<string, Uint8Array>) => Promise<void>;
|
|
109
109
|
/**
|
|
110
110
|
* Reads the native console/error output captured since the matching
|
|
111
111
|
* {@link ObsidianTransport.beginConsoleCapture} call.
|
|
@@ -115,7 +115,7 @@ export interface ObsidianTransport {
|
|
|
115
115
|
* @param handle - The handle returned by {@link ObsidianTransport.beginConsoleCapture} (or `undefined` when capture was unsupported).
|
|
116
116
|
* @returns The captured console/error text, or `undefined` when unsupported or nothing relevant was logged.
|
|
117
117
|
*/
|
|
118
|
-
readConsoleCaptureSince
|
|
118
|
+
readConsoleCaptureSince?: (handle: ConsoleCaptureHandle | undefined) => Promise<string | undefined>;
|
|
119
119
|
/**
|
|
120
120
|
* Registers a vault path so Obsidian can target it.
|
|
121
121
|
*
|
|
@@ -130,7 +130,7 @@ export interface ObsidianTransport {
|
|
|
130
130
|
*
|
|
131
131
|
* @param vaultPath - The absolute path to the vault folder.
|
|
132
132
|
*/
|
|
133
|
-
registerVault(vaultPath: string)
|
|
133
|
+
registerVault: (vaultPath: string) => Promise<void>;
|
|
134
134
|
/**
|
|
135
135
|
* Unregisters a vault path from the running Obsidian instance.
|
|
136
136
|
*
|
|
@@ -139,7 +139,7 @@ export interface ObsidianTransport {
|
|
|
139
139
|
*
|
|
140
140
|
* @param vaultPath - The absolute path to the vault folder.
|
|
141
141
|
*/
|
|
142
|
-
unregisterVault(vaultPath: string)
|
|
142
|
+
unregisterVault: (vaultPath: string) => Promise<void>;
|
|
143
143
|
}
|
|
144
144
|
/**
|
|
145
145
|
* Options for {@link ObsidianTransport.evaluate}.
|
|
@@ -39,4 +39,4 @@ function shouldTearDownVaultWindow(params) {
|
|
|
39
39
|
0 && (module.exports = {
|
|
40
40
|
shouldTearDownVaultWindow
|
|
41
41
|
});
|
|
42
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3ZhdWx0LXRlYXJkb3duLXZlcmRpY3QudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBQdXJlIGRlY2lzaW9uIGZvciB3aGV0aGVyIHVucmVnaXN0ZXJpbmcgYSB2YXVsdCBtYXkgdGVhciBpdHMgd2luZG93IGRvd24uXG4gKlxuICogVGhlIGRlc2t0b3AgQ0RQIHRyYW5zcG9ydCB1c2VkIHRvIGFuc3dlciB0aGlzIHdpdGggYSBzaW5nbGUgZmxhZy4gSXRzXG4gKiByZWFkaW5lc3MgZ3VhcmQgYXNrcyBgb3duZWRDb25maWcgfHwgaXNIYXJuZXNzT3duZWRJbnN0YW5jZWAgXHUyMDE0IHRoZSB0d28gd2F5c1xuICogXCJ0aGUgaGFybmVzcyBvd25zIHRoaXMgaW5zdGFuY2VcIiBjYW4gYmUgdHJ1ZSBcdTIwMTQgd2hpbGUgaXRzIHRlYXJkb3duIGd1YXJkIGFza2VkXG4gKiBvbmx5IGBvd25lZENvbmZpZ2AuIEEgKip3b3JrZXIqKiBhdHRhY2hlZCB0byBhIGhhcm5lc3Mtb3duZWQgaW5zdGFuY2UgaGFzXG4gKiBgaXNIYXJuZXNzT3duZWRJbnN0YW5jZTogdHJ1ZWAgYW5kIG5vIGBvd25lZENvbmZpZ2AgYXQgYWxsICh0aGUgZ2xvYmFsIHNldHVwXG4gKiBvd25zIHRoZSBjb25maWc7IHRoZSB3b3JrZXIgd2FzIGhhbmRlZCBvbmx5IHRoZSBwb3J0KSwgc28gaXQgZmVsbCBzdHJhaWdodFxuICogdGhyb3VnaCB0aGUgdGVhcmRvd24gZ3VhcmQgYW5kIHJhbiBgZGVzdHJveUN1cnJlbnRXaW5kb3coKWAgYWdhaW5zdCB0aGUgdmF1bHRcbiAqIGl0IHdhcyBhc2tlZCB0byB1bnJlZ2lzdGVyLiBXaGVuIHRoYXQgdmF1bHQgaXMgdGhlIG9uZSB0aGUgd2hvbGUgcnVuIHNoYXJlcyxcbiAqIGl0cyB3aW5kb3cgaXMgdGhlIG9ubHkgb25lIFx1MjAxNCBkZXN0cm95aW5nIGl0IHF1aXRzIHRoZSBhcHAsIGFuZCBldmVyeSBsYXRlciBmaWxlXG4gKiBmYWlscyB3aXRoIGBFQ09OTlJFRlVTRURgIG9uIGEgY2xvc2VkIENEUCBwb3J0LCB3aGljaCByZWFkcyBhcyBhIGhhcm5lc3NcbiAqIG91dGFnZSByYXRoZXIgdGhhbiBhcyBhIHRlYXJkb3duIHRoYXQgb3ZlcnJlYWNoZWQuXG4gKlxuICogTWFraW5nIHRoZSB0d28gZ3VhcmRzIGlkZW50aWNhbCB3b3VsZCBmaXggdGhhdCBhbmQgYnJlYWsgc29tZXRoaW5nIGVsc2U6IGFuXG4gKiBhdHRhY2hlZCB3b3JrZXIgdGhhdCByZWdpc3RlcnMgaXRzICoqb3duKiogYFRlbXBvcmFyeVZhdWx0YCBkb2VzIG5lZWQgdGhhdFxuICogd2luZG93IGNsb3NlZCwgYW5kIGEgYmxhbmtldCBlYXJseS1yZXR1cm4gbGVha3Mgb25lIHN0YWxlIHdpbmRvdyBwZXIgdGVtcFxuICogdmF1bHQgZm9yIHRoZSBsaWZlIG9mIHRoZSBydW4gXHUyMDE0IGVhY2ggcG9pbnRpbmcgYXQgYSBkaXJlY3RvcnkgdGhlIGRpc3Bvc2FsIGhhc1xuICogYWxyZWFkeSBkZWxldGVkLiBTaW5jZSBldmVyeSB3b3JrZXIgaW4gYSBgY3JlYXRlU2V0dXBgIHJ1biBpcyBhbiBhdHRhY2hlZCBvbmUsXG4gKiB0aGF0IGlzIHRoZSBjb21tb24gcGF0aCwgbm90IGFuIGVkZ2UgY2FzZS5cbiAqXG4gKiBTbyB0aGUgaW52YXJpYW50IGlzIG5hcnJvd2VyIHRoYW4gZWl0aGVyIGd1YXJkIGV4cHJlc3NlZDogKiphIHdvcmtlciBhdHRhY2hlZFxuICogdG8gYSBoYXJuZXNzLW93bmVkIGluc3RhbmNlIG1heSB0ZWFyIGRvd24gb25seSBhIHZhdWx0IGl0IHJlZ2lzdGVyZWQgaXRzZWxmLioqXG4gKiBFdmVyeXRoaW5nIGVsc2UgaW4gdGhhdCBpbnN0YW5jZSBiZWxvbmdzIHRvIHRoZSBnbG9iYWwgc2V0dXAgdGhhdCBsYXVuY2hlZCBpdC5cbiAqXG4gKiBLZXB0IG91dCBvZiB0aGUgaW50ZWdyYXRpb24tb25seSB0cmFuc3BvcnQgbW9kdWxlIChleGNsdWRlZCBmcm9tIHVuaXQgdGVzdHMsXG4gKiBgTEY6MGAgaW4gY292ZXJhZ2UpIGZvciB0aGUgc2FtZSByZWFzb24gYHZhdWx0LXBhdGgtbWF0Y2gudHNgIGlzIFx1MjAxNCBzbyB0aGVcbiAqIGRlY2lzaW9uIGlzIHVuaXQtdGVzdGFibGUgd2hpbGUgdGhlIHRyYW5zcG9ydCBrZWVwcyBvbmx5IHRoZSBwbHVtYmluZy5cbiAqL1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBzaG91bGRUZWFyRG93blZhdWx0V2luZG93fS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTaG91bGRUZWFyRG93blZhdWx0V2luZG93UGFyYW1zIHtcbiAgLyoqXG4gIFdoZXRoZXIgdGhpcyB0cmFuc3BvcnQgaXMgYSB3b3JrZXIgYXR0YWNoZWQgdG8gYW4gaW5zdGFuY2UgdGhlIGhhcm5lc3MgbGF1bmNoZWQgZWxzZXdoZXJlLlxuICAgKi9cbiAgcmVhZG9ubHkgaXNIYXJuZXNzT3duZWRJbnN0YW5jZTogYm9vbGVhbjtcblxuICAvKipcbiAgV2hldGhlciB0aGlzIHRyYW5zcG9ydCBsYXVuY2hlZCBhbmQgb3ducyB0aGUgaW5zdGFuY2UgaXRzZWxmLlxuICAgKi9cbiAgcmVhZG9ubHkgaXNPd25lZEluc3RhbmNlOiBib29sZWFuO1xuXG4gIC8qKlxuICBXaGV0aGVyIHRoaXMgdHJhbnNwb3J0IGlzIHRoZSBvbmUgdGhhdCByZWdpc3RlcmVkIHRoZSB2YXVsdCBiZWluZyB1bnJlZ2lzdGVyZWQuXG4gICAqL1xuICByZWFkb25seSBpc1NlbGZSZWdpc3RlcmVkOiBib29sZWFuO1xufVxuXG4vKipcbiAqIFdoZXRoZXIgdW5yZWdpc3RlcmluZyBhIHZhdWx0IG1heSBkZXN0cm95IGl0cyB3aW5kb3cgYW5kIHJlbW92ZSBpdCBmcm9tIHRoZVxuICogcmVnaXN0cnksIG9yIG11c3QgbGVhdmUgdGhlIGluc3RhbmNlIHVudG91Y2hlZC5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gV2hvIG93bnMgdGhlIGluc3RhbmNlLCBhbmQgd2hvIHJlZ2lzdGVyZWQgdGhlIHZhdWx0LlxuICogQHJldHVybnMgYHRydWVgIHdoZW4gdGhlIHdpbmRvdyBtYXkgYmUgdG9ybiBkb3duLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2hvdWxkVGVhckRvd25WYXVsdFdpbmRvdyhwYXJhbXM6IFNob3VsZFRlYXJEb3duVmF1bHRXaW5kb3dQYXJhbXMpOiBib29sZWFuIHtcbiAgY29uc3Qge1xuICAgIGlzSGFybmVzc093bmVkSW5zdGFuY2UsXG4gICAgaXNPd25lZEluc3RhbmNlLFxuICAgIGlzU2VsZlJlZ2lzdGVyZWRcbiAgfSA9IHBhcmFtcztcblxuICBpZiAoaXNPd25lZEluc3RhbmNlKSB7XG4gICAgLy8gVGhlIG93bmVkIGluc3RhbmNlIGlzIGtpbGxlZCB3aG9sZXNhbGUgb24gZGlzcG9zZSwgYW5kIGl0cyByZWdpc3RyeSBsaXZlc1xuICAgIC8vIGluIHRoZSBpc29sYXRlZCB1c2VyLWRhdGEgY29uZmlnIFx1MjAxNCB0aGVyZSBpcyBub3RoaW5nIHRvIHVucmVnaXN0ZXIgZnJvbS5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoaXNIYXJuZXNzT3duZWRJbnN0YW5jZSkge1xuICAgIC8vIEF0dGFjaGVkIHRvIHNvbWVvbmUgZWxzZSdzIGluc3RhbmNlOiBvbmx5IHRoaXMgdHJhbnNwb3J0J3Mgb3duIHZhdWx0cy5cbiAgICByZXR1cm4gaXNTZWxmUmVnaXN0ZXJlZDtcbiAgfVxuXG4gIC8vIFBsYWluIGF0dGFjaCBtb2RlIFx1MjAxNCBhIGZvcmVpZ24gT2JzaWRpYW4gdGhlIGhhcm5lc3Mgb3BlbmVkIGEgdmF1bHQgaW4sIHdoaWNoXG4gIC8vIG91dGxpdmVzIHRoZSBydW4gYW5kIG11c3QgYmUgbGVmdCBhcyBpdCB3YXMgZm91bmQuXG4gIHJldHVybiB0cnVlO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQTRETyxTQUFTLDBCQUEwQixRQUFrRDtBQUMxRixRQUFNO0FBQUEsSUFDSjtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsRUFDRixJQUFJO0FBRUosTUFBSSxpQkFBaUI7QUFHbkIsV0FBTztBQUFBLEVBQ1Q7QUFFQSxNQUFJLHdCQUF3QjtBQUUxQixXQUFPO0FBQUEsRUFDVDtBQUlBLFNBQU87QUFDVDsiLAogICJuYW1lcyI6IFtdCn0K
|
|
@@ -82,4 +82,4 @@ const teardown = defaultGlobalSetup.teardown;
|
|
|
82
82
|
setup,
|
|
83
83
|
teardown
|
|
84
84
|
});
|
|
85
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL3ZpdGVzdC9nbG9iYWwtc2V0dXAudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBWaXRlc3QgZ2xvYmFsIHNldHVwIGFuZCB0ZWFyZG93biBhZGFwdGVyLlxuICpcbiAqIERlbGVnYXRlcyB0byB0aGUgZnJhbWV3b3JrLWFnbm9zdGljIGNvcmUgYW5kIGJyaWRnZXMgY29udGV4dFxuICogdG8gdGVzdCB3b3JrZXJzIHZpYSBWaXRlc3QncyBgcHJvamVjdC5wcm92aWRlYCAvIGBpbmplY3RgLlxuICovXG5cbi8qIHY4IGlnbm9yZSBzdGFydCAtLSBJbnRlZ3JhdGlvbi10aW1lIHNldHVwIGNvdmVyZWQgYnkgaW50ZWdyYXRpb24gdGVzdHMsIG5vdCB1bml0IHRlc3RzLiAqL1xuXG5pbXBvcnQgdHlwZSB7IFRlc3RQcm9qZWN0IH0gZnJvbSAndml0ZXN0L25vZGUnO1xuXG5pbXBvcnQgeyBpbmplY3QgfSBmcm9tICd2aXRlc3QnO1xuXG5pbXBvcnQgdHlwZSB7IENvcmVTZXR1cFJlc3VsdCB9IGZyb20gJy4uL2dsb2JhbC1zZXR1cC1jb3JlLmNqcyc7XG5pbXBvcnQgdHlwZSB7IFBvcHVsYXRlRmlsZXNQYXJhbXMgfSBmcm9tICcuLi90ZW1wb3JhcnktdmF1bHQuY2pzJztcbmltcG9ydCB0eXBlIHsgT2JzaWRpYW5UcmFuc3BvcnRPcHRpb25zIH0gZnJvbSAnLi4vdHJhbnNwb3J0LW9wdGlvbnMuY2pzJztcblxuaW1wb3J0IHtcbiAgc2V0U2V0dXBFcnJvclJlc29sdmVyLFxuICBzZXRUcmFuc3BvcnRPcHRpb25zUmVzb2x2ZXIsXG4gIHNldFZhdWx0UGF0aFJlc29sdmVyXG59IGZyb20gJy4uL2NvbnRleHQtcHJvdmlkZXIuY2pzJztcbmltcG9ydCB7IGVycm9yVG9TdHJpbmcgfSBmcm9tICcuLi9lcnJvci10by1zdHJpbmcuY2pzJztcbmltcG9ydCB7XG4gIGNvcmVTZXR1cCxcbiAgY29yZVRlYXJkb3duXG59IGZyb20gJy4uL2dsb2JhbC1zZXR1cC1jb3JlLmNqcyc7XG5pbXBvcnQgeyBJbnRlZ3JhdGlvblNldHVwRmFpbGVkRXJyb3IgfSBmcm9tICcuLi9pbnRlZ3JhdGlvbi1zZXR1cC1mYWlsZWQtZXJyb3IuY2pzJztcbmltcG9ydCB7IGxvZyB9IGZyb20gJy4uL2xvZy5janMnO1xuaW1wb3J0IHsgVGVtcG9yYXJ5VmF1bHQgfSBmcm9tICcuLi90ZW1wb3JhcnktdmF1bHQuY2pzJztcblxuc2V0U2V0dXBFcnJvclJlc29sdmVyKCgpID0+IGluamVjdCgnc2V0dXBFcnJvcicpKTtcbnNldFRyYW5zcG9ydE9wdGlvbnNSZXNvbHZlcigoKSA9PiBpbmplY3QoJ29ic2lkaWFuVHJhbnNwb3J0JykpO1xuc2V0VmF1bHRQYXRoUmVzb2x2ZXIoKCkgPT4gaW5qZWN0KCd0ZW1wb3JhcnlWYXVsdFBhdGgnKSk7XG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rIGNyZWF0ZVNldHVwfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDcmVhdGVTZXR1cE9wdGlvbnMge1xuICAvKipcbiAgICogQ29tbXVuaXR5LXBsdWdpbiBpZHMgdG8gZW5hYmxlIGluIHRoZSB2YXVsdCBpbiBhZGRpdGlvbiB0byB0aGUgcGx1Z2luLXVuZGVyLXRlc3QsXG4gICAqIGFmdGVyIGl0IGlzIGVuYWJsZWQgKHNlZSB7QGxpbmsgQ29yZVNldHVwUGFyYW1zLmVuYWJsZUNvbW11bml0eVBsdWdpbnN9KS4gU2VlZCBlYWNoXG4gICAqIHBsdWdpbidzIGJ1aWx0IGZpbGVzIHZpYSB7QGxpbmsgQ3JlYXRlU2V0dXBPcHRpb25zLnBvcHVsYXRlfSAoZS5nLiB3aXRoIGBidWlsZERlbW9WYXVsdFBvcHVsYXRlYClcbiAgICogc28gdGhlIGVuYWJsZSBmaW5kcyB0aGVtIG9uIGRpc2suXG4gICAqL1xuICByZWFkb25seSBlbmFibGVDb21tdW5pdHlQbHVnaW5zPzogcmVhZG9ubHkgc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gaW5zdGFsbCBhbmQgZW5hYmxlIHRoZSBidWlsdCBwbHVnaW4gaW4gdGhlIHRlbXAgdmF1bHQuIERlZmF1bHRzXG4gICAqIHRvIGB0cnVlYC4gU2V0IHRvIGBmYWxzZWAgZm9yIGEgKipub24tcGx1Z2luKiogY29uc3VtZXIgdGhhdCBvbmx5IG5lZWRzIGFcbiAgICogcmVnaXN0ZXJlZCwgZW1wdHkgdmF1bHQgdG8gYGV2YWxJbk9ic2lkaWFuYCBhZ2FpbnN0IFx1MjAxNCB0aGUgb3duZWQgaW5zdGFuY2UgaXNcbiAgICogc3RpbGwgbGF1bmNoZWQgYW5kIGl0cyBlbmRwb2ludCBwdWJsaXNoZWQgdG8gd29ya2Vycywgc28gcmUtZXhwb3J0aW5nXG4gICAqIGBjcmVhdGVTZXR1cCh7IGluc3RhbGxQbHVnaW46IGZhbHNlIH0pYCByZXVzZXMgdGhlIHNhbWUgYXR0YWNoIHdpcmluZyB3aXRoIG5vXG4gICAqIHBsdWdpbiBjb3B5L2VuYWJsZS4gU2VlIHtAbGluayBDb3JlU2V0dXBQYXJhbXMuaW5zdGFsbFBsdWdpbn0uXG4gICAqL1xuICByZWFkb25seSBpbnN0YWxsUGx1Z2luPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogUmV0dXJucyBmaWxlcy9mb2xkZXJzIHRvIHdyaXRlIGludG8gdGhlIHZhdWx0IGJlZm9yZSBPYnNpZGlhbiBvcGVucyBpdCAoc2VlXG4gICAqIHtAbGluayBDb3JlU2V0dXBQYXJhbXMucG9wdWxhdGV9KS4gQSB0aHVuayBzbyBsYXJnZSBmaXh0dXJlcyBhcmUgYnVpbHQgbGF6aWx5LFxuICAgKiBvbmNlLCBpbiB0aGUgc2V0dXAgcHJvY2Vzcy5cbiAgICpcbiAgICogTWF5IHJldHVybiBhIHByb21pc2UsIHNvIHRoZSBtYXAgY2FuIGJlIGJ1aWx0IGJ5IHNvbWV0aGluZyB0aGF0IG5lZWRzIHRoZSBuZXR3b3JrIFx1MjAxNCBub3RhYmx5XG4gICAqIGBidWlsZERlbW9WYXVsdFBvcHVsYXRlQXN5bmNgLCB3aGljaCBpbnN0YWxscyBhIGRlbW8gdmF1bHQncyBtaXNzaW5nIGNvbW11bml0eSBwbHVnaW5zIGJlZm9yZVxuICAgKiByZWFkaW5nIHRoZW0uIEEgc3luY2hyb25vdXMgdGh1bmsgKGUuZy4gYGJ1aWxkRGVtb1ZhdWx0UG9wdWxhdGVgKSBpcyB1bmNoYW5nZWQuXG4gICAqL1xuICBwb3B1bGF0ZT8odGhpczogdm9pZCk6IFBvcHVsYXRlRmlsZXNQYXJhbXMgfCBQcm9taXNlPFBvcHVsYXRlRmlsZXNQYXJhbXM+O1xufVxuXG4vKipcbiAqIEEgVml0ZXN0IGBnbG9iYWxTZXR1cGAgbW9kdWxlJ3MgYHNldHVwYCAvIGB0ZWFyZG93bmAgcGFpci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWaXRlc3RHbG9iYWxTZXR1cCB7XG4gIHNldHVwKHRoaXM6IHZvaWQsIHByb2plY3Q6IFRlc3RQcm9qZWN0KTogUHJvbWlzZTx2b2lkPjtcbiAgdGVhcmRvd24odGhpczogdm9pZCk6IFByb21pc2U8dm9pZD47XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIFZpdGVzdCBnbG9iYWwgc2V0dXAvdGVhcmRvd24gcGFpciwgb3B0aW9uYWxseSBwcmUtcG9wdWxhdGluZyB0aGUgdmF1bHRcbiAqIGJlZm9yZSBPYnNpZGlhbiBvcGVucyBpdCBcdTIwMTQgdXNlIHRoaXMgZm9yIGEgZGVkaWNhdGVkIGxhcmdlLXZhdWx0L3BlcmZvcm1hbmNlXG4gKiBwcm9qZWN0LiBUaGUgcGxhaW4ge0BsaW5rIHNldHVwfSAvIHtAbGluayB0ZWFyZG93bn0gZXhwb3J0cyBhcmUgdGhlIG5vLXBvcHVsYXRlXG4gKiBjYXNlIChgY3JlYXRlU2V0dXAoKWApLiBQYXNzIGB7IGluc3RhbGxQbHVnaW46IGZhbHNlIH1gIGZvciBhIG5vbi1wbHVnaW4gY29uc3VtZXJcbiAqIHRoYXQgb25seSBuZWVkcyBhIHJlZ2lzdGVyZWQsIGVtcHR5IHZhdWx0IChzZWUge0BsaW5rIENyZWF0ZVNldHVwT3B0aW9ucy5pbnN0YWxsUGx1Z2lufSkuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBTZXR1cCBvcHRpb25zLlxuICogQHJldHVybnMgVGhlIGBzZXR1cGAgYW5kIGB0ZWFyZG93bmAgZnVuY3Rpb25zIHRvIHJlLWV4cG9ydCBmcm9tIGEgYGdsb2JhbFNldHVwYCBtb2R1bGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTZXR1cChvcHRpb25zPzogQ3JlYXRlU2V0dXBPcHRpb25zKTogVml0ZXN0R2xvYmFsU2V0dXAge1xuICBsZXQgc2V0dXBSZXN1bHQ6IENvcmVTZXR1cFJlc3VsdCB8IHVuZGVmaW5lZDtcblxuICByZXR1cm4geyBzZXR1cCwgdGVhcmRvd24gfTtcblxuICBhc3luYyBmdW5jdGlvbiBzZXR1cChwcm9qZWN0OiBUZXN0UHJvamVjdCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGVudmlyb25tZW50T3B0aW9ucyA9IHByb2plY3QuY29uZmlnLmVudmlyb25tZW50T3B0aW9ucyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IHVuZGVmaW5lZDtcbiAgICBjb25zdCB0cmFuc3BvcnRPcHRpb25zID0gZW52aXJvbm1lbnRPcHRpb25zPy5bJ29ic2lkaWFuVHJhbnNwb3J0J10gYXMgT2JzaWRpYW5UcmFuc3BvcnRPcHRpb25zIHwgdW5kZWZpbmVkO1xuICAgIGNvbnN0IGxhYmVsID0gdHJhbnNwb3J0T3B0aW9ucz8udHlwZSA/PyAnb2JzaWRpYW4tY2RwJztcblxuICAgIHRyeSB7XG4gICAgICBzZXR1cFJlc3VsdCA9IGF3YWl0IGNvcmVTZXR1cCh7XG4gICAgICAgIGVuYWJsZUNvbW11bml0eVBsdWdpbnM6IG9wdGlvbnM/LmVuYWJsZUNvbW11bml0eVBsdWdpbnMsXG4gICAgICAgIGluc3RhbGxQbHVnaW46IG9wdGlvbnM/Lmluc3RhbGxQbHVnaW4sXG4gICAgICAgIHBvcHVsYXRlOiBhd2FpdCBvcHRpb25zPy5wb3B1bGF0ZT8uKCksXG4gICAgICAgIHRyYW5zcG9ydE9wdGlvbnNcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG4gICAgICAvLyBDYXRjaCBzZXR1cCBlcnJvcnMgc28gdGhhdCBvdGhlciBwcm9qZWN0cycgdGVzdHMgY2FuIHN0aWxsIHJ1bi4gRXZlcnkgdGVzdCBpbiBUSElTIHByb2plY3RcbiAgICAgIC8vIFRoZW4gZmFpbHMgd2l0aCB0aGUgc3RvcmVkIGVycm9yOiBgZ2V0T3JDcmVhdGVUcmFuc3BvcnRgIHJlYWRzIGl0IHRocm91Z2ggdGhlIHNldHVwLWVycm9yXG4gICAgICAvLyBSZXNvbHZlciBhbmQgdGhyb3dzIGJlZm9yZSBpdCBjYW4gYnVpbGQgYSB0cmFuc3BvcnQuIFdpdGhvdXQgdGhhdCBhIHdvcmtlciBnZXRzIG5vIG9wdGlvbnNcbiAgICAgIC8vIEF0IGFsbCBhbmQgc2lsZW50bHkgcmVidWlsZHMgdGhlIG93bmVkIERFU0tUT1AgZGVmYXVsdCwgd2hhdGV2ZXIgcGxhdGZvcm0gdGhpcyBwcm9qZWN0IGFza2VkXG4gICAgICAvLyBGb3IgLS0gd2hpY2ggaXMgaG93IGFuIEFuZHJvaWQgcnVuIGNhbWUgdG8gcmVwb3J0IG5pbmUgYEZhaWxlZCB0byBwYXJzZSBVUkwgZnJvbSAvanNvbmBcbiAgICAgIC8vIEZhaWx1cmVzIHdoaWxlIHRoZSByZWFsIGNhdXNlIHNhdCBvbmNlLCBmYXIgYWJvdmUsIGluIHRoaXMgbG9nIChzZWUgQUdFTlRTLm1kIEw5KS5cbiAgICAgIGxvZyhgW2ludGVncmF0aW9uLXNldHVwOiR7bGFiZWx9XSBTZXR1cCBmYWlsZWQgKGV2ZXJ5IHRlc3QgaW4gdGhpcyBwcm9qZWN0IHdpbGwgZmFpbCB3aXRoIHRoaXMgZXJyb3IpOiAke2Vycm9yVG9TdHJpbmcoZXJyb3IpfWApO1xuICAgICAgcHJvamVjdC5wcm92aWRlKCdzZXR1cEVycm9yJywge1xuICAgICAgICBlcnJvck5hbWU6IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5uYW1lIDogJ0Vycm9yJyxcbiAgICAgICAgbWVzc2FnZTogZXJyb3JUb1N0cmluZyhlcnJvciksXG4gICAgICAgIHRyYW5zcG9ydExhYmVsOiBsYWJlbFxuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgcHJvamVjdC5wcm92aWRlKCdvYnNpZGlhblRyYW5zcG9ydCcsIHNldHVwUmVzdWx0LnRyYW5zcG9ydE9wdGlvbnMpO1xuICAgIHByb2plY3QucHJvdmlkZSgndGVtcG9yYXJ5VmF1bHRQYXRoJywgc2V0dXBSZXN1bHQudGVtcG9yYXJ5VmF1bHQucGF0aCk7XG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiB0ZWFyZG93bigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCBjb3JlVGVhcmRvd24oc2V0dXBSZXN1bHQpO1xuICB9XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgdGVtcG9yYXJ5IHZhdWx0IHByb3ZpZGVkIGJ5IHRoZSBnbG9iYWwgc2V0dXAuXG4gKlxuICogQHJldHVybnMgVGhlIHRlbXBvcmFyeSB2YXVsdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFRlbXBvcmFyeVZhdWx0KCk6IFRlbXBvcmFyeVZhdWx0IHtcbiAgY29uc3QgdGVtcG9yYXJ5VmF1bHRQYXRoID0gaW5qZWN0KCd0ZW1wb3JhcnlWYXVsdFBhdGgnKTtcbiAgY29uc3Qgc2V0dXBFcnJvciA9IGluamVjdCgnc2V0dXBFcnJvcicpO1xuICBpZiAoc2V0dXBFcnJvcikge1xuICAgIHRocm93IG5ldyBJbnRlZ3JhdGlvblNldHVwRmFpbGVkRXJyb3Ioc2V0dXBFcnJvcik7XG4gIH1cbiAgcmV0dXJuIG5ldyBUZW1wb3JhcnlWYXVsdCh0ZW1wb3JhcnlWYXVsdFBhdGgpO1xufVxuXG5jb25zdCBkZWZhdWx0R2xvYmFsU2V0dXAgPSBjcmVhdGVTZXR1cCgpO1xuXG4vKipcbiAqIFZpdGVzdCBnbG9iYWwgc2V0dXAgZnVuY3Rpb24gKG5vIHByZS1wb3B1bGF0aW9uKS5cbiAqXG4gKiBDb3BpZXMgdGhlIGJ1aWx0IHBsdWdpbiBpbnRvIGEgdGVtcG9yYXJ5IHZhdWx0LCBlbmFibGVzIGl0IHZpYSBhIHJlbmRlcmVyIGV2YWxcbiAqIG92ZXIgdGhlIHRyYW5zcG9ydCwgYW5kIHByb3ZpZGVzIGB0ZW1wb3JhcnlWYXVsdFBhdGhgIHRvIHRlc3RzLlxuICpcbiAqIEBwYXJhbSBwcm9qZWN0IC0gVGhlIFZpdGVzdCBwcm9qZWN0LlxuICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiBzZXR1cCBjb21wbGV0ZXMuXG4gKi9cbmV4cG9ydCBjb25zdCBzZXR1cCA9IGRlZmF1bHRHbG9iYWxTZXR1cC5zZXR1cDtcblxuLyoqXG4gKiBWaXRlc3QgZ2xvYmFsIHRlYXJkb3duIGZ1bmN0aW9uLlxuICpcbiAqIFJlbW92ZXMgdGhlIHRlbXBvcmFyeSB2YXVsdCBjcmVhdGVkIGR1cmluZyBzZXR1cC5cbiAqXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRlYXJkb3duIGNvbXBsZXRlcy5cbiAqL1xuZXhwb3J0IGNvbnN0IHRlYXJkb3duID0gZGVmYXVsdEdsb2JhbFNldHVwLnRlYXJkb3duO1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQWFBLG9CQUF1QjtBQU12Qiw4QkFJTztBQUNQLDZCQUE4QjtBQUM5QiwrQkFHTztBQUNQLDRDQUE0QztBQUM1QyxpQkFBb0I7QUFDcEIsNkJBQStCO0FBQUEsSUFFL0IsK0NBQXNCLFVBQU0sc0JBQU8sWUFBWSxDQUFDO0FBQUEsSUFDaEQscURBQTRCLFVBQU0sc0JBQU8sbUJBQW1CLENBQUM7QUFBQSxJQUM3RCw4Q0FBcUIsVUFBTSxzQkFBTyxvQkFBb0IsQ0FBQztBQXNEaEQsU0FBUyxZQUFZLFNBQWlEO0FBQzNFLE1BQUk7QUFFSixTQUFPLEVBQUUsT0FBQUEsUUFBTyxVQUFBQyxVQUFTO0FBRXpCLGlCQUFlRCxPQUFNLFNBQXFDO0FBQ3hELFVBQU0scUJBQXFCLFFBQVEsT0FBTztBQUMxQyxVQUFNLG1CQUFtQixxQkFBcUIsbUJBQW1CO0FBQ2pFLFVBQU0sUUFBUSxrQkFBa0IsUUFBUTtBQUV4QyxRQUFJO0FBQ0Ysb0JBQWMsVUFBTSxvQ0FBVTtBQUFBLFFBQzVCLHdCQUF3QixTQUFTO0FBQUEsUUFDakMsZUFBZSxTQUFTO0FBQUEsUUFDeEIsVUFBVSxNQUFNLFNBQVMsV0FBVztBQUFBLFFBQ3BDO0FBQUEsTUFDRixDQUFDO0FBQUEsSUFDSCxTQUFTLE9BQWdCO0FBT3ZCLDBCQUFJLHNCQUFzQixLQUFLLDhFQUEwRSxzQ0FBYyxLQUFLLENBQUMsRUFBRTtBQUMvSCxjQUFRLFFBQVEsY0FBYztBQUFBLFFBQzVCLFdBQVcsaUJBQWlCLFFBQVEsTUFBTSxPQUFPO0FBQUEsUUFDakQsYUFBUyxzQ0FBYyxLQUFLO0FBQUEsUUFDNUIsZ0JBQWdCO0FBQUEsTUFDbEIsQ0FBQztBQUNEO0FBQUEsSUFDRjtBQUVBLFlBQVEsUUFBUSxxQkFBcUIsWUFBWSxnQkFBZ0I7QUFDakUsWUFBUSxRQUFRLHNCQUFzQixZQUFZLGVBQWUsSUFBSTtBQUFBLEVBQ3ZFO0FBRUEsaUJBQWVDLFlBQTBCO0FBQ3ZDLGNBQU0sdUNBQWEsV0FBVztBQUFBLEVBQ2hDO0FBQ0Y7QUFPTyxTQUFTLG9CQUFvQztBQUNsRCxRQUFNLHlCQUFxQixzQkFBTyxvQkFBb0I7QUFDdEQsUUFBTSxpQkFBYSxzQkFBTyxZQUFZO0FBQ3RDLE1BQUksWUFBWTtBQUNkLFVBQU0sSUFBSSxrRUFBNEIsVUFBVTtBQUFBLEVBQ2xEO0FBQ0EsU0FBTyxJQUFJLHNDQUFlLGtCQUFrQjtBQUM5QztBQUVBLE1BQU0scUJBQXFCLFlBQVk7QUFXaEMsTUFBTSxRQUFRLG1CQUFtQjtBQVNqQyxNQUFNLFdBQVcsbUJBQW1COyIsCiAgIm5hbWVzIjogWyJzZXR1cCIsICJ0ZWFyZG93biJdCn0K
|
|
85
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL3ZpdGVzdC9nbG9iYWwtc2V0dXAudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBWaXRlc3QgZ2xvYmFsIHNldHVwIGFuZCB0ZWFyZG93biBhZGFwdGVyLlxuICpcbiAqIERlbGVnYXRlcyB0byB0aGUgZnJhbWV3b3JrLWFnbm9zdGljIGNvcmUgYW5kIGJyaWRnZXMgY29udGV4dFxuICogdG8gdGVzdCB3b3JrZXJzIHZpYSBWaXRlc3QncyBgcHJvamVjdC5wcm92aWRlYCAvIGBpbmplY3RgLlxuICovXG5cbi8qIHY4IGlnbm9yZSBzdGFydCAtLSBJbnRlZ3JhdGlvbi10aW1lIHNldHVwIGNvdmVyZWQgYnkgaW50ZWdyYXRpb24gdGVzdHMsIG5vdCB1bml0IHRlc3RzLiAqL1xuXG5pbXBvcnQgdHlwZSB7IFRlc3RQcm9qZWN0IH0gZnJvbSAndml0ZXN0L25vZGUnO1xuXG5pbXBvcnQgeyBpbmplY3QgfSBmcm9tICd2aXRlc3QnO1xuXG5pbXBvcnQgdHlwZSB7IENvcmVTZXR1cFJlc3VsdCB9IGZyb20gJy4uL2dsb2JhbC1zZXR1cC1jb3JlLmNqcyc7XG5pbXBvcnQgdHlwZSB7IFBvcHVsYXRlRmlsZXNQYXJhbXMgfSBmcm9tICcuLi90ZW1wb3JhcnktdmF1bHQuY2pzJztcbmltcG9ydCB0eXBlIHsgT2JzaWRpYW5UcmFuc3BvcnRPcHRpb25zIH0gZnJvbSAnLi4vdHJhbnNwb3J0LW9wdGlvbnMuY2pzJztcblxuaW1wb3J0IHtcbiAgc2V0U2V0dXBFcnJvclJlc29sdmVyLFxuICBzZXRUcmFuc3BvcnRPcHRpb25zUmVzb2x2ZXIsXG4gIHNldFZhdWx0UGF0aFJlc29sdmVyXG59IGZyb20gJy4uL2NvbnRleHQtcHJvdmlkZXIuY2pzJztcbmltcG9ydCB7IGVycm9yVG9TdHJpbmcgfSBmcm9tICcuLi9lcnJvci10by1zdHJpbmcuY2pzJztcbmltcG9ydCB7XG4gIGNvcmVTZXR1cCxcbiAgY29yZVRlYXJkb3duXG59IGZyb20gJy4uL2dsb2JhbC1zZXR1cC1jb3JlLmNqcyc7XG5pbXBvcnQgeyBJbnRlZ3JhdGlvblNldHVwRmFpbGVkRXJyb3IgfSBmcm9tICcuLi9pbnRlZ3JhdGlvbi1zZXR1cC1mYWlsZWQtZXJyb3IuY2pzJztcbmltcG9ydCB7IGxvZyB9IGZyb20gJy4uL2xvZy5janMnO1xuaW1wb3J0IHsgVGVtcG9yYXJ5VmF1bHQgfSBmcm9tICcuLi90ZW1wb3JhcnktdmF1bHQuY2pzJztcblxuc2V0U2V0dXBFcnJvclJlc29sdmVyKCgpID0+IGluamVjdCgnc2V0dXBFcnJvcicpKTtcbnNldFRyYW5zcG9ydE9wdGlvbnNSZXNvbHZlcigoKSA9PiBpbmplY3QoJ29ic2lkaWFuVHJhbnNwb3J0JykpO1xuc2V0VmF1bHRQYXRoUmVzb2x2ZXIoKCkgPT4gaW5qZWN0KCd0ZW1wb3JhcnlWYXVsdFBhdGgnKSk7XG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rIGNyZWF0ZVNldHVwfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDcmVhdGVTZXR1cE9wdGlvbnMge1xuICAvKipcbiAgICogQ29tbXVuaXR5LXBsdWdpbiBpZHMgdG8gZW5hYmxlIGluIHRoZSB2YXVsdCBpbiBhZGRpdGlvbiB0byB0aGUgcGx1Z2luLXVuZGVyLXRlc3QsXG4gICAqIGFmdGVyIGl0IGlzIGVuYWJsZWQgKHNlZSB7QGxpbmsgQ29yZVNldHVwT3B0aW9ucy5lbmFibGVDb21tdW5pdHlQbHVnaW5zfSkuIFNlZWQgZWFjaFxuICAgKiBwbHVnaW4ncyBidWlsdCBmaWxlcyB2aWEge0BsaW5rIENyZWF0ZVNldHVwT3B0aW9ucy5wb3B1bGF0ZX0gKGUuZy4gd2l0aCBgYnVpbGREZW1vVmF1bHRQb3B1bGF0ZWApXG4gICAqIHNvIHRoZSBlbmFibGUgZmluZHMgdGhlbSBvbiBkaXNrLlxuICAgKi9cbiAgcmVhZG9ubHkgZW5hYmxlQ29tbXVuaXR5UGx1Z2lucz86IHJlYWRvbmx5IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGluc3RhbGwgYW5kIGVuYWJsZSB0aGUgYnVpbHQgcGx1Z2luIGluIHRoZSB0ZW1wIHZhdWx0LiBEZWZhdWx0c1xuICAgKiB0byBgdHJ1ZWAuIFNldCB0byBgZmFsc2VgIGZvciBhICoqbm9uLXBsdWdpbioqIGNvbnN1bWVyIHRoYXQgb25seSBuZWVkcyBhXG4gICAqIHJlZ2lzdGVyZWQsIGVtcHR5IHZhdWx0IHRvIGBldmFsSW5PYnNpZGlhbmAgYWdhaW5zdCBcdTIwMTQgdGhlIG93bmVkIGluc3RhbmNlIGlzXG4gICAqIHN0aWxsIGxhdW5jaGVkIGFuZCBpdHMgZW5kcG9pbnQgcHVibGlzaGVkIHRvIHdvcmtlcnMsIHNvIHJlLWV4cG9ydGluZ1xuICAgKiBgY3JlYXRlU2V0dXAoeyBpbnN0YWxsUGx1Z2luOiBmYWxzZSB9KWAgcmV1c2VzIHRoZSBzYW1lIGF0dGFjaCB3aXJpbmcgd2l0aCBub1xuICAgKiBwbHVnaW4gY29weS9lbmFibGUuIFNlZSB7QGxpbmsgQ29yZVNldHVwT3B0aW9ucy5pbnN0YWxsUGx1Z2lufS5cbiAgICovXG4gIHJlYWRvbmx5IGluc3RhbGxQbHVnaW4/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGZpbGVzL2ZvbGRlcnMgdG8gd3JpdGUgaW50byB0aGUgdmF1bHQgYmVmb3JlIE9ic2lkaWFuIG9wZW5zIGl0IChzZWVcbiAgICoge0BsaW5rIENvcmVTZXR1cE9wdGlvbnMucG9wdWxhdGV9KS4gQSB0aHVuayBzbyBsYXJnZSBmaXh0dXJlcyBhcmUgYnVpbHQgbGF6aWx5LFxuICAgKiBvbmNlLCBpbiB0aGUgc2V0dXAgcHJvY2Vzcy5cbiAgICpcbiAgICogTWF5IHJldHVybiBhIHByb21pc2UsIHNvIHRoZSBtYXAgY2FuIGJlIGJ1aWx0IGJ5IHNvbWV0aGluZyB0aGF0IG5lZWRzIHRoZSBuZXR3b3JrIFx1MjAxNCBub3RhYmx5XG4gICAqIGBidWlsZERlbW9WYXVsdFBvcHVsYXRlQXN5bmNgLCB3aGljaCBpbnN0YWxscyBhIGRlbW8gdmF1bHQncyBtaXNzaW5nIGNvbW11bml0eSBwbHVnaW5zIGJlZm9yZVxuICAgKiByZWFkaW5nIHRoZW0uIEEgc3luY2hyb25vdXMgdGh1bmsgKGUuZy4gYGJ1aWxkRGVtb1ZhdWx0UG9wdWxhdGVgKSBpcyB1bmNoYW5nZWQuXG4gICAqL1xuICByZWFkb25seSBwb3B1bGF0ZT86ICh0aGlzOiB2b2lkKSA9PiBQb3B1bGF0ZUZpbGVzUGFyYW1zIHwgUHJvbWlzZTxQb3B1bGF0ZUZpbGVzUGFyYW1zPjtcbn1cblxuLyoqXG4gKiBBIFZpdGVzdCBgZ2xvYmFsU2V0dXBgIG1vZHVsZSdzIGBzZXR1cGAgLyBgdGVhcmRvd25gIHBhaXIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVml0ZXN0R2xvYmFsU2V0dXAge1xuICBzZXR1cDogKHRoaXM6IHZvaWQsIHByb2plY3Q6IFRlc3RQcm9qZWN0KSA9PiBQcm9taXNlPHZvaWQ+O1xuICB0ZWFyZG93bjogKHRoaXM6IHZvaWQpID0+IFByb21pc2U8dm9pZD47XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIFZpdGVzdCBnbG9iYWwgc2V0dXAvdGVhcmRvd24gcGFpciwgb3B0aW9uYWxseSBwcmUtcG9wdWxhdGluZyB0aGUgdmF1bHRcbiAqIGJlZm9yZSBPYnNpZGlhbiBvcGVucyBpdCBcdTIwMTQgdXNlIHRoaXMgZm9yIGEgZGVkaWNhdGVkIGxhcmdlLXZhdWx0L3BlcmZvcm1hbmNlXG4gKiBwcm9qZWN0LiBUaGUgcGxhaW4ge0BsaW5rIHNldHVwfSAvIHtAbGluayB0ZWFyZG93bn0gZXhwb3J0cyBhcmUgdGhlIG5vLXBvcHVsYXRlXG4gKiBjYXNlIChgY3JlYXRlU2V0dXAoKWApLiBQYXNzIGB7IGluc3RhbGxQbHVnaW46IGZhbHNlIH1gIGZvciBhIG5vbi1wbHVnaW4gY29uc3VtZXJcbiAqIHRoYXQgb25seSBuZWVkcyBhIHJlZ2lzdGVyZWQsIGVtcHR5IHZhdWx0IChzZWUge0BsaW5rIENyZWF0ZVNldHVwT3B0aW9ucy5pbnN0YWxsUGx1Z2lufSkuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBTZXR1cCBvcHRpb25zLlxuICogQHJldHVybnMgVGhlIGBzZXR1cGAgYW5kIGB0ZWFyZG93bmAgZnVuY3Rpb25zIHRvIHJlLWV4cG9ydCBmcm9tIGEgYGdsb2JhbFNldHVwYCBtb2R1bGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTZXR1cChvcHRpb25zPzogQ3JlYXRlU2V0dXBPcHRpb25zKTogVml0ZXN0R2xvYmFsU2V0dXAge1xuICBsZXQgc2V0dXBSZXN1bHQ6IENvcmVTZXR1cFJlc3VsdCB8IHVuZGVmaW5lZDtcblxuICByZXR1cm4geyBzZXR1cCwgdGVhcmRvd24gfTtcblxuICBhc3luYyBmdW5jdGlvbiBzZXR1cChwcm9qZWN0OiBUZXN0UHJvamVjdCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGVudmlyb25tZW50T3B0aW9ucyA9IHByb2plY3QuY29uZmlnLmVudmlyb25tZW50T3B0aW9ucyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IHVuZGVmaW5lZDtcbiAgICBjb25zdCB0cmFuc3BvcnRPcHRpb25zID0gZW52aXJvbm1lbnRPcHRpb25zPy5bJ29ic2lkaWFuVHJhbnNwb3J0J10gYXMgT2JzaWRpYW5UcmFuc3BvcnRPcHRpb25zIHwgdW5kZWZpbmVkO1xuICAgIGNvbnN0IGxhYmVsID0gdHJhbnNwb3J0T3B0aW9ucz8udHlwZSA/PyAnb2JzaWRpYW4tY2RwJztcblxuICAgIHRyeSB7XG4gICAgICBzZXR1cFJlc3VsdCA9IGF3YWl0IGNvcmVTZXR1cCh7XG4gICAgICAgIGVuYWJsZUNvbW11bml0eVBsdWdpbnM6IG9wdGlvbnM/LmVuYWJsZUNvbW11bml0eVBsdWdpbnMsXG4gICAgICAgIGluc3RhbGxQbHVnaW46IG9wdGlvbnM/Lmluc3RhbGxQbHVnaW4sXG4gICAgICAgIHBvcHVsYXRlOiBhd2FpdCBvcHRpb25zPy5wb3B1bGF0ZT8uKCksXG4gICAgICAgIHRyYW5zcG9ydE9wdGlvbnNcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG4gICAgICAvLyBDYXRjaCBzZXR1cCBlcnJvcnMgc28gdGhhdCBvdGhlciBwcm9qZWN0cycgdGVzdHMgY2FuIHN0aWxsIHJ1bi4gRXZlcnkgdGVzdCBpbiBUSElTIHByb2plY3RcbiAgICAgIC8vIHRoZW4gZmFpbHMgd2l0aCB0aGUgc3RvcmVkIGVycm9yOiBgZ2V0T3JDcmVhdGVUcmFuc3BvcnRgIHJlYWRzIGl0IHRocm91Z2ggdGhlIHNldHVwLWVycm9yXG4gICAgICAvLyByZXNvbHZlciBhbmQgdGhyb3dzIGJlZm9yZSBpdCBjYW4gYnVpbGQgYSB0cmFuc3BvcnQuIFdpdGhvdXQgdGhhdCBhIHdvcmtlciBnZXRzIG5vIG9wdGlvbnNcbiAgICAgIC8vIGF0IGFsbCBhbmQgc2lsZW50bHkgcmVidWlsZHMgdGhlIG93bmVkIERFU0tUT1AgZGVmYXVsdCwgd2hhdGV2ZXIgcGxhdGZvcm0gdGhpcyBwcm9qZWN0IGFza2VkXG4gICAgICAvLyBmb3IgLS0gd2hpY2ggaXMgaG93IGFuIEFuZHJvaWQgcnVuIGNhbWUgdG8gcmVwb3J0IG5pbmUgYEZhaWxlZCB0byBwYXJzZSBVUkwgZnJvbSAvanNvbmBcbiAgICAgIC8vIGZhaWx1cmVzIHdoaWxlIHRoZSByZWFsIGNhdXNlIHNhdCBvbmNlLCBmYXIgYWJvdmUsIGluIHRoaXMgbG9nIChzZWUgQUdFTlRTLm1kIEw5KS5cbiAgICAgIGxvZyhgW2ludGVncmF0aW9uLXNldHVwOiR7bGFiZWx9XSBTZXR1cCBmYWlsZWQgKGV2ZXJ5IHRlc3QgaW4gdGhpcyBwcm9qZWN0IHdpbGwgZmFpbCB3aXRoIHRoaXMgZXJyb3IpOiAke2Vycm9yVG9TdHJpbmcoZXJyb3IpfWApO1xuICAgICAgcHJvamVjdC5wcm92aWRlKCdzZXR1cEVycm9yJywge1xuICAgICAgICBlcnJvck5hbWU6IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5uYW1lIDogJ0Vycm9yJyxcbiAgICAgICAgbWVzc2FnZTogZXJyb3JUb1N0cmluZyhlcnJvciksXG4gICAgICAgIHRyYW5zcG9ydExhYmVsOiBsYWJlbFxuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgcHJvamVjdC5wcm92aWRlKCdvYnNpZGlhblRyYW5zcG9ydCcsIHNldHVwUmVzdWx0LnRyYW5zcG9ydE9wdGlvbnMpO1xuICAgIHByb2plY3QucHJvdmlkZSgndGVtcG9yYXJ5VmF1bHRQYXRoJywgc2V0dXBSZXN1bHQudGVtcG9yYXJ5VmF1bHQucGF0aCk7XG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiB0ZWFyZG93bigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCBjb3JlVGVhcmRvd24oc2V0dXBSZXN1bHQpO1xuICB9XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgdGVtcG9yYXJ5IHZhdWx0IHByb3ZpZGVkIGJ5IHRoZSBnbG9iYWwgc2V0dXAuXG4gKlxuICogQHJldHVybnMgVGhlIHRlbXBvcmFyeSB2YXVsdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFRlbXBvcmFyeVZhdWx0KCk6IFRlbXBvcmFyeVZhdWx0IHtcbiAgY29uc3QgdGVtcG9yYXJ5VmF1bHRQYXRoID0gaW5qZWN0KCd0ZW1wb3JhcnlWYXVsdFBhdGgnKTtcbiAgY29uc3Qgc2V0dXBFcnJvciA9IGluamVjdCgnc2V0dXBFcnJvcicpO1xuICBpZiAoc2V0dXBFcnJvcikge1xuICAgIHRocm93IG5ldyBJbnRlZ3JhdGlvblNldHVwRmFpbGVkRXJyb3Ioc2V0dXBFcnJvcik7XG4gIH1cbiAgcmV0dXJuIG5ldyBUZW1wb3JhcnlWYXVsdCh0ZW1wb3JhcnlWYXVsdFBhdGgpO1xufVxuXG5jb25zdCBkZWZhdWx0R2xvYmFsU2V0dXAgPSBjcmVhdGVTZXR1cCgpO1xuXG4vKipcbiAqIFZpdGVzdCBnbG9iYWwgc2V0dXAgZnVuY3Rpb24gKG5vIHByZS1wb3B1bGF0aW9uKS5cbiAqXG4gKiBDb3BpZXMgdGhlIGJ1aWx0IHBsdWdpbiBpbnRvIGEgdGVtcG9yYXJ5IHZhdWx0LCBlbmFibGVzIGl0IHZpYSBhIHJlbmRlcmVyIGV2YWxcbiAqIG92ZXIgdGhlIHRyYW5zcG9ydCwgYW5kIHByb3ZpZGVzIGB0ZW1wb3JhcnlWYXVsdFBhdGhgIHRvIHRlc3RzLlxuICpcbiAqIEBwYXJhbSBwcm9qZWN0IC0gVGhlIFZpdGVzdCBwcm9qZWN0LlxuICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiBzZXR1cCBjb21wbGV0ZXMuXG4gKi9cbmV4cG9ydCBjb25zdCBzZXR1cCA9IGRlZmF1bHRHbG9iYWxTZXR1cC5zZXR1cDtcblxuLyoqXG4gKiBWaXRlc3QgZ2xvYmFsIHRlYXJkb3duIGZ1bmN0aW9uLlxuICpcbiAqIFJlbW92ZXMgdGhlIHRlbXBvcmFyeSB2YXVsdCBjcmVhdGVkIGR1cmluZyBzZXR1cC5cbiAqXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRlYXJkb3duIGNvbXBsZXRlcy5cbiAqL1xuZXhwb3J0IGNvbnN0IHRlYXJkb3duID0gZGVmYXVsdEdsb2JhbFNldHVwLnRlYXJkb3duO1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQWFBLG9CQUF1QjtBQU12Qiw4QkFJTztBQUNQLDZCQUE4QjtBQUM5QiwrQkFHTztBQUNQLDRDQUE0QztBQUM1QyxpQkFBb0I7QUFDcEIsNkJBQStCO0FBQUEsSUFFL0IsK0NBQXNCLFVBQU0sc0JBQU8sWUFBWSxDQUFDO0FBQUEsSUFDaEQscURBQTRCLFVBQU0sc0JBQU8sbUJBQW1CLENBQUM7QUFBQSxJQUM3RCw4Q0FBcUIsVUFBTSxzQkFBTyxvQkFBb0IsQ0FBQztBQXNEaEQsU0FBUyxZQUFZLFNBQWlEO0FBQzNFLE1BQUk7QUFFSixTQUFPLEVBQUUsT0FBQUEsUUFBTyxVQUFBQyxVQUFTO0FBRXpCLGlCQUFlRCxPQUFNLFNBQXFDO0FBQ3hELFVBQU0scUJBQXFCLFFBQVEsT0FBTztBQUMxQyxVQUFNLG1CQUFtQixxQkFBcUIsbUJBQW1CO0FBQ2pFLFVBQU0sUUFBUSxrQkFBa0IsUUFBUTtBQUV4QyxRQUFJO0FBQ0Ysb0JBQWMsVUFBTSxvQ0FBVTtBQUFBLFFBQzVCLHdCQUF3QixTQUFTO0FBQUEsUUFDakMsZUFBZSxTQUFTO0FBQUEsUUFDeEIsVUFBVSxNQUFNLFNBQVMsV0FBVztBQUFBLFFBQ3BDO0FBQUEsTUFDRixDQUFDO0FBQUEsSUFDSCxTQUFTLE9BQWdCO0FBT3ZCLDBCQUFJLHNCQUFzQixLQUFLLDhFQUEwRSxzQ0FBYyxLQUFLLENBQUMsRUFBRTtBQUMvSCxjQUFRLFFBQVEsY0FBYztBQUFBLFFBQzVCLFdBQVcsaUJBQWlCLFFBQVEsTUFBTSxPQUFPO0FBQUEsUUFDakQsYUFBUyxzQ0FBYyxLQUFLO0FBQUEsUUFDNUIsZ0JBQWdCO0FBQUEsTUFDbEIsQ0FBQztBQUNEO0FBQUEsSUFDRjtBQUVBLFlBQVEsUUFBUSxxQkFBcUIsWUFBWSxnQkFBZ0I7QUFDakUsWUFBUSxRQUFRLHNCQUFzQixZQUFZLGVBQWUsSUFBSTtBQUFBLEVBQ3ZFO0FBRUEsaUJBQWVDLFlBQTBCO0FBQ3ZDLGNBQU0sdUNBQWEsV0FBVztBQUFBLEVBQ2hDO0FBQ0Y7QUFPTyxTQUFTLG9CQUFvQztBQUNsRCxRQUFNLHlCQUFxQixzQkFBTyxvQkFBb0I7QUFDdEQsUUFBTSxpQkFBYSxzQkFBTyxZQUFZO0FBQ3RDLE1BQUksWUFBWTtBQUNkLFVBQU0sSUFBSSxrRUFBNEIsVUFBVTtBQUFBLEVBQ2xEO0FBQ0EsU0FBTyxJQUFJLHNDQUFlLGtCQUFrQjtBQUM5QztBQUVBLE1BQU0scUJBQXFCLFlBQVk7QUFXaEMsTUFBTSxRQUFRLG1CQUFtQjtBQVNqQyxNQUFNLFdBQVcsbUJBQW1COyIsCiAgIm5hbWVzIjogWyJzZXR1cCIsICJ0ZWFyZG93biJdCn0K
|
|
@@ -15,7 +15,7 @@ import { TemporaryVault } from '../temporary-vault.cjs';
|
|
|
15
15
|
export interface CreateSetupOptions {
|
|
16
16
|
/**
|
|
17
17
|
* Community-plugin ids to enable in the vault in addition to the plugin-under-test,
|
|
18
|
-
* after it is enabled (see {@link
|
|
18
|
+
* after it is enabled (see {@link CoreSetupOptions.enableCommunityPlugins}). Seed each
|
|
19
19
|
* plugin's built files via {@link CreateSetupOptions.populate} (e.g. with `buildDemoVaultPopulate`)
|
|
20
20
|
* so the enable finds them on disk.
|
|
21
21
|
*/
|
|
@@ -26,26 +26,26 @@ export interface CreateSetupOptions {
|
|
|
26
26
|
* registered, empty vault to `evalInObsidian` against — the owned instance is
|
|
27
27
|
* still launched and its endpoint published to workers, so re-exporting
|
|
28
28
|
* `createSetup({ installPlugin: false })` reuses the same attach wiring with no
|
|
29
|
-
* plugin copy/enable. See {@link
|
|
29
|
+
* plugin copy/enable. See {@link CoreSetupOptions.installPlugin}.
|
|
30
30
|
*/
|
|
31
31
|
readonly installPlugin?: boolean;
|
|
32
32
|
/**
|
|
33
33
|
* Returns files/folders to write into the vault before Obsidian opens it (see
|
|
34
|
-
* {@link
|
|
34
|
+
* {@link CoreSetupOptions.populate}). A thunk so large fixtures are built lazily,
|
|
35
35
|
* once, in the setup process.
|
|
36
36
|
*
|
|
37
37
|
* May return a promise, so the map can be built by something that needs the network — notably
|
|
38
38
|
* `buildDemoVaultPopulateAsync`, which installs a demo vault's missing community plugins before
|
|
39
39
|
* reading them. A synchronous thunk (e.g. `buildDemoVaultPopulate`) is unchanged.
|
|
40
40
|
*/
|
|
41
|
-
populate
|
|
41
|
+
readonly populate?: (this: void) => PopulateFilesParams | Promise<PopulateFilesParams>;
|
|
42
42
|
}
|
|
43
43
|
/**
|
|
44
44
|
* A Vitest `globalSetup` module's `setup` / `teardown` pair.
|
|
45
45
|
*/
|
|
46
46
|
export interface VitestGlobalSetup {
|
|
47
|
-
setup(this: void, project: TestProject)
|
|
48
|
-
teardown(this: void)
|
|
47
|
+
setup: (this: void, project: TestProject) => Promise<void>;
|
|
48
|
+
teardown: (this: void) => Promise<void>;
|
|
49
49
|
}
|
|
50
50
|
/**
|
|
51
51
|
* Creates a Vitest global setup/teardown pair, optionally pre-populating the vault
|
|
@@ -291,4 +291,4 @@ async function removeForward(deviceId, port) {
|
|
|
291
291
|
parseWebViewDevtoolsSocketName,
|
|
292
292
|
selectWebViewPageTarget
|
|
293
293
|
});
|
|
294
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3dlYnZpZXctY2RwLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogQSBzZWNvbmQsIGluZGVwZW5kZW50IENocm9tZSBEZXZUb29scyBQcm90b2NvbCBjb25uZWN0aW9uIHRvIE9ic2lkaWFuIE1vYmlsZSdzIFdlYlZpZXcsIHVzZWQgdG8gaW5qZWN0XG4gKiAqKnRydXN0ZWQqKiBpbnB1dCBvbiBBbmRyb2lkIChzZWUgKipMMzkqKikuXG4gKlxuICogSXQgaXMgZGVsaWJlcmF0ZWx5IHNlcGFyYXRlIGZyb20gdGhlIEFwcGl1bSBzZXNzaW9uIHJhdGhlciB0aGFuIGxheWVyZWQgb24gaXQuIGBBcHBpdW1UcmFuc3BvcnQuZXZhbHVhdGVgXG4gKiBydW5zIHRoZSB3aG9sZSBgZXZhbEluT2JzaWRpYW5gIGNsb3N1cmUgaW5zaWRlIG9uZSBXM0MgKkV4ZWN1dGUgU2NyaXB0Kiwgd2hpY2ggYXdhaXRzIHRoZSByZXR1cm5lZFxuICogcHJvbWlzZSBcdTIwMTQgc28gd2hpbGUgYSBjbG9zdXJlIHNpdHMgd2FpdGluZyBvbiBgbGliLmNsaWNrRWxlbWVudCguLi4pYCwgdGhlIFdlYkRyaXZlciBzZXNzaW9uIGlzIGJ1c3kgYW5kXG4gKiBjYW5ub3QgYmUgYXNrZWQgdG8gZG8gYW55dGhpbmcgZWxzZS4gQ0RQIGlzIGlkLW11bHRpcGxleGVkIGFuZCBDaHJvbWl1bSBhY2NlcHRzIG11bHRpcGxlIGRlYnVnZ2VyXG4gKiBjbGllbnRzLCBzbyB0aGlzIHNvY2tldCBzdGF5cyBmcmVlIGV4YWN0bHkgd2hlbiB0aGUgQXBwaXVtIG9uZSBkb2VzIG5vdC4gVGhhdCBpcyB3aGF0IGxldHMgdGhlIHJlbmRlcmVyXG4gKiBjYWxsIGJhY2sgb3V0IHRvIHRoZSBob3N0IG1pZC1jbG9zdXJlLlxuICpcbiAqIFJlYWNoaW5nIHRoZSBXZWJWaWV3J3MgZGVidWdnZXIgaXMgYSB0d28tc3RlcDogdGhlIGFwcCBwdWJsaXNoZXMgYW4gYWJzdHJhY3QgdW5peCBzb2NrZXQgbmFtZWRcbiAqIGB3ZWJ2aWV3X2RldnRvb2xzX3JlbW90ZV88cGlkPmAsIGBhZGIgZm9yd2FyZGAgbWFwcyBpdCB0byBhIGxvY2FsIFRDUCBwb3J0LCBhbmQgdGhlIHVzdWFsIGAvanNvbmBcbiAqIGVuZHBvaW50IHRoZW4gbGlzdHMgdGhlIHBhZ2UgdGFyZ2V0cy5cbiAqL1xuXG5pbXBvcnQgeyBleGVjRmlsZVN5bmMgfSBmcm9tICdub2RlOmNoaWxkX3Byb2Nlc3MnO1xuXG5pbXBvcnQgdHlwZSB7IENkcElucHV0Q29tbWFuZCB9IGZyb20gJy4vbW9iaWxlLWlucHV0LmNqcyc7XG5cbmltcG9ydCB7IGV4ZWMgfSBmcm9tICcuL2V4ZWMuY2pzJztcbmltcG9ydCB7IGxvZyB9IGZyb20gJy4vbG9nLmNqcyc7XG5pbXBvcnQgeyBwaWNrRnJlZVBvcnQgfSBmcm9tICcuL29ic2lkaWFuLWluc3RhbmNlLmNqcyc7XG5cbmNvbnN0IEFEQl9USU1FT1VUX0lOX01JTExJU0VDT05EUyA9IDE1XzAwMDtcbi8vIGBhZGIgZm9yd2FyZCAtLWxpc3RgIHByaW50cyB0aHJlZSBjb2x1bW5zOiBgPGRldmljZUlkPiB0Y3A6PHBvcnQ+IGxvY2FsYWJzdHJhY3Q6PHNvY2tldE5hbWU+YC5cbmNvbnN0IEZPUldBUkRfTElTVF9DT0xVTU5fQ09VTlQgPSAzO1xuY29uc3QgREVDSU1BTF9SQURJWCA9IDEwO1xuLypcbiAqIEJvdW5kcyBvbmUgY29tbWFuZCBvbiBUSElTIHNpZGUgY2hhbm5lbCBcdTIwMTQgYW4gYElucHV0LmRpc3BhdGNoTW91c2VFdmVudGAsIGEgdGFyZ2V0IGxpc3QuIEl0IGlzIG5vdCB0aGVcbiAqIHBlci1ldmFsIGNhcCBhbmQgbXVzdCBub3QgYmUgZGVyaXZlZCBmcm9tIGBERUZBVUxUX0VWQUxfQ0FQX0lOX01JTExJU0VDT05EU2A6IG5vIHRlc3QgY2xvc3VyZSB0cmF2ZWxzXG4gKiB0aGlzIHNvY2tldCwgYW5kIHRoZSB3aG9sZSBwb2ludCBvZiB0aGUgc2Vjb25kIGNvbm5lY3Rpb24gaXMgdGhhdCBpdCBzdGF5cyBmcmVlIHdoaWxlIHRoZSBBcHBpdW0gc2Vzc2lvblxuICogaXMgYnVzeSBydW5uaW5nIG9uZS4gVGhlIHNoYXJlZCB2YWx1ZSBpcyBhIGNvaW5jaWRlbmNlLlxuICovXG5jb25zdCBDRFBfQ09NTUFORF9USU1FT1VUX0lOX01JTExJU0VDT05EUyA9IDMwXzAwMDtcbmNvbnN0IENEUF9IT1NUID0gJzEyNy4wLjAuMSc7XG5cbi8qKlxuICogT25lIGVudHJ5IG9mIHRoZSBkZWJ1Z2dlcidzIGAvanNvbmAgdGFyZ2V0IGxpc3QuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2RwVGFyZ2V0IHtcbiAgcmVhZG9ubHkgdGl0bGU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHR5cGU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHVybD86IHN0cmluZztcbiAgcmVhZG9ubHkgd2ViU29ja2V0RGVidWdnZXJVcmw/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIGNvbm5lY3RUb1dlYlZpZXdDZHB9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbm5lY3RUb1dlYlZpZXdDZHBQYXJhbXMge1xuICAvKipcbiAgICogVGhlIEFuZHJvaWQgYXBwbGljYXRpb24gaWQgd2hvc2UgV2ViVmlldyB0byBhdHRhY2ggdG8sIGUuZy4gYG1kLm9ic2lkaWFuYC5cbiAgICovXG4gIHJlYWRvbmx5IGFwcElkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBhZGIgZGV2aWNlIGlkIChgZW11bGF0b3ItNTU1NGAsIGEgc2VyaWFsKSB0byBydW4gYWRiIGFnYWluc3QuXG4gICAqL1xuICByZWFkb25seSBkZXZpY2VJZDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFRoZSBlcnJvciBoYWxmIG9mIGEgZmFpbGVkIENEUCBjb21tYW5kIHJlc3BvbnNlLlxuICovXG5pbnRlcmZhY2UgQ2RwRXJyb3Ige1xuICByZWFkb25seSBtZXNzYWdlPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEhhbmRsZXMgYSBDRFAgZXZlbnQuXG4gKi9cbnR5cGUgQ2RwRXZlbnRIYW5kbGVyID0gKHBhcmFtczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pID0+IHZvaWQ7XG5cbi8qKlxuICogQSBDRFAgbWVzc2FnZTogZWl0aGVyIGEgcmVzcG9uc2UgdG8gYSBjb21tYW5kIChgaWRgKSBvciBhbiBldmVudCAoYG1ldGhvZGApLlxuICovXG5pbnRlcmZhY2UgQ2RwTWVzc2FnZSB7XG4gIHJlYWRvbmx5IGVycm9yPzogQ2RwRXJyb3I7XG4gIHJlYWRvbmx5IGlkPzogbnVtYmVyO1xuICByZWFkb25seSBtZXRob2Q/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHBhcmFtcz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICByZWFkb25seSByZXN1bHQ/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbn1cblxuLyoqXG4gKiBBIGNvbW1hbmQgd2FpdGluZyBmb3IgaXRzIHJlcGx5OiBzZXR0bGVzIHRoZSB7QGxpbmsgV2ViVmlld0NkcENvbm5lY3Rpb24uc2VuZH1cbiAqIGNhbGwncyBwcm9taXNlIGFuZCBjYW5jZWxzIHRoZSB0aW1lb3V0IHRoYXQgd291bGQgb3RoZXJ3aXNlIGZhaWwgaXQuXG4gKi9cbnR5cGUgUGVuZGluZ0NvbW1hbmQgPSAobWVzc2FnZTogQ2RwTWVzc2FnZSkgPT4gdm9pZDtcblxuLyogdjggaWdub3JlIHN0YXJ0IC0tIEludGVncmF0aW9uLXRpbWUgY29kZSAoYSBsaXZlIFdlYlNvY2tldCB0byBhIFdlYlZpZXcsIGFkYiBwb3J0IGZvcndhcmRpbmcpLiBDb3ZlcmVkIGJ5IHRoZSBBbmRyb2lkIGludGVncmF0aW9uIHRlc3RzLCBub3QgYnkgdW5pdCB0ZXN0cy4gSXQgZW5kcyBiZWZvcmUgYHBhcnNlRm9yd2FyZGVkUG9ydGA6IGBwZXJmZWN0aW9uaXN0L3NvcnQtbW9kdWxlc2AgcGxhY2VzIHRoZSBwdXJlLCB1bml0LXRlc3RlZCBoZWxwZXJzIEFGVEVSIHRoaXMgY2xhc3MgYW5kIGBjb25uZWN0VG9XZWJWaWV3Q2RwYCwgc28gdGhleSBtdXN0IHN0YXkgbWVhc3VyZWQuICovXG5cbi8qKlxuICogQW4gb3BlbiBDRFAgY29ubmVjdGlvbiB0byBhIFdlYlZpZXcuXG4gKlxuICogQ29tbWFuZHMgYXJlIGlkLW11bHRpcGxleGVkLCBzbyBhIGNvbW1hbmQgaXNzdWVkIGZyb20gaW5zaWRlIGFuIGV2ZW50IGhhbmRsZXIgY29tcGxldGVzIHdoaWxlIGFuIGVhcmxpZXJcbiAqIGBSdW50aW1lLmV2YWx1YXRlYCBpcyBzdGlsbCBhd2FpdGluZyBpdHMgcHJvbWlzZSBcdTIwMTQgd2hpY2ggaXMgdGhlIHdob2xlIHJlYXNvbiB0aGlzIGNsYXNzIGV4aXN0cy5cbiAqL1xuZXhwb3J0IGNsYXNzIFdlYlZpZXdDZHBDb25uZWN0aW9uIHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIHNvY2tldCBpcyBzdGlsbCB1c2FibGUuXG4gICAqXG4gICAqIFJlc3RhcnRpbmcgdGhlIGFwcCB0ZWFycyBpdHMgV2ViVmlldyBkb3duIGFuZCB0YWtlcyB0aGUgZGVidWdnZXIgdGFyZ2V0IHdpdGggaXQsIHNvIGEgY2FjaGVkXG4gICAqIGNvbm5lY3Rpb24gaGFzIHRvIGJlIHJlLWNoZWNrZWQgcmF0aGVyIHRoYW4gYXNzdW1lZCBsaXZlLlxuICAgKlxuICAgKiBAcmV0dXJucyBgdHJ1ZWAgd2hpbGUgdGhlIHNvY2tldCBpcyBvcGVuLlxuICAgKi9cbiAgcHVibGljIGdldCBpc09wZW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMud2ViU29ja2V0LnJlYWR5U3RhdGUgPT09IFdlYlNvY2tldC5PUEVOO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBldmVudEhhbmRsZXJzID0gbmV3IE1hcDxzdHJpbmcsIENkcEV2ZW50SGFuZGxlcj4oKTtcblxuICBwcml2YXRlIG1lc3NhZ2VJZCA9IDA7XG5cbiAgLyoqXG4gICAqIFRoZSBjb21tYW5kcyBzdGlsbCB3YWl0aW5nIGZvciBhIHJlcGx5LCBrZXllZCBieSB0aGUgQ0RQIG1lc3NhZ2UgaWQgZWFjaCB3YXNcbiAgICogc2VudCB3aXRoLiBFbXB0aWVkIGJ5IHdoaWNoZXZlciBvZiB0aGUgcmVwbHkgYW5kIHRoZSB0aW1lb3V0IGNvbWVzIGZpcnN0LlxuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBwZW5kaW5nQ29tbWFuZHMgPSBuZXcgTWFwPG51bWJlciwgUGVuZGluZ0NvbW1hbmQ+KCk7XG5cbiAgLyoqXG4gICAqIFdyYXBzIGFuIGFscmVhZHktb3BlbiBkZWJ1Z2dlciBzb2NrZXQsIHBsdXMgd2hhdCBpcyBuZWVkZWQgdG8gdGVhciBpdHMgcG9ydCBmb3J3YXJkIGRvd24uXG4gICAqXG4gICAqIE9ORSBgbWVzc2FnZWAgbGlzdGVuZXIgZm9yIHRoZSBzb2NrZXQncyB3aG9sZSBsaWZlLCByb3V0aW5nIGJvdGggaGFsdmVzIG9mIHdoYXRcbiAgICogYXJyaXZlcyBcdTIwMTQgQ0RQIGV2ZW50cyB0byB0aGVpciBzdWJzY3JpYmVkIGhhbmRsZXIsIGNvbW1hbmQgcmVwbGllcyB0byB0aGVcbiAgICoge0BsaW5rIHNlbmR9IGNhbGwgd2FpdGluZyBvbiB0aGUgaWQuIEEgbGlzdGVuZXIgcGVyIGluLWZsaWdodCBjb21tYW5kIGluc3RlYWRcbiAgICogd291bGQgbWFrZSB0aGUgY291bnQgc2NhbGUgd2l0aCBjb25jdXJyZW5jeSwgc28gZWxldmVuIGNvbW1hbmRzIGluIGZsaWdodCBhdFxuICAgKiBvbmNlIHdvdWxkIGNyb3NzIE5vZGUncyBkZWZhdWx0IGBtYXhMaXN0ZW5lcnNgIG9mIDEwIGFuZCByZXBvcnQgYSBtZW1vcnkgbGVha1xuICAgKiB0aGF0IGlzIG5vdCBvbmUgKHNlZSB0aGUgZGVza3RvcCB0cmFuc3BvcnQncyBgZ2V0UGVuZGluZ0NvbW1hbmRzYCwgd2hlcmUgdGhlXG4gICAqIHNhbWUgc2hhcGUgd2FzIG1lYXN1cmVkKS5cbiAgICpcbiAgICogVGhlIHBhcnNlIGlzIGd1YXJkZWQgYmVjYXVzZSBhIGZyYW1lIHRoaXMgY29ubmVjdGlvbiBjYW5ub3QgcmVhZCBiZWxvbmdzIHRvXG4gICAqIG5vdGhpbmcgaXQgc2VudDogdGhyb3dpbmcgaGVyZSB3b3VsZCB0aHJvdyBvdXQgb2YgdGhlIGV2ZW50IGRpc3BhdGNoLCB3aGVyZVxuICAgKiBub3RoaW5nIGNhbiBjYXRjaCBpdC5cbiAgICpcbiAgICogQHBhcmFtIHdlYlNvY2tldCAtIFRoZSBvcGVuIGRlYnVnZ2VyIHNvY2tldC5cbiAgICogQHBhcmFtIGRldmljZUlkIC0gVGhlIGFkYiBkZXZpY2UgaWQsIG5lZWRlZCB0byBkcm9wIHRoZSBwb3J0IGZvcndhcmQgb24gZGlzcG9zZS5cbiAgICogQHBhcmFtIHBvcnQgLSBUaGUgZm9yd2FyZGVkIGxvY2FsIHBvcnQuXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSB3ZWJTb2NrZXQ6IFdlYlNvY2tldCwgcHJpdmF0ZSByZWFkb25seSBkZXZpY2VJZDogc3RyaW5nLCBwcml2YXRlIHJlYWRvbmx5IHBvcnQ6IG51bWJlcikge1xuICAgIHRoaXMud2ViU29ja2V0LmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCAoZXZlbnQ6IE1lc3NhZ2VFdmVudCkgPT4ge1xuICAgICAgbGV0IG1lc3NhZ2U6IENkcE1lc3NhZ2U7XG4gICAgICB0cnkge1xuICAgICAgICBtZXNzYWdlID0gSlNPTi5wYXJzZShTdHJpbmcoZXZlbnQuZGF0YSkpIGFzIENkcE1lc3NhZ2U7XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAobWVzc2FnZS5tZXRob2QgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLmV2ZW50SGFuZGxlcnMuZ2V0KG1lc3NhZ2UubWV0aG9kKT8uKG1lc3NhZ2UucGFyYW1zID8/IHt9KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAobWVzc2FnZS5pZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcGVuZGluZ0NvbW1hbmQgPSB0aGlzLnBlbmRpbmdDb21tYW5kcy5nZXQobWVzc2FnZS5pZCk7XG4gICAgICBpZiAoIXBlbmRpbmdDb21tYW5kKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5wZW5kaW5nQ29tbWFuZHMuZGVsZXRlKG1lc3NhZ2UuaWQpO1xuICAgICAgcGVuZGluZ0NvbW1hbmQobWVzc2FnZSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ2xvc2VzIHRoZSBzb2NrZXQgYW5kIGRyb3BzIHRoZSBhZGIgcG9ydCBmb3J3YXJkLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGRpc3Bvc2UoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5jbG9zZVNvY2tldCgpO1xuICAgIGF3YWl0IHJlbW92ZUZvcndhcmQodGhpcy5kZXZpY2VJZCwgdGhpcy5wb3J0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTeW5jaHJvbm91cyBkaXNwb3NhbCwgZm9yIGBwcm9jZXNzLm9uKCdleGl0JylgIGhhbmRsZXJzIHdoZXJlIGFzeW5jIHdvcmsgY2Fubm90IHJ1bi5cbiAgICpcbiAgICogV2l0aG91dCB0aGlzIGFuIGFicnVwdCB3b3JrZXIgZXhpdCBsZWF2ZXMgdGhlIHBvcnQgZm9yd2FyZCBiZWhpbmQgXHUyMDE0IHRoZSBhc3luYyB7QGxpbmsgZGlzcG9zZX0gYWJvdmVcbiAgICogbmV2ZXIgZ2V0cyBhIHR1cm4uXG4gICAqL1xuICBwdWJsaWMgZGlzcG9zZVN5bmMoKTogdm9pZCB7XG4gICAgdGhpcy5jbG9zZVNvY2tldCgpO1xuICAgIHRyeSB7XG4gICAgICBleGVjRmlsZVN5bmMoJ2FkYicsIFsnLXMnLCB0aGlzLmRldmljZUlkLCAnZm9yd2FyZCcsICctLXJlbW92ZScsIGB0Y3A6JHtTdHJpbmcodGhpcy5wb3J0KX1gXSwge1xuICAgICAgICBzdGRpbzogJ2lnbm9yZScsXG4gICAgICAgIHRpbWVvdXQ6IEFEQl9USU1FT1VUX0lOX01JTExJU0VDT05EU1xuICAgICAgfSk7XG4gICAgfSBjYXRjaCB7XG4gICAgICAvLyBCZXN0IGVmZm9ydDogYWRiIGRyb3BzIGV2ZXJ5IGZvcndhcmQgd2hlbiB0aGUgZGV2aWNlIGRpc2Nvbm5lY3RzIGFueXdheS5cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU3Vic2NyaWJlcyB0byBhIENEUCBldmVudC4gT25lIGhhbmRsZXIgcGVyIG1ldGhvZDsgc3Vic2NyaWJpbmcgYWdhaW4gcmVwbGFjZXMgaXQuXG4gICAqXG4gICAqIEBwYXJhbSBtZXRob2QgLSBUaGUgQ0RQIGV2ZW50IG5hbWUsIGUuZy4gYFJ1bnRpbWUuYmluZGluZ0NhbGxlZGAuXG4gICAqIEBwYXJhbSBoYW5kbGVyIC0gQ2FsbGVkIHdpdGggdGhlIGV2ZW50IHBhcmFtZXRlcnMuXG4gICAqL1xuICBwdWJsaWMgb24obWV0aG9kOiBzdHJpbmcsIGhhbmRsZXI6IENkcEV2ZW50SGFuZGxlcik6IHZvaWQge1xuICAgIHRoaXMuZXZlbnRIYW5kbGVycy5zZXQobWV0aG9kLCBoYW5kbGVyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZW5kcyBhIENEUCBjb21tYW5kIGFuZCB3YWl0cyBmb3IgaXRzIHJlc3BvbnNlLlxuICAgKlxuICAgKiBAcGFyYW0gbWV0aG9kIC0gVGhlIENEUCBtZXRob2QgbmFtZS5cbiAgICogQHBhcmFtIHBhcmFtcyAtIFRoZSBDRFAgbWV0aG9kIHBhcmFtZXRlcnMuXG4gICAqIEByZXR1cm5zIFRoZSBjb21tYW5kIHJlc3VsdC5cbiAgICovXG4gIHB1YmxpYyBzZW5kKG1ldGhvZDogc3RyaW5nLCBwYXJhbXM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge30pOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIHVua25vd24+PiB7XG4gICAgY29uc3QgaWQgPSArK3RoaXMubWVzc2FnZUlkO1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPFJlY29yZDxzdHJpbmcsIHVua25vd24+PigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBjb25zdCB0aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMucGVuZGluZ0NvbW1hbmRzLmRlbGV0ZShpZCk7XG4gICAgICAgIHJlamVjdChuZXcgRXJyb3IoYFdlYlZpZXcgQ0RQIGNvbW1hbmQgdGltZWQgb3V0IGFmdGVyICR7U3RyaW5nKENEUF9DT01NQU5EX1RJTUVPVVRfSU5fTUlMTElTRUNPTkRTKX1tczogJHttZXRob2R9YCkpO1xuICAgICAgfSwgQ0RQX0NPTU1BTkRfVElNRU9VVF9JTl9NSUxMSVNFQ09ORFMpO1xuXG4gICAgICB0aGlzLnBlbmRpbmdDb21tYW5kcy5zZXQoaWQsIChtZXNzYWdlKSA9PiB7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KTtcbiAgICAgICAgaWYgKG1lc3NhZ2UuZXJyb3IpIHtcbiAgICAgICAgICByZWplY3QobmV3IEVycm9yKGBXZWJWaWV3IENEUCBjb21tYW5kICR7bWV0aG9kfSBmYWlsZWQ6ICR7bWVzc2FnZS5lcnJvci5tZXNzYWdlID8/ICd1bmtub3duIGVycm9yJ31gKSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVzb2x2ZShtZXNzYWdlLnJlc3VsdCA/PyB7fSk7XG4gICAgICB9KTtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgdGhpcy53ZWJTb2NrZXQuc2VuZChKU09OLnN0cmluZ2lmeSh7IGlkLCBtZXRob2QsIHBhcmFtcyB9KSk7XG4gICAgICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgICAgICAvLyBOb3RoaW5nIHdpbGwgYW5zd2VyIGEgc2VuZCB0aGF0IHRocmV3LCBzbyBob2xkaW5nIHRoZSBlbnRyeSBmb3IgdGhlIGZ1bGwgdGltZW91dCB3b3VsZCBvbmx5IGRlbGF5IHRoZSBmYWlsdXJlIGFuZCB0aGVuIG1pc25hbWUgaXQuXG4gICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KTtcbiAgICAgICAgdGhpcy5wZW5kaW5nQ29tbWFuZHMuZGVsZXRlKGlkKTtcbiAgICAgICAgcmVqZWN0KGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvciA6IG5ldyBFcnJvcihTdHJpbmcoZXJyb3IpKSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogU2VuZHMgYW4gb3JkZXJlZCBjb21tYW5kIHNlcXVlbmNlLCBvbmUgY29tbWFuZCBhdCBhIHRpbWUuXG4gICAqXG4gICAqIEVhY2ggY29tbWFuZCBpcyBhd2FpdGVkIGJlZm9yZSB0aGUgbmV4dCBpcyBzZW50LCB3aGljaCBpcyB0aGUgb25seSBvcmRlcmluZyBndWFyYW50ZWUgYW4gaW5wdXRcbiAgICogc2VxdWVuY2UgbmVlZHMgXHUyMDE0IGEgbG9uZy1wcmVzcyBob2xkcyBpdHNlbGYgZm9yIGl0cyBvd24gYGR1cmF0aW9uYCByYXRoZXIgdGhhbiBhc2tpbmcgdGhlIGhvc3QgdG9cbiAgICogc2xlZXAgYmV0d2VlbiB0d28gdG91Y2hlcywgc28gdGhlcmUgaXMgbm8gaW50ZXItY29tbWFuZCBkZWxheSB0byBob25vci5cbiAgICpcbiAgICogQHBhcmFtIGNvbW1hbmRzIC0gVGhlIGNvbW1hbmRzIHRvIHNlbmQsIGluIG9yZGVyLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIHNlbmRBbGwoY29tbWFuZHM6IHJlYWRvbmx5IENkcElucHV0Q29tbWFuZFtdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgZm9yIChjb25zdCBjb21tYW5kIG9mIGNvbW1hbmRzKSB7XG4gICAgICBhd2FpdCB0aGlzLnNlbmQoY29tbWFuZC5tZXRob2QsIGNvbW1hbmQucGFyYW1zKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2xvc2VzIHRoZSBkZWJ1Z2dlciBzb2NrZXQgYW5kIHN0b3BzIHJvdXRpbmcgaXRzIGV2ZW50cy5cbiAgICovXG4gIHByaXZhdGUgY2xvc2VTb2NrZXQoKTogdm9pZCB7XG4gICAgdGhpcy5ldmVudEhhbmRsZXJzLmNsZWFyKCk7XG4gICAgaWYgKHRoaXMud2ViU29ja2V0LnJlYWR5U3RhdGUgPT09IFdlYlNvY2tldC5PUEVOKSB7XG4gICAgICB0aGlzLndlYlNvY2tldC5jbG9zZSgpO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIE9wZW5zIGEgQ0RQIGNvbm5lY3Rpb24gdG8gdGhlIGFwcCdzIFdlYlZpZXcuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFdoaWNoIGFwcCBvbiB3aGljaCBkZXZpY2UuXG4gKiBAcmV0dXJucyBUaGUgb3BlbiBjb25uZWN0aW9uLiBEaXNwb3NlIGl0IHRvIGNsb3NlIHRoZSBzb2NrZXQgYW5kIGRyb3AgdGhlIGFkYiBwb3J0IGZvcndhcmQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjb25uZWN0VG9XZWJWaWV3Q2RwKHBhcmFtczogQ29ubmVjdFRvV2ViVmlld0NkcFBhcmFtcyk6IFByb21pc2U8V2ViVmlld0NkcENvbm5lY3Rpb24+IHtcbiAgY29uc3QgeyBhcHBJZCwgZGV2aWNlSWQgfSA9IHBhcmFtcztcblxuICAvLyBgcGlkb2ZgIGxpc3RzIGV2ZXJ5IG1hdGNoaW5nIHByb2Nlc3M7IHRoZSBhcHAncyBtYWluIG9uZSBpcyBmaXJzdC5cbiAgY29uc3QgcGlkb2ZPdXRwdXQgPSBhd2FpdCBhZGIoZGV2aWNlSWQsIFsnc2hlbGwnLCAncGlkb2YnLCBhcHBJZF0pO1xuICBjb25zdCBwaWQgPSBwaWRvZk91dHB1dC5zcGxpdCgvXFxzKy8sIDEpWzBdID8/ICcnO1xuICBpZiAoIXBpZCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgJHthcHBJZH0gaXMgbm90IHJ1bm5pbmcgb24gJHtkZXZpY2VJZH0sIHNvIGl0cyBXZWJWaWV3IGhhcyBubyBkZWJ1Z2dlciB0byBhdHRhY2ggdG8uYCk7XG4gIH1cblxuICBjb25zdCBwcm9jTmV0VW5peCA9IGF3YWl0IGFkYihkZXZpY2VJZCwgWydzaGVsbCcsICdjYXQnLCAnL3Byb2MvbmV0L3VuaXgnXSk7XG4gIGNvbnN0IHNvY2tldE5hbWUgPSBwYXJzZVdlYlZpZXdEZXZ0b29sc1NvY2tldE5hbWUocHJvY05ldFVuaXgsIHBpZCk7XG5cbiAgY29uc3QgZm9yd2FyZExpc3QgPSBhd2FpdCBhZGIoZGV2aWNlSWQsIFsnZm9yd2FyZCcsICctLWxpc3QnXSk7XG4gIGNvbnN0IGV4aXN0aW5nUG9ydCA9IHBhcnNlRm9yd2FyZGVkUG9ydChmb3J3YXJkTGlzdCwgZGV2aWNlSWQsIHNvY2tldE5hbWUpO1xuICBjb25zdCBwb3J0ID0gZXhpc3RpbmdQb3J0ID8/IGF3YWl0IHBpY2tGcmVlUG9ydCgpO1xuICBpZiAoZXhpc3RpbmdQb3J0ID09PSB1bmRlZmluZWQpIHtcbiAgICBhd2FpdCBhZGIoZGV2aWNlSWQsIFsnZm9yd2FyZCcsIGB0Y3A6JHtTdHJpbmcocG9ydCl9YCwgYGxvY2FsYWJzdHJhY3Q6JHtzb2NrZXROYW1lfWBdKTtcbiAgICBsb2coYFt3ZWJ2aWV3LWNkcF0gRm9yd2FyZGVkIHRjcDoke1N0cmluZyhwb3J0KX0gLT4gbG9jYWxhYnN0cmFjdDoke3NvY2tldE5hbWV9ICgke2FwcElkfSBwaWQgJHtwaWR9KWApO1xuICB9IGVsc2Uge1xuICAgIGxvZyhgW3dlYnZpZXctY2RwXSBSZXVzaW5nIGZvcndhcmQgdGNwOiR7U3RyaW5nKHBvcnQpfSAtPiBsb2NhbGFic3RyYWN0OiR7c29ja2V0TmFtZX0gKCR7YXBwSWR9IHBpZCAke3BpZH0pYCk7XG4gIH1cblxuICB0cnkge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goYGh0dHA6Ly8ke0NEUF9IT1NUfToke1N0cmluZyhwb3J0KX0vanNvbmApO1xuICAgIGNvbnN0IHRhcmdldCA9IHNlbGVjdFdlYlZpZXdQYWdlVGFyZ2V0KGF3YWl0IHJlc3BvbnNlLmpzb24oKSBhcyBDZHBUYXJnZXRbXSk7XG4gICAgY29uc3Qgd2ViU29ja2V0ID0gbmV3IFdlYlNvY2tldCh0YXJnZXQud2ViU29ja2V0RGVidWdnZXJVcmwgPz8gJycpO1xuICAgIGF3YWl0IG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHdlYlNvY2tldC5hZGRFdmVudExpc3RlbmVyKCdvcGVuJywgKCkgPT4ge1xuICAgICAgICByZXNvbHZlKCk7XG4gICAgICB9LCB7IG9uY2U6IHRydWUgfSk7XG4gICAgICB3ZWJTb2NrZXQuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCAoKSA9PiB7XG4gICAgICAgIHJlamVjdChuZXcgRXJyb3IoYENvdWxkIG5vdCBvcGVuIHRoZSBXZWJWaWV3IENEUCBzb2NrZXQgYXQgJHt0YXJnZXQud2ViU29ja2V0RGVidWdnZXJVcmwgPz8gJyd9LmApKTtcbiAgICAgIH0sIHsgb25jZTogdHJ1ZSB9KTtcbiAgICB9KTtcbiAgICBsb2coYFt3ZWJ2aWV3LWNkcF0gQXR0YWNoZWQgdG8gV2ViVmlldyB0YXJnZXQgXCIke3RhcmdldC50aXRsZSA/PyAnJ31cImApO1xuXG4gICAgcmV0dXJuIG5ldyBXZWJWaWV3Q2RwQ29ubmVjdGlvbih3ZWJTb2NrZXQsIGRldmljZUlkLCBwb3J0KTtcbiAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICBhd2FpdCByZW1vdmVGb3J3YXJkKGRldmljZUlkLCBwb3J0KTtcbiAgICB0aHJvdyBlcnJvcjtcbiAgfVxufVxuXG4vKiB2OCBpZ25vcmUgc3RvcCAqL1xuXG4vKipcbiAqIEZpbmRzIGEgcG9ydCBhbHJlYWR5IGZvcndhcmRlZCB0byB0aGlzIGRldmljZSBzb2NrZXQsIHNvIHJlcGVhdGVkIHJ1bnMgcmV1c2Ugb25lIGZvcndhcmQuXG4gKlxuICogV2l0aG91dCB0aGlzIGV2ZXJ5IHJ1biBhbGxvY2F0ZXMgYSBmcmVzaCBwb3J0LCBhbmQgYW55IHJ1biB0aGF0IGV4aXRzIHdpdGhvdXQgdGhlIGFzeW5jXG4gKiB7QGxpbmsgV2ViVmlld0NkcENvbm5lY3Rpb24uZGlzcG9zZX0gXHUyMDE0IGFuIGFicnVwdCB3b3JrZXIgZXhpdCwgd2hlcmUgb25seSB0aGUgc3luY2hyb25vdXMgdGVhcmRvd25cbiAqIHBhdGggcnVucyBcdTIwMTQgbGVhdmVzIGl0cyBmb3J3YXJkIGJlaGluZCBmb3JldmVyLiBSZXVzZSBib3VuZHMgdGhhdCB0byBhIHNpbmdsZSBmb3J3YXJkIHBlciBzb2NrZXRcbiAqIHJhdGhlciB0aGFuIG9uZSBwZXIgcnVuLlxuICpcbiAqIEBwYXJhbSBmb3J3YXJkTGlzdCAtIFRoZSBvdXRwdXQgb2YgYGFkYiBmb3J3YXJkIC0tbGlzdGAuXG4gKiBAcGFyYW0gZGV2aWNlSWQgLSBUaGUgYWRiIGRldmljZSBpZCB0byBtYXRjaC5cbiAqIEBwYXJhbSBzb2NrZXROYW1lIC0gVGhlIGFic3RyYWN0IHNvY2tldCBuYW1lIHRvIG1hdGNoLlxuICogQHJldHVybnMgVGhlIGFscmVhZHktZm9yd2FyZGVkIGxvY2FsIHBvcnQsIG9yIGB1bmRlZmluZWRgIHdoZW4gdGhlcmUgaXMgbm9uZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlRm9yd2FyZGVkUG9ydChmb3J3YXJkTGlzdDogc3RyaW5nLCBkZXZpY2VJZDogc3RyaW5nLCBzb2NrZXROYW1lOiBzdHJpbmcpOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICBmb3IgKGNvbnN0IGxpbmUgb2YgZm9yd2FyZExpc3Quc3BsaXQoJ1xcbicpKSB7XG4gICAgLy8gYGFkYiBmb3J3YXJkIC0tbGlzdGAgcHJpbnRzIGA8ZGV2aWNlSWQ+IHRjcDo8cG9ydD4gbG9jYWxhYnN0cmFjdDo8c29ja2V0TmFtZT5gLlxuICAgIGNvbnN0IFtsaW5lRGV2aWNlSWQsIGxvY2FsLCByZW1vdGVdID0gbGluZS50cmltKCkuc3BsaXQoL1xccysvLCBGT1JXQVJEX0xJU1RfQ09MVU1OX0NPVU5UKTtcbiAgICBpZiAobGluZURldmljZUlkICE9PSBkZXZpY2VJZCB8fCByZW1vdGUgIT09IGBsb2NhbGFic3RyYWN0OiR7c29ja2V0TmFtZX1gIHx8ICFsb2NhbD8uc3RhcnRzV2l0aCgndGNwOicpKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBjb25zdCBwb3J0ID0gTnVtYmVyLnBhcnNlSW50KGxvY2FsLnNsaWNlKCd0Y3A6Jy5sZW5ndGgpLCBERUNJTUFMX1JBRElYKTtcbiAgICBpZiAoTnVtYmVyLmlzU2FmZUludGVnZXIocG9ydCkpIHtcbiAgICAgIHJldHVybiBwb3J0O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogUGlja3MgdGhlIFdlYlZpZXcncyBkZXZ0b29scyBzb2NrZXQgbmFtZSBvdXQgb2YgYC9wcm9jL25ldC91bml4YC5cbiAqXG4gKiBBIGRldmljZSBjYW4gaG9zdCBzZXZlcmFsIGRlYnVnZ2FibGUgV2ViVmlld3MgKG90aGVyIGFwcHMsIGEgbGVmdG92ZXIgcHJvY2VzcyksIHNvIHRoZSBhcHAncyBvd24gcGlkIGlzXG4gKiB3aGF0IGRpc2FtYmlndWF0ZXMgdGhlbS4gV2hlbiBubyBzb2NrZXQgbWF0Y2hlcyB0aGF0IHBpZCB0aGUgc29sZSByZW1haW5pbmcgY2FuZGlkYXRlIGlzIHVzZWQgXHUyMDE0IGFcbiAqIFdlYlZpZXcgd2hvc2Ugc29ja2V0IGlzIG5hbWVkIGFmdGVyIGEgY2hpbGQgcHJvY2VzcyByYXRoZXIgdGhhbiB0aGUgb25lIGBwaWRvZmAgcmVwb3J0ZWQgc3RpbGwgaGFzIHRvIGJlXG4gKiByZWFjaGFibGUgXHUyMDE0IGJ1dCB0d28gdW5hdHRyaWJ1dGFibGUgY2FuZGlkYXRlcyBpcyBhbWJpZ3VvdXMgZW5vdWdoIHRvIHJlZnVzZS5cbiAqXG4gKiBAcGFyYW0gcHJvY05ldFVuaXggLSBUaGUgY29udGVudHMgb2YgYC9wcm9jL25ldC91bml4YC5cbiAqIEBwYXJhbSBwaWQgLSBUaGUgYXBwbGljYXRpb24ncyBwcm9jZXNzIGlkLlxuICogQHJldHVybnMgVGhlIHNvY2tldCBuYW1lLCBlLmcuIGB3ZWJ2aWV3X2RldnRvb2xzX3JlbW90ZV8xODA1NmAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVdlYlZpZXdEZXZ0b29sc1NvY2tldE5hbWUocHJvY05ldFVuaXg6IHN0cmluZywgcGlkOiBzdHJpbmcpOiBzdHJpbmcge1xuICAvLyBUaGUgd2hvbGUgbWF0Y2ggbWludXMgaXRzIGxlYWRpbmcgYEBgLCByYXRoZXIgdGhhbiBhIG5hbWVkIGNhcHR1cmUgZ3JvdXA6IGEgbWFuZGF0b3J5IGdyb3VwIGlzIGFsd2F5c1xuICAvLyBQcmVzZW50IG9uY2UgdGhlIHBhdHRlcm4gaGFzIG1hdGNoZWQsIHNvIGBtYXRjaC5ncm91cHM/LlsnbmFtZSddID8/ICcnYCB3b3VsZCBsZWF2ZSBiZWhpbmQgdHdvIGJyYW5jaGVzXG4gIC8vIE5vIGlucHV0IGNhbiBldmVyIHJlYWNoIFx1MjAxNCBhbmQgdGhpcyBmaWxlIGlzIG1lYXN1cmVkIGFnYWluc3QgYSAxMDAlIGJyYW5jaCBnYXRlLlxuICBjb25zdCBuYW1lcyA9IFtcbiAgICAuLi5uZXcgU2V0KFsuLi5wcm9jTmV0VW5peC5tYXRjaEFsbCgvQHdlYnZpZXdfZGV2dG9vbHNfcmVtb3RlX1xcdysvZyldXG4gICAgICAubWFwKChtYXRjaCkgPT4gbWF0Y2hbMF0uc2xpY2UoJ0AnLmxlbmd0aCkpKVxuICBdO1xuXG4gIC8vIERlc3RydWN0dXJlZCByYXRoZXIgdGhhbiBpbmRleGVkIGZvciB0aGUgc2FtZSByZWFzb246IGBzb2xlTmFtZWAgY2FycmllcyB0aGUgXCJ0aGVyZSBpcyBhdCBsZWFzdCBvbmVcIlxuICAvLyBGYWN0IGluIHRoZSB0eXBlLCBzbyBuZWl0aGVyIHRoZSBlbXB0eSBjaGVjayBiZWxvdyBub3IgdGhlIHNpbmdsZS1jYW5kaWRhdGUgb25lIGxlYXZlcyBhIGRlYWQgYnJhbmNoLlxuICBjb25zdCBbc29sZU5hbWUsIC4uLm90aGVyTmFtZXNdID0gbmFtZXM7XG5cbiAgaWYgKHNvbGVOYW1lID09PSB1bmRlZmluZWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAnTm8gYHdlYnZpZXdfZGV2dG9vbHNfcmVtb3RlXypgIHNvY2tldCBvbiB0aGUgZGV2aWNlLiBPYnNpZGlhbiBNb2JpbGUgaXMgbm90IHJ1bm5pbmcsIG9yIGl0cyBXZWJWaWV3ICdcbiAgICAgICAgKyAnZGVidWdnZXIgaXMgZGlzYWJsZWQuJ1xuICAgICk7XG4gIH1cblxuICBjb25zdCBleGFjdE5hbWUgPSBgd2Vidmlld19kZXZ0b29sc19yZW1vdGVfJHtwaWR9YDtcbiAgaWYgKG5hbWVzLmluY2x1ZGVzKGV4YWN0TmFtZSkpIHtcbiAgICByZXR1cm4gZXhhY3ROYW1lO1xuICB9XG5cbiAgaWYgKG90aGVyTmFtZXMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIHNvbGVOYW1lO1xuICB9XG5cbiAgdGhyb3cgbmV3IEVycm9yKFxuICAgIGBObyBcXGAke2V4YWN0TmFtZX1cXGAgc29ja2V0LCBhbmQgJHtTdHJpbmcobmFtZXMubGVuZ3RoKX0gb3RoZXIgZGVidWdnYWJsZSBXZWJWaWV3cyBhcmUgcHJlc2VudCBgXG4gICAgICArIGAoJHtuYW1lcy5qb2luKCcsICcpfSksIHNvIHRoZSByaWdodCBvbmUgY2Fubm90IGJlIGNob3Nlbi5gXG4gICk7XG59XG5cbi8qKlxuICogUGlja3MgdGhlIE9ic2lkaWFuIHBhZ2UgdGFyZ2V0IG91dCBvZiB0aGUgZGVidWdnZXIncyBgL2pzb25gIGxpc3QuXG4gKlxuICogQHBhcmFtIHRhcmdldHMgLSBUaGUgYC9qc29uYCByZXNwb25zZS5cbiAqIEByZXR1cm5zIFRoZSBwYWdlIHRhcmdldCB0byBhdHRhY2ggdG8uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZWxlY3RXZWJWaWV3UGFnZVRhcmdldCh0YXJnZXRzOiByZWFkb25seSBDZHBUYXJnZXRbXSk6IENkcFRhcmdldCB7XG4gIGNvbnN0IHRhcmdldCA9IHRhcmdldHMuZmluZCgoY2FuZGlkYXRlKSA9PiBjYW5kaWRhdGUudHlwZSA9PT0gJ3BhZ2UnICYmIEJvb2xlYW4oY2FuZGlkYXRlLndlYlNvY2tldERlYnVnZ2VyVXJsKSlcbiAgICA/PyB0YXJnZXRzLmZpbmQoKGNhbmRpZGF0ZSkgPT4gQm9vbGVhbihjYW5kaWRhdGUud2ViU29ja2V0RGVidWdnZXJVcmwpKTtcblxuICBpZiAoIXRhcmdldCkge1xuICAgIHRocm93IG5ldyBFcnJvcignVGhlIFdlYlZpZXcgZGVidWdnZXIgbGlzdGVkIG5vIHRhcmdldCB3aXRoIGEgV2ViU29ja2V0IGVuZHBvaW50LicpO1xuICB9XG5cbiAgcmV0dXJuIHRhcmdldDtcbn1cblxuLyogdjggaWdub3JlIHN0YXJ0IC0tIEludGVncmF0aW9uLXRpbWUgY29kZSAoYWRiIHNoZWxsLW91dHMpLiBDb3ZlcmVkIGJ5IHRoZSBBbmRyb2lkIGludGVncmF0aW9uIHRlc3RzLCBub3QgYnkgdW5pdCB0ZXN0cy4gKi9cblxuLyoqXG4gKiBSdW5zIGFuIGFkYiBjb21tYW5kIGFnYWluc3Qgb25lIGRldmljZS5cbiAqXG4gKiBAcGFyYW0gZGV2aWNlSWQgLSBUaGUgYWRiIGRldmljZSBpZC5cbiAqIEBwYXJhbSBjb21tYW5kQXJndW1lbnRzIC0gVGhlIGFkYiBhcmd1bWVudHMgYWZ0ZXIgYC1zIDxkZXZpY2VJZD5gLlxuICogQHJldHVybnMgVHJpbW1lZCBzdGRvdXQuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGFkYihkZXZpY2VJZDogc3RyaW5nLCBjb21tYW5kQXJndW1lbnRzOiBzdHJpbmdbXSk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IHN0ZG91dCA9IGF3YWl0IGV4ZWMoWydhZGInLCAnLXMnLCBkZXZpY2VJZCwgLi4uY29tbWFuZEFyZ3VtZW50c10sIHtcbiAgICBpc1F1aWV0OiB0cnVlLFxuICAgIHRpbWVvdXRJbk1pbGxpc2Vjb25kczogQURCX1RJTUVPVVRfSU5fTUlMTElTRUNPTkRTXG4gIH0pO1xuXG4gIHJldHVybiBzdGRvdXQudHJpbSgpO1xufVxuXG4vKipcbiAqIERyb3BzIGFuIGFkYiBwb3J0IGZvcndhcmQsIGlnbm9yaW5nIHRoZSBcIm5vdCBmb3VuZFwiIGNhc2UuXG4gKlxuICogQHBhcmFtIGRldmljZUlkIC0gVGhlIGFkYiBkZXZpY2UgaWQuXG4gKiBAcGFyYW0gcG9ydCAtIFRoZSBmb3J3YXJkZWQgbG9jYWwgcG9ydC5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gcmVtb3ZlRm9yd2FyZChkZXZpY2VJZDogc3RyaW5nLCBwb3J0OiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgdHJ5IHtcbiAgICBhd2FpdCBleGVjKFsnYWRiJywgJy1zJywgZGV2aWNlSWQsICdmb3J3YXJkJywgJy0tcmVtb3ZlJywgYHRjcDoke1N0cmluZyhwb3J0KX1gXSwge1xuICAgICAgaXNRdWlldDogdHJ1ZSxcbiAgICAgIHNob3VsZElnbm9yZUV4aXRDb2RlOiB0cnVlLFxuICAgICAgdGltZW91dEluTWlsbGlzZWNvbmRzOiBBREJfVElNRU9VVF9JTl9NSUxMSVNFQ09ORFNcbiAgICB9KTtcbiAgfSBjYXRjaCB7XG4gICAgLy8gQmVzdCBlZmZvcnQ6IHRoZSBmb3J3YXJkIGlzIHBlci1ydW4gYW5kIGFkYiBkcm9wcyBpdCB3aGVuIHRoZSBkZXZpY2UgZGlzY29ubmVjdHMgYW55d2F5LlxuICB9XG59XG5cbi8qIHY4IGlnbm9yZSBzdG9wICovXG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFrQkEsZ0NBQTZCO0FBSTdCLGtCQUFxQjtBQUNyQixpQkFBb0I7QUFDcEIsK0JBQTZCO0FBRTdCLE1BQU0sOEJBQThCO0FBRXBDLE1BQU0sNEJBQTRCO0FBQ2xDLE1BQU0sZ0JBQWdCO0FBT3RCLE1BQU0sc0NBQXNDO0FBQzVDLE1BQU0sV0FBVztBQWdFVixNQUFNLHFCQUFxQjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUEwQ3pCLFlBQTZCLFdBQXVDLFVBQW1DLE1BQWM7QUFBeEY7QUFBdUM7QUFBbUM7QUFDNUcsU0FBSyxVQUFVLGlCQUFpQixXQUFXLENBQUMsVUFBd0I7QUFDbEUsVUFBSTtBQUNKLFVBQUk7QUFDRixr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
|
|
294
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3dlYnZpZXctY2RwLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogQSBzZWNvbmQsIGluZGVwZW5kZW50IENocm9tZSBEZXZUb29scyBQcm90b2NvbCBjb25uZWN0aW9uIHRvIE9ic2lkaWFuIE1vYmlsZSdzIFdlYlZpZXcsIHVzZWQgdG8gaW5qZWN0XG4gKiAqKnRydXN0ZWQqKiBpbnB1dCBvbiBBbmRyb2lkIChzZWUgKipMMzkqKikuXG4gKlxuICogSXQgaXMgZGVsaWJlcmF0ZWx5IHNlcGFyYXRlIGZyb20gdGhlIEFwcGl1bSBzZXNzaW9uIHJhdGhlciB0aGFuIGxheWVyZWQgb24gaXQuIGBBcHBpdW1UcmFuc3BvcnQuZXZhbHVhdGVgXG4gKiBydW5zIHRoZSB3aG9sZSBgZXZhbEluT2JzaWRpYW5gIGNsb3N1cmUgaW5zaWRlIG9uZSBXM0MgKkV4ZWN1dGUgU2NyaXB0Kiwgd2hpY2ggYXdhaXRzIHRoZSByZXR1cm5lZFxuICogcHJvbWlzZSBcdTIwMTQgc28gd2hpbGUgYSBjbG9zdXJlIHNpdHMgd2FpdGluZyBvbiBgbGliLmNsaWNrRWxlbWVudCguLi4pYCwgdGhlIFdlYkRyaXZlciBzZXNzaW9uIGlzIGJ1c3kgYW5kXG4gKiBjYW5ub3QgYmUgYXNrZWQgdG8gZG8gYW55dGhpbmcgZWxzZS4gQ0RQIGlzIGlkLW11bHRpcGxleGVkIGFuZCBDaHJvbWl1bSBhY2NlcHRzIG11bHRpcGxlIGRlYnVnZ2VyXG4gKiBjbGllbnRzLCBzbyB0aGlzIHNvY2tldCBzdGF5cyBmcmVlIGV4YWN0bHkgd2hlbiB0aGUgQXBwaXVtIG9uZSBkb2VzIG5vdC4gVGhhdCBpcyB3aGF0IGxldHMgdGhlIHJlbmRlcmVyXG4gKiBjYWxsIGJhY2sgb3V0IHRvIHRoZSBob3N0IG1pZC1jbG9zdXJlLlxuICpcbiAqIFJlYWNoaW5nIHRoZSBXZWJWaWV3J3MgZGVidWdnZXIgaXMgYSB0d28tc3RlcDogdGhlIGFwcCBwdWJsaXNoZXMgYW4gYWJzdHJhY3QgdW5peCBzb2NrZXQgbmFtZWRcbiAqIGB3ZWJ2aWV3X2RldnRvb2xzX3JlbW90ZV88cGlkPmAsIGBhZGIgZm9yd2FyZGAgbWFwcyBpdCB0byBhIGxvY2FsIFRDUCBwb3J0LCBhbmQgdGhlIHVzdWFsIGAvanNvbmBcbiAqIGVuZHBvaW50IHRoZW4gbGlzdHMgdGhlIHBhZ2UgdGFyZ2V0cy5cbiAqL1xuXG5pbXBvcnQgeyBleGVjRmlsZVN5bmMgfSBmcm9tICdub2RlOmNoaWxkX3Byb2Nlc3MnO1xuXG5pbXBvcnQgdHlwZSB7IENkcElucHV0Q29tbWFuZCB9IGZyb20gJy4vbW9iaWxlLWlucHV0LmNqcyc7XG5cbmltcG9ydCB7IGV4ZWMgfSBmcm9tICcuL2V4ZWMuY2pzJztcbmltcG9ydCB7IGxvZyB9IGZyb20gJy4vbG9nLmNqcyc7XG5pbXBvcnQgeyBwaWNrRnJlZVBvcnQgfSBmcm9tICcuL29ic2lkaWFuLWluc3RhbmNlLmNqcyc7XG5cbmNvbnN0IEFEQl9USU1FT1VUX0lOX01JTExJU0VDT05EUyA9IDE1XzAwMDtcbi8vIGBhZGIgZm9yd2FyZCAtLWxpc3RgIHByaW50cyB0aHJlZSBjb2x1bW5zOiBgPGRldmljZUlkPiB0Y3A6PHBvcnQ+IGxvY2FsYWJzdHJhY3Q6PHNvY2tldE5hbWU+YC5cbmNvbnN0IEZPUldBUkRfTElTVF9DT0xVTU5fQ09VTlQgPSAzO1xuY29uc3QgREVDSU1BTF9SQURJWCA9IDEwO1xuLypcbiAqIEJvdW5kcyBvbmUgY29tbWFuZCBvbiBUSElTIHNpZGUgY2hhbm5lbCBcdTIwMTQgYW4gYElucHV0LmRpc3BhdGNoTW91c2VFdmVudGAsIGEgdGFyZ2V0IGxpc3QuIEl0IGlzIG5vdCB0aGVcbiAqIHBlci1ldmFsIGNhcCBhbmQgbXVzdCBub3QgYmUgZGVyaXZlZCBmcm9tIGBERUZBVUxUX0VWQUxfQ0FQX0lOX01JTExJU0VDT05EU2A6IG5vIHRlc3QgY2xvc3VyZSB0cmF2ZWxzXG4gKiB0aGlzIHNvY2tldCwgYW5kIHRoZSB3aG9sZSBwb2ludCBvZiB0aGUgc2Vjb25kIGNvbm5lY3Rpb24gaXMgdGhhdCBpdCBzdGF5cyBmcmVlIHdoaWxlIHRoZSBBcHBpdW0gc2Vzc2lvblxuICogaXMgYnVzeSBydW5uaW5nIG9uZS4gVGhlIHNoYXJlZCB2YWx1ZSBpcyBhIGNvaW5jaWRlbmNlLlxuICovXG5jb25zdCBDRFBfQ09NTUFORF9USU1FT1VUX0lOX01JTExJU0VDT05EUyA9IDMwXzAwMDtcbmNvbnN0IENEUF9IT1NUID0gJzEyNy4wLjAuMSc7XG5cbi8qKlxuICogT25lIGVudHJ5IG9mIHRoZSBkZWJ1Z2dlcidzIGAvanNvbmAgdGFyZ2V0IGxpc3QuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2RwVGFyZ2V0IHtcbiAgcmVhZG9ubHkgdGl0bGU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHR5cGU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHVybD86IHN0cmluZztcbiAgcmVhZG9ubHkgd2ViU29ja2V0RGVidWdnZXJVcmw/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIGNvbm5lY3RUb1dlYlZpZXdDZHB9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbm5lY3RUb1dlYlZpZXdDZHBQYXJhbXMge1xuICAvKipcbiAgICogVGhlIEFuZHJvaWQgYXBwbGljYXRpb24gaWQgd2hvc2UgV2ViVmlldyB0byBhdHRhY2ggdG8sIGUuZy4gYG1kLm9ic2lkaWFuYC5cbiAgICovXG4gIHJlYWRvbmx5IGFwcElkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBhZGIgZGV2aWNlIGlkIChgZW11bGF0b3ItNTU1NGAsIGEgc2VyaWFsKSB0byBydW4gYWRiIGFnYWluc3QuXG4gICAqL1xuICByZWFkb25seSBkZXZpY2VJZDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFRoZSBlcnJvciBoYWxmIG9mIGEgZmFpbGVkIENEUCBjb21tYW5kIHJlc3BvbnNlLlxuICovXG5pbnRlcmZhY2UgQ2RwRXJyb3Ige1xuICByZWFkb25seSBtZXNzYWdlPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEhhbmRsZXMgYSBDRFAgZXZlbnQuXG4gKi9cbnR5cGUgQ2RwRXZlbnRIYW5kbGVyID0gKHBhcmFtczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pID0+IHZvaWQ7XG5cbi8qKlxuICogQSBDRFAgbWVzc2FnZTogZWl0aGVyIGEgcmVzcG9uc2UgdG8gYSBjb21tYW5kIChgaWRgKSBvciBhbiBldmVudCAoYG1ldGhvZGApLlxuICovXG5pbnRlcmZhY2UgQ2RwTWVzc2FnZSB7XG4gIHJlYWRvbmx5IGVycm9yPzogQ2RwRXJyb3I7XG4gIHJlYWRvbmx5IGlkPzogbnVtYmVyO1xuICByZWFkb25seSBtZXRob2Q/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHBhcmFtcz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICByZWFkb25seSByZXN1bHQ/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbn1cblxuLyoqXG4gKiBBIGNvbW1hbmQgd2FpdGluZyBmb3IgaXRzIHJlcGx5OiBzZXR0bGVzIHRoZSB7QGxpbmsgV2ViVmlld0NkcENvbm5lY3Rpb24uc2VuZH1cbiAqIGNhbGwncyBwcm9taXNlIGFuZCBjYW5jZWxzIHRoZSB0aW1lb3V0IHRoYXQgd291bGQgb3RoZXJ3aXNlIGZhaWwgaXQuXG4gKi9cbnR5cGUgUGVuZGluZ0NvbW1hbmQgPSAobWVzc2FnZTogQ2RwTWVzc2FnZSkgPT4gdm9pZDtcblxuLyogdjggaWdub3JlIHN0YXJ0IC0tIEludGVncmF0aW9uLXRpbWUgY29kZSAoYSBsaXZlIFdlYlNvY2tldCB0byBhIFdlYlZpZXcsIGFkYiBwb3J0IGZvcndhcmRpbmcpLiBDb3ZlcmVkIGJ5IHRoZSBBbmRyb2lkIGludGVncmF0aW9uIHRlc3RzLCBub3QgYnkgdW5pdCB0ZXN0cy4gSXQgZW5kcyBiZWZvcmUgYHBhcnNlRm9yd2FyZGVkUG9ydGA6IGBwZXJmZWN0aW9uaXN0L3NvcnQtbW9kdWxlc2AgcGxhY2VzIHRoZSBwdXJlLCB1bml0LXRlc3RlZCBoZWxwZXJzIEFGVEVSIHRoaXMgY2xhc3MgYW5kIGBjb25uZWN0VG9XZWJWaWV3Q2RwYCwgc28gdGhleSBtdXN0IHN0YXkgbWVhc3VyZWQuICovXG5cbi8qKlxuICogQW4gb3BlbiBDRFAgY29ubmVjdGlvbiB0byBhIFdlYlZpZXcuXG4gKlxuICogQ29tbWFuZHMgYXJlIGlkLW11bHRpcGxleGVkLCBzbyBhIGNvbW1hbmQgaXNzdWVkIGZyb20gaW5zaWRlIGFuIGV2ZW50IGhhbmRsZXIgY29tcGxldGVzIHdoaWxlIGFuIGVhcmxpZXJcbiAqIGBSdW50aW1lLmV2YWx1YXRlYCBpcyBzdGlsbCBhd2FpdGluZyBpdHMgcHJvbWlzZSBcdTIwMTQgd2hpY2ggaXMgdGhlIHdob2xlIHJlYXNvbiB0aGlzIGNsYXNzIGV4aXN0cy5cbiAqL1xuZXhwb3J0IGNsYXNzIFdlYlZpZXdDZHBDb25uZWN0aW9uIHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIHNvY2tldCBpcyBzdGlsbCB1c2FibGUuXG4gICAqXG4gICAqIFJlc3RhcnRpbmcgdGhlIGFwcCB0ZWFycyBpdHMgV2ViVmlldyBkb3duIGFuZCB0YWtlcyB0aGUgZGVidWdnZXIgdGFyZ2V0IHdpdGggaXQsIHNvIGEgY2FjaGVkXG4gICAqIGNvbm5lY3Rpb24gaGFzIHRvIGJlIHJlLWNoZWNrZWQgcmF0aGVyIHRoYW4gYXNzdW1lZCBsaXZlLlxuICAgKlxuICAgKiBAcmV0dXJucyBgdHJ1ZWAgd2hpbGUgdGhlIHNvY2tldCBpcyBvcGVuLlxuICAgKi9cbiAgcHVibGljIGdldCBpc09wZW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMud2ViU29ja2V0LnJlYWR5U3RhdGUgPT09IFdlYlNvY2tldC5PUEVOO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBldmVudEhhbmRsZXJzID0gbmV3IE1hcDxzdHJpbmcsIENkcEV2ZW50SGFuZGxlcj4oKTtcblxuICBwcml2YXRlIG1lc3NhZ2VJZCA9IDA7XG5cbiAgLyoqXG4gICAqIFRoZSBjb21tYW5kcyBzdGlsbCB3YWl0aW5nIGZvciBhIHJlcGx5LCBrZXllZCBieSB0aGUgQ0RQIG1lc3NhZ2UgaWQgZWFjaCB3YXNcbiAgICogc2VudCB3aXRoLiBFbXB0aWVkIGJ5IHdoaWNoZXZlciBvZiB0aGUgcmVwbHkgYW5kIHRoZSB0aW1lb3V0IGNvbWVzIGZpcnN0LlxuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBwZW5kaW5nQ29tbWFuZHMgPSBuZXcgTWFwPG51bWJlciwgUGVuZGluZ0NvbW1hbmQ+KCk7XG5cbiAgLyoqXG4gICAqIFdyYXBzIGFuIGFscmVhZHktb3BlbiBkZWJ1Z2dlciBzb2NrZXQsIHBsdXMgd2hhdCBpcyBuZWVkZWQgdG8gdGVhciBpdHMgcG9ydCBmb3J3YXJkIGRvd24uXG4gICAqXG4gICAqIE9ORSBgbWVzc2FnZWAgbGlzdGVuZXIgZm9yIHRoZSBzb2NrZXQncyB3aG9sZSBsaWZlLCByb3V0aW5nIGJvdGggaGFsdmVzIG9mIHdoYXRcbiAgICogYXJyaXZlcyBcdTIwMTQgQ0RQIGV2ZW50cyB0byB0aGVpciBzdWJzY3JpYmVkIGhhbmRsZXIsIGNvbW1hbmQgcmVwbGllcyB0byB0aGVcbiAgICoge0BsaW5rIHNlbmR9IGNhbGwgd2FpdGluZyBvbiB0aGUgaWQuIEEgbGlzdGVuZXIgcGVyIGluLWZsaWdodCBjb21tYW5kIGluc3RlYWRcbiAgICogd291bGQgbWFrZSB0aGUgY291bnQgc2NhbGUgd2l0aCBjb25jdXJyZW5jeSwgc28gZWxldmVuIGNvbW1hbmRzIGluIGZsaWdodCBhdFxuICAgKiBvbmNlIHdvdWxkIGNyb3NzIE5vZGUncyBkZWZhdWx0IGBtYXhMaXN0ZW5lcnNgIG9mIDEwIGFuZCByZXBvcnQgYSBtZW1vcnkgbGVha1xuICAgKiB0aGF0IGlzIG5vdCBvbmUgKHNlZSB0aGUgZGVza3RvcCB0cmFuc3BvcnQncyBgZ2V0UGVuZGluZ0NvbW1hbmRzYCwgd2hlcmUgdGhlXG4gICAqIHNhbWUgc2hhcGUgd2FzIG1lYXN1cmVkKS5cbiAgICpcbiAgICogVGhlIHBhcnNlIGlzIGd1YXJkZWQgYmVjYXVzZSBhIGZyYW1lIHRoaXMgY29ubmVjdGlvbiBjYW5ub3QgcmVhZCBiZWxvbmdzIHRvXG4gICAqIG5vdGhpbmcgaXQgc2VudDogdGhyb3dpbmcgaGVyZSB3b3VsZCB0aHJvdyBvdXQgb2YgdGhlIGV2ZW50IGRpc3BhdGNoLCB3aGVyZVxuICAgKiBub3RoaW5nIGNhbiBjYXRjaCBpdC5cbiAgICpcbiAgICogQHBhcmFtIHdlYlNvY2tldCAtIFRoZSBvcGVuIGRlYnVnZ2VyIHNvY2tldC5cbiAgICogQHBhcmFtIGRldmljZUlkIC0gVGhlIGFkYiBkZXZpY2UgaWQsIG5lZWRlZCB0byBkcm9wIHRoZSBwb3J0IGZvcndhcmQgb24gZGlzcG9zZS5cbiAgICogQHBhcmFtIHBvcnQgLSBUaGUgZm9yd2FyZGVkIGxvY2FsIHBvcnQuXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSB3ZWJTb2NrZXQ6IFdlYlNvY2tldCwgcHJpdmF0ZSByZWFkb25seSBkZXZpY2VJZDogc3RyaW5nLCBwcml2YXRlIHJlYWRvbmx5IHBvcnQ6IG51bWJlcikge1xuICAgIHRoaXMud2ViU29ja2V0LmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCAoZXZlbnQ6IE1lc3NhZ2VFdmVudCkgPT4ge1xuICAgICAgbGV0IG1lc3NhZ2U6IENkcE1lc3NhZ2U7XG4gICAgICB0cnkge1xuICAgICAgICBtZXNzYWdlID0gSlNPTi5wYXJzZShTdHJpbmcoZXZlbnQuZGF0YSkpIGFzIENkcE1lc3NhZ2U7XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAobWVzc2FnZS5tZXRob2QgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLmV2ZW50SGFuZGxlcnMuZ2V0KG1lc3NhZ2UubWV0aG9kKT8uKG1lc3NhZ2UucGFyYW1zID8/IHt9KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAobWVzc2FnZS5pZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcGVuZGluZ0NvbW1hbmQgPSB0aGlzLnBlbmRpbmdDb21tYW5kcy5nZXQobWVzc2FnZS5pZCk7XG4gICAgICBpZiAoIXBlbmRpbmdDb21tYW5kKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5wZW5kaW5nQ29tbWFuZHMuZGVsZXRlKG1lc3NhZ2UuaWQpO1xuICAgICAgcGVuZGluZ0NvbW1hbmQobWVzc2FnZSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ2xvc2VzIHRoZSBzb2NrZXQgYW5kIGRyb3BzIHRoZSBhZGIgcG9ydCBmb3J3YXJkLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGRpc3Bvc2UoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5jbG9zZVNvY2tldCgpO1xuICAgIGF3YWl0IHJlbW92ZUZvcndhcmQodGhpcy5kZXZpY2VJZCwgdGhpcy5wb3J0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTeW5jaHJvbm91cyBkaXNwb3NhbCwgZm9yIGBwcm9jZXNzLm9uKCdleGl0JylgIGhhbmRsZXJzIHdoZXJlIGFzeW5jIHdvcmsgY2Fubm90IHJ1bi5cbiAgICpcbiAgICogV2l0aG91dCB0aGlzIGFuIGFicnVwdCB3b3JrZXIgZXhpdCBsZWF2ZXMgdGhlIHBvcnQgZm9yd2FyZCBiZWhpbmQgXHUyMDE0IHRoZSBhc3luYyB7QGxpbmsgZGlzcG9zZX0gYWJvdmVcbiAgICogbmV2ZXIgZ2V0cyBhIHR1cm4uXG4gICAqL1xuICBwdWJsaWMgZGlzcG9zZVN5bmMoKTogdm9pZCB7XG4gICAgdGhpcy5jbG9zZVNvY2tldCgpO1xuICAgIHRyeSB7XG4gICAgICBleGVjRmlsZVN5bmMoJ2FkYicsIFsnLXMnLCB0aGlzLmRldmljZUlkLCAnZm9yd2FyZCcsICctLXJlbW92ZScsIGB0Y3A6JHtTdHJpbmcodGhpcy5wb3J0KX1gXSwge1xuICAgICAgICBzdGRpbzogJ2lnbm9yZScsXG4gICAgICAgIHRpbWVvdXQ6IEFEQl9USU1FT1VUX0lOX01JTExJU0VDT05EU1xuICAgICAgfSk7XG4gICAgfSBjYXRjaCB7XG4gICAgICAvLyBCZXN0IGVmZm9ydDogYWRiIGRyb3BzIGV2ZXJ5IGZvcndhcmQgd2hlbiB0aGUgZGV2aWNlIGRpc2Nvbm5lY3RzIGFueXdheS5cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU3Vic2NyaWJlcyB0byBhIENEUCBldmVudC4gT25lIGhhbmRsZXIgcGVyIG1ldGhvZDsgc3Vic2NyaWJpbmcgYWdhaW4gcmVwbGFjZXMgaXQuXG4gICAqXG4gICAqIEBwYXJhbSBtZXRob2QgLSBUaGUgQ0RQIGV2ZW50IG5hbWUsIGUuZy4gYFJ1bnRpbWUuYmluZGluZ0NhbGxlZGAuXG4gICAqIEBwYXJhbSBoYW5kbGVyIC0gQ2FsbGVkIHdpdGggdGhlIGV2ZW50IHBhcmFtZXRlcnMuXG4gICAqL1xuICBwdWJsaWMgb24obWV0aG9kOiBzdHJpbmcsIGhhbmRsZXI6IENkcEV2ZW50SGFuZGxlcik6IHZvaWQge1xuICAgIHRoaXMuZXZlbnRIYW5kbGVycy5zZXQobWV0aG9kLCBoYW5kbGVyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZW5kcyBhIENEUCBjb21tYW5kIGFuZCB3YWl0cyBmb3IgaXRzIHJlc3BvbnNlLlxuICAgKlxuICAgKiBAcGFyYW0gbWV0aG9kIC0gVGhlIENEUCBtZXRob2QgbmFtZS5cbiAgICogQHBhcmFtIHBhcmFtcyAtIFRoZSBDRFAgbWV0aG9kIHBhcmFtZXRlcnMuXG4gICAqIEByZXR1cm5zIFRoZSBjb21tYW5kIHJlc3VsdC5cbiAgICovXG4gIHB1YmxpYyBzZW5kKG1ldGhvZDogc3RyaW5nLCBwYXJhbXM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge30pOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIHVua25vd24+PiB7XG4gICAgY29uc3QgaWQgPSArK3RoaXMubWVzc2FnZUlkO1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPFJlY29yZDxzdHJpbmcsIHVua25vd24+PigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBjb25zdCB0aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMucGVuZGluZ0NvbW1hbmRzLmRlbGV0ZShpZCk7XG4gICAgICAgIHJlamVjdChuZXcgRXJyb3IoYFdlYlZpZXcgQ0RQIGNvbW1hbmQgdGltZWQgb3V0IGFmdGVyICR7U3RyaW5nKENEUF9DT01NQU5EX1RJTUVPVVRfSU5fTUlMTElTRUNPTkRTKX1tczogJHttZXRob2R9YCkpO1xuICAgICAgfSwgQ0RQX0NPTU1BTkRfVElNRU9VVF9JTl9NSUxMSVNFQ09ORFMpO1xuXG4gICAgICB0aGlzLnBlbmRpbmdDb21tYW5kcy5zZXQoaWQsIChtZXNzYWdlKSA9PiB7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KTtcbiAgICAgICAgaWYgKG1lc3NhZ2UuZXJyb3IpIHtcbiAgICAgICAgICByZWplY3QobmV3IEVycm9yKGBXZWJWaWV3IENEUCBjb21tYW5kICR7bWV0aG9kfSBmYWlsZWQ6ICR7bWVzc2FnZS5lcnJvci5tZXNzYWdlID8/ICd1bmtub3duIGVycm9yJ31gKSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVzb2x2ZShtZXNzYWdlLnJlc3VsdCA/PyB7fSk7XG4gICAgICB9KTtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgdGhpcy53ZWJTb2NrZXQuc2VuZChKU09OLnN0cmluZ2lmeSh7IGlkLCBtZXRob2QsIHBhcmFtcyB9KSk7XG4gICAgICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgICAgICAvLyBOb3RoaW5nIHdpbGwgYW5zd2VyIGEgc2VuZCB0aGF0IHRocmV3LCBzbyBob2xkaW5nIHRoZSBlbnRyeSBmb3IgdGhlIGZ1bGwgdGltZW91dCB3b3VsZCBvbmx5IGRlbGF5IHRoZSBmYWlsdXJlIGFuZCB0aGVuIG1pc25hbWUgaXQuXG4gICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KTtcbiAgICAgICAgdGhpcy5wZW5kaW5nQ29tbWFuZHMuZGVsZXRlKGlkKTtcbiAgICAgICAgcmVqZWN0KGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvciA6IG5ldyBFcnJvcihTdHJpbmcoZXJyb3IpKSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogU2VuZHMgYW4gb3JkZXJlZCBjb21tYW5kIHNlcXVlbmNlLCBvbmUgY29tbWFuZCBhdCBhIHRpbWUuXG4gICAqXG4gICAqIEVhY2ggY29tbWFuZCBpcyBhd2FpdGVkIGJlZm9yZSB0aGUgbmV4dCBpcyBzZW50LCB3aGljaCBpcyB0aGUgb25seSBvcmRlcmluZyBndWFyYW50ZWUgYW4gaW5wdXRcbiAgICogc2VxdWVuY2UgbmVlZHMgXHUyMDE0IGEgbG9uZy1wcmVzcyBob2xkcyBpdHNlbGYgZm9yIGl0cyBvd24gYGR1cmF0aW9uYCByYXRoZXIgdGhhbiBhc2tpbmcgdGhlIGhvc3QgdG9cbiAgICogc2xlZXAgYmV0d2VlbiB0d28gdG91Y2hlcywgc28gdGhlcmUgaXMgbm8gaW50ZXItY29tbWFuZCBkZWxheSB0byBob25vci5cbiAgICpcbiAgICogQHBhcmFtIGNvbW1hbmRzIC0gVGhlIGNvbW1hbmRzIHRvIHNlbmQsIGluIG9yZGVyLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIHNlbmRBbGwoY29tbWFuZHM6IHJlYWRvbmx5IENkcElucHV0Q29tbWFuZFtdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgZm9yIChjb25zdCBjb21tYW5kIG9mIGNvbW1hbmRzKSB7XG4gICAgICBhd2FpdCB0aGlzLnNlbmQoY29tbWFuZC5tZXRob2QsIGNvbW1hbmQucGFyYW1zKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2xvc2VzIHRoZSBkZWJ1Z2dlciBzb2NrZXQgYW5kIHN0b3BzIHJvdXRpbmcgaXRzIGV2ZW50cy5cbiAgICovXG4gIHByaXZhdGUgY2xvc2VTb2NrZXQoKTogdm9pZCB7XG4gICAgdGhpcy5ldmVudEhhbmRsZXJzLmNsZWFyKCk7XG4gICAgaWYgKHRoaXMud2ViU29ja2V0LnJlYWR5U3RhdGUgPT09IFdlYlNvY2tldC5PUEVOKSB7XG4gICAgICB0aGlzLndlYlNvY2tldC5jbG9zZSgpO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIE9wZW5zIGEgQ0RQIGNvbm5lY3Rpb24gdG8gdGhlIGFwcCdzIFdlYlZpZXcuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFdoaWNoIGFwcCBvbiB3aGljaCBkZXZpY2UuXG4gKiBAcmV0dXJucyBUaGUgb3BlbiBjb25uZWN0aW9uLiBEaXNwb3NlIGl0IHRvIGNsb3NlIHRoZSBzb2NrZXQgYW5kIGRyb3AgdGhlIGFkYiBwb3J0IGZvcndhcmQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjb25uZWN0VG9XZWJWaWV3Q2RwKHBhcmFtczogQ29ubmVjdFRvV2ViVmlld0NkcFBhcmFtcyk6IFByb21pc2U8V2ViVmlld0NkcENvbm5lY3Rpb24+IHtcbiAgY29uc3QgeyBhcHBJZCwgZGV2aWNlSWQgfSA9IHBhcmFtcztcblxuICAvLyBgcGlkb2ZgIGxpc3RzIGV2ZXJ5IG1hdGNoaW5nIHByb2Nlc3M7IHRoZSBhcHAncyBtYWluIG9uZSBpcyBmaXJzdC5cbiAgY29uc3QgcGlkb2ZPdXRwdXQgPSBhd2FpdCBhZGIoZGV2aWNlSWQsIFsnc2hlbGwnLCAncGlkb2YnLCBhcHBJZF0pO1xuICBjb25zdCBwaWQgPSBwaWRvZk91dHB1dC5zcGxpdCgvXFxzKy8sIDEpWzBdID8/ICcnO1xuICBpZiAoIXBpZCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgJHthcHBJZH0gaXMgbm90IHJ1bm5pbmcgb24gJHtkZXZpY2VJZH0sIHNvIGl0cyBXZWJWaWV3IGhhcyBubyBkZWJ1Z2dlciB0byBhdHRhY2ggdG8uYCk7XG4gIH1cblxuICBjb25zdCBwcm9jTmV0VW5peCA9IGF3YWl0IGFkYihkZXZpY2VJZCwgWydzaGVsbCcsICdjYXQnLCAnL3Byb2MvbmV0L3VuaXgnXSk7XG4gIGNvbnN0IHNvY2tldE5hbWUgPSBwYXJzZVdlYlZpZXdEZXZ0b29sc1NvY2tldE5hbWUocHJvY05ldFVuaXgsIHBpZCk7XG5cbiAgY29uc3QgZm9yd2FyZExpc3QgPSBhd2FpdCBhZGIoZGV2aWNlSWQsIFsnZm9yd2FyZCcsICctLWxpc3QnXSk7XG4gIGNvbnN0IGV4aXN0aW5nUG9ydCA9IHBhcnNlRm9yd2FyZGVkUG9ydChmb3J3YXJkTGlzdCwgZGV2aWNlSWQsIHNvY2tldE5hbWUpO1xuICBjb25zdCBwb3J0ID0gZXhpc3RpbmdQb3J0ID8/IGF3YWl0IHBpY2tGcmVlUG9ydCgpO1xuICBpZiAoZXhpc3RpbmdQb3J0ID09PSB1bmRlZmluZWQpIHtcbiAgICBhd2FpdCBhZGIoZGV2aWNlSWQsIFsnZm9yd2FyZCcsIGB0Y3A6JHtTdHJpbmcocG9ydCl9YCwgYGxvY2FsYWJzdHJhY3Q6JHtzb2NrZXROYW1lfWBdKTtcbiAgICBsb2coYFt3ZWJ2aWV3LWNkcF0gRm9yd2FyZGVkIHRjcDoke1N0cmluZyhwb3J0KX0gLT4gbG9jYWxhYnN0cmFjdDoke3NvY2tldE5hbWV9ICgke2FwcElkfSBwaWQgJHtwaWR9KWApO1xuICB9IGVsc2Uge1xuICAgIGxvZyhgW3dlYnZpZXctY2RwXSBSZXVzaW5nIGZvcndhcmQgdGNwOiR7U3RyaW5nKHBvcnQpfSAtPiBsb2NhbGFic3RyYWN0OiR7c29ja2V0TmFtZX0gKCR7YXBwSWR9IHBpZCAke3BpZH0pYCk7XG4gIH1cblxuICB0cnkge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goYGh0dHA6Ly8ke0NEUF9IT1NUfToke1N0cmluZyhwb3J0KX0vanNvbmApO1xuICAgIGNvbnN0IHRhcmdldCA9IHNlbGVjdFdlYlZpZXdQYWdlVGFyZ2V0KGF3YWl0IHJlc3BvbnNlLmpzb24oKSBhcyBDZHBUYXJnZXRbXSk7XG4gICAgY29uc3Qgd2ViU29ja2V0ID0gbmV3IFdlYlNvY2tldCh0YXJnZXQud2ViU29ja2V0RGVidWdnZXJVcmwgPz8gJycpO1xuICAgIGF3YWl0IG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHdlYlNvY2tldC5hZGRFdmVudExpc3RlbmVyKCdvcGVuJywgKCkgPT4ge1xuICAgICAgICByZXNvbHZlKCk7XG4gICAgICB9LCB7IG9uY2U6IHRydWUgfSk7XG4gICAgICB3ZWJTb2NrZXQuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCAoKSA9PiB7XG4gICAgICAgIHJlamVjdChuZXcgRXJyb3IoYENvdWxkIG5vdCBvcGVuIHRoZSBXZWJWaWV3IENEUCBzb2NrZXQgYXQgJHt0YXJnZXQud2ViU29ja2V0RGVidWdnZXJVcmwgPz8gJyd9LmApKTtcbiAgICAgIH0sIHsgb25jZTogdHJ1ZSB9KTtcbiAgICB9KTtcbiAgICBsb2coYFt3ZWJ2aWV3LWNkcF0gQXR0YWNoZWQgdG8gV2ViVmlldyB0YXJnZXQgXCIke3RhcmdldC50aXRsZSA/PyAnJ31cImApO1xuXG4gICAgcmV0dXJuIG5ldyBXZWJWaWV3Q2RwQ29ubmVjdGlvbih3ZWJTb2NrZXQsIGRldmljZUlkLCBwb3J0KTtcbiAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICBhd2FpdCByZW1vdmVGb3J3YXJkKGRldmljZUlkLCBwb3J0KTtcbiAgICB0aHJvdyBlcnJvcjtcbiAgfVxufVxuXG4vKiB2OCBpZ25vcmUgc3RvcCAqL1xuXG4vKipcbiAqIEZpbmRzIGEgcG9ydCBhbHJlYWR5IGZvcndhcmRlZCB0byB0aGlzIGRldmljZSBzb2NrZXQsIHNvIHJlcGVhdGVkIHJ1bnMgcmV1c2Ugb25lIGZvcndhcmQuXG4gKlxuICogV2l0aG91dCB0aGlzIGV2ZXJ5IHJ1biBhbGxvY2F0ZXMgYSBmcmVzaCBwb3J0LCBhbmQgYW55IHJ1biB0aGF0IGV4aXRzIHdpdGhvdXQgdGhlIGFzeW5jXG4gKiB7QGxpbmsgV2ViVmlld0NkcENvbm5lY3Rpb24uZGlzcG9zZX0gXHUyMDE0IGFuIGFicnVwdCB3b3JrZXIgZXhpdCwgd2hlcmUgb25seSB0aGUgc3luY2hyb25vdXMgdGVhcmRvd25cbiAqIHBhdGggcnVucyBcdTIwMTQgbGVhdmVzIGl0cyBmb3J3YXJkIGJlaGluZCBmb3JldmVyLiBSZXVzZSBib3VuZHMgdGhhdCB0byBhIHNpbmdsZSBmb3J3YXJkIHBlciBzb2NrZXRcbiAqIHJhdGhlciB0aGFuIG9uZSBwZXIgcnVuLlxuICpcbiAqIEBwYXJhbSBmb3J3YXJkTGlzdCAtIFRoZSBvdXRwdXQgb2YgYGFkYiBmb3J3YXJkIC0tbGlzdGAuXG4gKiBAcGFyYW0gZGV2aWNlSWQgLSBUaGUgYWRiIGRldmljZSBpZCB0byBtYXRjaC5cbiAqIEBwYXJhbSBzb2NrZXROYW1lIC0gVGhlIGFic3RyYWN0IHNvY2tldCBuYW1lIHRvIG1hdGNoLlxuICogQHJldHVybnMgVGhlIGFscmVhZHktZm9yd2FyZGVkIGxvY2FsIHBvcnQsIG9yIGB1bmRlZmluZWRgIHdoZW4gdGhlcmUgaXMgbm9uZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlRm9yd2FyZGVkUG9ydChmb3J3YXJkTGlzdDogc3RyaW5nLCBkZXZpY2VJZDogc3RyaW5nLCBzb2NrZXROYW1lOiBzdHJpbmcpOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICBmb3IgKGNvbnN0IGxpbmUgb2YgZm9yd2FyZExpc3Quc3BsaXQoJ1xcbicpKSB7XG4gICAgLy8gYGFkYiBmb3J3YXJkIC0tbGlzdGAgcHJpbnRzIGA8ZGV2aWNlSWQ+IHRjcDo8cG9ydD4gbG9jYWxhYnN0cmFjdDo8c29ja2V0TmFtZT5gLlxuICAgIGNvbnN0IFtsaW5lRGV2aWNlSWQsIGxvY2FsLCByZW1vdGVdID0gbGluZS50cmltKCkuc3BsaXQoL1xccysvLCBGT1JXQVJEX0xJU1RfQ09MVU1OX0NPVU5UKTtcbiAgICBpZiAobGluZURldmljZUlkICE9PSBkZXZpY2VJZCB8fCByZW1vdGUgIT09IGBsb2NhbGFic3RyYWN0OiR7c29ja2V0TmFtZX1gIHx8ICFsb2NhbD8uc3RhcnRzV2l0aCgndGNwOicpKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBjb25zdCBwb3J0ID0gTnVtYmVyLnBhcnNlSW50KGxvY2FsLnNsaWNlKCd0Y3A6Jy5sZW5ndGgpLCBERUNJTUFMX1JBRElYKTtcbiAgICBpZiAoTnVtYmVyLmlzU2FmZUludGVnZXIocG9ydCkpIHtcbiAgICAgIHJldHVybiBwb3J0O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogUGlja3MgdGhlIFdlYlZpZXcncyBkZXZ0b29scyBzb2NrZXQgbmFtZSBvdXQgb2YgYC9wcm9jL25ldC91bml4YC5cbiAqXG4gKiBBIGRldmljZSBjYW4gaG9zdCBzZXZlcmFsIGRlYnVnZ2FibGUgV2ViVmlld3MgKG90aGVyIGFwcHMsIGEgbGVmdG92ZXIgcHJvY2VzcyksIHNvIHRoZSBhcHAncyBvd24gcGlkIGlzXG4gKiB3aGF0IGRpc2FtYmlndWF0ZXMgdGhlbS4gV2hlbiBubyBzb2NrZXQgbWF0Y2hlcyB0aGF0IHBpZCB0aGUgc29sZSByZW1haW5pbmcgY2FuZGlkYXRlIGlzIHVzZWQgXHUyMDE0IGFcbiAqIFdlYlZpZXcgd2hvc2Ugc29ja2V0IGlzIG5hbWVkIGFmdGVyIGEgY2hpbGQgcHJvY2VzcyByYXRoZXIgdGhhbiB0aGUgb25lIGBwaWRvZmAgcmVwb3J0ZWQgc3RpbGwgaGFzIHRvIGJlXG4gKiByZWFjaGFibGUgXHUyMDE0IGJ1dCB0d28gdW5hdHRyaWJ1dGFibGUgY2FuZGlkYXRlcyBpcyBhbWJpZ3VvdXMgZW5vdWdoIHRvIHJlZnVzZS5cbiAqXG4gKiBAcGFyYW0gcHJvY05ldFVuaXggLSBUaGUgY29udGVudHMgb2YgYC9wcm9jL25ldC91bml4YC5cbiAqIEBwYXJhbSBwaWQgLSBUaGUgYXBwbGljYXRpb24ncyBwcm9jZXNzIGlkLlxuICogQHJldHVybnMgVGhlIHNvY2tldCBuYW1lLCBlLmcuIGB3ZWJ2aWV3X2RldnRvb2xzX3JlbW90ZV8xODA1NmAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVdlYlZpZXdEZXZ0b29sc1NvY2tldE5hbWUocHJvY05ldFVuaXg6IHN0cmluZywgcGlkOiBzdHJpbmcpOiBzdHJpbmcge1xuICAvLyBUaGUgd2hvbGUgbWF0Y2ggbWludXMgaXRzIGxlYWRpbmcgYEBgLCByYXRoZXIgdGhhbiBhIG5hbWVkIGNhcHR1cmUgZ3JvdXA6IGEgbWFuZGF0b3J5IGdyb3VwIGlzIGFsd2F5c1xuICAvLyBwcmVzZW50IG9uY2UgdGhlIHBhdHRlcm4gaGFzIG1hdGNoZWQsIHNvIGBtYXRjaC5ncm91cHM/LlsnbmFtZSddID8/ICcnYCB3b3VsZCBsZWF2ZSBiZWhpbmQgdHdvIGJyYW5jaGVzXG4gIC8vIG5vIGlucHV0IGNhbiBldmVyIHJlYWNoIFx1MjAxNCBhbmQgdGhpcyBmaWxlIGlzIG1lYXN1cmVkIGFnYWluc3QgYSAxMDAlIGJyYW5jaCBnYXRlLlxuICBjb25zdCBuYW1lcyA9IFtcbiAgICAuLi5uZXcgU2V0KFsuLi5wcm9jTmV0VW5peC5tYXRjaEFsbCgvQHdlYnZpZXdfZGV2dG9vbHNfcmVtb3RlX1xcdysvZyldXG4gICAgICAubWFwKChtYXRjaCkgPT4gbWF0Y2hbMF0uc2xpY2UoJ0AnLmxlbmd0aCkpKVxuICBdO1xuXG4gIC8vIERlc3RydWN0dXJlZCByYXRoZXIgdGhhbiBpbmRleGVkIGZvciB0aGUgc2FtZSByZWFzb246IGBzb2xlTmFtZWAgY2FycmllcyB0aGUgXCJ0aGVyZSBpcyBhdCBsZWFzdCBvbmVcIlxuICAvLyBmYWN0IGluIHRoZSB0eXBlLCBzbyBuZWl0aGVyIHRoZSBlbXB0eSBjaGVjayBiZWxvdyBub3IgdGhlIHNpbmdsZS1jYW5kaWRhdGUgb25lIGxlYXZlcyBhIGRlYWQgYnJhbmNoLlxuICBjb25zdCBbc29sZU5hbWUsIC4uLm90aGVyTmFtZXNdID0gbmFtZXM7XG5cbiAgaWYgKHNvbGVOYW1lID09PSB1bmRlZmluZWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAnTm8gYHdlYnZpZXdfZGV2dG9vbHNfcmVtb3RlXypgIHNvY2tldCBvbiB0aGUgZGV2aWNlLiBPYnNpZGlhbiBNb2JpbGUgaXMgbm90IHJ1bm5pbmcsIG9yIGl0cyBXZWJWaWV3ICdcbiAgICAgICAgKyAnZGVidWdnZXIgaXMgZGlzYWJsZWQuJ1xuICAgICk7XG4gIH1cblxuICBjb25zdCBleGFjdE5hbWUgPSBgd2Vidmlld19kZXZ0b29sc19yZW1vdGVfJHtwaWR9YDtcbiAgaWYgKG5hbWVzLmluY2x1ZGVzKGV4YWN0TmFtZSkpIHtcbiAgICByZXR1cm4gZXhhY3ROYW1lO1xuICB9XG5cbiAgaWYgKG90aGVyTmFtZXMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIHNvbGVOYW1lO1xuICB9XG5cbiAgdGhyb3cgbmV3IEVycm9yKFxuICAgIGBObyBcXGAke2V4YWN0TmFtZX1cXGAgc29ja2V0LCBhbmQgJHtTdHJpbmcobmFtZXMubGVuZ3RoKX0gb3RoZXIgZGVidWdnYWJsZSBXZWJWaWV3cyBhcmUgcHJlc2VudCBgXG4gICAgICArIGAoJHtuYW1lcy5qb2luKCcsICcpfSksIHNvIHRoZSByaWdodCBvbmUgY2Fubm90IGJlIGNob3Nlbi5gXG4gICk7XG59XG5cbi8qKlxuICogUGlja3MgdGhlIE9ic2lkaWFuIHBhZ2UgdGFyZ2V0IG91dCBvZiB0aGUgZGVidWdnZXIncyBgL2pzb25gIGxpc3QuXG4gKlxuICogQHBhcmFtIHRhcmdldHMgLSBUaGUgYC9qc29uYCByZXNwb25zZS5cbiAqIEByZXR1cm5zIFRoZSBwYWdlIHRhcmdldCB0byBhdHRhY2ggdG8uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZWxlY3RXZWJWaWV3UGFnZVRhcmdldCh0YXJnZXRzOiByZWFkb25seSBDZHBUYXJnZXRbXSk6IENkcFRhcmdldCB7XG4gIGNvbnN0IHRhcmdldCA9IHRhcmdldHMuZmluZCgoY2FuZGlkYXRlKSA9PiBjYW5kaWRhdGUudHlwZSA9PT0gJ3BhZ2UnICYmIEJvb2xlYW4oY2FuZGlkYXRlLndlYlNvY2tldERlYnVnZ2VyVXJsKSlcbiAgICA/PyB0YXJnZXRzLmZpbmQoKGNhbmRpZGF0ZSkgPT4gQm9vbGVhbihjYW5kaWRhdGUud2ViU29ja2V0RGVidWdnZXJVcmwpKTtcblxuICBpZiAoIXRhcmdldCkge1xuICAgIHRocm93IG5ldyBFcnJvcignVGhlIFdlYlZpZXcgZGVidWdnZXIgbGlzdGVkIG5vIHRhcmdldCB3aXRoIGEgV2ViU29ja2V0IGVuZHBvaW50LicpO1xuICB9XG5cbiAgcmV0dXJuIHRhcmdldDtcbn1cblxuLyogdjggaWdub3JlIHN0YXJ0IC0tIEludGVncmF0aW9uLXRpbWUgY29kZSAoYWRiIHNoZWxsLW91dHMpLiBDb3ZlcmVkIGJ5IHRoZSBBbmRyb2lkIGludGVncmF0aW9uIHRlc3RzLCBub3QgYnkgdW5pdCB0ZXN0cy4gKi9cblxuLyoqXG4gKiBSdW5zIGFuIGFkYiBjb21tYW5kIGFnYWluc3Qgb25lIGRldmljZS5cbiAqXG4gKiBAcGFyYW0gZGV2aWNlSWQgLSBUaGUgYWRiIGRldmljZSBpZC5cbiAqIEBwYXJhbSBjb21tYW5kQXJndW1lbnRzIC0gVGhlIGFkYiBhcmd1bWVudHMgYWZ0ZXIgYC1zIDxkZXZpY2VJZD5gLlxuICogQHJldHVybnMgVHJpbW1lZCBzdGRvdXQuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGFkYihkZXZpY2VJZDogc3RyaW5nLCBjb21tYW5kQXJndW1lbnRzOiBzdHJpbmdbXSk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IHN0ZG91dCA9IGF3YWl0IGV4ZWMoWydhZGInLCAnLXMnLCBkZXZpY2VJZCwgLi4uY29tbWFuZEFyZ3VtZW50c10sIHtcbiAgICBpc1F1aWV0OiB0cnVlLFxuICAgIHRpbWVvdXRJbk1pbGxpc2Vjb25kczogQURCX1RJTUVPVVRfSU5fTUlMTElTRUNPTkRTXG4gIH0pO1xuXG4gIHJldHVybiBzdGRvdXQudHJpbSgpO1xufVxuXG4vKipcbiAqIERyb3BzIGFuIGFkYiBwb3J0IGZvcndhcmQsIGlnbm9yaW5nIHRoZSBcIm5vdCBmb3VuZFwiIGNhc2UuXG4gKlxuICogQHBhcmFtIGRldmljZUlkIC0gVGhlIGFkYiBkZXZpY2UgaWQuXG4gKiBAcGFyYW0gcG9ydCAtIFRoZSBmb3J3YXJkZWQgbG9jYWwgcG9ydC5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gcmVtb3ZlRm9yd2FyZChkZXZpY2VJZDogc3RyaW5nLCBwb3J0OiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgdHJ5IHtcbiAgICBhd2FpdCBleGVjKFsnYWRiJywgJy1zJywgZGV2aWNlSWQsICdmb3J3YXJkJywgJy0tcmVtb3ZlJywgYHRjcDoke1N0cmluZyhwb3J0KX1gXSwge1xuICAgICAgaXNRdWlldDogdHJ1ZSxcbiAgICAgIHNob3VsZElnbm9yZUV4aXRDb2RlOiB0cnVlLFxuICAgICAgdGltZW91dEluTWlsbGlzZWNvbmRzOiBBREJfVElNRU9VVF9JTl9NSUxMSVNFQ09ORFNcbiAgICB9KTtcbiAgfSBjYXRjaCB7XG4gICAgLy8gQmVzdCBlZmZvcnQ6IHRoZSBmb3J3YXJkIGlzIHBlci1ydW4gYW5kIGFkYiBkcm9wcyBpdCB3aGVuIHRoZSBkZXZpY2UgZGlzY29ubmVjdHMgYW55d2F5LlxuICB9XG59XG5cbi8qIHY4IGlnbm9yZSBzdG9wICovXG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFrQkEsZ0NBQTZCO0FBSTdCLGtCQUFxQjtBQUNyQixpQkFBb0I7QUFDcEIsK0JBQTZCO0FBRTdCLE1BQU0sOEJBQThCO0FBRXBDLE1BQU0sNEJBQTRCO0FBQ2xDLE1BQU0sZ0JBQWdCO0FBT3RCLE1BQU0sc0NBQXNDO0FBQzVDLE1BQU0sV0FBVztBQWdFVixNQUFNLHFCQUFxQjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUEwQ3pCLFlBQTZCLFdBQXVDLFVBQW1DLE1BQWM7QUFBeEY7QUFBdUM7QUFBbUM7QUFDNUcsU0FBSyxVQUFVLGlCQUFpQixXQUFXLENBQUMsVUFBd0I7QUFDbEUsVUFBSTtBQUNKLFVBQUk7QUFDRixr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
|