@dollhousemcp/mcp-server 2.0.27-rc.6 → 2.0.27-rc.8
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/CHANGELOG.md +1 -1
- package/dist/config/env.d.ts +2 -0
- package/dist/config/env.d.ts.map +1 -1
- package/dist/config/env.js +7 -1
- package/dist/generated/version.d.ts +2 -2
- package/dist/generated/version.js +3 -3
- package/dist/web/console/LeaderElection.d.ts +6 -5
- package/dist/web/console/LeaderElection.d.ts.map +1 -1
- package/dist/web/console/LeaderElection.js +24 -21
- package/dist/web/console/UnifiedConsole.d.ts +15 -1
- package/dist/web/console/UnifiedConsole.d.ts.map +1 -1
- package/dist/web/console/UnifiedConsole.js +112 -8
- package/dist/web/server.d.ts +6 -0
- package/dist/web/server.d.ts.map +1 -1
- package/dist/web/server.js +50 -12
- package/package.json +1 -1
- package/server.json +2 -2
package/CHANGELOG.md
CHANGED
package/dist/config/env.d.ts
CHANGED
|
@@ -84,6 +84,7 @@ declare const envSchema: z.ZodObject<{
|
|
|
84
84
|
DOLLHOUSE_CONSOLE_AUTHORITY_RECHECK_JITTER_MS: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
|
|
85
85
|
DOLLHOUSE_CONSOLE_AUTHORITY_RECHECK_FAILURE_THRESHOLD: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
|
|
86
86
|
DOLLHOUSE_CONSOLE_AUTHORITY_RECHECK_FAILURE_COOLDOWN_MS: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
|
|
87
|
+
DOLLHOUSE_CONSOLE_LEADER_DISCOVERY_TIMEOUT_MS: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
|
|
87
88
|
DOLLHOUSE_CONSOLE_ROTATION_REQUIRE_CONFIRMATION: z.ZodDefault<z.ZodCoercedBoolean<unknown>>;
|
|
88
89
|
DOLLHOUSE_GATEKEEPER_ENABLED: z.ZodDefault<z.ZodCoercedBoolean<unknown>>;
|
|
89
90
|
DOLLHOUSE_GATEKEEPER_ELEMENT_POLICY_OVERRIDES: z.ZodDefault<z.ZodCoercedBoolean<unknown>>;
|
|
@@ -149,6 +150,7 @@ export declare const env: {
|
|
|
149
150
|
DOLLHOUSE_CONSOLE_AUTHORITY_RECHECK_JITTER_MS: number;
|
|
150
151
|
DOLLHOUSE_CONSOLE_AUTHORITY_RECHECK_FAILURE_THRESHOLD: number;
|
|
151
152
|
DOLLHOUSE_CONSOLE_AUTHORITY_RECHECK_FAILURE_COOLDOWN_MS: number;
|
|
153
|
+
DOLLHOUSE_CONSOLE_LEADER_DISCOVERY_TIMEOUT_MS: number;
|
|
152
154
|
DOLLHOUSE_CONSOLE_ROTATION_REQUIRE_CONFIRMATION: boolean;
|
|
153
155
|
DOLLHOUSE_GATEKEEPER_ENABLED: boolean;
|
|
154
156
|
DOLLHOUSE_GATEKEEPER_ELEMENT_POLICY_OVERRIDES: boolean;
|
package/dist/config/env.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/config/env.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAuBxB;;GAEG;AACH,QAAA,MAAM,SAAS
|
|
1
|
+
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/config/env.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAuBxB;;GAEG;AACH,QAAA,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA0Sb,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAA+B,CAAC;AAEhD;;GAEG;AACH,MAAM,MAAM,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,SAAS,CAAC,CAAC;AAE5C;;GAEG;AACH,eAAO,MAAM,MAAM,SAA0B,CAAC;AAC9C,eAAO,MAAM,aAAa,SAAiC,CAAC;AAC5D,eAAO,MAAM,YAAY,SAAgC,CAAC"}
|
package/dist/config/env.js
CHANGED
|
@@ -220,6 +220,12 @@ const envSchema = z.object({
|
|
|
220
220
|
* Default: 60000ms.
|
|
221
221
|
*/
|
|
222
222
|
DOLLHOUSE_CONSOLE_AUTHORITY_RECHECK_FAILURE_COOLDOWN_MS: z.coerce.number().int().min(1_000).max(900_000).default(60_000),
|
|
223
|
+
/**
|
|
224
|
+
* Timeout for leader-discovery HTTP probes against /api/sessions before the
|
|
225
|
+
* caller falls back to lock-file or synthetic-owner heuristics.
|
|
226
|
+
* Default: 2000ms.
|
|
227
|
+
*/
|
|
228
|
+
DOLLHOUSE_CONSOLE_LEADER_DISCOVERY_TIMEOUT_MS: z.coerce.number().int().min(250).max(30_000).default(2_000),
|
|
223
229
|
/**
|
|
224
230
|
* Issue #1780: Phase 2 — require a confirmation code (OS dialog or TOTP)
|
|
225
231
|
* for privileged actions like token rotation. Default is true for safety;
|
|
@@ -318,4 +324,4 @@ if (isDevelopment || isTest) {
|
|
|
318
324
|
HAS_GITHUB_TEST_TOKEN: !!env.GITHUB_TEST_TOKEN,
|
|
319
325
|
});
|
|
320
326
|
}
|
|
321
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbmZpZy9lbnYudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7OztHQVlHO0FBRUgsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEtBQUssQ0FBQztBQUN4QixPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFDNUIsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRTVDLGdGQUFnRjtBQUNoRiw2REFBNkQ7QUFDN0QsRUFBRTtBQUNGLDJEQUEyRDtBQUMzRCxzRUFBc0U7QUFDdEUsb0ZBQW9GO0FBQ3BGLGdGQUFnRjtBQUNoRiwyRUFBMkU7QUFDM0UsaUZBQWlGO0FBQ2pGLE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQztPQUM3QyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsZUFBZSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUM7QUFDL0QsTUFBTSxtQkFBbUIsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3RFLE1BQU0sbUJBQW1CLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN0RSxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBUSxDQUFDO0FBQ3ZHLElBQUksV0FBVztJQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFRLENBQUM7QUFDNUQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLFlBQVksRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDaEQsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsbUJBQW1CLENBQUM7QUFDM0MsSUFBSSxXQUFXO0lBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsbUJBQW1CLENBQUM7QUFFNUQ7O0dBRUc7QUFDSCxNQUFNLFNBQVMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQ3pCLCtFQUErRTtJQUMvRSxjQUFjO0lBQ2QsK0VBQStFO0lBQy9FLFFBQVEsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsYUFBYSxFQUFFLE1BQU0sRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUM7SUFFOUUsK0VBQStFO0lBQy9FLGdDQUFnQztJQUNoQywrRUFBK0U7SUFDL0UsNERBQTREO0lBQzVELHNFQUFzRTtJQUN0RSxZQUFZLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUNuQyxlQUFlLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUN0QyxpQkFBaUIsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBRXhDLCtFQUErRTtJQUMvRSw4Q0FBOEM7SUFDOUMsK0VBQStFO0lBQy9FLCtEQUErRDtJQUMvRCx5REFBeUQ7SUFDekQsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUN4QyxvQkFBb0IsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQzNDLHNCQUFzQixFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFFN0MsK0VBQStFO0lBQy9FLHVCQUF1QjtJQUN2QiwrRUFBK0U7SUFDL0UsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztJQUNyQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztJQUVyRSwrRUFBK0U7SUFDL0UscUJBQXFCO0lBQ3JCLCtFQUErRTtJQUMvRSxhQUFhLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUNwQyxpQkFBaUIsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQ3hDLGNBQWMsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQ3JDLGVBQWUsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBRXRDLCtFQUErRTtJQUMvRSxnQkFBZ0I7SUFDaEIsK0VBQStFO0lBQy9FLG1DQUFtQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztJQUN0RSxZQUFZLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO0lBQy9DLG9CQUFvQixFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztJQUV2RCwrRUFBK0U7SUFDL0UsMkNBQTJDO0lBQzNDLCtFQUErRTtJQUMvRTs7Ozs7O09BTUc7SUFDSCxrQkFBa0IsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQztJQUVwRTs7OztPQUlHO0lBQ0gscUJBQXFCLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUM7SUFFbkUsd0ZBQXdGO0lBQ3hGLFlBQVksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFO0lBRXBELCtFQUErRTtJQUMvRSx5REFBeUQ7SUFDekQsK0VBQStFO0lBQy9FLGlCQUFpQixFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxPQUFPLENBQUMsb0JBQW9CLENBQUM7SUFDM0Qsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7SUFDL0QsNEJBQTRCLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO0lBQzNELHFDQUFxQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUNuRSwrQkFBK0IsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7SUFDaEUsb0ZBQW9GO0lBQ3BGLHdGQUF3RjtJQUN4Rix5QkFBeUIsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7SUFDMUQsNkJBQTZCLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO0lBQzlELGlDQUFpQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztJQUNuRSxzQ0FBc0MsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7SUFDdkUsa0NBQWtDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO0lBQ25FLHVDQUF1QyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztJQUN4RSw0QkFBNEIsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7SUFDOUQsa0NBQWtDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO0lBQ2pFLDJCQUEyQixFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQztJQUNqRSxnQ0FBZ0MsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDOUQsb0NBQW9DLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDO0lBRXBFLCtFQUErRTtJQUMvRSxrQ0FBa0M7SUFDbEMsK0VBQStFO0lBQy9FOzs7Ozs7T0FNRztJQUNILDJCQUEyQixFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztJQUU3RCw0QkFBNEI7SUFDNUIsK0VBQStFO0lBQy9FLDJEQUEyRDtJQUMzRCxxQkFBcUIsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7SUFFdkQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQXFCRztJQUNILDBCQUEwQixFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO0lBRXZGOzs7Ozs7OztPQVFHO0lBQ0gsMEJBQTBCLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO0lBRTdEOzs7OztPQUtHO0lBQ0gsNEJBQTRCLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUVuRDs7Ozs7O09BTUc7SUFDSCxrQ0FBa0MsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBRXpELG1DQUFtQztJQUNuQywrRUFBK0U7SUFFL0U7Ozs7T0FJRztJQUNILG1DQUFtQyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUU7U0FDNUMsUUFBUSxFQUFFO1NBQ1YsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFFbEc7Ozs7O09BS0c7SUFDSCxzQ0FBc0MsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztJQUUzRjs7OztPQUlHO0lBQ0gsc0NBQXNDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7SUFFdkc7Ozs7T0FJRztJQUNILDZDQUE2QyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO0lBRXhHOzs7O09BSUc7SUFDSCxxREFBcUQsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUV6Rzs7OztPQUlHO0lBQ0gsdURBQXVELEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7SUFFeEg7Ozs7O09BS0c7SUFDSCwrQ0FBK0MsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7SUFFakYsK0VBQStFO0lBQy9FLHlCQUF5QjtJQUN6QiwrRUFBK0U7SUFDL0U7Ozs7O09BS0c7SUFDSCw0QkFBNEIsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7SUFDOUQ7Ozs7Ozs7T0FPRztJQUNILDZDQUE2QyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztJQUMvRTs7Ozs7O09BTUc7SUFDSCwrQkFBK0IsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7SUFFakUsK0VBQStFO0lBQy9FLDhCQUE4QjtJQUM5QiwrRUFBK0U7SUFDL0UsMEJBQTBCLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO0lBQzNELDJCQUEyQixFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztJQUM1RCw4QkFBOEIsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUM7SUFDbEUsMkJBQTJCLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDO0lBQy9ELDJCQUEyQixFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztJQUM3RCxnQ0FBZ0MsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUM7SUFFaEUsK0VBQStFO0lBQy9FLCtDQUErQztJQUMvQywrRUFBK0U7SUFFL0UscUVBQXFFO0lBQ3JFLDBCQUEwQixFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztJQUV6RCwyRUFBMkU7SUFDM0UsNkJBQTZCLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDO0lBRWpFLDJFQUEyRTtJQUMzRSxzQ0FBc0MsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUM7SUFFdEUsOEVBQThFO0lBQzlFLGlDQUFpQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztJQUVoRSw2RkFBNkY7SUFDN0YsbUNBQW1DLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO0lBRXRFLCtFQUErRTtJQUMvRSxtQ0FBbUM7SUFDbkMsK0VBQStFO0lBQy9FLHlCQUF5QixFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztJQUMzRCx3Q0FBd0MsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztJQUNoRyxtQ0FBbUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7SUFDdEUsNkNBQTZDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7SUFDNUYsNkNBQTZDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7SUFDbEcsMENBQTBDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUM7SUFFN0YsZ0VBQWdFO0lBQ2hFLDRCQUE0QixFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztJQUMvRCwyQkFBMkIsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQ2xELHlCQUF5QixFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFFaEQsMENBQTBDO0lBQzFDLHNGQUFzRjtJQUN0RixpRUFBaUU7SUFDakUsOERBQThEO0lBQzlELHNCQUFzQixFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFO0NBQ3RELENBQUMsQ0FBQztBQUVIOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLEdBQUcsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQU9oRDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsUUFBUSxLQUFLLE1BQU0sQ0FBQztBQUM5QyxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsR0FBRyxDQUFDLFFBQVEsS0FBSyxhQUFhLENBQUM7QUFDNUQsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLEdBQUcsQ0FBQyxRQUFRLEtBQUssWUFBWSxDQUFDO0FBRTFEOztHQUVHO0FBQ0gsSUFBSSxhQUFhLElBQUksTUFBTSxFQUFFLENBQUM7SUFDNUIsTUFBTSxDQUFDLEtBQUssQ0FBQyxtQ0FBbUMsRUFBRTtRQUNoRCxRQUFRLEVBQUUsR0FBRyxDQUFDLFFBQVE7UUFDdEIsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJO1FBQ2QsU0FBUyxFQUFFLEdBQUcsQ0FBQyxTQUFTO1FBQ3hCLGdCQUFnQixFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsWUFBWTtRQUNwQyxxQkFBcUIsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLGlCQUFpQjtLQUMvQyxDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDZW50cmFsaXplZCBFbnZpcm9ubWVudCBDb25maWd1cmF0aW9uXG4gKlxuICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgdHlwZS1zYWZlIGFjY2VzcyB0byBlbnZpcm9ubWVudCB2YXJpYWJsZXMgd2l0aCB2YWxpZGF0aW9uLlxuICogQWxsIGVudmlyb25tZW50IHZhcmlhYmxlcyBzaG91bGQgYmUgYWNjZXNzZWQgdGhyb3VnaCB0aGlzIG1vZHVsZSByYXRoZXIgdGhhblxuICogZGlyZWN0bHkgdmlhIHByb2Nlc3MuZW52IHRvIGVuc3VyZSB0eXBlIHNhZmV0eSBhbmQgdmFsaWRhdGlvbi5cbiAqXG4gKiBVc2FnZTpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGltcG9ydCB7IGVudiB9IGZyb20gJy4vY29uZmlnL2Vudic7XG4gKiBjb25zdCB0b2tlbiA9IGVudi5HSVRIVUJfVE9LRU47ICAvLyBUeXBlOiBzdHJpbmdcbiAqIGBgYFxuICovXG5cbmltcG9ydCB7IHogfSBmcm9tICd6b2QnO1xuaW1wb3J0IGRvdGVudiBmcm9tICdkb3RlbnYnO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnLi4vdXRpbHMvbG9nZ2VyLmpzJztcblxuLy8gTG9hZCAuZW52IGZpbGVzIHdpdGggcHJpb3JpdHk6IC5lbnYubG9jYWwgKHBlcnNvbmFsKSA+IC5lbnYgKHNoYXJlZCBkZWZhdWx0cylcbi8vIEJvdGggZmlsZXMgYXJlIG9wdGlvbmFsIC0gbm8gZXJyb3IgaWYgZWl0aGVyIGRvZXNuJ3QgZXhpc3Rcbi8vXG4vLyBNQ1AgUHJvdG9jb2wgQ29tcGxpYW5jZTogU3VwcHJlc3MgZG90ZW52J3Mgc3Rkb3V0IG91dHB1dFxuLy8gVGhlIE1DUCBwcm90b2NvbCByZXF1aXJlcyB0aGF0IE9OTFkgSlNPTi1SUEMgbWVzc2FnZXMgZ28gdG8gc3Rkb3V0LlxuLy8gZG90ZW52IG1heSBvdXRwdXQgdmVyc2lvbiBpbmZvIHRvIHN0ZG91dCwgd2hpY2ggYnJlYWtzIENsYXVkZSBEZXNrdG9wIGNvbm5lY3Rpb24uXG4vLyBTb2x1dGlvbjogVGVtcG9yYXJpbHkgcmVkaXJlY3Qgc3Rkb3V0IHRvIHN0ZGVyciBkdXJpbmcgZG90ZW52IGluaXRpYWxpemF0aW9uLlxuLy8gSW4gLS13ZWIgbW9kZSwgc3VwcHJlc3MgYm90aCBzdGRvdXQgQU5EIHN0ZGVyciDigJQgdGhlIHVzZXIgb25seSBuZWVkcyB0aGVcbi8vIGNvbnNvbGUgVVJMIGJhbm5lciwgbm90IGRvdGVudidzIGluamVjdGlvbiBzdW1tYXJ5LiBMb2dzIGdvIHRvIHRoZSB3ZWIgdmlld2VyLlxuY29uc3QgaXNXZWJTaWxlbnQgPSBwcm9jZXNzLmFyZ3YuaW5jbHVkZXMoJy0td2ViJylcbiAgJiYgIXByb2Nlc3MuZW52LkRPTExIT1VTRV9ERUJVRyAmJiAhcHJvY2Vzcy5lbnYuRU5BQkxFX0RFQlVHO1xuY29uc3Qgb3JpZ2luYWxTdGRvdXRXcml0ZSA9IHByb2Nlc3Muc3Rkb3V0LndyaXRlLmJpbmQocHJvY2Vzcy5zdGRvdXQpO1xuY29uc3Qgb3JpZ2luYWxTdGRlcnJXcml0ZSA9IHByb2Nlc3Muc3RkZXJyLndyaXRlLmJpbmQocHJvY2Vzcy5zdGRlcnIpO1xucHJvY2Vzcy5zdGRvdXQud3JpdGUgPSAoaXNXZWJTaWxlbnQgPyAoKCkgPT4gdHJ1ZSkgOiBwcm9jZXNzLnN0ZGVyci53cml0ZS5iaW5kKHByb2Nlc3Muc3RkZXJyKSkgYXMgYW55O1xuaWYgKGlzV2ViU2lsZW50KSBwcm9jZXNzLnN0ZGVyci53cml0ZSA9ICgoKSA9PiB0cnVlKSBhcyBhbnk7XG5kb3RlbnYuY29uZmlnKHsgcGF0aDogWycuZW52LmxvY2FsJywgJy5lbnYnXSB9KTtcbnByb2Nlc3Muc3Rkb3V0LndyaXRlID0gb3JpZ2luYWxTdGRvdXRXcml0ZTtcbmlmIChpc1dlYlNpbGVudCkgcHJvY2Vzcy5zdGRlcnIud3JpdGUgPSBvcmlnaW5hbFN0ZGVycldyaXRlO1xuXG4vKipcbiAqIEVudmlyb25tZW50IHZhcmlhYmxlIHNjaGVtYSB3aXRoIHZhbGlkYXRpb25cbiAqL1xuY29uc3QgZW52U2NoZW1hID0gei5vYmplY3Qoe1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIEVudmlyb25tZW50XG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgTk9ERV9FTlY6IHouZW51bShbJ2RldmVsb3BtZW50JywgJ3Rlc3QnLCAncHJvZHVjdGlvbiddKS5kZWZhdWx0KCdkZXZlbG9wbWVudCcpLFxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gUHJvZHVjdGlvbiBHaXRIdWIgQ3JlZGVudGlhbHNcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBVc2VkIGJ5IHByb2R1Y3Rpb24gY29kZSAoc3JjLykgZm9yIHJlYWwgR2l0SHViIG9wZXJhdGlvbnNcbiAgLy8gT3B0aW9uYWw6IEZlYXR1cmVzIHJlcXVpcmluZyBHaXRIdWIgd2lsbCBmYWlsIGdyYWNlZnVsbHkgaWYgbm90IHNldFxuICBHSVRIVUJfVE9LRU46IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgR0lUSFVCX1VTRVJOQU1FOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIEdJVEhVQl9SRVBPU0lUT1JZOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBUZXN0IEdpdEh1YiBDcmVkZW50aWFscyAoU0VQQVJBVEUgYWNjb3VudCEpXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gVXNlZCBieSB0ZXN0IGNvZGUgKHRlc3RzLykgLSB0ZXN0cyB3aWxsIHNraXAgaWYgbm90IHByb3ZpZGVkXG4gIC8vIElNUE9SVEFOVDogVXNlIGEgZGlmZmVyZW50IEdpdEh1YiBhY2NvdW50IGZvciB0ZXN0aW5nIVxuICBHSVRIVUJfVEVTVF9UT0tFTjogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBHSVRIVUJfVEVTVF9VU0VSTkFNRTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBHSVRIVUJfVEVTVF9SRVBPU0lUT1JZOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBTZXJ2ZXIgQ29uZmlndXJhdGlvblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIFBPUlQ6IHouY29lcmNlLm51bWJlcigpLmRlZmF1bHQoMzAwMCksXG4gIExPR19MRVZFTDogei5lbnVtKFsnZXJyb3InLCAnd2FybicsICdpbmZvJywgJ2RlYnVnJ10pLmRlZmF1bHQoJ2luZm8nKSxcblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIFRlc3QgQ29uZmlndXJhdGlvblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIFRFU1RfQkFTRV9ESVI6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgVEVTVF9QRVJTT05BU19ESVI6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgVEVTVF9DQUNIRV9ESVI6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgVEVTVF9DT05GSUdfRElSOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBGZWF0dXJlIEZsYWdzXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgRE9MTEhPVVNFX0FVVE9fU1VCTUlUX1RPX0NPTExFQ1RJT046IHouY29lcmNlLmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgRU5BQkxFX0RFQlVHOiB6LmNvZXJjZS5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gIFRFU1RfVkVSQk9TRV9MT0dHSU5HOiB6LmNvZXJjZS5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBNQ1AgSW50ZXJmYWNlIENvbmZpZ3VyYXRpb24gKElzc3VlICMyMzcpXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLyoqXG4gICAqIE1DUCBpbnRlcmZhY2UgbW9kZSAtIGNvbnRyb2xzIHdoaWNoIHRvb2wgaW50ZXJmYWNlIGlzIGV4cG9zZWQgdG8gTExNczpcbiAgICogLSAnZGlzY3JldGUnOiB+NDAgaW5kaXZpZHVhbCB0b29scyAobGlzdF9lbGVtZW50cywgY3JlYXRlX2VsZW1lbnQsIGV0Yy4pIC0gfjMsMDAwIHRva2Vuc1xuICAgKiAtICdtY3BhcWwnOiBDb25zb2xpZGF0ZWQgTUNQLUFRTCBpbnRlcmZhY2UgLSB1c2VzIE1DUF9BUUxfRU5EUE9JTlRfTU9ERSBmb3Igc3R5bGVcbiAgICpcbiAgICogRGVmYXVsdDogJ21jcGFxbCcgLSByZWNvbW1lbmRlZCBmb3IgdG9rZW4gZWZmaWNpZW5jeSBhbmQgY2xlYW5lciB0b29sIGRpc2NvdmVyeVxuICAgKi9cbiAgTUNQX0lOVEVSRkFDRV9NT0RFOiB6LmVudW0oWydkaXNjcmV0ZScsICdtY3BhcWwnXSkuZGVmYXVsdCgnbWNwYXFsJyksXG5cbiAgLyoqXG4gICAqIE1DUC1BUUwgZW5kcG9pbnQgbW9kZSAob25seSBhcHBsaWVzIHdoZW4gTUNQX0lOVEVSRkFDRV9NT0RFPSdtY3BhcWwnKTpcbiAgICogLSAnY3J1ZGUnOiA1IENSVURFIHRvb2xzIChDcmVhdGUsIFJlYWQsIFVwZGF0ZSwgRGVsZXRlLCBFeGVjdXRlKSAtIH40LDMwMCB0b2tlbnNcbiAgICogLSAnc2luZ2xlJzogMSB0b29sIChtY3BfYXFsKSAtIH4zNTAgdG9rZW5zLCBpZGVhbCBmb3IgbXVsdGktc2VydmVyIGRlcGxveW1lbnRzXG4gICAqL1xuICBNQ1BfQVFMX0VORFBPSU5UX01PREU6IHouZW51bShbJ2NydWRlJywgJ3NpbmdsZSddKS5kZWZhdWx0KCdjcnVkZScpLFxuXG4gIC8vIEJhY2t3YXJkIGNvbXBhdGliaWxpdHkgYWxpYXMgZm9yIE1DUF9BUUxfTU9ERSAoZGVwcmVjYXRlZCwgdXNlIE1DUF9BUUxfRU5EUE9JTlRfTU9ERSlcbiAgTUNQX0FRTF9NT0RFOiB6LmVudW0oWydjcnVkZScsICdzaW5nbGUnXSkub3B0aW9uYWwoKSxcblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIFVuaWZpZWQgTG9nZ2luZyBDb25maWd1cmF0aW9uIChkb2NzL0xPR0dJTkctREVTSUdOLm1kKVxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIERPTExIT1VTRV9MT0dfRElSOiB6LnN0cmluZygpLmRlZmF1bHQoJ34vLmRvbGxob3VzZS9sb2dzLycpLFxuICBET0xMSE9VU0VfTE9HX0ZPUk1BVDogei5lbnVtKFsndGV4dCcsICdqc29ubCddKS5kZWZhdWx0KCd0ZXh0JyksXG4gIERPTExIT1VTRV9MT0dfUkVURU5USU9OX0RBWVM6IHouY29lcmNlLm51bWJlcigpLmRlZmF1bHQoMzApLFxuICBET0xMSE9VU0VfTE9HX1NFQ1VSSVRZX1JFVEVOVElPTl9EQVlTOiB6LmNvZXJjZS5udW1iZXIoKS5kZWZhdWx0KDcpLFxuICBET0xMSE9VU0VfTE9HX0ZMVVNIX0lOVEVSVkFMX01TOiB6LmNvZXJjZS5udW1iZXIoKS5kZWZhdWx0KDUwMDApLFxuICAvLyBCdWZmZXIgcmFpc2VkIHRvIDIwMDAgdG8gc3VwcG9ydCB0aGUgd2ViIGNvbnNvbGUgbG9nIHZpZXdlciDigJQgdGhlIGhpZ2hlciBjYXBhY2l0eVxuICAvLyByZWR1Y2VzIGZsdXNoIGZyZXF1ZW5jeSBhbmQga2VlcHMgbW9yZSBlbnRyaWVzIGF2YWlsYWJsZSBmb3IgU1NFIGJhY2tmaWxsIG9uIGNvbm5lY3QuXG4gIERPTExIT1VTRV9MT0dfQlVGRkVSX1NJWkU6IHouY29lcmNlLm51bWJlcigpLmRlZmF1bHQoMjAwMCksXG4gIERPTExIT1VTRV9MT0dfTUVNT1JZX0NBUEFDSVRZOiB6LmNvZXJjZS5udW1iZXIoKS5kZWZhdWx0KDUwMDApLFxuICBET0xMSE9VU0VfTE9HX01FTU9SWV9BUFBfQ0FQQUNJVFk6IHouY29lcmNlLm51bWJlcigpLmRlZmF1bHQoMTAwMDApLFxuICBET0xMSE9VU0VfTE9HX01FTU9SWV9TRUNVUklUWV9DQVBBQ0lUWTogei5jb2VyY2UubnVtYmVyKCkuZGVmYXVsdCg1MDAwKSxcbiAgRE9MTEhPVVNFX0xPR19NRU1PUllfUEVSRl9DQVBBQ0lUWTogei5jb2VyY2UubnVtYmVyKCkuZGVmYXVsdCgyMDAwKSxcbiAgRE9MTEhPVVNFX0xPR19NRU1PUllfVEVMRU1FVFJZX0NBUEFDSVRZOiB6LmNvZXJjZS5udW1iZXIoKS5kZWZhdWx0KDEwMDApLFxuICBET0xMSE9VU0VfTE9HX01BWF9FTlRSWV9TSVpFOiB6LmNvZXJjZS5udW1iZXIoKS5kZWZhdWx0KDE2Mzg0KSxcbiAgRE9MTEhPVVNFX0xPR19JTU1FRElBVEVfRkxVU0hfUkFURTogei5jb2VyY2UubnVtYmVyKCkuZGVmYXVsdCg1MCksXG4gIERPTExIT1VTRV9MT0dfRklMRV9NQVhfU0laRTogei5jb2VyY2UubnVtYmVyKCkuZGVmYXVsdCgxMDQ4NTc2MDApLFxuICBET0xMSE9VU0VfTE9HX01BWF9ESVJfU0laRV9CWVRFUzogei5jb2VyY2UubnVtYmVyKCkuZGVmYXVsdCgwKSxcbiAgRE9MTEhPVVNFX0xPR19NQVhfRklMRVNfUEVSX0NBVEVHT1JZOiB6LmNvZXJjZS5udW1iZXIoKS5kZWZhdWx0KDEwMCksXG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBQZXJtaXNzaW9uIFNlcnZlciBDb25maWd1cmF0aW9uXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLyoqXG4gICAqIEVuYWJsZSB0aGUgSFRUUCBwZXJtaXNzaW9uIGV2YWx1YXRpb24gc2VydmVyIGZvciBQcmVUb29sVXNlIGhvb2tzLlxuICAgKiBXaGVuIHRydWUsIHN0YXJ0cyBhbiBIVFRQIGVuZHBvaW50IG9uIGEgZHluYW1pYyBwb3J0IGFmdGVyIGRlZmVycmVkXG4gICAqIHNldHVwIGNvbXBsZXRlcy4gV3JpdGVzIHBvcnQgdG8gfi8uZG9sbGhvdXNlL3J1bi9wZXJtaXNzaW9uLXNlcnZlci5wb3J0XG4gICAqIGZvciBob29rIHNjcmlwdCBkaXNjb3ZlcnkuIFJlcXVpcmVkIGZvciBhdXRvbm9tb3VzIGFnZW50IHBlcm1pc3Npb25cbiAgICogbWFuYWdlbWVudCB2aWEgQ2xhdWRlIENvZGUgaG9va3MuXG4gICAqL1xuICBET0xMSE9VU0VfUEVSTUlTU0lPTl9TRVJWRVI6IHouY29lcmNlLmJvb2xlYW4oKS5kZWZhdWx0KHRydWUpLFxuXG4gIC8vIFdlYiBDb25zb2xlIENvbmZpZ3VyYXRpb25cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvKiogRW5hYmxlIHRoZSB1bmlmaWVkIHdlYiBjb25zb2xlIChsb2dzICsgbWV0cmljcyB0YWJzKSAqL1xuICBET0xMSE9VU0VfV0VCX0NPTlNPTEU6IHouY29lcmNlLmJvb2xlYW4oKS5kZWZhdWx0KHRydWUpLFxuXG4gIC8qKlxuICAgKiBQb3J0IHRoZSB3ZWIgY29uc29sZSBsZWFkZXIgYmluZHMgdG8gKCMxNzk0LCAjMTc5OCkuXG4gICAqXG4gICAqIERlZmF1bHQ6IDQxNzE1IOKAlCBcIkFJTElTXCIgb24gYSBwaG9uZSBrZXlwYWQsIGFmdGVyIHRoZSBBSSBMYXllclxuICAgKiBJbnRlcmZhY2UgU3BlY2lmaWNhdGlvbiB0aGF0IERvbGxob3VzZU1DUCBpbXBsZW1lbnRzLiBBbHNvIFwiQWxpY2VcIlxuICAgKiBpbiBHYWVsaWMuXG4gICAqXG4gICAqIFBvcnQgc2VsZWN0aW9uIGNyaXRlcmlhICh2ZXJpZmllZCAyMDI2LTA0LTA2KTpcbiAgICogICAtIE5vdCByZWdpc3RlcmVkIHdpdGggSUFOQSAobm8gZW50cnkgaW4gdGhlIHNlcnZpY2UgbmFtZSByZWdpc3RyeSlcbiAgICogICAtIE5vdCBpbiBubWFwIHNlcnZpY2VzIGRhdGFiYXNlIChuZXZlciBvYnNlcnZlZCBpbiB0aGUgd2lsZClcbiAgICogICAtIE5vIGtub3duIGFwcGxpY2F0aW9uLCBzZWN1cml0eSB0b29sLCBvciBtYWx3YXJlIGFzc29jaWF0aW9uc1xuICAgKiAgIC0gQmVsb3cgdGhlIG1hY09TIGVwaGVtZXJhbCByYW5nZSAoNDkxNTItNjU1MzUpLCBzbyBgYmluZCgpYFxuICAgKiAgICAgZG9lcyBub3QgcmFjZSB3aXRoIGtlcm5lbC1hbGxvY2F0ZWQgc291cmNlIHBvcnRzXG4gICAqICAgLSBJbiB0aGUgSUFOQSB1c2VyIHBvcnQgcmFuZ2UgKDEwMjQtNDkxNTEpXG4gICAqICAgLSBOb3QgYWRqYWNlbnQgdG8gdGhlIHByZS1hdXRoZW50aWNhdGlvbiBkZWZhdWx0ICgzOTM5KVxuICAgKlxuICAgKiBQcmV2aW91cyBkZWZhdWx0IHdhcyA1OTA3IChcIkxPR1NcIiB1cHNpZGUgZG93biBvbiBhIGNhbGN1bGF0b3IpLFxuICAgKiB3aGljaCBjb25mbGljdGVkIHdpdGggU3RlbGxhciBDeWJlcidzIEhUVFAgR0tFIGxvZyBwYXJzZXIuXG4gICAqXG4gICAqIE92ZXJyaWRlIHZpYSBlbnYgdmFyIGlmIDQxNzE1IGNvbGxpZGVzIHdpdGggc29tZXRoaW5nIGluIHlvdXJcbiAgICogZW52aXJvbm1lbnQg4oCUIGV2ZXJ5IHJ1bnRpbWUgcmVmZXJlbmNlIHJlYWRzIGZyb20gdGhpcyBzaW5nbGUgdmFsdWUuXG4gICAqL1xuICBET0xMSE9VU0VfV0VCX0NPTlNPTEVfUE9SVDogei5jb2VyY2UubnVtYmVyKCkuaW50KCkubWluKDEwMjQpLm1heCg2NTUzNSkuZGVmYXVsdCg0MTcxNSksXG5cbiAgLyoqXG4gICAqIElzc3VlICMxNzgwOiBFbmZvcmNlIEJlYXJlciB0b2tlbiBhdXRoZW50aWNhdGlvbiBvbiB0aGUgd2ViIGNvbnNvbGUgQVBJLlxuICAgKiBXaGVuIHRydWUsIGFsbCBwcm90ZWN0ZWQgZW5kcG9pbnRzIHJlcXVpcmUgYSB2YWxpZCB0b2tlbiBmcm9tIHRoZVxuICAgKiBjb25zb2xlIHRva2VuIGZpbGUuIFdoZW4gZmFsc2UgKHRoZSBwcmUtUGhhc2UtMiBkZWZhdWx0KSwgdGhlIHRva2VuXG4gICAqIGZpbGUgaXMgc3RpbGwgZ2VuZXJhdGVkIGJ1dCB0aGUgbWlkZGxld2FyZSBkb2VzIG5vdCBlbmZvcmNlIOKAlCB0aGlzXG4gICAqIGxldHMgdGhlIGluZnJhc3RydWN0dXJlIGxhbmQgd2l0aG91dCBicmVha2luZyBleGlzdGluZyBjb25zdW1lcnMuXG4gICAqIFdpbGwgZmxpcCB0byBkZWZhdWx0IGB0cnVlYCBpbiBhIGZvbGxvdy11cCBQUiBvbmNlIGFsbCBjb25zdW1lcnNcbiAgICogKGJyb3dzZXIsIGZvbGxvd2VycywgYnJpZGdlKSBoYXZlIGJlZW4gdXBkYXRlZCB0byBhdHRhY2ggdG9rZW5zLlxuICAgKi9cbiAgRE9MTEhPVVNFX1dFQl9BVVRIX0VOQUJMRUQ6IHouY29lcmNlLmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcblxuICAvKipcbiAgICogSXNzdWUgIzE3ODA6IE9wdGlvbmFsIG92ZXJyaWRlIGZvciB0aGUgY29uc29sZSB0b2tlbiBmaWxlIGxvY2F0aW9uLlxuICAgKiBXaGVuIHVuc2V0LCBgQ29uc29sZVRva2VuU3RvcmVgIGZhbGxzIGJhY2sgdG8gaXRzIGJ1aWx0LWluIGRlZmF1bHRcbiAgICogdW5kZXIgYH4vLmRvbGxob3VzZS9ydW4vYC4gTWFpbmx5IHVzZWZ1bCBmb3IgdGVzdHMgYW5kIGZvciBlbnRlcnByaXNlXG4gICAqIGRlcGxveW1lbnRzIHRoYXQgbW91bnQgYSBzaGFyZWQgdG9rZW4gZmlsZSBmcm9tIGEgc2VjcmV0cyB2b2x1bWUuXG4gICAqL1xuICBET0xMSE9VU0VfQ09OU09MRV9UT0tFTl9GSUxFOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIG92ZXJyaWRlIGZvciB0aGUgY29uc29sZSBsZWFkZXIgbG9jayBmaWxlIGxvY2F0aW9uICgjMTc5NCkuXG4gICAqIFdoZW4gdW5zZXQsIGBMZWFkZXJFbGVjdGlvbmAgZmFsbHMgYmFjayB0byBpdHMgYnVpbHQtaW4gZGVmYXVsdCB1bmRlclxuICAgKiBgfi8uZG9sbGhvdXNlL3J1bi9gLiBQcmltYXJpbHkgdXNlZnVsIGZvciB0ZXN0cyB0aGF0IG5lZWQgaXNvbGF0aW9uXG4gICAqIGJldHdlZW4gcnVucyBhbmQgZm9yIGRlcGxveW1lbnRzIHRoYXQgc3BsaXQgcnVudGltZSBzdGF0ZSBhY3Jvc3NcbiAgICogbXVsdGlwbGUgaW5zdGFsbGF0aW9ucyBvbiB0aGUgc2FtZSBtYWNoaW5lLlxuICAgKi9cbiAgRE9MTEhPVVNFX0NPTlNPTEVfTEVBREVSX0xPQ0tfRklMRTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuXG4gIC8vIExlYWRlci9Gb2xsb3dlciBSZWNvdmVyeSAoIzE4NTApXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvKipcbiAgICogSXNzdWUgIzE4NTA6IFJldHJ5IGRlbGF5cyAoaW4gbXMpIHdoZW4gdGhlIGxlYWRlciBmYWlscyB0byBiaW5kIHRoZSBjb25zb2xlXG4gICAqIHBvcnQgZHVlIHRvIEVBRERSSU5VU0UuIEVhY2ggdmFsdWUgaXMgYSBzdWNjZXNzaXZlIGJhY2tvZmYgZGVsYXkuXG4gICAqIERlZmF1bHQ6IDFzLCAycywgNHMgKDdzIHRvdGFsKS4gSW5jcmVhc2UgZm9yIHNsb3cgb3IgcmVtb3RlIGVudmlyb25tZW50cy5cbiAgICovXG4gIERPTExIT1VTRV9DT05TT0xFX0JJTkRfUkVUUllfREVMQVlTOiB6LnN0cmluZygpXG4gICAgLm9wdGlvbmFsKClcbiAgICAudHJhbnNmb3JtKHYgPT4gdiA/IHYuc3BsaXQoJywnKS5tYXAoTnVtYmVyKS5maWx0ZXIobiA9PiAhTnVtYmVyLmlzTmFOKG4pICYmIG4gPiAwKSA6IHVuZGVmaW5lZCksXG5cbiAgLyoqXG4gICAqIElzc3VlICMxODUwOiBOdW1iZXIgb2YgY29uc2VjdXRpdmUgZm9yd2FyZGluZyBmYWlsdXJlcyBiZWZvcmUgYSBmb2xsb3dlclxuICAgKiBkZWNsYXJlcyB0aGUgbGVhZGVyIGRlYWQgYW5kIGF0dGVtcHRzIHNlbGYtcHJvbW90aW9uLiBIaWdoZXIgdmFsdWVzIHJlZHVjZVxuICAgKiBmYWxzZSBwb3NpdGl2ZXMgaW4gaGlnaC1sYXRlbmN5IGVudmlyb25tZW50cyBidXQgZGVsYXkgcmVjb3ZlcnkuXG4gICAqIERlZmF1bHQ6IDEwLlxuICAgKi9cbiAgRE9MTEhPVVNFX0NPTlNPTEVfTUFYX0ZPUldBUkRfRkFJTFVSRVM6IHouY29lcmNlLm51bWJlcigpLmludCgpLm1pbigxKS5tYXgoMTAwKS5kZWZhdWx0KDEwKSxcblxuICAvKipcbiAgICogSG93IG9mdGVuIGEgZm9sbG93ZXIgcmUtZXZhbHVhdGVzIHdoZXRoZXIgaXQgc2hvdWxkIHRha2Ugb3ZlciBjb25zb2xlXG4gICAqIGxlYWRlcnNoaXAgaW4gYSBoZXRlcm9nZW5lb3VzIG1peGVkLXZlcnNpb24gZW52aXJvbm1lbnQuXG4gICAqIERlZmF1bHQ6IDE1MDAwbXMuXG4gICAqL1xuICBET0xMSE9VU0VfQ09OU09MRV9BVVRIT1JJVFlfUkVDSEVDS19NUzogei5jb2VyY2UubnVtYmVyKCkuaW50KCkubWluKDFfMDAwKS5tYXgoMzAwXzAwMCkuZGVmYXVsdCgxNV8wMDApLFxuXG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIHBlci1zZXNzaW9uIGppdHRlciBhZGRlZCB0byBhdXRob3JpdHkgcmVjaGVja3Mgc28gbGFyZ2UgbWl4ZWRcbiAgICogZmxlZXRzIGRvIG5vdCBhbGwgd2FrZSB1cCBpbiB0aGUgc2FtZSBpbnN0YW50LlxuICAgKiBEZWZhdWx0OiA1MDAwbXMuXG4gICAqL1xuICBET0xMSE9VU0VfQ09OU09MRV9BVVRIT1JJVFlfUkVDSEVDS19KSVRURVJfTVM6IHouY29lcmNlLm51bWJlcigpLmludCgpLm1pbigwKS5tYXgoNjBfMDAwKS5kZWZhdWx0KDVfMDAwKSxcblxuICAvKipcbiAgICogTnVtYmVyIG9mIGNvbnNlY3V0aXZlIGF1dGhvcml0eSByZWNoZWNrIGZhaWx1cmVzIGJlZm9yZSB0aGUgZm9sbG93ZXIgb3BlbnNcbiAgICogaXRzIGxvY2FsIGNpcmN1aXQgYnJlYWtlciBhbmQgc3RvcHMgcmV0cnlpbmcgdW50aWwgdGhlIGNvb2xkb3duIGV4cGlyZXMuXG4gICAqIERlZmF1bHQ6IDMuXG4gICAqL1xuICBET0xMSE9VU0VfQ09OU09MRV9BVVRIT1JJVFlfUkVDSEVDS19GQUlMVVJFX1RIUkVTSE9MRDogei5jb2VyY2UubnVtYmVyKCkuaW50KCkubWluKDEpLm1heCgxMDApLmRlZmF1bHQoMyksXG5cbiAgLyoqXG4gICAqIENvb2xkb3duIHBlcmlvZCBhZnRlciB0aGUgZm9sbG93ZXIgYXV0aG9yaXR5IG1vbml0b3Igb3BlbnMgaXRzIGNpcmN1aXRcbiAgICogYnJlYWtlciBkdWUgdG8gcmVwZWF0ZWQgZmFpbHVyZXMuXG4gICAqIERlZmF1bHQ6IDYwMDAwbXMuXG4gICAqL1xuICBET0xMSE9VU0VfQ09OU09MRV9BVVRIT1JJVFlfUkVDSEVDS19GQUlMVVJFX0NPT0xET1dOX01TOiB6LmNvZXJjZS5udW1iZXIoKS5pbnQoKS5taW4oMV8wMDApLm1heCg5MDBfMDAwKS5kZWZhdWx0KDYwXzAwMCksXG5cbiAgLyoqXG4gICAqIElzc3VlICMxNzgwOiBQaGFzZSAyIOKAlCByZXF1aXJlIGEgY29uZmlybWF0aW9uIGNvZGUgKE9TIGRpYWxvZyBvciBUT1RQKVxuICAgKiBmb3IgcHJpdmlsZWdlZCBhY3Rpb25zIGxpa2UgdG9rZW4gcm90YXRpb24uIERlZmF1bHQgaXMgdHJ1ZSBmb3Igc2FmZXR5O1xuICAgKiBzZXQgdG8gZmFsc2UgZm9yIGhlYWRsZXNzIENJIGFuZCBzY3JpcHRlZCBkZXBsb3ltZW50cyB0aGF0IG5lZWQgdG8gcm90YXRlXG4gICAqIHdpdGhvdXQgaHVtYW4gaW50ZXJhY3Rpb24uXG4gICAqL1xuICBET0xMSE9VU0VfQ09OU09MRV9ST1RBVElPTl9SRVFVSVJFX0NPTkZJUk1BVElPTjogei5jb2VyY2UuYm9vbGVhbigpLmRlZmF1bHQodHJ1ZSksXG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBTZWN1cml0eSBDb25maWd1cmF0aW9uXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLyoqXG4gICAqIElzc3VlICM0NTI6IEdhdGVrZWVwZXIgcG9saWN5IGVuZm9yY2VtZW50LlxuICAgKiBXaGVuIHRydWUgKGRlZmF1bHQpLCBhbGwgTUNQLUFRTCBvcGVyYXRpb25zIGdvIHRocm91Z2ggdGhlIDQtbGF5ZXIgR2F0ZWtlZXBlclxuICAgKiBlbmZvcmNlKCkgcGlwZWxpbmUuIFdoZW4gZmFsc2UsIGZhbGxzIGJhY2sgdG8gcm91dGUgdmFsaWRhdGlvbiBvbmx5LlxuICAgKiBUaGlzIGlzIGEgdXNlci9vcGVyYXRvciBzZXR0aW5nIOKAlCB0aGUgTExNIGNhbm5vdCBieXBhc3MgaXQuXG4gICAqL1xuICBET0xMSE9VU0VfR0FURUtFRVBFUl9FTkFCTEVEOiB6LmNvZXJjZS5ib29sZWFuKCkuZGVmYXVsdCh0cnVlKSxcbiAgLyoqXG4gICAqIElzc3VlICM2Nzk6IEVsZW1lbnQgcG9saWN5IGxheWVyIGtpbGwgc3dpdGNoLlxuICAgKiBXaGVuIHRydWUgKGRlZmF1bHQpLCBhY3RpdmUgZWxlbWVudCBnYXRla2VlcGVyIHBvbGljaWVzIChhbGxvdy9jb25maXJtL2Rlbnkvc2NvcGVSZXN0cmljdGlvbnMpXG4gICAqIGNhbiBvdmVycmlkZSBkZWZhdWx0IG9wZXJhdGlvbiBwZXJtaXNzaW9uIGxldmVscy4gV2hlbiBmYWxzZSwgTGF5ZXIgMiBvZiBHYXRla2VlcGVyLmVuZm9yY2UoKVxuICAgKiBpcyBieXBhc3NlZCBlbnRpcmVseSDigJQgb25seSByb3V0ZSB2YWxpZGF0aW9uIGFuZCBkZWZhdWx0IHBlcm1pc3Npb24gbGV2ZWxzIGFwcGx5LlxuICAgKiBVc2UgZm9yIGVtZXJnZW5jeSBsb2NrZG93biwgaGFyZGVuZWQgZGVwbG95bWVudHMsIG9yIHBvbGljeSBkZWJ1Z2dpbmcuXG4gICAqIFRoaXMgaXMgYW4gb3BlcmF0b3IvaW5mcmFzdHJ1Y3R1cmUgc2V0dGluZyDigJQgdGhlIExMTSBjYW5ub3QgYnlwYXNzIGl0LlxuICAgKi9cbiAgRE9MTEhPVVNFX0dBVEVLRUVQRVJfRUxFTUVOVF9QT0xJQ1lfT1ZFUlJJREVTOiB6LmNvZXJjZS5ib29sZWFuKCkuZGVmYXVsdCh0cnVlKSxcbiAgLyoqXG4gICAqIElzc3VlICM3OTk6IFBvbGljeSBleHBvcnQgb3B0LWluIGZsYWcuXG4gICAqIFdoZW4gdHJ1ZSAoZGVmYXVsdCksIFBvbGljeUV4cG9ydFNlcnZpY2Ugd3JpdGVzIHRoZSBzZWN1cml0eSBwb2xpY3kgYmx1ZXByaW50IHRvXG4gICAqIH4vLmRvbGxob3VzZS9icmlkZ2UvaW1wb3J0cy9wb2xpY2llcy8gb24gYWN0aXZhdGlvbiBjaGFuZ2VzLiBUaGUgRG9sbGhvdXNlQnJpZGdlXG4gICAqIHBlcm1pc3Npb24tcHJvbXB0IHNlcnZlciB3YXRjaGVzIHRoaXMgZmlsZSB0byBldmFsdWF0ZSBwZXJtaXNzaW9ucyBsb2NhbGx5LlxuICAgKiBTZXQgdG8gZmFsc2UgdG8gZGlzYWJsZSBwb2xpY3kgZmlsZSBleHBvcnQgZW50aXJlbHkuXG4gICAqL1xuICBET0xMSE9VU0VfUE9MSUNZX0VYUE9SVF9FTkFCTEVEOiB6LmNvZXJjZS5ib29sZWFuKCkuZGVmYXVsdCh0cnVlKSxcblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIFN0b3JhZ2UgTGF5ZXIgQ29uZmlndXJhdGlvblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIERPTExIT1VTRV9TQ0FOX0NPT0xET1dOX01TOiB6LmNvZXJjZS5udW1iZXIoKS5kZWZhdWx0KDEwMDApLFxuICBET0xMSE9VU0VfSU5ERVhfREVCT1VOQ0VfTVM6IHouY29lcmNlLm51bWJlcigpLmRlZmF1bHQoMjAwMCksXG4gIERPTExIT1VTRV9FTEVNRU5UX0NBQ0hFX1RUTF9NUzogei5jb2VyY2UubnVtYmVyKCkuZGVmYXVsdCgzNjAwMDAwKSxcbiAgRE9MTEhPVVNFX1BBVEhfQ0FDSEVfVFRMX01TOiB6LmNvZXJjZS5udW1iZXIoKS5kZWZhdWx0KDM2MDAwMDApLFxuICBET0xMSE9VU0VfVE9PTF9DQUNIRV9UVExfTVM6IHouY29lcmNlLm51bWJlcigpLmRlZmF1bHQoNjAwMDApLFxuICBET0xMSE9VU0VfR0xPQkFMX0NBQ0hFX01FTU9SWV9NQjogei5jb2VyY2UubnVtYmVyKCkuZGVmYXVsdCgxNTApLFxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gUGVybWlzc2lvbiBQcm9tcHQgQ29uZmlndXJhdGlvbiAoSXNzdWUgIzYyNSlcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8qKiBNYXhpbXVtIENMSSBhcHByb3ZhbCByZWNvcmRzIGJlZm9yZSBMUlUgZXZpY3Rpb24gKGRlZmF1bHQ6IDUwKSAqL1xuICBET0xMSE9VU0VfQ0xJX0FQUFJPVkFMX01BWDogei5jb2VyY2UubnVtYmVyKCkuZGVmYXVsdCg1MCksXG5cbiAgLyoqIERlZmF1bHQgVFRMIGZvciBDTEkgYXBwcm92YWwgcmVjb3JkcyBpbiBtcyAoZGVmYXVsdDogMzAwMDAwID0gNSBtaW4pICovXG4gIERPTExIT1VTRV9DTElfQVBQUk9WQUxfVFRMX01TOiB6LmNvZXJjZS5udW1iZXIoKS5kZWZhdWx0KDMwMF8wMDApLFxuXG4gIC8qKiBQZXJtaXNzaW9uIHByb21wdCByYXRlIGxpbWl0OiBtYXggcmVxdWVzdHMgcGVyIHdpbmRvdyAoZGVmYXVsdDogMTAwKSAqL1xuICBET0xMSE9VU0VfUEVSTUlTU0lPTl9QUk9NUFRfUkFURV9MSU1JVDogei5jb2VyY2UubnVtYmVyKCkuZGVmYXVsdCgxMDApLFxuXG4gIC8qKiBDTEkgYXBwcm92YWwgY3JlYXRpb24gcmF0ZSBsaW1pdDogbWF4IHJlcXVlc3RzIHBlciB3aW5kb3cgKGRlZmF1bHQ6IDIwKSAqL1xuICBET0xMSE9VU0VfQ0xJX0FQUFJPVkFMX1JBVEVfTElNSVQ6IHouY29lcmNlLm51bWJlcigpLmRlZmF1bHQoMjApLFxuXG4gIC8qKiBSYXRlIGxpbWl0IHdpbmRvdyBpbiBtcyBmb3IgcGVybWlzc2lvbiBwcm9tcHQgYW5kIENMSSBhcHByb3ZhbHMgKGRlZmF1bHQ6IDYwMDAwID0gNjBzKSAqL1xuICBET0xMSE9VU0VfUEVSTUlTU0lPTl9SQVRFX1dJTkRPV19NUzogei5jb2VyY2UubnVtYmVyKCkuZGVmYXVsdCg2MF8wMDApLFxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gTWV0cmljcyBDb2xsZWN0aW9uIENvbmZpZ3VyYXRpb25cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICBET0xMSE9VU0VfTUVUUklDU19FTkFCTEVEOiB6LmNvZXJjZS5ib29sZWFuKCkuZGVmYXVsdCh0cnVlKSxcbiAgRE9MTEhPVVNFX01FVFJJQ1NfQ09MTEVDVElPTl9JTlRFUlZBTF9NUzogei5jb2VyY2UubnVtYmVyKCkubWluKDEwMDApLm1heCgzMDAwMDApLmRlZmF1bHQoMTUwMDApLFxuICBET0xMSE9VU0VfTUVUUklDU19NQVhfU05BUFNIT1RfU0laRTogei5jb2VyY2UubnVtYmVyKCkuZGVmYXVsdCgxMDI0MDApLFxuICBET0xMSE9VU0VfTUVUUklDU19DT0xMRUNUT1JfRkFJTFVSRV9USFJFU0hPTEQ6IHouY29lcmNlLm51bWJlcigpLm1pbigxKS5tYXgoMTAwKS5kZWZhdWx0KDEwKSxcbiAgRE9MTEhPVVNFX01FVFJJQ1NfQ09MTEVDVElPTl9EVVJBVElPTl9XQVJOX01TOiB6LmNvZXJjZS5udW1iZXIoKS5taW4oMTAwKS5tYXgoNjAwMDApLmRlZmF1bHQoNTAwMCksXG4gIERPTExIT1VTRV9NRVRSSUNTX01FTU9SWV9TTkFQU0hPVF9DQVBBQ0lUWTogei5jb2VyY2UubnVtYmVyKCkubWluKDEwKS5tYXgoMTAwMDApLmRlZmF1bHQoMjQwKSxcblxuICAvLyBQYXR0ZXJuIGVuY3J5cHRpb24gc2V0dGluZ3MgZm9yIE1lbW9yeSBTZWN1cml0eSAoSXNzdWUgIzEzMjEpXG4gIERPTExIT1VTRV9ESVNBQkxFX0VOQ1JZUFRJT046IHouY29lcmNlLmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgRE9MTEhPVVNFX0VOQ1JZUFRJT05fU0VDUkVUOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIERPTExIT1VTRV9FTkNSWVBUSU9OX1NBTFQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcblxuICAvLyBUb2tlbiBlbmNyeXB0aW9uIHNlY3JldCAoU0VDLTAxLCAjMTczNSlcbiAgLy8gV2hlbiBzZXQsIHJlcGxhY2VzIHRoZSBwcmVkaWN0YWJsZSBtYWNoaW5lLWRlcml2ZWQgcGFzc3BocmFzZSBmb3IgdG9rZW4gZW5jcnlwdGlvbi5cbiAgLy8gU3Ryb25nbHkgcmVjb21tZW5kZWQgZm9yIGFueSBzaGFyZWQgb3IgbXVsdGktdXNlciBlbnZpcm9ubWVudC5cbiAgLy8gTWluaW11bSAzMiBjaGFyYWN0ZXJzIGVuZm9yY2VkIHRvIHByZXZlbnQgd2VhayBwYXNzcGhyYXNlcy5cbiAgRE9MTEhPVVNFX1RPS0VOX1NFQ1JFVDogei5zdHJpbmcoKS5taW4oMzIpLm9wdGlvbmFsKCksXG59KTtcblxuLyoqXG4gKiBWYWxpZGF0ZWQgZW52aXJvbm1lbnQgdmFyaWFibGVzXG4gKiBUeXBlIGlzIGF1dG9tYXRpY2FsbHkgaW5mZXJyZWQgZnJvbSB0aGUgc2NoZW1hXG4gKi9cbmV4cG9ydCBjb25zdCBlbnYgPSBlbnZTY2hlbWEucGFyc2UocHJvY2Vzcy5lbnYpO1xuXG4vKipcbiAqIEVudmlyb25tZW50IHR5cGUgKGluZmVycmVkIGZyb20gc2NoZW1hKVxuICovXG5leHBvcnQgdHlwZSBFbnYgPSB6LmluZmVyPHR5cGVvZiBlbnZTY2hlbWE+O1xuXG4vKipcbiAqIENvbnZlbmllbmNlIGhlbHBlcnMgZm9yIGVudmlyb25tZW50IGRldGVjdGlvblxuICovXG5leHBvcnQgY29uc3QgaXNUZXN0ID0gZW52Lk5PREVfRU5WID09PSAndGVzdCc7XG5leHBvcnQgY29uc3QgaXNEZXZlbG9wbWVudCA9IGVudi5OT0RFX0VOViA9PT0gJ2RldmVsb3BtZW50JztcbmV4cG9ydCBjb25zdCBpc1Byb2R1Y3Rpb24gPSBlbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJztcblxuLyoqXG4gKiBMb2cgZW52aXJvbm1lbnQgY29uZmlndXJhdGlvbiAod2l0aG91dCBzZWNyZXRzKVxuICovXG5pZiAoaXNEZXZlbG9wbWVudCB8fCBpc1Rlc3QpIHtcbiAgbG9nZ2VyLmRlYnVnKCdFbnZpcm9ubWVudCBjb25maWd1cmF0aW9uIGxvYWRlZDonLCB7XG4gICAgTk9ERV9FTlY6IGVudi5OT0RFX0VOVixcbiAgICBQT1JUOiBlbnYuUE9SVCxcbiAgICBMT0dfTEVWRUw6IGVudi5MT0dfTEVWRUwsXG4gICAgSEFTX0dJVEhVQl9UT0tFTjogISFlbnYuR0lUSFVCX1RPS0VOLFxuICAgIEhBU19HSVRIVUJfVEVTVF9UT0tFTjogISFlbnYuR0lUSFVCX1RFU1RfVE9LRU4sXG4gIH0pO1xufVxuIl19
|
|
327
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbmZpZy9lbnYudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7OztHQVlHO0FBRUgsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEtBQUssQ0FBQztBQUN4QixPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFDNUIsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRTVDLGdGQUFnRjtBQUNoRiw2REFBNkQ7QUFDN0QsRUFBRTtBQUNGLDJEQUEyRDtBQUMzRCxzRUFBc0U7QUFDdEUsb0ZBQW9GO0FBQ3BGLGdGQUFnRjtBQUNoRiwyRUFBMkU7QUFDM0UsaUZBQWlGO0FBQ2pGLE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQztPQUM3QyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsZUFBZSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUM7QUFDL0QsTUFBTSxtQkFBbUIsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3RFLE1BQU0sbUJBQW1CLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN0RSxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBUSxDQUFDO0FBQ3ZHLElBQUksV0FBVztJQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFHLENBQUMs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RSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBRWhELDBDQUEwQztJQUMxQyxzRkFBc0Y7SUFDdEYsaUVBQWlFO0lBQ2pFLDhEQUE4RDtJQUM5RCxzQkFBc0IsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRTtDQUN0RCxDQUFDLENBQUM7QUFFSDs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxHQUFHLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7QUFPaEQ7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLFFBQVEsS0FBSyxNQUFNLENBQUM7QUFDOUMsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLEdBQUcsQ0FBQyxRQUFRLEtBQUssYUFBYSxDQUFDO0FBQzVELE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxHQUFHLENBQUMsUUFBUSxLQUFLLFlBQVksQ0FBQztBQUUxRDs7R0FFRztBQUNILElBQUksYUFBYSxJQUFJLE1BQU0sRUFBRSxDQUFDO0lBQzVCLE1BQU0sQ0FBQyxLQUFLLENBQUMsbUNBQW1DLEVBQUU7UUFDaEQsUUFBUSxFQUFFLEdBQUcsQ0FBQyxRQUFRO1FBQ3RCLElBQUksRUFBRSxHQUFHLENBQUMsSUFBSTtRQUNkLFNBQVMsRUFBRSxHQUFHLENBQUMsU0FBUztRQUN4QixnQkFBZ0IsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLFlBQVk7UUFDcEMscUJBQXFCLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUI7S0FDL0MsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ2VudHJhbGl6ZWQgRW52aXJvbm1lbnQgQ29uZmlndXJhdGlvblxuICpcbiAqIFRoaXMgbW9kdWxlIHByb3ZpZGVzIHR5cGUtc2FmZSBhY2Nlc3MgdG8gZW52aXJvbm1lbnQgdmFyaWFibGVzIHdpdGggdmFsaWRhdGlvbi5cbiAqIEFsbCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgc2hvdWxkIGJlIGFjY2Vzc2VkIHRocm91Z2ggdGhpcyBtb2R1bGUgcmF0aGVyIHRoYW5cbiAqIGRpcmVjdGx5IHZpYSBwcm9jZXNzLmVudiB0byBlbnN1cmUgdHlwZSBzYWZldHkgYW5kIHZhbGlkYXRpb24uXG4gKlxuICogVXNhZ2U6XG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBpbXBvcnQgeyBlbnYgfSBmcm9tICcuL2NvbmZpZy9lbnYnO1xuICogY29uc3QgdG9rZW4gPSBlbnYuR0lUSFVCX1RPS0VOOyAgLy8gVHlwZTogc3RyaW5nXG4gKiBgYGBcbiAqL1xuXG5pbXBvcnQgeyB6IH0gZnJvbSAnem9kJztcbmltcG9ydCBkb3RlbnYgZnJvbSAnZG90ZW52JztcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gJy4uL3V0aWxzL2xvZ2dlci5qcyc7XG5cbi8vIExvYWQgLmVudiBmaWxlcyB3aXRoIHByaW9yaXR5OiAuZW52LmxvY2FsIChwZXJzb25hbCkgPiAuZW52IChzaGFyZWQgZGVmYXVsdHMpXG4vLyBCb3RoIGZpbGVzIGFyZSBvcHRpb25hbCAtIG5vIGVycm9yIGlmIGVpdGhlciBkb2Vzbid0IGV4aXN0XG4vL1xuLy8gTUNQIFByb3RvY29sIENvbXBsaWFuY2U6IFN1cHByZXNzIGRvdGVudidzIHN0ZG91dCBvdXRwdXRcbi8vIFRoZSBNQ1AgcHJvdG9jb2wgcmVxdWlyZXMgdGhhdCBPTkxZIEpTT04tUlBDIG1lc3NhZ2VzIGdvIHRvIHN0ZG91dC5cbi8vIGRvdGVudiBtYXkgb3V0cHV0IHZlcnNpb24gaW5mbyB0byBzdGRvdXQsIHdoaWNoIGJyZWFrcyBDbGF1ZGUgRGVza3RvcCBjb25uZWN0aW9uLlxuLy8gU29sdXRpb246IFRlbXBvcmFyaWx5IHJlZGlyZWN0IHN0ZG91dCB0byBzdGRlcnIgZHVyaW5nIGRvdGVudiBpbml0aWFsaXphdGlvbi5cbi8vIEluIC0td2ViIG1vZGUsIHN1cHByZXNzIGJvdGggc3Rkb3V0IEFORCBzdGRlcnIg4oCUIHRoZSB1c2VyIG9ubHkgbmVlZHMgdGhlXG4vLyBjb25zb2xlIFVSTCBiYW5uZXIsIG5vdCBkb3RlbnYncyBpbmplY3Rpb24gc3VtbWFyeS4gTG9ncyBnbyB0byB0aGUgd2ViIHZpZXdlci5cbmNvbnN0IGlzV2ViU2lsZW50ID0gcHJvY2Vzcy5hcmd2LmluY2x1ZGVzKCctLXdlYicpXG4gICYmICFwcm9jZXNzLmVudi5ET0xMSE9VU0VfREVCVUcgJiYgIXByb2Nlc3MuZW52LkVOQUJMRV9ERUJVRztcbmNvbnN0IG9yaWdpbmFsU3Rkb3V0V3JpdGUgPSBwcm9jZXNzLnN0ZG91dC53cml0ZS5iaW5kKHByb2Nlc3Muc3Rkb3V0KTtcbmNvbnN0IG9yaWdpbmFsU3RkZXJyV3JpdGUgPSBwcm9jZXNzLnN0ZGVyci53cml0ZS5iaW5kKHByb2Nlc3Muc3RkZXJyKTtcbnByb2Nlc3Muc3Rkb3V0LndyaXRlID0gKGlzV2ViU2lsZW50ID8gKCgpID0+IHRydWUpIDogcHJvY2Vzcy5zdGRlcnIud3JpdGUuYmluZChwcm9jZXNzLnN0ZGVycikpIGFzIGFueTtcbmlmIChpc1dlYlNpbGVudCkgcHJvY2Vzcy5zdGRlcnIud3JpdGUgPSAoKCkgPT4gdHJ1ZSkgYXMgYW55O1xuZG90ZW52LmNvbmZpZyh7IHBhdGg6IFsnLmVudi5sb2NhbCcsICcuZW52J10gfSk7XG5wcm9jZXNzLnN0ZG91dC53cml0ZSA9IG9yaWdpbmFsU3Rkb3V0V3JpdGU7XG5pZiAoaXNXZWJTaWxlbnQpIHByb2Nlc3Muc3RkZXJyLndyaXRlID0gb3JpZ2luYWxTdGRlcnJXcml0ZTtcblxuLyoqXG4gKiBFbnZpcm9ubWVudCB2YXJpYWJsZSBzY2hlbWEgd2l0aCB2YWxpZGF0aW9uXG4gKi9cbmNvbnN0IGVudlNjaGVtYSA9IHoub2JqZWN0KHtcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBFbnZpcm9ubWVudFxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIE5PREVfRU5WOiB6LmVudW0oWydkZXZlbG9wbWVudCcsICd0ZXN0JywgJ3Byb2R1Y3Rpb24nXSkuZGVmYXVsdCgnZGV2ZWxvcG1lbnQnKSxcblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIFByb2R1Y3Rpb24gR2l0SHViIENyZWRlbnRpYWxzXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gVXNlZCBieSBwcm9kdWN0aW9uIGNvZGUgKHNyYy8pIGZvciByZWFsIEdpdEh1YiBvcGVyYXRpb25zXG4gIC8vIE9wdGlvbmFsOiBGZWF0dXJlcyByZXF1aXJpbmcgR2l0SHViIHdpbGwgZmFpbCBncmFjZWZ1bGx5IGlmIG5vdCBzZXRcbiAgR0lUSFVCX1RPS0VOOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIEdJVEhVQl9VU0VSTkFNRTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBHSVRIVUJfUkVQT1NJVE9SWTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gVGVzdCBHaXRIdWIgQ3JlZGVudGlhbHMgKFNFUEFSQVRFIGFjY291bnQhKVxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIFVzZWQgYnkgdGVzdCBjb2RlICh0ZXN0cy8pIC0gdGVzdHMgd2lsbCBza2lwIGlmIG5vdCBwcm92aWRlZFxuICAvLyBJTVBPUlRBTlQ6IFVzZSBhIGRpZmZlcmVudCBHaXRIdWIgYWNjb3VudCBmb3IgdGVzdGluZyFcbiAgR0lUSFVCX1RFU1RfVE9LRU46IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgR0lUSFVCX1RFU1RfVVNFUk5BTUU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgR0lUSFVCX1RFU1RfUkVQT1NJVE9SWTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gU2VydmVyIENvbmZpZ3VyYXRpb25cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICBQT1JUOiB6LmNvZXJjZS5udW1iZXIoKS5kZWZhdWx0KDMwMDApLFxuICBMT0dfTEVWRUw6IHouZW51bShbJ2Vycm9yJywgJ3dhcm4nLCAnaW5mbycsICdkZWJ1ZyddKS5kZWZhdWx0KCdpbmZvJyksXG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBUZXN0IENvbmZpZ3VyYXRpb25cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICBURVNUX0JBU0VfRElSOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIFRFU1RfUEVSU09OQVNfRElSOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIFRFU1RfQ0FDSEVfRElSOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIFRFU1RfQ09ORklHX0RJUjogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gRmVhdHVyZSBGbGFnc1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIERPTExIT1VTRV9BVVRPX1NVQk1JVF9UT19DT0xMRUNUSU9OOiB6LmNvZXJjZS5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gIEVOQUJMRV9ERUJVRzogei5jb2VyY2UuYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBURVNUX1ZFUkJPU0VfTE9HR0lORzogei5jb2VyY2UuYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gTUNQIEludGVyZmFjZSBDb25maWd1cmF0aW9uIChJc3N1ZSAjMjM3KVxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8qKlxuICAgKiBNQ1AgaW50ZXJmYWNlIG1vZGUgLSBjb250cm9scyB3aGljaCB0b29sIGludGVyZmFjZSBpcyBleHBvc2VkIHRvIExMTXM6XG4gICAqIC0gJ2Rpc2NyZXRlJzogfjQwIGluZGl2aWR1YWwgdG9vbHMgKGxpc3RfZWxlbWVudHMsIGNyZWF0ZV9lbGVtZW50LCBldGMuKSAtIH4zLDAwMCB0b2tlbnNcbiAgICogLSAnbWNwYXFsJzogQ29uc29saWRhdGVkIE1DUC1BUUwgaW50ZXJmYWNlIC0gdXNlcyBNQ1BfQVFMX0VORFBPSU5UX01PREUgZm9yIHN0eWxlXG4gICAqXG4gICAqIERlZmF1bHQ6ICdtY3BhcWwnIC0gcmVjb21tZW5kZWQgZm9yIHRva2VuIGVmZmljaWVuY3kgYW5kIGNsZWFuZXIgdG9vbCBkaXNjb3ZlcnlcbiAgICovXG4gIE1DUF9JTlRFUkZBQ0VfTU9ERTogei5lbnVtKFsnZGlzY3JldGUnLCAnbWNwYXFsJ10pLmRlZmF1bHQoJ21jcGFxbCcpLFxuXG4gIC8qKlxuICAgKiBNQ1AtQVFMIGVuZHBvaW50IG1vZGUgKG9ubHkgYXBwbGllcyB3aGVuIE1DUF9JTlRFUkZBQ0VfTU9ERT0nbWNwYXFsJyk6XG4gICAqIC0gJ2NydWRlJzogNSBDUlVERSB0b29scyAoQ3JlYXRlLCBSZWFkLCBVcGRhdGUsIERlbGV0ZSwgRXhlY3V0ZSkgLSB+NCwzMDAgdG9rZW5zXG4gICAqIC0gJ3NpbmdsZSc6IDEgdG9vbCAobWNwX2FxbCkgLSB+MzUwIHRva2VucywgaWRlYWwgZm9yIG11bHRpLXNlcnZlciBkZXBsb3ltZW50c1xuICAgKi9cbiAgTUNQX0FRTF9FTkRQT0lOVF9NT0RFOiB6LmVudW0oWydjcnVkZScsICdzaW5nbGUnXSkuZGVmYXVsdCgnY3J1ZGUnKSxcblxuICAvLyBCYWNrd2FyZCBjb21wYXRpYmlsaXR5IGFsaWFzIGZvciBNQ1BfQVFMX01PREUgKGRlcHJlY2F0ZWQsIHVzZSBNQ1BfQVFMX0VORFBPSU5UX01PREUpXG4gIE1DUF9BUUxfTU9ERTogei5lbnVtKFsnY3J1ZGUnLCAnc2luZ2xlJ10pLm9wdGlvbmFsKCksXG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBVbmlmaWVkIExvZ2dpbmcgQ29uZmlndXJhdGlvbiAoZG9jcy9MT0dHSU5HLURFU0lHTi5tZClcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICBET0xMSE9VU0VfTE9HX0RJUjogei5zdHJpbmcoKS5kZWZhdWx0KCd+Ly5kb2xsaG91c2UvbG9ncy8nKSxcbiAgRE9MTEhPVVNFX0xPR19GT1JNQVQ6IHouZW51bShbJ3RleHQnLCAnanNvbmwnXSkuZGVmYXVsdCgndGV4dCcpLFxuICBET0xMSE9VU0VfTE9HX1JFVEVOVElPTl9EQVlTOiB6LmNvZXJjZS5udW1iZXIoKS5kZWZhdWx0KDMwKSxcbiAgRE9MTEhPVVNFX0xPR19TRUNVUklUWV9SRVRFTlRJT05fREFZUzogei5jb2VyY2UubnVtYmVyKCkuZGVmYXVsdCg3KSxcbiAgRE9MTEhPVVNFX0xPR19GTFVTSF9JTlRFUlZBTF9NUzogei5jb2VyY2UubnVtYmVyKCkuZGVmYXVsdCg1MDAwKSxcbiAgLy8gQnVmZmVyIHJhaXNlZCB0byAyMDAwIHRvIHN1cHBvcnQgdGhlIHdlYiBjb25zb2xlIGxvZyB2aWV3ZXIg4oCUIHRoZSBoaWdoZXIgY2FwYWNpdHlcbiAgLy8gcmVkdWNlcyBmbHVzaCBmcmVxdWVuY3kgYW5kIGtlZXBzIG1vcmUgZW50cmllcyBhdmFpbGFibGUgZm9yIFNTRSBiYWNrZmlsbCBvbiBjb25uZWN0LlxuICBET0xMSE9VU0VfTE9HX0JVRkZFUl9TSVpFOiB6LmNvZXJjZS5udW1iZXIoKS5kZWZhdWx0KDIwMDApLFxuICBET0xMSE9VU0VfTE9HX01FTU9SWV9DQVBBQ0lUWTogei5jb2VyY2UubnVtYmVyKCkuZGVmYXVsdCg1MDAwKSxcbiAgRE9MTEhPVVNFX0xPR19NRU1PUllfQVBQX0NBUEFDSVRZOiB6LmNvZXJjZS5udW1iZXIoKS5kZWZhdWx0KDEwMDAwKSxcbiAgRE9MTEhPVVNFX0xPR19NRU1PUllfU0VDVVJJVFlfQ0FQQUNJVFk6IHouY29lcmNlLm51bWJlcigpLmRlZmF1bHQoNTAwMCksXG4gIERPTExIT1VTRV9MT0dfTUVNT1JZX1BFUkZfQ0FQQUNJVFk6IHouY29lcmNlLm51bWJlcigpLmRlZmF1bHQoMjAwMCksXG4gIERPTExIT1VTRV9MT0dfTUVNT1JZX1RFTEVNRVRSWV9DQVBBQ0lUWTogei5jb2VyY2UubnVtYmVyKCkuZGVmYXVsdCgxMDAwKSxcbiAgRE9MTEhPVVNFX0xPR19NQVhfRU5UUllfU0laRTogei5jb2VyY2UubnVtYmVyKCkuZGVmYXVsdCgxNjM4NCksXG4gIERPTExIT1VTRV9MT0dfSU1NRURJQVRFX0ZMVVNIX1JBVEU6IHouY29lcmNlLm51bWJlcigpLmRlZmF1bHQoNTApLFxuICBET0xMSE9VU0VfTE9HX0ZJTEVfTUFYX1NJWkU6IHouY29lcmNlLm51bWJlcigpLmRlZmF1bHQoMTA0ODU3NjAwKSxcbiAgRE9MTEhPVVNFX0xPR19NQVhfRElSX1NJWkVfQllURVM6IHouY29lcmNlLm51bWJlcigpLmRlZmF1bHQoMCksXG4gIERPTExIT1VTRV9MT0dfTUFYX0ZJTEVTX1BFUl9DQVRFR09SWTogei5jb2VyY2UubnVtYmVyKCkuZGVmYXVsdCgxMDApLFxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gUGVybWlzc2lvbiBTZXJ2ZXIgQ29uZmlndXJhdGlvblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8qKlxuICAgKiBFbmFibGUgdGhlIEhUVFAgcGVybWlzc2lvbiBldmFsdWF0aW9uIHNlcnZlciBmb3IgUHJlVG9vbFVzZSBob29rcy5cbiAgICogV2hlbiB0cnVlLCBzdGFydHMgYW4gSFRUUCBlbmRwb2ludCBvbiBhIGR5bmFtaWMgcG9ydCBhZnRlciBkZWZlcnJlZFxuICAgKiBzZXR1cCBjb21wbGV0ZXMuIFdyaXRlcyBwb3J0IHRvIH4vLmRvbGxob3VzZS9ydW4vcGVybWlzc2lvbi1zZXJ2ZXIucG9ydFxuICAgKiBmb3IgaG9vayBzY3JpcHQgZGlzY292ZXJ5LiBSZXF1aXJlZCBmb3IgYXV0b25vbW91cyBhZ2VudCBwZXJtaXNzaW9uXG4gICAqIG1hbmFnZW1lbnQgdmlhIENsYXVkZSBDb2RlIGhvb2tzLlxuICAgKi9cbiAgRE9MTEhPVVNFX1BFUk1JU1NJT05fU0VSVkVSOiB6LmNvZXJjZS5ib29sZWFuKCkuZGVmYXVsdCh0cnVlKSxcblxuICAvLyBXZWIgQ29uc29sZSBDb25maWd1cmF0aW9uXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLyoqIEVuYWJsZSB0aGUgdW5pZmllZCB3ZWIgY29uc29sZSAobG9ncyArIG1ldHJpY3MgdGFicykgKi9cbiAgRE9MTEhPVVNFX1dFQl9DT05TT0xFOiB6LmNvZXJjZS5ib29sZWFuKCkuZGVmYXVsdCh0cnVlKSxcblxuICAvKipcbiAgICogUG9ydCB0aGUgd2ViIGNvbnNvbGUgbGVhZGVyIGJpbmRzIHRvICgjMTc5NCwgIzE3OTgpLlxuICAgKlxuICAgKiBEZWZhdWx0OiA0MTcxNSDigJQgXCJBSUxJU1wiIG9uIGEgcGhvbmUga2V5cGFkLCBhZnRlciB0aGUgQUkgTGF5ZXJcbiAgICogSW50ZXJmYWNlIFNwZWNpZmljYXRpb24gdGhhdCBEb2xsaG91c2VNQ1AgaW1wbGVtZW50cy4gQWxzbyBcIkFsaWNlXCJcbiAgICogaW4gR2FlbGljLlxuICAgKlxuICAgKiBQb3J0IHNlbGVjdGlvbiBjcml0ZXJpYSAodmVyaWZpZWQgMjAyNi0wNC0wNik6XG4gICAqICAgLSBOb3QgcmVnaXN0ZXJlZCB3aXRoIElBTkEgKG5vIGVudHJ5IGluIHRoZSBzZXJ2aWNlIG5hbWUgcmVnaXN0cnkpXG4gICAqICAgLSBOb3QgaW4gbm1hcCBzZXJ2aWNlcyBkYXRhYmFzZSAobmV2ZXIgb2JzZXJ2ZWQgaW4gdGhlIHdpbGQpXG4gICAqICAgLSBObyBrbm93biBhcHBsaWNhdGlvbiwgc2VjdXJpdHkgdG9vbCwgb3IgbWFsd2FyZSBhc3NvY2lhdGlvbnNcbiAgICogICAtIEJlbG93IHRoZSBtYWNPUyBlcGhlbWVyYWwgcmFuZ2UgKDQ5MTUyLTY1NTM1KSwgc28gYGJpbmQoKWBcbiAgICogICAgIGRvZXMgbm90IHJhY2Ugd2l0aCBrZXJuZWwtYWxsb2NhdGVkIHNvdXJjZSBwb3J0c1xuICAgKiAgIC0gSW4gdGhlIElBTkEgdXNlciBwb3J0IHJhbmdlICgxMDI0LTQ5MTUxKVxuICAgKiAgIC0gTm90IGFkamFjZW50IHRvIHRoZSBwcmUtYXV0aGVudGljYXRpb24gZGVmYXVsdCAoMzkzOSlcbiAgICpcbiAgICogUHJldmlvdXMgZGVmYXVsdCB3YXMgNTkwNyAoXCJMT0dTXCIgdXBzaWRlIGRvd24gb24gYSBjYWxjdWxhdG9yKSxcbiAgICogd2hpY2ggY29uZmxpY3RlZCB3aXRoIFN0ZWxsYXIgQ3liZXIncyBIVFRQIEdLRSBsb2cgcGFyc2VyLlxuICAgKlxuICAgKiBPdmVycmlkZSB2aWEgZW52IHZhciBpZiA0MTcxNSBjb2xsaWRlcyB3aXRoIHNvbWV0aGluZyBpbiB5b3VyXG4gICAqIGVudmlyb25tZW50IOKAlCBldmVyeSBydW50aW1lIHJlZmVyZW5jZSByZWFkcyBmcm9tIHRoaXMgc2luZ2xlIHZhbHVlLlxuICAgKi9cbiAgRE9MTEhPVVNFX1dFQl9DT05TT0xFX1BPUlQ6IHouY29lcmNlLm51bWJlcigpLmludCgpLm1pbigxMDI0KS5tYXgoNjU1MzUpLmRlZmF1bHQoNDE3MTUpLFxuXG4gIC8qKlxuICAgKiBJc3N1ZSAjMTc4MDogRW5mb3JjZSBCZWFyZXIgdG9rZW4gYXV0aGVudGljYXRpb24gb24gdGhlIHdlYiBjb25zb2xlIEFQSS5cbiAgICogV2hlbiB0cnVlLCBhbGwgcHJvdGVjdGVkIGVuZHBvaW50cyByZXF1aXJlIGEgdmFsaWQgdG9rZW4gZnJvbSB0aGVcbiAgICogY29uc29sZSB0b2tlbiBmaWxlLiBXaGVuIGZhbHNlICh0aGUgcHJlLVBoYXNlLTIgZGVmYXVsdCksIHRoZSB0b2tlblxuICAgKiBmaWxlIGlzIHN0aWxsIGdlbmVyYXRlZCBidXQgdGhlIG1pZGRsZXdhcmUgZG9lcyBub3QgZW5mb3JjZSDigJQgdGhpc1xuICAgKiBsZXRzIHRoZSBpbmZyYXN0cnVjdHVyZSBsYW5kIHdpdGhvdXQgYnJlYWtpbmcgZXhpc3RpbmcgY29uc3VtZXJzLlxuICAgKiBXaWxsIGZsaXAgdG8gZGVmYXVsdCBgdHJ1ZWAgaW4gYSBmb2xsb3ctdXAgUFIgb25jZSBhbGwgY29uc3VtZXJzXG4gICAqIChicm93c2VyLCBmb2xsb3dlcnMsIGJyaWRnZSkgaGF2ZSBiZWVuIHVwZGF0ZWQgdG8gYXR0YWNoIHRva2Vucy5cbiAgICovXG4gIERPTExIT1VTRV9XRUJfQVVUSF9FTkFCTEVEOiB6LmNvZXJjZS5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG5cbiAgLyoqXG4gICAqIElzc3VlICMxNzgwOiBPcHRpb25hbCBvdmVycmlkZSBmb3IgdGhlIGNvbnNvbGUgdG9rZW4gZmlsZSBsb2NhdGlvbi5cbiAgICogV2hlbiB1bnNldCwgYENvbnNvbGVUb2tlblN0b3JlYCBmYWxscyBiYWNrIHRvIGl0cyBidWlsdC1pbiBkZWZhdWx0XG4gICAqIHVuZGVyIGB+Ly5kb2xsaG91c2UvcnVuL2AuIE1haW5seSB1c2VmdWwgZm9yIHRlc3RzIGFuZCBmb3IgZW50ZXJwcmlzZVxuICAgKiBkZXBsb3ltZW50cyB0aGF0IG1vdW50IGEgc2hhcmVkIHRva2VuIGZpbGUgZnJvbSBhIHNlY3JldHMgdm9sdW1lLlxuICAgKi9cbiAgRE9MTEhPVVNFX0NPTlNPTEVfVE9LRU5fRklMRTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBvdmVycmlkZSBmb3IgdGhlIGNvbnNvbGUgbGVhZGVyIGxvY2sgZmlsZSBsb2NhdGlvbiAoIzE3OTQpLlxuICAgKiBXaGVuIHVuc2V0LCBgTGVhZGVyRWxlY3Rpb25gIGZhbGxzIGJhY2sgdG8gaXRzIGJ1aWx0LWluIGRlZmF1bHQgdW5kZXJcbiAgICogYH4vLmRvbGxob3VzZS9ydW4vYC4gUHJpbWFyaWx5IHVzZWZ1bCBmb3IgdGVzdHMgdGhhdCBuZWVkIGlzb2xhdGlvblxuICAgKiBiZXR3ZWVuIHJ1bnMgYW5kIGZvciBkZXBsb3ltZW50cyB0aGF0IHNwbGl0IHJ1bnRpbWUgc3RhdGUgYWNyb3NzXG4gICAqIG11bHRpcGxlIGluc3RhbGxhdGlvbnMgb24gdGhlIHNhbWUgbWFjaGluZS5cbiAgICovXG4gIERPTExIT1VTRV9DT05TT0xFX0xFQURFUl9MT0NLX0ZJTEU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcblxuICAvLyBMZWFkZXIvRm9sbG93ZXIgUmVjb3ZlcnkgKCMxODUwKVxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIElzc3VlICMxODUwOiBSZXRyeSBkZWxheXMgKGluIG1zKSB3aGVuIHRoZSBsZWFkZXIgZmFpbHMgdG8gYmluZCB0aGUgY29uc29sZVxuICAgKiBwb3J0IGR1ZSB0byBFQUREUklOVVNFLiBFYWNoIHZhbHVlIGlzIGEgc3VjY2Vzc2l2ZSBiYWNrb2ZmIGRlbGF5LlxuICAgKiBEZWZhdWx0OiAxcywgMnMsIDRzICg3cyB0b3RhbCkuIEluY3JlYXNlIGZvciBzbG93IG9yIHJlbW90ZSBlbnZpcm9ubWVudHMuXG4gICAqL1xuICBET0xMSE9VU0VfQ09OU09MRV9CSU5EX1JFVFJZX0RFTEFZUzogei5zdHJpbmcoKVxuICAgIC5vcHRpb25hbCgpXG4gICAgLnRyYW5zZm9ybSh2ID0+IHYgPyB2LnNwbGl0KCcsJykubWFwKE51bWJlcikuZmlsdGVyKG4gPT4gIU51bWJlci5pc05hTihuKSAmJiBuID4gMCkgOiB1bmRlZmluZWQpLFxuXG4gIC8qKlxuICAgKiBJc3N1ZSAjMTg1MDogTnVtYmVyIG9mIGNvbnNlY3V0aXZlIGZvcndhcmRpbmcgZmFpbHVyZXMgYmVmb3JlIGEgZm9sbG93ZXJcbiAgICogZGVjbGFyZXMgdGhlIGxlYWRlciBkZWFkIGFuZCBhdHRlbXB0cyBzZWxmLXByb21vdGlvbi4gSGlnaGVyIHZhbHVlcyByZWR1Y2VcbiAgICogZmFsc2UgcG9zaXRpdmVzIGluIGhpZ2gtbGF0ZW5jeSBlbnZpcm9ubWVudHMgYnV0IGRlbGF5IHJlY292ZXJ5LlxuICAgKiBEZWZhdWx0OiAxMC5cbiAgICovXG4gIERPTExIT1VTRV9DT05TT0xFX01BWF9GT1JXQVJEX0ZBSUxVUkVTOiB6LmNvZXJjZS5udW1iZXIoKS5pbnQoKS5taW4oMSkubWF4KDEwMCkuZGVmYXVsdCgxMCksXG5cbiAgLyoqXG4gICAqIEhvdyBvZnRlbiBhIGZvbGxvd2VyIHJlLWV2YWx1YXRlcyB3aGV0aGVyIGl0IHNob3VsZCB0YWtlIG92ZXIgY29uc29sZVxuICAgKiBsZWFkZXJzaGlwIGluIGEgaGV0ZXJvZ2VuZW91cyBtaXhlZC12ZXJzaW9uIGVudmlyb25tZW50LlxuICAgKiBEZWZhdWx0OiAxNTAwMG1zLlxuICAgKi9cbiAgRE9MTEhPVVNFX0NPTlNPTEVfQVVUSE9SSVRZX1JFQ0hFQ0tfTVM6IHouY29lcmNlLm51bWJlcigpLmludCgpLm1pbigxXzAwMCkubWF4KDMwMF8wMDApLmRlZmF1bHQoMTVfMDAwKSxcblxuICAvKipcbiAgICogQWRkaXRpb25hbCBwZXItc2Vzc2lvbiBqaXR0ZXIgYWRkZWQgdG8gYXV0aG9yaXR5IHJlY2hlY2tzIHNvIGxhcmdlIG1peGVkXG4gICAqIGZsZWV0cyBkbyBub3QgYWxsIHdha2UgdXAgaW4gdGhlIHNhbWUgaW5zdGFudC5cbiAgICogRGVmYXVsdDogNTAwMG1zLlxuICAgKi9cbiAgRE9MTEhPVVNFX0NPTlNPTEVfQVVUSE9SSVRZX1JFQ0hFQ0tfSklUVEVSX01TOiB6LmNvZXJjZS5udW1iZXIoKS5pbnQoKS5taW4oMCkubWF4KDYwXzAwMCkuZGVmYXVsdCg1XzAwMCksXG5cbiAgLyoqXG4gICAqIE51bWJlciBvZiBjb25zZWN1dGl2ZSBhdXRob3JpdHkgcmVjaGVjayBmYWlsdXJlcyBiZWZvcmUgdGhlIGZvbGxvd2VyIG9wZW5zXG4gICAqIGl0cyBsb2NhbCBjaXJjdWl0IGJyZWFrZXIgYW5kIHN0b3BzIHJldHJ5aW5nIHVudGlsIHRoZSBjb29sZG93biBleHBpcmVzLlxuICAgKiBEZWZhdWx0OiAzLlxuICAgKi9cbiAgRE9MTEhPVVNFX0NPTlNPTEVfQVVUSE9SSVRZX1JFQ0hFQ0tfRkFJTFVSRV9USFJFU0hPTEQ6IHouY29lcmNlLm51bWJlcigpLmludCgpLm1pbigxKS5tYXgoMTAwKS5kZWZhdWx0KDMpLFxuXG4gIC8qKlxuICAgKiBDb29sZG93biBwZXJpb2QgYWZ0ZXIgdGhlIGZvbGxvd2VyIGF1dGhvcml0eSBtb25pdG9yIG9wZW5zIGl0cyBjaXJjdWl0XG4gICAqIGJyZWFrZXIgZHVlIHRvIHJlcGVhdGVkIGZhaWx1cmVzLlxuICAgKiBEZWZhdWx0OiA2MDAwMG1zLlxuICAgKi9cbiAgRE9MTEhPVVNFX0NPTlNPTEVfQVVUSE9SSVRZX1JFQ0hFQ0tfRkFJTFVSRV9DT09MRE9XTl9NUzogei5jb2VyY2UubnVtYmVyKCkuaW50KCkubWluKDFfMDAwKS5tYXgoOTAwXzAwMCkuZGVmYXVsdCg2MF8wMDApLFxuXG4gIC8qKlxuICAgKiBUaW1lb3V0IGZvciBsZWFkZXItZGlzY292ZXJ5IEhUVFAgcHJvYmVzIGFnYWluc3QgL2FwaS9zZXNzaW9ucyBiZWZvcmUgdGhlXG4gICAqIGNhbGxlciBmYWxscyBiYWNrIHRvIGxvY2stZmlsZSBvciBzeW50aGV0aWMtb3duZXIgaGV1cmlzdGljcy5cbiAgICogRGVmYXVsdDogMjAwMG1zLlxuICAgKi9cbiAgRE9MTEhPVVNFX0NPTlNPTEVfTEVBREVSX0RJU0NPVkVSWV9USU1FT1VUX01TOiB6LmNvZXJjZS5udW1iZXIoKS5pbnQoKS5taW4oMjUwKS5tYXgoMzBfMDAwKS5kZWZhdWx0KDJfMDAwKSxcblxuICAvKipcbiAgICogSXNzdWUgIzE3ODA6IFBoYXNlIDIg4oCUIHJlcXVpcmUgYSBjb25maXJtYXRpb24gY29kZSAoT1MgZGlhbG9nIG9yIFRPVFApXG4gICAqIGZvciBwcml2aWxlZ2VkIGFjdGlvbnMgbGlrZSB0b2tlbiByb3RhdGlvbi4gRGVmYXVsdCBpcyB0cnVlIGZvciBzYWZldHk7XG4gICAqIHNldCB0byBmYWxzZSBmb3IgaGVhZGxlc3MgQ0kgYW5kIHNjcmlwdGVkIGRlcGxveW1lbnRzIHRoYXQgbmVlZCB0byByb3RhdGVcbiAgICogd2l0aG91dCBodW1hbiBpbnRlcmFjdGlvbi5cbiAgICovXG4gIERPTExIT1VTRV9DT05TT0xFX1JPVEFUSU9OX1JFUVVJUkVfQ09ORklSTUFUSU9OOiB6LmNvZXJjZS5ib29sZWFuKCkuZGVmYXVsdCh0cnVlKSxcblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIFNlY3VyaXR5IENvbmZpZ3VyYXRpb25cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvKipcbiAgICogSXNzdWUgIzQ1MjogR2F0ZWtlZXBlciBwb2xpY3kgZW5mb3JjZW1lbnQuXG4gICAqIFdoZW4gdHJ1ZSAoZGVmYXVsdCksIGFsbCBNQ1AtQVFMIG9wZXJhdGlvbnMgZ28gdGhyb3VnaCB0aGUgNC1sYXllciBHYXRla2VlcGVyXG4gICAqIGVuZm9yY2UoKSBwaXBlbGluZS4gV2hlbiBmYWxzZSwgZmFsbHMgYmFjayB0byByb3V0ZSB2YWxpZGF0aW9uIG9ubHkuXG4gICAqIFRoaXMgaXMgYSB1c2VyL29wZXJhdG9yIHNldHRpbmcg4oCUIHRoZSBMTE0gY2Fubm90IGJ5cGFzcyBpdC5cbiAgICovXG4gIERPTExIT1VTRV9HQVRFS0VFUEVSX0VOQUJMRUQ6IHouY29lcmNlLmJvb2xlYW4oKS5kZWZhdWx0KHRydWUpLFxuICAvKipcbiAgICogSXNzdWUgIzY3OTogRWxlbWVudCBwb2xpY3kgbGF5ZXIga2lsbCBzd2l0Y2guXG4gICAqIFdoZW4gdHJ1ZSAoZGVmYXVsdCksIGFjdGl2ZSBlbGVtZW50IGdhdGVrZWVwZXIgcG9saWNpZXMgKGFsbG93L2NvbmZpcm0vZGVueS9zY29wZVJlc3RyaWN0aW9ucylcbiAgICogY2FuIG92ZXJyaWRlIGRlZmF1bHQgb3BlcmF0aW9uIHBlcm1pc3Npb24gbGV2ZWxzLiBXaGVuIGZhbHNlLCBMYXllciAyIG9mIEdhdGVrZWVwZXIuZW5mb3JjZSgpXG4gICAqIGlzIGJ5cGFzc2VkIGVudGlyZWx5IOKAlCBvbmx5IHJvdXRlIHZhbGlkYXRpb24gYW5kIGRlZmF1bHQgcGVybWlzc2lvbiBsZXZlbHMgYXBwbHkuXG4gICAqIFVzZSBmb3IgZW1lcmdlbmN5IGxvY2tkb3duLCBoYXJkZW5lZCBkZXBsb3ltZW50cywgb3IgcG9saWN5IGRlYnVnZ2luZy5cbiAgICogVGhpcyBpcyBhbiBvcGVyYXRvci9pbmZyYXN0cnVjdHVyZSBzZXR0aW5nIOKAlCB0aGUgTExNIGNhbm5vdCBieXBhc3MgaXQuXG4gICAqL1xuICBET0xMSE9VU0VfR0FURUtFRVBFUl9FTEVNRU5UX1BPTElDWV9PVkVSUklERVM6IHouY29lcmNlLmJvb2xlYW4oKS5kZWZhdWx0KHRydWUpLFxuICAvKipcbiAgICogSXNzdWUgIzc5OTogUG9saWN5IGV4cG9ydCBvcHQtaW4gZmxhZy5cbiAgICogV2hlbiB0cnVlIChkZWZhdWx0KSwgUG9saWN5RXhwb3J0U2VydmljZSB3cml0ZXMgdGhlIHNlY3VyaXR5IHBvbGljeSBibHVlcHJpbnQgdG9cbiAgICogfi8uZG9sbGhvdXNlL2JyaWRnZS9pbXBvcnRzL3BvbGljaWVzLyBvbiBhY3RpdmF0aW9uIGNoYW5nZXMuIFRoZSBEb2xsaG91c2VCcmlkZ2VcbiAgICogcGVybWlzc2lvbi1wcm9tcHQgc2VydmVyIHdhdGNoZXMgdGhpcyBmaWxlIHRvIGV2YWx1YXRlIHBlcm1pc3Npb25zIGxvY2FsbHkuXG4gICAqIFNldCB0byBmYWxzZSB0byBkaXNhYmxlIHBvbGljeSBmaWxlIGV4cG9ydCBlbnRpcmVseS5cbiAgICovXG4gIERPTExIT1VTRV9QT0xJQ1lfRVhQT1JUX0VOQUJMRUQ6IHouY29lcmNlLmJvb2xlYW4oKS5kZWZhdWx0KHRydWUpLFxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gU3RvcmFnZSBMYXllciBDb25maWd1cmF0aW9uXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgRE9MTEhPVVNFX1NDQU5fQ09PTERPV05fTVM6IHouY29lcmNlLm51bWJlcigpLmRlZmF1bHQoMTAwMCksXG4gIERPTExIT1VTRV9JTkRFWF9ERUJPVU5DRV9NUzogei5jb2VyY2UubnVtYmVyKCkuZGVmYXVsdCgyMDAwKSxcbiAgRE9MTEhPVVNFX0VMRU1FTlRfQ0FDSEVfVFRMX01TOiB6LmNvZXJjZS5udW1iZXIoKS5kZWZhdWx0KDM2MDAwMDApLFxuICBET0xMSE9VU0VfUEFUSF9DQUNIRV9UVExfTVM6IHouY29lcmNlLm51bWJlcigpLmRlZmF1bHQoMzYwMDAwMCksXG4gIERPTExIT1VTRV9UT09MX0NBQ0hFX1RUTF9NUzogei5jb2VyY2UubnVtYmVyKCkuZGVmYXVsdCg2MDAwMCksXG4gIERPTExIT1VTRV9HTE9CQUxfQ0FDSEVfTUVNT1JZX01COiB6LmNvZXJjZS5udW1iZXIoKS5kZWZhdWx0KDE1MCksXG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBQZXJtaXNzaW9uIFByb21wdCBDb25maWd1cmF0aW9uIChJc3N1ZSAjNjI1KVxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqIE1heGltdW0gQ0xJIGFwcHJvdmFsIHJlY29yZHMgYmVmb3JlIExSVSBldmljdGlvbiAoZGVmYXVsdDogNTApICovXG4gIERPTExIT1VTRV9DTElfQVBQUk9WQUxfTUFYOiB6LmNvZXJjZS5udW1iZXIoKS5kZWZhdWx0KDUwKSxcblxuICAvKiogRGVmYXVsdCBUVEwgZm9yIENMSSBhcHByb3ZhbCByZWNvcmRzIGluIG1zIChkZWZhdWx0OiAzMDAwMDAgPSA1IG1pbikgKi9cbiAgRE9MTEhPVVNFX0NMSV9BUFBST1ZBTF9UVExfTVM6IHouY29lcmNlLm51bWJlcigpLmRlZmF1bHQoMzAwXzAwMCksXG5cbiAgLyoqIFBlcm1pc3Npb24gcHJvbXB0IHJhdGUgbGltaXQ6IG1heCByZXF1ZXN0cyBwZXIgd2luZG93IChkZWZhdWx0OiAxMDApICovXG4gIERPTExIT1VTRV9QRVJNSVNTSU9OX1BST01QVF9SQVRFX0xJTUlUOiB6LmNvZXJjZS5udW1iZXIoKS5kZWZhdWx0KDEwMCksXG5cbiAgLyoqIENMSSBhcHByb3ZhbCBjcmVhdGlvbiByYXRlIGxpbWl0OiBtYXggcmVxdWVzdHMgcGVyIHdpbmRvdyAoZGVmYXVsdDogMjApICovXG4gIERPTExIT1VTRV9DTElfQVBQUk9WQUxfUkFURV9MSU1JVDogei5jb2VyY2UubnVtYmVyKCkuZGVmYXVsdCgyMCksXG5cbiAgLyoqIFJhdGUgbGltaXQgd2luZG93IGluIG1zIGZvciBwZXJtaXNzaW9uIHByb21wdCBhbmQgQ0xJIGFwcHJvdmFscyAoZGVmYXVsdDogNjAwMDAgPSA2MHMpICovXG4gIERPTExIT1VTRV9QRVJNSVNTSU9OX1JBVEVfV0lORE9XX01TOiB6LmNvZXJjZS5udW1iZXIoKS5kZWZhdWx0KDYwXzAwMCksXG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBNZXRyaWNzIENvbGxlY3Rpb24gQ29uZmlndXJhdGlvblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIERPTExIT1VTRV9NRVRSSUNTX0VOQUJMRUQ6IHouY29lcmNlLmJvb2xlYW4oKS5kZWZhdWx0KHRydWUpLFxuICBET0xMSE9VU0VfTUVUUklDU19DT0xMRUNUSU9OX0lOVEVSVkFMX01TOiB6LmNvZXJjZS5udW1iZXIoKS5taW4oMTAwMCkubWF4KDMwMDAwMCkuZGVmYXVsdCgxNTAwMCksXG4gIERPTExIT1VTRV9NRVRSSUNTX01BWF9TTkFQU0hPVF9TSVpFOiB6LmNvZXJjZS5udW1iZXIoKS5kZWZhdWx0KDEwMjQwMCksXG4gIERPTExIT1VTRV9NRVRSSUNTX0NPTExFQ1RPUl9GQUlMVVJFX1RIUkVTSE9MRDogei5jb2VyY2UubnVtYmVyKCkubWluKDEpLm1heCgxMDApLmRlZmF1bHQoMTApLFxuICBET0xMSE9VU0VfTUVUUklDU19DT0xMRUNUSU9OX0RVUkFUSU9OX1dBUk5fTVM6IHouY29lcmNlLm51bWJlcigpLm1pbigxMDApLm1heCg2MDAwMCkuZGVmYXVsdCg1MDAwKSxcbiAgRE9MTEhPVVNFX01FVFJJQ1NfTUVNT1JZX1NOQVBTSE9UX0NBUEFDSVRZOiB6LmNvZXJjZS5udW1iZXIoKS5taW4oMTApLm1heCgxMDAwMCkuZGVmYXVsdCgyNDApLFxuXG4gIC8vIFBhdHRlcm4gZW5jcnlwdGlvbiBzZXR0aW5ncyBmb3IgTWVtb3J5IFNlY3VyaXR5IChJc3N1ZSAjMTMyMSlcbiAgRE9MTEhPVVNFX0RJU0FCTEVfRU5DUllQVElPTjogei5jb2VyY2UuYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBET0xMSE9VU0VfRU5DUllQVElPTl9TRUNSRVQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgRE9MTEhPVVNFX0VOQ1JZUFRJT05fU0FMVDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuXG4gIC8vIFRva2VuIGVuY3J5cHRpb24gc2VjcmV0IChTRUMtMDEsICMxNzM1KVxuICAvLyBXaGVuIHNldCwgcmVwbGFjZXMgdGhlIHByZWRpY3RhYmxlIG1hY2hpbmUtZGVyaXZlZCBwYXNzcGhyYXNlIGZvciB0b2tlbiBlbmNyeXB0aW9uLlxuICAvLyBTdHJvbmdseSByZWNvbW1lbmRlZCBmb3IgYW55IHNoYXJlZCBvciBtdWx0aS11c2VyIGVudmlyb25tZW50LlxuICAvLyBNaW5pbXVtIDMyIGNoYXJhY3RlcnMgZW5mb3JjZWQgdG8gcHJldmVudCB3ZWFrIHBhc3NwaHJhc2VzLlxuICBET0xMSE9VU0VfVE9LRU5fU0VDUkVUOiB6LnN0cmluZygpLm1pbigzMikub3B0aW9uYWwoKSxcbn0pO1xuXG4vKipcbiAqIFZhbGlkYXRlZCBlbnZpcm9ubWVudCB2YXJpYWJsZXNcbiAqIFR5cGUgaXMgYXV0b21hdGljYWxseSBpbmZlcnJlZCBmcm9tIHRoZSBzY2hlbWFcbiAqL1xuZXhwb3J0IGNvbnN0IGVudiA9IGVudlNjaGVtYS5wYXJzZShwcm9jZXNzLmVudik7XG5cbi8qKlxuICogRW52aXJvbm1lbnQgdHlwZSAoaW5mZXJyZWQgZnJvbSBzY2hlbWEpXG4gKi9cbmV4cG9ydCB0eXBlIEVudiA9IHouaW5mZXI8dHlwZW9mIGVudlNjaGVtYT47XG5cbi8qKlxuICogQ29udmVuaWVuY2UgaGVscGVycyBmb3IgZW52aXJvbm1lbnQgZGV0ZWN0aW9uXG4gKi9cbmV4cG9ydCBjb25zdCBpc1Rlc3QgPSBlbnYuTk9ERV9FTlYgPT09ICd0ZXN0JztcbmV4cG9ydCBjb25zdCBpc0RldmVsb3BtZW50ID0gZW52Lk5PREVfRU5WID09PSAnZGV2ZWxvcG1lbnQnO1xuZXhwb3J0IGNvbnN0IGlzUHJvZHVjdGlvbiA9IGVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nO1xuXG4vKipcbiAqIExvZyBlbnZpcm9ubWVudCBjb25maWd1cmF0aW9uICh3aXRob3V0IHNlY3JldHMpXG4gKi9cbmlmIChpc0RldmVsb3BtZW50IHx8IGlzVGVzdCkge1xuICBsb2dnZXIuZGVidWcoJ0Vudmlyb25tZW50IGNvbmZpZ3VyYXRpb24gbG9hZGVkOicsIHtcbiAgICBOT0RFX0VOVjogZW52Lk5PREVfRU5WLFxuICAgIFBPUlQ6IGVudi5QT1JULFxuICAgIExPR19MRVZFTDogZW52LkxPR19MRVZFTCxcbiAgICBIQVNfR0lUSFVCX1RPS0VOOiAhIWVudi5HSVRIVUJfVE9LRU4sXG4gICAgSEFTX0dJVEhVQl9URVNUX1RPS0VOOiAhIWVudi5HSVRIVUJfVEVTVF9UT0tFTixcbiAgfSk7XG59XG4iXX0=
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
* Auto-generated file - DO NOT EDIT
|
|
3
3
|
* Generated at build time by scripts/generate-version.js
|
|
4
4
|
*/
|
|
5
|
-
export declare const PACKAGE_VERSION = "2.0.27-rc.
|
|
6
|
-
export declare const BUILD_TIMESTAMP = "2026-04-
|
|
5
|
+
export declare const PACKAGE_VERSION = "2.0.27-rc.8";
|
|
6
|
+
export declare const BUILD_TIMESTAMP = "2026-04-20T02:27:35.072Z";
|
|
7
7
|
export declare const BUILD_TYPE: 'npm' | 'git';
|
|
8
8
|
export declare const PACKAGE_NAME = "@dollhousemcp/mcp-server";
|
|
9
9
|
//# sourceMappingURL=version.d.ts.map
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
* Auto-generated file - DO NOT EDIT
|
|
3
3
|
* Generated at build time by scripts/generate-version.js
|
|
4
4
|
*/
|
|
5
|
-
export const PACKAGE_VERSION = '2.0.27-rc.
|
|
6
|
-
export const BUILD_TIMESTAMP = '2026-04-
|
|
5
|
+
export const PACKAGE_VERSION = '2.0.27-rc.8';
|
|
6
|
+
export const BUILD_TIMESTAMP = '2026-04-20T02:27:35.072Z';
|
|
7
7
|
export const BUILD_TYPE = 'npm';
|
|
8
8
|
export const PACKAGE_NAME = '@dollhousemcp/mcp-server';
|
|
9
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9nZW5lcmF0ZWQvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFFSCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsYUFBYSxDQUFDO0FBQzdDLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRywwQkFBMEIsQ0FBQztBQUMxRCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQWtCLEtBQUssQ0FBQztBQUMvQyxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsMEJBQTBCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEF1dG8tZ2VuZXJhdGVkIGZpbGUgLSBETyBOT1QgRURJVFxuICogR2VuZXJhdGVkIGF0IGJ1aWxkIHRpbWUgYnkgc2NyaXB0cy9nZW5lcmF0ZS12ZXJzaW9uLmpzXG4gKi9cblxuZXhwb3J0IGNvbnN0IFBBQ0tBR0VfVkVSU0lPTiA9ICcyLjAuMjctcmMuOCc7XG5leHBvcnQgY29uc3QgQlVJTERfVElNRVNUQU1QID0gJzIwMjYtMDQtMjBUMDI6Mjc6MzUuMDcyWic7XG5leHBvcnQgY29uc3QgQlVJTERfVFlQRTogJ25wbScgfCAnZ2l0JyA9ICducG0nO1xuZXhwb3J0IGNvbnN0IFBBQ0tBR0VfTkFNRSA9ICdAZG9sbGhvdXNlbWNwL21jcC1zZXJ2ZXInO1xuIl19
|
|
@@ -117,7 +117,7 @@ export declare function detectLegacyLeader(lockPath?: string): Promise<LegacyLea
|
|
|
117
117
|
* Read and parse the leader lock file.
|
|
118
118
|
* Returns null if the file doesn't exist, is unreadable, or has invalid content.
|
|
119
119
|
*/
|
|
120
|
-
export declare function readLeaderLock(): Promise<ConsoleLeaderInfo | null>;
|
|
120
|
+
export declare function readLeaderLock(lockPath?: string): Promise<ConsoleLeaderInfo | null>;
|
|
121
121
|
/**
|
|
122
122
|
* Check if a leader lock is stale (dead process or expired heartbeat).
|
|
123
123
|
*/
|
|
@@ -125,13 +125,14 @@ export declare function isLockStale(info: ConsoleLeaderInfo): boolean;
|
|
|
125
125
|
/**
|
|
126
126
|
* Attempt to atomically claim leadership.
|
|
127
127
|
*
|
|
128
|
-
*
|
|
129
|
-
*
|
|
130
|
-
* lock
|
|
128
|
+
* Creates the lock file with exclusive-write semantics so only one process
|
|
129
|
+
* can win the initial claim. This avoids startup races where multiple
|
|
130
|
+
* contenders overwrite the lock in quick succession and each briefly believe
|
|
131
|
+
* they are leader.
|
|
131
132
|
*
|
|
132
133
|
* @returns true if this process successfully claimed leadership
|
|
133
134
|
*/
|
|
134
|
-
export declare function claimLeadership(info: ConsoleLeaderInfo): Promise<boolean>;
|
|
135
|
+
export declare function claimLeadership(info: ConsoleLeaderInfo, lockPath?: string): Promise<boolean>;
|
|
135
136
|
/**
|
|
136
137
|
* Delete the leader lock file (for cleanup or takeover).
|
|
137
138
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LeaderElection.d.ts","sourceRoot":"","sources":["../../../src/web/console/LeaderElection.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AA+CH,uCAAuC;AACvC,eAAO,MAAM,YAAY,IAAI,CAAC;AAE9B;;;GAGG;AACH,eAAO,MAAM,wBAAwB,IAAI,CAAC;AAE1C,kFAAkF;AAClF,eAAO,MAAM,+BAA+B,IAAI,CAAC;AAEjD,kFAAkF;AAClF,eAAO,MAAM,qBAAqB,UAAU,CAAC;AAE7C;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,QAAQ,GAAG,UAAU,CAAC;IAC5B,sEAAsE;IACtE,UAAU,EAAE,iBAAiB,CAAC;CAC/B;AAED,MAAM,WAAW,wBAAwB;IACvC,aAAa,EAAE,OAAO,CAAC;IACvB,MAAM,EAAE,0BAA0B,GAAG,cAAc,GAAG,eAAe,GAAG,uBAAuB,CAAC;IAChG,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,wBAAwB,EAAE,MAAM,CAAC;IACjC,uBAAuB,EAAE,MAAM,CAAC;CACjC;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAQnD;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,iBAAiB,GAAG,MAAM,CAKtE;AAED;;;GAGG;AACH,wBAAgB,+BAA+B,CAAC,IAAI,EAAE,iBAAiB,GAAG,MAAM,CAM/E;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,iBAAiB,CAYnF;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,iBAAiB,EAC5B,QAAQ,EAAE,iBAAiB,GAC1B,wBAAwB,CAkD1B;AAED;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B,aAAa,EAAE,OAAO,CAAC;IACvB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,kBAAkB,CAAC,QAAQ,GAAE,MAAyB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAiBvG;AAED;;;GAGG;AACH,wBAAsB,cAAc,
|
|
1
|
+
{"version":3,"file":"LeaderElection.d.ts","sourceRoot":"","sources":["../../../src/web/console/LeaderElection.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,8 +18,8 @@
|
|
|
18
18
|
* @since v2.1.0 — Issue #1700
|
|
19
19
|
*/
|
|
20
20
|
import { homedir } from 'node:os';
|
|
21
|
-
import { join } from 'node:path';
|
|
22
|
-
import { mkdir,
|
|
21
|
+
import { dirname, join } from 'node:path';
|
|
22
|
+
import { mkdir, open, readFile, rename, unlink, writeFile } from 'node:fs/promises';
|
|
23
23
|
import { UnicodeValidator } from '../../security/validators/unicodeValidator.js';
|
|
24
24
|
import { env } from '../../config/env.js';
|
|
25
25
|
import { PACKAGE_VERSION } from '../../generated/version.js';
|
|
@@ -209,9 +209,9 @@ export async function detectLegacyLeader(lockPath = LEGACY_LOCK_FILE) {
|
|
|
209
209
|
* Read and parse the leader lock file.
|
|
210
210
|
* Returns null if the file doesn't exist, is unreadable, or has invalid content.
|
|
211
211
|
*/
|
|
212
|
-
export async function readLeaderLock() {
|
|
212
|
+
export async function readLeaderLock(lockPath = LOCK_FILE) {
|
|
213
213
|
try {
|
|
214
|
-
const content = await readFile(
|
|
214
|
+
const content = await readFile(lockPath, 'utf-8');
|
|
215
215
|
const data = JSON.parse(content);
|
|
216
216
|
if (data.version !== LOCK_VERSION || !data.pid || !data.port || !data.sessionId) {
|
|
217
217
|
return null;
|
|
@@ -221,7 +221,7 @@ export async function readLeaderLock() {
|
|
|
221
221
|
catch (error) {
|
|
222
222
|
if (error.code !== 'ENOENT') {
|
|
223
223
|
logger.debug('[LeaderElection] Ignoring unreadable or invalid leader lock', {
|
|
224
|
-
lockFile:
|
|
224
|
+
lockFile: lockPath,
|
|
225
225
|
error: error instanceof Error ? error.message : String(error),
|
|
226
226
|
});
|
|
227
227
|
}
|
|
@@ -241,28 +241,31 @@ export function isLockStale(info) {
|
|
|
241
241
|
/**
|
|
242
242
|
* Attempt to atomically claim leadership.
|
|
243
243
|
*
|
|
244
|
-
*
|
|
245
|
-
*
|
|
246
|
-
* lock
|
|
244
|
+
* Creates the lock file with exclusive-write semantics so only one process
|
|
245
|
+
* can win the initial claim. This avoids startup races where multiple
|
|
246
|
+
* contenders overwrite the lock in quick succession and each briefly believe
|
|
247
|
+
* they are leader.
|
|
247
248
|
*
|
|
248
249
|
* @returns true if this process successfully claimed leadership
|
|
249
250
|
*/
|
|
250
|
-
export async function claimLeadership(info) {
|
|
251
|
-
await mkdir(
|
|
252
|
-
const tmpFile = join(RUN_DIR, `console-leader.lock.${process.pid}.tmp`);
|
|
251
|
+
export async function claimLeadership(info, lockPath = LOCK_FILE) {
|
|
252
|
+
await mkdir(dirname(lockPath), { recursive: true });
|
|
253
253
|
try {
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
254
|
+
const handle = await open(lockPath, 'wx', 0o600);
|
|
255
|
+
try {
|
|
256
|
+
await handle.writeFile(JSON.stringify(info, null, 2), 'utf-8');
|
|
257
|
+
}
|
|
258
|
+
finally {
|
|
259
|
+
await handle.close();
|
|
260
|
+
}
|
|
261
|
+
// Verify we won the race.
|
|
262
|
+
const written = await readLeaderLock(lockPath);
|
|
258
263
|
return written !== null && written.pid === info.pid;
|
|
259
264
|
}
|
|
260
|
-
catch {
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
await unlink(tmpFile);
|
|
265
|
+
catch (error) {
|
|
266
|
+
if (error.code === 'EEXIST') {
|
|
267
|
+
return false;
|
|
264
268
|
}
|
|
265
|
-
catch { /* ignore */ }
|
|
266
269
|
return false;
|
|
267
270
|
}
|
|
268
271
|
}
|
|
@@ -425,4 +428,4 @@ export function registerLeaderCleanup() {
|
|
|
425
428
|
process.once('SIGINT', cleanup);
|
|
426
429
|
process.once('SIGHUP', cleanup);
|
|
427
430
|
}
|
|
428
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTGVhZGVyRWxlY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvd2ViL2NvbnNvbGUvTGVhZGVyRWxlY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtCRztBQUVILE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDbEMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNqQyxPQUFPLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzlFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMxQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUV6RCx3Q0FBd0M7QUFDeEMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLFlBQVksRUFBRSxLQUFLLENBQUMsQ0FBQztBQUVyRDs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBTSxxQkFBcUIsR0FBRywwQkFBMEIsQ0FBQztBQUV6RCx5RkFBeUY7QUFDekYsTUFBTSxvQkFBb0IsR0FBRyxxQkFBcUIsQ0FBQztBQUVuRDs7Ozs7R0FLRztBQUNILE1BQU0sU0FBUyxHQUFHLEdBQUcsQ0FBQyxrQ0FBa0MsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLHFCQUFxQixDQUFDLENBQUM7QUFFakcsaUZBQWlGO0FBQ2pGLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO0FB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QyxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLHFCQUFxQjtJQUNuQyxNQUFNLE9BQU8sR0FBRyxHQUFHLEVBQUUsR0FBRyxnQkFBZ0IsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM5RCxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM5QixPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNqQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNoQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztBQUNsQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBMZWFkZXIgZWxlY3Rpb24gZm9yIHRoZSB1bmlmaWVkIHdlYiBjb25zb2xlLlxuICpcbiAqIFdoZW4gbXVsdGlwbGUgTUNQIHNlcnZlciBpbnN0YW5jZXMgcnVuIGNvbmN1cnJlbnRseSwgb25seSBvbmUgc2hvdWxkIGhvc3RcbiAqIHRoZSB3ZWIgY29uc29sZSAodGhlIFwibGVhZGVyXCIpLiBPdGhlcnMgYmVjb21lIFwiZm9sbG93ZXJzXCIgdGhhdCBmb3J3YXJkXG4gKiBldmVudHMgdG8gdGhlIGxlYWRlci4gVGhpcyBtb2R1bGUgaGFuZGxlczpcbiAqXG4gKiAxLiBSZWFkaW5nL3dyaXRpbmcgYSBsZWFkZXIgbG9jayBmaWxlIGF0IH4vLmRvbGxob3VzZS9ydW4vY29uc29sZS1sZWFkZXIubG9ja1xuICogMi4gQXRvbWljIGNsYWltIHZpYSB0ZW1wK3JlbmFtZSB0byBwcmV2ZW50IFRPQ1RPVSByYWNlc1xuICogMy4gUElELWJhc2VkIHN0YWxlIGRldGVjdGlvbiAoc2lnbmFsLTAgbGl2ZW5lc3MgY2hlY2spXG4gKiA0LiBIZWFydGJlYXQgdXBkYXRlcyAoMTBzIGludGVydmFsKSBzbyBmb2xsb3dlcnMgY2FuIGRldGVjdCBodW5nIGxlYWRlcnNcbiAqIDUuIENsZWFudXAgb24gcHJvY2VzcyBleGl0XG4gKlxuICogVGhlIGNvbmZpZ3VyZWQgcG9ydCBiaW5kaW5nIGlzIHRoZSB1bHRpbWF0ZSB0aWVicmVha2VyOiBldmVuIGlmIHR3b1xuICogcHJvY2Vzc2VzIGJvdGggd3JpdGUgdGhlIGxvY2sgZmlsZSwgb25seSBvbmUgY2FuIGJpbmQgdGhlIHBvcnQgKHNlZVxuICogYERPTExIT1VTRV9XRUJfQ09OU09MRV9QT1JUYCBpbiBgc3JjL2NvbmZpZy9lbnYudHNgKS5cbiAqXG4gKiBAc2luY2UgdjIuMS4wIOKAlCBJc3N1ZSAjMTcwMFxuICovXG5cbmltcG9ydCB7IGhvbWVkaXIgfSBmcm9tICdub2RlOm9zJztcbmltcG9ydCB7IGpvaW4gfSBmcm9tICdub2RlOnBhdGgnO1xuaW1wb3J0IHsgbWtkaXIsIHJlYWRGaWxlLCB3cml0ZUZpbGUsIHJlbmFtZSwgdW5saW5rIH0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcyc7XG5pbXBvcnQgeyBVbmljb2RlVmFsaWRhdG9yIH0gZnJvbSAnLi4vLi4vc2VjdXJpdHkvdmFsaWRhdG9ycy91bmljb2RlVmFsaWRhdG9yLmpzJztcbmltcG9ydCB7IGVudiB9IGZyb20gJy4uLy4uL2NvbmZpZy9lbnYuanMnO1xuaW1wb3J0IHsgUEFDS0FHRV9WRVJTSU9OIH0gZnJvbSAnLi4vLi4vZ2VuZXJhdGVkL3ZlcnNpb24uanMnO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnLi4vLi4vdXRpbHMvbG9nZ2VyLmpzJztcbmltcG9ydCB7IGNvbXBhcmVWZXJzaW9ucyB9IGZyb20gJy4uLy4uL3V0aWxzL3ZlcnNpb24uanMnO1xuXG4vKiogRGlyZWN0b3J5IGZvciBydW50aW1lIHN0YXRlIGZpbGVzICovXG5jb25zdCBSVU5fRElSID0gam9pbihob21lZGlyKCksICcuZG9sbGhvdXNlJywgJ3J1bicpO1xuXG4vKipcbiAqIEJ1aWx0LWluIGRlZmF1bHQgZmlsZW5hbWUgZm9yIHRoZSBhdXRoZW50aWNhdGVkIGNvbnNvbGUncyBsZWFkZXIgbG9jay5cbiAqXG4gKiBUaGUgYC5hdXRoYCBzdWZmaXggaXNvbGF0ZXMgdGhpcyBmcm9tIGFueSBsZWdhY3kgbm8tYXV0aGVudGljYXRpb25cbiAqIERvbGxob3VzZU1DUCBpbnN0YWxsYXRpb24gdGhhdCBtYXkgYWxzbyBiZSBydW5uaW5nIG9uIHRoZSBzYW1lXG4gKiBtYWNoaW5lLiBUaG9zZSBvbGRlciBpbnN0YWxscyB1c2UgYGNvbnNvbGUtbGVhZGVyLmxvY2tgIChubyBzdWZmaXgpO1xuICogdGhlIGF1dGhlbnRpY2F0ZWQgY29uc29sZSB1c2VzIGBjb25zb2xlLWxlYWRlci5hdXRoLmxvY2tgLiBDb21iaW5lZFxuICogd2l0aCB0aGUgcG9ydCBzZXBhcmF0aW9uLCB0aGlzIG1lYW5zIHRoZSB0d28gZ2VuZXJhdGlvbnMgb2YgdGhlXG4gKiBjb25zb2xlIGNhbiBjb2V4aXN0IHdpdGggemVybyBpbnRlcmZlcmVuY2Ug4oCUIGRpZmZlcmVudCBwb3J0LCBkaWZmZXJlbnRcbiAqIGxvY2sgZmlsZSwgZGlmZmVyZW50IHRva2VuIGZpbGUsIGluZGVwZW5kZW50IGxlYWRlciBlbGVjdGlvbiBzcGFjZXMuXG4gKi9cbmNvbnN0IERFRkFVTFRfTE9DS19GSUxFTkFNRSA9ICdjb25zb2xlLWxlYWRlci5hdXRoLmxvY2snO1xuXG4vKiogTGVnYWN5IGxvY2sgZmlsZW5hbWUgZnJvbSB0aGUgcHJlLWF1dGhlbnRpY2F0aW9uIGNvbnNvbGUuIFVzZWQgb25seSBmb3IgZGV0ZWN0aW9uLiAqL1xuY29uc3QgTEVHQUNZX0xPQ0tfRklMRU5BTUUgPSAnY29uc29sZS1sZWFkZXIubG9jayc7XG5cbi8qKlxuICogUGF0aCB0byB0aGUgbGVhZGVyIGxvY2sgZmlsZS4gUHJlZmVycyB0aGUgYERPTExIT1VTRV9DT05TT0xFX0xFQURFUl9MT0NLX0ZJTEVgXG4gKiBlbnYgdmFyIHdoZW4gc2V0LCBvdGhlcndpc2UgdXNlcyBgREVGQVVMVF9MT0NLX0ZJTEVOQU1FYCB1bmRlciBSVU5fRElSLlxuICogVGhlIGVudiB2YXIgaXMgdGhlIHNpbmdsZSBzb3VyY2Ugb2YgdHJ1dGggd2hlbiBwcmVzZW50LCBzbyBhIGRlcGxveW1lbnRcbiAqIGNhbiByZWxvY2F0ZSB0aGUgbG9jayB3aXRob3V0IGNvZGUgY2hhbmdlcyAoc2VlIGBzcmMvY29uZmlnL2Vudi50c2ApLlxuICovXG5jb25zdCBMT0NLX0ZJTEUgPSBlbnYuRE9MTEhPVVNFX0NPTlNPTEVfTEVBREVSX0xPQ0tfRklMRSA/PyBqb2luKFJVTl9ESVIsIERFRkFVTFRfTE9DS19GSUxFTkFNRSk7XG5cbi8qKiBQYXRoIHRvIHRoZSBsZWdhY3kgcHJlLWF1dGggbG9jayBmaWxlICh1c2VkIGJ5IGBkZXRlY3RMZWdhY3lMZWFkZXJgIG9ubHkpLiAqL1xuY29uc3QgTEVHQUNZX0xPQ0tfRklMRSA9IGpvaW4oUlVOX0RJUiwgTEVHQUNZX0xPQ0tfRklMRU5BTUUpO1xuXG4vKiogSG93IG9mdGVuIHRoZSBsZWFkZXIgdXBkYXRlcyBpdHMgaGVhcnRiZWF0IChtcykgKi9cbmNvbnN0IEhFQVJUQkVBVF9JTlRFUlZBTF9NUyA9IDEwXzAwMDtcblxuLyoqIEhvdyBsb25nIGJlZm9yZSBhIGhlYXJ0YmVhdCBpcyBjb25zaWRlcmVkIHN0YWxlIChtcykgKi9cbmNvbnN0IEhFQVJUQkVBVF9TVEFMRV9NUyA9IDMwXzAwMDtcblxuLyoqIEN1cnJlbnQgbG9jayBmaWxlIHNjaGVtYSB2ZXJzaW9uICovXG5leHBvcnQgY29uc3QgTE9DS19WRVJTSU9OID0gMTtcblxuLyoqXG4gKiBWZXJzaW9uIG9mIHRoZSBsZWFkZXItZWxlY3Rpb24vc2Vzc2lvbiBtZXRhZGF0YSBjb250cmFjdCB1c2VkIGJ5IHRoZVxuICogYXV0aGVudGljYXRlZCB3ZWIgY29uc29sZS4gT2xkZXIgbGVhZGVycyB3aWxsIG5vdCBoYXZlIHRoaXMgZmllbGQuXG4gKi9cbmV4cG9ydCBjb25zdCBDT05TT0xFX1BST1RPQ09MX1ZFUlNJT04gPSAxO1xuXG4vKiogTWlzc2luZyBwcm90b2NvbCBtZXRhZGF0YSBtZWFucyB0aGUgbGVhZGVyIHByZWRhdGVzIHZlcnNpb24tYXdhcmUgZWxlY3Rpb24uICovXG5leHBvcnQgY29uc3QgTEVHQUNZX0NPTlNPTEVfUFJPVE9DT0xfVkVSU0lPTiA9IDA7XG5cbi8qKiBPbGQgbG9jayBmaWxlcyBkbyBub3QgY2FycnkgcGFja2FnZSB2ZXJzaW9uIG1ldGFkYXRhLiBUcmVhdCB0aGVtIGFzIG9sZGVzdC4gKi9cbmV4cG9ydCBjb25zdCBMRUdBQ1lfU0VSVkVSX1ZFUlNJT04gPSAnMC4wLjAnO1xuXG4vKipcbiAqIEluZm9ybWF0aW9uIHN0b3JlZCBpbiB0aGUgbGVhZGVyIGxvY2sgZmlsZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb25zb2xlTGVhZGVySW5mbyB7XG4gIHZlcnNpb246IG51bWJlcjtcbiAgcGlkOiBudW1iZXI7XG4gIHBvcnQ6IG51bWJlcjtcbiAgc2Vzc2lvbklkOiBzdHJpbmc7XG4gIHN0YXJ0ZWRBdDogc3RyaW5nO1xuICBoZWFydGJlYXQ6IHN0cmluZztcbiAgc2VydmVyVmVyc2lvbj86IHN0cmluZztcbiAgY29uc29sZVByb3RvY29sVmVyc2lvbj86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBSZXN1bHQgb2YgYSBsZWFkZXIgZWxlY3Rpb24gYXR0ZW1wdC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbGVjdGlvblJlc3VsdCB7XG4gIHJvbGU6ICdsZWFkZXInIHwgJ2ZvbGxvd2VyJztcbiAgLyoqIExlYWRlciBpbmZvIOKAlCBmb3IgZm9sbG93ZXJzLCB0aGlzIGlzIHRoZSBleGlzdGluZyBsZWFkZXIncyBpbmZvICovXG4gIGxlYWRlckluZm86IENvbnNvbGVMZWFkZXJJbmZvO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExlYWRlclByZWZlcmVuY2VEZWNpc2lvbiB7XG4gIHNob3VsZFJlcGxhY2U6IGJvb2xlYW47XG4gIHJlYXNvbjogJ25ld2VyLWNvbXBhdGlibGUtdmVyc2lvbicgfCAnc2FtZS12ZXJzaW9uJyB8ICdvbGRlci12ZXJzaW9uJyB8ICdpbmNvbXBhdGlibGUtcHJvdG9jb2wnO1xuICBjYW5kaWRhdGVWZXJzaW9uOiBzdHJpbmc7XG4gIGV4aXN0aW5nVmVyc2lvbjogc3RyaW5nO1xuICBjYW5kaWRhdGVQcm90b2NvbFZlcnNpb246IG51bWJlcjtcbiAgZXhpc3RpbmdQcm90b2NvbFZlcnNpb246IG51bWJlcjtcbn1cblxuLyoqXG4gKiBDaGVjayB3aGV0aGVyIGEgcHJvY2VzcyB3aXRoIHRoZSBnaXZlbiBQSUQgaXMgYWxpdmUuXG4gKiBVc2VzIHNpZ25hbCAwIHdoaWNoIGNoZWNrcyBleGlzdGVuY2Ugd2l0aG91dCBzZW5kaW5nIGEgc2lnbmFsLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNQcm9jZXNzQWxpdmUocGlkOiBudW1iZXIpOiBib29sZWFuIHtcbiAgdHJ5IHtcbiAgICBwcm9jZXNzLmtpbGwocGlkLCAwKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBjYXRjaCAoZXJyOiBhbnkpIHtcbiAgICAvLyBFUEVSTSA9IHByb2Nlc3MgZXhpc3RzIGJ1dCBvd25lZCBieSBhbm90aGVyIHVzZXIg4oCUIHN0aWxsIGFsaXZlXG4gICAgcmV0dXJuIGVycj8uY29kZSA9PT0gJ0VQRVJNJztcbiAgfVxufVxuXG4vKipcbiAqIE5vcm1hbGl6ZSB0aGUgc2VydmVyIHZlcnNpb24gcHJlc2VudCBpbiB0aGUgbGVhZGVyIGxvY2suXG4gKiBNaXNzaW5nIG1ldGFkYXRhIG1lYW5zIFwibGVnYWN5IGxlYWRlclwiIGZvciBlbGVjdGlvbiBwdXJwb3Nlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldExlYWRlclNlcnZlclZlcnNpb24oaW5mbzogQ29uc29sZUxlYWRlckluZm8pOiBzdHJpbmcge1xuICBpZiAodHlwZW9mIGluZm8uc2VydmVyVmVyc2lvbiA9PT0gJ3N0cmluZycgJiYgaW5mby5zZXJ2ZXJWZXJzaW9uLnRyaW0oKS5sZW5ndGggPiAwKSB7XG4gICAgcmV0dXJuIGluZm8uc2VydmVyVmVyc2lvbi50cmltKCk7XG4gIH1cbiAgcmV0dXJuIExFR0FDWV9TRVJWRVJfVkVSU0lPTjtcbn1cblxuLyoqXG4gKiBOb3JtYWxpemUgdGhlIGNvbnNvbGUgcHJvdG9jb2wgdmVyc2lvbiBwcmVzZW50IGluIHRoZSBsZWFkZXIgbG9jay5cbiAqIE1pc3NpbmcgbWV0YWRhdGEgbWVhbnMgYSBsZWFkZXIgZnJvbSBiZWZvcmUgdmVyc2lvbi1hd2FyZSBlbGVjdGlvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldExlYWRlckNvbnNvbGVQcm90b2NvbFZlcnNpb24oaW5mbzogQ29uc29sZUxlYWRlckluZm8pOiBudW1iZXIge1xuICBjb25zdCByYXcgPSBpbmZvLmNvbnNvbGVQcm90b2NvbFZlcnNpb247XG4gIGlmICh0eXBlb2YgcmF3ID09PSAnbnVtYmVyJyAmJiBOdW1iZXIuaXNJbnRlZ2VyKHJhdykgJiYgcmF3ID49IDApIHtcbiAgICByZXR1cm4gcmF3O1xuICB9XG4gIHJldHVybiBMRUdBQ1lfQ09OU09MRV9QUk9UT0NPTF9WRVJTSU9OO1xufVxuXG4vKipcbiAqIENyZWF0ZSB0aGlzIHByb2Nlc3MncyBsZWFkZXIgbWV0YWRhdGEgaW4gb25lIHBsYWNlIHNvIGFsbCBsZWFkZXJzaGlwIHBhdGhzXG4gKiBwdWJsaXNoIHRoZSBzYW1lIHZlcnNpb24gYW5kIHByb3RvY29sIGluZm9ybWF0aW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTGVhZGVySW5mbyhzZXNzaW9uSWQ6IHN0cmluZywgcG9ydDogbnVtYmVyKTogQ29uc29sZUxlYWRlckluZm8ge1xuICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCk7XG4gIHJldHVybiB7XG4gICAgdmVyc2lvbjogTE9DS19WRVJTSU9OLFxuICAgIHBpZDogcHJvY2Vzcy5waWQsXG4gICAgcG9ydCxcbiAgICBzZXNzaW9uSWQ6IFVuaWNvZGVWYWxpZGF0b3Iubm9ybWFsaXplKHNlc3Npb25JZCkubm9ybWFsaXplZENvbnRlbnQsXG4gICAgc3RhcnRlZEF0OiBub3csXG4gICAgaGVhcnRiZWF0OiBub3csXG4gICAgc2VydmVyVmVyc2lvbjogUEFDS0FHRV9WRVJTSU9OLFxuICAgIGNvbnNvbGVQcm90b2NvbFZlcnNpb246IENPTlNPTEVfUFJPVE9DT0xfVkVSU0lPTixcbiAgfTtcbn1cblxuLyoqXG4gKiBEZWNpZGUgd2hldGhlciB0aGlzIHByb2Nlc3Mgc2hvdWxkIHJlcGxhY2UgdGhlIGN1cnJlbnQgbGl2ZSBsZWFkZXIgYmFzZWQgb25cbiAqIGNvbXBhdGliaWxpdHkgZmlyc3QsIHRoZW4gcGFja2FnZSB2ZXJzaW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZXZhbHVhdGVMZWFkZXJQcmVmZXJlbmNlKFxuICBjYW5kaWRhdGU6IENvbnNvbGVMZWFkZXJJbmZvLFxuICBleGlzdGluZzogQ29uc29sZUxlYWRlckluZm8sXG4pOiBMZWFkZXJQcmVmZXJlbmNlRGVjaXNpb24ge1xuICBjb25zdCBjYW5kaWRhdGVWZXJzaW9uID0gZ2V0TGVhZGVyU2VydmVyVmVyc2lvbihjYW5kaWRhdGUpO1xuICBjb25zdCBleGlzdGluZ1ZlcnNpb24gPSBnZXRMZWFkZXJTZXJ2ZXJWZXJzaW9uKGV4aXN0aW5nKTtcbiAgY29uc3QgY2FuZGlkYXRlUHJvdG9jb2xWZXJzaW9uID0gZ2V0TGVhZGVyQ29uc29sZVByb3RvY29sVmVyc2lvbihjYW5kaWRhdGUpO1xuICBjb25zdCBleGlzdGluZ1Byb3RvY29sVmVyc2lvbiA9IGdldExlYWRlckNvbnNvbGVQcm90b2NvbFZlcnNpb24oZXhpc3RpbmcpO1xuXG4gIGNvbnN0IGNvbXBhdGlibGUgPVxuICAgIGV4aXN0aW5nUHJvdG9jb2xWZXJzaW9uID09PSBjYW5kaWRhdGVQcm90b2NvbFZlcnNpb24gfHxcbiAgICBleGlzdGluZ1Byb3RvY29sVmVyc2lvbiA9PT0gTEVHQUNZX0NPTlNPTEVfUFJPVE9DT0xfVkVSU0lPTjtcblxuICBpZiAoIWNvbXBhdGlibGUpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc2hvdWxkUmVwbGFjZTogZmFsc2UsXG4gICAgICByZWFzb246ICdpbmNvbXBhdGlibGUtcHJvdG9jb2wnLFxuICAgICAgY2FuZGlkYXRlVmVyc2lvbixcbiAgICAgIGV4aXN0aW5nVmVyc2lvbixcbiAgICAgIGNhbmRpZGF0ZVByb3RvY29sVmVyc2lvbixcbiAgICAgIGV4aXN0aW5nUHJvdG9jb2xWZXJzaW9uLFxuICAgIH07XG4gIH1cblxuICBjb25zdCB2ZXJzaW9uQ29tcGFyaXNvbiA9IGNvbXBhcmVWZXJzaW9ucyhjYW5kaWRhdGVWZXJzaW9uLCBleGlzdGluZ1ZlcnNpb24pO1xuICBpZiAodmVyc2lvbkNvbXBhcmlzb24gPiAwKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNob3VsZFJlcGxhY2U6IHRydWUsXG4gICAgICByZWFzb246ICduZXdlci1jb21wYXRpYmxlLXZlcnNpb24nLFxuICAgICAgY2FuZGlkYXRlVmVyc2lvbixcbiAgICAgIGV4aXN0aW5nVmVyc2lvbixcbiAgICAgIGNhbmRpZGF0ZVByb3RvY29sVmVyc2lvbixcbiAgICAgIGV4aXN0aW5nUHJvdG9jb2xWZXJzaW9uLFxuICAgIH07XG4gIH1cbiAgaWYgKHZlcnNpb25Db21wYXJpc29uID09PSAwKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNob3VsZFJlcGxhY2U6IGZhbHNlLFxuICAgICAgcmVhc29uOiAnc2FtZS12ZXJzaW9uJyxcbiAgICAgIGNhbmRpZGF0ZVZlcnNpb24sXG4gICAgICBleGlzdGluZ1ZlcnNpb24sXG4gICAgICBjYW5kaWRhdGVQcm90b2NvbFZlcnNpb24sXG4gICAgICBleGlzdGluZ1Byb3RvY29sVmVyc2lvbixcbiAgICB9O1xuICB9XG4gIHJldHVybiB7XG4gICAgc2hvdWxkUmVwbGFjZTogZmFsc2UsXG4gICAgcmVhc29uOiAnb2xkZXItdmVyc2lvbicsXG4gICAgY2FuZGlkYXRlVmVyc2lvbixcbiAgICBleGlzdGluZ1ZlcnNpb24sXG4gICAgY2FuZGlkYXRlUHJvdG9jb2xWZXJzaW9uLFxuICAgIGV4aXN0aW5nUHJvdG9jb2xWZXJzaW9uLFxuICB9O1xufVxuXG4vKipcbiAqIFJlc3VsdCBvZiBhIGxlZ2FjeS1sZWFkZXIgZGV0ZWN0aW9uIHNjYW4uXG4gKiBgbGVnYWN5UnVubmluZyA9PT0gdHJ1ZWAgbWVhbnMgYSBwcmUtYXV0aGVudGljYXRpb24gRG9sbGhvdXNlTUNQIGNvbnNvbGVcbiAqIGlzIGN1cnJlbnRseSBydW5uaW5nIG9uIHRoaXMgbWFjaGluZSAoaXRzIGxvY2sgZmlsZSBleGlzdHMgYW5kIGl0cyBwaWRcbiAqIGlzIGFsaXZlKS4gQ2FsbGVycyBjYW4gc3VyZmFjZSB0aGlzIHRvIHRoZSB1c2VyIGFzIGEgd2FybmluZy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMZWdhY3lMZWFkZXJJbmZvIHtcbiAgbGVnYWN5UnVubmluZzogYm9vbGVhbjtcbiAgcGlkPzogbnVtYmVyO1xuICBwb3J0PzogbnVtYmVyO1xuICBsb2NrUGF0aDogc3RyaW5nO1xufVxuXG4vKipcbiAqIERldGVjdCB3aGV0aGVyIGEgbGVnYWN5IChwcmUtYXV0aGVudGljYXRpb24pIERvbGxob3VzZU1DUCBjb25zb2xlIGlzXG4gKiBjdXJyZW50bHkgcnVubmluZyBvbiB0aGlzIG1hY2hpbmUgKCMxNzk0KS5cbiAqXG4gKiBUaGUgcHJlLWF1dGhlbnRpY2F0aW9uIGNvbnNvbGUgd3JpdGVzIGl0cyBsb2NrIHRvXG4gKiBgfi8uZG9sbGhvdXNlL3J1bi9jb25zb2xlLWxlYWRlci5sb2NrYCAobm8gYC5hdXRoYCBzdWZmaXgpLiBBblxuICogYXV0aGVudGljYXRlZCBjb25zb2xlIG9uIGEgZGlmZmVyZW50IHBvcnQgd2lsbCBub3QgaW50ZXJmZXJlIHdpdGhcbiAqIGl0IOKAlCB0aGV5IGhhdmUgZnVsbHkgaW5kZXBlbmRlbnQgcG9ydHMsIGxvY2sgZmlsZXMsIGFuZCB0b2tlbiBmaWxlcyDigJRcbiAqIGJ1dCB0aGUgdXNlciBwcm9iYWJseSB3YW50cyB0byBrbm93IHRoZSB0d28gZXhpc3Qgc2ltdWx0YW5lb3VzbHlcbiAqIGJlY2F1c2UgdGhlIHNlY3VyaXR5IHBvc3R1cmUgb2YgZWFjaCBjb25zb2xlIGlzIGRpZmZlcmVudC5cbiAqXG4gKiBSZXR1cm5zIGluZm8gYWJvdXQgdGhlIGxlZ2FjeSBsZWFkZXIgaWYgb25lIGlzIGRldGVjdGVkLCBvclxuICogYHsgbGVnYWN5UnVubmluZzogZmFsc2UgfWAgb3RoZXJ3aXNlLlxuICpcbiAqIEBwYXJhbSBsb2NrUGF0aCAtIE9wdGlvbmFsIG92ZXJyaWRlIGZvciB0aGUgbGVnYWN5IGxvY2sgZmlsZSBwYXRoLlxuICogICAgICAgICAgICAgICAgICAgRGVmYXVsdHMgdG8gdGhlIGJ1aWx0LWluIGxlZ2FjeSBsb2NhdGlvbi4gUHJpbWFyaWx5XG4gKiAgICAgICAgICAgICAgICAgICB1c2VkIGJ5IHRlc3RzIHRvIHBvaW50IGF0IGEgdGVtcCBkaXJlY3RvcnkuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBkZXRlY3RMZWdhY3lMZWFkZXIobG9ja1BhdGg6IHN0cmluZyA9IExFR0FDWV9MT0NLX0ZJTEUpOiBQcm9taXNlPExlZ2FjeUxlYWRlckluZm8+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBjb250ZW50ID0gYXdhaXQgcmVhZEZpbGUobG9ja1BhdGgsICd1dGYtOCcpO1xuICAgIGNvbnN0IGRhdGEgPSBKU09OLnBhcnNlKGNvbnRlbnQpIGFzIENvbnNvbGVMZWFkZXJJbmZvO1xuICAgIGlmICghZGF0YS5waWQgfHwgIWlzUHJvY2Vzc0FsaXZlKGRhdGEucGlkKSkge1xuICAgICAgcmV0dXJuIHsgbGVnYWN5UnVubmluZzogZmFsc2UsIGxvY2tQYXRoIH07XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBsZWdhY3lSdW5uaW5nOiB0cnVlLFxuICAgICAgcGlkOiBkYXRhLnBpZCxcbiAgICAgIHBvcnQ6IGRhdGEucG9ydCxcbiAgICAgIGxvY2tQYXRoLFxuICAgIH07XG4gIH0gY2F0Y2gge1xuICAgIC8vIEZpbGUgbWlzc2luZywgdW5yZWFkYWJsZSwgb3IgaW52YWxpZCBKU09OIOKAlCBubyBsZWdhY3kgbGVhZGVyIGRldGVjdGVkXG4gICAgcmV0dXJuIHsgbGVnYWN5UnVubmluZzogZmFsc2UsIGxvY2tQYXRoIH07XG4gIH1cbn1cblxuLyoqXG4gKiBSZWFkIGFuZCBwYXJzZSB0aGUgbGVhZGVyIGxvY2sgZmlsZS5cbiAqIFJldHVybnMgbnVsbCBpZiB0aGUgZmlsZSBkb2Vzbid0IGV4aXN0LCBpcyB1bnJlYWRhYmxlLCBvciBoYXMgaW52YWxpZCBjb250ZW50LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVhZExlYWRlckxvY2soKTogUHJvbWlzZTxDb25zb2xlTGVhZGVySW5mbyB8IG51bGw+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBjb250ZW50ID0gYXdhaXQgcmVhZEZpbGUoTE9DS19GSUxFLCAndXRmLTgnKTtcbiAgICBjb25zdCBkYXRhID0gSlNPTi5wYXJzZShjb250ZW50KSBhcyBDb25zb2xlTGVhZGVySW5mbztcbiAgICBpZiAoZGF0YS52ZXJzaW9uICE9PSBMT0NLX1ZFUlNJT04gfHwgIWRhdGEucGlkIHx8ICFkYXRhLnBvcnQgfHwgIWRhdGEuc2Vzc2lvbklkKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIGRhdGE7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgaWYgKChlcnJvciBhcyBOb2RlSlMuRXJybm9FeGNlcHRpb24pLmNvZGUgIT09ICdFTk9FTlQnKSB7XG4gICAgICBsb2dnZXIuZGVidWcoJ1tMZWFkZXJFbGVjdGlvbl0gSWdub3JpbmcgdW5yZWFkYWJsZSBvciBpbnZhbGlkIGxlYWRlciBsb2NrJywge1xuICAgICAgICBsb2NrRmlsZTogTE9DS19GSUxFLFxuICAgICAgICBlcnJvcjogZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpLFxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgYSBsZWFkZXIgbG9jayBpcyBzdGFsZSAoZGVhZCBwcm9jZXNzIG9yIGV4cGlyZWQgaGVhcnRiZWF0KS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzTG9ja1N0YWxlKGluZm86IENvbnNvbGVMZWFkZXJJbmZvKTogYm9vbGVhbiB7XG4gIGlmICghaXNQcm9jZXNzQWxpdmUoaW5mby5waWQpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgY29uc3QgaGVhcnRiZWF0QWdlID0gRGF0ZS5ub3coKSAtIG5ldyBEYXRlKGluZm8uaGVhcnRiZWF0KS5nZXRUaW1lKCk7XG4gIHJldHVybiBoZWFydGJlYXRBZ2UgPiBIRUFSVEJFQVRfU1RBTEVfTVM7XG59XG5cbi8qKlxuICogQXR0ZW1wdCB0byBhdG9taWNhbGx5IGNsYWltIGxlYWRlcnNoaXAuXG4gKlxuICogV3JpdGVzIHRvIGEgdGVtcCBmaWxlIHRoZW4gcmVuYW1lcyB0byB0aGUgbG9jayBwYXRoLiBPbiBQT1NJWCBzeXN0ZW1zXG4gKiByZW5hbWUgaXMgYXRvbWljLCBzbyBvbmx5IG9uZSB3cml0ZXIgd2lucy4gQWZ0ZXIgcmVuYW1pbmcsIHJlLXJlYWRzIHRoZVxuICogbG9jayB0byB2ZXJpZnkgb3VyIFBJRCB3b24uXG4gKlxuICogQHJldHVybnMgdHJ1ZSBpZiB0aGlzIHByb2Nlc3Mgc3VjY2Vzc2Z1bGx5IGNsYWltZWQgbGVhZGVyc2hpcFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY2xhaW1MZWFkZXJzaGlwKGluZm86IENvbnNvbGVMZWFkZXJJbmZvKTogUHJvbWlzZTxib29sZWFuPiB7XG4gIGF3YWl0IG1rZGlyKFJVTl9ESVIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICBjb25zdCB0bXBGaWxlID0gam9pbihSVU5fRElSLCBgY29uc29sZS1sZWFkZXIubG9jay4ke3Byb2Nlc3MucGlkfS50bXBgKTtcbiAgdHJ5IHtcbiAgICBhd2FpdCB3cml0ZUZpbGUodG1wRmlsZSwgSlNPTi5zdHJpbmdpZnkoaW5mbywgbnVsbCwgMiksICd1dGYtOCcpO1xuICAgIGF3YWl0IHJlbmFtZSh0bXBGaWxlLCBMT0NLX0ZJTEUpO1xuXG4gICAgLy8gVmVyaWZ5IHdlIHdvbiB0aGUgcmFjZVxuICAgIGNvbnN0IHdyaXR0ZW4gPSBhd2FpdCByZWFkTGVhZGVyTG9jaygpO1xuICAgIHJldHVybiB3cml0dGVuICE9PSBudWxsICYmIHdyaXR0ZW4ucGlkID09PSBpbmZvLnBpZDtcbiAgfSBjYXRjaCB7XG4gICAgLy8gQ2xlYW4gdXAgdGVtcCBmaWxlIG9uIGZhaWx1cmVcbiAgICB0cnkgeyBhd2FpdCB1bmxpbmsodG1wRmlsZSk7IH0gY2F0Y2ggeyAvKiBpZ25vcmUgKi8gfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG4vKipcbiAqIERlbGV0ZSB0aGUgbGVhZGVyIGxvY2sgZmlsZSAoZm9yIGNsZWFudXAgb3IgdGFrZW92ZXIpLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZGVsZXRlTGVhZGVyTG9jaygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgdHJ5IHsgYXdhaXQgdW5saW5rKExPQ0tfRklMRSk7IH0gY2F0Y2ggeyAvKiBhbHJlYWR5IGdvbmUgKi8gfVxufVxuXG4vKipcbiAqIFJ1biB0aGUgbGVhZGVyIGVsZWN0aW9uIHByb3RvY29sLlxuICpcbiAqIDEuIElmIG5vIGxvY2sgZXhpc3RzIG9yIGxvY2sgaXMgc3RhbGUg4oaSIGNsYWltIGxlYWRlcnNoaXBcbiAqIDIuIElmIGxvY2sgZXhpc3RzIHdpdGggYSBsaXZlLCByZXNwb25zaXZlIGxlYWRlciDihpIgYmVjb21lIGZvbGxvd2VyXG4gKlxuICogQHBhcmFtIHNlc3Npb25JZCAtIFRoaXMgcHJvY2VzcydzIHVuaXF1ZSBzZXNzaW9uIGlkZW50aWZpZXJcbiAqIEBwYXJhbSBwb3J0IC0gVGhlIHBvcnQgdGhpcyBwcm9jZXNzIHdvdWxkIHVzZSBhcyBsZWFkZXIgKHNlZSBgRE9MTEhPVVNFX1dFQl9DT05TT0xFX1BPUlRgKVxuICogQHJldHVybnMgRWxlY3Rpb24gcmVzdWx0IHdpdGggcm9sZSBhbmQgbGVhZGVyIGluZm9cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGVsZWN0TGVhZGVyKHNlc3Npb25JZDogc3RyaW5nLCBwb3J0OiBudW1iZXIpOiBQcm9taXNlPEVsZWN0aW9uUmVzdWx0PiB7XG4gIGNvbnN0IG15SW5mbyA9IGNyZWF0ZUxlYWRlckluZm8oc2Vzc2lvbklkLCBwb3J0KTtcbiAgc2Vzc2lvbklkID0gbXlJbmZvLnNlc3Npb25JZDtcbiAgY29uc3QgZXhpc3RpbmdMb2NrID0gYXdhaXQgcmVhZExlYWRlckxvY2soKTtcblxuICBpZiAoZXhpc3RpbmdMb2NrICYmICFpc0xvY2tTdGFsZShleGlzdGluZ0xvY2spKSB7XG4gICAgY29uc3QgcHJlZmVyZW5jZSA9IGV2YWx1YXRlTGVhZGVyUHJlZmVyZW5jZShteUluZm8sIGV4aXN0aW5nTG9jayk7XG4gICAgaWYgKHByZWZlcmVuY2Uuc2hvdWxkUmVwbGFjZSkge1xuICAgICAgbG9nZ2VyLmluZm8oJ1tMZWFkZXJFbGVjdGlvbl0gUmVwbGFjaW5nIGxlYWRlciB3aXRoIG5ld2VyIGNvbXBhdGlibGUgdmVyc2lvbicsIHtcbiAgICAgICAgc3RhbGVTZXNzaW9uOiBleGlzdGluZ0xvY2suc2Vzc2lvbklkLFxuICAgICAgICBzdGFsZVBpZDogZXhpc3RpbmdMb2NrLnBpZCxcbiAgICAgICAgc3RhbGVQb3J0OiBleGlzdGluZ0xvY2sucG9ydCxcbiAgICAgICAgc3RhbGVWZXJzaW9uOiBwcmVmZXJlbmNlLmV4aXN0aW5nVmVyc2lvbixcbiAgICAgICAgc3RhbGVQcm90b2NvbFZlcnNpb246IHByZWZlcmVuY2UuZXhpc3RpbmdQcm90b2NvbFZlcnNpb24sXG4gICAgICAgIG15U2Vzc2lvbjogc2Vzc2lvbklkLFxuICAgICAgICBteVBpZDogcHJvY2Vzcy5waWQsXG4gICAgICAgIG15VmVyc2lvbjogcHJlZmVyZW5jZS5jYW5kaWRhdGVWZXJzaW9uLFxuICAgICAgICBteVByb3RvY29sVmVyc2lvbjogcHJlZmVyZW5jZS5jYW5kaWRhdGVQcm90b2NvbFZlcnNpb24sXG4gICAgICB9KTtcbiAgICAgIGF3YWl0IGRlbGV0ZUxlYWRlckxvY2soKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbG9nZ2VyLmluZm8oJ1tMZWFkZXJFbGVjdGlvbl0gRXhpc3RpbmcgbGVhZGVyIGZvdW5kIOKAlCBiZWNvbWluZyBmb2xsb3dlcicsIHtcbiAgICAgICAgbGVhZGVyU2Vzc2lvbjogZXhpc3RpbmdMb2NrLnNlc3Npb25JZCxcbiAgICAgICAgbGVhZGVyUGlkOiBleGlzdGluZ0xvY2sucGlkLFxuICAgICAgICBsZWFkZXJQb3J0OiBleGlzdGluZ0xvY2sucG9ydCxcbiAgICAgICAgbGVhZGVyVmVyc2lvbjogcHJlZmVyZW5jZS5leGlzdGluZ1ZlcnNpb24sXG4gICAgICAgIGxlYWRlclByb3RvY29sVmVyc2lvbjogcHJlZmVyZW5jZS5leGlzdGluZ1Byb3RvY29sVmVyc2lvbixcbiAgICAgICAgbXlTZXNzaW9uOiBzZXNzaW9uSWQsXG4gICAgICAgIG15UGlkOiBwcm9jZXNzLnBpZCxcbiAgICAgICAgbXlWZXJzaW9uOiBwcmVmZXJlbmNlLmNhbmRpZGF0ZVZlcnNpb24sXG4gICAgICAgIG15UHJvdG9jb2xWZXJzaW9uOiBwcmVmZXJlbmNlLmNhbmRpZGF0ZVByb3RvY29sVmVyc2lvbixcbiAgICAgICAgcmVhc29uOiBwcmVmZXJlbmNlLnJlYXNvbixcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHsgcm9sZTogJ2ZvbGxvd2VyJywgbGVhZGVySW5mbzogZXhpc3RpbmdMb2NrIH07XG4gICAgfVxuICB9XG5cbiAgaWYgKGV4aXN0aW5nTG9jayAmJiAhaXNMb2NrU3RhbGUoZXhpc3RpbmdMb2NrKSkge1xuICAgIC8vIExlYWRlciB3YXMgaW50ZW50aW9uYWxseSByZXBsYWNlZCBhYm92ZS4gQ29udGludWUgdG8gdGhlIGNsYWltIHBhdGguXG4gIH0gZWxzZSBpZiAoZXhpc3RpbmdMb2NrKSB7XG4gICAgLy8gTm8gdmFsaWQgbGVhZGVyIOKAlCB0cnkgdG8gY2xhaW1cbiAgICBjb25zdCBhbGl2ZSA9IGlzUHJvY2Vzc0FsaXZlKGV4aXN0aW5nTG9jay5waWQpO1xuICAgIGNvbnN0IGhlYXJ0YmVhdEFnZSA9IERhdGUubm93KCkgLSBuZXcgRGF0ZShleGlzdGluZ0xvY2suaGVhcnRiZWF0KS5nZXRUaW1lKCk7XG4gICAgbG9nZ2VyLmluZm8oJ1tMZWFkZXJFbGVjdGlvbl0gU3RhbGUgbGVhZGVyIGxvY2sg4oCUIHRha2luZyBvdmVyJywge1xuICAgICAgc3RhbGVQaWQ6IGV4aXN0aW5nTG9jay5waWQsIGFsaXZlLCBoZWFydGJlYXRBZ2VNczogaGVhcnRiZWF0QWdlLFxuICAgICAgc3RhbGVTZXNzaW9uOiBleGlzdGluZ0xvY2suc2Vzc2lvbklkLCBteVNlc3Npb246IHNlc3Npb25JZCxcbiAgICB9KTtcbiAgICBhd2FpdCBkZWxldGVMZWFkZXJMb2NrKCk7XG4gIH1cblxuICBjb25zdCBjbGFpbWVkID0gYXdhaXQgY2xhaW1MZWFkZXJzaGlwKG15SW5mbyk7XG4gIGlmIChjbGFpbWVkKSB7XG4gICAgbG9nZ2VyLmluZm8oJ1tMZWFkZXJFbGVjdGlvbl0gQ2xhaW1lZCBsZWFkZXJzaGlwJywgeyBzZXNzaW9uSWQsIHBvcnQsIHBpZDogcHJvY2Vzcy5waWQgfSk7XG4gICAgcmV0dXJuIHsgcm9sZTogJ2xlYWRlcicsIGxlYWRlckluZm86IG15SW5mbyB9O1xuICB9XG5cbiAgLy8gQW5vdGhlciBwcm9jZXNzIHdvbiB0aGUgcmFjZSDigJQgcmUtcmVhZCBhbmQgYmVjb21lIGZvbGxvd2VyXG4gIGNvbnN0IHdpbm5lciA9IGF3YWl0IHJlYWRMZWFkZXJMb2NrKCk7XG4gIGlmICh3aW5uZXIpIHtcbiAgICBsb2dnZXIuaW5mbygnW0xlYWRlckVsZWN0aW9uXSBMb3N0IGVsZWN0aW9uIOKAlCBiZWNvbWluZyBmb2xsb3dlcicsIHtcbiAgICAgIHdpbm5lclBpZDogd2lubmVyLnBpZCwgd2lubmVyU2Vzc2lvbjogd2lubmVyLnNlc3Npb25JZCwgbXlTZXNzaW9uOiBzZXNzaW9uSWQsIG15UGlkOiBwcm9jZXNzLnBpZCxcbiAgICB9KTtcbiAgICByZXR1cm4geyByb2xlOiAnZm9sbG93ZXInLCBsZWFkZXJJbmZvOiB3aW5uZXIgfTtcbiAgfVxuXG4gIC8vIEV4dHJlbWVseSB1bmxpa2VseTogbG9jayBkaXNhcHBlYXJlZCBiZXR3ZWVuIG91ciBjbGFpbSBhbmQgcmUtcmVhZC4gUmV0cnkgb25jZS5cbiAgbG9nZ2VyLndhcm4oJ1tMZWFkZXJFbGVjdGlvbl0gTG9jayB2YW5pc2hlZCBhZnRlciBmYWlsZWQgY2xhaW0uIFJldHJ5aW5nLicpO1xuICBjb25zdCByZXRyeUluZm86IENvbnNvbGVMZWFkZXJJbmZvID0geyAuLi5jcmVhdGVMZWFkZXJJbmZvKHNlc3Npb25JZCwgcG9ydCkgfTtcbiAgY29uc3QgcmV0cnlDbGFpbWVkID0gYXdhaXQgY2xhaW1MZWFkZXJzaGlwKHJldHJ5SW5mbyk7XG4gIGlmIChyZXRyeUNsYWltZWQpIHtcbiAgICByZXR1cm4geyByb2xlOiAnbGVhZGVyJywgbGVhZGVySW5mbzogcmV0cnlJbmZvIH07XG4gIH1cbiAgY29uc3QgYWN0dWFsTGVhZGVyID0gYXdhaXQgcmVhZExlYWRlckxvY2soKTtcbiAgcmV0dXJuIHsgcm9sZTogJ2ZvbGxvd2VyJywgbGVhZGVySW5mbzogYWN0dWFsTGVhZGVyID8/IHJldHJ5SW5mbyB9O1xufVxuXG4vKipcbiAqIFByb2JlIHdoZXRoZXIgdGhlIGxlYWRlcidzIHdlYiBjb25zb2xlIGlzIHJlYWNoYWJsZS5cbiAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgbGVhZGVyJ3MgaW5nZXN0IGVuZHBvaW50IHJlc3BvbmRzLCBmYWxzZSBvdGhlcndpc2UuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBpc0xlYWRlcldlYkNvbnNvbGVSZWFjaGFibGUobGVhZGVySW5mbzogQ29uc29sZUxlYWRlckluZm8pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBjb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgIGNvbnN0IHRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IGNvbnRyb2xsZXIuYWJvcnQoKSwgMl8wMDApO1xuICAgIGNvbnN0IHJlcyA9IGF3YWl0IGZldGNoKGBodHRwOi8vMTI3LjAuMC4xOiR7bGVhZGVySW5mby5wb3J0fS9hcGkvbG9ncy9zdGF0c2AsIHtcbiAgICAgIHNpZ25hbDogY29udHJvbGxlci5zaWduYWwsXG4gICAgfSk7XG4gICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgIHJldHVybiByZXMub2s7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG4vKipcbiAqIEZvcmNlIGNsYWltIGxlYWRlcnNoaXAgYnkgZGVsZXRpbmcgdGhlIGV4aXN0aW5nIGxvY2sgYW5kIGNsYWltaW5nLlxuICogVXNlZCB3aGVuIHRoZSBleGlzdGluZyBsZWFkZXIgaXMgYWxpdmUgYnV0IG5vdCBydW5uaW5nIGEgd2ViIGNvbnNvbGUuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBmb3JjZUNsYWltTGVhZGVyc2hpcChzZXNzaW9uSWQ6IHN0cmluZywgcG9ydDogbnVtYmVyKTogUHJvbWlzZTxFbGVjdGlvblJlc3VsdD4ge1xuICBsb2dnZXIuaW5mbygnW0xlYWRlckVsZWN0aW9uXSBGb3JjaW5nIGxlYWRlcnNoaXAgdGFrZW92ZXIg4oCUIGV4aXN0aW5nIGxlYWRlciBoYXMgbm8gd2ViIGNvbnNvbGUnKTtcbiAgYXdhaXQgZGVsZXRlTGVhZGVyTG9jaygpO1xuICBjb25zdCBteUluZm8gPSBjcmVhdGVMZWFkZXJJbmZvKHNlc3Npb25JZCwgcG9ydCk7XG5cbiAgY29uc3QgY2xhaW1lZCA9IGF3YWl0IGNsYWltTGVhZGVyc2hpcChteUluZm8pO1xuICBpZiAoY2xhaW1lZCkge1xuICAgIGxvZ2dlci5pbmZvKCdbTGVhZGVyRWxlY3Rpb25dIEZvcmNlZCBsZWFkZXJzaGlwIGNsYWltZWQnLCB7IHNlc3Npb25JZCwgcG9ydCwgcGlkOiBwcm9jZXNzLnBpZCB9KTtcbiAgICByZXR1cm4geyByb2xlOiAnbGVhZGVyJywgbGVhZGVySW5mbzogbXlJbmZvIH07XG4gIH1cblxuICAvLyBGYWlsZWQg4oCUIGZhbGwgYmFjayB0byBmb2xsb3dlclxuICBjb25zdCB3aW5uZXIgPSBhd2FpdCByZWFkTGVhZGVyTG9jaygpO1xuICByZXR1cm4geyByb2xlOiAnZm9sbG93ZXInLCBsZWFkZXJJbmZvOiB3aW5uZXIgPz8gbXlJbmZvIH07XG59XG5cbi8qKlxuICogU3RhcnQgdGhlIGxlYWRlciBoZWFydGJlYXQgbG9vcC5cbiAqIFVwZGF0ZXMgdGhlIGxvY2sgZmlsZSBldmVyeSBIRUFSVEJFQVRfSU5URVJWQUxfTVMgc28gZm9sbG93ZXJzIGtub3cgdGhlIGxlYWRlciBpcyBhbGl2ZS5cbiAqXG4gKiBAcmV0dXJucyBBIHN0b3AgZnVuY3Rpb24gdG8gY2xlYXIgdGhlIGludGVydmFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdGFydEhlYXJ0YmVhdChpbmZvOiBDb25zb2xlTGVhZGVySW5mbyk6ICgpID0+IHZvaWQge1xuICBjb25zdCBpbnRlcnZhbCA9IHNldEludGVydmFsKGFzeW5jICgpID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgdXBkYXRlZDogQ29uc29sZUxlYWRlckluZm8gPSB7IC4uLmluZm8sIGhlYXJ0YmVhdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpIH07XG4gICAgICBjb25zdCB0bXBGaWxlID0gam9pbihSVU5fRElSLCBgY29uc29sZS1sZWFkZXIubG9jay4ke3Byb2Nlc3MucGlkfS50bXBgKTtcbiAgICAgIGF3YWl0IHdyaXRlRmlsZSh0bXBGaWxlLCBKU09OLnN0cmluZ2lmeSh1cGRhdGVkLCBudWxsLCAyKSwgJ3V0Zi04Jyk7XG4gICAgICBhd2FpdCByZW5hbWUodG1wRmlsZSwgTE9DS19GSUxFKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGxvZ2dlci5kZWJ1ZygnW0xlYWRlckVsZWN0aW9uXSBIZWFydGJlYXQgd3JpdGUgZmFpbGVkOicsIGVycik7XG4gICAgfVxuICB9LCBIRUFSVEJFQVRfSU5URVJWQUxfTVMpO1xuXG4gIC8vIERvbid0IGxldCB0aGUgaGVhcnRiZWF0IGludGVydmFsIGtlZXAgdGhlIHByb2Nlc3MgYWxpdmVcbiAgaW50ZXJ2YWwudW5yZWYoKTtcblxuICByZXR1cm4gKCkgPT4gY2xlYXJJbnRlcnZhbChpbnRlcnZhbCk7XG59XG5cbi8qKlxuICogUmVnaXN0ZXIgY2xlYW51cCBoYW5kbGVycyB0byByZW1vdmUgdGhlIGxlYWRlciBsb2NrIG9uIHByb2Nlc3MgZXhpdC5cbiAqIFNob3VsZCBvbmx5IGJlIGNhbGxlZCBieSB0aGUgbGVhZGVyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJMZWFkZXJDbGVhbnVwKCk6IHZvaWQge1xuICBjb25zdCBjbGVhbnVwID0gKCkgPT4geyBkZWxldGVMZWFkZXJMb2NrKCkuY2F0Y2goKCkgPT4ge30pOyB9O1xuICBwcm9jZXNzLm9uY2UoJ2V4aXQnLCBjbGVhbnVwKTtcbiAgcHJvY2Vzcy5vbmNlKCdTSUdURVJNJywgY2xlYW51cCk7XG4gIHByb2Nlc3Mub25jZSgnU0lHSU5UJywgY2xlYW51cCk7XG4gIHByb2Nlc3Mub25jZSgnU0lHSFVQJywgY2xlYW51cCk7XG59XG4iXX0=
|
|
431
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTGVhZGVyRWxlY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvd2ViL2NvbnNvbGUvTGVhZGVyRWxlY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtCRztBQUVILE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDbEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDMUMsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDcEYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDakYsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXpELHdDQUF3QztBQUN4QyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsWUFBWSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBRXJEOzs7Ozs7Ozs7O0dBVUc7QUFDSCxNQUFNLHFCQUFxQixHQUFHLDBCQUEwQixDQUFDO0FBRXpELHlGQUF5RjtBQUN6RixNQUFNLG9CQUFvQixHQUFHLHFCQUFxQixDQUFDO0FBRW5EOzs7OztHQUtHO0FBQ0gsTUFBTSxTQUFTLEdBQUcsR0FBRyxDQUFDLGtDQUFrQyxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUscUJBQXFCLENBQUMsQ0FBQztBQUVqRyxpRkFBaUY7QUFDakYsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFF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O0lBQzFELFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUVqQixPQUFPLEdBQUcsRUFBRSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUN2QyxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLHFCQUFxQjtJQUNuQyxNQUFNLE9BQU8sR0FBRyxHQUFHLEVBQUUsR0FBRyxnQkFBZ0IsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM5RCxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM5QixPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNqQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNoQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztBQUNsQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBMZWFkZXIgZWxlY3Rpb24gZm9yIHRoZSB1bmlmaWVkIHdlYiBjb25zb2xlLlxuICpcbiAqIFdoZW4gbXVsdGlwbGUgTUNQIHNlcnZlciBpbnN0YW5jZXMgcnVuIGNvbmN1cnJlbnRseSwgb25seSBvbmUgc2hvdWxkIGhvc3RcbiAqIHRoZSB3ZWIgY29uc29sZSAodGhlIFwibGVhZGVyXCIpLiBPdGhlcnMgYmVjb21lIFwiZm9sbG93ZXJzXCIgdGhhdCBmb3J3YXJkXG4gKiBldmVudHMgdG8gdGhlIGxlYWRlci4gVGhpcyBtb2R1bGUgaGFuZGxlczpcbiAqXG4gKiAxLiBSZWFkaW5nL3dyaXRpbmcgYSBsZWFkZXIgbG9jayBmaWxlIGF0IH4vLmRvbGxob3VzZS9ydW4vY29uc29sZS1sZWFkZXIubG9ja1xuICogMi4gQXRvbWljIGNsYWltIHZpYSB0ZW1wK3JlbmFtZSB0byBwcmV2ZW50IFRPQ1RPVSByYWNlc1xuICogMy4gUElELWJhc2VkIHN0YWxlIGRldGVjdGlvbiAoc2lnbmFsLTAgbGl2ZW5lc3MgY2hlY2spXG4gKiA0LiBIZWFydGJlYXQgdXBkYXRlcyAoMTBzIGludGVydmFsKSBzbyBmb2xsb3dlcnMgY2FuIGRldGVjdCBodW5nIGxlYWRlcnNcbiAqIDUuIENsZWFudXAgb24gcHJvY2VzcyBleGl0XG4gKlxuICogVGhlIGNvbmZpZ3VyZWQgcG9ydCBiaW5kaW5nIGlzIHRoZSB1bHRpbWF0ZSB0aWVicmVha2VyOiBldmVuIGlmIHR3b1xuICogcHJvY2Vzc2VzIGJvdGggd3JpdGUgdGhlIGxvY2sgZmlsZSwgb25seSBvbmUgY2FuIGJpbmQgdGhlIHBvcnQgKHNlZVxuICogYERPTExIT1VTRV9XRUJfQ09OU09MRV9QT1JUYCBpbiBgc3JjL2NvbmZpZy9lbnYudHNgKS5cbiAqXG4gKiBAc2luY2UgdjIuMS4wIOKAlCBJc3N1ZSAjMTcwMFxuICovXG5cbmltcG9ydCB7IGhvbWVkaXIgfSBmcm9tICdub2RlOm9zJztcbmltcG9ydCB7IGRpcm5hbWUsIGpvaW4gfSBmcm9tICdub2RlOnBhdGgnO1xuaW1wb3J0IHsgbWtkaXIsIG9wZW4sIHJlYWRGaWxlLCByZW5hbWUsIHVubGluaywgd3JpdGVGaWxlIH0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcyc7XG5pbXBvcnQgeyBVbmljb2RlVmFsaWRhdG9yIH0gZnJvbSAnLi4vLi4vc2VjdXJpdHkvdmFsaWRhdG9ycy91bmljb2RlVmFsaWRhdG9yLmpzJztcbmltcG9ydCB7IGVudiB9IGZyb20gJy4uLy4uL2NvbmZpZy9lbnYuanMnO1xuaW1wb3J0IHsgUEFDS0FHRV9WRVJTSU9OIH0gZnJvbSAnLi4vLi4vZ2VuZXJhdGVkL3ZlcnNpb24uanMnO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnLi4vLi4vdXRpbHMvbG9nZ2VyLmpzJztcbmltcG9ydCB7IGNvbXBhcmVWZXJzaW9ucyB9IGZyb20gJy4uLy4uL3V0aWxzL3ZlcnNpb24uanMnO1xuXG4vKiogRGlyZWN0b3J5IGZvciBydW50aW1lIHN0YXRlIGZpbGVzICovXG5jb25zdCBSVU5fRElSID0gam9pbihob21lZGlyKCksICcuZG9sbGhvdXNlJywgJ3J1bicpO1xuXG4vKipcbiAqIEJ1aWx0LWluIGRlZmF1bHQgZmlsZW5hbWUgZm9yIHRoZSBhdXRoZW50aWNhdGVkIGNvbnNvbGUncyBsZWFkZXIgbG9jay5cbiAqXG4gKiBUaGUgYC5hdXRoYCBzdWZmaXggaXNvbGF0ZXMgdGhpcyBmcm9tIGFueSBsZWdhY3kgbm8tYXV0aGVudGljYXRpb25cbiAqIERvbGxob3VzZU1DUCBpbnN0YWxsYXRpb24gdGhhdCBtYXkgYWxzbyBiZSBydW5uaW5nIG9uIHRoZSBzYW1lXG4gKiBtYWNoaW5lLiBUaG9zZSBvbGRlciBpbnN0YWxscyB1c2UgYGNvbnNvbGUtbGVhZGVyLmxvY2tgIChubyBzdWZmaXgpO1xuICogdGhlIGF1dGhlbnRpY2F0ZWQgY29uc29sZSB1c2VzIGBjb25zb2xlLWxlYWRlci5hdXRoLmxvY2tgLiBDb21iaW5lZFxuICogd2l0aCB0aGUgcG9ydCBzZXBhcmF0aW9uLCB0aGlzIG1lYW5zIHRoZSB0d28gZ2VuZXJhdGlvbnMgb2YgdGhlXG4gKiBjb25zb2xlIGNhbiBjb2V4aXN0IHdpdGggemVybyBpbnRlcmZlcmVuY2Ug4oCUIGRpZmZlcmVudCBwb3J0LCBkaWZmZXJlbnRcbiAqIGxvY2sgZmlsZSwgZGlmZmVyZW50IHRva2VuIGZpbGUsIGluZGVwZW5kZW50IGxlYWRlciBlbGVjdGlvbiBzcGFjZXMuXG4gKi9cbmNvbnN0IERFRkFVTFRfTE9DS19GSUxFTkFNRSA9ICdjb25zb2xlLWxlYWRlci5hdXRoLmxvY2snO1xuXG4vKiogTGVnYWN5IGxvY2sgZmlsZW5hbWUgZnJvbSB0aGUgcHJlLWF1dGhlbnRpY2F0aW9uIGNvbnNvbGUuIFVzZWQgb25seSBmb3IgZGV0ZWN0aW9uLiAqL1xuY29uc3QgTEVHQUNZX0xPQ0tfRklMRU5BTUUgPSAnY29uc29sZS1sZWFkZXIubG9jayc7XG5cbi8qKlxuICogUGF0aCB0byB0aGUgbGVhZGVyIGxvY2sgZmlsZS4gUHJlZmVycyB0aGUgYERPTExIT1VTRV9DT05TT0xFX0xFQURFUl9MT0NLX0ZJTEVgXG4gKiBlbnYgdmFyIHdoZW4gc2V0LCBvdGhlcndpc2UgdXNlcyBgREVGQVVMVF9MT0NLX0ZJTEVOQU1FYCB1bmRlciBSVU5fRElSLlxuICogVGhlIGVudiB2YXIgaXMgdGhlIHNpbmdsZSBzb3VyY2Ugb2YgdHJ1dGggd2hlbiBwcmVzZW50LCBzbyBhIGRlcGxveW1lbnRcbiAqIGNhbiByZWxvY2F0ZSB0aGUgbG9jayB3aXRob3V0IGNvZGUgY2hhbmdlcyAoc2VlIGBzcmMvY29uZmlnL2Vudi50c2ApLlxuICovXG5jb25zdCBMT0NLX0ZJTEUgPSBlbnYuRE9MTEhPVVNFX0NPTlNPTEVfTEVBREVSX0xPQ0tfRklMRSA/PyBqb2luKFJVTl9ESVIsIERFRkFVTFRfTE9DS19GSUxFTkFNRSk7XG5cbi8qKiBQYXRoIHRvIHRoZSBsZWdhY3kgcHJlLWF1dGggbG9jayBmaWxlICh1c2VkIGJ5IGBkZXRlY3RMZWdhY3lMZWFkZXJgIG9ubHkpLiAqL1xuY29uc3QgTEVHQUNZX0xPQ0tfRklMRSA9IGpvaW4oUlVOX0RJUiwgTEVHQUNZX0xPQ0tfRklMRU5BTUUpO1xuXG4vKiogSG93IG9mdGVuIHRoZSBsZWFkZXIgdXBkYXRlcyBpdHMgaGVhcnRiZWF0IChtcykgKi9cbmNvbnN0IEhFQVJUQkVBVF9JTlRFUlZBTF9NUyA9IDEwXzAwMDtcblxuLyoqIEhvdyBsb25nIGJlZm9yZSBhIGhlYXJ0YmVhdCBpcyBjb25zaWRlcmVkIHN0YWxlIChtcykgKi9cbmNvbnN0IEhFQVJUQkVBVF9TVEFMRV9NUyA9IDMwXzAwMDtcblxuLyoqIEN1cnJlbnQgbG9jayBmaWxlIHNjaGVtYSB2ZXJzaW9uICovXG5leHBvcnQgY29uc3QgTE9DS19WRVJTSU9OID0gMTtcblxuLyoqXG4gKiBWZXJzaW9uIG9mIHRoZSBsZWFkZXItZWxlY3Rpb24vc2Vzc2lvbiBtZXRhZGF0YSBjb250cmFjdCB1c2VkIGJ5IHRoZVxuICogYXV0aGVudGljYXRlZCB3ZWIgY29uc29sZS4gT2xkZXIgbGVhZGVycyB3aWxsIG5vdCBoYXZlIHRoaXMgZmllbGQuXG4gKi9cbmV4cG9ydCBjb25zdCBDT05TT0xFX1BST1RPQ09MX1ZFUlNJT04gPSAxO1xuXG4vKiogTWlzc2luZyBwcm90b2NvbCBtZXRhZGF0YSBtZWFucyB0aGUgbGVhZGVyIHByZWRhdGVzIHZlcnNpb24tYXdhcmUgZWxlY3Rpb24uICovXG5leHBvcnQgY29uc3QgTEVHQUNZX0NPTlNPTEVfUFJPVE9DT0xfVkVSU0lPTiA9IDA7XG5cbi8qKiBPbGQgbG9jayBmaWxlcyBkbyBub3QgY2FycnkgcGFja2FnZSB2ZXJzaW9uIG1ldGFkYXRhLiBUcmVhdCB0aGVtIGFzIG9sZGVzdC4gKi9cbmV4cG9ydCBjb25zdCBMRUdBQ1lfU0VSVkVSX1ZFUlNJT04gPSAnMC4wLjAnO1xuXG4vKipcbiAqIEluZm9ybWF0aW9uIHN0b3JlZCBpbiB0aGUgbGVhZGVyIGxvY2sgZmlsZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb25zb2xlTGVhZGVySW5mbyB7XG4gIHZlcnNpb246IG51bWJlcjtcbiAgcGlkOiBudW1iZXI7XG4gIHBvcnQ6IG51bWJlcjtcbiAgc2Vzc2lvbklkOiBzdHJpbmc7XG4gIHN0YXJ0ZWRBdDogc3RyaW5nO1xuICBoZWFydGJlYXQ6IHN0cmluZztcbiAgc2VydmVyVmVyc2lvbj86IHN0cmluZztcbiAgY29uc29sZVByb3RvY29sVmVyc2lvbj86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBSZXN1bHQgb2YgYSBsZWFkZXIgZWxlY3Rpb24gYXR0ZW1wdC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbGVjdGlvblJlc3VsdCB7XG4gIHJvbGU6ICdsZWFkZXInIHwgJ2ZvbGxvd2VyJztcbiAgLyoqIExlYWRlciBpbmZvIOKAlCBmb3IgZm9sbG93ZXJzLCB0aGlzIGlzIHRoZSBleGlzdGluZyBsZWFkZXIncyBpbmZvICovXG4gIGxlYWRlckluZm86IENvbnNvbGVMZWFkZXJJbmZvO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExlYWRlclByZWZlcmVuY2VEZWNpc2lvbiB7XG4gIHNob3VsZFJlcGxhY2U6IGJvb2xlYW47XG4gIHJlYXNvbjogJ25ld2VyLWNvbXBhdGlibGUtdmVyc2lvbicgfCAnc2FtZS12ZXJzaW9uJyB8ICdvbGRlci12ZXJzaW9uJyB8ICdpbmNvbXBhdGlibGUtcHJvdG9jb2wnO1xuICBjYW5kaWRhdGVWZXJzaW9uOiBzdHJpbmc7XG4gIGV4aXN0aW5nVmVyc2lvbjogc3RyaW5nO1xuICBjYW5kaWRhdGVQcm90b2NvbFZlcnNpb246IG51bWJlcjtcbiAgZXhpc3RpbmdQcm90b2NvbFZlcnNpb246IG51bWJlcjtcbn1cblxuLyoqXG4gKiBDaGVjayB3aGV0aGVyIGEgcHJvY2VzcyB3aXRoIHRoZSBnaXZlbiBQSUQgaXMgYWxpdmUuXG4gKiBVc2VzIHNpZ25hbCAwIHdoaWNoIGNoZWNrcyBleGlzdGVuY2Ugd2l0aG91dCBzZW5kaW5nIGEgc2lnbmFsLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNQcm9jZXNzQWxpdmUocGlkOiBudW1iZXIpOiBib29sZWFuIHtcbiAgdHJ5IHtcbiAgICBwcm9jZXNzLmtpbGwocGlkLCAwKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBjYXRjaCAoZXJyOiBhbnkpIHtcbiAgICAvLyBFUEVSTSA9IHByb2Nlc3MgZXhpc3RzIGJ1dCBvd25lZCBieSBhbm90aGVyIHVzZXIg4oCUIHN0aWxsIGFsaXZlXG4gICAgcmV0dXJuIGVycj8uY29kZSA9PT0gJ0VQRVJNJztcbiAgfVxufVxuXG4vKipcbiAqIE5vcm1hbGl6ZSB0aGUgc2VydmVyIHZlcnNpb24gcHJlc2VudCBpbiB0aGUgbGVhZGVyIGxvY2suXG4gKiBNaXNzaW5nIG1ldGFkYXRhIG1lYW5zIFwibGVnYWN5IGxlYWRlclwiIGZvciBlbGVjdGlvbiBwdXJwb3Nlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldExlYWRlclNlcnZlclZlcnNpb24oaW5mbzogQ29uc29sZUxlYWRlckluZm8pOiBzdHJpbmcge1xuICBpZiAodHlwZW9mIGluZm8uc2VydmVyVmVyc2lvbiA9PT0gJ3N0cmluZycgJiYgaW5mby5zZXJ2ZXJWZXJzaW9uLnRyaW0oKS5sZW5ndGggPiAwKSB7XG4gICAgcmV0dXJuIGluZm8uc2VydmVyVmVyc2lvbi50cmltKCk7XG4gIH1cbiAgcmV0dXJuIExFR0FDWV9TRVJWRVJfVkVSU0lPTjtcbn1cblxuLyoqXG4gKiBOb3JtYWxpemUgdGhlIGNvbnNvbGUgcHJvdG9jb2wgdmVyc2lvbiBwcmVzZW50IGluIHRoZSBsZWFkZXIgbG9jay5cbiAqIE1pc3NpbmcgbWV0YWRhdGEgbWVhbnMgYSBsZWFkZXIgZnJvbSBiZWZvcmUgdmVyc2lvbi1hd2FyZSBlbGVjdGlvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldExlYWRlckNvbnNvbGVQcm90b2NvbFZlcnNpb24oaW5mbzogQ29uc29sZUxlYWRlckluZm8pOiBudW1iZXIge1xuICBjb25zdCByYXcgPSBpbmZvLmNvbnNvbGVQcm90b2NvbFZlcnNpb247XG4gIGlmICh0eXBlb2YgcmF3ID09PSAnbnVtYmVyJyAmJiBOdW1iZXIuaXNJbnRlZ2VyKHJhdykgJiYgcmF3ID49IDApIHtcbiAgICByZXR1cm4gcmF3O1xuICB9XG4gIHJldHVybiBMRUdBQ1lfQ09OU09MRV9QUk9UT0NPTF9WRVJTSU9OO1xufVxuXG4vKipcbiAqIENyZWF0ZSB0aGlzIHByb2Nlc3MncyBsZWFkZXIgbWV0YWRhdGEgaW4gb25lIHBsYWNlIHNvIGFsbCBsZWFkZXJzaGlwIHBhdGhzXG4gKiBwdWJsaXNoIHRoZSBzYW1lIHZlcnNpb24gYW5kIHByb3RvY29sIGluZm9ybWF0aW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTGVhZGVySW5mbyhzZXNzaW9uSWQ6IHN0cmluZywgcG9ydDogbnVtYmVyKTogQ29uc29sZUxlYWRlckluZm8ge1xuICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCk7XG4gIHJldHVybiB7XG4gICAgdmVyc2lvbjogTE9DS19WRVJTSU9OLFxuICAgIHBpZDogcHJvY2Vzcy5waWQsXG4gICAgcG9ydCxcbiAgICBzZXNzaW9uSWQ6IFVuaWNvZGVWYWxpZGF0b3Iubm9ybWFsaXplKHNlc3Npb25JZCkubm9ybWFsaXplZENvbnRlbnQsXG4gICAgc3RhcnRlZEF0OiBub3csXG4gICAgaGVhcnRiZWF0OiBub3csXG4gICAgc2VydmVyVmVyc2lvbjogUEFDS0FHRV9WRVJTSU9OLFxuICAgIGNvbnNvbGVQcm90b2NvbFZlcnNpb246IENPTlNPTEVfUFJPVE9DT0xfVkVSU0lPTixcbiAgfTtcbn1cblxuLyoqXG4gKiBEZWNpZGUgd2hldGhlciB0aGlzIHByb2Nlc3Mgc2hvdWxkIHJlcGxhY2UgdGhlIGN1cnJlbnQgbGl2ZSBsZWFkZXIgYmFzZWQgb25cbiAqIGNvbXBhdGliaWxpdHkgZmlyc3QsIHRoZW4gcGFja2FnZSB2ZXJzaW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZXZhbHVhdGVMZWFkZXJQcmVmZXJlbmNlKFxuICBjYW5kaWRhdGU6IENvbnNvbGVMZWFkZXJJbmZvLFxuICBleGlzdGluZzogQ29uc29sZUxlYWRlckluZm8sXG4pOiBMZWFkZXJQcmVmZXJlbmNlRGVjaXNpb24ge1xuICBjb25zdCBjYW5kaWRhdGVWZXJzaW9uID0gZ2V0TGVhZGVyU2VydmVyVmVyc2lvbihjYW5kaWRhdGUpO1xuICBjb25zdCBleGlzdGluZ1ZlcnNpb24gPSBnZXRMZWFkZXJTZXJ2ZXJWZXJzaW9uKGV4aXN0aW5nKTtcbiAgY29uc3QgY2FuZGlkYXRlUHJvdG9jb2xWZXJzaW9uID0gZ2V0TGVhZGVyQ29uc29sZVByb3RvY29sVmVyc2lvbihjYW5kaWRhdGUpO1xuICBjb25zdCBleGlzdGluZ1Byb3RvY29sVmVyc2lvbiA9IGdldExlYWRlckNvbnNvbGVQcm90b2NvbFZlcnNpb24oZXhpc3RpbmcpO1xuXG4gIGNvbnN0IGNvbXBhdGlibGUgPVxuICAgIGV4aXN0aW5nUHJvdG9jb2xWZXJzaW9uID09PSBjYW5kaWRhdGVQcm90b2NvbFZlcnNpb24gfHxcbiAgICBleGlzdGluZ1Byb3RvY29sVmVyc2lvbiA9PT0gTEVHQUNZX0NPTlNPTEVfUFJPVE9DT0xfVkVSU0lPTjtcblxuICBpZiAoIWNvbXBhdGlibGUpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc2hvdWxkUmVwbGFjZTogZmFsc2UsXG4gICAgICByZWFzb246ICdpbmNvbXBhdGlibGUtcHJvdG9jb2wnLFxuICAgICAgY2FuZGlkYXRlVmVyc2lvbixcbiAgICAgIGV4aXN0aW5nVmVyc2lvbixcbiAgICAgIGNhbmRpZGF0ZVByb3RvY29sVmVyc2lvbixcbiAgICAgIGV4aXN0aW5nUHJvdG9jb2xWZXJzaW9uLFxuICAgIH07XG4gIH1cblxuICBjb25zdCB2ZXJzaW9uQ29tcGFyaXNvbiA9IGNvbXBhcmVWZXJzaW9ucyhjYW5kaWRhdGVWZXJzaW9uLCBleGlzdGluZ1ZlcnNpb24pO1xuICBpZiAodmVyc2lvbkNvbXBhcmlzb24gPiAwKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNob3VsZFJlcGxhY2U6IHRydWUsXG4gICAgICByZWFzb246ICduZXdlci1jb21wYXRpYmxlLXZlcnNpb24nLFxuICAgICAgY2FuZGlkYXRlVmVyc2lvbixcbiAgICAgIGV4aXN0aW5nVmVyc2lvbixcbiAgICAgIGNhbmRpZGF0ZVByb3RvY29sVmVyc2lvbixcbiAgICAgIGV4aXN0aW5nUHJvdG9jb2xWZXJzaW9uLFxuICAgIH07XG4gIH1cbiAgaWYgKHZlcnNpb25Db21wYXJpc29uID09PSAwKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNob3VsZFJlcGxhY2U6IGZhbHNlLFxuICAgICAgcmVhc29uOiAnc2FtZS12ZXJzaW9uJyxcbiAgICAgIGNhbmRpZGF0ZVZlcnNpb24sXG4gICAgICBleGlzdGluZ1ZlcnNpb24sXG4gICAgICBjYW5kaWRhdGVQcm90b2NvbFZlcnNpb24sXG4gICAgICBleGlzdGluZ1Byb3RvY29sVmVyc2lvbixcbiAgICB9O1xuICB9XG4gIHJldHVybiB7XG4gICAgc2hvdWxkUmVwbGFjZTogZmFsc2UsXG4gICAgcmVhc29uOiAnb2xkZXItdmVyc2lvbicsXG4gICAgY2FuZGlkYXRlVmVyc2lvbixcbiAgICBleGlzdGluZ1ZlcnNpb24sXG4gICAgY2FuZGlkYXRlUHJvdG9jb2xWZXJzaW9uLFxuICAgIGV4aXN0aW5nUHJvdG9jb2xWZXJzaW9uLFxuICB9O1xufVxuXG4vKipcbiAqIFJlc3VsdCBvZiBhIGxlZ2FjeS1sZWFkZXIgZGV0ZWN0aW9uIHNjYW4uXG4gKiBgbGVnYWN5UnVubmluZyA9PT0gdHJ1ZWAgbWVhbnMgYSBwcmUtYXV0aGVudGljYXRpb24gRG9sbGhvdXNlTUNQIGNvbnNvbGVcbiAqIGlzIGN1cnJlbnRseSBydW5uaW5nIG9uIHRoaXMgbWFjaGluZSAoaXRzIGxvY2sgZmlsZSBleGlzdHMgYW5kIGl0cyBwaWRcbiAqIGlzIGFsaXZlKS4gQ2FsbGVycyBjYW4gc3VyZmFjZSB0aGlzIHRvIHRoZSB1c2VyIGFzIGEgd2FybmluZy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMZWdhY3lMZWFkZXJJbmZvIHtcbiAgbGVnYWN5UnVubmluZzogYm9vbGVhbjtcbiAgcGlkPzogbnVtYmVyO1xuICBwb3J0PzogbnVtYmVyO1xuICBsb2NrUGF0aDogc3RyaW5nO1xufVxuXG4vKipcbiAqIERldGVjdCB3aGV0aGVyIGEgbGVnYWN5IChwcmUtYXV0aGVudGljYXRpb24pIERvbGxob3VzZU1DUCBjb25zb2xlIGlzXG4gKiBjdXJyZW50bHkgcnVubmluZyBvbiB0aGlzIG1hY2hpbmUgKCMxNzk0KS5cbiAqXG4gKiBUaGUgcHJlLWF1dGhlbnRpY2F0aW9uIGNvbnNvbGUgd3JpdGVzIGl0cyBsb2NrIHRvXG4gKiBgfi8uZG9sbGhvdXNlL3J1bi9jb25zb2xlLWxlYWRlci5sb2NrYCAobm8gYC5hdXRoYCBzdWZmaXgpLiBBblxuICogYXV0aGVudGljYXRlZCBjb25zb2xlIG9uIGEgZGlmZmVyZW50IHBvcnQgd2lsbCBub3QgaW50ZXJmZXJlIHdpdGhcbiAqIGl0IOKAlCB0aGV5IGhhdmUgZnVsbHkgaW5kZXBlbmRlbnQgcG9ydHMsIGxvY2sgZmlsZXMsIGFuZCB0b2tlbiBmaWxlcyDigJRcbiAqIGJ1dCB0aGUgdXNlciBwcm9iYWJseSB3YW50cyB0byBrbm93IHRoZSB0d28gZXhpc3Qgc2ltdWx0YW5lb3VzbHlcbiAqIGJlY2F1c2UgdGhlIHNlY3VyaXR5IHBvc3R1cmUgb2YgZWFjaCBjb25zb2xlIGlzIGRpZmZlcmVudC5cbiAqXG4gKiBSZXR1cm5zIGluZm8gYWJvdXQgdGhlIGxlZ2FjeSBsZWFkZXIgaWYgb25lIGlzIGRldGVjdGVkLCBvclxuICogYHsgbGVnYWN5UnVubmluZzogZmFsc2UgfWAgb3RoZXJ3aXNlLlxuICpcbiAqIEBwYXJhbSBsb2NrUGF0aCAtIE9wdGlvbmFsIG92ZXJyaWRlIGZvciB0aGUgbGVnYWN5IGxvY2sgZmlsZSBwYXRoLlxuICogICAgICAgICAgICAgICAgICAgRGVmYXVsdHMgdG8gdGhlIGJ1aWx0LWluIGxlZ2FjeSBsb2NhdGlvbi4gUHJpbWFyaWx5XG4gKiAgICAgICAgICAgICAgICAgICB1c2VkIGJ5IHRlc3RzIHRvIHBvaW50IGF0IGEgdGVtcCBkaXJlY3RvcnkuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBkZXRlY3RMZWdhY3lMZWFkZXIobG9ja1BhdGg6IHN0cmluZyA9IExFR0FDWV9MT0NLX0ZJTEUpOiBQcm9taXNlPExlZ2FjeUxlYWRlckluZm8+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBjb250ZW50ID0gYXdhaXQgcmVhZEZpbGUobG9ja1BhdGgsICd1dGYtOCcpO1xuICAgIGNvbnN0IGRhdGEgPSBKU09OLnBhcnNlKGNvbnRlbnQpIGFzIENvbnNvbGVMZWFkZXJJbmZvO1xuICAgIGlmICghZGF0YS5waWQgfHwgIWlzUHJvY2Vzc0FsaXZlKGRhdGEucGlkKSkge1xuICAgICAgcmV0dXJuIHsgbGVnYWN5UnVubmluZzogZmFsc2UsIGxvY2tQYXRoIH07XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBsZWdhY3lSdW5uaW5nOiB0cnVlLFxuICAgICAgcGlkOiBkYXRhLnBpZCxcbiAgICAgIHBvcnQ6IGRhdGEucG9ydCxcbiAgICAgIGxvY2tQYXRoLFxuICAgIH07XG4gIH0gY2F0Y2gge1xuICAgIC8vIEZpbGUgbWlzc2luZywgdW5yZWFkYWJsZSwgb3IgaW52YWxpZCBKU09OIOKAlCBubyBsZWdhY3kgbGVhZGVyIGRldGVjdGVkXG4gICAgcmV0dXJuIHsgbGVnYWN5UnVubmluZzogZmFsc2UsIGxvY2tQYXRoIH07XG4gIH1cbn1cblxuLyoqXG4gKiBSZWFkIGFuZCBwYXJzZSB0aGUgbGVhZGVyIGxvY2sgZmlsZS5cbiAqIFJldHVybnMgbnVsbCBpZiB0aGUgZmlsZSBkb2Vzbid0IGV4aXN0LCBpcyB1bnJlYWRhYmxlLCBvciBoYXMgaW52YWxpZCBjb250ZW50LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVhZExlYWRlckxvY2sobG9ja1BhdGg6IHN0cmluZyA9IExPQ0tfRklMRSk6IFByb21pc2U8Q29uc29sZUxlYWRlckluZm8gfCBudWxsPiB7XG4gIHRyeSB7XG4gICAgY29uc3QgY29udGVudCA9IGF3YWl0IHJlYWRGaWxlKGxvY2tQYXRoLCAndXRmLTgnKTtcbiAgICBjb25zdCBkYXRhID0gSlNPTi5wYXJzZShjb250ZW50KSBhcyBDb25zb2xlTGVhZGVySW5mbztcbiAgICBpZiAoZGF0YS52ZXJzaW9uICE9PSBMT0NLX1ZFUlNJT04gfHwgIWRhdGEucGlkIHx8ICFkYXRhLnBvcnQgfHwgIWRhdGEuc2Vzc2lvbklkKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIGRhdGE7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgaWYgKChlcnJvciBhcyBOb2RlSlMuRXJybm9FeGNlcHRpb24pLmNvZGUgIT09ICdFTk9FTlQnKSB7XG4gICAgICBsb2dnZXIuZGVidWcoJ1tMZWFkZXJFbGVjdGlvbl0gSWdub3JpbmcgdW5yZWFkYWJsZSBvciBpbnZhbGlkIGxlYWRlciBsb2NrJywge1xuICAgICAgICBsb2NrRmlsZTogbG9ja1BhdGgsXG4gICAgICAgIGVycm9yOiBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IFN0cmluZyhlcnJvciksXG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cblxuLyoqXG4gKiBDaGVjayBpZiBhIGxlYWRlciBsb2NrIGlzIHN0YWxlIChkZWFkIHByb2Nlc3Mgb3IgZXhwaXJlZCBoZWFydGJlYXQpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNMb2NrU3RhbGUoaW5mbzogQ29uc29sZUxlYWRlckluZm8pOiBib29sZWFuIHtcbiAgaWYgKCFpc1Byb2Nlc3NBbGl2ZShpbmZvLnBpZCkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBjb25zdCBoZWFydGJlYXRBZ2UgPSBEYXRlLm5vdygpIC0gbmV3IERhdGUoaW5mby5oZWFydGJlYXQpLmdldFRpbWUoKTtcbiAgcmV0dXJuIGhlYXJ0YmVhdEFnZSA+IEhFQVJUQkVBVF9TVEFMRV9NUztcbn1cblxuLyoqXG4gKiBBdHRlbXB0IHRvIGF0b21pY2FsbHkgY2xhaW0gbGVhZGVyc2hpcC5cbiAqXG4gKiBDcmVhdGVzIHRoZSBsb2NrIGZpbGUgd2l0aCBleGNsdXNpdmUtd3JpdGUgc2VtYW50aWNzIHNvIG9ubHkgb25lIHByb2Nlc3NcbiAqIGNhbiB3aW4gdGhlIGluaXRpYWwgY2xhaW0uIFRoaXMgYXZvaWRzIHN0YXJ0dXAgcmFjZXMgd2hlcmUgbXVsdGlwbGVcbiAqIGNvbnRlbmRlcnMgb3ZlcndyaXRlIHRoZSBsb2NrIGluIHF1aWNrIHN1Y2Nlc3Npb24gYW5kIGVhY2ggYnJpZWZseSBiZWxpZXZlXG4gKiB0aGV5IGFyZSBsZWFkZXIuXG4gKlxuICogQHJldHVybnMgdHJ1ZSBpZiB0aGlzIHByb2Nlc3Mgc3VjY2Vzc2Z1bGx5IGNsYWltZWQgbGVhZGVyc2hpcFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY2xhaW1MZWFkZXJzaGlwKFxuICBpbmZvOiBDb25zb2xlTGVhZGVySW5mbyxcbiAgbG9ja1BhdGg6IHN0cmluZyA9IExPQ0tfRklMRSxcbik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICBhd2FpdCBta2RpcihkaXJuYW1lKGxvY2tQYXRoKSwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gIHRyeSB7XG4gICAgY29uc3QgaGFuZGxlID0gYXdhaXQgb3Blbihsb2NrUGF0aCwgJ3d4JywgMG82MDApO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBoYW5kbGUud3JpdGVGaWxlKEpTT04uc3RyaW5naWZ5KGluZm8sIG51bGwsIDIpLCAndXRmLTgnKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgYXdhaXQgaGFuZGxlLmNsb3NlKCk7XG4gICAgfVxuXG4gICAgLy8gVmVyaWZ5IHdlIHdvbiB0aGUgcmFjZS5cbiAgICBjb25zdCB3cml0dGVuID0gYXdhaXQgcmVhZExlYWRlckxvY2sobG9ja1BhdGgpO1xuICAgIHJldHVybiB3cml0dGVuICE9PSBudWxsICYmIHdyaXR0ZW4ucGlkID09PSBpbmZvLnBpZDtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBpZiAoKGVycm9yIGFzIE5vZGVKUy5FcnJub0V4Y2VwdGlvbikuY29kZSA9PT0gJ0VFWElTVCcpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8qKlxuICogRGVsZXRlIHRoZSBsZWFkZXIgbG9jayBmaWxlIChmb3IgY2xlYW51cCBvciB0YWtlb3ZlcikuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBkZWxldGVMZWFkZXJMb2NrKCk6IFByb21pc2U8dm9pZD4ge1xuICB0cnkgeyBhd2FpdCB1bmxpbmsoTE9DS19GSUxFKTsgfSBjYXRjaCB7IC8qIGFscmVhZHkgZ29uZSAqLyB9XG59XG5cbi8qKlxuICogUnVuIHRoZSBsZWFkZXIgZWxlY3Rpb24gcHJvdG9jb2wuXG4gKlxuICogMS4gSWYgbm8gbG9jayBleGlzdHMgb3IgbG9jayBpcyBzdGFsZSDihpIgY2xhaW0gbGVhZGVyc2hpcFxuICogMi4gSWYgbG9jayBleGlzdHMgd2l0aCBhIGxpdmUsIHJlc3BvbnNpdmUgbGVhZGVyIOKGkiBiZWNvbWUgZm9sbG93ZXJcbiAqXG4gKiBAcGFyYW0gc2Vzc2lvbklkIC0gVGhpcyBwcm9jZXNzJ3MgdW5pcXVlIHNlc3Npb24gaWRlbnRpZmllclxuICogQHBhcmFtIHBvcnQgLSBUaGUgcG9ydCB0aGlzIHByb2Nlc3Mgd291bGQgdXNlIGFzIGxlYWRlciAoc2VlIGBET0xMSE9VU0VfV0VCX0NPTlNPTEVfUE9SVGApXG4gKiBAcmV0dXJucyBFbGVjdGlvbiByZXN1bHQgd2l0aCByb2xlIGFuZCBsZWFkZXIgaW5mb1xuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZWxlY3RMZWFkZXIoc2Vzc2lvbklkOiBzdHJpbmcsIHBvcnQ6IG51bWJlcik6IFByb21pc2U8RWxlY3Rpb25SZXN1bHQ+IHtcbiAgY29uc3QgbXlJbmZvID0gY3JlYXRlTGVhZGVySW5mbyhzZXNzaW9uSWQsIHBvcnQpO1xuICBzZXNzaW9uSWQgPSBteUluZm8uc2Vzc2lvbklkO1xuICBjb25zdCBleGlzdGluZ0xvY2sgPSBhd2FpdCByZWFkTGVhZGVyTG9jaygpO1xuXG4gIGlmIChleGlzdGluZ0xvY2sgJiYgIWlzTG9ja1N0YWxlKGV4aXN0aW5nTG9jaykpIHtcbiAgICBjb25zdCBwcmVmZXJlbmNlID0gZXZhbHVhdGVMZWFkZXJQcmVmZXJlbmNlKG15SW5mbywgZXhpc3RpbmdMb2NrKTtcbiAgICBpZiAocHJlZmVyZW5jZS5zaG91bGRSZXBsYWNlKSB7XG4gICAgICBsb2dnZXIuaW5mbygnW0xlYWRlckVsZWN0aW9uXSBSZXBsYWNpbmcgbGVhZGVyIHdpdGggbmV3ZXIgY29tcGF0aWJsZSB2ZXJzaW9uJywge1xuICAgICAgICBzdGFsZVNlc3Npb246IGV4aXN0aW5nTG9jay5zZXNzaW9uSWQsXG4gICAgICAgIHN0YWxlUGlkOiBleGlzdGluZ0xvY2sucGlkLFxuICAgICAgICBzdGFsZVBvcnQ6IGV4aXN0aW5nTG9jay5wb3J0LFxuICAgICAgICBzdGFsZVZlcnNpb246IHByZWZlcmVuY2UuZXhpc3RpbmdWZXJzaW9uLFxuICAgICAgICBzdGFsZVByb3RvY29sVmVyc2lvbjogcHJlZmVyZW5jZS5leGlzdGluZ1Byb3RvY29sVmVyc2lvbixcbiAgICAgICAgbXlTZXNzaW9uOiBzZXNzaW9uSWQsXG4gICAgICAgIG15UGlkOiBwcm9jZXNzLnBpZCxcbiAgICAgICAgbXlWZXJzaW9uOiBwcmVmZXJlbmNlLmNhbmRpZGF0ZVZlcnNpb24sXG4gICAgICAgIG15UHJvdG9jb2xWZXJzaW9uOiBwcmVmZXJlbmNlLmNhbmRpZGF0ZVByb3RvY29sVmVyc2lvbixcbiAgICAgIH0pO1xuICAgICAgYXdhaXQgZGVsZXRlTGVhZGVyTG9jaygpO1xuICAgIH0gZWxzZSB7XG4gICAgICBsb2dnZXIuaW5mbygnW0xlYWRlckVsZWN0aW9uXSBFeGlzdGluZyBsZWFkZXIgZm91bmQg4oCUIGJlY29taW5nIGZvbGxvd2VyJywge1xuICAgICAgICBsZWFkZXJTZXNzaW9uOiBleGlzdGluZ0xvY2suc2Vzc2lvbklkLFxuICAgICAgICBsZWFkZXJQaWQ6IGV4aXN0aW5nTG9jay5waWQsXG4gICAgICAgIGxlYWRlclBvcnQ6IGV4aXN0aW5nTG9jay5wb3J0LFxuICAgICAgICBsZWFkZXJWZXJzaW9uOiBwcmVmZXJlbmNlLmV4aXN0aW5nVmVyc2lvbixcbiAgICAgICAgbGVhZGVyUHJvdG9jb2xWZXJzaW9uOiBwcmVmZXJlbmNlLmV4aXN0aW5nUHJvdG9jb2xWZXJzaW9uLFxuICAgICAgICBteVNlc3Npb246IHNlc3Npb25JZCxcbiAgICAgICAgbXlQaWQ6IHByb2Nlc3MucGlkLFxuICAgICAgICBteVZlcnNpb246IHByZWZlcmVuY2UuY2FuZGlkYXRlVmVyc2lvbixcbiAgICAgICAgbXlQcm90b2NvbFZlcnNpb246IHByZWZlcmVuY2UuY2FuZGlkYXRlUHJvdG9jb2xWZXJzaW9uLFxuICAgICAgICByZWFzb246IHByZWZlcmVuY2UucmVhc29uLFxuICAgICAgfSk7XG4gICAgICByZXR1cm4geyByb2xlOiAnZm9sbG93ZXInLCBsZWFkZXJJbmZvOiBleGlzdGluZ0xvY2sgfTtcbiAgICB9XG4gIH1cblxuICBpZiAoZXhpc3RpbmdMb2NrICYmICFpc0xvY2tTdGFsZShleGlzdGluZ0xvY2spKSB7XG4gICAgLy8gTGVhZGVyIHdhcyBpbnRlbnRpb25hbGx5IHJlcGxhY2VkIGFib3ZlLiBDb250aW51ZSB0byB0aGUgY2xhaW0gcGF0aC5cbiAgfSBlbHNlIGlmIChleGlzdGluZ0xvY2spIHtcbiAgICAvLyBObyB2YWxpZCBsZWFkZXIg4oCUIHRyeSB0byBjbGFpbVxuICAgIGNvbnN0IGFsaXZlID0gaXNQcm9jZXNzQWxpdmUoZXhpc3RpbmdMb2NrLnBpZCk7XG4gICAgY29uc3QgaGVhcnRiZWF0QWdlID0gRGF0ZS5ub3coKSAtIG5ldyBEYXRlKGV4aXN0aW5nTG9jay5oZWFydGJlYXQpLmdldFRpbWUoKTtcbiAgICBsb2dnZXIuaW5mbygnW0xlYWRlckVsZWN0aW9uXSBTdGFsZSBsZWFkZXIgbG9jayDigJQgdGFraW5nIG92ZXInLCB7XG4gICAgICBzdGFsZVBpZDogZXhpc3RpbmdMb2NrLnBpZCwgYWxpdmUsIGhlYXJ0YmVhdEFnZU1zOiBoZWFydGJlYXRBZ2UsXG4gICAgICBzdGFsZVNlc3Npb246IGV4aXN0aW5nTG9jay5zZXNzaW9uSWQsIG15U2Vzc2lvbjogc2Vzc2lvbklkLFxuICAgIH0pO1xuICAgIGF3YWl0IGRlbGV0ZUxlYWRlckxvY2soKTtcbiAgfVxuXG4gIGNvbnN0IGNsYWltZWQgPSBhd2FpdCBjbGFpbUxlYWRlcnNoaXAobXlJbmZvKTtcbiAgaWYgKGNsYWltZWQpIHtcbiAgICBsb2dnZXIuaW5mbygnW0xlYWRlckVsZWN0aW9uXSBDbGFpbWVkIGxlYWRlcnNoaXAnLCB7IHNlc3Npb25JZCwgcG9ydCwgcGlkOiBwcm9jZXNzLnBpZCB9KTtcbiAgICByZXR1cm4geyByb2xlOiAnbGVhZGVyJywgbGVhZGVySW5mbzogbXlJbmZvIH07XG4gIH1cblxuICAvLyBBbm90aGVyIHByb2Nlc3Mgd29uIHRoZSByYWNlIOKAlCByZS1yZWFkIGFuZCBiZWNvbWUgZm9sbG93ZXJcbiAgY29uc3Qgd2lubmVyID0gYXdhaXQgcmVhZExlYWRlckxvY2soKTtcbiAgaWYgKHdpbm5lcikge1xuICAgIGxvZ2dlci5pbmZvKCdbTGVhZGVyRWxlY3Rpb25dIExvc3QgZWxlY3Rpb24g4oCUIGJlY29taW5nIGZvbGxvd2VyJywge1xuICAgICAgd2lubmVyUGlkOiB3aW5uZXIucGlkLCB3aW5uZXJTZXNzaW9uOiB3aW5uZXIuc2Vzc2lvbklkLCBteVNlc3Npb246IHNlc3Npb25JZCwgbXlQaWQ6IHByb2Nlc3MucGlkLFxuICAgIH0pO1xuICAgIHJldHVybiB7IHJvbGU6ICdmb2xsb3dlcicsIGxlYWRlckluZm86IHdpbm5lciB9O1xuICB9XG5cbiAgLy8gRXh0cmVtZWx5IHVubGlrZWx5OiBsb2NrIGRpc2FwcGVhcmVkIGJldHdlZW4gb3VyIGNsYWltIGFuZCByZS1yZWFkLiBSZXRyeSBvbmNlLlxuICBsb2dnZXIud2FybignW0xlYWRlckVsZWN0aW9uXSBMb2NrIHZhbmlzaGVkIGFmdGVyIGZhaWxlZCBjbGFpbS4gUmV0cnlpbmcuJyk7XG4gIGNvbnN0IHJldHJ5SW5mbzogQ29uc29sZUxlYWRlckluZm8gPSB7IC4uLmNyZWF0ZUxlYWRlckluZm8oc2Vzc2lvbklkLCBwb3J0KSB9O1xuICBjb25zdCByZXRyeUNsYWltZWQgPSBhd2FpdCBjbGFpbUxlYWRlcnNoaXAocmV0cnlJbmZvKTtcbiAgaWYgKHJldHJ5Q2xhaW1lZCkge1xuICAgIHJldHVybiB7IHJvbGU6ICdsZWFkZXInLCBsZWFkZXJJbmZvOiByZXRyeUluZm8gfTtcbiAgfVxuICBjb25zdCBhY3R1YWxMZWFkZXIgPSBhd2FpdCByZWFkTGVhZGVyTG9jaygpO1xuICByZXR1cm4geyByb2xlOiAnZm9sbG93ZXInLCBsZWFkZXJJbmZvOiBhY3R1YWxMZWFkZXIgPz8gcmV0cnlJbmZvIH07XG59XG5cbi8qKlxuICogUHJvYmUgd2hldGhlciB0aGUgbGVhZGVyJ3Mgd2ViIGNvbnNvbGUgaXMgcmVhY2hhYmxlLlxuICogUmV0dXJucyB0cnVlIGlmIHRoZSBsZWFkZXIncyBpbmdlc3QgZW5kcG9pbnQgcmVzcG9uZHMsIGZhbHNlIG90aGVyd2lzZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGlzTGVhZGVyV2ViQ29uc29sZVJlYWNoYWJsZShsZWFkZXJJbmZvOiBDb25zb2xlTGVhZGVySW5mbyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICB0cnkge1xuICAgIGNvbnN0IGNvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gICAgY29uc3QgdGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4gY29udHJvbGxlci5hYm9ydCgpLCAyXzAwMCk7XG4gICAgY29uc3QgcmVzID0gYXdhaXQgZmV0Y2goYGh0dHA6Ly8xMjcuMC4wLjE6JHtsZWFkZXJJbmZvLnBvcnR9L2FwaS9sb2dzL3N0YXRzYCwge1xuICAgICAgc2lnbmFsOiBjb250cm9sbGVyLnNpZ25hbCxcbiAgICB9KTtcbiAgICBjbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgcmV0dXJuIHJlcy5vaztcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8qKlxuICogRm9yY2UgY2xhaW0gbGVhZGVyc2hpcCBieSBkZWxldGluZyB0aGUgZXhpc3RpbmcgbG9jayBhbmQgY2xhaW1pbmcuXG4gKiBVc2VkIHdoZW4gdGhlIGV4aXN0aW5nIGxlYWRlciBpcyBhbGl2ZSBidXQgbm90IHJ1bm5pbmcgYSB3ZWIgY29uc29sZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZvcmNlQ2xhaW1MZWFkZXJzaGlwKHNlc3Npb25JZDogc3RyaW5nLCBwb3J0OiBudW1iZXIpOiBQcm9taXNlPEVsZWN0aW9uUmVzdWx0PiB7XG4gIGxvZ2dlci5pbmZvKCdbTGVhZGVyRWxlY3Rpb25dIEZvcmNpbmcgbGVhZGVyc2hpcCB0YWtlb3ZlciDigJQgZXhpc3RpbmcgbGVhZGVyIGhhcyBubyB3ZWIgY29uc29sZScpO1xuICBhd2FpdCBkZWxldGVMZWFkZXJMb2NrKCk7XG4gIGNvbnN0IG15SW5mbyA9IGNyZWF0ZUxlYWRlckluZm8oc2Vzc2lvbklkLCBwb3J0KTtcblxuICBjb25zdCBjbGFpbWVkID0gYXdhaXQgY2xhaW1MZWFkZXJzaGlwKG15SW5mbyk7XG4gIGlmIChjbGFpbWVkKSB7XG4gICAgbG9nZ2VyLmluZm8oJ1tMZWFkZXJFbGVjdGlvbl0gRm9yY2VkIGxlYWRlcnNoaXAgY2xhaW1lZCcsIHsgc2Vzc2lvbklkLCBwb3J0LCBwaWQ6IHByb2Nlc3MucGlkIH0pO1xuICAgIHJldHVybiB7IHJvbGU6ICdsZWFkZXInLCBsZWFkZXJJbmZvOiBteUluZm8gfTtcbiAgfVxuXG4gIC8vIEZhaWxlZCDigJQgZmFsbCBiYWNrIHRvIGZvbGxvd2VyXG4gIGNvbnN0IHdpbm5lciA9IGF3YWl0IHJlYWRMZWFkZXJMb2NrKCk7XG4gIHJldHVybiB7IHJvbGU6ICdmb2xsb3dlcicsIGxlYWRlckluZm86IHdpbm5lciA/PyBteUluZm8gfTtcbn1cblxuLyoqXG4gKiBTdGFydCB0aGUgbGVhZGVyIGhlYXJ0YmVhdCBsb29wLlxuICogVXBkYXRlcyB0aGUgbG9jayBmaWxlIGV2ZXJ5IEhFQVJUQkVBVF9JTlRFUlZBTF9NUyBzbyBmb2xsb3dlcnMga25vdyB0aGUgbGVhZGVyIGlzIGFsaXZlLlxuICpcbiAqIEByZXR1cm5zIEEgc3RvcCBmdW5jdGlvbiB0byBjbGVhciB0aGUgaW50ZXJ2YWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0YXJ0SGVhcnRiZWF0KGluZm86IENvbnNvbGVMZWFkZXJJbmZvKTogKCkgPT4gdm9pZCB7XG4gIGNvbnN0IGludGVydmFsID0gc2V0SW50ZXJ2YWwoYXN5bmMgKCkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB1cGRhdGVkOiBDb25zb2xlTGVhZGVySW5mbyA9IHsgLi4uaW5mbywgaGVhcnRiZWF0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCkgfTtcbiAgICAgIGNvbnN0IHRtcEZpbGUgPSBqb2luKFJVTl9ESVIsIGBjb25zb2xlLWxlYWRlci5sb2NrLiR7cHJvY2Vzcy5waWR9LnRtcGApO1xuICAgICAgYXdhaXQgd3JpdGVGaWxlKHRtcEZpbGUsIEpTT04uc3RyaW5naWZ5KHVwZGF0ZWQsIG51bGwsIDIpLCAndXRmLTgnKTtcbiAgICAgIGF3YWl0IHJlbmFtZSh0bXBGaWxlLCBMT0NLX0ZJTEUpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgbG9nZ2VyLmRlYnVnKCdbTGVhZGVyRWxlY3Rpb25dIEhlYXJ0YmVhdCB3cml0ZSBmYWlsZWQ6JywgZXJyKTtcbiAgICB9XG4gIH0sIEhFQVJUQkVBVF9JTlRFUlZBTF9NUyk7XG5cbiAgLy8gRG9uJ3QgbGV0IHRoZSBoZWFydGJlYXQgaW50ZXJ2YWwga2VlcCB0aGUgcHJvY2VzcyBhbGl2ZVxuICBpbnRlcnZhbC51bnJlZigpO1xuXG4gIHJldHVybiAoKSA9PiBjbGVhckludGVydmFsKGludGVydmFsKTtcbn1cblxuLyoqXG4gKiBSZWdpc3RlciBjbGVhbnVwIGhhbmRsZXJzIHRvIHJlbW92ZSB0aGUgbGVhZGVyIGxvY2sgb24gcHJvY2VzcyBleGl0LlxuICogU2hvdWxkIG9ubHkgYmUgY2FsbGVkIGJ5IHRoZSBsZWFkZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckxlYWRlckNsZWFudXAoKTogdm9pZCB7XG4gIGNvbnN0IGNsZWFudXAgPSAoKSA9PiB7IGRlbGV0ZUxlYWRlckxvY2soKS5jYXRjaCgoKSA9PiB7fSk7IH07XG4gIHByb2Nlc3Mub25jZSgnZXhpdCcsIGNsZWFudXApO1xuICBwcm9jZXNzLm9uY2UoJ1NJR1RFUk0nLCBjbGVhbnVwKTtcbiAgcHJvY2Vzcy5vbmNlKCdTSUdJTlQnLCBjbGVhbnVwKTtcbiAgcHJvY2Vzcy5vbmNlKCdTSUdIVVAnLCBjbGVhbnVwKTtcbn1cbiJdfQ==
|
|
@@ -105,12 +105,23 @@ interface FollowerAuthorityResolution {
|
|
|
105
105
|
replacement: PortOwnerReplacementDecision | null;
|
|
106
106
|
forcedClaim: boolean;
|
|
107
107
|
}
|
|
108
|
+
interface LeaderPreflightResolution {
|
|
109
|
+
election: ElectionResult;
|
|
110
|
+
discovery: PortLeaderDiscovery | null;
|
|
111
|
+
replacement: PortOwnerReplacementDecision | null;
|
|
112
|
+
demotedToFollower: boolean;
|
|
113
|
+
}
|
|
108
114
|
interface FollowerAuthorityDependencies {
|
|
109
115
|
isLeaderWebConsoleReachableImpl?: typeof isLeaderWebConsoleReachable;
|
|
110
116
|
discoverLeaderServingPortImpl?: typeof discoverLeaderServingPort;
|
|
111
117
|
forceClaimLeadershipImpl?: typeof forceClaimLeadership;
|
|
112
118
|
deleteLeaderLockImpl?: typeof deleteLeaderLock;
|
|
113
119
|
}
|
|
120
|
+
interface LeaderPreflightDependencies extends DiscoveryDependencies {
|
|
121
|
+
discoverLeaderServingPortImpl?: typeof discoverLeaderServingPort;
|
|
122
|
+
readLeaderLockImpl?: typeof readLeaderLock;
|
|
123
|
+
deleteLeaderLockImpl?: typeof deleteLeaderLock;
|
|
124
|
+
}
|
|
114
125
|
interface FollowerAuthorityMonitorDependencies extends FollowerAuthorityDependencies {
|
|
115
126
|
resolveFollowerAuthorityImpl?: typeof resolveFollowerAuthority;
|
|
116
127
|
setTimeoutImpl?: typeof setTimeout;
|
|
@@ -121,6 +132,7 @@ interface LeaderLeaseReconciliationDependencies {
|
|
|
121
132
|
readLeaderLockImpl?: typeof readLeaderLock;
|
|
122
133
|
findPidOnPortImpl?: typeof findPidOnPort;
|
|
123
134
|
claimLeadershipImpl?: typeof claimLeadership;
|
|
135
|
+
deleteLeaderLockImpl?: typeof deleteLeaderLock;
|
|
124
136
|
killStaleProcessDetailedImpl?: typeof killStaleProcessDetailed;
|
|
125
137
|
setTimeoutImpl?: typeof setTimeout;
|
|
126
138
|
clearTimeoutImpl?: typeof clearTimeout;
|
|
@@ -137,9 +149,11 @@ interface BindFailureRecoveryDependencies extends DiscoveryDependencies {
|
|
|
137
149
|
}
|
|
138
150
|
export declare function recoverLeaderBindFailure(provisionalLeader: ConsoleLeaderInfo, port: number, authToken: string | null, deps?: BindFailureRecoveryDependencies): Promise<BindFailureRecoveryResult>;
|
|
139
151
|
export declare function evaluatePortOwnerReplacement(candidateLeader: ConsoleLeaderInfo, fallback: PortLeaderDiscovery): PortOwnerReplacementDecision;
|
|
152
|
+
export declare function shouldEvictDiscoveredOwner(discovery: PortLeaderDiscovery, replacement: PortOwnerReplacementDecision): boolean;
|
|
140
153
|
export declare function resolveFollowerAuthority(sessionId: string, consolePort: number, election: ElectionResult, deps?: FollowerAuthorityDependencies): Promise<FollowerAuthorityResolution>;
|
|
154
|
+
export declare function resolveLeaderPreflightAuthority(sessionId: string, consolePort: number, election: ElectionResult, authToken: string | null, deps?: LeaderPreflightDependencies): Promise<LeaderPreflightResolution>;
|
|
141
155
|
export declare function startFollowerAuthorityMonitor(options: UnifiedConsoleOptions, consolePort: number, election: ElectionResult, promotionMgr: PromotionManager, forwardingSink: LeaderForwardingLogSink, sessionHeartbeat: SessionHeartbeat, deps?: FollowerAuthorityMonitorDependencies): () => void;
|
|
142
|
-
export declare function reconcileLeaderLease(sessionId: string, consolePort: number, deps?: LeaderLeaseReconciliationDependencies): Promise<'not-port-owner' | 'already-owned' | 'reconciled'>;
|
|
156
|
+
export declare function reconcileLeaderLease(sessionId: string, consolePort: number, deps?: LeaderLeaseReconciliationDependencies): Promise<'not-port-owner' | 'already-owned' | 'reconciled' | 'reclaim-failed'>;
|
|
143
157
|
export declare function startLeaderLeaseMonitor(sessionId: string, consolePort: number, deps?: LeaderLeaseReconciliationDependencies): () => void;
|
|
144
158
|
/**
|
|
145
159
|
* Start the unified web console.
|