diff --git a/XtermBlazor/TerminalOptions.cs b/XtermBlazor/TerminalOptions.cs index 5d83fff..4df519c 100644 --- a/XtermBlazor/TerminalOptions.cs +++ b/XtermBlazor/TerminalOptions.cs @@ -85,6 +85,13 @@ public class TerminalOptions [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] public double? CursorWidth { get; set; } + /// + /// The style of the cursor when the terminal is not focused. + /// + [JsonPropertyName("cursorInactiveStyle")] + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + public CursorInactiveStyle? CursorInactiveStyle { get; set; } + /// /// Whether input should be disabled. /// @@ -141,6 +148,15 @@ public class TerminalOptions [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] public string? FontWeightBold { get; set; } + /// + /// Whether to ignore the bracketed paste mode. When true, this will always + /// paste without the `\x1b[200~` and `\x1b[201~` sequences, even when the + /// shell enables bracketed mode. + /// + [JsonPropertyName("ignoreBracketedPasteMode")] + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + public bool? IgnoreBracketedPasteMode { get; set; } + /// /// The spacing in whole pixels between characters. /// @@ -177,6 +193,13 @@ public class TerminalOptions [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] public LogLevel? LogLevel { get; set; } + /// + /// A logger to use instead of `console`. + /// + // [JsonPropertyName("logger")] + // [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + // public Logger Logger { get; set; } = new(); + /// /// Whether to treat option as the meta key. /// @@ -374,6 +397,43 @@ public enum CursorStyle Bar } + /// + /// The style of the cursor when the terminal is not focused. + /// + [JsonConverter(typeof(JsonStringEnumMemberConverter))] + public enum CursorInactiveStyle + { + /// + /// Outline + /// + [EnumMember(Value = "outline")] + Outline, + + /// + /// Block + /// + [EnumMember(Value = "block")] + Block, + + /// + /// Bar + /// + [EnumMember(Value = "bar")] + Bar, + + /// + /// Underline + /// + [EnumMember(Value = "underline")] + Underline, + + /// + /// None + /// + [EnumMember(Value = "none")] + None + } + /// /// The modifier key hold to multiply scroll speed. /// @@ -411,6 +471,12 @@ public enum FastScrollModifier [JsonConverter(typeof(JsonStringEnumMemberConverter))] public enum LogLevel { + /// + /// Trace + /// + [EnumMember(Value = "trace")] + Trace, + /// /// Debug /// diff --git a/XtermBlazor/XtermBlazor.csproj b/XtermBlazor/XtermBlazor.csproj index 4fdc3b3..ea84f2b 100644 --- a/XtermBlazor/XtermBlazor.csproj +++ b/XtermBlazor/XtermBlazor.csproj @@ -17,7 +17,7 @@ LICENSE Brings xterm.js to Blazor icon.png - 1.9.0 + 1.10.0 xterm, xterm-js, blazor, blazor-server, blazor-webassembly, blazor-wasm, xtermblazor true true diff --git a/XtermBlazor/package-lock.json b/XtermBlazor/package-lock.json index d5a5285..4b00e70 100644 --- a/XtermBlazor/package-lock.json +++ b/XtermBlazor/package-lock.json @@ -9,14 +9,14 @@ "version": "1.0.0", "license": "MIT", "dependencies": { - "xterm": "5.2.1" + "xterm": "5.3.0" }, "devDependencies": { "copy-webpack-plugin": "11.0.0", "ts-loader": "9.4.4", "ts-node": "10.9.1", "typescript": "5.1.5", - "webpack": "5.88.1", + "webpack": "5.88.2", "webpack-cli": "5.1.4" } }, @@ -32,16 +32,6 @@ "node": ">=12" } }, - "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, "node_modules/@discoveryjs/json-ext": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", @@ -66,9 +56,9 @@ } }, "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", "dev": true, "engines": { "node": ">=6.0.0" @@ -84,9 +74,9 @@ } }, "node_modules/@jridgewell/source-map": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.3.tgz", - "integrity": "sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", + "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", "dev": true, "dependencies": { "@jridgewell/gen-mapping": "^0.3.0", @@ -94,19 +84,19 @@ } }, "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", "dev": true }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.18", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", - "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", "dev": true, "dependencies": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" } }, "node_modules/@nodelib/fs.scandir": { @@ -169,9 +159,9 @@ "dev": true }, "node_modules/@types/eslint": { - "version": "8.40.2", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.40.2.tgz", - "integrity": "sha512-PRVjQ4Eh9z9pmmtaq8nTjZjQwKFk7YIHIud3lRoKRBgUQjgjRmoGxxGEPXQkF+lH7QkHJRNr5F4aBgYCW0lqpQ==", + "version": "8.44.3", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.3.tgz", + "integrity": "sha512-iM/WfkwAhwmPff3wZuPLYiHX18HI24jU8k1ZSH7P8FHwxTjZ2P6CoX2wnF43oprR+YXJM6UUxATkNvyv/JHd+g==", "dev": true, "dependencies": { "@types/estree": "*", @@ -179,9 +169,9 @@ } }, "node_modules/@types/eslint-scope": { - "version": "3.7.4", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", - "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", + "version": "3.7.5", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.5.tgz", + "integrity": "sha512-JNvhIEyxVW6EoMIFIvj93ZOywYFatlpu9deeH6eSx6PE3WHYvHaQtmHmQeNw7aA81bYGBPPQqdtBm6b1SsQMmA==", "dev": true, "dependencies": { "@types/eslint": "*", @@ -189,21 +179,21 @@ } }, "node_modules/@types/estree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", - "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.2.tgz", + "integrity": "sha512-VeiPZ9MMwXjO32/Xu7+OwflfmeoRwkE/qzndw42gGtgJwZopBnzy2gD//NN1+go1mADzkDcqf/KnFRSjTJ8xJA==", "dev": true }, "node_modules/@types/json-schema": { - "version": "7.0.12", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz", - "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==", + "version": "7.0.13", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.13.tgz", + "integrity": "sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ==", "dev": true }, "node_modules/@types/node": { - "version": "20.3.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.3.2.tgz", - "integrity": "sha512-vOBLVQeCQfIcF/2Y7eKFTqrMnizK5lRNQ7ykML/5RuwVXVWxYkgwS7xbt4B6fKCUPgbSL5FSsjHQpaGQP/dQmw==", + "version": "20.7.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.7.1.tgz", + "integrity": "sha512-LT+OIXpp2kj4E2S/p91BMe+VgGX2+lfO+XTpfXhh+bCk2LkQtHZSub8ewFBMGP5ClysPjTDFa4sMI8Q3n4T0wg==", "dev": true }, "node_modules/@webassemblyjs/ast": { @@ -409,9 +399,9 @@ "dev": true }, "node_modules/acorn": { - "version": "8.9.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.9.0.tgz", - "integrity": "sha512-jaVNAFBHNLXspO543WnNNPZFRtavh3skAkITqD0/2aeMkKZTN+254PyhwxFYrk3vQ1xfY+2wbesJMs/JC8/PwQ==", + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -439,14 +429,14 @@ } }, "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", "dev": true, "dependencies": { "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", "uri-js": "^4.2.2" }, "funding": { @@ -471,35 +461,16 @@ } } }, - "node_modules/ajv-formats/node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", "dev": true, "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" + "fast-deep-equal": "^3.1.3" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-formats/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, "peerDependencies": { - "ajv": "^6.9.1" + "ajv": "^8.8.2" } }, "node_modules/ansi-styles": { @@ -536,9 +507,9 @@ } }, "node_modules/browserslist": { - "version": "4.21.9", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.9.tgz", - "integrity": "sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg==", + "version": "4.22.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.0.tgz", + "integrity": "sha512-v+Jcv64L2LbfTC6OnRcaxtqJNJuQAVhZKSJfR/6hn7lhnChUXl4amwVviqN1k411BB+3rRoKMitELRn1CojeRA==", "dev": true, "funding": [ { @@ -555,10 +526,10 @@ } ], "dependencies": { - "caniuse-lite": "^1.0.30001503", - "electron-to-chromium": "^1.4.431", - "node-releases": "^2.0.12", - "update-browserslist-db": "^1.0.11" + "caniuse-lite": "^1.0.30001539", + "electron-to-chromium": "^1.4.530", + "node-releases": "^2.0.13", + "update-browserslist-db": "^1.0.13" }, "bin": { "browserslist": "cli.js" @@ -574,9 +545,9 @@ "dev": true }, "node_modules/caniuse-lite": { - "version": "1.0.30001509", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001509.tgz", - "integrity": "sha512-2uDDk+TRiTX5hMcUYT/7CSyzMZxjfGu0vAUjS2g0LSD8UoXOv0LtpH4LxGMemsiPq6LCVIUjNwVM0erkOkGCDA==", + "version": "1.0.30001540", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001540.tgz", + "integrity": "sha512-9JL38jscuTJBTcuETxm8QLsFr/F6v0CYYTEU6r5+qSM98P2Q0Hmu0eG1dTG5GBUmywU3UlcVOUSIJYY47rdFSw==", "dev": true, "funding": [ { @@ -686,59 +657,6 @@ "webpack": "^5.1.0" } }, - "node_modules/copy-webpack-plugin/node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/copy-webpack-plugin/node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" - } - }, - "node_modules/copy-webpack-plugin/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "node_modules/copy-webpack-plugin/node_modules/schema-utils": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", - "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.9.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.1.0" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, "node_modules/create-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", @@ -781,9 +699,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.442", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.442.tgz", - "integrity": "sha512-RkrZF//Ya+0aJq2NM3OdisNh5ZodZq1rdXOS96G8DdDgpDKqKE81yTbbQ3F/4CKm1JBPsGu1Lp/akkna2xO06Q==", + "version": "1.4.532", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.532.tgz", + "integrity": "sha512-piIR0QFdIGKmOJTSNg5AwxZRNWQSXlRYycqDB9Srstx4lip8KpcmRxVP6zuFWExWziHYZpJ0acX7TxqX95KBpg==", "dev": true }, "node_modules/enhanced-resolve": { @@ -812,9 +730,9 @@ } }, "node_modules/es-module-lexer": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.3.0.tgz", - "integrity": "sha512-vZK7T0N2CBmBOixhmjdqx2gWVbFZ4DXZ/NyRMZVlJXPa7CyFS+/a4QQsDGDQy9ZfEzxFuNEsMLeQJnKP2p5/JA==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.3.1.tgz", + "integrity": "sha512-JUFAyicQV9mXc3YRxPnDlrfBKpqt6hUYzz9/boprUJHs4e4KVr3XwOF70doO6gwXUor6EWZJAyWAfKki84t20Q==", "dev": true }, "node_modules/escalade": { @@ -885,9 +803,9 @@ "dev": true }, "node_modules/fast-glob": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", - "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", + "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", "dev": true, "dependencies": { "@nodelib/fs.stat": "^2.0.2", @@ -986,14 +904,14 @@ "dev": true }, "node_modules/globby": { - "version": "13.2.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-13.2.0.tgz", - "integrity": "sha512-jWsQfayf13NvqKUIL3Ta+CIqMnvlaIDFveWE/dpOZ9+3AMEJozsxDvKA02zync9UuvOM8rOXzsD5GqKP4OnWPQ==", + "version": "13.2.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.2.2.tgz", + "integrity": "sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==", "dev": true, "dependencies": { "dir-glob": "^3.0.1", - "fast-glob": "^3.2.11", - "ignore": "^5.2.0", + "fast-glob": "^3.3.0", + "ignore": "^5.2.4", "merge2": "^1.4.1", "slash": "^4.0.0" }, @@ -1069,9 +987,9 @@ } }, "node_modules/is-core-module": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.1.tgz", - "integrity": "sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==", + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", + "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", "dev": true, "dependencies": { "has": "^1.0.3" @@ -1173,9 +1091,9 @@ "dev": true }, "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dev": true }, "node_modules/kind-of": { @@ -1282,9 +1200,9 @@ "dev": true }, "node_modules/node-releases": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.12.tgz", - "integrity": "sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ==", + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", + "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", "dev": true }, "node_modules/normalize-path": { @@ -1455,12 +1373,12 @@ } }, "node_modules/resolve": { - "version": "1.22.2", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", - "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", + "version": "1.22.6", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.6.tgz", + "integrity": "sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw==", "dev": true, "dependencies": { - "is-core-module": "^2.11.0", + "is-core-module": "^2.13.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, @@ -1546,17 +1464,18 @@ ] }, "node_modules/schema-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", - "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", "dev": true, "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" }, "engines": { - "node": ">= 10.13.0" + "node": ">= 12.13.0" }, "funding": { "type": "opencollective", @@ -1564,9 +1483,9 @@ } }, "node_modules/semver": { - "version": "7.5.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz", - "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -1685,9 +1604,9 @@ } }, "node_modules/terser": { - "version": "5.18.2", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.18.2.tgz", - "integrity": "sha512-Ah19JS86ypbJzTzvUCX7KOsEIhDaRONungA4aYBjEP3JZRf4ocuDzTg4QWZnPn9DEMiMYGJPiSOy7aykoCc70w==", + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.20.0.tgz", + "integrity": "sha512-e56ETryaQDyebBwJIWYB2TT6f2EZ0fL0sW/JRXNMN26zZdKi2u/E/5my5lG6jNxym6qsrVXfFRmOdV42zlAgLQ==", "dev": true, "dependencies": { "@jridgewell/source-map": "^0.3.3", @@ -1736,6 +1655,65 @@ } } }, + "node_modules/terser-webpack-plugin/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.19", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz", + "integrity": "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/terser-webpack-plugin/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/terser-webpack-plugin/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/terser-webpack-plugin/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/terser-webpack-plugin/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -1824,9 +1802,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", - "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", + "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", "dev": true, "funding": [ { @@ -1882,9 +1860,9 @@ } }, "node_modules/webpack": { - "version": "5.88.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.88.1.tgz", - "integrity": "sha512-FROX3TxQnC/ox4N+3xQoWZzvGXSuscxR32rbzjpXgEzWudJFEJBpdlkkob2ylrv5yzzufD1zph1OoFsLtm6stQ==", + "version": "5.88.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.88.2.tgz", + "integrity": "sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==", "dev": true, "dependencies": { "@types/eslint-scope": "^3.7.3", @@ -2004,6 +1982,55 @@ "node": ">=10.13.0" } }, + "node_modules/webpack/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/webpack/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/webpack/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/webpack/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -2026,9 +2053,9 @@ "dev": true }, "node_modules/xterm": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/xterm/-/xterm-5.2.1.tgz", - "integrity": "sha512-cs5Y1fFevgcdoh2hJROMVIWwoBHD80P1fIP79gopLHJIE4kTzzblanoivxTiQ4+92YM9IxS36H1q0MxIJXQBcA==" + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/xterm/-/xterm-5.3.0.tgz", + "integrity": "sha512-8QqjlekLUFTrU6x7xck1MsPzPA571K5zNqWm0M0oroYEWVOptZ0+ubQSkQ3uxIEhcIHRujJy6emDWX4A7qyFzg==" }, "node_modules/yallist": { "version": "4.0.0", @@ -2054,18 +2081,6 @@ "dev": true, "requires": { "@jridgewell/trace-mapping": "0.3.9" - }, - "dependencies": { - "@jridgewell/trace-mapping": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", - "dev": true, - "requires": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - } } }, "@discoveryjs/json-ext": { @@ -2086,9 +2101,9 @@ } }, "@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", "dev": true }, "@jridgewell/set-array": { @@ -2098,9 +2113,9 @@ "dev": true }, "@jridgewell/source-map": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.3.tgz", - "integrity": "sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", + "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", "dev": true, "requires": { "@jridgewell/gen-mapping": "^0.3.0", @@ -2108,19 +2123,19 @@ } }, "@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", "dev": true }, "@jridgewell/trace-mapping": { - "version": "0.3.18", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", - "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", "dev": true, "requires": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" } }, "@nodelib/fs.scandir": { @@ -2174,9 +2189,9 @@ "dev": true }, "@types/eslint": { - "version": "8.40.2", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.40.2.tgz", - "integrity": "sha512-PRVjQ4Eh9z9pmmtaq8nTjZjQwKFk7YIHIud3lRoKRBgUQjgjRmoGxxGEPXQkF+lH7QkHJRNr5F4aBgYCW0lqpQ==", + "version": "8.44.3", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.3.tgz", + "integrity": "sha512-iM/WfkwAhwmPff3wZuPLYiHX18HI24jU8k1ZSH7P8FHwxTjZ2P6CoX2wnF43oprR+YXJM6UUxATkNvyv/JHd+g==", "dev": true, "requires": { "@types/estree": "*", @@ -2184,9 +2199,9 @@ } }, "@types/eslint-scope": { - "version": "3.7.4", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", - "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", + "version": "3.7.5", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.5.tgz", + "integrity": "sha512-JNvhIEyxVW6EoMIFIvj93ZOywYFatlpu9deeH6eSx6PE3WHYvHaQtmHmQeNw7aA81bYGBPPQqdtBm6b1SsQMmA==", "dev": true, "requires": { "@types/eslint": "*", @@ -2194,21 +2209,21 @@ } }, "@types/estree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", - "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.2.tgz", + "integrity": "sha512-VeiPZ9MMwXjO32/Xu7+OwflfmeoRwkE/qzndw42gGtgJwZopBnzy2gD//NN1+go1mADzkDcqf/KnFRSjTJ8xJA==", "dev": true }, "@types/json-schema": { - "version": "7.0.12", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz", - "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==", + "version": "7.0.13", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.13.tgz", + "integrity": "sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ==", "dev": true }, "@types/node": { - "version": "20.3.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.3.2.tgz", - "integrity": "sha512-vOBLVQeCQfIcF/2Y7eKFTqrMnizK5lRNQ7ykML/5RuwVXVWxYkgwS7xbt4B6fKCUPgbSL5FSsjHQpaGQP/dQmw==", + "version": "20.7.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.7.1.tgz", + "integrity": "sha512-LT+OIXpp2kj4E2S/p91BMe+VgGX2+lfO+XTpfXhh+bCk2LkQtHZSub8ewFBMGP5ClysPjTDFa4sMI8Q3n4T0wg==", "dev": true }, "@webassemblyjs/ast": { @@ -2391,9 +2406,9 @@ "dev": true }, "acorn": { - "version": "8.9.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.9.0.tgz", - "integrity": "sha512-jaVNAFBHNLXspO543WnNNPZFRtavh3skAkITqD0/2aeMkKZTN+254PyhwxFYrk3vQ1xfY+2wbesJMs/JC8/PwQ==", + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", "dev": true }, "acorn-import-assertions": { @@ -2410,14 +2425,14 @@ "dev": true }, "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", "uri-js": "^4.2.2" } }, @@ -2428,34 +2443,16 @@ "dev": true, "requires": { "ajv": "^8.0.0" - }, - "dependencies": { - "ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - } } }, "ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", "dev": true, - "requires": {} + "requires": { + "fast-deep-equal": "^3.1.3" + } }, "ansi-styles": { "version": "4.3.0", @@ -2482,15 +2479,15 @@ } }, "browserslist": { - "version": "4.21.9", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.9.tgz", - "integrity": "sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg==", + "version": "4.22.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.0.tgz", + "integrity": "sha512-v+Jcv64L2LbfTC6OnRcaxtqJNJuQAVhZKSJfR/6hn7lhnChUXl4amwVviqN1k411BB+3rRoKMitELRn1CojeRA==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001503", - "electron-to-chromium": "^1.4.431", - "node-releases": "^2.0.12", - "update-browserslist-db": "^1.0.11" + "caniuse-lite": "^1.0.30001539", + "electron-to-chromium": "^1.4.530", + "node-releases": "^2.0.13", + "update-browserslist-db": "^1.0.13" } }, "buffer-from": { @@ -2500,9 +2497,9 @@ "dev": true }, "caniuse-lite": { - "version": "1.0.30001509", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001509.tgz", - "integrity": "sha512-2uDDk+TRiTX5hMcUYT/7CSyzMZxjfGu0vAUjS2g0LSD8UoXOv0LtpH4LxGMemsiPq6LCVIUjNwVM0erkOkGCDA==", + "version": "1.0.30001540", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001540.tgz", + "integrity": "sha512-9JL38jscuTJBTcuETxm8QLsFr/F6v0CYYTEU6r5+qSM98P2Q0Hmu0eG1dTG5GBUmywU3UlcVOUSIJYY47rdFSw==", "dev": true }, "chalk": { @@ -2571,47 +2568,6 @@ "normalize-path": "^3.0.0", "schema-utils": "^4.0.0", "serialize-javascript": "^6.0.0" - }, - "dependencies": { - "ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.3" - } - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "schema-utils": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", - "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.9.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.1.0" - } - } } }, "create-require": { @@ -2647,9 +2603,9 @@ } }, "electron-to-chromium": { - "version": "1.4.442", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.442.tgz", - "integrity": "sha512-RkrZF//Ya+0aJq2NM3OdisNh5ZodZq1rdXOS96G8DdDgpDKqKE81yTbbQ3F/4CKm1JBPsGu1Lp/akkna2xO06Q==", + "version": "1.4.532", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.532.tgz", + "integrity": "sha512-piIR0QFdIGKmOJTSNg5AwxZRNWQSXlRYycqDB9Srstx4lip8KpcmRxVP6zuFWExWziHYZpJ0acX7TxqX95KBpg==", "dev": true }, "enhanced-resolve": { @@ -2669,9 +2625,9 @@ "dev": true }, "es-module-lexer": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.3.0.tgz", - "integrity": "sha512-vZK7T0N2CBmBOixhmjdqx2gWVbFZ4DXZ/NyRMZVlJXPa7CyFS+/a4QQsDGDQy9ZfEzxFuNEsMLeQJnKP2p5/JA==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.3.1.tgz", + "integrity": "sha512-JUFAyicQV9mXc3YRxPnDlrfBKpqt6hUYzz9/boprUJHs4e4KVr3XwOF70doO6gwXUor6EWZJAyWAfKki84t20Q==", "dev": true }, "escalade": { @@ -2726,9 +2682,9 @@ "dev": true }, "fast-glob": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", - "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", + "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", "dev": true, "requires": { "@nodelib/fs.stat": "^2.0.2", @@ -2811,14 +2767,14 @@ "dev": true }, "globby": { - "version": "13.2.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-13.2.0.tgz", - "integrity": "sha512-jWsQfayf13NvqKUIL3Ta+CIqMnvlaIDFveWE/dpOZ9+3AMEJozsxDvKA02zync9UuvOM8rOXzsD5GqKP4OnWPQ==", + "version": "13.2.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.2.2.tgz", + "integrity": "sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==", "dev": true, "requires": { "dir-glob": "^3.0.1", - "fast-glob": "^3.2.11", - "ignore": "^5.2.0", + "fast-glob": "^3.3.0", + "ignore": "^5.2.4", "merge2": "^1.4.1", "slash": "^4.0.0" } @@ -2867,9 +2823,9 @@ "dev": true }, "is-core-module": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.1.tgz", - "integrity": "sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==", + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", + "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", "dev": true, "requires": { "has": "^1.0.3" @@ -2946,9 +2902,9 @@ "dev": true }, "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dev": true }, "kind-of": { @@ -3031,9 +2987,9 @@ "dev": true }, "node-releases": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.12.tgz", - "integrity": "sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ==", + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", + "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", "dev": true }, "normalize-path": { @@ -3148,12 +3104,12 @@ "dev": true }, "resolve": { - "version": "1.22.2", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", - "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", + "version": "1.22.6", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.6.tgz", + "integrity": "sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw==", "dev": true, "requires": { - "is-core-module": "^2.11.0", + "is-core-module": "^2.13.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" } @@ -3195,20 +3151,21 @@ "dev": true }, "schema-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", - "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", "dev": true, "requires": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" } }, "semver": { - "version": "7.5.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz", - "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -3291,9 +3248,9 @@ "dev": true }, "terser": { - "version": "5.18.2", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.18.2.tgz", - "integrity": "sha512-Ah19JS86ypbJzTzvUCX7KOsEIhDaRONungA4aYBjEP3JZRf4ocuDzTg4QWZnPn9DEMiMYGJPiSOy7aykoCc70w==", + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.20.0.tgz", + "integrity": "sha512-e56ETryaQDyebBwJIWYB2TT6f2EZ0fL0sW/JRXNMN26zZdKi2u/E/5my5lG6jNxym6qsrVXfFRmOdV42zlAgLQ==", "dev": true, "requires": { "@jridgewell/source-map": "^0.3.3", @@ -3313,6 +3270,54 @@ "schema-utils": "^3.1.1", "serialize-javascript": "^6.0.1", "terser": "^5.16.8" + }, + "dependencies": { + "@jridgewell/trace-mapping": { + "version": "0.3.19", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz", + "integrity": "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "requires": {} + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } } }, "to-regex-range": { @@ -3364,9 +3369,9 @@ "dev": true }, "update-browserslist-db": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", - "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", + "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", "dev": true, "requires": { "escalade": "^3.1.1", @@ -3399,9 +3404,9 @@ } }, "webpack": { - "version": "5.88.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.88.1.tgz", - "integrity": "sha512-FROX3TxQnC/ox4N+3xQoWZzvGXSuscxR32rbzjpXgEzWudJFEJBpdlkkob2ylrv5yzzufD1zph1OoFsLtm6stQ==", + "version": "5.88.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.88.2.tgz", + "integrity": "sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==", "dev": true, "requires": { "@types/eslint-scope": "^3.7.3", @@ -3428,6 +3433,44 @@ "terser-webpack-plugin": "^5.3.7", "watchpack": "^2.4.0", "webpack-sources": "^3.2.3" + }, + "dependencies": { + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "requires": {} + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } } }, "webpack-cli": { @@ -3491,9 +3534,9 @@ "dev": true }, "xterm": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/xterm/-/xterm-5.2.1.tgz", - "integrity": "sha512-cs5Y1fFevgcdoh2hJROMVIWwoBHD80P1fIP79gopLHJIE4kTzzblanoivxTiQ4+92YM9IxS36H1q0MxIJXQBcA==" + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/xterm/-/xterm-5.3.0.tgz", + "integrity": "sha512-8QqjlekLUFTrU6x7xck1MsPzPA571K5zNqWm0M0oroYEWVOptZ0+ubQSkQ3uxIEhcIHRujJy6emDWX4A7qyFzg==" }, "yallist": { "version": "4.0.0", diff --git a/XtermBlazor/package.json b/XtermBlazor/package.json index ab383d8..4dc8920 100644 --- a/XtermBlazor/package.json +++ b/XtermBlazor/package.json @@ -10,14 +10,14 @@ "author": "BattlefieldDuck", "license": "MIT", "dependencies": { - "xterm": "5.2.1" + "xterm": "5.3.0" }, "devDependencies": { "copy-webpack-plugin": "11.0.0", "ts-loader": "9.4.4", "ts-node": "10.9.1", "typescript": "5.1.5", - "webpack": "5.88.1", + "webpack": "5.88.2", "webpack-cli": "5.1.4" } } diff --git a/XtermBlazor/wwwroot/XtermBlazor.min.js b/XtermBlazor/wwwroot/XtermBlazor.min.js index a9ac216..0cd7f36 100644 --- a/XtermBlazor/wwwroot/XtermBlazor.min.js +++ b/XtermBlazor/wwwroot/XtermBlazor.min.js @@ -1,2 +1,2 @@ -(()=>{var e={320:e=>{var t;self,t=()=>(()=>{"use strict";var e={4567:function(e,t,i){var s=this&&this.__decorate||function(e,t,i,s){var r,n=arguments.length,o=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,i):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,s);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(n<3?r(o):n>3?r(t,i,o):r(t,i))||o);return n>3&&o&&Object.defineProperty(t,i,o),o},r=this&&this.__param||function(e,t){return function(i,s){t(i,s,e)}};Object.defineProperty(t,"__esModule",{value:!0}),t.AccessibilityManager=void 0;const n=i(9042),o=i(6114),a=i(9924),h=i(844),c=i(5596),l=i(4725),d=i(3656);let _=class extends h.Disposable{constructor(e,t){super(),this._terminal=e,this._renderService=t,this._liveRegionLineCount=0,this._charsToConsume=[],this._charsToAnnounce="",this._accessibilityContainer=document.createElement("div"),this._accessibilityContainer.classList.add("xterm-accessibility"),this._rowContainer=document.createElement("div"),this._rowContainer.setAttribute("role","list"),this._rowContainer.classList.add("xterm-accessibility-tree"),this._rowElements=[];for(let e=0;ethis._handleBoundaryFocus(e,0),this._bottomBoundaryFocusListener=e=>this._handleBoundaryFocus(e,1),this._rowElements[0].addEventListener("focus",this._topBoundaryFocusListener),this._rowElements[this._rowElements.length-1].addEventListener("focus",this._bottomBoundaryFocusListener),this._refreshRowsDimensions(),this._accessibilityContainer.appendChild(this._rowContainer),this._liveRegion=document.createElement("div"),this._liveRegion.classList.add("live-region"),this._liveRegion.setAttribute("aria-live","assertive"),this._accessibilityContainer.appendChild(this._liveRegion),this._liveRegionDebouncer=this.register(new a.TimeBasedDebouncer(this._announceCharacters.bind(this))),!this._terminal.element)throw new Error("Cannot enable accessibility before Terminal.open");this._terminal.element.insertAdjacentElement("afterbegin",this._accessibilityContainer),this.register(this._liveRegionDebouncer),this.register(this._terminal.onResize((e=>this._handleResize(e.rows)))),this.register(this._terminal.onRender((e=>this._refreshRows(e.start,e.end)))),this.register(this._terminal.onScroll((()=>this._refreshRows()))),this.register(this._terminal.onA11yChar((e=>this._handleChar(e)))),this.register(this._terminal.onLineFeed((()=>this._handleChar("\n")))),this.register(this._terminal.onA11yTab((e=>this._handleTab(e)))),this.register(this._terminal.onKey((e=>this._handleKey(e.key)))),this.register(this._terminal.onBlur((()=>this._clearLiveRegion()))),this.register(this._renderService.onDimensionsChange((()=>this._refreshRowsDimensions()))),this._screenDprMonitor=new c.ScreenDprMonitor(window),this.register(this._screenDprMonitor),this._screenDprMonitor.setListener((()=>this._refreshRowsDimensions())),this.register((0,d.addDisposableDomListener)(window,"resize",(()=>this._refreshRowsDimensions()))),this._refreshRows(),this.register((0,h.toDisposable)((()=>{this._accessibilityContainer.remove(),this._rowElements.length=0})))}_handleTab(e){for(let t=0;t0?this._charsToConsume.shift()!==e&&(this._charsToAnnounce+=e):this._charsToAnnounce+=e,"\n"===e&&(this._liveRegionLineCount++,21===this._liveRegionLineCount&&(this._liveRegion.textContent+=n.tooMuchOutput)),o.isMac&&this._liveRegion.textContent&&this._liveRegion.textContent.length>0&&!this._liveRegion.parentNode&&setTimeout((()=>{this._accessibilityContainer.appendChild(this._liveRegion)}),0))}_clearLiveRegion(){this._liveRegion.textContent="",this._liveRegionLineCount=0,o.isMac&&this._liveRegion.remove()}_handleKey(e){this._clearLiveRegion(),/\p{Control}/u.test(e)||this._charsToConsume.push(e)}_refreshRows(e,t){this._liveRegionDebouncer.refresh(e,t,this._terminal.rows)}_announceCharacters(){0!==this._charsToAnnounce.length&&(this._liveRegion.textContent+=this._charsToAnnounce,this._charsToAnnounce="")}_handleBoundaryFocus(e,t){const i=e.target,s=this._rowElements[0===t?1:this._rowElements.length-2];if(i.getAttribute("aria-posinset")===(0===t?"1":`${this._terminal.buffer.lines.length}`))return;if(e.relatedTarget!==s)return;let r,n;if(0===t?(r=i,n=this._rowElements.pop(),this._rowContainer.removeChild(n)):(r=this._rowElements.shift(),n=i,this._rowContainer.removeChild(r)),r.removeEventListener("focus",this._topBoundaryFocusListener),n.removeEventListener("focus",this._bottomBoundaryFocusListener),0===t){const e=this._createAccessibilityTreeNode();this._rowElements.unshift(e),this._rowContainer.insertAdjacentElement("afterbegin",e)}else{const e=this._createAccessibilityTreeNode();this._rowElements.push(e),this._rowContainer.appendChild(e)}this._rowElements[0].addEventListener("focus",this._topBoundaryFocusListener),this._rowElements[this._rowElements.length-1].addEventListener("focus",this._bottomBoundaryFocusListener),this._terminal.scrollLines(0===t?-1:1),this._rowElements[0===t?1:this._rowElements.length-2].focus(),e.preventDefault(),e.stopImmediatePropagation()}_handleResize(e){this._rowElements[this._rowElements.length-1].removeEventListener("focus",this._bottomBoundaryFocusListener);for(let e=this._rowContainer.children.length;ee;)this._rowContainer.removeChild(this._rowElements.pop());this._rowElements[this._rowElements.length-1].addEventListener("focus",this._bottomBoundaryFocusListener),this._refreshRowsDimensions()}_createAccessibilityTreeNode(){const e=document.createElement("div");return e.setAttribute("role","listitem"),e.tabIndex=-1,this._refreshRowDimensions(e),e}_refreshRowsDimensions(){if(this._renderService.dimensions.css.cell.height){this._accessibilityContainer.style.width=`${this._renderService.dimensions.css.canvas.width}px`,this._rowElements.length!==this._terminal.rows&&this._handleResize(this._terminal.rows);for(let e=0;e{function i(e){return e.replace(/\r?\n/g,"\r")}function s(e,t){return t?"[200~"+e+"[201~":e}function r(e,t,r){e=s(e=i(e),r.decPrivateModes.bracketedPasteMode),r.triggerDataEvent(e,!0),t.value=""}function n(e,t,i){const s=i.getBoundingClientRect(),r=e.clientX-s.left-10,n=e.clientY-s.top-10;t.style.width="20px",t.style.height="20px",t.style.left=`${r}px`,t.style.top=`${n}px`,t.style.zIndex="1000",t.focus()}Object.defineProperty(t,"__esModule",{value:!0}),t.rightClickHandler=t.moveTextAreaUnderMouseCursor=t.paste=t.handlePasteEvent=t.copyHandler=t.bracketTextForPaste=t.prepareTextForTerminal=void 0,t.prepareTextForTerminal=i,t.bracketTextForPaste=s,t.copyHandler=function(e,t){e.clipboardData&&e.clipboardData.setData("text/plain",t.selectionText),e.preventDefault()},t.handlePasteEvent=function(e,t,i){e.stopPropagation(),e.clipboardData&&r(e.clipboardData.getData("text/plain"),t,i)},t.paste=r,t.moveTextAreaUnderMouseCursor=n,t.rightClickHandler=function(e,t,i,s,r){n(e,t,i),r&&s.rightClickSelect(e),t.value=s.selectionText,t.select()}},7239:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ColorContrastCache=void 0;const s=i(1505);t.ColorContrastCache=class{constructor(){this._color=new s.TwoKeyMap,this._css=new s.TwoKeyMap}setCss(e,t,i){this._css.set(e,t,i)}getCss(e,t){return this._css.get(e,t)}setColor(e,t,i){this._color.set(e,t,i)}getColor(e,t){return this._color.get(e,t)}clear(){this._color.clear(),this._css.clear()}}},3656:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.addDisposableDomListener=void 0,t.addDisposableDomListener=function(e,t,i,s){e.addEventListener(t,i,s);let r=!1;return{dispose:()=>{r||(r=!0,e.removeEventListener(t,i,s))}}}},6465:function(e,t,i){var s=this&&this.__decorate||function(e,t,i,s){var r,n=arguments.length,o=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,i):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,s);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(n<3?r(o):n>3?r(t,i,o):r(t,i))||o);return n>3&&o&&Object.defineProperty(t,i,o),o},r=this&&this.__param||function(e,t){return function(i,s){t(i,s,e)}};Object.defineProperty(t,"__esModule",{value:!0}),t.Linkifier2=void 0;const n=i(2585),o=i(8460),a=i(844),h=i(3656);let c=class extends a.Disposable{constructor(e){super(),this._bufferService=e,this._linkProviders=[],this._linkCacheDisposables=[],this._isMouseOut=!0,this._wasResized=!1,this._activeLine=-1,this._onShowLinkUnderline=this.register(new o.EventEmitter),this.onShowLinkUnderline=this._onShowLinkUnderline.event,this._onHideLinkUnderline=this.register(new o.EventEmitter),this.onHideLinkUnderline=this._onHideLinkUnderline.event,this.register((0,a.getDisposeArrayDisposable)(this._linkCacheDisposables)),this.register((0,a.toDisposable)((()=>{this._lastMouseEvent=void 0}))),this.register(this._bufferService.onResize((()=>{this._clearCurrentLink(),this._wasResized=!0})))}get currentLink(){return this._currentLink}registerLinkProvider(e){return this._linkProviders.push(e),{dispose:()=>{const t=this._linkProviders.indexOf(e);-1!==t&&this._linkProviders.splice(t,1)}}}attachToDom(e,t,i){this._element=e,this._mouseService=t,this._renderService=i,this.register((0,h.addDisposableDomListener)(this._element,"mouseleave",(()=>{this._isMouseOut=!0,this._clearCurrentLink()}))),this.register((0,h.addDisposableDomListener)(this._element,"mousemove",this._handleMouseMove.bind(this))),this.register((0,h.addDisposableDomListener)(this._element,"mousedown",this._handleMouseDown.bind(this))),this.register((0,h.addDisposableDomListener)(this._element,"mouseup",this._handleMouseUp.bind(this)))}_handleMouseMove(e){if(this._lastMouseEvent=e,!this._element||!this._mouseService)return;const t=this._positionFromMouseEvent(e,this._element,this._mouseService);if(!t)return;this._isMouseOut=!1;const i=e.composedPath();for(let e=0;e{null==e||e.forEach((e=>{e.link.dispose&&e.link.dispose()}))})),this._activeProviderReplies=new Map,this._activeLine=e.y);let r=!1;for(const[i,n]of this._linkProviders.entries())t?(null===(s=this._activeProviderReplies)||void 0===s?void 0:s.get(i))&&(r=this._checkLinkProviderResult(i,e,r)):n.provideLinks(e.y,(t=>{var s,n;if(this._isMouseOut)return;const o=null==t?void 0:t.map((e=>({link:e})));null===(s=this._activeProviderReplies)||void 0===s||s.set(i,o),r=this._checkLinkProviderResult(i,e,r),(null===(n=this._activeProviderReplies)||void 0===n?void 0:n.size)===this._linkProviders.length&&this._removeIntersectingLinks(e.y,this._activeProviderReplies)}))}_removeIntersectingLinks(e,t){const i=new Set;for(let s=0;se?this._bufferService.cols:s.link.range.end.x;for(let e=n;e<=o;e++){if(i.has(e)){r.splice(t--,1);break}i.add(e)}}}}_checkLinkProviderResult(e,t,i){var s;if(!this._activeProviderReplies)return i;const r=this._activeProviderReplies.get(e);let n=!1;for(let t=0;tthis._linkAtPosition(e.link,t)));e&&(i=!0,this._handleNewLink(e))}if(this._activeProviderReplies.size===this._linkProviders.length&&!i)for(let e=0;ethis._linkAtPosition(e.link,t)));if(r){i=!0,this._handleNewLink(r);break}}return i}_handleMouseDown(){this._mouseDownLink=this._currentLink}_handleMouseUp(e){if(!this._element||!this._mouseService||!this._currentLink)return;const t=this._positionFromMouseEvent(e,this._element,this._mouseService);t&&this._mouseDownLink===this._currentLink&&this._linkAtPosition(this._currentLink.link,t)&&this._currentLink.link.activate(e,this._currentLink.link.text)}_clearCurrentLink(e,t){this._element&&this._currentLink&&this._lastMouseEvent&&(!e||!t||this._currentLink.link.range.start.y>=e&&this._currentLink.link.range.end.y<=t)&&(this._linkLeave(this._element,this._currentLink.link,this._lastMouseEvent),this._currentLink=void 0,(0,a.disposeArray)(this._linkCacheDisposables))}_handleNewLink(e){if(!this._element||!this._lastMouseEvent||!this._mouseService)return;const t=this._positionFromMouseEvent(this._lastMouseEvent,this._element,this._mouseService);t&&this._linkAtPosition(e.link,t)&&(this._currentLink=e,this._currentLink.state={decorations:{underline:void 0===e.link.decorations||e.link.decorations.underline,pointerCursor:void 0===e.link.decorations||e.link.decorations.pointerCursor},isHovered:!0},this._linkHover(this._element,e.link,this._lastMouseEvent),e.link.decorations={},Object.defineProperties(e.link.decorations,{pointerCursor:{get:()=>{var e,t;return null===(t=null===(e=this._currentLink)||void 0===e?void 0:e.state)||void 0===t?void 0:t.decorations.pointerCursor},set:e=>{var t,i;(null===(t=this._currentLink)||void 0===t?void 0:t.state)&&this._currentLink.state.decorations.pointerCursor!==e&&(this._currentLink.state.decorations.pointerCursor=e,this._currentLink.state.isHovered&&(null===(i=this._element)||void 0===i||i.classList.toggle("xterm-cursor-pointer",e)))}},underline:{get:()=>{var e,t;return null===(t=null===(e=this._currentLink)||void 0===e?void 0:e.state)||void 0===t?void 0:t.decorations.underline},set:t=>{var i,s,r;(null===(i=this._currentLink)||void 0===i?void 0:i.state)&&(null===(r=null===(s=this._currentLink)||void 0===s?void 0:s.state)||void 0===r?void 0:r.decorations.underline)!==t&&(this._currentLink.state.decorations.underline=t,this._currentLink.state.isHovered&&this._fireUnderlineEvent(e.link,t))}}}),this._renderService&&this._linkCacheDisposables.push(this._renderService.onRenderedViewportChange((e=>{if(!this._currentLink)return;const t=0===e.start?0:e.start+1+this._bufferService.buffer.ydisp,i=this._bufferService.buffer.ydisp+1+e.end;if(this._currentLink.link.range.start.y>=t&&this._currentLink.link.range.end.y<=i&&(this._clearCurrentLink(t,i),this._lastMouseEvent&&this._element)){const e=this._positionFromMouseEvent(this._lastMouseEvent,this._element,this._mouseService);e&&this._askForLink(e,!1)}}))))}_linkHover(e,t,i){var s;(null===(s=this._currentLink)||void 0===s?void 0:s.state)&&(this._currentLink.state.isHovered=!0,this._currentLink.state.decorations.underline&&this._fireUnderlineEvent(t,!0),this._currentLink.state.decorations.pointerCursor&&e.classList.add("xterm-cursor-pointer")),t.hover&&t.hover(i,t.text)}_fireUnderlineEvent(e,t){const i=e.range,s=this._bufferService.buffer.ydisp,r=this._createLinkUnderlineEvent(i.start.x-1,i.start.y-s-1,i.end.x,i.end.y-s-1,void 0);(t?this._onShowLinkUnderline:this._onHideLinkUnderline).fire(r)}_linkLeave(e,t,i){var s;(null===(s=this._currentLink)||void 0===s?void 0:s.state)&&(this._currentLink.state.isHovered=!1,this._currentLink.state.decorations.underline&&this._fireUnderlineEvent(t,!1),this._currentLink.state.decorations.pointerCursor&&e.classList.remove("xterm-cursor-pointer")),t.leave&&t.leave(i,t.text)}_linkAtPosition(e,t){const i=e.range.start.y*this._bufferService.cols+e.range.start.x,s=e.range.end.y*this._bufferService.cols+e.range.end.x,r=t.y*this._bufferService.cols+t.x;return i<=r&&r<=s}_positionFromMouseEvent(e,t,i){const s=i.getCoords(e,t,this._bufferService.cols,this._bufferService.rows);if(s)return{x:s[0],y:s[1]+this._bufferService.buffer.ydisp}}_createLinkUnderlineEvent(e,t,i,s,r){return{x1:e,y1:t,x2:i,y2:s,cols:this._bufferService.cols,fg:r}}};c=s([r(0,n.IBufferService)],c),t.Linkifier2=c},9042:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.tooMuchOutput=t.promptLabel=void 0,t.promptLabel="Terminal input",t.tooMuchOutput="Too much output to announce, navigate to rows manually to read"},3730:function(e,t,i){var s=this&&this.__decorate||function(e,t,i,s){var r,n=arguments.length,o=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,i):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,s);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(n<3?r(o):n>3?r(t,i,o):r(t,i))||o);return n>3&&o&&Object.defineProperty(t,i,o),o},r=this&&this.__param||function(e,t){return function(i,s){t(i,s,e)}};Object.defineProperty(t,"__esModule",{value:!0}),t.OscLinkProvider=void 0;const n=i(511),o=i(2585);let a=class{constructor(e,t,i){this._bufferService=e,this._optionsService=t,this._oscLinkService=i}provideLinks(e,t){var i;const s=this._bufferService.buffer.lines.get(e-1);if(!s)return void t(void 0);const r=[],o=this._optionsService.rawOptions.linkHandler,a=new n.CellData,c=s.getTrimmedLength();let l=-1,d=-1,_=!1;for(let t=0;to?o.activate(e,t,i):h(0,t),hover:(e,t)=>{var s;return null===(s=null==o?void 0:o.hover)||void 0===s?void 0:s.call(o,e,t,i)},leave:(e,t)=>{var s;return null===(s=null==o?void 0:o.leave)||void 0===s?void 0:s.call(o,e,t,i)}})}_=!1,a.hasExtendedAttrs()&&a.extended.urlId?(d=t,l=a.extended.urlId):(d=-1,l=-1)}}t(r)}};function h(e,t){if(confirm(`Do you want to navigate to ${t}?\n\nWARNING: This link could potentially be dangerous`)){const i=window.open();if(i){try{i.opener=null}catch(e){}i.location.href=t}else console.warn("Opening link blocked as opener could not be cleared")}}a=s([r(0,o.IBufferService),r(1,o.IOptionsService),r(2,o.IOscLinkService)],a),t.OscLinkProvider=a},6193:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.RenderDebouncer=void 0,t.RenderDebouncer=class{constructor(e,t){this._parentWindow=e,this._renderCallback=t,this._refreshCallbacks=[]}dispose(){this._animationFrame&&(this._parentWindow.cancelAnimationFrame(this._animationFrame),this._animationFrame=void 0)}addRefreshCallback(e){return this._refreshCallbacks.push(e),this._animationFrame||(this._animationFrame=this._parentWindow.requestAnimationFrame((()=>this._innerRefresh()))),this._animationFrame}refresh(e,t,i){this._rowCount=i,e=void 0!==e?e:0,t=void 0!==t?t:this._rowCount-1,this._rowStart=void 0!==this._rowStart?Math.min(this._rowStart,e):e,this._rowEnd=void 0!==this._rowEnd?Math.max(this._rowEnd,t):t,this._animationFrame||(this._animationFrame=this._parentWindow.requestAnimationFrame((()=>this._innerRefresh())))}_innerRefresh(){if(this._animationFrame=void 0,void 0===this._rowStart||void 0===this._rowEnd||void 0===this._rowCount)return void this._runRefreshCallbacks();const e=Math.max(this._rowStart,0),t=Math.min(this._rowEnd,this._rowCount-1);this._rowStart=void 0,this._rowEnd=void 0,this._renderCallback(e,t),this._runRefreshCallbacks()}_runRefreshCallbacks(){for(const e of this._refreshCallbacks)e(0);this._refreshCallbacks=[]}}},5596:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ScreenDprMonitor=void 0;const s=i(844);class r extends s.Disposable{constructor(e){super(),this._parentWindow=e,this._currentDevicePixelRatio=this._parentWindow.devicePixelRatio,this.register((0,s.toDisposable)((()=>{this.clearListener()})))}setListener(e){this._listener&&this.clearListener(),this._listener=e,this._outerListener=()=>{this._listener&&(this._listener(this._parentWindow.devicePixelRatio,this._currentDevicePixelRatio),this._updateDpr())},this._updateDpr()}_updateDpr(){var e;this._outerListener&&(null===(e=this._resolutionMediaMatchList)||void 0===e||e.removeListener(this._outerListener),this._currentDevicePixelRatio=this._parentWindow.devicePixelRatio,this._resolutionMediaMatchList=this._parentWindow.matchMedia(`screen and (resolution: ${this._parentWindow.devicePixelRatio}dppx)`),this._resolutionMediaMatchList.addListener(this._outerListener))}clearListener(){this._resolutionMediaMatchList&&this._listener&&this._outerListener&&(this._resolutionMediaMatchList.removeListener(this._outerListener),this._resolutionMediaMatchList=void 0,this._listener=void 0,this._outerListener=void 0)}}t.ScreenDprMonitor=r},3236:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.Terminal=void 0;const s=i(2950),r=i(1680),n=i(3614),o=i(2584),a=i(5435),h=i(9312),c=i(6114),l=i(3656),d=i(9042),_=i(4567),u=i(1296),f=i(7399),v=i(8460),g=i(8437),p=i(3230),S=i(4725),m=i(428),C=i(8934),b=i(6465),y=i(5114),w=i(8969),E=i(8055),L=i(4269),k=i(5941),R=i(3107),D=i(5744),A=i(9074),B=i(2585),x=i(3730),T=i(844),M=i(6731),O="undefined"!=typeof window?window.document:null;class I extends w.CoreTerminal{constructor(e={}){super(e),this.browser=c,this._keyDownHandled=!1,this._keyDownSeen=!1,this._keyPressHandled=!1,this._unprocessedDeadKey=!1,this._onCursorMove=this.register(new v.EventEmitter),this.onCursorMove=this._onCursorMove.event,this._onKey=this.register(new v.EventEmitter),this.onKey=this._onKey.event,this._onRender=this.register(new v.EventEmitter),this.onRender=this._onRender.event,this._onSelectionChange=this.register(new v.EventEmitter),this.onSelectionChange=this._onSelectionChange.event,this._onTitleChange=this.register(new v.EventEmitter),this.onTitleChange=this._onTitleChange.event,this._onBell=this.register(new v.EventEmitter),this.onBell=this._onBell.event,this._onFocus=this.register(new v.EventEmitter),this._onBlur=this.register(new v.EventEmitter),this._onA11yCharEmitter=this.register(new v.EventEmitter),this._onA11yTabEmitter=this.register(new v.EventEmitter),this._onWillOpen=this.register(new v.EventEmitter),this._setup(),this.linkifier2=this.register(this._instantiationService.createInstance(b.Linkifier2)),this.linkifier2.registerLinkProvider(this._instantiationService.createInstance(x.OscLinkProvider)),this._decorationService=this._instantiationService.createInstance(A.DecorationService),this._instantiationService.setService(B.IDecorationService,this._decorationService),this.register(this._inputHandler.onRequestBell((()=>this._onBell.fire()))),this.register(this._inputHandler.onRequestRefreshRows(((e,t)=>this.refresh(e,t)))),this.register(this._inputHandler.onRequestSendFocus((()=>this._reportFocus()))),this.register(this._inputHandler.onRequestReset((()=>this.reset()))),this.register(this._inputHandler.onRequestWindowsOptionsReport((e=>this._reportWindowsOptions(e)))),this.register(this._inputHandler.onColor((e=>this._handleColorEvent(e)))),this.register((0,v.forwardEvent)(this._inputHandler.onCursorMove,this._onCursorMove)),this.register((0,v.forwardEvent)(this._inputHandler.onTitleChange,this._onTitleChange)),this.register((0,v.forwardEvent)(this._inputHandler.onA11yChar,this._onA11yCharEmitter)),this.register((0,v.forwardEvent)(this._inputHandler.onA11yTab,this._onA11yTabEmitter)),this.register(this._bufferService.onResize((e=>this._afterResize(e.cols,e.rows)))),this.register((0,T.toDisposable)((()=>{var e,t;this._customKeyEventHandler=void 0,null===(t=null===(e=this.element)||void 0===e?void 0:e.parentNode)||void 0===t||t.removeChild(this.element)})))}get onFocus(){return this._onFocus.event}get onBlur(){return this._onBlur.event}get onA11yChar(){return this._onA11yCharEmitter.event}get onA11yTab(){return this._onA11yTabEmitter.event}get onWillOpen(){return this._onWillOpen.event}_handleColorEvent(e){if(this._themeService)for(const t of e){let e,i="";switch(t.index){case 256:e="foreground",i="10";break;case 257:e="background",i="11";break;case 258:e="cursor",i="12";break;default:e="ansi",i="4;"+t.index}switch(t.type){case 0:const s=E.color.toColorRGB("ansi"===e?this._themeService.colors.ansi[t.index]:this._themeService.colors[e]);this.coreService.triggerDataEvent(`${o.C0.ESC}]${i};${(0,k.toRgbString)(s)}${o.C1_ESCAPED.ST}`);break;case 1:if("ansi"===e)this._themeService.modifyColors((e=>e.ansi[t.index]=E.rgba.toColor(...t.color)));else{const i=e;this._themeService.modifyColors((e=>e[i]=E.rgba.toColor(...t.color)))}break;case 2:this._themeService.restoreColor(t.index)}}}_setup(){super._setup(),this._customKeyEventHandler=void 0}get buffer(){return this.buffers.active}focus(){this.textarea&&this.textarea.focus({preventScroll:!0})}_handleScreenReaderModeOptionChange(e){var t;e?!this._accessibilityManager&&this._renderService&&(this._accessibilityManager=this._instantiationService.createInstance(_.AccessibilityManager,this)):(null===(t=this._accessibilityManager)||void 0===t||t.dispose(),this._accessibilityManager=void 0)}_handleTextAreaFocus(e){this.coreService.decPrivateModes.sendFocus&&this.coreService.triggerDataEvent(o.C0.ESC+"[I"),this.updateCursorStyle(e),this.element.classList.add("focus"),this._showCursor(),this._onFocus.fire()}blur(){var e;return null===(e=this.textarea)||void 0===e?void 0:e.blur()}_handleTextAreaBlur(){this.textarea.value="",this.refresh(this.buffer.y,this.buffer.y),this.coreService.decPrivateModes.sendFocus&&this.coreService.triggerDataEvent(o.C0.ESC+"[O"),this.element.classList.remove("focus"),this._onBlur.fire()}_syncTextArea(){if(!this.textarea||!this.buffer.isCursorInViewport||this._compositionHelper.isComposing||!this._renderService)return;const e=this.buffer.ybase+this.buffer.y,t=this.buffer.lines.get(e);if(!t)return;const i=Math.min(this.buffer.x,this.cols-1),s=this._renderService.dimensions.css.cell.height,r=t.getWidth(i),n=this._renderService.dimensions.css.cell.width*r,o=this.buffer.y*this._renderService.dimensions.css.cell.height,a=i*this._renderService.dimensions.css.cell.width;this.textarea.style.left=a+"px",this.textarea.style.top=o+"px",this.textarea.style.width=n+"px",this.textarea.style.height=s+"px",this.textarea.style.lineHeight=s+"px",this.textarea.style.zIndex="-5"}_initGlobal(){this._bindKeys(),this.register((0,l.addDisposableDomListener)(this.element,"copy",(e=>{this.hasSelection()&&(0,n.copyHandler)(e,this._selectionService)})));const e=e=>(0,n.handlePasteEvent)(e,this.textarea,this.coreService);this.register((0,l.addDisposableDomListener)(this.textarea,"paste",e)),this.register((0,l.addDisposableDomListener)(this.element,"paste",e)),c.isFirefox?this.register((0,l.addDisposableDomListener)(this.element,"mousedown",(e=>{2===e.button&&(0,n.rightClickHandler)(e,this.textarea,this.screenElement,this._selectionService,this.options.rightClickSelectsWord)}))):this.register((0,l.addDisposableDomListener)(this.element,"contextmenu",(e=>{(0,n.rightClickHandler)(e,this.textarea,this.screenElement,this._selectionService,this.options.rightClickSelectsWord)}))),c.isLinux&&this.register((0,l.addDisposableDomListener)(this.element,"auxclick",(e=>{1===e.button&&(0,n.moveTextAreaUnderMouseCursor)(e,this.textarea,this.screenElement)})))}_bindKeys(){this.register((0,l.addDisposableDomListener)(this.textarea,"keyup",(e=>this._keyUp(e)),!0)),this.register((0,l.addDisposableDomListener)(this.textarea,"keydown",(e=>this._keyDown(e)),!0)),this.register((0,l.addDisposableDomListener)(this.textarea,"keypress",(e=>this._keyPress(e)),!0)),this.register((0,l.addDisposableDomListener)(this.textarea,"compositionstart",(()=>this._compositionHelper.compositionstart()))),this.register((0,l.addDisposableDomListener)(this.textarea,"compositionupdate",(e=>this._compositionHelper.compositionupdate(e)))),this.register((0,l.addDisposableDomListener)(this.textarea,"compositionend",(()=>this._compositionHelper.compositionend()))),this.register((0,l.addDisposableDomListener)(this.textarea,"input",(e=>this._inputEvent(e)),!0)),this.register(this.onRender((()=>this._compositionHelper.updateCompositionElements())))}open(e){var t;if(!e)throw new Error("Terminal requires a parent element.");e.isConnected||this._logService.debug("Terminal.open was called on an element that was not attached to the DOM"),this._document=e.ownerDocument,this.element=this._document.createElement("div"),this.element.dir="ltr",this.element.classList.add("terminal"),this.element.classList.add("xterm"),e.appendChild(this.element);const i=O.createDocumentFragment();this._viewportElement=O.createElement("div"),this._viewportElement.classList.add("xterm-viewport"),i.appendChild(this._viewportElement),this._viewportScrollArea=O.createElement("div"),this._viewportScrollArea.classList.add("xterm-scroll-area"),this._viewportElement.appendChild(this._viewportScrollArea),this.screenElement=O.createElement("div"),this.screenElement.classList.add("xterm-screen"),this._helperContainer=O.createElement("div"),this._helperContainer.classList.add("xterm-helpers"),this.screenElement.appendChild(this._helperContainer),i.appendChild(this.screenElement),this.textarea=O.createElement("textarea"),this.textarea.classList.add("xterm-helper-textarea"),this.textarea.setAttribute("aria-label",d.promptLabel),c.isChromeOS||this.textarea.setAttribute("aria-multiline","false"),this.textarea.setAttribute("autocorrect","off"),this.textarea.setAttribute("autocapitalize","off"),this.textarea.setAttribute("spellcheck","false"),this.textarea.tabIndex=0,this._coreBrowserService=this._instantiationService.createInstance(y.CoreBrowserService,this.textarea,null!==(t=this._document.defaultView)&&void 0!==t?t:window),this._instantiationService.setService(S.ICoreBrowserService,this._coreBrowserService),this.register((0,l.addDisposableDomListener)(this.textarea,"focus",(e=>this._handleTextAreaFocus(e)))),this.register((0,l.addDisposableDomListener)(this.textarea,"blur",(()=>this._handleTextAreaBlur()))),this._helperContainer.appendChild(this.textarea),this._charSizeService=this._instantiationService.createInstance(m.CharSizeService,this._document,this._helperContainer),this._instantiationService.setService(S.ICharSizeService,this._charSizeService),this._themeService=this._instantiationService.createInstance(M.ThemeService),this._instantiationService.setService(S.IThemeService,this._themeService),this._characterJoinerService=this._instantiationService.createInstance(L.CharacterJoinerService),this._instantiationService.setService(S.ICharacterJoinerService,this._characterJoinerService),this._renderService=this.register(this._instantiationService.createInstance(p.RenderService,this.rows,this.screenElement)),this._instantiationService.setService(S.IRenderService,this._renderService),this.register(this._renderService.onRenderedViewportChange((e=>this._onRender.fire(e)))),this.onResize((e=>this._renderService.resize(e.cols,e.rows))),this._compositionView=O.createElement("div"),this._compositionView.classList.add("composition-view"),this._compositionHelper=this._instantiationService.createInstance(s.CompositionHelper,this.textarea,this._compositionView),this._helperContainer.appendChild(this._compositionView),this.element.appendChild(i);try{this._onWillOpen.fire(this.element)}catch(e){}this._renderService.hasRenderer()||this._renderService.setRenderer(this._createRenderer()),this._mouseService=this._instantiationService.createInstance(C.MouseService),this._instantiationService.setService(S.IMouseService,this._mouseService),this.viewport=this._instantiationService.createInstance(r.Viewport,(e=>this.scrollLines(e,!0,1)),this._viewportElement,this._viewportScrollArea),this.register(this._inputHandler.onRequestSyncScrollBar((()=>this.viewport.syncScrollArea()))),this.register(this.viewport),this.register(this.onCursorMove((()=>{this._renderService.handleCursorMove(),this._syncTextArea()}))),this.register(this.onResize((()=>this._renderService.handleResize(this.cols,this.rows)))),this.register(this.onBlur((()=>this._renderService.handleBlur()))),this.register(this.onFocus((()=>this._renderService.handleFocus()))),this.register(this._renderService.onDimensionsChange((()=>this.viewport.syncScrollArea()))),this._selectionService=this.register(this._instantiationService.createInstance(h.SelectionService,this.element,this.screenElement,this.linkifier2)),this._instantiationService.setService(S.ISelectionService,this._selectionService),this.register(this._selectionService.onRequestScrollLines((e=>this.scrollLines(e.amount,e.suppressScrollEvent)))),this.register(this._selectionService.onSelectionChange((()=>this._onSelectionChange.fire()))),this.register(this._selectionService.onRequestRedraw((e=>this._renderService.handleSelectionChanged(e.start,e.end,e.columnSelectMode)))),this.register(this._selectionService.onLinuxMouseSelection((e=>{this.textarea.value=e,this.textarea.focus(),this.textarea.select()}))),this.register(this._onScroll.event((e=>{this.viewport.syncScrollArea(),this._selectionService.refresh()}))),this.register((0,l.addDisposableDomListener)(this._viewportElement,"scroll",(()=>this._selectionService.refresh()))),this.linkifier2.attachToDom(this.screenElement,this._mouseService,this._renderService),this.register(this._instantiationService.createInstance(R.BufferDecorationRenderer,this.screenElement)),this.register((0,l.addDisposableDomListener)(this.element,"mousedown",(e=>this._selectionService.handleMouseDown(e)))),this.coreMouseService.areMouseEventsActive?(this._selectionService.disable(),this.element.classList.add("enable-mouse-events")):this._selectionService.enable(),this.options.screenReaderMode&&(this._accessibilityManager=this._instantiationService.createInstance(_.AccessibilityManager,this)),this.register(this.optionsService.onSpecificOptionChange("screenReaderMode",(e=>this._handleScreenReaderModeOptionChange(e)))),this.options.overviewRulerWidth&&(this._overviewRulerRenderer=this.register(this._instantiationService.createInstance(D.OverviewRulerRenderer,this._viewportElement,this.screenElement))),this.optionsService.onSpecificOptionChange("overviewRulerWidth",(e=>{!this._overviewRulerRenderer&&e&&this._viewportElement&&this.screenElement&&(this._overviewRulerRenderer=this.register(this._instantiationService.createInstance(D.OverviewRulerRenderer,this._viewportElement,this.screenElement)))})),this._charSizeService.measure(),this.refresh(0,this.rows-1),this._initGlobal(),this.bindMouse()}_createRenderer(){return this._instantiationService.createInstance(u.DomRenderer,this.element,this.screenElement,this._viewportElement,this.linkifier2)}bindMouse(){const e=this,t=this.element;function i(t){const i=e._mouseService.getMouseReportCoords(t,e.screenElement);if(!i)return!1;let s,r;switch(t.overrideType||t.type){case"mousemove":r=32,void 0===t.buttons?(s=3,void 0!==t.button&&(s=t.button<3?t.button:3)):s=1&t.buttons?0:4&t.buttons?1:2&t.buttons?2:3;break;case"mouseup":r=0,s=t.button<3?t.button:3;break;case"mousedown":r=1,s=t.button<3?t.button:3;break;case"wheel":if(0===e.viewport.getLinesScrolled(t))return!1;r=t.deltaY<0?0:1,s=4;break;default:return!1}return!(void 0===r||void 0===s||s>4)&&e.coreMouseService.triggerMouseEvent({col:i.col,row:i.row,x:i.x,y:i.y,button:s,action:r,ctrl:t.ctrlKey,alt:t.altKey,shift:t.shiftKey})}const s={mouseup:null,wheel:null,mousedrag:null,mousemove:null},r={mouseup:e=>(i(e),e.buttons||(this._document.removeEventListener("mouseup",s.mouseup),s.mousedrag&&this._document.removeEventListener("mousemove",s.mousedrag)),this.cancel(e)),wheel:e=>(i(e),this.cancel(e,!0)),mousedrag:e=>{e.buttons&&i(e)},mousemove:e=>{e.buttons||i(e)}};this.register(this.coreMouseService.onProtocolChange((e=>{e?("debug"===this.optionsService.rawOptions.logLevel&&this._logService.debug("Binding to mouse events:",this.coreMouseService.explainEvents(e)),this.element.classList.add("enable-mouse-events"),this._selectionService.disable()):(this._logService.debug("Unbinding from mouse events."),this.element.classList.remove("enable-mouse-events"),this._selectionService.enable()),8&e?s.mousemove||(t.addEventListener("mousemove",r.mousemove),s.mousemove=r.mousemove):(t.removeEventListener("mousemove",s.mousemove),s.mousemove=null),16&e?s.wheel||(t.addEventListener("wheel",r.wheel,{passive:!1}),s.wheel=r.wheel):(t.removeEventListener("wheel",s.wheel),s.wheel=null),2&e?s.mouseup||(s.mouseup=r.mouseup):(this._document.removeEventListener("mouseup",s.mouseup),s.mouseup=null),4&e?s.mousedrag||(s.mousedrag=r.mousedrag):(this._document.removeEventListener("mousemove",s.mousedrag),s.mousedrag=null)}))),this.coreMouseService.activeProtocol=this.coreMouseService.activeProtocol,this.register((0,l.addDisposableDomListener)(t,"mousedown",(e=>{if(e.preventDefault(),this.focus(),this.coreMouseService.areMouseEventsActive&&!this._selectionService.shouldForceSelection(e))return i(e),s.mouseup&&this._document.addEventListener("mouseup",s.mouseup),s.mousedrag&&this._document.addEventListener("mousemove",s.mousedrag),this.cancel(e)}))),this.register((0,l.addDisposableDomListener)(t,"wheel",(e=>{if(!s.wheel){if(!this.buffer.hasScrollback){const t=this.viewport.getLinesScrolled(e);if(0===t)return;const i=o.C0.ESC+(this.coreService.decPrivateModes.applicationCursorKeys?"O":"[")+(e.deltaY<0?"A":"B");let s="";for(let e=0;e{if(!this.coreMouseService.areMouseEventsActive)return this.viewport.handleTouchStart(e),this.cancel(e)}),{passive:!0})),this.register((0,l.addDisposableDomListener)(t,"touchmove",(e=>{if(!this.coreMouseService.areMouseEventsActive)return this.viewport.handleTouchMove(e)?void 0:this.cancel(e)}),{passive:!1}))}refresh(e,t){var i;null===(i=this._renderService)||void 0===i||i.refreshRows(e,t)}updateCursorStyle(e){var t;(null===(t=this._selectionService)||void 0===t?void 0:t.shouldColumnSelect(e))?this.element.classList.add("column-select"):this.element.classList.remove("column-select")}_showCursor(){this.coreService.isCursorInitialized||(this.coreService.isCursorInitialized=!0,this.refresh(this.buffer.y,this.buffer.y))}scrollLines(e,t,i=0){super.scrollLines(e,t,i),this.refresh(0,this.rows-1)}paste(e){(0,n.paste)(e,this.textarea,this.coreService)}attachCustomKeyEventHandler(e){this._customKeyEventHandler=e}registerLinkProvider(e){return this.linkifier2.registerLinkProvider(e)}registerCharacterJoiner(e){if(!this._characterJoinerService)throw new Error("Terminal must be opened first");const t=this._characterJoinerService.register(e);return this.refresh(0,this.rows-1),t}deregisterCharacterJoiner(e){if(!this._characterJoinerService)throw new Error("Terminal must be opened first");this._characterJoinerService.deregister(e)&&this.refresh(0,this.rows-1)}get markers(){return this.buffer.markers}addMarker(e){return this.buffer.addMarker(this.buffer.ybase+this.buffer.y+e)}registerDecoration(e){return this._decorationService.registerDecoration(e)}hasSelection(){return!!this._selectionService&&this._selectionService.hasSelection}select(e,t,i){this._selectionService.setSelection(e,t,i)}getSelection(){return this._selectionService?this._selectionService.selectionText:""}getSelectionPosition(){if(this._selectionService&&this._selectionService.hasSelection)return{start:{x:this._selectionService.selectionStart[0],y:this._selectionService.selectionStart[1]},end:{x:this._selectionService.selectionEnd[0],y:this._selectionService.selectionEnd[1]}}}clearSelection(){var e;null===(e=this._selectionService)||void 0===e||e.clearSelection()}selectAll(){var e;null===(e=this._selectionService)||void 0===e||e.selectAll()}selectLines(e,t){var i;null===(i=this._selectionService)||void 0===i||i.selectLines(e,t)}_keyDown(e){if(this._keyDownHandled=!1,this._keyDownSeen=!0,this._customKeyEventHandler&&!1===this._customKeyEventHandler(e))return!1;const t=this.browser.isMac&&this.options.macOptionIsMeta&&e.altKey;if(!t&&!this._compositionHelper.keydown(e))return this.options.scrollOnUserInput&&this.buffer.ybase!==this.buffer.ydisp&&this._bufferService.scrollToBottom(),!1;t||"Dead"!==e.key&&"AltGraph"!==e.key||(this._unprocessedDeadKey=!0);const i=(0,f.evaluateKeyboardEvent)(e,this.coreService.decPrivateModes.applicationCursorKeys,this.browser.isMac,this.options.macOptionIsMeta);if(this.updateCursorStyle(e),3===i.type||2===i.type){const t=this.rows-1;return this.scrollLines(2===i.type?-t:t),this.cancel(e,!0)}return 1===i.type&&this.selectAll(),!!this._isThirdLevelShift(this.browser,e)||(i.cancel&&this.cancel(e,!0),!i.key||!!(e.key&&!e.ctrlKey&&!e.altKey&&!e.metaKey&&1===e.key.length&&e.key.charCodeAt(0)>=65&&e.key.charCodeAt(0)<=90)||(this._unprocessedDeadKey?(this._unprocessedDeadKey=!1,!0):(i.key!==o.C0.ETX&&i.key!==o.C0.CR||(this.textarea.value=""),this._onKey.fire({key:i.key,domEvent:e}),this._showCursor(),this.coreService.triggerDataEvent(i.key,!0),!this.optionsService.rawOptions.screenReaderMode||e.altKey||e.ctrlKey?this.cancel(e,!0):void(this._keyDownHandled=!0))))}_isThirdLevelShift(e,t){const i=e.isMac&&!this.options.macOptionIsMeta&&t.altKey&&!t.ctrlKey&&!t.metaKey||e.isWindows&&t.altKey&&t.ctrlKey&&!t.metaKey||e.isWindows&&t.getModifierState("AltGraph");return"keypress"===t.type?i:i&&(!t.keyCode||t.keyCode>47)}_keyUp(e){this._keyDownSeen=!1,this._customKeyEventHandler&&!1===this._customKeyEventHandler(e)||(function(e){return 16===e.keyCode||17===e.keyCode||18===e.keyCode}(e)||this.focus(),this.updateCursorStyle(e),this._keyPressHandled=!1)}_keyPress(e){let t;if(this._keyPressHandled=!1,this._keyDownHandled)return!1;if(this._customKeyEventHandler&&!1===this._customKeyEventHandler(e))return!1;if(this.cancel(e),e.charCode)t=e.charCode;else if(null===e.which||void 0===e.which)t=e.keyCode;else{if(0===e.which||0===e.charCode)return!1;t=e.which}return!(!t||(e.altKey||e.ctrlKey||e.metaKey)&&!this._isThirdLevelShift(this.browser,e)||(t=String.fromCharCode(t),this._onKey.fire({key:t,domEvent:e}),this._showCursor(),this.coreService.triggerDataEvent(t,!0),this._keyPressHandled=!0,this._unprocessedDeadKey=!1,0))}_inputEvent(e){if(e.data&&"insertText"===e.inputType&&(!e.composed||!this._keyDownSeen)&&!this.optionsService.rawOptions.screenReaderMode){if(this._keyPressHandled)return!1;this._unprocessedDeadKey=!1;const t=e.data;return this.coreService.triggerDataEvent(t,!0),this.cancel(e),!0}return!1}resize(e,t){e!==this.cols||t!==this.rows?super.resize(e,t):this._charSizeService&&!this._charSizeService.hasValidSize&&this._charSizeService.measure()}_afterResize(e,t){var i,s;null===(i=this._charSizeService)||void 0===i||i.measure(),null===(s=this.viewport)||void 0===s||s.syncScrollArea(!0)}clear(){if(0!==this.buffer.ybase||0!==this.buffer.y){this.buffer.clearAllMarkers(),this.buffer.lines.set(0,this.buffer.lines.get(this.buffer.ybase+this.buffer.y)),this.buffer.lines.length=1,this.buffer.ydisp=0,this.buffer.ybase=0,this.buffer.y=0;for(let e=1;e{Object.defineProperty(t,"__esModule",{value:!0}),t.TimeBasedDebouncer=void 0,t.TimeBasedDebouncer=class{constructor(e,t=1e3){this._renderCallback=e,this._debounceThresholdMS=t,this._lastRefreshMs=0,this._additionalRefreshRequested=!1}dispose(){this._refreshTimeoutID&&clearTimeout(this._refreshTimeoutID)}refresh(e,t,i){this._rowCount=i,e=void 0!==e?e:0,t=void 0!==t?t:this._rowCount-1,this._rowStart=void 0!==this._rowStart?Math.min(this._rowStart,e):e,this._rowEnd=void 0!==this._rowEnd?Math.max(this._rowEnd,t):t;const s=Date.now();if(s-this._lastRefreshMs>=this._debounceThresholdMS)this._lastRefreshMs=s,this._innerRefresh();else if(!this._additionalRefreshRequested){const e=s-this._lastRefreshMs,t=this._debounceThresholdMS-e;this._additionalRefreshRequested=!0,this._refreshTimeoutID=window.setTimeout((()=>{this._lastRefreshMs=Date.now(),this._innerRefresh(),this._additionalRefreshRequested=!1,this._refreshTimeoutID=void 0}),t)}}_innerRefresh(){if(void 0===this._rowStart||void 0===this._rowEnd||void 0===this._rowCount)return;const e=Math.max(this._rowStart,0),t=Math.min(this._rowEnd,this._rowCount-1);this._rowStart=void 0,this._rowEnd=void 0,this._renderCallback(e,t)}}},1680:function(e,t,i){var s=this&&this.__decorate||function(e,t,i,s){var r,n=arguments.length,o=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,i):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,s);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(n<3?r(o):n>3?r(t,i,o):r(t,i))||o);return n>3&&o&&Object.defineProperty(t,i,o),o},r=this&&this.__param||function(e,t){return function(i,s){t(i,s,e)}};Object.defineProperty(t,"__esModule",{value:!0}),t.Viewport=void 0;const n=i(844),o=i(3656),a=i(4725),h=i(2585);let c=class extends n.Disposable{constructor(e,t,i,s,r,n,a,h,c){super(),this._scrollLines=e,this._viewportElement=t,this._scrollArea=i,this._bufferService=s,this._optionsService=r,this._charSizeService=n,this._renderService=a,this._coreBrowserService=h,this.scrollBarWidth=0,this._currentRowHeight=0,this._currentDeviceCellHeight=0,this._lastRecordedBufferLength=0,this._lastRecordedViewportHeight=0,this._lastRecordedBufferHeight=0,this._lastTouchY=0,this._lastScrollTop=0,this._wheelPartialScroll=0,this._refreshAnimationFrame=null,this._ignoreNextScrollEvent=!1,this._smoothScrollState={startTime:0,origin:-1,target:-1},this.scrollBarWidth=this._viewportElement.offsetWidth-this._scrollArea.offsetWidth||15,this.register((0,o.addDisposableDomListener)(this._viewportElement,"scroll",this._handleScroll.bind(this))),this._activeBuffer=this._bufferService.buffer,this.register(this._bufferService.buffers.onBufferActivate((e=>this._activeBuffer=e.activeBuffer))),this._renderDimensions=this._renderService.dimensions,this.register(this._renderService.onDimensionsChange((e=>this._renderDimensions=e))),this._handleThemeChange(c.colors),this.register(c.onChangeColors((e=>this._handleThemeChange(e)))),this.register(this._optionsService.onSpecificOptionChange("scrollback",(()=>this.syncScrollArea()))),setTimeout((()=>this.syncScrollArea()),0)}_handleThemeChange(e){this._viewportElement.style.backgroundColor=e.background.css}_refresh(e){if(e)return this._innerRefresh(),void(null!==this._refreshAnimationFrame&&this._coreBrowserService.window.cancelAnimationFrame(this._refreshAnimationFrame));null===this._refreshAnimationFrame&&(this._refreshAnimationFrame=this._coreBrowserService.window.requestAnimationFrame((()=>this._innerRefresh())))}_innerRefresh(){if(this._charSizeService.height>0){this._currentRowHeight=this._renderService.dimensions.device.cell.height/this._coreBrowserService.dpr,this._currentDeviceCellHeight=this._renderService.dimensions.device.cell.height,this._lastRecordedViewportHeight=this._viewportElement.offsetHeight;const e=Math.round(this._currentRowHeight*this._lastRecordedBufferLength)+(this._lastRecordedViewportHeight-this._renderService.dimensions.css.canvas.height);this._lastRecordedBufferHeight!==e&&(this._lastRecordedBufferHeight=e,this._scrollArea.style.height=this._lastRecordedBufferHeight+"px")}const e=this._bufferService.buffer.ydisp*this._currentRowHeight;this._viewportElement.scrollTop!==e&&(this._ignoreNextScrollEvent=!0,this._viewportElement.scrollTop=e),this._refreshAnimationFrame=null}syncScrollArea(e=!1){if(this._lastRecordedBufferLength!==this._bufferService.buffer.lines.length)return this._lastRecordedBufferLength=this._bufferService.buffer.lines.length,void this._refresh(e);this._lastRecordedViewportHeight===this._renderService.dimensions.css.canvas.height&&this._lastScrollTop===this._activeBuffer.ydisp*this._currentRowHeight&&this._renderDimensions.device.cell.height===this._currentDeviceCellHeight||this._refresh(e)}_handleScroll(e){if(this._lastScrollTop=this._viewportElement.scrollTop,!this._viewportElement.offsetParent)return;if(this._ignoreNextScrollEvent)return this._ignoreNextScrollEvent=!1,void this._scrollLines(0);const t=Math.round(this._lastScrollTop/this._currentRowHeight)-this._bufferService.buffer.ydisp;this._scrollLines(t)}_smoothScroll(){if(this._isDisposed||-1===this._smoothScrollState.origin||-1===this._smoothScrollState.target)return;const e=this._smoothScrollPercent();this._viewportElement.scrollTop=this._smoothScrollState.origin+Math.round(e*(this._smoothScrollState.target-this._smoothScrollState.origin)),e<1?this._coreBrowserService.window.requestAnimationFrame((()=>this._smoothScroll())):this._clearSmoothScrollState()}_smoothScrollPercent(){return this._optionsService.rawOptions.smoothScrollDuration&&this._smoothScrollState.startTime?Math.max(Math.min((Date.now()-this._smoothScrollState.startTime)/this._optionsService.rawOptions.smoothScrollDuration,1),0):1}_clearSmoothScrollState(){this._smoothScrollState.startTime=0,this._smoothScrollState.origin=-1,this._smoothScrollState.target=-1}_bubbleScroll(e,t){const i=this._viewportElement.scrollTop+this._lastRecordedViewportHeight;return!(t<0&&0!==this._viewportElement.scrollTop||t>0&&i0&&(s=e),r=""}}return{bufferElements:n,cursorElement:s}}getLinesScrolled(e){if(0===e.deltaY||e.shiftKey)return 0;let t=this._applyScrollModifier(e.deltaY,e);return e.deltaMode===WheelEvent.DOM_DELTA_PIXEL?(t/=this._currentRowHeight+0,this._wheelPartialScroll+=t,t=Math.floor(Math.abs(this._wheelPartialScroll))*(this._wheelPartialScroll>0?1:-1),this._wheelPartialScroll%=1):e.deltaMode===WheelEvent.DOM_DELTA_PAGE&&(t*=this._bufferService.rows),t}_applyScrollModifier(e,t){const i=this._optionsService.rawOptions.fastScrollModifier;return"alt"===i&&t.altKey||"ctrl"===i&&t.ctrlKey||"shift"===i&&t.shiftKey?e*this._optionsService.rawOptions.fastScrollSensitivity*this._optionsService.rawOptions.scrollSensitivity:e*this._optionsService.rawOptions.scrollSensitivity}handleTouchStart(e){this._lastTouchY=e.touches[0].pageY}handleTouchMove(e){const t=this._lastTouchY-e.touches[0].pageY;return this._lastTouchY=e.touches[0].pageY,0!==t&&(this._viewportElement.scrollTop+=t,this._bubbleScroll(e,t))}};c=s([r(3,h.IBufferService),r(4,h.IOptionsService),r(5,a.ICharSizeService),r(6,a.IRenderService),r(7,a.ICoreBrowserService),r(8,a.IThemeService)],c),t.Viewport=c},3107:function(e,t,i){var s=this&&this.__decorate||function(e,t,i,s){var r,n=arguments.length,o=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,i):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,s);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(n<3?r(o):n>3?r(t,i,o):r(t,i))||o);return n>3&&o&&Object.defineProperty(t,i,o),o},r=this&&this.__param||function(e,t){return function(i,s){t(i,s,e)}};Object.defineProperty(t,"__esModule",{value:!0}),t.BufferDecorationRenderer=void 0;const n=i(3656),o=i(4725),a=i(844),h=i(2585);let c=class extends a.Disposable{constructor(e,t,i,s){super(),this._screenElement=e,this._bufferService=t,this._decorationService=i,this._renderService=s,this._decorationElements=new Map,this._altBufferIsActive=!1,this._dimensionsChanged=!1,this._container=document.createElement("div"),this._container.classList.add("xterm-decoration-container"),this._screenElement.appendChild(this._container),this.register(this._renderService.onRenderedViewportChange((()=>this._doRefreshDecorations()))),this.register(this._renderService.onDimensionsChange((()=>{this._dimensionsChanged=!0,this._queueRefresh()}))),this.register((0,n.addDisposableDomListener)(window,"resize",(()=>this._queueRefresh()))),this.register(this._bufferService.buffers.onBufferActivate((()=>{this._altBufferIsActive=this._bufferService.buffer===this._bufferService.buffers.alt}))),this.register(this._decorationService.onDecorationRegistered((()=>this._queueRefresh()))),this.register(this._decorationService.onDecorationRemoved((e=>this._removeDecoration(e)))),this.register((0,a.toDisposable)((()=>{this._container.remove(),this._decorationElements.clear()})))}_queueRefresh(){void 0===this._animationFrame&&(this._animationFrame=this._renderService.addRefreshCallback((()=>{this._doRefreshDecorations(),this._animationFrame=void 0})))}_doRefreshDecorations(){for(const e of this._decorationService.decorations)this._renderDecoration(e);this._dimensionsChanged=!1}_renderDecoration(e){this._refreshStyle(e),this._dimensionsChanged&&this._refreshXPosition(e)}_createElement(e){var t,i;const s=document.createElement("div");s.classList.add("xterm-decoration"),s.classList.toggle("xterm-decoration-top-layer","top"===(null===(t=null==e?void 0:e.options)||void 0===t?void 0:t.layer)),s.style.width=`${Math.round((e.options.width||1)*this._renderService.dimensions.css.cell.width)}px`,s.style.height=(e.options.height||1)*this._renderService.dimensions.css.cell.height+"px",s.style.top=(e.marker.line-this._bufferService.buffers.active.ydisp)*this._renderService.dimensions.css.cell.height+"px",s.style.lineHeight=`${this._renderService.dimensions.css.cell.height}px`;const r=null!==(i=e.options.x)&&void 0!==i?i:0;return r&&r>this._bufferService.cols&&(s.style.display="none"),this._refreshXPosition(e,s),s}_refreshStyle(e){const t=e.marker.line-this._bufferService.buffers.active.ydisp;if(t<0||t>=this._bufferService.rows)e.element&&(e.element.style.display="none",e.onRenderEmitter.fire(e.element));else{let i=this._decorationElements.get(e);i||(i=this._createElement(e),e.element=i,this._decorationElements.set(e,i),this._container.appendChild(i)),i.style.top=t*this._renderService.dimensions.css.cell.height+"px",i.style.display=this._altBufferIsActive?"none":"block",e.onRenderEmitter.fire(i)}}_refreshXPosition(e,t=e.element){var i;if(!t)return;const s=null!==(i=e.options.x)&&void 0!==i?i:0;"right"===(e.options.anchor||"left")?t.style.right=s?s*this._renderService.dimensions.css.cell.width+"px":"":t.style.left=s?s*this._renderService.dimensions.css.cell.width+"px":""}_removeDecoration(e){var t;null===(t=this._decorationElements.get(e))||void 0===t||t.remove(),this._decorationElements.delete(e),e.dispose()}};c=s([r(1,h.IBufferService),r(2,h.IDecorationService),r(3,o.IRenderService)],c),t.BufferDecorationRenderer=c},5871:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ColorZoneStore=void 0,t.ColorZoneStore=class{constructor(){this._zones=[],this._zonePool=[],this._zonePoolIndex=0,this._linePadding={full:0,left:0,center:0,right:0}}get zones(){return this._zonePool.length=Math.min(this._zonePool.length,this._zones.length),this._zones}clear(){this._zones.length=0,this._zonePoolIndex=0}addDecoration(e){if(e.options.overviewRulerOptions){for(const t of this._zones)if(t.color===e.options.overviewRulerOptions.color&&t.position===e.options.overviewRulerOptions.position){if(this._lineIntersectsZone(t,e.marker.line))return;if(this._lineAdjacentToZone(t,e.marker.line,e.options.overviewRulerOptions.position))return void this._addLineToZone(t,e.marker.line)}if(this._zonePoolIndex=e.startBufferLine&&t<=e.endBufferLine}_lineAdjacentToZone(e,t,i){return t>=e.startBufferLine-this._linePadding[i||"full"]&&t<=e.endBufferLine+this._linePadding[i||"full"]}_addLineToZone(e,t){e.startBufferLine=Math.min(e.startBufferLine,t),e.endBufferLine=Math.max(e.endBufferLine,t)}}},5744:function(e,t,i){var s=this&&this.__decorate||function(e,t,i,s){var r,n=arguments.length,o=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,i):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,s);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(n<3?r(o):n>3?r(t,i,o):r(t,i))||o);return n>3&&o&&Object.defineProperty(t,i,o),o},r=this&&this.__param||function(e,t){return function(i,s){t(i,s,e)}};Object.defineProperty(t,"__esModule",{value:!0}),t.OverviewRulerRenderer=void 0;const n=i(5871),o=i(3656),a=i(4725),h=i(844),c=i(2585),l={full:0,left:0,center:0,right:0},d={full:0,left:0,center:0,right:0},_={full:0,left:0,center:0,right:0};let u=class extends h.Disposable{constructor(e,t,i,s,r,o,a){var c;super(),this._viewportElement=e,this._screenElement=t,this._bufferService=i,this._decorationService=s,this._renderService=r,this._optionsService=o,this._coreBrowseService=a,this._colorZoneStore=new n.ColorZoneStore,this._shouldUpdateDimensions=!0,this._shouldUpdateAnchor=!0,this._lastKnownBufferLength=0,this._canvas=document.createElement("canvas"),this._canvas.classList.add("xterm-decoration-overview-ruler"),this._refreshCanvasDimensions(),null===(c=this._viewportElement.parentElement)||void 0===c||c.insertBefore(this._canvas,this._viewportElement);const l=this._canvas.getContext("2d");if(!l)throw new Error("Ctx cannot be null");this._ctx=l,this._registerDecorationListeners(),this._registerBufferChangeListeners(),this._registerDimensionChangeListeners(),this.register((0,h.toDisposable)((()=>{var e;null===(e=this._canvas)||void 0===e||e.remove()})))}get _width(){return this._optionsService.options.overviewRulerWidth||0}_registerDecorationListeners(){this.register(this._decorationService.onDecorationRegistered((()=>this._queueRefresh(void 0,!0)))),this.register(this._decorationService.onDecorationRemoved((()=>this._queueRefresh(void 0,!0))))}_registerBufferChangeListeners(){this.register(this._renderService.onRenderedViewportChange((()=>this._queueRefresh()))),this.register(this._bufferService.buffers.onBufferActivate((()=>{this._canvas.style.display=this._bufferService.buffer===this._bufferService.buffers.alt?"none":"block"}))),this.register(this._bufferService.onScroll((()=>{this._lastKnownBufferLength!==this._bufferService.buffers.normal.lines.length&&(this._refreshDrawHeightConstants(),this._refreshColorZonePadding())})))}_registerDimensionChangeListeners(){this.register(this._renderService.onRender((()=>{this._containerHeight&&this._containerHeight===this._screenElement.clientHeight||(this._queueRefresh(!0),this._containerHeight=this._screenElement.clientHeight)}))),this.register(this._optionsService.onSpecificOptionChange("overviewRulerWidth",(()=>this._queueRefresh(!0)))),this.register((0,o.addDisposableDomListener)(this._coreBrowseService.window,"resize",(()=>this._queueRefresh(!0)))),this._queueRefresh(!0)}_refreshDrawConstants(){const e=Math.floor(this._canvas.width/3),t=Math.ceil(this._canvas.width/3);d.full=this._canvas.width,d.left=e,d.center=t,d.right=e,this._refreshDrawHeightConstants(),_.full=0,_.left=0,_.center=d.left,_.right=d.left+d.center}_refreshDrawHeightConstants(){l.full=Math.round(2*this._coreBrowseService.dpr);const e=this._canvas.height/this._bufferService.buffer.lines.length,t=Math.round(Math.max(Math.min(e,12),6)*this._coreBrowseService.dpr);l.left=t,l.center=t,l.right=t}_refreshColorZonePadding(){this._colorZoneStore.setPadding({full:Math.floor(this._bufferService.buffers.active.lines.length/(this._canvas.height-1)*l.full),left:Math.floor(this._bufferService.buffers.active.lines.length/(this._canvas.height-1)*l.left),center:Math.floor(this._bufferService.buffers.active.lines.length/(this._canvas.height-1)*l.center),right:Math.floor(this._bufferService.buffers.active.lines.length/(this._canvas.height-1)*l.right)}),this._lastKnownBufferLength=this._bufferService.buffers.normal.lines.length}_refreshCanvasDimensions(){this._canvas.style.width=`${this._width}px`,this._canvas.width=Math.round(this._width*this._coreBrowseService.dpr),this._canvas.style.height=`${this._screenElement.clientHeight}px`,this._canvas.height=Math.round(this._screenElement.clientHeight*this._coreBrowseService.dpr),this._refreshDrawConstants(),this._refreshColorZonePadding()}_refreshDecorations(){this._shouldUpdateDimensions&&this._refreshCanvasDimensions(),this._ctx.clearRect(0,0,this._canvas.width,this._canvas.height),this._colorZoneStore.clear();for(const e of this._decorationService.decorations)this._colorZoneStore.addDecoration(e);this._ctx.lineWidth=1;const e=this._colorZoneStore.zones;for(const t of e)"full"!==t.position&&this._renderColorZone(t);for(const t of e)"full"===t.position&&this._renderColorZone(t);this._shouldUpdateDimensions=!1,this._shouldUpdateAnchor=!1}_renderColorZone(e){this._ctx.fillStyle=e.color,this._ctx.fillRect(_[e.position||"full"],Math.round((this._canvas.height-1)*(e.startBufferLine/this._bufferService.buffers.active.lines.length)-l[e.position||"full"]/2),d[e.position||"full"],Math.round((this._canvas.height-1)*((e.endBufferLine-e.startBufferLine)/this._bufferService.buffers.active.lines.length)+l[e.position||"full"]))}_queueRefresh(e,t){this._shouldUpdateDimensions=e||this._shouldUpdateDimensions,this._shouldUpdateAnchor=t||this._shouldUpdateAnchor,void 0===this._animationFrame&&(this._animationFrame=this._coreBrowseService.window.requestAnimationFrame((()=>{this._refreshDecorations(),this._animationFrame=void 0})))}};u=s([r(2,c.IBufferService),r(3,c.IDecorationService),r(4,a.IRenderService),r(5,c.IOptionsService),r(6,a.ICoreBrowserService)],u),t.OverviewRulerRenderer=u},2950:function(e,t,i){var s=this&&this.__decorate||function(e,t,i,s){var r,n=arguments.length,o=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,i):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,s);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(n<3?r(o):n>3?r(t,i,o):r(t,i))||o);return n>3&&o&&Object.defineProperty(t,i,o),o},r=this&&this.__param||function(e,t){return function(i,s){t(i,s,e)}};Object.defineProperty(t,"__esModule",{value:!0}),t.CompositionHelper=void 0;const n=i(4725),o=i(2585),a=i(2584);let h=class{constructor(e,t,i,s,r,n){this._textarea=e,this._compositionView=t,this._bufferService=i,this._optionsService=s,this._coreService=r,this._renderService=n,this._isComposing=!1,this._isSendingComposition=!1,this._compositionPosition={start:0,end:0},this._dataAlreadySent=""}get isComposing(){return this._isComposing}compositionstart(){this._isComposing=!0,this._compositionPosition.start=this._textarea.value.length,this._compositionView.textContent="",this._dataAlreadySent="",this._compositionView.classList.add("active")}compositionupdate(e){this._compositionView.textContent=e.data,this.updateCompositionElements(),setTimeout((()=>{this._compositionPosition.end=this._textarea.value.length}),0)}compositionend(){this._finalizeComposition(!0)}keydown(e){if(this._isComposing||this._isSendingComposition){if(229===e.keyCode)return!1;if(16===e.keyCode||17===e.keyCode||18===e.keyCode)return!1;this._finalizeComposition(!1)}return 229!==e.keyCode||(this._handleAnyTextareaChanges(),!1)}_finalizeComposition(e){if(this._compositionView.classList.remove("active"),this._isComposing=!1,e){const e={start:this._compositionPosition.start,end:this._compositionPosition.end};this._isSendingComposition=!0,setTimeout((()=>{if(this._isSendingComposition){let t;this._isSendingComposition=!1,e.start+=this._dataAlreadySent.length,t=this._isComposing?this._textarea.value.substring(e.start,e.end):this._textarea.value.substring(e.start),t.length>0&&this._coreService.triggerDataEvent(t,!0)}}),0)}else{this._isSendingComposition=!1;const e=this._textarea.value.substring(this._compositionPosition.start,this._compositionPosition.end);this._coreService.triggerDataEvent(e,!0)}}_handleAnyTextareaChanges(){const e=this._textarea.value;setTimeout((()=>{if(!this._isComposing){const t=this._textarea.value,i=t.replace(e,"");this._dataAlreadySent=i,t.length>e.length?this._coreService.triggerDataEvent(i,!0):t.lengththis.updateCompositionElements(!0)),0)}}};h=s([r(2,o.IBufferService),r(3,o.IOptionsService),r(4,o.ICoreService),r(5,n.IRenderService)],h),t.CompositionHelper=h},9806:(e,t)=>{function i(e,t,i){const s=i.getBoundingClientRect(),r=e.getComputedStyle(i),n=parseInt(r.getPropertyValue("padding-left")),o=parseInt(r.getPropertyValue("padding-top"));return[t.clientX-s.left-n,t.clientY-s.top-o]}Object.defineProperty(t,"__esModule",{value:!0}),t.getCoords=t.getCoordsRelativeToElement=void 0,t.getCoordsRelativeToElement=i,t.getCoords=function(e,t,s,r,n,o,a,h,c){if(!o)return;const l=i(e,t,s);return l?(l[0]=Math.ceil((l[0]+(c?a/2:0))/a),l[1]=Math.ceil(l[1]/h),l[0]=Math.min(Math.max(l[0],1),r+(c?1:0)),l[1]=Math.min(Math.max(l[1],1),n),l):void 0}},9504:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.moveToCellSequence=void 0;const s=i(2584);function r(e,t,i,s){const r=e-n(e,i),a=t-n(t,i),l=Math.abs(r-a)-function(e,t,i){let s=0;const r=e-n(e,i),a=t-n(t,i);for(let n=0;n=0&&et?"A":"B"}function a(e,t,i,s,r,n){let o=e,a=t,h="";for(;o!==i||a!==s;)o+=r?1:-1,r&&o>n.cols-1?(h+=n.buffer.translateBufferLineToString(a,!1,e,o),o=0,e=0,a++):!r&&o<0&&(h+=n.buffer.translateBufferLineToString(a,!1,0,e+1),o=n.cols-1,e=o,a--);return h+n.buffer.translateBufferLineToString(a,!1,e,o)}function h(e,t){const i=t?"O":"[";return s.C0.ESC+i+e}function c(e,t){e=Math.floor(e);let i="";for(let s=0;s0?s-n(s,o):t;const _=s,u=function(e,t,i,s,o,a){let h;return h=r(i,s,o,a).length>0?s-n(s,o):t,e=i&&he?"D":"C",c(Math.abs(o-e),h(d,s));d=l>t?"D":"C";const _=Math.abs(l-t);return c(function(e,t){return t.cols-e}(l>t?e:o,i)+(_-1)*i.cols+1+((l>t?o:e)-1),h(d,s))}},1296:function(e,t,i){var s=this&&this.__decorate||function(e,t,i,s){var r,n=arguments.length,o=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,i):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,s);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(n<3?r(o):n>3?r(t,i,o):r(t,i))||o);return n>3&&o&&Object.defineProperty(t,i,o),o},r=this&&this.__param||function(e,t){return function(i,s){t(i,s,e)}};Object.defineProperty(t,"__esModule",{value:!0}),t.DomRenderer=void 0;const n=i(3787),o=i(2223),a=i(6171),h=i(4725),c=i(8055),l=i(8460),d=i(844),_=i(2585),u="xterm-dom-renderer-owner-",f="xterm-focus";let v=1,g=class extends d.Disposable{constructor(e,t,i,s,r,o,h,c,_,f){super(),this._element=e,this._screenElement=t,this._viewportElement=i,this._linkifier2=s,this._charSizeService=o,this._optionsService=h,this._bufferService=c,this._coreBrowserService=_,this._themeService=f,this._terminalClass=v++,this._rowElements=[],this._cellToRowElements=[],this.onRequestRedraw=this.register(new l.EventEmitter).event,this._rowContainer=document.createElement("div"),this._rowContainer.classList.add("xterm-rows"),this._rowContainer.style.lineHeight="normal",this._rowContainer.setAttribute("aria-hidden","true"),this._refreshRowElements(this._bufferService.cols,this._bufferService.rows),this._selectionContainer=document.createElement("div"),this._selectionContainer.classList.add("xterm-selection"),this._selectionContainer.setAttribute("aria-hidden","true"),this.dimensions=(0,a.createRenderDimensions)(),this._updateDimensions(),this.register(this._optionsService.onOptionChange((()=>this._handleOptionsChanged()))),this.register(this._themeService.onChangeColors((e=>this._injectCss(e)))),this._injectCss(this._themeService.colors),this._rowFactory=r.createInstance(n.DomRendererRowFactory,document),this._element.classList.add(u+this._terminalClass),this._screenElement.appendChild(this._rowContainer),this._screenElement.appendChild(this._selectionContainer),this.register(this._linkifier2.onShowLinkUnderline((e=>this._handleLinkHover(e)))),this.register(this._linkifier2.onHideLinkUnderline((e=>this._handleLinkLeave(e)))),this.register((0,d.toDisposable)((()=>{this._element.classList.remove(u+this._terminalClass),this._rowContainer.remove(),this._selectionContainer.remove(),this._themeStyleElement.remove(),this._dimensionsStyleElement.remove()})))}_updateDimensions(){const e=this._coreBrowserService.dpr;this.dimensions.device.char.width=this._charSizeService.width*e,this.dimensions.device.char.height=Math.ceil(this._charSizeService.height*e),this.dimensions.device.cell.width=this.dimensions.device.char.width+Math.round(this._optionsService.rawOptions.letterSpacing),this.dimensions.device.cell.height=Math.floor(this.dimensions.device.char.height*this._optionsService.rawOptions.lineHeight),this.dimensions.device.char.left=0,this.dimensions.device.char.top=0,this.dimensions.device.canvas.width=this.dimensions.device.cell.width*this._bufferService.cols,this.dimensions.device.canvas.height=this.dimensions.device.cell.height*this._bufferService.rows,this.dimensions.css.canvas.width=Math.round(this.dimensions.device.canvas.width/e),this.dimensions.css.canvas.height=Math.round(this.dimensions.device.canvas.height/e),this.dimensions.css.cell.width=this.dimensions.css.canvas.width/this._bufferService.cols,this.dimensions.css.cell.height=this.dimensions.css.canvas.height/this._bufferService.rows;for(const e of this._rowElements)e.style.width=`${this.dimensions.css.canvas.width}px`,e.style.height=`${this.dimensions.css.cell.height}px`,e.style.lineHeight=`${this.dimensions.css.cell.height}px`,e.style.overflow="hidden";this._dimensionsStyleElement||(this._dimensionsStyleElement=document.createElement("style"),this._screenElement.appendChild(this._dimensionsStyleElement));const t=`${this._terminalSelector} .xterm-rows span { display: inline-block; height: 100%; vertical-align: top; width: ${this.dimensions.css.cell.width}px}`;this._dimensionsStyleElement.textContent=t,this._selectionContainer.style.height=this._viewportElement.style.height,this._screenElement.style.width=`${this.dimensions.css.canvas.width}px`,this._screenElement.style.height=`${this.dimensions.css.canvas.height}px`}_injectCss(e){this._themeStyleElement||(this._themeStyleElement=document.createElement("style"),this._screenElement.appendChild(this._themeStyleElement));let t=`${this._terminalSelector} .xterm-rows { color: ${e.foreground.css}; font-family: ${this._optionsService.rawOptions.fontFamily}; font-size: ${this._optionsService.rawOptions.fontSize}px;}`;t+=`${this._terminalSelector} .xterm-rows .xterm-dim { color: ${c.color.multiplyOpacity(e.foreground,.5).css};}`,t+=`${this._terminalSelector} span:not(.${n.BOLD_CLASS}) { font-weight: ${this._optionsService.rawOptions.fontWeight};}${this._terminalSelector} span.${n.BOLD_CLASS} { font-weight: ${this._optionsService.rawOptions.fontWeightBold};}${this._terminalSelector} span.${n.ITALIC_CLASS} { font-style: italic;}`,t+="@keyframes blink_box_shadow_"+this._terminalClass+" { 50% { box-shadow: none; }}",t+="@keyframes blink_block_"+this._terminalClass+" { 0% {"+` background-color: ${e.cursor.css};`+` color: ${e.cursorAccent.css}; } 50% {`+` background-color: ${e.cursorAccent.css};`+` color: ${e.cursor.css}; }}`,t+=`${this._terminalSelector} .xterm-rows:not(.xterm-focus) .${n.CURSOR_CLASS}.${n.CURSOR_STYLE_BLOCK_CLASS} ,${this._terminalSelector} .xterm-rows:not(.xterm-focus) .${n.CURSOR_CLASS}.${n.CURSOR_STYLE_BAR_CLASS} ,${this._terminalSelector} .xterm-rows:not(.xterm-focus) .${n.CURSOR_CLASS}.${n.CURSOR_STYLE_UNDERLINE_CLASS} { outline: 1px solid ${e.cursor.css}; outline-offset: -1px;}${this._terminalSelector} .xterm-rows.xterm-focus .${n.CURSOR_CLASS}.${n.CURSOR_BLINK_CLASS}:not(.${n.CURSOR_STYLE_BLOCK_CLASS}) { animation: blink_box_shadow_`+this._terminalClass+" 1s step-end infinite;}"+`${this._terminalSelector} .xterm-rows.xterm-focus .${n.CURSOR_CLASS}.${n.CURSOR_BLINK_CLASS}.${n.CURSOR_STYLE_BLOCK_CLASS} { animation: blink_block_`+this._terminalClass+" 1s step-end infinite;}"+`${this._terminalSelector} .xterm-rows.xterm-focus .${n.CURSOR_CLASS}.${n.CURSOR_STYLE_BLOCK_CLASS} {`+` background-color: ${e.cursor.css};`+` color: ${e.cursorAccent.css};}`+`${this._terminalSelector} .xterm-rows .${n.CURSOR_CLASS}.${n.CURSOR_STYLE_BAR_CLASS} {`+` box-shadow: ${this._optionsService.rawOptions.cursorWidth}px 0 0 ${e.cursor.css} inset;}`+`${this._terminalSelector} .xterm-rows .${n.CURSOR_CLASS}.${n.CURSOR_STYLE_UNDERLINE_CLASS} {`+` box-shadow: 0 -1px 0 ${e.cursor.css} inset;}`,t+=`${this._terminalSelector} .xterm-selection { position: absolute; top: 0; left: 0; z-index: 1; pointer-events: none;}${this._terminalSelector}.focus .xterm-selection div { position: absolute; background-color: ${e.selectionBackgroundOpaque.css};}${this._terminalSelector} .xterm-selection div { position: absolute; background-color: ${e.selectionInactiveBackgroundOpaque.css};}`;for(const[i,s]of e.ansi.entries())t+=`${this._terminalSelector} .xterm-fg-${i} { color: ${s.css}; }${this._terminalSelector} .xterm-fg-${i}.${n.DIM_CLASS} { color: ${c.color.multiplyOpacity(s,.5).css}; }${this._terminalSelector} .xterm-bg-${i} { background-color: ${s.css}; }`;t+=`${this._terminalSelector} .xterm-fg-${o.INVERTED_DEFAULT_COLOR} { color: ${c.color.opaque(e.background).css}; }${this._terminalSelector} .xterm-fg-${o.INVERTED_DEFAULT_COLOR}.${n.DIM_CLASS} { color: ${c.color.multiplyOpacity(c.color.opaque(e.background),.5).css}; }${this._terminalSelector} .xterm-bg-${o.INVERTED_DEFAULT_COLOR} { background-color: ${e.foreground.css}; }`,this._themeStyleElement.textContent=t}handleDevicePixelRatioChange(){this._updateDimensions()}_refreshRowElements(e,t){for(let e=this._rowElements.length;e<=t;e++){const e=document.createElement("div");this._rowContainer.appendChild(e),this._rowElements.push(e)}for(;this._rowElements.length>t;)this._rowContainer.removeChild(this._rowElements.pop())}handleResize(e,t){this._refreshRowElements(e,t),this._updateDimensions()}handleCharSizeChanged(){this._updateDimensions()}handleBlur(){this._rowContainer.classList.remove(f)}handleFocus(){this._rowContainer.classList.add(f)}handleSelectionChanged(e,t,i){for(;this._selectionContainer.children.length;)this._selectionContainer.removeChild(this._selectionContainer.children[0]);if(this._rowFactory.handleSelectionChanged(e,t,i),this.renderRows(0,this._bufferService.rows-1),!e||!t)return;const s=e[1]-this._bufferService.buffer.ydisp,r=t[1]-this._bufferService.buffer.ydisp,n=Math.max(s,0),o=Math.min(r,this._bufferService.rows-1);if(n>=this._bufferService.rows||o<0)return;const a=document.createDocumentFragment();if(i){const i=e[0]>t[0];a.appendChild(this._createSelectionElement(n,i?t[0]:e[0],i?e[0]:t[0],o-n+1))}else{const i=s===n?e[0]:0,h=n===r?t[0]:this._bufferService.cols;a.appendChild(this._createSelectionElement(n,i,h));const c=o-n-1;if(a.appendChild(this._createSelectionElement(n+1,0,this._bufferService.cols,c)),n!==o){const e=r===o?t[0]:this._bufferService.cols;a.appendChild(this._createSelectionElement(o,0,e))}}this._selectionContainer.appendChild(a)}_createSelectionElement(e,t,i,s=1){const r=document.createElement("div");return r.style.height=s*this.dimensions.css.cell.height+"px",r.style.top=e*this.dimensions.css.cell.height+"px",r.style.left=t*this.dimensions.css.cell.width+"px",r.style.width=this.dimensions.css.cell.width*(i-t)+"px",r}handleCursorMove(){}_handleOptionsChanged(){this._updateDimensions(),this._injectCss(this._themeService.colors)}clear(){for(const e of this._rowElements)e.replaceChildren()}renderRows(e,t){const i=this._bufferService.buffer.ybase+this._bufferService.buffer.y,s=Math.min(this._bufferService.buffer.x,this._bufferService.cols-1),r=this._optionsService.rawOptions.cursorBlink;for(let n=e;n<=t;n++){const e=this._rowElements[n],t=n+this._bufferService.buffer.ydisp,o=this._bufferService.buffer.lines.get(t),a=this._optionsService.rawOptions.cursorStyle;this._cellToRowElements[n]&&this._cellToRowElements[n].length===this._bufferService.cols||(this._cellToRowElements[n]=new Int16Array(this._bufferService.cols)),e.replaceChildren(this._rowFactory.createRow(o,t,t===i,a,s,r,this.dimensions.css.cell.width,this._bufferService.cols,this._cellToRowElements[n]))}}get _terminalSelector(){return`.${u}${this._terminalClass}`}_handleLinkHover(e){this._setCellUnderline(e.x1,e.x2,e.y1,e.y2,e.cols,!0)}_handleLinkLeave(e){this._setCellUnderline(e.x1,e.x2,e.y1,e.y2,e.cols,!1)}_setCellUnderline(e,t,i,s,r,n){i<0&&(e=0),s<0&&(t=0);const o=this._cellToRowElements.length-1;i=Math.max(Math.min(i,o),0),s=Math.max(Math.min(s,o),0);const a=this._cellToRowElements[i],h=this._cellToRowElements[s];if(!(e>=a.length||t>=h.length)&&(e=a[e],t=h[t],-1!==e&&-1!==t))for(;e!==t||i!==s;){const t=this._rowElements[i];if(!t)return;const s=t.children[e];s&&(s.style.textDecoration=n?"underline":"none"),++e>=r&&(e=0,i++)}}};g=s([r(4,_.IInstantiationService),r(5,h.ICharSizeService),r(6,_.IOptionsService),r(7,_.IBufferService),r(8,h.ICoreBrowserService),r(9,h.IThemeService)],g),t.DomRenderer=g},3787:function(e,t,i){var s=this&&this.__decorate||function(e,t,i,s){var r,n=arguments.length,o=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,i):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,s);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(n<3?r(o):n>3?r(t,i,o):r(t,i))||o);return n>3&&o&&Object.defineProperty(t,i,o),o},r=this&&this.__param||function(e,t){return function(i,s){t(i,s,e)}};Object.defineProperty(t,"__esModule",{value:!0}),t.DomRendererRowFactory=t.CURSOR_STYLE_UNDERLINE_CLASS=t.CURSOR_STYLE_BAR_CLASS=t.CURSOR_STYLE_BLOCK_CLASS=t.CURSOR_BLINK_CLASS=t.CURSOR_CLASS=t.STRIKETHROUGH_CLASS=t.OVERLINE_CLASS=t.UNDERLINE_CLASS=t.ITALIC_CLASS=t.DIM_CLASS=t.BOLD_CLASS=void 0;const n=i(2223),o=i(643),a=i(511),h=i(2585),c=i(8055),l=i(4725),d=i(4269),_=i(6171),u=i(3734);t.BOLD_CLASS="xterm-bold",t.DIM_CLASS="xterm-dim",t.ITALIC_CLASS="xterm-italic",t.UNDERLINE_CLASS="xterm-underline",t.OVERLINE_CLASS="xterm-overline",t.STRIKETHROUGH_CLASS="xterm-strikethrough",t.CURSOR_CLASS="xterm-cursor",t.CURSOR_BLINK_CLASS="xterm-cursor-blink",t.CURSOR_STYLE_BLOCK_CLASS="xterm-cursor-block",t.CURSOR_STYLE_BAR_CLASS="xterm-cursor-bar",t.CURSOR_STYLE_UNDERLINE_CLASS="xterm-cursor-underline";let f=class{constructor(e,t,i,s,r,n,o){this._document=e,this._characterJoinerService=t,this._optionsService=i,this._coreBrowserService=s,this._coreService=r,this._decorationService=n,this._themeService=o,this._workCell=new a.CellData,this._columnSelectMode=!1}handleSelectionChanged(e,t,i){this._selectionStart=e,this._selectionEnd=t,this._columnSelectMode=i}createRow(e,i,s,r,a,h,l,_,f){const g=this._document.createDocumentFragment(),p=this._characterJoinerService.getJoinedCharacters(i);let S=0;for(let t=Math.min(e.length,_)-1;t>=0;t--)if(e.loadCell(t,this._workCell).getCode()!==o.NULL_CELL_CODE||s&&t===a){S=t+1;break}const m=this._themeService.colors;let C=-1,b=0;for(;b0&&b===p[0][0]){S=!0;const t=p.shift();w=new d.JoinedCellData(this._workCell,e.translateToString(!0,t[0],t[1]),t[1]-t[0]),y=t[1]-1,_=w.getWidth()}const E=this._document.createElement("span");if(_>1&&(E.style.width=l*_+"px"),S&&(E.style.display="inline",a>=b&&a<=y&&(a=b)),!this._coreService.isCursorHidden&&s&&b===a)switch(E.classList.add(t.CURSOR_CLASS),h&&E.classList.add(t.CURSOR_BLINK_CLASS),r){case"bar":E.classList.add(t.CURSOR_STYLE_BAR_CLASS);break;case"underline":E.classList.add(t.CURSOR_STYLE_UNDERLINE_CLASS);break;default:E.classList.add(t.CURSOR_STYLE_BLOCK_CLASS)}if(w.isBold()&&E.classList.add(t.BOLD_CLASS),w.isItalic()&&E.classList.add(t.ITALIC_CLASS),w.isDim()&&E.classList.add(t.DIM_CLASS),w.isInvisible()?E.textContent=o.WHITESPACE_CELL_CHAR:E.textContent=w.getChars()||o.WHITESPACE_CELL_CHAR,w.isUnderline()&&(E.classList.add(`${t.UNDERLINE_CLASS}-${w.extended.underlineStyle}`)," "===E.textContent&&(E.textContent=" "),!w.isUnderlineColorDefault()))if(w.isUnderlineColorRGB())E.style.textDecorationColor=`rgb(${u.AttributeData.toColorRGB(w.getUnderlineColor()).join(",")})`;else{let e=w.getUnderlineColor();this._optionsService.rawOptions.drawBoldTextInBrightColors&&w.isBold()&&e<8&&(e+=8),E.style.textDecorationColor=m.ansi[e].css}w.isOverline()&&(E.classList.add(t.OVERLINE_CLASS)," "===E.textContent&&(E.textContent=" ")),w.isStrikethrough()&&E.classList.add(t.STRIKETHROUGH_CLASS);let L=w.getFgColor(),k=w.getFgColorMode(),R=w.getBgColor(),D=w.getBgColorMode();const A=!!w.isInverse();if(A){const e=L;L=R,R=e;const t=k;k=D,D=t}let B,x,T=!1;this._decorationService.forEachDecorationAtCell(b,i,void 0,(e=>{"top"!==e.options.layer&&T||(e.backgroundColorRGB&&(D=50331648,R=e.backgroundColorRGB.rgba>>8&16777215,B=e.backgroundColorRGB),e.foregroundColorRGB&&(k=50331648,L=e.foregroundColorRGB.rgba>>8&16777215,x=e.foregroundColorRGB),T="top"===e.options.layer)}));const M=this._isCellInSelection(b,i);let O;switch(T||m.selectionForeground&&M&&(k=50331648,L=m.selectionForeground.rgba>>8&16777215,x=m.selectionForeground),M&&(B=this._coreBrowserService.isFocused?m.selectionBackgroundOpaque:m.selectionInactiveBackgroundOpaque,T=!0),T&&E.classList.add("xterm-decoration-top"),D){case 16777216:case 33554432:O=m.ansi[R],E.classList.add(`xterm-bg-${R}`);break;case 50331648:O=c.rgba.toColor(R>>16,R>>8&255,255&R),this._addStyle(E,`background-color:#${v((R>>>0).toString(16),"0",6)}`);break;default:A?(O=m.foreground,E.classList.add(`xterm-bg-${n.INVERTED_DEFAULT_COLOR}`)):O=m.background}switch(B||w.isDim()&&(B=c.color.multiplyOpacity(O,.5)),k){case 16777216:case 33554432:w.isBold()&&L<8&&this._optionsService.rawOptions.drawBoldTextInBrightColors&&(L+=8),this._applyMinimumContrast(E,O,m.ansi[L],w,B,void 0)||E.classList.add(`xterm-fg-${L}`);break;case 50331648:const e=c.rgba.toColor(L>>16&255,L>>8&255,255&L);this._applyMinimumContrast(E,O,e,w,B,x)||this._addStyle(E,`color:#${v(L.toString(16),"0",6)}`);break;default:this._applyMinimumContrast(E,O,m.foreground,w,B,void 0)||A&&E.classList.add(`xterm-fg-${n.INVERTED_DEFAULT_COLOR}`)}g.appendChild(E),f[b]=++C,b=y}return b<_-1&&f.subarray(b).fill(++C),g}_applyMinimumContrast(e,t,i,s,r,n){if(1===this._optionsService.rawOptions.minimumContrastRatio||(0,_.excludeFromContrastRatioDemands)(s.getCode()))return!1;let o;return r||n||(o=this._themeService.colors.contrastCache.getColor(t.rgba,i.rgba)),void 0===o&&(o=c.color.ensureContrastRatio(r||t,n||i,this._optionsService.rawOptions.minimumContrastRatio),this._themeService.colors.contrastCache.setColor((r||t).rgba,(n||i).rgba,null!=o?o:null)),!!o&&(this._addStyle(e,`color:${o.css}`),!0)}_addStyle(e,t){e.setAttribute("style",`${e.getAttribute("style")||""}${t};`)}_isCellInSelection(e,t){const i=this._selectionStart,s=this._selectionEnd;return!(!i||!s)&&(this._columnSelectMode?i[0]<=s[0]?e>=i[0]&&t>=i[1]&&e=i[1]&&e>=s[0]&&t<=s[1]:t>i[1]&&t=i[0]&&e=i[0])}};function v(e,t,i){for(;e.length{Object.defineProperty(t,"__esModule",{value:!0}),t.TEXT_BASELINE=t.DIM_OPACITY=t.INVERTED_DEFAULT_COLOR=void 0;const s=i(6114);t.INVERTED_DEFAULT_COLOR=257,t.DIM_OPACITY=.5,t.TEXT_BASELINE=s.isFirefox||s.isLegacyEdge?"bottom":"ideographic"},6171:(e,t)=>{function i(e){return 57508<=e&&e<=57558}Object.defineProperty(t,"__esModule",{value:!0}),t.createRenderDimensions=t.excludeFromContrastRatioDemands=t.isRestrictedPowerlineGlyph=t.isPowerlineGlyph=t.throwIfFalsy=void 0,t.throwIfFalsy=function(e){if(!e)throw new Error("value must not be falsy");return e},t.isPowerlineGlyph=i,t.isRestrictedPowerlineGlyph=function(e){return 57520<=e&&e<=57527},t.excludeFromContrastRatioDemands=function(e){return i(e)||function(e){return 9472<=e&&e<=9631}(e)},t.createRenderDimensions=function(){return{css:{canvas:{width:0,height:0},cell:{width:0,height:0}},device:{canvas:{width:0,height:0},cell:{width:0,height:0},char:{width:0,height:0,left:0,top:0}}}}},456:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SelectionModel=void 0,t.SelectionModel=class{constructor(e){this._bufferService=e,this.isSelectAllActive=!1,this.selectionStartLength=0}clearSelection(){this.selectionStart=void 0,this.selectionEnd=void 0,this.isSelectAllActive=!1,this.selectionStartLength=0}get finalSelectionStart(){return this.isSelectAllActive?[0,0]:this.selectionEnd&&this.selectionStart&&this.areSelectionValuesReversed()?this.selectionEnd:this.selectionStart}get finalSelectionEnd(){if(this.isSelectAllActive)return[this._bufferService.cols,this._bufferService.buffer.ybase+this._bufferService.rows-1];if(this.selectionStart){if(!this.selectionEnd||this.areSelectionValuesReversed()){const e=this.selectionStart[0]+this.selectionStartLength;return e>this._bufferService.cols?e%this._bufferService.cols==0?[this._bufferService.cols,this.selectionStart[1]+Math.floor(e/this._bufferService.cols)-1]:[e%this._bufferService.cols,this.selectionStart[1]+Math.floor(e/this._bufferService.cols)]:[e,this.selectionStart[1]]}if(this.selectionStartLength&&this.selectionEnd[1]===this.selectionStart[1]){const e=this.selectionStart[0]+this.selectionStartLength;return e>this._bufferService.cols?[e%this._bufferService.cols,this.selectionStart[1]+Math.floor(e/this._bufferService.cols)]:[Math.max(e,this.selectionEnd[0]),this.selectionEnd[1]]}return this.selectionEnd}}areSelectionValuesReversed(){const e=this.selectionStart,t=this.selectionEnd;return!(!e||!t)&&(e[1]>t[1]||e[1]===t[1]&&e[0]>t[0])}handleTrim(e){return this.selectionStart&&(this.selectionStart[1]-=e),this.selectionEnd&&(this.selectionEnd[1]-=e),this.selectionEnd&&this.selectionEnd[1]<0?(this.clearSelection(),!0):(this.selectionStart&&this.selectionStart[1]<0&&(this.selectionStart[1]=0),!1)}}},428:function(e,t,i){var s=this&&this.__decorate||function(e,t,i,s){var r,n=arguments.length,o=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,i):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,s);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(n<3?r(o):n>3?r(t,i,o):r(t,i))||o);return n>3&&o&&Object.defineProperty(t,i,o),o},r=this&&this.__param||function(e,t){return function(i,s){t(i,s,e)}};Object.defineProperty(t,"__esModule",{value:!0}),t.CharSizeService=void 0;const n=i(2585),o=i(8460),a=i(844);let h=class extends a.Disposable{constructor(e,t,i){super(),this._optionsService=i,this.width=0,this.height=0,this._onCharSizeChange=this.register(new o.EventEmitter),this.onCharSizeChange=this._onCharSizeChange.event,this._measureStrategy=new c(e,t,this._optionsService),this.register(this._optionsService.onMultipleOptionChange(["fontFamily","fontSize"],(()=>this.measure())))}get hasValidSize(){return this.width>0&&this.height>0}measure(){const e=this._measureStrategy.measure();e.width===this.width&&e.height===this.height||(this.width=e.width,this.height=e.height,this._onCharSizeChange.fire())}};h=s([r(2,n.IOptionsService)],h),t.CharSizeService=h;class c{constructor(e,t,i){this._document=e,this._parentElement=t,this._optionsService=i,this._result={width:0,height:0},this._measureElement=this._document.createElement("span"),this._measureElement.classList.add("xterm-char-measure-element"),this._measureElement.textContent="W",this._measureElement.setAttribute("aria-hidden","true"),this._parentElement.appendChild(this._measureElement)}measure(){this._measureElement.style.fontFamily=this._optionsService.rawOptions.fontFamily,this._measureElement.style.fontSize=`${this._optionsService.rawOptions.fontSize}px`;const e=this._measureElement.getBoundingClientRect();return 0!==e.width&&0!==e.height&&(this._result.width=e.width,this._result.height=Math.ceil(e.height)),this._result}}},4269:function(e,t,i){var s=this&&this.__decorate||function(e,t,i,s){var r,n=arguments.length,o=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,i):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,s);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(n<3?r(o):n>3?r(t,i,o):r(t,i))||o);return n>3&&o&&Object.defineProperty(t,i,o),o},r=this&&this.__param||function(e,t){return function(i,s){t(i,s,e)}};Object.defineProperty(t,"__esModule",{value:!0}),t.CharacterJoinerService=t.JoinedCellData=void 0;const n=i(3734),o=i(643),a=i(511),h=i(2585);class c extends n.AttributeData{constructor(e,t,i){super(),this.content=0,this.combinedData="",this.fg=e.fg,this.bg=e.bg,this.combinedData=t,this._width=i}isCombined(){return 2097152}getWidth(){return this._width}getChars(){return this.combinedData}getCode(){return 2097151}setFromCharData(e){throw new Error("not implemented")}getAsCharData(){return[this.fg,this.getChars(),this.getWidth(),this.getCode()]}}t.JoinedCellData=c;let l=class e{constructor(e){this._bufferService=e,this._characterJoiners=[],this._nextCharacterJoinerId=0,this._workCell=new a.CellData}register(e){const t={id:this._nextCharacterJoinerId++,handler:e};return this._characterJoiners.push(t),t.id}deregister(e){for(let t=0;t1){const e=this._getJoinedRanges(s,a,n,t,r);for(let t=0;t1){const e=this._getJoinedRanges(s,a,n,t,r);for(let t=0;t{Object.defineProperty(t,"__esModule",{value:!0}),t.CoreBrowserService=void 0,t.CoreBrowserService=class{constructor(e,t){this._textarea=e,this.window=t,this._isFocused=!1,this._cachedIsFocused=void 0,this._textarea.addEventListener("focus",(()=>this._isFocused=!0)),this._textarea.addEventListener("blur",(()=>this._isFocused=!1))}get dpr(){return this.window.devicePixelRatio}get isFocused(){return void 0===this._cachedIsFocused&&(this._cachedIsFocused=this._isFocused&&this._textarea.ownerDocument.hasFocus(),queueMicrotask((()=>this._cachedIsFocused=void 0))),this._cachedIsFocused}}},8934:function(e,t,i){var s=this&&this.__decorate||function(e,t,i,s){var r,n=arguments.length,o=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,i):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,s);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(n<3?r(o):n>3?r(t,i,o):r(t,i))||o);return n>3&&o&&Object.defineProperty(t,i,o),o},r=this&&this.__param||function(e,t){return function(i,s){t(i,s,e)}};Object.defineProperty(t,"__esModule",{value:!0}),t.MouseService=void 0;const n=i(4725),o=i(9806);let a=class{constructor(e,t){this._renderService=e,this._charSizeService=t}getCoords(e,t,i,s,r){return(0,o.getCoords)(window,e,t,i,s,this._charSizeService.hasValidSize,this._renderService.dimensions.css.cell.width,this._renderService.dimensions.css.cell.height,r)}getMouseReportCoords(e,t){const i=(0,o.getCoordsRelativeToElement)(window,e,t);if(!(!this._charSizeService.hasValidSize||i[0]<0||i[1]<0||i[0]>=this._renderService.dimensions.css.canvas.width||i[1]>=this._renderService.dimensions.css.canvas.height))return{col:Math.floor(i[0]/this._renderService.dimensions.css.cell.width),row:Math.floor(i[1]/this._renderService.dimensions.css.cell.height),x:Math.floor(i[0]),y:Math.floor(i[1])}}};a=s([r(0,n.IRenderService),r(1,n.ICharSizeService)],a),t.MouseService=a},3230:function(e,t,i){var s=this&&this.__decorate||function(e,t,i,s){var r,n=arguments.length,o=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,i):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,s);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(n<3?r(o):n>3?r(t,i,o):r(t,i))||o);return n>3&&o&&Object.defineProperty(t,i,o),o},r=this&&this.__param||function(e,t){return function(i,s){t(i,s,e)}};Object.defineProperty(t,"__esModule",{value:!0}),t.RenderService=void 0;const n=i(6193),o=i(8460),a=i(844),h=i(5596),c=i(3656),l=i(2585),d=i(4725),_=i(7226);let u=class extends a.Disposable{constructor(e,t,i,s,r,a,l,d){if(super(),this._rowCount=e,this._charSizeService=s,this._pausedResizeTask=new _.DebouncedIdleTask,this._isPaused=!1,this._needsFullRefresh=!1,this._isNextRenderRedrawOnly=!0,this._needsSelectionRefresh=!1,this._canvasWidth=0,this._canvasHeight=0,this._selectionState={start:void 0,end:void 0,columnSelectMode:!1},this._onDimensionsChange=this.register(new o.EventEmitter),this.onDimensionsChange=this._onDimensionsChange.event,this._onRenderedViewportChange=this.register(new o.EventEmitter),this.onRenderedViewportChange=this._onRenderedViewportChange.event,this._onRender=this.register(new o.EventEmitter),this.onRender=this._onRender.event,this._onRefreshRequest=this.register(new o.EventEmitter),this.onRefreshRequest=this._onRefreshRequest.event,this.register({dispose:()=>{var e;return null===(e=this._renderer)||void 0===e?void 0:e.dispose()}}),this._renderDebouncer=new n.RenderDebouncer(l.window,((e,t)=>this._renderRows(e,t))),this.register(this._renderDebouncer),this._screenDprMonitor=new h.ScreenDprMonitor(l.window),this._screenDprMonitor.setListener((()=>this.handleDevicePixelRatioChange())),this.register(this._screenDprMonitor),this.register(a.onResize((()=>this._fullRefresh()))),this.register(a.buffers.onBufferActivate((()=>{var e;return null===(e=this._renderer)||void 0===e?void 0:e.clear()}))),this.register(i.onOptionChange((()=>this._handleOptionsChanged()))),this.register(this._charSizeService.onCharSizeChange((()=>this.handleCharSizeChanged()))),this.register(r.onDecorationRegistered((()=>this._fullRefresh()))),this.register(r.onDecorationRemoved((()=>this._fullRefresh()))),this.register(i.onMultipleOptionChange(["customGlyphs","drawBoldTextInBrightColors","letterSpacing","lineHeight","fontFamily","fontSize","fontWeight","fontWeightBold","minimumContrastRatio"],(()=>{this.clear(),this.handleResize(a.cols,a.rows),this._fullRefresh()}))),this.register(i.onMultipleOptionChange(["cursorBlink","cursorStyle"],(()=>this.refreshRows(a.buffer.y,a.buffer.y,!0)))),this.register((0,c.addDisposableDomListener)(l.window,"resize",(()=>this.handleDevicePixelRatioChange()))),this.register(d.onChangeColors((()=>this._fullRefresh()))),"IntersectionObserver"in l.window){const e=new l.window.IntersectionObserver((e=>this._handleIntersectionChange(e[e.length-1])),{threshold:0});e.observe(t),this.register({dispose:()=>e.disconnect()})}}get dimensions(){return this._renderer.dimensions}_handleIntersectionChange(e){this._isPaused=void 0===e.isIntersecting?0===e.intersectionRatio:!e.isIntersecting,this._isPaused||this._charSizeService.hasValidSize||this._charSizeService.measure(),!this._isPaused&&this._needsFullRefresh&&(this._pausedResizeTask.flush(),this.refreshRows(0,this._rowCount-1),this._needsFullRefresh=!1)}refreshRows(e,t,i=!1){this._isPaused?this._needsFullRefresh=!0:(i||(this._isNextRenderRedrawOnly=!1),this._renderDebouncer.refresh(e,t,this._rowCount))}_renderRows(e,t){this._renderer&&(e=Math.min(e,this._rowCount-1),t=Math.min(t,this._rowCount-1),this._renderer.renderRows(e,t),this._needsSelectionRefresh&&(this._renderer.handleSelectionChanged(this._selectionState.start,this._selectionState.end,this._selectionState.columnSelectMode),this._needsSelectionRefresh=!1),this._isNextRenderRedrawOnly||this._onRenderedViewportChange.fire({start:e,end:t}),this._onRender.fire({start:e,end:t}),this._isNextRenderRedrawOnly=!0)}resize(e,t){this._rowCount=t,this._fireOnCanvasResize()}_handleOptionsChanged(){this._renderer&&(this.refreshRows(0,this._rowCount-1),this._fireOnCanvasResize())}_fireOnCanvasResize(){this._renderer&&(this._renderer.dimensions.css.canvas.width===this._canvasWidth&&this._renderer.dimensions.css.canvas.height===this._canvasHeight||this._onDimensionsChange.fire(this._renderer.dimensions))}hasRenderer(){return!!this._renderer}setRenderer(e){var t;null===(t=this._renderer)||void 0===t||t.dispose(),this._renderer=e,this._renderer.onRequestRedraw((e=>this.refreshRows(e.start,e.end,!0))),this._needsSelectionRefresh=!0,this._fullRefresh()}addRefreshCallback(e){return this._renderDebouncer.addRefreshCallback(e)}_fullRefresh(){this._isPaused?this._needsFullRefresh=!0:this.refreshRows(0,this._rowCount-1)}clearTextureAtlas(){var e,t;this._renderer&&(null===(t=(e=this._renderer).clearTextureAtlas)||void 0===t||t.call(e),this._fullRefresh())}handleDevicePixelRatioChange(){this._charSizeService.measure(),this._renderer&&(this._renderer.handleDevicePixelRatioChange(),this.refreshRows(0,this._rowCount-1))}handleResize(e,t){this._renderer&&(this._isPaused?this._pausedResizeTask.set((()=>this._renderer.handleResize(e,t))):this._renderer.handleResize(e,t),this._fullRefresh())}handleCharSizeChanged(){var e;null===(e=this._renderer)||void 0===e||e.handleCharSizeChanged()}handleBlur(){var e;null===(e=this._renderer)||void 0===e||e.handleBlur()}handleFocus(){var e;null===(e=this._renderer)||void 0===e||e.handleFocus()}handleSelectionChanged(e,t,i){var s;this._selectionState.start=e,this._selectionState.end=t,this._selectionState.columnSelectMode=i,null===(s=this._renderer)||void 0===s||s.handleSelectionChanged(e,t,i)}handleCursorMove(){var e;null===(e=this._renderer)||void 0===e||e.handleCursorMove()}clear(){var e;null===(e=this._renderer)||void 0===e||e.clear()}};u=s([r(2,l.IOptionsService),r(3,d.ICharSizeService),r(4,l.IDecorationService),r(5,l.IBufferService),r(6,d.ICoreBrowserService),r(7,d.IThemeService)],u),t.RenderService=u},9312:function(e,t,i){var s=this&&this.__decorate||function(e,t,i,s){var r,n=arguments.length,o=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,i):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,s);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(n<3?r(o):n>3?r(t,i,o):r(t,i))||o);return n>3&&o&&Object.defineProperty(t,i,o),o},r=this&&this.__param||function(e,t){return function(i,s){t(i,s,e)}};Object.defineProperty(t,"__esModule",{value:!0}),t.SelectionService=void 0;const n=i(6114),o=i(456),a=i(511),h=i(8460),c=i(4725),l=i(2585),d=i(9806),_=i(9504),u=i(844),f=i(4841),v=String.fromCharCode(160),g=new RegExp(v,"g");let p=class extends u.Disposable{constructor(e,t,i,s,r,n,c,l,d){super(),this._element=e,this._screenElement=t,this._linkifier=i,this._bufferService=s,this._coreService=r,this._mouseService=n,this._optionsService=c,this._renderService=l,this._coreBrowserService=d,this._dragScrollAmount=0,this._enabled=!0,this._workCell=new a.CellData,this._mouseDownTimeStamp=0,this._oldHasSelection=!1,this._oldSelectionStart=void 0,this._oldSelectionEnd=void 0,this._onLinuxMouseSelection=this.register(new h.EventEmitter),this.onLinuxMouseSelection=this._onLinuxMouseSelection.event,this._onRedrawRequest=this.register(new h.EventEmitter),this.onRequestRedraw=this._onRedrawRequest.event,this._onSelectionChange=this.register(new h.EventEmitter),this.onSelectionChange=this._onSelectionChange.event,this._onRequestScrollLines=this.register(new h.EventEmitter),this.onRequestScrollLines=this._onRequestScrollLines.event,this._mouseMoveListener=e=>this._handleMouseMove(e),this._mouseUpListener=e=>this._handleMouseUp(e),this._coreService.onUserInput((()=>{this.hasSelection&&this.clearSelection()})),this._trimListener=this._bufferService.buffer.lines.onTrim((e=>this._handleTrim(e))),this.register(this._bufferService.buffers.onBufferActivate((e=>this._handleBufferActivate(e)))),this.enable(),this._model=new o.SelectionModel(this._bufferService),this._activeSelectionMode=0,this.register((0,u.toDisposable)((()=>{this._removeMouseDownListeners()})))}reset(){this.clearSelection()}disable(){this.clearSelection(),this._enabled=!1}enable(){this._enabled=!0}get selectionStart(){return this._model.finalSelectionStart}get selectionEnd(){return this._model.finalSelectionEnd}get hasSelection(){const e=this._model.finalSelectionStart,t=this._model.finalSelectionEnd;return!(!e||!t||e[0]===t[0]&&e[1]===t[1])}get selectionText(){const e=this._model.finalSelectionStart,t=this._model.finalSelectionEnd;if(!e||!t)return"";const i=this._bufferService.buffer,s=[];if(3===this._activeSelectionMode){if(e[0]===t[0])return"";const r=e[0]e.replace(g," "))).join(n.isWindows?"\r\n":"\n")}clearSelection(){this._model.clearSelection(),this._removeMouseDownListeners(),this.refresh(),this._onSelectionChange.fire()}refresh(e){this._refreshAnimationFrame||(this._refreshAnimationFrame=this._coreBrowserService.window.requestAnimationFrame((()=>this._refresh()))),n.isLinux&&e&&this.selectionText.length&&this._onLinuxMouseSelection.fire(this.selectionText)}_refresh(){this._refreshAnimationFrame=void 0,this._onRedrawRequest.fire({start:this._model.finalSelectionStart,end:this._model.finalSelectionEnd,columnSelectMode:3===this._activeSelectionMode})}_isClickInSelection(e){const t=this._getMouseBufferCoords(e),i=this._model.finalSelectionStart,s=this._model.finalSelectionEnd;return!!(i&&s&&t)&&this._areCoordsInSelection(t,i,s)}isCellInSelection(e,t){const i=this._model.finalSelectionStart,s=this._model.finalSelectionEnd;return!(!i||!s)&&this._areCoordsInSelection([e,t],i,s)}_areCoordsInSelection(e,t,i){return e[1]>t[1]&&e[1]=t[0]&&e[0]=t[0]}_selectWordAtCursor(e,t){var i,s;const r=null===(s=null===(i=this._linkifier.currentLink)||void 0===i?void 0:i.link)||void 0===s?void 0:s.range;if(r)return this._model.selectionStart=[r.start.x-1,r.start.y-1],this._model.selectionStartLength=(0,f.getRangeLength)(r,this._bufferService.cols),this._model.selectionEnd=void 0,!0;const n=this._getMouseBufferCoords(e);return!!n&&(this._selectWordAt(n,t),this._model.selectionEnd=void 0,!0)}selectAll(){this._model.isSelectAllActive=!0,this.refresh(),this._onSelectionChange.fire()}selectLines(e,t){this._model.clearSelection(),e=Math.max(e,0),t=Math.min(t,this._bufferService.buffer.lines.length-1),this._model.selectionStart=[0,e],this._model.selectionEnd=[this._bufferService.cols,t],this.refresh(),this._onSelectionChange.fire()}_handleTrim(e){this._model.handleTrim(e)&&this.refresh()}_getMouseBufferCoords(e){const t=this._mouseService.getCoords(e,this._screenElement,this._bufferService.cols,this._bufferService.rows,!0);if(t)return t[0]--,t[1]--,t[1]+=this._bufferService.buffer.ydisp,t}_getMouseEventScrollAmount(e){let t=(0,d.getCoordsRelativeToElement)(this._coreBrowserService.window,e,this._screenElement)[1];const i=this._renderService.dimensions.css.canvas.height;return t>=0&&t<=i?0:(t>i&&(t-=i),t=Math.min(Math.max(t,-50),50),t/=50,t/Math.abs(t)+Math.round(14*t))}shouldForceSelection(e){return n.isMac?e.altKey&&this._optionsService.rawOptions.macOptionClickForcesSelection:e.shiftKey}handleMouseDown(e){if(this._mouseDownTimeStamp=e.timeStamp,(2!==e.button||!this.hasSelection)&&0===e.button){if(!this._enabled){if(!this.shouldForceSelection(e))return;e.stopPropagation()}e.preventDefault(),this._dragScrollAmount=0,this._enabled&&e.shiftKey?this._handleIncrementalClick(e):1===e.detail?this._handleSingleClick(e):2===e.detail?this._handleDoubleClick(e):3===e.detail&&this._handleTripleClick(e),this._addMouseDownListeners(),this.refresh(!0)}}_addMouseDownListeners(){this._screenElement.ownerDocument&&(this._screenElement.ownerDocument.addEventListener("mousemove",this._mouseMoveListener),this._screenElement.ownerDocument.addEventListener("mouseup",this._mouseUpListener)),this._dragScrollIntervalTimer=this._coreBrowserService.window.setInterval((()=>this._dragScroll()),50)}_removeMouseDownListeners(){this._screenElement.ownerDocument&&(this._screenElement.ownerDocument.removeEventListener("mousemove",this._mouseMoveListener),this._screenElement.ownerDocument.removeEventListener("mouseup",this._mouseUpListener)),this._coreBrowserService.window.clearInterval(this._dragScrollIntervalTimer),this._dragScrollIntervalTimer=void 0}_handleIncrementalClick(e){this._model.selectionStart&&(this._model.selectionEnd=this._getMouseBufferCoords(e))}_handleSingleClick(e){if(this._model.selectionStartLength=0,this._model.isSelectAllActive=!1,this._activeSelectionMode=this.shouldColumnSelect(e)?3:0,this._model.selectionStart=this._getMouseBufferCoords(e),!this._model.selectionStart)return;this._model.selectionEnd=void 0;const t=this._bufferService.buffer.lines.get(this._model.selectionStart[1]);t&&t.length!==this._model.selectionStart[0]&&0===t.hasWidth(this._model.selectionStart[0])&&this._model.selectionStart[0]++}_handleDoubleClick(e){this._selectWordAtCursor(e,!0)&&(this._activeSelectionMode=1)}_handleTripleClick(e){const t=this._getMouseBufferCoords(e);t&&(this._activeSelectionMode=2,this._selectLineAt(t[1]))}shouldColumnSelect(e){return e.altKey&&!(n.isMac&&this._optionsService.rawOptions.macOptionClickForcesSelection)}_handleMouseMove(e){if(e.stopImmediatePropagation(),!this._model.selectionStart)return;const t=this._model.selectionEnd?[this._model.selectionEnd[0],this._model.selectionEnd[1]]:null;if(this._model.selectionEnd=this._getMouseBufferCoords(e),!this._model.selectionEnd)return void this.refresh(!0);2===this._activeSelectionMode?this._model.selectionEnd[1]0?this._model.selectionEnd[0]=this._bufferService.cols:this._dragScrollAmount<0&&(this._model.selectionEnd[0]=0));const i=this._bufferService.buffer;if(this._model.selectionEnd[1]0?(3!==this._activeSelectionMode&&(this._model.selectionEnd[0]=this._bufferService.cols),this._model.selectionEnd[1]=Math.min(e.ydisp+this._bufferService.rows,e.lines.length-1)):(3!==this._activeSelectionMode&&(this._model.selectionEnd[0]=0),this._model.selectionEnd[1]=e.ydisp),this.refresh()}}_handleMouseUp(e){const t=e.timeStamp-this._mouseDownTimeStamp;if(this._removeMouseDownListeners(),this.selectionText.length<=1&&t<500&&e.altKey&&this._optionsService.rawOptions.altClickMovesCursor){if(this._bufferService.buffer.ybase===this._bufferService.buffer.ydisp){const t=this._mouseService.getCoords(e,this._element,this._bufferService.cols,this._bufferService.rows,!1);if(t&&void 0!==t[0]&&void 0!==t[1]){const e=(0,_.moveToCellSequence)(t[0]-1,t[1]-1,this._bufferService,this._coreService.decPrivateModes.applicationCursorKeys);this._coreService.triggerDataEvent(e,!0)}}}else this._fireEventIfSelectionChanged()}_fireEventIfSelectionChanged(){const e=this._model.finalSelectionStart,t=this._model.finalSelectionEnd,i=!(!e||!t||e[0]===t[0]&&e[1]===t[1]);i?e&&t&&(this._oldSelectionStart&&this._oldSelectionEnd&&e[0]===this._oldSelectionStart[0]&&e[1]===this._oldSelectionStart[1]&&t[0]===this._oldSelectionEnd[0]&&t[1]===this._oldSelectionEnd[1]||this._fireOnSelectionChange(e,t,i)):this._oldHasSelection&&this._fireOnSelectionChange(e,t,i)}_fireOnSelectionChange(e,t,i){this._oldSelectionStart=e,this._oldSelectionEnd=t,this._oldHasSelection=i,this._onSelectionChange.fire()}_handleBufferActivate(e){this.clearSelection(),this._trimListener.dispose(),this._trimListener=e.activeBuffer.lines.onTrim((e=>this._handleTrim(e)))}_convertViewportColToCharacterIndex(e,t){let i=t;for(let s=0;t>=s;s++){const r=e.loadCell(s,this._workCell).getChars().length;0===this._workCell.getWidth()?i--:r>1&&t!==s&&(i+=r-1)}return i}setSelection(e,t,i){this._model.clearSelection(),this._removeMouseDownListeners(),this._model.selectionStart=[e,t],this._model.selectionStartLength=i,this.refresh(),this._fireEventIfSelectionChanged()}rightClickSelect(e){this._isClickInSelection(e)||(this._selectWordAtCursor(e,!1)&&this.refresh(!0),this._fireEventIfSelectionChanged())}_getWordAt(e,t,i=!0,s=!0){if(e[0]>=this._bufferService.cols)return;const r=this._bufferService.buffer,n=r.lines.get(e[1]);if(!n)return;const o=r.translateBufferLineToString(e[1],!1);let a=this._convertViewportColToCharacterIndex(n,e[0]),h=a;const c=e[0]-a;let l=0,d=0,_=0,u=0;if(" "===o.charAt(a)){for(;a>0&&" "===o.charAt(a-1);)a--;for(;h1&&(u+=s-1,h+=s-1);t>0&&a>0&&!this._isCharWordSeparator(n.loadCell(t-1,this._workCell));){n.loadCell(t-1,this._workCell);const e=this._workCell.getChars().length;0===this._workCell.getWidth()?(l++,t--):e>1&&(_+=e-1,a-=e-1),a--,t--}for(;i1&&(u+=e-1,h+=e-1),h++,i++}}h++;let f=a+c-l+_,v=Math.min(this._bufferService.cols,h-a+l+d-_-u);if(t||""!==o.slice(a,h).trim()){if(i&&0===f&&32!==n.getCodePoint(0)){const t=r.lines.get(e[1]-1);if(t&&n.isWrapped&&32!==t.getCodePoint(this._bufferService.cols-1)){const t=this._getWordAt([this._bufferService.cols-1,e[1]-1],!1,!0,!1);if(t){const e=this._bufferService.cols-t.start;f-=e,v+=e}}}if(s&&f+v===this._bufferService.cols&&32!==n.getCodePoint(this._bufferService.cols-1)){const t=r.lines.get(e[1]+1);if((null==t?void 0:t.isWrapped)&&32!==t.getCodePoint(0)){const t=this._getWordAt([0,e[1]+1],!1,!1,!0);t&&(v+=t.length)}}return{start:f,length:v}}}_selectWordAt(e,t){const i=this._getWordAt(e,t);if(i){for(;i.start<0;)i.start+=this._bufferService.cols,e[1]--;this._model.selectionStart=[i.start,e[1]],this._model.selectionStartLength=i.length}}_selectToWordAt(e){const t=this._getWordAt(e,!0);if(t){let i=e[1];for(;t.start<0;)t.start+=this._bufferService.cols,i--;if(!this._model.areSelectionValuesReversed())for(;t.start+t.length>this._bufferService.cols;)t.length-=this._bufferService.cols,i++;this._model.selectionEnd=[this._model.areSelectionValuesReversed()?t.start:t.start+t.length,i]}}_isCharWordSeparator(e){return 0!==e.getWidth()&&this._optionsService.rawOptions.wordSeparator.indexOf(e.getChars())>=0}_selectLineAt(e){const t=this._bufferService.buffer.getWrappedRangeForLine(e),i={start:{x:0,y:t.first},end:{x:this._bufferService.cols-1,y:t.last}};this._model.selectionStart=[0,t.first],this._model.selectionEnd=void 0,this._model.selectionStartLength=(0,f.getRangeLength)(i,this._bufferService.cols)}};p=s([r(3,l.IBufferService),r(4,l.ICoreService),r(5,c.IMouseService),r(6,l.IOptionsService),r(7,c.IRenderService),r(8,c.ICoreBrowserService)],p),t.SelectionService=p},4725:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.IThemeService=t.ICharacterJoinerService=t.ISelectionService=t.IRenderService=t.IMouseService=t.ICoreBrowserService=t.ICharSizeService=void 0;const s=i(8343);t.ICharSizeService=(0,s.createDecorator)("CharSizeService"),t.ICoreBrowserService=(0,s.createDecorator)("CoreBrowserService"),t.IMouseService=(0,s.createDecorator)("MouseService"),t.IRenderService=(0,s.createDecorator)("RenderService"),t.ISelectionService=(0,s.createDecorator)("SelectionService"),t.ICharacterJoinerService=(0,s.createDecorator)("CharacterJoinerService"),t.IThemeService=(0,s.createDecorator)("ThemeService")},6731:function(e,t,i){var s=this&&this.__decorate||function(e,t,i,s){var r,n=arguments.length,o=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,i):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,s);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(n<3?r(o):n>3?r(t,i,o):r(t,i))||o);return n>3&&o&&Object.defineProperty(t,i,o),o},r=this&&this.__param||function(e,t){return function(i,s){t(i,s,e)}};Object.defineProperty(t,"__esModule",{value:!0}),t.ThemeService=t.DEFAULT_ANSI_COLORS=void 0;const n=i(7239),o=i(8055),a=i(8460),h=i(844),c=i(2585),l=o.css.toColor("#ffffff"),d=o.css.toColor("#000000"),_=o.css.toColor("#ffffff"),u=o.css.toColor("#000000"),f={css:"rgba(255, 255, 255, 0.3)",rgba:4294967117};t.DEFAULT_ANSI_COLORS=Object.freeze((()=>{const e=[o.css.toColor("#2e3436"),o.css.toColor("#cc0000"),o.css.toColor("#4e9a06"),o.css.toColor("#c4a000"),o.css.toColor("#3465a4"),o.css.toColor("#75507b"),o.css.toColor("#06989a"),o.css.toColor("#d3d7cf"),o.css.toColor("#555753"),o.css.toColor("#ef2929"),o.css.toColor("#8ae234"),o.css.toColor("#fce94f"),o.css.toColor("#729fcf"),o.css.toColor("#ad7fa8"),o.css.toColor("#34e2e2"),o.css.toColor("#eeeeec")],t=[0,95,135,175,215,255];for(let i=0;i<216;i++){const s=t[i/36%6|0],r=t[i/6%6|0],n=t[i%6];e.push({css:o.channels.toCss(s,r,n),rgba:o.channels.toRgba(s,r,n)})}for(let t=0;t<24;t++){const i=8+10*t;e.push({css:o.channels.toCss(i,i,i),rgba:o.channels.toRgba(i,i,i)})}return e})());let v=class extends h.Disposable{constructor(e){super(),this._optionsService=e,this._onChangeColors=this.register(new a.EventEmitter),this.onChangeColors=this._onChangeColors.event,this._contrastCache=new n.ColorContrastCache,this._colors={foreground:l,background:d,cursor:_,cursorAccent:u,selectionForeground:void 0,selectionBackgroundTransparent:f,selectionBackgroundOpaque:o.color.blend(d,f),selectionInactiveBackgroundTransparent:f,selectionInactiveBackgroundOpaque:o.color.blend(d,f),ansi:t.DEFAULT_ANSI_COLORS.slice(),contrastCache:this._contrastCache},this._updateRestoreColors(),this._setTheme(this._optionsService.rawOptions.theme),this.register(this._optionsService.onSpecificOptionChange("minimumContrastRatio",(()=>this._contrastCache.clear()))),this.register(this._optionsService.onSpecificOptionChange("theme",(()=>this._setTheme(this._optionsService.rawOptions.theme))))}get colors(){return this._colors}_setTheme(e={}){const i=this._colors;if(i.foreground=g(e.foreground,l),i.background=g(e.background,d),i.cursor=g(e.cursor,_),i.cursorAccent=g(e.cursorAccent,u),i.selectionBackgroundTransparent=g(e.selectionBackground,f),i.selectionBackgroundOpaque=o.color.blend(i.background,i.selectionBackgroundTransparent),i.selectionInactiveBackgroundTransparent=g(e.selectionInactiveBackground,i.selectionBackgroundTransparent),i.selectionInactiveBackgroundOpaque=o.color.blend(i.background,i.selectionInactiveBackgroundTransparent),i.selectionForeground=e.selectionForeground?g(e.selectionForeground,o.NULL_COLOR):void 0,i.selectionForeground===o.NULL_COLOR&&(i.selectionForeground=void 0),o.color.isOpaque(i.selectionBackgroundTransparent)){const e=.3;i.selectionBackgroundTransparent=o.color.opacity(i.selectionBackgroundTransparent,e)}if(o.color.isOpaque(i.selectionInactiveBackgroundTransparent)){const e=.3;i.selectionInactiveBackgroundTransparent=o.color.opacity(i.selectionInactiveBackgroundTransparent,e)}if(i.ansi=t.DEFAULT_ANSI_COLORS.slice(),i.ansi[0]=g(e.black,t.DEFAULT_ANSI_COLORS[0]),i.ansi[1]=g(e.red,t.DEFAULT_ANSI_COLORS[1]),i.ansi[2]=g(e.green,t.DEFAULT_ANSI_COLORS[2]),i.ansi[3]=g(e.yellow,t.DEFAULT_ANSI_COLORS[3]),i.ansi[4]=g(e.blue,t.DEFAULT_ANSI_COLORS[4]),i.ansi[5]=g(e.magenta,t.DEFAULT_ANSI_COLORS[5]),i.ansi[6]=g(e.cyan,t.DEFAULT_ANSI_COLORS[6]),i.ansi[7]=g(e.white,t.DEFAULT_ANSI_COLORS[7]),i.ansi[8]=g(e.brightBlack,t.DEFAULT_ANSI_COLORS[8]),i.ansi[9]=g(e.brightRed,t.DEFAULT_ANSI_COLORS[9]),i.ansi[10]=g(e.brightGreen,t.DEFAULT_ANSI_COLORS[10]),i.ansi[11]=g(e.brightYellow,t.DEFAULT_ANSI_COLORS[11]),i.ansi[12]=g(e.brightBlue,t.DEFAULT_ANSI_COLORS[12]),i.ansi[13]=g(e.brightMagenta,t.DEFAULT_ANSI_COLORS[13]),i.ansi[14]=g(e.brightCyan,t.DEFAULT_ANSI_COLORS[14]),i.ansi[15]=g(e.brightWhite,t.DEFAULT_ANSI_COLORS[15]),e.extendedAnsi){const s=Math.min(i.ansi.length-16,e.extendedAnsi.length);for(let r=0;r{Object.defineProperty(t,"__esModule",{value:!0}),t.CircularList=void 0;const s=i(8460),r=i(844);class n extends r.Disposable{constructor(e){super(),this._maxLength=e,this.onDeleteEmitter=this.register(new s.EventEmitter),this.onDelete=this.onDeleteEmitter.event,this.onInsertEmitter=this.register(new s.EventEmitter),this.onInsert=this.onInsertEmitter.event,this.onTrimEmitter=this.register(new s.EventEmitter),this.onTrim=this.onTrimEmitter.event,this._array=new Array(this._maxLength),this._startIndex=0,this._length=0}get maxLength(){return this._maxLength}set maxLength(e){if(this._maxLength===e)return;const t=new Array(e);for(let i=0;ithis._length)for(let t=this._length;t=e;t--)this._array[this._getCyclicIndex(t+i.length)]=this._array[this._getCyclicIndex(t)];for(let t=0;tthis._maxLength){const e=this._length+i.length-this._maxLength;this._startIndex+=e,this._length=this._maxLength,this.onTrimEmitter.fire(e)}else this._length+=i.length}trimStart(e){e>this._length&&(e=this._length),this._startIndex+=e,this._length-=e,this.onTrimEmitter.fire(e)}shiftElements(e,t,i){if(!(t<=0)){if(e<0||e>=this._length)throw new Error("start argument out of range");if(e+i<0)throw new Error("Cannot shift elements in list beyond index 0");if(i>0){for(let s=t-1;s>=0;s--)this.set(e+s+i,this.get(e+s));const s=e+t+i-this._length;if(s>0)for(this._length+=s;this._length>this._maxLength;)this._length--,this._startIndex++,this.onTrimEmitter.fire(1)}else for(let s=0;s{Object.defineProperty(t,"__esModule",{value:!0}),t.clone=void 0,t.clone=function e(t,i=5){if("object"!=typeof t)return t;const s=Array.isArray(t)?[]:{};for(const r in t)s[r]=i<=1?t[r]:t[r]&&e(t[r],i-1);return s}},8055:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.contrastRatio=t.toPaddedHex=t.rgba=t.rgb=t.css=t.color=t.channels=t.NULL_COLOR=void 0;const s=i(6114);let r=0,n=0,o=0,a=0;var h,c,l;function d(e){const t=e.toString(16);return t.length<2?"0"+t:t}function _(e,t){return e>>0}}(h=t.channels||(t.channels={})),function(e){function t(e,t){return a=Math.round(255*t),[r,n,o]=l.toChannels(e.rgba),{css:h.toCss(r,n,o,a),rgba:h.toRgba(r,n,o,a)}}e.blend=function(e,t){if(a=(255&t.rgba)/255,1===a)return{css:t.css,rgba:t.rgba};const i=t.rgba>>24&255,s=t.rgba>>16&255,c=t.rgba>>8&255,l=e.rgba>>24&255,d=e.rgba>>16&255,_=e.rgba>>8&255;return r=l+Math.round((i-l)*a),n=d+Math.round((s-d)*a),o=_+Math.round((c-_)*a),{css:h.toCss(r,n,o),rgba:h.toRgba(r,n,o)}},e.isOpaque=function(e){return 255==(255&e.rgba)},e.ensureContrastRatio=function(e,t,i){const s=l.ensureContrastRatio(e.rgba,t.rgba,i);if(s)return l.toColor(s>>24&255,s>>16&255,s>>8&255)},e.opaque=function(e){const t=(255|e.rgba)>>>0;return[r,n,o]=l.toChannels(t),{css:h.toCss(r,n,o),rgba:t}},e.opacity=t,e.multiplyOpacity=function(e,i){return a=255&e.rgba,t(e,a*i/255)},e.toColorRGB=function(e){return[e.rgba>>24&255,e.rgba>>16&255,e.rgba>>8&255]}}(t.color||(t.color={})),function(e){let t,i;if(!s.isNode){const e=document.createElement("canvas");e.width=1,e.height=1;const s=e.getContext("2d",{willReadFrequently:!0});s&&(t=s,t.globalCompositeOperation="copy",i=t.createLinearGradient(0,0,1,1))}e.toColor=function(e){if(e.match(/#[\da-f]{3,8}/i))switch(e.length){case 4:return r=parseInt(e.slice(1,2).repeat(2),16),n=parseInt(e.slice(2,3).repeat(2),16),o=parseInt(e.slice(3,4).repeat(2),16),l.toColor(r,n,o);case 5:return r=parseInt(e.slice(1,2).repeat(2),16),n=parseInt(e.slice(2,3).repeat(2),16),o=parseInt(e.slice(3,4).repeat(2),16),a=parseInt(e.slice(4,5).repeat(2),16),l.toColor(r,n,o,a);case 7:return{css:e,rgba:(parseInt(e.slice(1),16)<<8|255)>>>0};case 9:return{css:e,rgba:parseInt(e.slice(1),16)>>>0}}const s=e.match(/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(,\s*(0|1|\d?\.(\d+))\s*)?\)/);if(s)return r=parseInt(s[1]),n=parseInt(s[2]),o=parseInt(s[3]),a=Math.round(255*(void 0===s[5]?1:parseFloat(s[5]))),l.toColor(r,n,o,a);if(!t||!i)throw new Error("css.toColor: Unsupported css format");if(t.fillStyle=i,t.fillStyle=e,"string"!=typeof t.fillStyle)throw new Error("css.toColor: Unsupported css format");if(t.fillRect(0,0,1,1),[r,n,o,a]=t.getImageData(0,0,1,1).data,255!==a)throw new Error("css.toColor: Unsupported css format");return{rgba:h.toRgba(r,n,o,a),css:e}}}(t.css||(t.css={})),function(e){function t(e,t,i){const s=e/255,r=t/255,n=i/255;return.2126*(s<=.03928?s/12.92:Math.pow((s+.055)/1.055,2.4))+.7152*(r<=.03928?r/12.92:Math.pow((r+.055)/1.055,2.4))+.0722*(n<=.03928?n/12.92:Math.pow((n+.055)/1.055,2.4))}e.relativeLuminance=function(e){return t(e>>16&255,e>>8&255,255&e)},e.relativeLuminance2=t}(c=t.rgb||(t.rgb={})),function(e){function t(e,t,i){const s=e>>24&255,r=e>>16&255,n=e>>8&255;let o=t>>24&255,a=t>>16&255,h=t>>8&255,l=_(c.relativeLuminance2(o,a,h),c.relativeLuminance2(s,r,n));for(;l0||a>0||h>0);)o-=Math.max(0,Math.ceil(.1*o)),a-=Math.max(0,Math.ceil(.1*a)),h-=Math.max(0,Math.ceil(.1*h)),l=_(c.relativeLuminance2(o,a,h),c.relativeLuminance2(s,r,n));return(o<<24|a<<16|h<<8|255)>>>0}function i(e,t,i){const s=e>>24&255,r=e>>16&255,n=e>>8&255;let o=t>>24&255,a=t>>16&255,h=t>>8&255,l=_(c.relativeLuminance2(o,a,h),c.relativeLuminance2(s,r,n));for(;l>>0}e.ensureContrastRatio=function(e,s,r){const n=c.relativeLuminance(e>>8),o=c.relativeLuminance(s>>8);if(_(n,o)>8));if(a_(n,c.relativeLuminance(t>>8))?o:t}return o}const a=i(e,s,r),h=_(n,c.relativeLuminance(a>>8));if(h_(n,c.relativeLuminance(i>>8))?a:i}return a}},e.reduceLuminance=t,e.increaseLuminance=i,e.toChannels=function(e){return[e>>24&255,e>>16&255,e>>8&255,255&e]},e.toColor=function(e,t,i,s){return{css:h.toCss(e,t,i,s),rgba:h.toRgba(e,t,i,s)}}}(l=t.rgba||(t.rgba={})),t.toPaddedHex=d,t.contrastRatio=_},8969:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.CoreTerminal=void 0;const s=i(844),r=i(2585),n=i(4348),o=i(7866),a=i(744),h=i(7302),c=i(6975),l=i(8460),d=i(1753),_=i(1480),u=i(7994),f=i(9282),v=i(5435),g=i(5981),p=i(2660);let S=!1;class m extends s.Disposable{constructor(e){super(),this._onBinary=this.register(new l.EventEmitter),this.onBinary=this._onBinary.event,this._onData=this.register(new l.EventEmitter),this.onData=this._onData.event,this._onLineFeed=this.register(new l.EventEmitter),this.onLineFeed=this._onLineFeed.event,this._onResize=this.register(new l.EventEmitter),this.onResize=this._onResize.event,this._onWriteParsed=this.register(new l.EventEmitter),this.onWriteParsed=this._onWriteParsed.event,this._onScroll=this.register(new l.EventEmitter),this._instantiationService=new n.InstantiationService,this.optionsService=this.register(new h.OptionsService(e)),this._instantiationService.setService(r.IOptionsService,this.optionsService),this._bufferService=this.register(this._instantiationService.createInstance(a.BufferService)),this._instantiationService.setService(r.IBufferService,this._bufferService),this._logService=this.register(this._instantiationService.createInstance(o.LogService)),this._instantiationService.setService(r.ILogService,this._logService),this.coreService=this.register(this._instantiationService.createInstance(c.CoreService)),this._instantiationService.setService(r.ICoreService,this.coreService),this.coreMouseService=this.register(this._instantiationService.createInstance(d.CoreMouseService)),this._instantiationService.setService(r.ICoreMouseService,this.coreMouseService),this.unicodeService=this.register(this._instantiationService.createInstance(_.UnicodeService)),this._instantiationService.setService(r.IUnicodeService,this.unicodeService),this._charsetService=this._instantiationService.createInstance(u.CharsetService),this._instantiationService.setService(r.ICharsetService,this._charsetService),this._oscLinkService=this._instantiationService.createInstance(p.OscLinkService),this._instantiationService.setService(r.IOscLinkService,this._oscLinkService),this._inputHandler=this.register(new v.InputHandler(this._bufferService,this._charsetService,this.coreService,this._logService,this.optionsService,this._oscLinkService,this.coreMouseService,this.unicodeService)),this.register((0,l.forwardEvent)(this._inputHandler.onLineFeed,this._onLineFeed)),this.register(this._inputHandler),this.register((0,l.forwardEvent)(this._bufferService.onResize,this._onResize)),this.register((0,l.forwardEvent)(this.coreService.onData,this._onData)),this.register((0,l.forwardEvent)(this.coreService.onBinary,this._onBinary)),this.register(this.coreService.onRequestScrollToBottom((()=>this.scrollToBottom()))),this.register(this.coreService.onUserInput((()=>this._writeBuffer.handleUserInput()))),this.register(this.optionsService.onMultipleOptionChange(["windowsMode","windowsPty"],(()=>this._handleWindowsPtyOptionChange()))),this.register(this._bufferService.onScroll((e=>{this._onScroll.fire({position:this._bufferService.buffer.ydisp,source:0}),this._inputHandler.markRangeDirty(this._bufferService.buffer.scrollTop,this._bufferService.buffer.scrollBottom)}))),this.register(this._inputHandler.onScroll((e=>{this._onScroll.fire({position:this._bufferService.buffer.ydisp,source:0}),this._inputHandler.markRangeDirty(this._bufferService.buffer.scrollTop,this._bufferService.buffer.scrollBottom)}))),this._writeBuffer=this.register(new g.WriteBuffer(((e,t)=>this._inputHandler.parse(e,t)))),this.register((0,l.forwardEvent)(this._writeBuffer.onWriteParsed,this._onWriteParsed)),this.register((0,s.toDisposable)((()=>{var e;null===(e=this._windowsWrappingHeuristics)||void 0===e||e.dispose(),this._windowsWrappingHeuristics=void 0})))}get onScroll(){return this._onScrollApi||(this._onScrollApi=this.register(new l.EventEmitter),this._onScroll.event((e=>{var t;null===(t=this._onScrollApi)||void 0===t||t.fire(e.position)}))),this._onScrollApi.event}get cols(){return this._bufferService.cols}get rows(){return this._bufferService.rows}get buffers(){return this._bufferService.buffers}get options(){return this.optionsService.options}set options(e){for(const t in e)this.optionsService.options[t]=e[t]}write(e,t){this._writeBuffer.write(e,t)}writeSync(e,t){this._logService.logLevel<=r.LogLevelEnum.WARN&&!S&&(this._logService.warn("writeSync is unreliable and will be removed soon."),S=!0),this._writeBuffer.writeSync(e,t)}resize(e,t){isNaN(e)||isNaN(t)||(e=Math.max(e,a.MINIMUM_COLS),t=Math.max(t,a.MINIMUM_ROWS),this._bufferService.resize(e,t))}scroll(e,t=!1){this._bufferService.scroll(e,t)}scrollLines(e,t,i){this._bufferService.scrollLines(e,t,i)}scrollPages(e){this._bufferService.scrollPages(e)}scrollToTop(){this._bufferService.scrollToTop()}scrollToBottom(){this._bufferService.scrollToBottom()}scrollToLine(e){this._bufferService.scrollToLine(e)}registerEscHandler(e,t){return this._inputHandler.registerEscHandler(e,t)}registerDcsHandler(e,t){return this._inputHandler.registerDcsHandler(e,t)}registerCsiHandler(e,t){return this._inputHandler.registerCsiHandler(e,t)}registerOscHandler(e,t){return this._inputHandler.registerOscHandler(e,t)}_setup(){this._handleWindowsPtyOptionChange()}reset(){this._inputHandler.reset(),this._bufferService.reset(),this._charsetService.reset(),this.coreService.reset(),this.coreMouseService.reset()}_handleWindowsPtyOptionChange(){var e;let t=!1;const i=this.optionsService.rawOptions.windowsPty;i&&void 0!==i.buildNumber&&void 0!==i.buildNumber?t=!!("conpty"===i.backend&&i.buildNumber<21376):this.optionsService.rawOptions.windowsMode&&(t=!0),t?this._enableWindowsWrappingHeuristics():(null===(e=this._windowsWrappingHeuristics)||void 0===e||e.dispose(),this._windowsWrappingHeuristics=void 0)}_enableWindowsWrappingHeuristics(){if(!this._windowsWrappingHeuristics){const e=[];e.push(this.onLineFeed(f.updateWindowsModeWrappedState.bind(null,this._bufferService))),e.push(this.registerCsiHandler({final:"H"},(()=>((0,f.updateWindowsModeWrappedState)(this._bufferService),!1)))),this._windowsWrappingHeuristics=(0,s.toDisposable)((()=>{for(const t of e)t.dispose()}))}}}t.CoreTerminal=m},8460:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.forwardEvent=t.EventEmitter=void 0,t.EventEmitter=class{constructor(){this._listeners=[],this._disposed=!1}get event(){return this._event||(this._event=e=>(this._listeners.push(e),{dispose:()=>{if(!this._disposed)for(let t=0;tt.fire(e)))}},5435:function(e,t,i){var s=this&&this.__decorate||function(e,t,i,s){var r,n=arguments.length,o=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,i):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,s);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(n<3?r(o):n>3?r(t,i,o):r(t,i))||o);return n>3&&o&&Object.defineProperty(t,i,o),o},r=this&&this.__param||function(e,t){return function(i,s){t(i,s,e)}};Object.defineProperty(t,"__esModule",{value:!0}),t.InputHandler=t.WindowsOptionsReportType=void 0;const n=i(2584),o=i(7116),a=i(2015),h=i(844),c=i(482),l=i(8437),d=i(8460),_=i(643),u=i(511),f=i(3734),v=i(2585),g=i(6242),p=i(6351),S=i(5941),m={"(":0,")":1,"*":2,"+":3,"-":1,".":2},C=131072;function b(e,t){if(e>24)return t.setWinLines||!1;switch(e){case 1:return!!t.restoreWin;case 2:return!!t.minimizeWin;case 3:return!!t.setWinPosition;case 4:return!!t.setWinSizePixels;case 5:return!!t.raiseWin;case 6:return!!t.lowerWin;case 7:return!!t.refreshWin;case 8:return!!t.setWinSizeChars;case 9:return!!t.maximizeWin;case 10:return!!t.fullscreenWin;case 11:return!!t.getWinState;case 13:return!!t.getWinPosition;case 14:return!!t.getWinSizePixels;case 15:return!!t.getScreenSizePixels;case 16:return!!t.getCellSizePixels;case 18:return!!t.getWinSizeChars;case 19:return!!t.getScreenSizeChars;case 20:return!!t.getIconTitle;case 21:return!!t.getWinTitle;case 22:return!!t.pushTitle;case 23:return!!t.popTitle;case 24:return!!t.setWinLines}return!1}var y;!function(e){e[e.GET_WIN_SIZE_PIXELS=0]="GET_WIN_SIZE_PIXELS",e[e.GET_CELL_SIZE_PIXELS=1]="GET_CELL_SIZE_PIXELS"}(y=t.WindowsOptionsReportType||(t.WindowsOptionsReportType={}));let w=0;class E extends h.Disposable{constructor(e,t,i,s,r,h,_,f,v=new a.EscapeSequenceParser){super(),this._bufferService=e,this._charsetService=t,this._coreService=i,this._logService=s,this._optionsService=r,this._oscLinkService=h,this._coreMouseService=_,this._unicodeService=f,this._parser=v,this._parseBuffer=new Uint32Array(4096),this._stringDecoder=new c.StringToUtf32,this._utf8Decoder=new c.Utf8ToUtf32,this._workCell=new u.CellData,this._windowTitle="",this._iconName="",this._windowTitleStack=[],this._iconNameStack=[],this._curAttrData=l.DEFAULT_ATTR_DATA.clone(),this._eraseAttrDataInternal=l.DEFAULT_ATTR_DATA.clone(),this._onRequestBell=this.register(new d.EventEmitter),this.onRequestBell=this._onRequestBell.event,this._onRequestRefreshRows=this.register(new d.EventEmitter),this.onRequestRefreshRows=this._onRequestRefreshRows.event,this._onRequestReset=this.register(new d.EventEmitter),this.onRequestReset=this._onRequestReset.event,this._onRequestSendFocus=this.register(new d.EventEmitter),this.onRequestSendFocus=this._onRequestSendFocus.event,this._onRequestSyncScrollBar=this.register(new d.EventEmitter),this.onRequestSyncScrollBar=this._onRequestSyncScrollBar.event,this._onRequestWindowsOptionsReport=this.register(new d.EventEmitter),this.onRequestWindowsOptionsReport=this._onRequestWindowsOptionsReport.event,this._onA11yChar=this.register(new d.EventEmitter),this.onA11yChar=this._onA11yChar.event,this._onA11yTab=this.register(new d.EventEmitter),this.onA11yTab=this._onA11yTab.event,this._onCursorMove=this.register(new d.EventEmitter),this.onCursorMove=this._onCursorMove.event,this._onLineFeed=this.register(new d.EventEmitter),this.onLineFeed=this._onLineFeed.event,this._onScroll=this.register(new d.EventEmitter),this.onScroll=this._onScroll.event,this._onTitleChange=this.register(new d.EventEmitter),this.onTitleChange=this._onTitleChange.event,this._onColor=this.register(new d.EventEmitter),this.onColor=this._onColor.event,this._parseStack={paused:!1,cursorStartX:0,cursorStartY:0,decodedLength:0,position:0},this._specialColors=[256,257,258],this.register(this._parser),this._dirtyRowTracker=new L(this._bufferService),this._activeBuffer=this._bufferService.buffer,this.register(this._bufferService.buffers.onBufferActivate((e=>this._activeBuffer=e.activeBuffer))),this._parser.setCsiHandlerFallback(((e,t)=>{this._logService.debug("Unknown CSI code: ",{identifier:this._parser.identToString(e),params:t.toArray()})})),this._parser.setEscHandlerFallback((e=>{this._logService.debug("Unknown ESC code: ",{identifier:this._parser.identToString(e)})})),this._parser.setExecuteHandlerFallback((e=>{this._logService.debug("Unknown EXECUTE code: ",{code:e})})),this._parser.setOscHandlerFallback(((e,t,i)=>{this._logService.debug("Unknown OSC code: ",{identifier:e,action:t,data:i})})),this._parser.setDcsHandlerFallback(((e,t,i)=>{"HOOK"===t&&(i=i.toArray()),this._logService.debug("Unknown DCS code: ",{identifier:this._parser.identToString(e),action:t,payload:i})})),this._parser.setPrintHandler(((e,t,i)=>this.print(e,t,i))),this._parser.registerCsiHandler({final:"@"},(e=>this.insertChars(e))),this._parser.registerCsiHandler({intermediates:" ",final:"@"},(e=>this.scrollLeft(e))),this._parser.registerCsiHandler({final:"A"},(e=>this.cursorUp(e))),this._parser.registerCsiHandler({intermediates:" ",final:"A"},(e=>this.scrollRight(e))),this._parser.registerCsiHandler({final:"B"},(e=>this.cursorDown(e))),this._parser.registerCsiHandler({final:"C"},(e=>this.cursorForward(e))),this._parser.registerCsiHandler({final:"D"},(e=>this.cursorBackward(e))),this._parser.registerCsiHandler({final:"E"},(e=>this.cursorNextLine(e))),this._parser.registerCsiHandler({final:"F"},(e=>this.cursorPrecedingLine(e))),this._parser.registerCsiHandler({final:"G"},(e=>this.cursorCharAbsolute(e))),this._parser.registerCsiHandler({final:"H"},(e=>this.cursorPosition(e))),this._parser.registerCsiHandler({final:"I"},(e=>this.cursorForwardTab(e))),this._parser.registerCsiHandler({final:"J"},(e=>this.eraseInDisplay(e,!1))),this._parser.registerCsiHandler({prefix:"?",final:"J"},(e=>this.eraseInDisplay(e,!0))),this._parser.registerCsiHandler({final:"K"},(e=>this.eraseInLine(e,!1))),this._parser.registerCsiHandler({prefix:"?",final:"K"},(e=>this.eraseInLine(e,!0))),this._parser.registerCsiHandler({final:"L"},(e=>this.insertLines(e))),this._parser.registerCsiHandler({final:"M"},(e=>this.deleteLines(e))),this._parser.registerCsiHandler({final:"P"},(e=>this.deleteChars(e))),this._parser.registerCsiHandler({final:"S"},(e=>this.scrollUp(e))),this._parser.registerCsiHandler({final:"T"},(e=>this.scrollDown(e))),this._parser.registerCsiHandler({final:"X"},(e=>this.eraseChars(e))),this._parser.registerCsiHandler({final:"Z"},(e=>this.cursorBackwardTab(e))),this._parser.registerCsiHandler({final:"`"},(e=>this.charPosAbsolute(e))),this._parser.registerCsiHandler({final:"a"},(e=>this.hPositionRelative(e))),this._parser.registerCsiHandler({final:"b"},(e=>this.repeatPrecedingCharacter(e))),this._parser.registerCsiHandler({final:"c"},(e=>this.sendDeviceAttributesPrimary(e))),this._parser.registerCsiHandler({prefix:">",final:"c"},(e=>this.sendDeviceAttributesSecondary(e))),this._parser.registerCsiHandler({final:"d"},(e=>this.linePosAbsolute(e))),this._parser.registerCsiHandler({final:"e"},(e=>this.vPositionRelative(e))),this._parser.registerCsiHandler({final:"f"},(e=>this.hVPosition(e))),this._parser.registerCsiHandler({final:"g"},(e=>this.tabClear(e))),this._parser.registerCsiHandler({final:"h"},(e=>this.setMode(e))),this._parser.registerCsiHandler({prefix:"?",final:"h"},(e=>this.setModePrivate(e))),this._parser.registerCsiHandler({final:"l"},(e=>this.resetMode(e))),this._parser.registerCsiHandler({prefix:"?",final:"l"},(e=>this.resetModePrivate(e))),this._parser.registerCsiHandler({final:"m"},(e=>this.charAttributes(e))),this._parser.registerCsiHandler({final:"n"},(e=>this.deviceStatus(e))),this._parser.registerCsiHandler({prefix:"?",final:"n"},(e=>this.deviceStatusPrivate(e))),this._parser.registerCsiHandler({intermediates:"!",final:"p"},(e=>this.softReset(e))),this._parser.registerCsiHandler({intermediates:" ",final:"q"},(e=>this.setCursorStyle(e))),this._parser.registerCsiHandler({final:"r"},(e=>this.setScrollRegion(e))),this._parser.registerCsiHandler({final:"s"},(e=>this.saveCursor(e))),this._parser.registerCsiHandler({final:"t"},(e=>this.windowOptions(e))),this._parser.registerCsiHandler({final:"u"},(e=>this.restoreCursor(e))),this._parser.registerCsiHandler({intermediates:"'",final:"}"},(e=>this.insertColumns(e))),this._parser.registerCsiHandler({intermediates:"'",final:"~"},(e=>this.deleteColumns(e))),this._parser.registerCsiHandler({intermediates:'"',final:"q"},(e=>this.selectProtected(e))),this._parser.registerCsiHandler({intermediates:"$",final:"p"},(e=>this.requestMode(e,!0))),this._parser.registerCsiHandler({prefix:"?",intermediates:"$",final:"p"},(e=>this.requestMode(e,!1))),this._parser.setExecuteHandler(n.C0.BEL,(()=>this.bell())),this._parser.setExecuteHandler(n.C0.LF,(()=>this.lineFeed())),this._parser.setExecuteHandler(n.C0.VT,(()=>this.lineFeed())),this._parser.setExecuteHandler(n.C0.FF,(()=>this.lineFeed())),this._parser.setExecuteHandler(n.C0.CR,(()=>this.carriageReturn())),this._parser.setExecuteHandler(n.C0.BS,(()=>this.backspace())),this._parser.setExecuteHandler(n.C0.HT,(()=>this.tab())),this._parser.setExecuteHandler(n.C0.SO,(()=>this.shiftOut())),this._parser.setExecuteHandler(n.C0.SI,(()=>this.shiftIn())),this._parser.setExecuteHandler(n.C1.IND,(()=>this.index())),this._parser.setExecuteHandler(n.C1.NEL,(()=>this.nextLine())),this._parser.setExecuteHandler(n.C1.HTS,(()=>this.tabSet())),this._parser.registerOscHandler(0,new g.OscHandler((e=>(this.setTitle(e),this.setIconName(e),!0)))),this._parser.registerOscHandler(1,new g.OscHandler((e=>this.setIconName(e)))),this._parser.registerOscHandler(2,new g.OscHandler((e=>this.setTitle(e)))),this._parser.registerOscHandler(4,new g.OscHandler((e=>this.setOrReportIndexedColor(e)))),this._parser.registerOscHandler(8,new g.OscHandler((e=>this.setHyperlink(e)))),this._parser.registerOscHandler(10,new g.OscHandler((e=>this.setOrReportFgColor(e)))),this._parser.registerOscHandler(11,new g.OscHandler((e=>this.setOrReportBgColor(e)))),this._parser.registerOscHandler(12,new g.OscHandler((e=>this.setOrReportCursorColor(e)))),this._parser.registerOscHandler(104,new g.OscHandler((e=>this.restoreIndexedColor(e)))),this._parser.registerOscHandler(110,new g.OscHandler((e=>this.restoreFgColor(e)))),this._parser.registerOscHandler(111,new g.OscHandler((e=>this.restoreBgColor(e)))),this._parser.registerOscHandler(112,new g.OscHandler((e=>this.restoreCursorColor(e)))),this._parser.registerEscHandler({final:"7"},(()=>this.saveCursor())),this._parser.registerEscHandler({final:"8"},(()=>this.restoreCursor())),this._parser.registerEscHandler({final:"D"},(()=>this.index())),this._parser.registerEscHandler({final:"E"},(()=>this.nextLine())),this._parser.registerEscHandler({final:"H"},(()=>this.tabSet())),this._parser.registerEscHandler({final:"M"},(()=>this.reverseIndex())),this._parser.registerEscHandler({final:"="},(()=>this.keypadApplicationMode())),this._parser.registerEscHandler({final:">"},(()=>this.keypadNumericMode())),this._parser.registerEscHandler({final:"c"},(()=>this.fullReset())),this._parser.registerEscHandler({final:"n"},(()=>this.setgLevel(2))),this._parser.registerEscHandler({final:"o"},(()=>this.setgLevel(3))),this._parser.registerEscHandler({final:"|"},(()=>this.setgLevel(3))),this._parser.registerEscHandler({final:"}"},(()=>this.setgLevel(2))),this._parser.registerEscHandler({final:"~"},(()=>this.setgLevel(1))),this._parser.registerEscHandler({intermediates:"%",final:"@"},(()=>this.selectDefaultCharset())),this._parser.registerEscHandler({intermediates:"%",final:"G"},(()=>this.selectDefaultCharset()));for(const e in o.CHARSETS)this._parser.registerEscHandler({intermediates:"(",final:e},(()=>this.selectCharset("("+e))),this._parser.registerEscHandler({intermediates:")",final:e},(()=>this.selectCharset(")"+e))),this._parser.registerEscHandler({intermediates:"*",final:e},(()=>this.selectCharset("*"+e))),this._parser.registerEscHandler({intermediates:"+",final:e},(()=>this.selectCharset("+"+e))),this._parser.registerEscHandler({intermediates:"-",final:e},(()=>this.selectCharset("-"+e))),this._parser.registerEscHandler({intermediates:".",final:e},(()=>this.selectCharset("."+e))),this._parser.registerEscHandler({intermediates:"/",final:e},(()=>this.selectCharset("/"+e)));this._parser.registerEscHandler({intermediates:"#",final:"8"},(()=>this.screenAlignmentPattern())),this._parser.setErrorHandler((e=>(this._logService.error("Parsing error: ",e),e))),this._parser.registerDcsHandler({intermediates:"$",final:"q"},new p.DcsHandler(((e,t)=>this.requestStatusString(e,t))))}getAttrData(){return this._curAttrData}_preserveStack(e,t,i,s){this._parseStack.paused=!0,this._parseStack.cursorStartX=e,this._parseStack.cursorStartY=t,this._parseStack.decodedLength=i,this._parseStack.position=s}_logSlowResolvingAsync(e){this._logService.logLevel<=v.LogLevelEnum.WARN&&Promise.race([e,new Promise(((e,t)=>setTimeout((()=>t("#SLOW_TIMEOUT")),5e3)))]).catch((e=>{if("#SLOW_TIMEOUT"!==e)throw e;console.warn("async parser handler taking longer than 5000 ms")}))}_getCurrentLinkId(){return this._curAttrData.extended.urlId}parse(e,t){let i,s=this._activeBuffer.x,r=this._activeBuffer.y,n=0;const o=this._parseStack.paused;if(o){if(i=this._parser.parse(this._parseBuffer,this._parseStack.decodedLength,t))return this._logSlowResolvingAsync(i),i;s=this._parseStack.cursorStartX,r=this._parseStack.cursorStartY,this._parseStack.paused=!1,e.length>C&&(n=this._parseStack.position+C)}if(this._logService.logLevel<=v.LogLevelEnum.DEBUG&&this._logService.debug("parsing data"+("string"==typeof e?` "${e}"`:` "${Array.prototype.map.call(e,(e=>String.fromCharCode(e))).join("")}"`),"string"==typeof e?e.split("").map((e=>e.charCodeAt(0))):e),this._parseBuffer.lengthC)for(let t=n;t0&&2===u.getWidth(this._activeBuffer.x-1)&&u.setCellFromCodePoint(this._activeBuffer.x-1,0,1,d.fg,d.bg,d.extended);for(let f=t;f=a)if(h){for(;this._activeBuffer.x=this._bufferService.rows&&(this._activeBuffer.y=this._bufferService.rows-1),this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y).isWrapped=!0),u=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y)}else if(this._activeBuffer.x=a-1,2===r)continue;if(l&&(u.insertCells(this._activeBuffer.x,r,this._activeBuffer.getNullCell(d),d),2===u.getWidth(a-1)&&u.setCellFromCodePoint(a-1,_.NULL_CELL_CODE,_.NULL_CELL_WIDTH,d.fg,d.bg,d.extended)),u.setCellFromCodePoint(this._activeBuffer.x++,s,r,d.fg,d.bg,d.extended),r>0)for(;--r;)u.setCellFromCodePoint(this._activeBuffer.x++,0,0,d.fg,d.bg,d.extended)}else u.getWidth(this._activeBuffer.x-1)?u.addCodepointToCell(this._activeBuffer.x-1,s):u.addCodepointToCell(this._activeBuffer.x-2,s)}i-t>0&&(u.loadCell(this._activeBuffer.x-1,this._workCell),2===this._workCell.getWidth()||this._workCell.getCode()>65535?this._parser.precedingCodepoint=0:this._workCell.isCombined()?this._parser.precedingCodepoint=this._workCell.getChars().charCodeAt(0):this._parser.precedingCodepoint=this._workCell.content),this._activeBuffer.x0&&0===u.getWidth(this._activeBuffer.x)&&!u.hasContent(this._activeBuffer.x)&&u.setCellFromCodePoint(this._activeBuffer.x,0,1,d.fg,d.bg,d.extended),this._dirtyRowTracker.markDirty(this._activeBuffer.y)}registerCsiHandler(e,t){return"t"!==e.final||e.prefix||e.intermediates?this._parser.registerCsiHandler(e,t):this._parser.registerCsiHandler(e,(e=>!b(e.params[0],this._optionsService.rawOptions.windowOptions)||t(e)))}registerDcsHandler(e,t){return this._parser.registerDcsHandler(e,new p.DcsHandler(t))}registerEscHandler(e,t){return this._parser.registerEscHandler(e,t)}registerOscHandler(e,t){return this._parser.registerOscHandler(e,new g.OscHandler(t))}bell(){return this._onRequestBell.fire(),!0}lineFeed(){return this._dirtyRowTracker.markDirty(this._activeBuffer.y),this._optionsService.rawOptions.convertEol&&(this._activeBuffer.x=0),this._activeBuffer.y++,this._activeBuffer.y===this._activeBuffer.scrollBottom+1?(this._activeBuffer.y--,this._bufferService.scroll(this._eraseAttrData())):this._activeBuffer.y>=this._bufferService.rows?this._activeBuffer.y=this._bufferService.rows-1:this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y).isWrapped=!1,this._activeBuffer.x>=this._bufferService.cols&&this._activeBuffer.x--,this._dirtyRowTracker.markDirty(this._activeBuffer.y),this._onLineFeed.fire(),!0}carriageReturn(){return this._activeBuffer.x=0,!0}backspace(){var e;if(!this._coreService.decPrivateModes.reverseWraparound)return this._restrictCursor(),this._activeBuffer.x>0&&this._activeBuffer.x--,!0;if(this._restrictCursor(this._bufferService.cols),this._activeBuffer.x>0)this._activeBuffer.x--;else if(0===this._activeBuffer.x&&this._activeBuffer.y>this._activeBuffer.scrollTop&&this._activeBuffer.y<=this._activeBuffer.scrollBottom&&(null===(e=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y))||void 0===e?void 0:e.isWrapped)){this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y).isWrapped=!1,this._activeBuffer.y--,this._activeBuffer.x=this._bufferService.cols-1;const e=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y);e.hasWidth(this._activeBuffer.x)&&!e.hasContent(this._activeBuffer.x)&&this._activeBuffer.x--}return this._restrictCursor(),!0}tab(){if(this._activeBuffer.x>=this._bufferService.cols)return!0;const e=this._activeBuffer.x;return this._activeBuffer.x=this._activeBuffer.nextStop(),this._optionsService.rawOptions.screenReaderMode&&this._onA11yTab.fire(this._activeBuffer.x-e),!0}shiftOut(){return this._charsetService.setgLevel(1),!0}shiftIn(){return this._charsetService.setgLevel(0),!0}_restrictCursor(e=this._bufferService.cols-1){this._activeBuffer.x=Math.min(e,Math.max(0,this._activeBuffer.x)),this._activeBuffer.y=this._coreService.decPrivateModes.origin?Math.min(this._activeBuffer.scrollBottom,Math.max(this._activeBuffer.scrollTop,this._activeBuffer.y)):Math.min(this._bufferService.rows-1,Math.max(0,this._activeBuffer.y)),this._dirtyRowTracker.markDirty(this._activeBuffer.y)}_setCursor(e,t){this._dirtyRowTracker.markDirty(this._activeBuffer.y),this._coreService.decPrivateModes.origin?(this._activeBuffer.x=e,this._activeBuffer.y=this._activeBuffer.scrollTop+t):(this._activeBuffer.x=e,this._activeBuffer.y=t),this._restrictCursor(),this._dirtyRowTracker.markDirty(this._activeBuffer.y)}_moveCursor(e,t){this._restrictCursor(),this._setCursor(this._activeBuffer.x+e,this._activeBuffer.y+t)}cursorUp(e){const t=this._activeBuffer.y-this._activeBuffer.scrollTop;return t>=0?this._moveCursor(0,-Math.min(t,e.params[0]||1)):this._moveCursor(0,-(e.params[0]||1)),!0}cursorDown(e){const t=this._activeBuffer.scrollBottom-this._activeBuffer.y;return t>=0?this._moveCursor(0,Math.min(t,e.params[0]||1)):this._moveCursor(0,e.params[0]||1),!0}cursorForward(e){return this._moveCursor(e.params[0]||1,0),!0}cursorBackward(e){return this._moveCursor(-(e.params[0]||1),0),!0}cursorNextLine(e){return this.cursorDown(e),this._activeBuffer.x=0,!0}cursorPrecedingLine(e){return this.cursorUp(e),this._activeBuffer.x=0,!0}cursorCharAbsolute(e){return this._setCursor((e.params[0]||1)-1,this._activeBuffer.y),!0}cursorPosition(e){return this._setCursor(e.length>=2?(e.params[1]||1)-1:0,(e.params[0]||1)-1),!0}charPosAbsolute(e){return this._setCursor((e.params[0]||1)-1,this._activeBuffer.y),!0}hPositionRelative(e){return this._moveCursor(e.params[0]||1,0),!0}linePosAbsolute(e){return this._setCursor(this._activeBuffer.x,(e.params[0]||1)-1),!0}vPositionRelative(e){return this._moveCursor(0,e.params[0]||1),!0}hVPosition(e){return this.cursorPosition(e),!0}tabClear(e){const t=e.params[0];return 0===t?delete this._activeBuffer.tabs[this._activeBuffer.x]:3===t&&(this._activeBuffer.tabs={}),!0}cursorForwardTab(e){if(this._activeBuffer.x>=this._bufferService.cols)return!0;let t=e.params[0]||1;for(;t--;)this._activeBuffer.x=this._activeBuffer.nextStop();return!0}cursorBackwardTab(e){if(this._activeBuffer.x>=this._bufferService.cols)return!0;let t=e.params[0]||1;for(;t--;)this._activeBuffer.x=this._activeBuffer.prevStop();return!0}selectProtected(e){const t=e.params[0];return 1===t&&(this._curAttrData.bg|=536870912),2!==t&&0!==t||(this._curAttrData.bg&=-536870913),!0}_eraseInBufferLine(e,t,i,s=!1,r=!1){const n=this._activeBuffer.lines.get(this._activeBuffer.ybase+e);n.replaceCells(t,i,this._activeBuffer.getNullCell(this._eraseAttrData()),this._eraseAttrData(),r),s&&(n.isWrapped=!1)}_resetBufferLine(e,t=!1){const i=this._activeBuffer.lines.get(this._activeBuffer.ybase+e);i&&(i.fill(this._activeBuffer.getNullCell(this._eraseAttrData()),t),this._bufferService.buffer.clearMarkers(this._activeBuffer.ybase+e),i.isWrapped=!1)}eraseInDisplay(e,t=!1){let i;switch(this._restrictCursor(this._bufferService.cols),e.params[0]){case 0:for(i=this._activeBuffer.y,this._dirtyRowTracker.markDirty(i),this._eraseInBufferLine(i++,this._activeBuffer.x,this._bufferService.cols,0===this._activeBuffer.x,t);i=this._bufferService.cols&&(this._activeBuffer.lines.get(i+1).isWrapped=!1);i--;)this._resetBufferLine(i,t);this._dirtyRowTracker.markDirty(0);break;case 2:for(i=this._bufferService.rows,this._dirtyRowTracker.markDirty(i-1);i--;)this._resetBufferLine(i,t);this._dirtyRowTracker.markDirty(0);break;case 3:const e=this._activeBuffer.lines.length-this._bufferService.rows;e>0&&(this._activeBuffer.lines.trimStart(e),this._activeBuffer.ybase=Math.max(this._activeBuffer.ybase-e,0),this._activeBuffer.ydisp=Math.max(this._activeBuffer.ydisp-e,0),this._onScroll.fire(0))}return!0}eraseInLine(e,t=!1){switch(this._restrictCursor(this._bufferService.cols),e.params[0]){case 0:this._eraseInBufferLine(this._activeBuffer.y,this._activeBuffer.x,this._bufferService.cols,0===this._activeBuffer.x,t);break;case 1:this._eraseInBufferLine(this._activeBuffer.y,0,this._activeBuffer.x+1,!1,t);break;case 2:this._eraseInBufferLine(this._activeBuffer.y,0,this._bufferService.cols,!0,t)}return this._dirtyRowTracker.markDirty(this._activeBuffer.y),!0}insertLines(e){this._restrictCursor();let t=e.params[0]||1;if(this._activeBuffer.y>this._activeBuffer.scrollBottom||this._activeBuffer.ythis._activeBuffer.scrollBottom||this._activeBuffer.ythis._activeBuffer.scrollBottom||this._activeBuffer.ythis._activeBuffer.scrollBottom||this._activeBuffer.ythis._activeBuffer.scrollBottom||this._activeBuffer.ythis._activeBuffer.scrollBottom||this._activeBuffer.y0||(this._is("xterm")||this._is("rxvt-unicode")||this._is("screen")?this._coreService.triggerDataEvent(n.C0.ESC+"[?1;2c"):this._is("linux")&&this._coreService.triggerDataEvent(n.C0.ESC+"[?6c")),!0}sendDeviceAttributesSecondary(e){return e.params[0]>0||(this._is("xterm")?this._coreService.triggerDataEvent(n.C0.ESC+"[>0;276;0c"):this._is("rxvt-unicode")?this._coreService.triggerDataEvent(n.C0.ESC+"[>85;95;0c"):this._is("linux")?this._coreService.triggerDataEvent(e.params[0]+"c"):this._is("screen")&&this._coreService.triggerDataEvent(n.C0.ESC+"[>83;40003;0c")),!0}_is(e){return 0===(this._optionsService.rawOptions.termName+"").indexOf(e)}setMode(e){for(let t=0;te?1:2,u=e.params[0];return f=u,v=t?2===u?4:4===u?_(o.modes.insertMode):12===u?3:20===u?_(d.convertEol):0:1===u?_(i.applicationCursorKeys):3===u?d.windowOptions.setWinLines?80===h?2:132===h?1:0:0:6===u?_(i.origin):7===u?_(i.wraparound):8===u?3:9===u?_("X10"===s):12===u?_(d.cursorBlink):25===u?_(!o.isCursorHidden):45===u?_(i.reverseWraparound):66===u?_(i.applicationKeypad):67===u?4:1e3===u?_("VT200"===s):1002===u?_("DRAG"===s):1003===u?_("ANY"===s):1004===u?_(i.sendFocus):1005===u?4:1006===u?_("SGR"===r):1015===u?4:1016===u?_("SGR_PIXELS"===r):1048===u?1:47===u||1047===u||1049===u?_(c===l):2004===u?_(i.bracketedPasteMode):0,o.triggerDataEvent(`${n.C0.ESC}[${t?"":"?"}${f};${v}$y`),!0;var f,v}_updateAttrColor(e,t,i,s,r){return 2===t?(e|=50331648,e&=-16777216,e|=f.AttributeData.fromColorRGB([i,s,r])):5===t&&(e&=-50331904,e|=33554432|255&i),e}_extractColor(e,t,i){const s=[0,0,-1,0,0,0];let r=0,n=0;do{if(s[n+r]=e.params[t+n],e.hasSubParams(t+n)){const i=e.getSubParams(t+n);let o=0;do{5===s[1]&&(r=1),s[n+o+1+r]=i[o]}while(++o=2||2===s[1]&&n+r>=5)break;s[1]&&(r=1)}while(++n+t5)&&(e=1),t.extended.underlineStyle=e,t.fg|=268435456,0===e&&(t.fg&=-268435457),t.updateExtended()}_processSGR0(e){e.fg=l.DEFAULT_ATTR_DATA.fg,e.bg=l.DEFAULT_ATTR_DATA.bg,e.extended=e.extended.clone(),e.extended.underlineStyle=0,e.extended.underlineColor&=-67108864,e.updateExtended()}charAttributes(e){if(1===e.length&&0===e.params[0])return this._processSGR0(this._curAttrData),!0;const t=e.length;let i;const s=this._curAttrData;for(let r=0;r=30&&i<=37?(s.fg&=-50331904,s.fg|=16777216|i-30):i>=40&&i<=47?(s.bg&=-50331904,s.bg|=16777216|i-40):i>=90&&i<=97?(s.fg&=-50331904,s.fg|=16777224|i-90):i>=100&&i<=107?(s.bg&=-50331904,s.bg|=16777224|i-100):0===i?this._processSGR0(s):1===i?s.fg|=134217728:3===i?s.bg|=67108864:4===i?(s.fg|=268435456,this._processUnderline(e.hasSubParams(r)?e.getSubParams(r)[0]:1,s)):5===i?s.fg|=536870912:7===i?s.fg|=67108864:8===i?s.fg|=1073741824:9===i?s.fg|=2147483648:2===i?s.bg|=134217728:21===i?this._processUnderline(2,s):22===i?(s.fg&=-134217729,s.bg&=-134217729):23===i?s.bg&=-67108865:24===i?(s.fg&=-268435457,this._processUnderline(0,s)):25===i?s.fg&=-536870913:27===i?s.fg&=-67108865:28===i?s.fg&=-1073741825:29===i?s.fg&=2147483647:39===i?(s.fg&=-67108864,s.fg|=16777215&l.DEFAULT_ATTR_DATA.fg):49===i?(s.bg&=-67108864,s.bg|=16777215&l.DEFAULT_ATTR_DATA.bg):38===i||48===i||58===i?r+=this._extractColor(e,r,s):53===i?s.bg|=1073741824:55===i?s.bg&=-1073741825:59===i?(s.extended=s.extended.clone(),s.extended.underlineColor=-1,s.updateExtended()):100===i?(s.fg&=-67108864,s.fg|=16777215&l.DEFAULT_ATTR_DATA.fg,s.bg&=-67108864,s.bg|=16777215&l.DEFAULT_ATTR_DATA.bg):this._logService.debug("Unknown SGR attribute: %d.",i);return!0}deviceStatus(e){switch(e.params[0]){case 5:this._coreService.triggerDataEvent(`${n.C0.ESC}[0n`);break;case 6:const e=this._activeBuffer.y+1,t=this._activeBuffer.x+1;this._coreService.triggerDataEvent(`${n.C0.ESC}[${e};${t}R`)}return!0}deviceStatusPrivate(e){if(6===e.params[0]){const e=this._activeBuffer.y+1,t=this._activeBuffer.x+1;this._coreService.triggerDataEvent(`${n.C0.ESC}[?${e};${t}R`)}return!0}softReset(e){return this._coreService.isCursorHidden=!1,this._onRequestSyncScrollBar.fire(),this._activeBuffer.scrollTop=0,this._activeBuffer.scrollBottom=this._bufferService.rows-1,this._curAttrData=l.DEFAULT_ATTR_DATA.clone(),this._coreService.reset(),this._charsetService.reset(),this._activeBuffer.savedX=0,this._activeBuffer.savedY=this._activeBuffer.ybase,this._activeBuffer.savedCurAttrData.fg=this._curAttrData.fg,this._activeBuffer.savedCurAttrData.bg=this._curAttrData.bg,this._activeBuffer.savedCharset=this._charsetService.charset,this._coreService.decPrivateModes.origin=!1,!0}setCursorStyle(e){const t=e.params[0]||1;switch(t){case 1:case 2:this._optionsService.options.cursorStyle="block";break;case 3:case 4:this._optionsService.options.cursorStyle="underline";break;case 5:case 6:this._optionsService.options.cursorStyle="bar"}const i=t%2==1;return this._optionsService.options.cursorBlink=i,!0}setScrollRegion(e){const t=e.params[0]||1;let i;return(e.length<2||(i=e.params[1])>this._bufferService.rows||0===i)&&(i=this._bufferService.rows),i>t&&(this._activeBuffer.scrollTop=t-1,this._activeBuffer.scrollBottom=i-1,this._setCursor(0,0)),!0}windowOptions(e){if(!b(e.params[0],this._optionsService.rawOptions.windowOptions))return!0;const t=e.length>1?e.params[1]:0;switch(e.params[0]){case 14:2!==t&&this._onRequestWindowsOptionsReport.fire(y.GET_WIN_SIZE_PIXELS);break;case 16:this._onRequestWindowsOptionsReport.fire(y.GET_CELL_SIZE_PIXELS);break;case 18:this._bufferService&&this._coreService.triggerDataEvent(`${n.C0.ESC}[8;${this._bufferService.rows};${this._bufferService.cols}t`);break;case 22:0!==t&&2!==t||(this._windowTitleStack.push(this._windowTitle),this._windowTitleStack.length>10&&this._windowTitleStack.shift()),0!==t&&1!==t||(this._iconNameStack.push(this._iconName),this._iconNameStack.length>10&&this._iconNameStack.shift());break;case 23:0!==t&&2!==t||this._windowTitleStack.length&&this.setTitle(this._windowTitleStack.pop()),0!==t&&1!==t||this._iconNameStack.length&&this.setIconName(this._iconNameStack.pop())}return!0}saveCursor(e){return this._activeBuffer.savedX=this._activeBuffer.x,this._activeBuffer.savedY=this._activeBuffer.ybase+this._activeBuffer.y,this._activeBuffer.savedCurAttrData.fg=this._curAttrData.fg,this._activeBuffer.savedCurAttrData.bg=this._curAttrData.bg,this._activeBuffer.savedCharset=this._charsetService.charset,!0}restoreCursor(e){return this._activeBuffer.x=this._activeBuffer.savedX||0,this._activeBuffer.y=Math.max(this._activeBuffer.savedY-this._activeBuffer.ybase,0),this._curAttrData.fg=this._activeBuffer.savedCurAttrData.fg,this._curAttrData.bg=this._activeBuffer.savedCurAttrData.bg,this._charsetService.charset=this._savedCharset,this._activeBuffer.savedCharset&&(this._charsetService.charset=this._activeBuffer.savedCharset),this._restrictCursor(),!0}setTitle(e){return this._windowTitle=e,this._onTitleChange.fire(e),!0}setIconName(e){return this._iconName=e,!0}setOrReportIndexedColor(e){const t=[],i=e.split(";");for(;i.length>1;){const e=i.shift(),s=i.shift();if(/^\d+$/.exec(e)){const i=parseInt(e);if(0<=i&&i<256)if("?"===s)t.push({type:0,index:i});else{const e=(0,S.parseColor)(s);e&&t.push({type:1,index:i,color:e})}}}return t.length&&this._onColor.fire(t),!0}setHyperlink(e){const t=e.split(";");return!(t.length<2)&&(t[1]?this._createHyperlink(t[0],t[1]):!t[0]&&this._finishHyperlink())}_createHyperlink(e,t){this._getCurrentLinkId()&&this._finishHyperlink();const i=e.split(":");let s;const r=i.findIndex((e=>e.startsWith("id=")));return-1!==r&&(s=i[r].slice(3)||void 0),this._curAttrData.extended=this._curAttrData.extended.clone(),this._curAttrData.extended.urlId=this._oscLinkService.registerLink({id:s,uri:t}),this._curAttrData.updateExtended(),!0}_finishHyperlink(){return this._curAttrData.extended=this._curAttrData.extended.clone(),this._curAttrData.extended.urlId=0,this._curAttrData.updateExtended(),!0}_setOrReportSpecialColor(e,t){const i=e.split(";");for(let e=0;e=this._specialColors.length);++e,++t)if("?"===i[e])this._onColor.fire([{type:0,index:this._specialColors[t]}]);else{const s=(0,S.parseColor)(i[e]);s&&this._onColor.fire([{type:1,index:this._specialColors[t],color:s}])}return!0}setOrReportFgColor(e){return this._setOrReportSpecialColor(e,0)}setOrReportBgColor(e){return this._setOrReportSpecialColor(e,1)}setOrReportCursorColor(e){return this._setOrReportSpecialColor(e,2)}restoreIndexedColor(e){if(!e)return this._onColor.fire([{type:2}]),!0;const t=[],i=e.split(";");for(let e=0;e=this._bufferService.rows&&(this._activeBuffer.y=this._bufferService.rows-1),this._restrictCursor(),!0}tabSet(){return this._activeBuffer.tabs[this._activeBuffer.x]=!0,!0}reverseIndex(){if(this._restrictCursor(),this._activeBuffer.y===this._activeBuffer.scrollTop){const e=this._activeBuffer.scrollBottom-this._activeBuffer.scrollTop;this._activeBuffer.lines.shiftElements(this._activeBuffer.ybase+this._activeBuffer.y,e,1),this._activeBuffer.lines.set(this._activeBuffer.ybase+this._activeBuffer.y,this._activeBuffer.getBlankLine(this._eraseAttrData())),this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom)}else this._activeBuffer.y--,this._restrictCursor();return!0}fullReset(){return this._parser.reset(),this._onRequestReset.fire(),!0}reset(){this._curAttrData=l.DEFAULT_ATTR_DATA.clone(),this._eraseAttrDataInternal=l.DEFAULT_ATTR_DATA.clone()}_eraseAttrData(){return this._eraseAttrDataInternal.bg&=-67108864,this._eraseAttrDataInternal.bg|=67108863&this._curAttrData.bg,this._eraseAttrDataInternal}setgLevel(e){return this._charsetService.setgLevel(e),!0}screenAlignmentPattern(){const e=new u.CellData;e.content=1<<22|"E".charCodeAt(0),e.fg=this._curAttrData.fg,e.bg=this._curAttrData.bg,this._setCursor(0,0);for(let t=0;t(this._coreService.triggerDataEvent(`${n.C0.ESC}${e}${n.C0.ESC}\\`),!0))('"q'===e?`P1$r${this._curAttrData.isProtected()?1:0}"q`:'"p'===e?'P1$r61;1"p':"r"===e?`P1$r${i.scrollTop+1};${i.scrollBottom+1}r`:"m"===e?"P1$r0m":" q"===e?`P1$r${{block:2,underline:4,bar:6}[s.cursorStyle]-(s.cursorBlink?1:0)} q`:"P0$r")}markRangeDirty(e,t){this._dirtyRowTracker.markRangeDirty(e,t)}}t.InputHandler=E;let L=class{constructor(e){this._bufferService=e,this.clearRange()}clearRange(){this.start=this._bufferService.buffer.y,this.end=this._bufferService.buffer.y}markDirty(e){ethis.end&&(this.end=e)}markRangeDirty(e,t){e>t&&(w=e,e=t,t=w),ethis.end&&(this.end=t)}markAllDirty(){this.markRangeDirty(0,this._bufferService.rows-1)}};L=s([r(0,v.IBufferService)],L)},844:(e,t)=>{function i(e){for(const t of e)t.dispose();e.length=0}Object.defineProperty(t,"__esModule",{value:!0}),t.getDisposeArrayDisposable=t.disposeArray=t.toDisposable=t.Disposable=void 0,t.Disposable=class{constructor(){this._disposables=[],this._isDisposed=!1}dispose(){this._isDisposed=!0;for(const e of this._disposables)e.dispose();this._disposables.length=0}register(e){return this._disposables.push(e),e}unregister(e){const t=this._disposables.indexOf(e);-1!==t&&this._disposables.splice(t,1)}},t.toDisposable=function(e){return{dispose:e}},t.disposeArray=i,t.getDisposeArrayDisposable=function(e){return{dispose:()=>i(e)}}},1505:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.FourKeyMap=t.TwoKeyMap=void 0;class i{constructor(){this._data={}}set(e,t,i){this._data[e]||(this._data[e]={}),this._data[e][t]=i}get(e,t){return this._data[e]?this._data[e][t]:void 0}clear(){this._data={}}}t.TwoKeyMap=i,t.FourKeyMap=class{constructor(){this._data=new i}set(e,t,s,r,n){this._data.get(e,t)||this._data.set(e,t,new i),this._data.get(e,t).set(s,r,n)}get(e,t,i,s){var r;return null===(r=this._data.get(e,t))||void 0===r?void 0:r.get(i,s)}clear(){this._data.clear()}}},6114:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.isChromeOS=t.isLinux=t.isWindows=t.isIphone=t.isIpad=t.isMac=t.getSafariVersion=t.isSafari=t.isLegacyEdge=t.isFirefox=t.isNode=void 0,t.isNode="undefined"==typeof navigator;const i=t.isNode?"node":navigator.userAgent,s=t.isNode?"node":navigator.platform;t.isFirefox=i.includes("Firefox"),t.isLegacyEdge=i.includes("Edge"),t.isSafari=/^((?!chrome|android).)*safari/i.test(i),t.getSafariVersion=function(){if(!t.isSafari)return 0;const e=i.match(/Version\/(\d+)/);return null===e||e.length<2?0:parseInt(e[1])},t.isMac=["Macintosh","MacIntel","MacPPC","Mac68K"].includes(s),t.isIpad="iPad"===s,t.isIphone="iPhone"===s,t.isWindows=["Windows","Win16","Win32","WinCE"].includes(s),t.isLinux=s.indexOf("Linux")>=0,t.isChromeOS=/\bCrOS\b/.test(i)},6106:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SortedList=void 0;let i=0;t.SortedList=class{constructor(e){this._getKey=e,this._array=[]}clear(){this._array.length=0}insert(e){0!==this._array.length?(i=this._search(this._getKey(e),0,this._array.length-1),this._array.splice(i,0,e)):this._array.push(e)}delete(e){if(0===this._array.length)return!1;const t=this._getKey(e);if(void 0===t)return!1;if(i=this._search(t,0,this._array.length-1),-1===i)return!1;if(this._getKey(this._array[i])!==t)return!1;do{if(this._array[i]===e)return this._array.splice(i,1),!0}while(++i=this._array.length)&&this._getKey(this._array[i])===e))do{yield this._array[i]}while(++i=this._array.length)&&this._getKey(this._array[i])===e))do{t(this._array[i])}while(++ie)return this._search(e,t,s-1);if(r0&&this._getKey(this._array[s-1])===e;)s--;return s}}},7226:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.DebouncedIdleTask=t.IdleTaskQueue=t.PriorityTaskQueue=void 0;const s=i(6114);class r{constructor(){this._tasks=[],this._i=0}enqueue(e){this._tasks.push(e),this._start()}flush(){for(;this._ir)return s-t<-20&&console.warn(`task queue exceeded allotted deadline by ${Math.abs(Math.round(s-t))}ms`),void this._start();s=r}this.clear()}}class n extends r{_requestCallback(e){return setTimeout((()=>e(this._createDeadline(16))))}_cancelCallback(e){clearTimeout(e)}_createDeadline(e){const t=Date.now()+e;return{timeRemaining:()=>Math.max(0,t-Date.now())}}}t.PriorityTaskQueue=n,t.IdleTaskQueue=!s.isNode&&"requestIdleCallback"in window?class extends r{_requestCallback(e){return requestIdleCallback(e)}_cancelCallback(e){cancelIdleCallback(e)}}:n,t.DebouncedIdleTask=class{constructor(){this._queue=new t.IdleTaskQueue}set(e){this._queue.clear(),this._queue.enqueue(e)}flush(){this._queue.flush()}}},9282:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.updateWindowsModeWrappedState=void 0;const s=i(643);t.updateWindowsModeWrappedState=function(e){const t=e.buffer.lines.get(e.buffer.ybase+e.buffer.y-1),i=null==t?void 0:t.get(e.cols-1),r=e.buffer.lines.get(e.buffer.ybase+e.buffer.y);r&&i&&(r.isWrapped=i[s.CHAR_DATA_CODE_INDEX]!==s.NULL_CELL_CODE&&i[s.CHAR_DATA_CODE_INDEX]!==s.WHITESPACE_CELL_CODE)}},3734:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ExtendedAttrs=t.AttributeData=void 0;class i{constructor(){this.fg=0,this.bg=0,this.extended=new s}static toColorRGB(e){return[e>>>16&255,e>>>8&255,255&e]}static fromColorRGB(e){return(255&e[0])<<16|(255&e[1])<<8|255&e[2]}clone(){const e=new i;return e.fg=this.fg,e.bg=this.bg,e.extended=this.extended.clone(),e}isInverse(){return 67108864&this.fg}isBold(){return 134217728&this.fg}isUnderline(){return this.hasExtendedAttrs()&&0!==this.extended.underlineStyle?1:268435456&this.fg}isBlink(){return 536870912&this.fg}isInvisible(){return 1073741824&this.fg}isItalic(){return 67108864&this.bg}isDim(){return 134217728&this.bg}isStrikethrough(){return 2147483648&this.fg}isProtected(){return 536870912&this.bg}isOverline(){return 1073741824&this.bg}getFgColorMode(){return 50331648&this.fg}getBgColorMode(){return 50331648&this.bg}isFgRGB(){return 50331648==(50331648&this.fg)}isBgRGB(){return 50331648==(50331648&this.bg)}isFgPalette(){return 16777216==(50331648&this.fg)||33554432==(50331648&this.fg)}isBgPalette(){return 16777216==(50331648&this.bg)||33554432==(50331648&this.bg)}isFgDefault(){return 0==(50331648&this.fg)}isBgDefault(){return 0==(50331648&this.bg)}isAttributeDefault(){return 0===this.fg&&0===this.bg}getFgColor(){switch(50331648&this.fg){case 16777216:case 33554432:return 255&this.fg;case 50331648:return 16777215&this.fg;default:return-1}}getBgColor(){switch(50331648&this.bg){case 16777216:case 33554432:return 255&this.bg;case 50331648:return 16777215&this.bg;default:return-1}}hasExtendedAttrs(){return 268435456&this.bg}updateExtended(){this.extended.isEmpty()?this.bg&=-268435457:this.bg|=268435456}getUnderlineColor(){if(268435456&this.bg&&~this.extended.underlineColor)switch(50331648&this.extended.underlineColor){case 16777216:case 33554432:return 255&this.extended.underlineColor;case 50331648:return 16777215&this.extended.underlineColor;default:return this.getFgColor()}return this.getFgColor()}getUnderlineColorMode(){return 268435456&this.bg&&~this.extended.underlineColor?50331648&this.extended.underlineColor:this.getFgColorMode()}isUnderlineColorRGB(){return 268435456&this.bg&&~this.extended.underlineColor?50331648==(50331648&this.extended.underlineColor):this.isFgRGB()}isUnderlineColorPalette(){return 268435456&this.bg&&~this.extended.underlineColor?16777216==(50331648&this.extended.underlineColor)||33554432==(50331648&this.extended.underlineColor):this.isFgPalette()}isUnderlineColorDefault(){return 268435456&this.bg&&~this.extended.underlineColor?0==(50331648&this.extended.underlineColor):this.isFgDefault()}getUnderlineStyle(){return 268435456&this.fg?268435456&this.bg?this.extended.underlineStyle:1:0}}t.AttributeData=i;class s{constructor(e=0,t=0){this._ext=0,this._urlId=0,this._ext=e,this._urlId=t}get ext(){return this._urlId?-469762049&this._ext|this.underlineStyle<<26:this._ext}set ext(e){this._ext=e}get underlineStyle(){return this._urlId?5:(469762048&this._ext)>>26}set underlineStyle(e){this._ext&=-469762049,this._ext|=e<<26&469762048}get underlineColor(){return 67108863&this._ext}set underlineColor(e){this._ext&=-67108864,this._ext|=67108863&e}get urlId(){return this._urlId}set urlId(e){this._urlId=e}clone(){return new s(this._ext,this._urlId)}isEmpty(){return 0===this.underlineStyle&&0===this._urlId}}t.ExtendedAttrs=s},9092:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.Buffer=t.MAX_BUFFER_SIZE=void 0;const s=i(6349),r=i(8437),n=i(511),o=i(643),a=i(4634),h=i(4863),c=i(7116),l=i(3734),d=i(7226);t.MAX_BUFFER_SIZE=4294967295,t.Buffer=class{constructor(e,t,i){this._hasScrollback=e,this._optionsService=t,this._bufferService=i,this.ydisp=0,this.ybase=0,this.y=0,this.x=0,this.tabs={},this.savedY=0,this.savedX=0,this.savedCurAttrData=r.DEFAULT_ATTR_DATA.clone(),this.savedCharset=c.DEFAULT_CHARSET,this.markers=[],this._nullCell=n.CellData.fromCharData([0,o.NULL_CELL_CHAR,o.NULL_CELL_WIDTH,o.NULL_CELL_CODE]),this._whitespaceCell=n.CellData.fromCharData([0,o.WHITESPACE_CELL_CHAR,o.WHITESPACE_CELL_WIDTH,o.WHITESPACE_CELL_CODE]),this._isClearing=!1,this._memoryCleanupQueue=new d.IdleTaskQueue,this._memoryCleanupPosition=0,this._cols=this._bufferService.cols,this._rows=this._bufferService.rows,this.lines=new s.CircularList(this._getCorrectBufferLength(this._rows)),this.scrollTop=0,this.scrollBottom=this._rows-1,this.setupTabStops()}getNullCell(e){return e?(this._nullCell.fg=e.fg,this._nullCell.bg=e.bg,this._nullCell.extended=e.extended):(this._nullCell.fg=0,this._nullCell.bg=0,this._nullCell.extended=new l.ExtendedAttrs),this._nullCell}getWhitespaceCell(e){return e?(this._whitespaceCell.fg=e.fg,this._whitespaceCell.bg=e.bg,this._whitespaceCell.extended=e.extended):(this._whitespaceCell.fg=0,this._whitespaceCell.bg=0,this._whitespaceCell.extended=new l.ExtendedAttrs),this._whitespaceCell}getBlankLine(e,t){return new r.BufferLine(this._bufferService.cols,this.getNullCell(e),t)}get hasScrollback(){return this._hasScrollback&&this.lines.maxLength>this._rows}get isCursorInViewport(){const e=this.ybase+this.y-this.ydisp;return e>=0&&et.MAX_BUFFER_SIZE?t.MAX_BUFFER_SIZE:i}fillViewportRows(e){if(0===this.lines.length){void 0===e&&(e=r.DEFAULT_ATTR_DATA);let t=this._rows;for(;t--;)this.lines.push(this.getBlankLine(e))}}clear(){this.ydisp=0,this.ybase=0,this.y=0,this.x=0,this.lines=new s.CircularList(this._getCorrectBufferLength(this._rows)),this.scrollTop=0,this.scrollBottom=this._rows-1,this.setupTabStops()}resize(e,t){const i=this.getNullCell(r.DEFAULT_ATTR_DATA);let s=0;const n=this._getCorrectBufferLength(t);if(n>this.lines.maxLength&&(this.lines.maxLength=n),this.lines.length>0){if(this._cols0&&this.lines.length<=this.ybase+this.y+o+1?(this.ybase--,o++,this.ydisp>0&&this.ydisp--):this.lines.push(new r.BufferLine(e,i)));else for(let e=this._rows;e>t;e--)this.lines.length>t+this.ybase&&(this.lines.length>this.ybase+this.y+1?this.lines.pop():(this.ybase++,this.ydisp++));if(n0&&(this.lines.trimStart(e),this.ybase=Math.max(this.ybase-e,0),this.ydisp=Math.max(this.ydisp-e,0),this.savedY=Math.max(this.savedY-e,0)),this.lines.maxLength=n}this.x=Math.min(this.x,e-1),this.y=Math.min(this.y,t-1),o&&(this.y+=o),this.savedX=Math.min(this.savedX,e-1),this.scrollTop=0}if(this.scrollBottom=t-1,this._isReflowEnabled&&(this._reflow(e,t),this._cols>e))for(let t=0;t.1*this.lines.length&&(this._memoryCleanupPosition=0,this._memoryCleanupQueue.enqueue((()=>this._batchedMemoryCleanup())))}_batchedMemoryCleanup(){let e=!0;this._memoryCleanupPosition>=this.lines.length&&(this._memoryCleanupPosition=0,e=!1);let t=0;for(;this._memoryCleanupPosition100)return!0;return e}get _isReflowEnabled(){const e=this._optionsService.rawOptions.windowsPty;return e&&e.buildNumber?this._hasScrollback&&"conpty"===e.backend&&e.buildNumber>=21376:this._hasScrollback&&!this._optionsService.rawOptions.windowsMode}_reflow(e,t){this._cols!==e&&(e>this._cols?this._reflowLarger(e,t):this._reflowSmaller(e,t))}_reflowLarger(e,t){const i=(0,a.reflowLargerGetLinesToRemove)(this.lines,this._cols,e,this.ybase+this.y,this.getNullCell(r.DEFAULT_ATTR_DATA));if(i.length>0){const s=(0,a.reflowLargerCreateNewLayout)(this.lines,i);(0,a.reflowLargerApplyNewLayout)(this.lines,s.layout),this._reflowLargerAdjustViewport(e,t,s.countRemoved)}}_reflowLargerAdjustViewport(e,t,i){const s=this.getNullCell(r.DEFAULT_ATTR_DATA);let n=i;for(;n-- >0;)0===this.ybase?(this.y>0&&this.y--,this.lines.length=0;o--){let h=this.lines.get(o);if(!h||!h.isWrapped&&h.getTrimmedLength()<=e)continue;const c=[h];for(;h.isWrapped&&o>0;)h=this.lines.get(--o),c.unshift(h);const l=this.ybase+this.y;if(l>=o&&l0&&(s.push({start:o+c.length+n,newLines:v}),n+=v.length),c.push(...v);let g=_.length-1,p=_[g];0===p&&(g--,p=_[g]);let S=c.length-u-1,m=d;for(;S>=0;){const e=Math.min(m,p);if(void 0===c[g])break;if(c[g].copyCellsFrom(c[S],m-e,p-e,e,!0),p-=e,0===p&&(g--,p=_[g]),m-=e,0===m){S--;const e=Math.max(S,0);m=(0,a.getWrappedLineTrimmedLength)(c,e,this._cols)}}for(let t=0;t0;)0===this.ybase?this.y0){const e=[],t=[];for(let e=0;e=0;c--)if(a&&a.start>r+h){for(let e=a.newLines.length-1;e>=0;e--)this.lines.set(c--,a.newLines[e]);c++,e.push({index:r+1,amount:a.newLines.length}),h+=a.newLines.length,a=s[++o]}else this.lines.set(c,t[r--]);let c=0;for(let t=e.length-1;t>=0;t--)e[t].index+=c,this.lines.onInsertEmitter.fire(e[t]),c+=e[t].amount;const l=Math.max(0,i+n-this.lines.maxLength);l>0&&this.lines.onTrimEmitter.fire(l)}}translateBufferLineToString(e,t,i=0,s){const r=this.lines.get(e);return r?r.translateToString(t,i,s):""}getWrappedRangeForLine(e){let t=e,i=e;for(;t>0&&this.lines.get(t).isWrapped;)t--;for(;i+10;);return e>=this._cols?this._cols-1:e<0?0:e}nextStop(e){for(null==e&&(e=this.x);!this.tabs[++e]&&e=this._cols?this._cols-1:e<0?0:e}clearMarkers(e){this._isClearing=!0;for(let t=0;t{t.line-=e,t.line<0&&t.dispose()}))),t.register(this.lines.onInsert((e=>{t.line>=e.index&&(t.line+=e.amount)}))),t.register(this.lines.onDelete((e=>{t.line>=e.index&&t.linee.index&&(t.line-=e.amount)}))),t.register(t.onDispose((()=>this._removeMarker(t)))),t}_removeMarker(e){this._isClearing||this.markers.splice(this.markers.indexOf(e),1)}}},8437:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.BufferLine=t.DEFAULT_ATTR_DATA=void 0;const s=i(482),r=i(643),n=i(511),o=i(3734);t.DEFAULT_ATTR_DATA=Object.freeze(new o.AttributeData);let a=0;class h{constructor(e,t,i=!1){this.isWrapped=i,this._combined={},this._extendedAttrs={},this._data=new Uint32Array(3*e);const s=t||n.CellData.fromCharData([0,r.NULL_CELL_CHAR,r.NULL_CELL_WIDTH,r.NULL_CELL_CODE]);for(let t=0;t>22,2097152&t?this._combined[e].charCodeAt(this._combined[e].length-1):i]}set(e,t){this._data[3*e+1]=t[r.CHAR_DATA_ATTR_INDEX],t[r.CHAR_DATA_CHAR_INDEX].length>1?(this._combined[e]=t[1],this._data[3*e+0]=2097152|e|t[r.CHAR_DATA_WIDTH_INDEX]<<22):this._data[3*e+0]=t[r.CHAR_DATA_CHAR_INDEX].charCodeAt(0)|t[r.CHAR_DATA_WIDTH_INDEX]<<22}getWidth(e){return this._data[3*e+0]>>22}hasWidth(e){return 12582912&this._data[3*e+0]}getFg(e){return this._data[3*e+1]}getBg(e){return this._data[3*e+2]}hasContent(e){return 4194303&this._data[3*e+0]}getCodePoint(e){const t=this._data[3*e+0];return 2097152&t?this._combined[e].charCodeAt(this._combined[e].length-1):2097151&t}isCombined(e){return 2097152&this._data[3*e+0]}getString(e){const t=this._data[3*e+0];return 2097152&t?this._combined[e]:2097151&t?(0,s.stringFromCodePoint)(2097151&t):""}isProtected(e){return 536870912&this._data[3*e+2]}loadCell(e,t){return a=3*e,t.content=this._data[a+0],t.fg=this._data[a+1],t.bg=this._data[a+2],2097152&t.content&&(t.combinedData=this._combined[e]),268435456&t.bg&&(t.extended=this._extendedAttrs[e]),t}setCell(e,t){2097152&t.content&&(this._combined[e]=t.combinedData),268435456&t.bg&&(this._extendedAttrs[e]=t.extended),this._data[3*e+0]=t.content,this._data[3*e+1]=t.fg,this._data[3*e+2]=t.bg}setCellFromCodePoint(e,t,i,s,r,n){268435456&r&&(this._extendedAttrs[e]=n),this._data[3*e+0]=t|i<<22,this._data[3*e+1]=s,this._data[3*e+2]=r}addCodepointToCell(e,t){let i=this._data[3*e+0];2097152&i?this._combined[e]+=(0,s.stringFromCodePoint)(t):(2097151&i?(this._combined[e]=(0,s.stringFromCodePoint)(2097151&i)+(0,s.stringFromCodePoint)(t),i&=-2097152,i|=2097152):i=t|1<<22,this._data[3*e+0]=i)}insertCells(e,t,i,s){if((e%=this.length)&&2===this.getWidth(e-1)&&this.setCellFromCodePoint(e-1,0,1,(null==s?void 0:s.fg)||0,(null==s?void 0:s.bg)||0,(null==s?void 0:s.extended)||new o.ExtendedAttrs),t=0;--i)this.setCell(e+t+i,this.loadCell(e+i,s));for(let s=0;sthis.length){if(this._data.buffer.byteLength>=4*i)this._data=new Uint32Array(this._data.buffer,0,i);else{const e=new Uint32Array(i);e.set(this._data),this._data=e}for(let i=this.length;i=e&&delete this._combined[s]}const s=Object.keys(this._extendedAttrs);for(let t=0;t=e&&delete this._extendedAttrs[i]}}return this.length=e,4*i*2=0;--e)if(4194303&this._data[3*e+0])return e+(this._data[3*e+0]>>22);return 0}copyCellsFrom(e,t,i,s,r){const n=e._data;if(r)for(let r=s-1;r>=0;r--){for(let e=0;e<3;e++)this._data[3*(i+r)+e]=n[3*(t+r)+e];268435456&n[3*(t+r)+2]&&(this._extendedAttrs[i+r]=e._extendedAttrs[t+r])}else for(let r=0;r=t&&(this._combined[r-t+i]=e._combined[r])}}translateToString(e=!1,t=0,i=this.length){e&&(i=Math.min(i,this.getTrimmedLength()));let n="";for(;t>22||1}return n}}t.BufferLine=h},4841:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.getRangeLength=void 0,t.getRangeLength=function(e,t){if(e.start.y>e.end.y)throw new Error(`Buffer range end (${e.end.x}, ${e.end.y}) cannot be before start (${e.start.x}, ${e.start.y})`);return t*(e.end.y-e.start.y)+(e.end.x-e.start.x+1)}},4634:(e,t)=>{function i(e,t,i){if(t===e.length-1)return e[t].getTrimmedLength();const s=!e[t].hasContent(i-1)&&1===e[t].getWidth(i-1),r=2===e[t+1].getWidth(0);return s&&r?i-1:i}Object.defineProperty(t,"__esModule",{value:!0}),t.getWrappedLineTrimmedLength=t.reflowSmallerGetNewLineLengths=t.reflowLargerApplyNewLayout=t.reflowLargerCreateNewLayout=t.reflowLargerGetLinesToRemove=void 0,t.reflowLargerGetLinesToRemove=function(e,t,s,r,n){const o=[];for(let a=0;a=a&&r0&&(e>d||0===l[e].getTrimmedLength());e--)v++;v>0&&(o.push(a+l.length-v),o.push(v)),a+=l.length-1}return o},t.reflowLargerCreateNewLayout=function(e,t){const i=[];let s=0,r=t[s],n=0;for(let o=0;oi(e,r,t))).reduce(((e,t)=>e+t));let o=0,a=0,h=0;for(;hc&&(o-=c,a++);const l=2===e[a].getWidth(o-1);l&&o--;const d=l?s-1:s;r.push(d),h+=d}return r},t.getWrappedLineTrimmedLength=i},5295:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.BufferSet=void 0;const s=i(9092),r=i(8460),n=i(844);class o extends n.Disposable{constructor(e,t){super(),this._optionsService=e,this._bufferService=t,this._onBufferActivate=this.register(new r.EventEmitter),this.onBufferActivate=this._onBufferActivate.event,this.reset(),this.register(this._optionsService.onSpecificOptionChange("scrollback",(()=>this.resize(this._bufferService.cols,this._bufferService.rows)))),this.register(this._optionsService.onSpecificOptionChange("tabStopWidth",(()=>this.setupTabStops())))}reset(){this._normal=new s.Buffer(!0,this._optionsService,this._bufferService),this._normal.fillViewportRows(),this._alt=new s.Buffer(!1,this._optionsService,this._bufferService),this._activeBuffer=this._normal,this._onBufferActivate.fire({activeBuffer:this._normal,inactiveBuffer:this._alt}),this.setupTabStops()}get alt(){return this._alt}get active(){return this._activeBuffer}get normal(){return this._normal}activateNormalBuffer(){this._activeBuffer!==this._normal&&(this._normal.x=this._alt.x,this._normal.y=this._alt.y,this._alt.clearAllMarkers(),this._alt.clear(),this._activeBuffer=this._normal,this._onBufferActivate.fire({activeBuffer:this._normal,inactiveBuffer:this._alt}))}activateAltBuffer(e){this._activeBuffer!==this._alt&&(this._alt.fillViewportRows(e),this._alt.x=this._normal.x,this._alt.y=this._normal.y,this._activeBuffer=this._alt,this._onBufferActivate.fire({activeBuffer:this._alt,inactiveBuffer:this._normal}))}resize(e,t){this._normal.resize(e,t),this._alt.resize(e,t),this.setupTabStops(e)}setupTabStops(e){this._normal.setupTabStops(e),this._alt.setupTabStops(e)}}t.BufferSet=o},511:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.CellData=void 0;const s=i(482),r=i(643),n=i(3734);class o extends n.AttributeData{constructor(){super(...arguments),this.content=0,this.fg=0,this.bg=0,this.extended=new n.ExtendedAttrs,this.combinedData=""}static fromCharData(e){const t=new o;return t.setFromCharData(e),t}isCombined(){return 2097152&this.content}getWidth(){return this.content>>22}getChars(){return 2097152&this.content?this.combinedData:2097151&this.content?(0,s.stringFromCodePoint)(2097151&this.content):""}getCode(){return this.isCombined()?this.combinedData.charCodeAt(this.combinedData.length-1):2097151&this.content}setFromCharData(e){this.fg=e[r.CHAR_DATA_ATTR_INDEX],this.bg=0;let t=!1;if(e[r.CHAR_DATA_CHAR_INDEX].length>2)t=!0;else if(2===e[r.CHAR_DATA_CHAR_INDEX].length){const i=e[r.CHAR_DATA_CHAR_INDEX].charCodeAt(0);if(55296<=i&&i<=56319){const s=e[r.CHAR_DATA_CHAR_INDEX].charCodeAt(1);56320<=s&&s<=57343?this.content=1024*(i-55296)+s-56320+65536|e[r.CHAR_DATA_WIDTH_INDEX]<<22:t=!0}else t=!0}else this.content=e[r.CHAR_DATA_CHAR_INDEX].charCodeAt(0)|e[r.CHAR_DATA_WIDTH_INDEX]<<22;t&&(this.combinedData=e[r.CHAR_DATA_CHAR_INDEX],this.content=2097152|e[r.CHAR_DATA_WIDTH_INDEX]<<22)}getAsCharData(){return[this.fg,this.getChars(),this.getWidth(),this.getCode()]}}t.CellData=o},643:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.WHITESPACE_CELL_CODE=t.WHITESPACE_CELL_WIDTH=t.WHITESPACE_CELL_CHAR=t.NULL_CELL_CODE=t.NULL_CELL_WIDTH=t.NULL_CELL_CHAR=t.CHAR_DATA_CODE_INDEX=t.CHAR_DATA_WIDTH_INDEX=t.CHAR_DATA_CHAR_INDEX=t.CHAR_DATA_ATTR_INDEX=t.DEFAULT_EXT=t.DEFAULT_ATTR=t.DEFAULT_COLOR=void 0,t.DEFAULT_COLOR=0,t.DEFAULT_ATTR=256|t.DEFAULT_COLOR<<9,t.DEFAULT_EXT=0,t.CHAR_DATA_ATTR_INDEX=0,t.CHAR_DATA_CHAR_INDEX=1,t.CHAR_DATA_WIDTH_INDEX=2,t.CHAR_DATA_CODE_INDEX=3,t.NULL_CELL_CHAR="",t.NULL_CELL_WIDTH=1,t.NULL_CELL_CODE=0,t.WHITESPACE_CELL_CHAR=" ",t.WHITESPACE_CELL_WIDTH=1,t.WHITESPACE_CELL_CODE=32},4863:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.Marker=void 0;const s=i(8460),r=i(844);class n{constructor(e){this.line=e,this.isDisposed=!1,this._disposables=[],this._id=n._nextId++,this._onDispose=this.register(new s.EventEmitter),this.onDispose=this._onDispose.event}get id(){return this._id}dispose(){this.isDisposed||(this.isDisposed=!0,this.line=-1,this._onDispose.fire(),(0,r.disposeArray)(this._disposables),this._disposables.length=0)}register(e){return this._disposables.push(e),e}}t.Marker=n,n._nextId=1},7116:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.DEFAULT_CHARSET=t.CHARSETS=void 0,t.CHARSETS={},t.DEFAULT_CHARSET=t.CHARSETS.B,t.CHARSETS[0]={"`":"◆",a:"▒",b:"␉",c:"␌",d:"␍",e:"␊",f:"°",g:"±",h:"␤",i:"␋",j:"┘",k:"┐",l:"┌",m:"└",n:"┼",o:"⎺",p:"⎻",q:"─",r:"⎼",s:"⎽",t:"├",u:"┤",v:"┴",w:"┬",x:"│",y:"≤",z:"≥","{":"π","|":"≠","}":"£","~":"·"},t.CHARSETS.A={"#":"£"},t.CHARSETS.B=void 0,t.CHARSETS[4]={"#":"£","@":"¾","[":"ij","\\":"½","]":"|","{":"¨","|":"f","}":"¼","~":"´"},t.CHARSETS.C=t.CHARSETS[5]={"[":"Ä","\\":"Ö","]":"Å","^":"Ü","`":"é","{":"ä","|":"ö","}":"å","~":"ü"},t.CHARSETS.R={"#":"£","@":"à","[":"°","\\":"ç","]":"§","{":"é","|":"ù","}":"è","~":"¨"},t.CHARSETS.Q={"@":"à","[":"â","\\":"ç","]":"ê","^":"î","`":"ô","{":"é","|":"ù","}":"è","~":"û"},t.CHARSETS.K={"@":"§","[":"Ä","\\":"Ö","]":"Ü","{":"ä","|":"ö","}":"ü","~":"ß"},t.CHARSETS.Y={"#":"£","@":"§","[":"°","\\":"ç","]":"é","`":"ù","{":"à","|":"ò","}":"è","~":"ì"},t.CHARSETS.E=t.CHARSETS[6]={"@":"Ä","[":"Æ","\\":"Ø","]":"Å","^":"Ü","`":"ä","{":"æ","|":"ø","}":"å","~":"ü"},t.CHARSETS.Z={"#":"£","@":"§","[":"¡","\\":"Ñ","]":"¿","{":"°","|":"ñ","}":"ç"},t.CHARSETS.H=t.CHARSETS[7]={"@":"É","[":"Ä","\\":"Ö","]":"Å","^":"Ü","`":"é","{":"ä","|":"ö","}":"å","~":"ü"},t.CHARSETS["="]={"#":"ù","@":"à","[":"é","\\":"ç","]":"ê","^":"î",_:"è","`":"ô","{":"ä","|":"ö","}":"ü","~":"û"}},2584:(e,t)=>{var i,s;Object.defineProperty(t,"__esModule",{value:!0}),t.C1_ESCAPED=t.C1=t.C0=void 0,function(e){e.NUL="\0",e.SOH="",e.STX="",e.ETX="",e.EOT="",e.ENQ="",e.ACK="",e.BEL="",e.BS="\b",e.HT="\t",e.LF="\n",e.VT="\v",e.FF="\f",e.CR="\r",e.SO="",e.SI="",e.DLE="",e.DC1="",e.DC2="",e.DC3="",e.DC4="",e.NAK="",e.SYN="",e.ETB="",e.CAN="",e.EM="",e.SUB="",e.ESC="",e.FS="",e.GS="",e.RS="",e.US="",e.SP=" ",e.DEL=""}(i=t.C0||(t.C0={})),(s=t.C1||(t.C1={})).PAD="€",s.HOP="",s.BPH="‚",s.NBH="ƒ",s.IND="„",s.NEL="…",s.SSA="†",s.ESA="‡",s.HTS="ˆ",s.HTJ="‰",s.VTS="Š",s.PLD="‹",s.PLU="Œ",s.RI="",s.SS2="Ž",s.SS3="",s.DCS="",s.PU1="‘",s.PU2="’",s.STS="“",s.CCH="”",s.MW="•",s.SPA="–",s.EPA="—",s.SOS="˜",s.SGCI="™",s.SCI="š",s.CSI="›",s.ST="œ",s.OSC="",s.PM="ž",s.APC="Ÿ",(t.C1_ESCAPED||(t.C1_ESCAPED={})).ST=`${i.ESC}\\`},7399:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.evaluateKeyboardEvent=void 0;const s=i(2584),r={48:["0",")"],49:["1","!"],50:["2","@"],51:["3","#"],52:["4","$"],53:["5","%"],54:["6","^"],55:["7","&"],56:["8","*"],57:["9","("],186:[";",":"],187:["=","+"],188:[",","<"],189:["-","_"],190:[".",">"],191:["/","?"],192:["`","~"],219:["[","{"],220:["\\","|"],221:["]","}"],222:["'",'"']};t.evaluateKeyboardEvent=function(e,t,i,n){const o={type:0,cancel:!1,key:void 0},a=(e.shiftKey?1:0)|(e.altKey?2:0)|(e.ctrlKey?4:0)|(e.metaKey?8:0);switch(e.keyCode){case 0:"UIKeyInputUpArrow"===e.key?o.key=t?s.C0.ESC+"OA":s.C0.ESC+"[A":"UIKeyInputLeftArrow"===e.key?o.key=t?s.C0.ESC+"OD":s.C0.ESC+"[D":"UIKeyInputRightArrow"===e.key?o.key=t?s.C0.ESC+"OC":s.C0.ESC+"[C":"UIKeyInputDownArrow"===e.key&&(o.key=t?s.C0.ESC+"OB":s.C0.ESC+"[B");break;case 8:if(e.altKey){o.key=s.C0.ESC+s.C0.DEL;break}o.key=s.C0.DEL;break;case 9:if(e.shiftKey){o.key=s.C0.ESC+"[Z";break}o.key=s.C0.HT,o.cancel=!0;break;case 13:o.key=e.altKey?s.C0.ESC+s.C0.CR:s.C0.CR,o.cancel=!0;break;case 27:o.key=s.C0.ESC,e.altKey&&(o.key=s.C0.ESC+s.C0.ESC),o.cancel=!0;break;case 37:if(e.metaKey)break;a?(o.key=s.C0.ESC+"[1;"+(a+1)+"D",o.key===s.C0.ESC+"[1;3D"&&(o.key=s.C0.ESC+(i?"b":"[1;5D"))):o.key=t?s.C0.ESC+"OD":s.C0.ESC+"[D";break;case 39:if(e.metaKey)break;a?(o.key=s.C0.ESC+"[1;"+(a+1)+"C",o.key===s.C0.ESC+"[1;3C"&&(o.key=s.C0.ESC+(i?"f":"[1;5C"))):o.key=t?s.C0.ESC+"OC":s.C0.ESC+"[C";break;case 38:if(e.metaKey)break;a?(o.key=s.C0.ESC+"[1;"+(a+1)+"A",i||o.key!==s.C0.ESC+"[1;3A"||(o.key=s.C0.ESC+"[1;5A")):o.key=t?s.C0.ESC+"OA":s.C0.ESC+"[A";break;case 40:if(e.metaKey)break;a?(o.key=s.C0.ESC+"[1;"+(a+1)+"B",i||o.key!==s.C0.ESC+"[1;3B"||(o.key=s.C0.ESC+"[1;5B")):o.key=t?s.C0.ESC+"OB":s.C0.ESC+"[B";break;case 45:e.shiftKey||e.ctrlKey||(o.key=s.C0.ESC+"[2~");break;case 46:o.key=a?s.C0.ESC+"[3;"+(a+1)+"~":s.C0.ESC+"[3~";break;case 36:o.key=a?s.C0.ESC+"[1;"+(a+1)+"H":t?s.C0.ESC+"OH":s.C0.ESC+"[H";break;case 35:o.key=a?s.C0.ESC+"[1;"+(a+1)+"F":t?s.C0.ESC+"OF":s.C0.ESC+"[F";break;case 33:e.shiftKey?o.type=2:e.ctrlKey?o.key=s.C0.ESC+"[5;"+(a+1)+"~":o.key=s.C0.ESC+"[5~";break;case 34:e.shiftKey?o.type=3:e.ctrlKey?o.key=s.C0.ESC+"[6;"+(a+1)+"~":o.key=s.C0.ESC+"[6~";break;case 112:o.key=a?s.C0.ESC+"[1;"+(a+1)+"P":s.C0.ESC+"OP";break;case 113:o.key=a?s.C0.ESC+"[1;"+(a+1)+"Q":s.C0.ESC+"OQ";break;case 114:o.key=a?s.C0.ESC+"[1;"+(a+1)+"R":s.C0.ESC+"OR";break;case 115:o.key=a?s.C0.ESC+"[1;"+(a+1)+"S":s.C0.ESC+"OS";break;case 116:o.key=a?s.C0.ESC+"[15;"+(a+1)+"~":s.C0.ESC+"[15~";break;case 117:o.key=a?s.C0.ESC+"[17;"+(a+1)+"~":s.C0.ESC+"[17~";break;case 118:o.key=a?s.C0.ESC+"[18;"+(a+1)+"~":s.C0.ESC+"[18~";break;case 119:o.key=a?s.C0.ESC+"[19;"+(a+1)+"~":s.C0.ESC+"[19~";break;case 120:o.key=a?s.C0.ESC+"[20;"+(a+1)+"~":s.C0.ESC+"[20~";break;case 121:o.key=a?s.C0.ESC+"[21;"+(a+1)+"~":s.C0.ESC+"[21~";break;case 122:o.key=a?s.C0.ESC+"[23;"+(a+1)+"~":s.C0.ESC+"[23~";break;case 123:o.key=a?s.C0.ESC+"[24;"+(a+1)+"~":s.C0.ESC+"[24~";break;default:if(!e.ctrlKey||e.shiftKey||e.altKey||e.metaKey)if(i&&!n||!e.altKey||e.metaKey)!i||e.altKey||e.ctrlKey||e.shiftKey||!e.metaKey?e.key&&!e.ctrlKey&&!e.altKey&&!e.metaKey&&e.keyCode>=48&&1===e.key.length?o.key=e.key:e.key&&e.ctrlKey&&("_"===e.key&&(o.key=s.C0.US),"@"===e.key&&(o.key=s.C0.NUL)):65===e.keyCode&&(o.type=1);else{const t=r[e.keyCode],i=null==t?void 0:t[e.shiftKey?1:0];if(i)o.key=s.C0.ESC+i;else if(e.keyCode>=65&&e.keyCode<=90){const t=e.ctrlKey?e.keyCode-64:e.keyCode+32;let i=String.fromCharCode(t);e.shiftKey&&(i=i.toUpperCase()),o.key=s.C0.ESC+i}else if(32===e.keyCode)o.key=s.C0.ESC+(e.ctrlKey?s.C0.NUL:" ");else if("Dead"===e.key&&e.code.startsWith("Key")){let t=e.code.slice(3,4);e.shiftKey||(t=t.toLowerCase()),o.key=s.C0.ESC+t,o.cancel=!0}}else e.keyCode>=65&&e.keyCode<=90?o.key=String.fromCharCode(e.keyCode-64):32===e.keyCode?o.key=s.C0.NUL:e.keyCode>=51&&e.keyCode<=55?o.key=String.fromCharCode(e.keyCode-51+27):56===e.keyCode?o.key=s.C0.DEL:219===e.keyCode?o.key=s.C0.ESC:220===e.keyCode?o.key=s.C0.FS:221===e.keyCode&&(o.key=s.C0.GS)}return o}},482:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.Utf8ToUtf32=t.StringToUtf32=t.utf32ToString=t.stringFromCodePoint=void 0,t.stringFromCodePoint=function(e){return e>65535?(e-=65536,String.fromCharCode(55296+(e>>10))+String.fromCharCode(e%1024+56320)):String.fromCharCode(e)},t.utf32ToString=function(e,t=0,i=e.length){let s="";for(let r=t;r65535?(t-=65536,s+=String.fromCharCode(55296+(t>>10))+String.fromCharCode(t%1024+56320)):s+=String.fromCharCode(t)}return s},t.StringToUtf32=class{constructor(){this._interim=0}clear(){this._interim=0}decode(e,t){const i=e.length;if(!i)return 0;let s=0,r=0;if(this._interim){const i=e.charCodeAt(r++);56320<=i&&i<=57343?t[s++]=1024*(this._interim-55296)+i-56320+65536:(t[s++]=this._interim,t[s++]=i),this._interim=0}for(let n=r;n=i)return this._interim=r,s;const o=e.charCodeAt(n);56320<=o&&o<=57343?t[s++]=1024*(r-55296)+o-56320+65536:(t[s++]=r,t[s++]=o)}else 65279!==r&&(t[s++]=r)}return s}},t.Utf8ToUtf32=class{constructor(){this.interim=new Uint8Array(3)}clear(){this.interim.fill(0)}decode(e,t){const i=e.length;if(!i)return 0;let s,r,n,o,a=0,h=0,c=0;if(this.interim[0]){let s=!1,r=this.interim[0];r&=192==(224&r)?31:224==(240&r)?15:7;let n,o=0;for(;(n=63&this.interim[++o])&&o<4;)r<<=6,r|=n;const h=192==(224&this.interim[0])?2:224==(240&this.interim[0])?3:4,l=h-o;for(;c=i)return 0;if(n=e[c++],128!=(192&n)){c--,s=!0;break}this.interim[o++]=n,r<<=6,r|=63&n}s||(2===h?r<128?c--:t[a++]=r:3===h?r<2048||r>=55296&&r<=57343||65279===r||(t[a++]=r):r<65536||r>1114111||(t[a++]=r)),this.interim.fill(0)}const l=i-4;let d=c;for(;d=i)return this.interim[0]=s,a;if(r=e[d++],128!=(192&r)){d--;continue}if(h=(31&s)<<6|63&r,h<128){d--;continue}t[a++]=h}else if(224==(240&s)){if(d>=i)return this.interim[0]=s,a;if(r=e[d++],128!=(192&r)){d--;continue}if(d>=i)return this.interim[0]=s,this.interim[1]=r,a;if(n=e[d++],128!=(192&n)){d--;continue}if(h=(15&s)<<12|(63&r)<<6|63&n,h<2048||h>=55296&&h<=57343||65279===h)continue;t[a++]=h}else if(240==(248&s)){if(d>=i)return this.interim[0]=s,a;if(r=e[d++],128!=(192&r)){d--;continue}if(d>=i)return this.interim[0]=s,this.interim[1]=r,a;if(n=e[d++],128!=(192&n)){d--;continue}if(d>=i)return this.interim[0]=s,this.interim[1]=r,this.interim[2]=n,a;if(o=e[d++],128!=(192&o)){d--;continue}if(h=(7&s)<<18|(63&r)<<12|(63&n)<<6|63&o,h<65536||h>1114111)continue;t[a++]=h}}return a}}},225:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.UnicodeV6=void 0;const i=[[768,879],[1155,1158],[1160,1161],[1425,1469],[1471,1471],[1473,1474],[1476,1477],[1479,1479],[1536,1539],[1552,1557],[1611,1630],[1648,1648],[1750,1764],[1767,1768],[1770,1773],[1807,1807],[1809,1809],[1840,1866],[1958,1968],[2027,2035],[2305,2306],[2364,2364],[2369,2376],[2381,2381],[2385,2388],[2402,2403],[2433,2433],[2492,2492],[2497,2500],[2509,2509],[2530,2531],[2561,2562],[2620,2620],[2625,2626],[2631,2632],[2635,2637],[2672,2673],[2689,2690],[2748,2748],[2753,2757],[2759,2760],[2765,2765],[2786,2787],[2817,2817],[2876,2876],[2879,2879],[2881,2883],[2893,2893],[2902,2902],[2946,2946],[3008,3008],[3021,3021],[3134,3136],[3142,3144],[3146,3149],[3157,3158],[3260,3260],[3263,3263],[3270,3270],[3276,3277],[3298,3299],[3393,3395],[3405,3405],[3530,3530],[3538,3540],[3542,3542],[3633,3633],[3636,3642],[3655,3662],[3761,3761],[3764,3769],[3771,3772],[3784,3789],[3864,3865],[3893,3893],[3895,3895],[3897,3897],[3953,3966],[3968,3972],[3974,3975],[3984,3991],[3993,4028],[4038,4038],[4141,4144],[4146,4146],[4150,4151],[4153,4153],[4184,4185],[4448,4607],[4959,4959],[5906,5908],[5938,5940],[5970,5971],[6002,6003],[6068,6069],[6071,6077],[6086,6086],[6089,6099],[6109,6109],[6155,6157],[6313,6313],[6432,6434],[6439,6440],[6450,6450],[6457,6459],[6679,6680],[6912,6915],[6964,6964],[6966,6970],[6972,6972],[6978,6978],[7019,7027],[7616,7626],[7678,7679],[8203,8207],[8234,8238],[8288,8291],[8298,8303],[8400,8431],[12330,12335],[12441,12442],[43014,43014],[43019,43019],[43045,43046],[64286,64286],[65024,65039],[65056,65059],[65279,65279],[65529,65531]],s=[[68097,68099],[68101,68102],[68108,68111],[68152,68154],[68159,68159],[119143,119145],[119155,119170],[119173,119179],[119210,119213],[119362,119364],[917505,917505],[917536,917631],[917760,917999]];let r;t.UnicodeV6=class{constructor(){if(this.version="6",!r){r=new Uint8Array(65536),r.fill(1),r[0]=0,r.fill(0,1,32),r.fill(0,127,160),r.fill(2,4352,4448),r[9001]=2,r[9002]=2,r.fill(2,11904,42192),r[12351]=1,r.fill(2,44032,55204),r.fill(2,63744,64256),r.fill(2,65040,65050),r.fill(2,65072,65136),r.fill(2,65280,65377),r.fill(2,65504,65511);for(let e=0;et[r][1])return!1;for(;r>=s;)if(i=s+r>>1,e>t[i][1])s=i+1;else{if(!(e=131072&&e<=196605||e>=196608&&e<=262141?2:1}}},5981:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.WriteBuffer=void 0;const s=i(8460),r=i(844);class n extends r.Disposable{constructor(e){super(),this._action=e,this._writeBuffer=[],this._callbacks=[],this._pendingData=0,this._bufferOffset=0,this._isSyncWriting=!1,this._syncCalls=0,this._didUserInput=!1,this._onWriteParsed=this.register(new s.EventEmitter),this.onWriteParsed=this._onWriteParsed.event}handleUserInput(){this._didUserInput=!0}writeSync(e,t){if(void 0!==t&&this._syncCalls>t)return void(this._syncCalls=0);if(this._pendingData+=e.length,this._writeBuffer.push(e),this._callbacks.push(void 0),this._syncCalls++,this._isSyncWriting)return;let i;for(this._isSyncWriting=!0;i=this._writeBuffer.shift();){this._action(i);const e=this._callbacks.shift();e&&e()}this._pendingData=0,this._bufferOffset=2147483647,this._isSyncWriting=!1,this._syncCalls=0}write(e,t){if(this._pendingData>5e7)throw new Error("write data discarded, use flow control to avoid losing data");if(!this._writeBuffer.length){if(this._bufferOffset=0,this._didUserInput)return this._didUserInput=!1,this._pendingData+=e.length,this._writeBuffer.push(e),this._callbacks.push(t),void this._innerWrite();setTimeout((()=>this._innerWrite()))}this._pendingData+=e.length,this._writeBuffer.push(e),this._callbacks.push(t)}_innerWrite(e=0,t=!0){const i=e||Date.now();for(;this._writeBuffer.length>this._bufferOffset;){const e=this._writeBuffer[this._bufferOffset],s=this._action(e,t);if(s){const e=e=>Date.now()-i>=12?setTimeout((()=>this._innerWrite(0,e))):this._innerWrite(i,e);return void s.catch((e=>(queueMicrotask((()=>{throw e})),Promise.resolve(!1)))).then(e)}const r=this._callbacks[this._bufferOffset];if(r&&r(),this._bufferOffset++,this._pendingData-=e.length,Date.now()-i>=12)break}this._writeBuffer.length>this._bufferOffset?(this._bufferOffset>50&&(this._writeBuffer=this._writeBuffer.slice(this._bufferOffset),this._callbacks=this._callbacks.slice(this._bufferOffset),this._bufferOffset=0),setTimeout((()=>this._innerWrite()))):(this._writeBuffer.length=0,this._callbacks.length=0,this._pendingData=0,this._bufferOffset=0),this._onWriteParsed.fire()}}t.WriteBuffer=n},5941:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.toRgbString=t.parseColor=void 0;const i=/^([\da-f])\/([\da-f])\/([\da-f])$|^([\da-f]{2})\/([\da-f]{2})\/([\da-f]{2})$|^([\da-f]{3})\/([\da-f]{3})\/([\da-f]{3})$|^([\da-f]{4})\/([\da-f]{4})\/([\da-f]{4})$/,s=/^[\da-f]+$/;function r(e,t){const i=e.toString(16),s=i.length<2?"0"+i:i;switch(t){case 4:return i[0];case 8:return s;case 12:return(s+s).slice(0,3);default:return s+s}}t.parseColor=function(e){if(!e)return;let t=e.toLowerCase();if(0===t.indexOf("rgb:")){t=t.slice(4);const e=i.exec(t);if(e){const t=e[1]?15:e[4]?255:e[7]?4095:65535;return[Math.round(parseInt(e[1]||e[4]||e[7]||e[10],16)/t*255),Math.round(parseInt(e[2]||e[5]||e[8]||e[11],16)/t*255),Math.round(parseInt(e[3]||e[6]||e[9]||e[12],16)/t*255)]}}else if(0===t.indexOf("#")&&(t=t.slice(1),s.exec(t)&&[3,6,9,12].includes(t.length))){const e=t.length/3,i=[0,0,0];for(let s=0;s<3;++s){const r=parseInt(t.slice(e*s,e*s+e),16);i[s]=1===e?r<<4:2===e?r:3===e?r>>4:r>>8}return i}},t.toRgbString=function(e,t=16){const[i,s,n]=e;return`rgb:${r(i,t)}/${r(s,t)}/${r(n,t)}`}},5770:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.PAYLOAD_LIMIT=void 0,t.PAYLOAD_LIMIT=1e7},6351:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.DcsHandler=t.DcsParser=void 0;const s=i(482),r=i(8742),n=i(5770),o=[];t.DcsParser=class{constructor(){this._handlers=Object.create(null),this._active=o,this._ident=0,this._handlerFb=()=>{},this._stack={paused:!1,loopPosition:0,fallThrough:!1}}dispose(){this._handlers=Object.create(null),this._handlerFb=()=>{},this._active=o}registerHandler(e,t){void 0===this._handlers[e]&&(this._handlers[e]=[]);const i=this._handlers[e];return i.push(t),{dispose:()=>{const e=i.indexOf(t);-1!==e&&i.splice(e,1)}}}clearHandler(e){this._handlers[e]&&delete this._handlers[e]}setHandlerFallback(e){this._handlerFb=e}reset(){if(this._active.length)for(let e=this._stack.paused?this._stack.loopPosition-1:this._active.length-1;e>=0;--e)this._active[e].unhook(!1);this._stack.paused=!1,this._active=o,this._ident=0}hook(e,t){if(this.reset(),this._ident=e,this._active=this._handlers[e]||o,this._active.length)for(let e=this._active.length-1;e>=0;e--)this._active[e].hook(t);else this._handlerFb(this._ident,"HOOK",t)}put(e,t,i){if(this._active.length)for(let s=this._active.length-1;s>=0;s--)this._active[s].put(e,t,i);else this._handlerFb(this._ident,"PUT",(0,s.utf32ToString)(e,t,i))}unhook(e,t=!0){if(this._active.length){let i=!1,s=this._active.length-1,r=!1;if(this._stack.paused&&(s=this._stack.loopPosition-1,i=t,r=this._stack.fallThrough,this._stack.paused=!1),!r&&!1===i){for(;s>=0&&(i=this._active[s].unhook(e),!0!==i);s--)if(i instanceof Promise)return this._stack.paused=!0,this._stack.loopPosition=s,this._stack.fallThrough=!1,i;s--}for(;s>=0;s--)if(i=this._active[s].unhook(!1),i instanceof Promise)return this._stack.paused=!0,this._stack.loopPosition=s,this._stack.fallThrough=!0,i}else this._handlerFb(this._ident,"UNHOOK",e);this._active=o,this._ident=0}};const a=new r.Params;a.addParam(0),t.DcsHandler=class{constructor(e){this._handler=e,this._data="",this._params=a,this._hitLimit=!1}hook(e){this._params=e.length>1||e.params[0]?e.clone():a,this._data="",this._hitLimit=!1}put(e,t,i){this._hitLimit||(this._data+=(0,s.utf32ToString)(e,t,i),this._data.length>n.PAYLOAD_LIMIT&&(this._data="",this._hitLimit=!0))}unhook(e){let t=!1;if(this._hitLimit)t=!1;else if(e&&(t=this._handler(this._data,this._params),t instanceof Promise))return t.then((e=>(this._params=a,this._data="",this._hitLimit=!1,e)));return this._params=a,this._data="",this._hitLimit=!1,t}}},2015:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.EscapeSequenceParser=t.VT500_TRANSITION_TABLE=t.TransitionTable=void 0;const s=i(844),r=i(8742),n=i(6242),o=i(6351);class a{constructor(e){this.table=new Uint8Array(e)}setDefault(e,t){this.table.fill(e<<4|t)}add(e,t,i,s){this.table[t<<8|e]=i<<4|s}addMany(e,t,i,s){for(let r=0;rt)),i=(e,i)=>t.slice(e,i),s=i(32,127),r=i(0,24);r.push(25),r.push.apply(r,i(28,32));const n=i(0,14);let o;for(o in e.setDefault(1,0),e.addMany(s,0,2,0),n)e.addMany([24,26,153,154],o,3,0),e.addMany(i(128,144),o,3,0),e.addMany(i(144,152),o,3,0),e.add(156,o,0,0),e.add(27,o,11,1),e.add(157,o,4,8),e.addMany([152,158,159],o,0,7),e.add(155,o,11,3),e.add(144,o,11,9);return e.addMany(r,0,3,0),e.addMany(r,1,3,1),e.add(127,1,0,1),e.addMany(r,8,0,8),e.addMany(r,3,3,3),e.add(127,3,0,3),e.addMany(r,4,3,4),e.add(127,4,0,4),e.addMany(r,6,3,6),e.addMany(r,5,3,5),e.add(127,5,0,5),e.addMany(r,2,3,2),e.add(127,2,0,2),e.add(93,1,4,8),e.addMany(s,8,5,8),e.add(127,8,5,8),e.addMany([156,27,24,26,7],8,6,0),e.addMany(i(28,32),8,0,8),e.addMany([88,94,95],1,0,7),e.addMany(s,7,0,7),e.addMany(r,7,0,7),e.add(156,7,0,0),e.add(127,7,0,7),e.add(91,1,11,3),e.addMany(i(64,127),3,7,0),e.addMany(i(48,60),3,8,4),e.addMany([60,61,62,63],3,9,4),e.addMany(i(48,60),4,8,4),e.addMany(i(64,127),4,7,0),e.addMany([60,61,62,63],4,0,6),e.addMany(i(32,64),6,0,6),e.add(127,6,0,6),e.addMany(i(64,127),6,0,0),e.addMany(i(32,48),3,9,5),e.addMany(i(32,48),5,9,5),e.addMany(i(48,64),5,0,6),e.addMany(i(64,127),5,7,0),e.addMany(i(32,48),4,9,5),e.addMany(i(32,48),1,9,2),e.addMany(i(32,48),2,9,2),e.addMany(i(48,127),2,10,0),e.addMany(i(48,80),1,10,0),e.addMany(i(81,88),1,10,0),e.addMany([89,90,92],1,10,0),e.addMany(i(96,127),1,10,0),e.add(80,1,11,9),e.addMany(r,9,0,9),e.add(127,9,0,9),e.addMany(i(28,32),9,0,9),e.addMany(i(32,48),9,9,12),e.addMany(i(48,60),9,8,10),e.addMany([60,61,62,63],9,9,10),e.addMany(r,11,0,11),e.addMany(i(32,128),11,0,11),e.addMany(i(28,32),11,0,11),e.addMany(r,10,0,10),e.add(127,10,0,10),e.addMany(i(28,32),10,0,10),e.addMany(i(48,60),10,8,10),e.addMany([60,61,62,63],10,0,11),e.addMany(i(32,48),10,9,12),e.addMany(r,12,0,12),e.add(127,12,0,12),e.addMany(i(28,32),12,0,12),e.addMany(i(32,48),12,9,12),e.addMany(i(48,64),12,0,11),e.addMany(i(64,127),12,12,13),e.addMany(i(64,127),10,12,13),e.addMany(i(64,127),9,12,13),e.addMany(r,13,13,13),e.addMany(s,13,13,13),e.add(127,13,0,13),e.addMany([27,156,24,26],13,14,0),e.add(h,0,2,0),e.add(h,8,5,8),e.add(h,6,0,6),e.add(h,11,0,11),e.add(h,13,13,13),e}();class c extends s.Disposable{constructor(e=t.VT500_TRANSITION_TABLE){super(),this._transitions=e,this._parseStack={state:0,handlers:[],handlerPos:0,transition:0,chunkPos:0},this.initialState=0,this.currentState=this.initialState,this._params=new r.Params,this._params.addParam(0),this._collect=0,this.precedingCodepoint=0,this._printHandlerFb=(e,t,i)=>{},this._executeHandlerFb=e=>{},this._csiHandlerFb=(e,t)=>{},this._escHandlerFb=e=>{},this._errorHandlerFb=e=>e,this._printHandler=this._printHandlerFb,this._executeHandlers=Object.create(null),this._csiHandlers=Object.create(null),this._escHandlers=Object.create(null),this.register((0,s.toDisposable)((()=>{this._csiHandlers=Object.create(null),this._executeHandlers=Object.create(null),this._escHandlers=Object.create(null)}))),this._oscParser=this.register(new n.OscParser),this._dcsParser=this.register(new o.DcsParser),this._errorHandler=this._errorHandlerFb,this.registerEscHandler({final:"\\"},(()=>!0))}_identifier(e,t=[64,126]){let i=0;if(e.prefix){if(e.prefix.length>1)throw new Error("only one byte as prefix supported");if(i=e.prefix.charCodeAt(0),i&&60>i||i>63)throw new Error("prefix must be in range 0x3c .. 0x3f")}if(e.intermediates){if(e.intermediates.length>2)throw new Error("only two bytes as intermediates are supported");for(let t=0;ts||s>47)throw new Error("intermediate must be in range 0x20 .. 0x2f");i<<=8,i|=s}}if(1!==e.final.length)throw new Error("final must be a single byte");const s=e.final.charCodeAt(0);if(t[0]>s||s>t[1])throw new Error(`final must be in range ${t[0]} .. ${t[1]}`);return i<<=8,i|=s,i}identToString(e){const t=[];for(;e;)t.push(String.fromCharCode(255&e)),e>>=8;return t.reverse().join("")}setPrintHandler(e){this._printHandler=e}clearPrintHandler(){this._printHandler=this._printHandlerFb}registerEscHandler(e,t){const i=this._identifier(e,[48,126]);void 0===this._escHandlers[i]&&(this._escHandlers[i]=[]);const s=this._escHandlers[i];return s.push(t),{dispose:()=>{const e=s.indexOf(t);-1!==e&&s.splice(e,1)}}}clearEscHandler(e){this._escHandlers[this._identifier(e,[48,126])]&&delete this._escHandlers[this._identifier(e,[48,126])]}setEscHandlerFallback(e){this._escHandlerFb=e}setExecuteHandler(e,t){this._executeHandlers[e.charCodeAt(0)]=t}clearExecuteHandler(e){this._executeHandlers[e.charCodeAt(0)]&&delete this._executeHandlers[e.charCodeAt(0)]}setExecuteHandlerFallback(e){this._executeHandlerFb=e}registerCsiHandler(e,t){const i=this._identifier(e);void 0===this._csiHandlers[i]&&(this._csiHandlers[i]=[]);const s=this._csiHandlers[i];return s.push(t),{dispose:()=>{const e=s.indexOf(t);-1!==e&&s.splice(e,1)}}}clearCsiHandler(e){this._csiHandlers[this._identifier(e)]&&delete this._csiHandlers[this._identifier(e)]}setCsiHandlerFallback(e){this._csiHandlerFb=e}registerDcsHandler(e,t){return this._dcsParser.registerHandler(this._identifier(e),t)}clearDcsHandler(e){this._dcsParser.clearHandler(this._identifier(e))}setDcsHandlerFallback(e){this._dcsParser.setHandlerFallback(e)}registerOscHandler(e,t){return this._oscParser.registerHandler(e,t)}clearOscHandler(e){this._oscParser.clearHandler(e)}setOscHandlerFallback(e){this._oscParser.setHandlerFallback(e)}setErrorHandler(e){this._errorHandler=e}clearErrorHandler(){this._errorHandler=this._errorHandlerFb}reset(){this.currentState=this.initialState,this._oscParser.reset(),this._dcsParser.reset(),this._params.reset(),this._params.addParam(0),this._collect=0,this.precedingCodepoint=0,0!==this._parseStack.state&&(this._parseStack.state=2,this._parseStack.handlers=[])}_preserveStack(e,t,i,s,r){this._parseStack.state=e,this._parseStack.handlers=t,this._parseStack.handlerPos=i,this._parseStack.transition=s,this._parseStack.chunkPos=r}parse(e,t,i){let s,r=0,n=0,o=0;if(this._parseStack.state)if(2===this._parseStack.state)this._parseStack.state=0,o=this._parseStack.chunkPos+1;else{if(void 0===i||1===this._parseStack.state)throw this._parseStack.state=1,new Error("improper continuation due to previous async handler, giving up parsing");const t=this._parseStack.handlers;let n=this._parseStack.handlerPos-1;switch(this._parseStack.state){case 3:if(!1===i&&n>-1)for(;n>=0&&(s=t[n](this._params),!0!==s);n--)if(s instanceof Promise)return this._parseStack.handlerPos=n,s;this._parseStack.handlers=[];break;case 4:if(!1===i&&n>-1)for(;n>=0&&(s=t[n](),!0!==s);n--)if(s instanceof Promise)return this._parseStack.handlerPos=n,s;this._parseStack.handlers=[];break;case 6:if(r=e[this._parseStack.chunkPos],s=this._dcsParser.unhook(24!==r&&26!==r,i),s)return s;27===r&&(this._parseStack.transition|=1),this._params.reset(),this._params.addParam(0),this._collect=0;break;case 5:if(r=e[this._parseStack.chunkPos],s=this._oscParser.end(24!==r&&26!==r,i),s)return s;27===r&&(this._parseStack.transition|=1),this._params.reset(),this._params.addParam(0),this._collect=0}this._parseStack.state=0,o=this._parseStack.chunkPos+1,this.precedingCodepoint=0,this.currentState=15&this._parseStack.transition}for(let i=o;i>4){case 2:for(let s=i+1;;++s){if(s>=t||(r=e[s])<32||r>126&&r=t||(r=e[s])<32||r>126&&r=t||(r=e[s])<32||r>126&&r=t||(r=e[s])<32||r>126&&r=0&&(s=o[a](this._params),!0!==s);a--)if(s instanceof Promise)return this._preserveStack(3,o,a,n,i),s;a<0&&this._csiHandlerFb(this._collect<<8|r,this._params),this.precedingCodepoint=0;break;case 8:do{switch(r){case 59:this._params.addParam(0);break;case 58:this._params.addSubParam(-1);break;default:this._params.addDigit(r-48)}}while(++i47&&r<60);i--;break;case 9:this._collect<<=8,this._collect|=r;break;case 10:const c=this._escHandlers[this._collect<<8|r];let l=c?c.length-1:-1;for(;l>=0&&(s=c[l](),!0!==s);l--)if(s instanceof Promise)return this._preserveStack(4,c,l,n,i),s;l<0&&this._escHandlerFb(this._collect<<8|r),this.precedingCodepoint=0;break;case 11:this._params.reset(),this._params.addParam(0),this._collect=0;break;case 12:this._dcsParser.hook(this._collect<<8|r,this._params);break;case 13:for(let s=i+1;;++s)if(s>=t||24===(r=e[s])||26===r||27===r||r>127&&r=t||(r=e[s])<32||r>127&&r{Object.defineProperty(t,"__esModule",{value:!0}),t.OscHandler=t.OscParser=void 0;const s=i(5770),r=i(482),n=[];t.OscParser=class{constructor(){this._state=0,this._active=n,this._id=-1,this._handlers=Object.create(null),this._handlerFb=()=>{},this._stack={paused:!1,loopPosition:0,fallThrough:!1}}registerHandler(e,t){void 0===this._handlers[e]&&(this._handlers[e]=[]);const i=this._handlers[e];return i.push(t),{dispose:()=>{const e=i.indexOf(t);-1!==e&&i.splice(e,1)}}}clearHandler(e){this._handlers[e]&&delete this._handlers[e]}setHandlerFallback(e){this._handlerFb=e}dispose(){this._handlers=Object.create(null),this._handlerFb=()=>{},this._active=n}reset(){if(2===this._state)for(let e=this._stack.paused?this._stack.loopPosition-1:this._active.length-1;e>=0;--e)this._active[e].end(!1);this._stack.paused=!1,this._active=n,this._id=-1,this._state=0}_start(){if(this._active=this._handlers[this._id]||n,this._active.length)for(let e=this._active.length-1;e>=0;e--)this._active[e].start();else this._handlerFb(this._id,"START")}_put(e,t,i){if(this._active.length)for(let s=this._active.length-1;s>=0;s--)this._active[s].put(e,t,i);else this._handlerFb(this._id,"PUT",(0,r.utf32ToString)(e,t,i))}start(){this.reset(),this._state=1}put(e,t,i){if(3!==this._state){if(1===this._state)for(;t0&&this._put(e,t,i)}}end(e,t=!0){if(0!==this._state){if(3!==this._state)if(1===this._state&&this._start(),this._active.length){let i=!1,s=this._active.length-1,r=!1;if(this._stack.paused&&(s=this._stack.loopPosition-1,i=t,r=this._stack.fallThrough,this._stack.paused=!1),!r&&!1===i){for(;s>=0&&(i=this._active[s].end(e),!0!==i);s--)if(i instanceof Promise)return this._stack.paused=!0,this._stack.loopPosition=s,this._stack.fallThrough=!1,i;s--}for(;s>=0;s--)if(i=this._active[s].end(!1),i instanceof Promise)return this._stack.paused=!0,this._stack.loopPosition=s,this._stack.fallThrough=!0,i}else this._handlerFb(this._id,"END",e);this._active=n,this._id=-1,this._state=0}}},t.OscHandler=class{constructor(e){this._handler=e,this._data="",this._hitLimit=!1}start(){this._data="",this._hitLimit=!1}put(e,t,i){this._hitLimit||(this._data+=(0,r.utf32ToString)(e,t,i),this._data.length>s.PAYLOAD_LIMIT&&(this._data="",this._hitLimit=!0))}end(e){let t=!1;if(this._hitLimit)t=!1;else if(e&&(t=this._handler(this._data),t instanceof Promise))return t.then((e=>(this._data="",this._hitLimit=!1,e)));return this._data="",this._hitLimit=!1,t}}},8742:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.Params=void 0;const i=2147483647;class s{constructor(e=32,t=32){if(this.maxLength=e,this.maxSubParamsLength=t,t>256)throw new Error("maxSubParamsLength must not be greater than 256");this.params=new Int32Array(e),this.length=0,this._subParams=new Int32Array(t),this._subParamsLength=0,this._subParamsIdx=new Uint16Array(e),this._rejectDigits=!1,this._rejectSubDigits=!1,this._digitIsSub=!1}static fromArray(e){const t=new s;if(!e.length)return t;for(let i=Array.isArray(e[0])?1:0;i>8,s=255&this._subParamsIdx[t];s-i>0&&e.push(Array.prototype.slice.call(this._subParams,i,s))}return e}reset(){this.length=0,this._subParamsLength=0,this._rejectDigits=!1,this._rejectSubDigits=!1,this._digitIsSub=!1}addParam(e){if(this._digitIsSub=!1,this.length>=this.maxLength)this._rejectDigits=!0;else{if(e<-1)throw new Error("values lesser than -1 are not allowed");this._subParamsIdx[this.length]=this._subParamsLength<<8|this._subParamsLength,this.params[this.length++]=e>i?i:e}}addSubParam(e){if(this._digitIsSub=!0,this.length)if(this._rejectDigits||this._subParamsLength>=this.maxSubParamsLength)this._rejectSubDigits=!0;else{if(e<-1)throw new Error("values lesser than -1 are not allowed");this._subParams[this._subParamsLength++]=e>i?i:e,this._subParamsIdx[this.length-1]++}}hasSubParams(e){return(255&this._subParamsIdx[e])-(this._subParamsIdx[e]>>8)>0}getSubParams(e){const t=this._subParamsIdx[e]>>8,i=255&this._subParamsIdx[e];return i-t>0?this._subParams.subarray(t,i):null}getSubParamsAll(){const e={};for(let t=0;t>8,s=255&this._subParamsIdx[t];s-i>0&&(e[t]=this._subParams.slice(i,s))}return e}addDigit(e){let t;if(this._rejectDigits||!(t=this._digitIsSub?this._subParamsLength:this.length)||this._digitIsSub&&this._rejectSubDigits)return;const s=this._digitIsSub?this._subParams:this.params,r=s[t-1];s[t-1]=~r?Math.min(10*r+e,i):e}}t.Params=s},5741:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.AddonManager=void 0,t.AddonManager=class{constructor(){this._addons=[]}dispose(){for(let e=this._addons.length-1;e>=0;e--)this._addons[e].instance.dispose()}loadAddon(e,t){const i={instance:t,dispose:t.dispose,isDisposed:!1};this._addons.push(i),t.dispose=()=>this._wrappedAddonDispose(i),t.activate(e)}_wrappedAddonDispose(e){if(e.isDisposed)return;let t=-1;for(let i=0;i{Object.defineProperty(t,"__esModule",{value:!0}),t.BufferApiView=void 0;const s=i(3785),r=i(511);t.BufferApiView=class{constructor(e,t){this._buffer=e,this.type=t}init(e){return this._buffer=e,this}get cursorY(){return this._buffer.y}get cursorX(){return this._buffer.x}get viewportY(){return this._buffer.ydisp}get baseY(){return this._buffer.ybase}get length(){return this._buffer.lines.length}getLine(e){const t=this._buffer.lines.get(e);if(t)return new s.BufferLineApiView(t)}getNullCell(){return new r.CellData}}},3785:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.BufferLineApiView=void 0;const s=i(511);t.BufferLineApiView=class{constructor(e){this._line=e}get isWrapped(){return this._line.isWrapped}get length(){return this._line.length}getCell(e,t){if(!(e<0||e>=this._line.length))return t?(this._line.loadCell(e,t),t):this._line.loadCell(e,new s.CellData)}translateToString(e,t,i){return this._line.translateToString(e,t,i)}}},8285:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.BufferNamespaceApi=void 0;const s=i(8771),r=i(8460);t.BufferNamespaceApi=class{constructor(e){this._core=e,this._onBufferChange=new r.EventEmitter,this.onBufferChange=this._onBufferChange.event,this._normal=new s.BufferApiView(this._core.buffers.normal,"normal"),this._alternate=new s.BufferApiView(this._core.buffers.alt,"alternate"),this._core.buffers.onBufferActivate((()=>this._onBufferChange.fire(this.active)))}get active(){if(this._core.buffers.active===this._core.buffers.normal)return this.normal;if(this._core.buffers.active===this._core.buffers.alt)return this.alternate;throw new Error("Active buffer is neither normal nor alternate")}get normal(){return this._normal.init(this._core.buffers.normal)}get alternate(){return this._alternate.init(this._core.buffers.alt)}}},7975:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ParserApi=void 0,t.ParserApi=class{constructor(e){this._core=e}registerCsiHandler(e,t){return this._core.registerCsiHandler(e,(e=>t(e.toArray())))}addCsiHandler(e,t){return this.registerCsiHandler(e,t)}registerDcsHandler(e,t){return this._core.registerDcsHandler(e,((e,i)=>t(e,i.toArray())))}addDcsHandler(e,t){return this.registerDcsHandler(e,t)}registerEscHandler(e,t){return this._core.registerEscHandler(e,t)}addEscHandler(e,t){return this.registerEscHandler(e,t)}registerOscHandler(e,t){return this._core.registerOscHandler(e,t)}addOscHandler(e,t){return this.registerOscHandler(e,t)}}},7090:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.UnicodeApi=void 0,t.UnicodeApi=class{constructor(e){this._core=e}register(e){this._core.unicodeService.register(e)}get versions(){return this._core.unicodeService.versions}get activeVersion(){return this._core.unicodeService.activeVersion}set activeVersion(e){this._core.unicodeService.activeVersion=e}}},744:function(e,t,i){var s=this&&this.__decorate||function(e,t,i,s){var r,n=arguments.length,o=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,i):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,s);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(n<3?r(o):n>3?r(t,i,o):r(t,i))||o);return n>3&&o&&Object.defineProperty(t,i,o),o},r=this&&this.__param||function(e,t){return function(i,s){t(i,s,e)}};Object.defineProperty(t,"__esModule",{value:!0}),t.BufferService=t.MINIMUM_ROWS=t.MINIMUM_COLS=void 0;const n=i(2585),o=i(5295),a=i(8460),h=i(844);t.MINIMUM_COLS=2,t.MINIMUM_ROWS=1;let c=class extends h.Disposable{constructor(e){super(),this.isUserScrolling=!1,this._onResize=this.register(new a.EventEmitter),this.onResize=this._onResize.event,this._onScroll=this.register(new a.EventEmitter),this.onScroll=this._onScroll.event,this.cols=Math.max(e.rawOptions.cols||0,t.MINIMUM_COLS),this.rows=Math.max(e.rawOptions.rows||0,t.MINIMUM_ROWS),this.buffers=this.register(new o.BufferSet(e,this))}get buffer(){return this.buffers.active}resize(e,t){this.cols=e,this.rows=t,this.buffers.resize(e,t),this._onResize.fire({cols:e,rows:t})}reset(){this.buffers.reset(),this.isUserScrolling=!1}scroll(e,t=!1){const i=this.buffer;let s;s=this._cachedBlankLine,s&&s.length===this.cols&&s.getFg(0)===e.fg&&s.getBg(0)===e.bg||(s=i.getBlankLine(e,t),this._cachedBlankLine=s),s.isWrapped=t;const r=i.ybase+i.scrollTop,n=i.ybase+i.scrollBottom;if(0===i.scrollTop){const e=i.lines.isFull;n===i.lines.length-1?e?i.lines.recycle().copyFrom(s):i.lines.push(s.clone()):i.lines.splice(n+1,0,s.clone()),e?this.isUserScrolling&&(i.ydisp=Math.max(i.ydisp-1,0)):(i.ybase++,this.isUserScrolling||i.ydisp++)}else{const e=n-r+1;i.lines.shiftElements(r+1,e-1,-1),i.lines.set(n,s.clone())}this.isUserScrolling||(i.ydisp=i.ybase),this._onScroll.fire(i.ydisp)}scrollLines(e,t,i){const s=this.buffer;if(e<0){if(0===s.ydisp)return;this.isUserScrolling=!0}else e+s.ydisp>=s.ybase&&(this.isUserScrolling=!1);const r=s.ydisp;s.ydisp=Math.max(Math.min(s.ydisp+e,s.ybase),0),r!==s.ydisp&&(t||this._onScroll.fire(s.ydisp))}scrollPages(e){this.scrollLines(e*(this.rows-1))}scrollToTop(){this.scrollLines(-this.buffer.ydisp)}scrollToBottom(){this.scrollLines(this.buffer.ybase-this.buffer.ydisp)}scrollToLine(e){const t=e-this.buffer.ydisp;0!==t&&this.scrollLines(t)}};c=s([r(0,n.IOptionsService)],c),t.BufferService=c},7994:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.CharsetService=void 0,t.CharsetService=class{constructor(){this.glevel=0,this._charsets=[]}reset(){this.charset=void 0,this._charsets=[],this.glevel=0}setgLevel(e){this.glevel=e,this.charset=this._charsets[e]}setgCharset(e,t){this._charsets[e]=t,this.glevel===e&&(this.charset=t)}}},1753:function(e,t,i){var s=this&&this.__decorate||function(e,t,i,s){var r,n=arguments.length,o=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,i):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,s);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(n<3?r(o):n>3?r(t,i,o):r(t,i))||o);return n>3&&o&&Object.defineProperty(t,i,o),o},r=this&&this.__param||function(e,t){return function(i,s){t(i,s,e)}};Object.defineProperty(t,"__esModule",{value:!0}),t.CoreMouseService=void 0;const n=i(2585),o=i(8460),a=i(844),h={NONE:{events:0,restrict:()=>!1},X10:{events:1,restrict:e=>4!==e.button&&1===e.action&&(e.ctrl=!1,e.alt=!1,e.shift=!1,!0)},VT200:{events:19,restrict:e=>32!==e.action},DRAG:{events:23,restrict:e=>32!==e.action||3!==e.button},ANY:{events:31,restrict:e=>!0}};function c(e,t){let i=(e.ctrl?16:0)|(e.shift?4:0)|(e.alt?8:0);return 4===e.button?(i|=64,i|=e.action):(i|=3&e.button,4&e.button&&(i|=64),8&e.button&&(i|=128),32===e.action?i|=32:0!==e.action||t||(i|=3)),i}const l=String.fromCharCode,d={DEFAULT:e=>{const t=[c(e,!1)+32,e.col+32,e.row+32];return t[0]>255||t[1]>255||t[2]>255?"":`${l(t[0])}${l(t[1])}${l(t[2])}`},SGR:e=>{const t=0===e.action&&4!==e.button?"m":"M";return`[<${c(e,!0)};${e.col};${e.row}${t}`},SGR_PIXELS:e=>{const t=0===e.action&&4!==e.button?"m":"M";return`[<${c(e,!0)};${e.x};${e.y}${t}`}};let _=class extends a.Disposable{constructor(e,t){super(),this._bufferService=e,this._coreService=t,this._protocols={},this._encodings={},this._activeProtocol="",this._activeEncoding="",this._lastEvent=null,this._onProtocolChange=this.register(new o.EventEmitter),this.onProtocolChange=this._onProtocolChange.event;for(const e of Object.keys(h))this.addProtocol(e,h[e]);for(const e of Object.keys(d))this.addEncoding(e,d[e]);this.reset()}addProtocol(e,t){this._protocols[e]=t}addEncoding(e,t){this._encodings[e]=t}get activeProtocol(){return this._activeProtocol}get areMouseEventsActive(){return 0!==this._protocols[this._activeProtocol].events}set activeProtocol(e){if(!this._protocols[e])throw new Error(`unknown protocol "${e}"`);this._activeProtocol=e,this._onProtocolChange.fire(this._protocols[e].events)}get activeEncoding(){return this._activeEncoding}set activeEncoding(e){if(!this._encodings[e])throw new Error(`unknown encoding "${e}"`);this._activeEncoding=e}reset(){this.activeProtocol="NONE",this.activeEncoding="DEFAULT",this._lastEvent=null}triggerMouseEvent(e){if(e.col<0||e.col>=this._bufferService.cols||e.row<0||e.row>=this._bufferService.rows)return!1;if(4===e.button&&32===e.action)return!1;if(3===e.button&&32!==e.action)return!1;if(4!==e.button&&(2===e.action||3===e.action))return!1;if(e.col++,e.row++,32===e.action&&this._lastEvent&&this._equalEvents(this._lastEvent,e,"SGR_PIXELS"===this._activeEncoding))return!1;if(!this._protocols[this._activeProtocol].restrict(e))return!1;const t=this._encodings[this._activeEncoding](e);return t&&("DEFAULT"===this._activeEncoding?this._coreService.triggerBinaryEvent(t):this._coreService.triggerDataEvent(t,!0)),this._lastEvent=e,!0}explainEvents(e){return{down:!!(1&e),up:!!(2&e),drag:!!(4&e),move:!!(8&e),wheel:!!(16&e)}}_equalEvents(e,t,i){if(i){if(e.x!==t.x)return!1;if(e.y!==t.y)return!1}else{if(e.col!==t.col)return!1;if(e.row!==t.row)return!1}return e.button===t.button&&e.action===t.action&&e.ctrl===t.ctrl&&e.alt===t.alt&&e.shift===t.shift}};_=s([r(0,n.IBufferService),r(1,n.ICoreService)],_),t.CoreMouseService=_},6975:function(e,t,i){var s=this&&this.__decorate||function(e,t,i,s){var r,n=arguments.length,o=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,i):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,s);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(n<3?r(o):n>3?r(t,i,o):r(t,i))||o);return n>3&&o&&Object.defineProperty(t,i,o),o},r=this&&this.__param||function(e,t){return function(i,s){t(i,s,e)}};Object.defineProperty(t,"__esModule",{value:!0}),t.CoreService=void 0;const n=i(2585),o=i(8460),a=i(1439),h=i(844),c=Object.freeze({insertMode:!1}),l=Object.freeze({applicationCursorKeys:!1,applicationKeypad:!1,bracketedPasteMode:!1,origin:!1,reverseWraparound:!1,sendFocus:!1,wraparound:!0});let d=class extends h.Disposable{constructor(e,t,i){super(),this._bufferService=e,this._logService=t,this._optionsService=i,this.isCursorInitialized=!1,this.isCursorHidden=!1,this._onData=this.register(new o.EventEmitter),this.onData=this._onData.event,this._onUserInput=this.register(new o.EventEmitter),this.onUserInput=this._onUserInput.event,this._onBinary=this.register(new o.EventEmitter),this.onBinary=this._onBinary.event,this._onRequestScrollToBottom=this.register(new o.EventEmitter),this.onRequestScrollToBottom=this._onRequestScrollToBottom.event,this.modes=(0,a.clone)(c),this.decPrivateModes=(0,a.clone)(l)}reset(){this.modes=(0,a.clone)(c),this.decPrivateModes=(0,a.clone)(l)}triggerDataEvent(e,t=!1){if(this._optionsService.rawOptions.disableStdin)return;const i=this._bufferService.buffer;t&&this._optionsService.rawOptions.scrollOnUserInput&&i.ybase!==i.ydisp&&this._onRequestScrollToBottom.fire(),t&&this._onUserInput.fire(),this._logService.debug(`sending data "${e}"`,(()=>e.split("").map((e=>e.charCodeAt(0))))),this._onData.fire(e)}triggerBinaryEvent(e){this._optionsService.rawOptions.disableStdin||(this._logService.debug(`sending binary "${e}"`,(()=>e.split("").map((e=>e.charCodeAt(0))))),this._onBinary.fire(e))}};d=s([r(0,n.IBufferService),r(1,n.ILogService),r(2,n.IOptionsService)],d),t.CoreService=d},9074:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.DecorationService=void 0;const s=i(8055),r=i(8460),n=i(844),o=i(6106);let a=0,h=0;class c extends n.Disposable{constructor(){super(),this._decorations=new o.SortedList((e=>null==e?void 0:e.marker.line)),this._onDecorationRegistered=this.register(new r.EventEmitter),this.onDecorationRegistered=this._onDecorationRegistered.event,this._onDecorationRemoved=this.register(new r.EventEmitter),this.onDecorationRemoved=this._onDecorationRemoved.event,this.register((0,n.toDisposable)((()=>{for(const e of this._decorations.values())this._onDecorationRemoved.fire(e);this.reset()})))}get decorations(){return this._decorations.values()}registerDecoration(e){if(e.marker.isDisposed)return;const t=new l(e);if(t){const e=t.marker.onDispose((()=>t.dispose()));t.onDispose((()=>{t&&(this._decorations.delete(t)&&this._onDecorationRemoved.fire(t),e.dispose())})),this._decorations.insert(t),this._onDecorationRegistered.fire(t)}return t}reset(){for(const e of this._decorations.values())e.dispose();this._decorations.clear()}*getDecorationsAtCell(e,t,i){var s,r,n;let o=0,a=0;for(const h of this._decorations.getKeyIterator(t))o=null!==(s=h.options.x)&&void 0!==s?s:0,a=o+(null!==(r=h.options.width)&&void 0!==r?r:1),e>=o&&e{var r,n,o;a=null!==(r=t.options.x)&&void 0!==r?r:0,h=a+(null!==(n=t.options.width)&&void 0!==n?n:1),e>=a&&e{Object.defineProperty(t,"__esModule",{value:!0}),t.InstantiationService=t.ServiceCollection=void 0;const s=i(2585),r=i(8343);class n{constructor(...e){this._entries=new Map;for(const[t,i]of e)this.set(t,i)}set(e,t){const i=this._entries.get(e);return this._entries.set(e,t),i}forEach(e){for(const[t,i]of this._entries.entries())e(t,i)}has(e){return this._entries.has(e)}get(e){return this._entries.get(e)}}t.ServiceCollection=n,t.InstantiationService=class{constructor(){this._services=new n,this._services.set(s.IInstantiationService,this)}setService(e,t){this._services.set(e,t)}getService(e){return this._services.get(e)}createInstance(e,...t){const i=(0,r.getServiceDependencies)(e).sort(((e,t)=>e.index-t.index)),s=[];for(const t of i){const i=this._services.get(t.id);if(!i)throw new Error(`[createInstance] ${e.name} depends on UNKNOWN service ${t.id}.`);s.push(i)}const n=i.length>0?i[0].index:t.length;if(t.length!==n)throw new Error(`[createInstance] First service dependency of ${e.name} at position ${n+1} conflicts with ${t.length} static arguments`);return new e(...[...t,...s])}}},7866:function(e,t,i){var s=this&&this.__decorate||function(e,t,i,s){var r,n=arguments.length,o=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,i):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,s);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(n<3?r(o):n>3?r(t,i,o):r(t,i))||o);return n>3&&o&&Object.defineProperty(t,i,o),o},r=this&&this.__param||function(e,t){return function(i,s){t(i,s,e)}};Object.defineProperty(t,"__esModule",{value:!0}),t.LogService=void 0;const n=i(844),o=i(2585),a={debug:o.LogLevelEnum.DEBUG,info:o.LogLevelEnum.INFO,warn:o.LogLevelEnum.WARN,error:o.LogLevelEnum.ERROR,off:o.LogLevelEnum.OFF};let h=class extends n.Disposable{constructor(e){super(),this._optionsService=e,this.logLevel=o.LogLevelEnum.OFF,this._updateLogLevel(),this.register(this._optionsService.onSpecificOptionChange("logLevel",(()=>this._updateLogLevel())))}_updateLogLevel(){this.logLevel=a[this._optionsService.rawOptions.logLevel]}_evalLazyOptionalParams(e){for(let t=0;t{Object.defineProperty(t,"__esModule",{value:!0}),t.OptionsService=t.DEFAULT_OPTIONS=void 0;const s=i(8460),r=i(6114),n=i(844);t.DEFAULT_OPTIONS={cols:80,rows:24,cursorBlink:!1,cursorStyle:"block",cursorWidth:1,customGlyphs:!0,drawBoldTextInBrightColors:!0,fastScrollModifier:"alt",fastScrollSensitivity:5,fontFamily:"courier-new, courier, monospace",fontSize:15,fontWeight:"normal",fontWeightBold:"bold",lineHeight:1,letterSpacing:0,linkHandler:null,logLevel:"info",scrollback:1e3,scrollOnUserInput:!0,scrollSensitivity:1,screenReaderMode:!1,smoothScrollDuration:0,macOptionIsMeta:!1,macOptionClickForcesSelection:!1,minimumContrastRatio:1,disableStdin:!1,allowProposedApi:!1,allowTransparency:!1,tabStopWidth:8,theme:{},rightClickSelectsWord:r.isMac,windowOptions:{},windowsMode:!1,windowsPty:{},wordSeparator:" ()[]{}',\"`",altClickMovesCursor:!0,convertEol:!1,termName:"xterm",cancelEvents:!1,overviewRulerWidth:0};const o=["normal","bold","100","200","300","400","500","600","700","800","900"];class a extends n.Disposable{constructor(e){super(),this._onOptionChange=this.register(new s.EventEmitter),this.onOptionChange=this._onOptionChange.event;const i=Object.assign({},t.DEFAULT_OPTIONS);for(const t in e)if(t in i)try{const s=e[t];i[t]=this._sanitizeAndValidateOption(t,s)}catch(e){console.error(e)}this.rawOptions=i,this.options=Object.assign({},i),this._setupOptions()}onSpecificOptionChange(e,t){return this.onOptionChange((i=>{i===e&&t(this.rawOptions[e])}))}onMultipleOptionChange(e,t){return this.onOptionChange((i=>{-1!==e.indexOf(i)&&t()}))}_setupOptions(){const e=e=>{if(!(e in t.DEFAULT_OPTIONS))throw new Error(`No option with key "${e}"`);return this.rawOptions[e]},i=(e,i)=>{if(!(e in t.DEFAULT_OPTIONS))throw new Error(`No option with key "${e}"`);i=this._sanitizeAndValidateOption(e,i),this.rawOptions[e]!==i&&(this.rawOptions[e]=i,this._onOptionChange.fire(e))};for(const t in this.rawOptions){const s={get:e.bind(this,t),set:i.bind(this,t)};Object.defineProperty(this.options,t,s)}}_sanitizeAndValidateOption(e,i){switch(e){case"cursorStyle":if(i||(i=t.DEFAULT_OPTIONS[e]),!function(e){return"block"===e||"underline"===e||"bar"===e}(i))throw new Error(`"${i}" is not a valid value for ${e}`);break;case"wordSeparator":i||(i=t.DEFAULT_OPTIONS[e]);break;case"fontWeight":case"fontWeightBold":if("number"==typeof i&&1<=i&&i<=1e3)break;i=o.includes(i)?i:t.DEFAULT_OPTIONS[e];break;case"cursorWidth":i=Math.floor(i);case"lineHeight":case"tabStopWidth":if(i<1)throw new Error(`${e} cannot be less than 1, value: ${i}`);break;case"minimumContrastRatio":i=Math.max(1,Math.min(21,Math.round(10*i)/10));break;case"scrollback":if((i=Math.min(i,4294967295))<0)throw new Error(`${e} cannot be less than 0, value: ${i}`);break;case"fastScrollSensitivity":case"scrollSensitivity":if(i<=0)throw new Error(`${e} cannot be less than or equal to 0, value: ${i}`);break;case"rows":case"cols":if(!i&&0!==i)throw new Error(`${e} must be numeric, value: ${i}`);break;case"windowsPty":i=null!=i?i:{}}return i}}t.OptionsService=a},2660:function(e,t,i){var s=this&&this.__decorate||function(e,t,i,s){var r,n=arguments.length,o=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,i):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,s);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(n<3?r(o):n>3?r(t,i,o):r(t,i))||o);return n>3&&o&&Object.defineProperty(t,i,o),o},r=this&&this.__param||function(e,t){return function(i,s){t(i,s,e)}};Object.defineProperty(t,"__esModule",{value:!0}),t.OscLinkService=void 0;const n=i(2585);let o=class{constructor(e){this._bufferService=e,this._nextId=1,this._entriesWithId=new Map,this._dataByLinkId=new Map}registerLink(e){const t=this._bufferService.buffer;if(void 0===e.id){const i=t.addMarker(t.ybase+t.y),s={data:e,id:this._nextId++,lines:[i]};return i.onDispose((()=>this._removeMarkerFromLink(s,i))),this._dataByLinkId.set(s.id,s),s.id}const i=e,s=this._getEntryIdKey(i),r=this._entriesWithId.get(s);if(r)return this.addLineToLink(r.id,t.ybase+t.y),r.id;const n=t.addMarker(t.ybase+t.y),o={id:this._nextId++,key:this._getEntryIdKey(i),data:i,lines:[n]};return n.onDispose((()=>this._removeMarkerFromLink(o,n))),this._entriesWithId.set(o.key,o),this._dataByLinkId.set(o.id,o),o.id}addLineToLink(e,t){const i=this._dataByLinkId.get(e);if(i&&i.lines.every((e=>e.line!==t))){const e=this._bufferService.buffer.addMarker(t);i.lines.push(e),e.onDispose((()=>this._removeMarkerFromLink(i,e)))}}getLinkData(e){var t;return null===(t=this._dataByLinkId.get(e))||void 0===t?void 0:t.data}_getEntryIdKey(e){return`${e.id};;${e.uri}`}_removeMarkerFromLink(e,t){const i=e.lines.indexOf(t);-1!==i&&(e.lines.splice(i,1),0===e.lines.length&&(void 0!==e.data.id&&this._entriesWithId.delete(e.key),this._dataByLinkId.delete(e.id)))}};o=s([r(0,n.IBufferService)],o),t.OscLinkService=o},8343:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.createDecorator=t.getServiceDependencies=t.serviceRegistry=void 0,t.serviceRegistry=new Map,t.getServiceDependencies=function(e){return e.di$dependencies||[]},t.createDecorator=function(e){if(t.serviceRegistry.has(e))return t.serviceRegistry.get(e);const i=function(e,t,s){if(3!==arguments.length)throw new Error("@IServiceName-decorator can only be used to decorate a parameter");!function(e,t,i){t.di$target===t?t.di$dependencies.push({id:e,index:i}):(t.di$dependencies=[{id:e,index:i}],t.di$target=t)}(i,e,s)};return i.toString=()=>e,t.serviceRegistry.set(e,i),i}},2585:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.IDecorationService=t.IUnicodeService=t.IOscLinkService=t.IOptionsService=t.ILogService=t.LogLevelEnum=t.IInstantiationService=t.ICharsetService=t.ICoreService=t.ICoreMouseService=t.IBufferService=void 0;const s=i(8343);var r;t.IBufferService=(0,s.createDecorator)("BufferService"),t.ICoreMouseService=(0,s.createDecorator)("CoreMouseService"),t.ICoreService=(0,s.createDecorator)("CoreService"),t.ICharsetService=(0,s.createDecorator)("CharsetService"),t.IInstantiationService=(0,s.createDecorator)("InstantiationService"),(r=t.LogLevelEnum||(t.LogLevelEnum={}))[r.DEBUG=0]="DEBUG",r[r.INFO=1]="INFO",r[r.WARN=2]="WARN",r[r.ERROR=3]="ERROR",r[r.OFF=4]="OFF",t.ILogService=(0,s.createDecorator)("LogService"),t.IOptionsService=(0,s.createDecorator)("OptionsService"),t.IOscLinkService=(0,s.createDecorator)("OscLinkService"),t.IUnicodeService=(0,s.createDecorator)("UnicodeService"),t.IDecorationService=(0,s.createDecorator)("DecorationService")},1480:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.UnicodeService=void 0;const s=i(8460),r=i(225);t.UnicodeService=class{constructor(){this._providers=Object.create(null),this._active="",this._onChange=new s.EventEmitter,this.onChange=this._onChange.event;const e=new r.UnicodeV6;this.register(e),this._active=e.version,this._activeProvider=e}dispose(){this._onChange.dispose()}get versions(){return Object.keys(this._providers)}get activeVersion(){return this._active}set activeVersion(e){if(!this._providers[e])throw new Error(`unknown Unicode version "${e}"`);this._active=e,this._activeProvider=this._providers[e],this._onChange.fire(e)}register(e){this._providers[e.version]=e}wcwidth(e){return this._activeProvider.wcwidth(e)}getStringCellWidth(e){let t=0;const i=e.length;for(let s=0;s=i)return t+this.wcwidth(r);const n=e.charCodeAt(s);56320<=n&&n<=57343?r=1024*(r-55296)+n-56320+65536:t+=this.wcwidth(n)}t+=this.wcwidth(r)}return t}}}},t={};function i(s){var r=t[s];if(void 0!==r)return r.exports;var n=t[s]={exports:{}};return e[s].call(n.exports,n,n.exports,i),n.exports}var s={};return(()=>{var e=s;Object.defineProperty(e,"__esModule",{value:!0}),e.Terminal=void 0;const t=i(3236),r=i(9042),n=i(7975),o=i(7090),a=i(5741),h=i(8285),c=["cols","rows"];e.Terminal=class{constructor(e){this._core=new t.Terminal(e),this._addonManager=new a.AddonManager,this._publicOptions=Object.assign({},this._core.options);const i=e=>this._core.options[e],s=(e,t)=>{this._checkReadonlyOptions(e),this._core.options[e]=t};for(const e in this._core.options){const t={get:i.bind(this,e),set:s.bind(this,e)};Object.defineProperty(this._publicOptions,e,t)}}_checkReadonlyOptions(e){if(c.includes(e))throw new Error(`Option "${e}" can only be set in the constructor`)}_checkProposedApi(){if(!this._core.optionsService.rawOptions.allowProposedApi)throw new Error("You must set the allowProposedApi option to true to use proposed API")}get onBell(){return this._core.onBell}get onBinary(){return this._core.onBinary}get onCursorMove(){return this._core.onCursorMove}get onData(){return this._core.onData}get onKey(){return this._core.onKey}get onLineFeed(){return this._core.onLineFeed}get onRender(){return this._core.onRender}get onResize(){return this._core.onResize}get onScroll(){return this._core.onScroll}get onSelectionChange(){return this._core.onSelectionChange}get onTitleChange(){return this._core.onTitleChange}get onWriteParsed(){return this._core.onWriteParsed}get element(){return this._core.element}get parser(){return this._parser||(this._parser=new n.ParserApi(this._core)),this._parser}get unicode(){return this._checkProposedApi(),new o.UnicodeApi(this._core)}get textarea(){return this._core.textarea}get rows(){return this._core.rows}get cols(){return this._core.cols}get buffer(){return this._buffer||(this._buffer=new h.BufferNamespaceApi(this._core)),this._buffer}get markers(){return this._checkProposedApi(),this._core.markers}get modes(){const e=this._core.coreService.decPrivateModes;let t="none";switch(this._core.coreMouseService.activeProtocol){case"X10":t="x10";break;case"VT200":t="vt200";break;case"DRAG":t="drag";break;case"ANY":t="any"}return{applicationCursorKeysMode:e.applicationCursorKeys,applicationKeypadMode:e.applicationKeypad,bracketedPasteMode:e.bracketedPasteMode,insertMode:this._core.coreService.modes.insertMode,mouseTrackingMode:t,originMode:e.origin,reverseWraparoundMode:e.reverseWraparound,sendFocusMode:e.sendFocus,wraparoundMode:e.wraparound}}get options(){return this._publicOptions}set options(e){for(const t in e)this._publicOptions[t]=e[t]}blur(){this._core.blur()}focus(){this._core.focus()}resize(e,t){this._verifyIntegers(e,t),this._core.resize(e,t)}open(e){this._core.open(e)}attachCustomKeyEventHandler(e){this._core.attachCustomKeyEventHandler(e)}registerLinkProvider(e){return this._core.registerLinkProvider(e)}registerCharacterJoiner(e){return this._checkProposedApi(),this._core.registerCharacterJoiner(e)}deregisterCharacterJoiner(e){this._checkProposedApi(),this._core.deregisterCharacterJoiner(e)}registerMarker(e=0){return this._verifyIntegers(e),this._core.addMarker(e)}registerDecoration(e){var t,i,s;return this._checkProposedApi(),this._verifyPositiveIntegers(null!==(t=e.x)&&void 0!==t?t:0,null!==(i=e.width)&&void 0!==i?i:0,null!==(s=e.height)&&void 0!==s?s:0),this._core.registerDecoration(e)}hasSelection(){return this._core.hasSelection()}select(e,t,i){this._verifyIntegers(e,t,i),this._core.select(e,t,i)}getSelection(){return this._core.getSelection()}getSelectionPosition(){return this._core.getSelectionPosition()}clearSelection(){this._core.clearSelection()}selectAll(){this._core.selectAll()}selectLines(e,t){this._verifyIntegers(e,t),this._core.selectLines(e,t)}dispose(){this._addonManager.dispose(),this._core.dispose()}scrollLines(e){this._verifyIntegers(e),this._core.scrollLines(e)}scrollPages(e){this._verifyIntegers(e),this._core.scrollPages(e)}scrollToTop(){this._core.scrollToTop()}scrollToBottom(){this._core.scrollToBottom()}scrollToLine(e){this._verifyIntegers(e),this._core.scrollToLine(e)}clear(){this._core.clear()}write(e,t){this._core.write(e,t)}writeln(e,t){this._core.write(e),this._core.write("\r\n",t)}paste(e){this._core.paste(e)}refresh(e,t){this._verifyIntegers(e,t),this._core.refresh(e,t)}reset(){this._core.reset()}clearTextureAtlas(){this._core.clearTextureAtlas()}loadAddon(e){return this._addonManager.loadAddon(this,e)}static get strings(){return r}_verifyIntegers(...e){for(const t of e)if(t===1/0||isNaN(t)||t%1!=0)throw new Error("This API only accepts integers")}_verifyPositiveIntegers(...e){for(const t of e)if(t&&(t===1/0||isNaN(t)||t%1!=0||t<0))throw new Error("This API only accepts positive integers")}}})(),s})(),e.exports=t()}},t={};function i(s){var r=t[s];if(void 0!==r)return r.exports;var n=t[s]={exports:{}};return e[s](n,n.exports,i),n.exports}(()=>{"use strict";var e=i(320),t=function(){function t(){var e=this;this._ASSEMBLY_NAME="XtermBlazor",this._terminals=new Map,this._addonList=new Map,this.getRows=function(t){return e.getTerminalById(t).terminal.rows},this.getCols=function(t){return e.getTerminalById(t).terminal.cols},this.getOptions=function(t){return e.getTerminalById(t).terminal.options},this.setOptions=function(t,i){return e.getTerminalById(t).terminal.options=i},this.blur=function(t){return e.getTerminalById(t).terminal.blur()},this.focus=function(t){return e.getTerminalById(t).terminal.focus()},this.resize=function(t,i,s){return e.getTerminalById(t).terminal.resize(i,s)},this.hasSelection=function(t){return e.getTerminalById(t).terminal.hasSelection()},this.getSelection=function(t){return e.getTerminalById(t).terminal.getSelection()},this.getSelectionPosition=function(t){return e.getTerminalById(t).terminal.getSelectionPosition()},this.clearSelection=function(t){return e.getTerminalById(t).terminal.clearSelection()},this.select=function(t,i,s,r){return e.getTerminalById(t).terminal.select(i,s,r)},this.selectAll=function(t){return e.getTerminalById(t).terminal.selectAll()},this.selectLines=function(t,i,s){return e.getTerminalById(t).terminal.selectLines(i,s)},this.scrollLines=function(t,i){return e.getTerminalById(t).terminal.scrollLines(i)},this.scrollPages=function(t,i){return e.getTerminalById(t).terminal.scrollPages(i)},this.scrollToTop=function(t){return e.getTerminalById(t).terminal.scrollToTop()},this.scrollToBottom=function(t){return e.getTerminalById(t).terminal.scrollToBottom()},this.scrollToLine=function(t,i){return e.getTerminalById(t).terminal.scrollToLine(i)},this.clear=function(t){return e.getTerminalById(t).terminal.clear()},this.write=function(t,i){return e.getTerminalById(t).terminal.write(i)},this.writeln=function(t,i){return e.getTerminalById(t).terminal.writeln(i)},this.paste=function(t,i){return e.getTerminalById(t).terminal.paste(i)},this.refresh=function(t,i,s){return e.getTerminalById(t).terminal.refresh(i,s)},this.reset=function(t){return e.getTerminalById(t).terminal.reset()}}return t.prototype.registerTerminal=function(t,i,s,r){var n=this,o=new e.Terminal(s);o.onBinary((function(e){return DotNet.invokeMethodAsync(n._ASSEMBLY_NAME,"OnBinary",t,e)})),o.onCursorMove((function(){return DotNet.invokeMethodAsync(n._ASSEMBLY_NAME,"OnCursorMove",t)})),o.onData((function(e){return DotNet.invokeMethodAsync(n._ASSEMBLY_NAME,"OnData",t,e)})),o.onKey((function(e){return DotNet.invokeMethodAsync(n._ASSEMBLY_NAME,"OnKey",t,n.convertToArgs(e.domEvent))})),o.onLineFeed((function(){return DotNet.invokeMethodAsync(n._ASSEMBLY_NAME,"OnLineFeed",t)})),o.onScroll((function(e){return DotNet.invokeMethodAsync(n._ASSEMBLY_NAME,"OnScroll",t,e)})),o.onSelectionChange((function(){return DotNet.invokeMethodAsync(n._ASSEMBLY_NAME,"OnSelectionChange",t)})),o.onRender((function(e){return DotNet.invokeMethodAsync(n._ASSEMBLY_NAME,"OnRender",t,e)})),o.onResize((function(e){return DotNet.invokeMethodAsync(n._ASSEMBLY_NAME,"OnResize",t,{columns:e.cols,rows:e.rows})})),o.onTitleChange((function(e){return DotNet.invokeMethodAsync(n._ASSEMBLY_NAME,"OnTitleChange",t,e)})),o.onBell((function(){return DotNet.invokeMethodAsync(n._ASSEMBLY_NAME,"OnBell",t)})),o.attachCustomKeyEventHandler((function(e){var i,s;try{return DotNet.invokeMethod(n._ASSEMBLY_NAME,"AttachCustomKeyEventHandler",t,n.convertToArgs(e))}catch(r){return DotNet.invokeMethodAsync(n._ASSEMBLY_NAME,"AttachCustomKeyEventHandler",t,n.convertToArgs(e)),null===(s=null===(i=n.getTerminalById(t).customKeyEventHandler)||void 0===i?void 0:i.call(e))||void 0===s||s}}));var a=new Map;r.forEach((function(e){var t=Object.assign(Object.create(Object.getPrototypeOf(n._addonList.get(e))),n._addonList.get(e));o.loadAddon(t),a.set(e,t)})),o.open(i),this._terminals.set(t,{terminal:o,addons:a,customKeyEventHandler:void 0}),DotNet.invokeMethodAsync(this._ASSEMBLY_NAME,"OnFirstRender",t)},t.prototype.registerAddon=function(e,t){this._addonList.set(e,t)},t.prototype.registerAddons=function(e){var t=this;Object.keys(e).forEach((function(i){return t.registerAddon(i,e[i])}))},t.prototype.disposeTerminal=function(e){var t;null===(t=this._terminals.get(e))||void 0===t||t.terminal.dispose(),this._terminals.delete(e)},t.prototype.invokeAddonFunction=function(e,t,i){var s;return(s=this.getTerminalById(e).addons.get(t))[i].apply(s,arguments[3])},t.prototype.getTerminalById=function(e){var t=this._terminals.get(e);if(!t)throw new Error("Fail to get terminal by reference id");return t},t.prototype.convertToArgs=function(e){return{key:e.key,code:e.code,location:e.location,repeat:e.repeat,ctrlKey:e.ctrlKey,shiftKey:e.shiftKey,altKey:e.altKey,metaKey:e.metaKey,type:e.type}},t}();window.XtermBlazor=new t})()})(); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,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LElBQUksSUFBSSxJQUFJLEtBQUt0c0MsRUFBRXNzQyxTQUFTejVCLEVBQUUsQ0FBQyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksS0FBSzdTLEVBQUVzc0MsU0FBU2tNLEVBQUUsQ0FBQyxJQUFJLElBQUksSUFBSSxJQUFJLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEtBQUt4NEMsRUFBRXNzQyxTQUFTbU0sRUFBRSxDQUFDLElBQUksSUFBSSxJQUFJLElBQUksS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEtBQUt6NEMsRUFBRXNzQyxTQUFTb00sRUFBRSxDQUFDLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksS0FBSzE0QyxFQUFFc3NDLFNBQVM1NUIsRUFBRTFTLEVBQUVzc0MsU0FBUyxHQUFHLENBQUMsSUFBSSxJQUFJLElBQUksSUFBSSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxLQUFLdHNDLEVBQUVzc0MsU0FBU3FNLEVBQUUsQ0FBQyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxLQUFLMzRDLEVBQUVzc0MsU0FBU3NNLEVBQUU1NEMsRUFBRXNzQyxTQUFTLEdBQUcsQ0FBQyxJQUFJLElBQUksSUFBSSxJQUFJLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEtBQUt0c0MsRUFBRXNzQyxTQUFTLEtBQUssQ0FBQyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksSUFBSTdxQyxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBRyxFQUFHLEtBQUssQ0FBQ3ZCLEVBQUVGLEtBQUssSUFBSUcsRUFBRUMsRUFBRVEsT0FBT0ssZUFBZWpCLEVBQUUsYUFBYSxDQUFDbUIsT0FBTSxJQUFLbkIsRUFBRTZXLFdBQVc3VyxFQUFFOHFDLEdBQUc5cUMsRUFBRTBXLFFBQUcsRUFBTyxTQUFTeFcsR0FBR0EsRUFBRTI0QyxJQUFJLEtBQUszNEMsRUFBRTQ0QyxJQUFJLElBQUk1NEMsRUFBRTY0QyxJQUFJLElBQUk3NEMsRUFBRWdoQixJQUFJLElBQUloaEIsRUFBRTg0QyxJQUFJLElBQUk5NEMsRUFBRSs0QyxJQUFJLElBQUkvNEMsRUFBRWc1QyxJQUFJLElBQUloNUMsRUFBRTZwQyxJQUFJLElBQUk3cEMsRUFBRW9xQyxHQUFHLEtBQUtwcUMsRUFBRXNxQyxHQUFHLEtBQUt0cUMsRUFBRStwQyxHQUFHLEtBQUsvcEMsRUFBRWlxQyxHQUFHLEtBQUtqcUMsRUFBRWtxQyxHQUFHLEtBQUtscUMsRUFBRWloQixHQUFHLEtBQUtqaEIsRUFBRXdxQyxHQUFHLElBQUl4cUMsRUFBRTBxQyxHQUFHLElBQUkxcUMsRUFBRWk1QyxJQUFJLElBQUlqNUMsRUFBRWs1QyxJQUFJLElBQUlsNUMsRUFBRW01QyxJQUFJLElBQUluNUMsRUFBRW81QyxJQUFJLElBQUlwNUMsRUFBRXE1QyxJQUFJLElBQUlyNUMsRUFBRXM1QyxJQUFJLElBQUl0NUMsRUFBRXU1QyxJQUFJLElBQUl2NUMsRUFBRXc1QyxJQUFJLElBQUl4NUMsRUFBRXk1QyxJQUFJLElBQUl6NUMsRUFBRTA1QyxHQUFHLElBQUkxNUMsRUFBRTI1QyxJQUFJLElBQUkzNUMsRUFBRXlXLElBQUksSUFBSXpXLEVBQUU0NUMsR0FBRyxJQUFJNTVDLEVBQUU2NUMsR0FBRyxJQUFJNzVDLEVBQUU4NUMsR0FBRyxJQUFJOTVDLEVBQUUrNUMsR0FBRyxJQUFJLzVDLEVBQUVnNkMsR0FBRyxJQUFJaDZDLEVBQUVzckIsSUFBSSxHQUFHLENBQXhWLENBQTBWcnJCLEVBQUVILEVBQUUwVyxLQUFLMVcsRUFBRTBXLEdBQUcsQ0FBQyxLQUFLdFcsRUFBRUosRUFBRThxQyxLQUFLOXFDLEVBQUU4cUMsR0FBRyxDQUFDLElBQUlxUCxJQUFJLElBQUkvNUMsRUFBRWc2QyxJQUFJLElBQUloNkMsRUFBRWk2QyxJQUFJLElBQUlqNkMsRUFBRWs2QyxJQUFJLElBQUlsNkMsRUFBRTJxQyxJQUFJLElBQUkzcUMsRUFBRTRxQyxJQUFJLElBQUk1cUMsRUFBRW02QyxJQUFJLElBQUluNkMsRUFBRW82QyxJQUFJLElBQUlwNkMsRUFBRThxQyxJQUFJLElBQUk5cUMsRUFBRXE2QyxJQUFJLElBQUlyNkMsRUFBRXM2QyxJQUFJLElBQUl0NkMsRUFBRXU2QyxJQUFJLElBQUl2NkMsRUFBRXc2QyxJQUFJLElBQUl4NkMsRUFBRXk2QyxHQUFHLElBQUl6NkMsRUFBRTA2QyxJQUFJLElBQUkxNkMsRUFBRTI2QyxJQUFJLElBQUkzNkMsRUFBRTQ2QyxJQUFJLElBQUk1NkMsRUFBRTY2QyxJQUFJLElBQUk3NkMsRUFBRTg2QyxJQUFJLElBQUk5NkMsRUFBRSs2QyxJQUFJLElBQUkvNkMsRUFBRWc3QyxJQUFJLElBQUloN0MsRUFBRWk3QyxHQUFHLElBQUlqN0MsRUFBRWs3QyxJQUFJLElBQUlsN0MsRUFBRW03QyxJQUFJLElBQUluN0MsRUFBRW83QyxJQUFJLElBQUlwN0MsRUFBRXE3QyxLQUFLLElBQUlyN0MsRUFBRXM3QyxJQUFJLElBQUl0N0MsRUFBRXU3QyxJQUFJLElBQUl2N0MsRUFBRTBXLEdBQUcsSUFBSTFXLEVBQUV3N0MsSUFBSSxJQUFJeDdDLEVBQUV5N0MsR0FBRyxJQUFJejdDLEVBQUUwN0MsSUFBSSxLQUFLOTdDLEVBQUU2VyxhQUFhN1csRUFBRTZXLFdBQVcsQ0FBQyxJQUFJQyxHQUFHLEdBQUczVyxFQUFFd1csT0FBRyxFQUFNLEtBQUssQ0FBQ3pXLEVBQUVGLEVBQUVHLEtBQUtTLE9BQU9LLGVBQWVqQixFQUFFLGFBQWEsQ0FBQ21CLE9BQU0sSUFBS25CLEVBQUU4Z0IsMkJBQXNCLEVBQU8sTUFBTTFnQixFQUFFRCxFQUFFLE1BQU1JLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxLQUFLLEdBQUcsQ0FBQyxJQUFJLEtBQUssR0FBRyxDQUFDLElBQUksS0FBSyxHQUFHLENBQUMsSUFBSSxLQUFLLEdBQUcsQ0FBQyxJQUFJLEtBQUssR0FBRyxDQUFDLElBQUksS0FBSyxHQUFHLENBQUMsSUFBSSxLQUFLLEdBQUcsQ0FBQyxJQUFJLEtBQUssR0FBRyxDQUFDLElBQUksS0FBSyxHQUFHLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLElBQUksTUFBTVAsRUFBRThnQixzQkFBc0IsU0FBUzVnQixFQUFFRixFQUFFRyxFQUFFSyxHQUFHLE1BQU1HLEVBQUUsQ0FBQ3lWLEtBQUssRUFBRXVJLFFBQU8sRUFBR2xhLFNBQUksR0FBUXpELEdBQUdkLEVBQUVvZSxTQUFTLEVBQUUsSUFBSXBlLEVBQUVtZSxPQUFPLEVBQUUsSUFBSW5lLEVBQUVpZSxRQUFRLEVBQUUsSUFBSWplLEVBQUU4Z0IsUUFBUSxFQUFFLEdBQUcsT0FBTzlnQixFQUFFcWhCLFNBQVMsS0FBSyxFQUFFLHNCQUFzQnJoQixFQUFFdUUsSUFBSTlELEVBQUU4RCxJQUFJekUsRUFBRUksRUFBRXNXLEdBQUdDLElBQUksS0FBS3ZXLEVBQUVzVyxHQUFHQyxJQUFJLEtBQUssd0JBQXdCelcsRUFBRXVFLElBQUk5RCxFQUFFOEQsSUFBSXpFLEVBQUVJLEVBQUVzVyxHQUFHQyxJQUFJLEtBQUt2VyxFQUFFc1csR0FBR0MsSUFBSSxLQUFLLHlCQUF5QnpXLEVBQUV1RSxJQUFJOUQsRUFBRThELElBQUl6RSxFQUFFSSxFQUFFc1csR0FBR0MsSUFBSSxLQUFLdlcsRUFBRXNXLEdBQUdDLElBQUksS0FBSyx3QkFBd0J6VyxFQUFFdUUsTUFBTTlELEVBQUU4RCxJQUFJekUsRUFBRUksRUFBRXNXLEdBQUdDLElBQUksS0FBS3ZXLEVBQUVzVyxHQUFHQyxJQUFJLE1BQU0sTUFBTSxLQUFLLEVBQUUsR0FBR3pXLEVBQUVtZSxPQUFPLENBQUMxZCxFQUFFOEQsSUFBSXJFLEVBQUVzVyxHQUFHQyxJQUFJdlcsRUFBRXNXLEdBQUc4VSxJQUFJLEtBQUssQ0FBQzdxQixFQUFFOEQsSUFBSXJFLEVBQUVzVyxHQUFHOFUsSUFBSSxNQUFNLEtBQUssRUFBRSxHQUFHdHJCLEVBQUVvZSxTQUFTLENBQUMzZCxFQUFFOEQsSUFBSXJFLEVBQUVzVyxHQUFHQyxJQUFJLEtBQUssS0FBSyxDQUFDaFcsRUFBRThELElBQUlyRSxFQUFFc1csR0FBRzh6QixHQUFHN3BDLEVBQUVnZSxRQUFPLEVBQUcsTUFBTSxLQUFLLEdBQUdoZSxFQUFFOEQsSUFBSXZFLEVBQUVtZSxPQUFPamUsRUFBRXNXLEdBQUdDLElBQUl2VyxFQUFFc1csR0FBR3lLLEdBQUcvZ0IsRUFBRXNXLEdBQUd5SyxHQUFHeGdCLEVBQUVnZSxRQUFPLEVBQUcsTUFBTSxLQUFLLEdBQUdoZSxFQUFFOEQsSUFBSXJFLEVBQUVzVyxHQUFHQyxJQUFJelcsRUFBRW1lLFNBQVMxZCxFQUFFOEQsSUFBSXJFLEVBQUVzVyxHQUFHQyxJQUFJdlcsRUFBRXNXLEdBQUdDLEtBQUtoVyxFQUFFZ2UsUUFBTyxFQUFHLE1BQU0sS0FBSyxHQUFHLEdBQUd6ZSxFQUFFOGdCLFFBQVEsTUFBTWhnQixHQUFHTCxFQUFFOEQsSUFBSXJFLEVBQUVzVyxHQUFHQyxJQUFJLE9BQU8zVixFQUFFLEdBQUcsSUFBSUwsRUFBRThELE1BQU1yRSxFQUFFc1csR0FBR0MsSUFBSSxVQUFVaFcsRUFBRThELElBQUlyRSxFQUFFc1csR0FBR0MsS0FBS3hXLEVBQUUsSUFBSSxXQUFXUSxFQUFFOEQsSUFBSXpFLEVBQUVJLEVBQUVzVyxHQUFHQyxJQUFJLEtBQUt2VyxFQUFFc1csR0FBR0MsSUFBSSxLQUFLLE1BQU0sS0FBSyxHQUFHLEdBQUd6VyxFQUFFOGdCLFFBQVEsTUFBTWhnQixHQUFHTCxFQUFFOEQsSUFBSXJFLEVBQUVzVyxHQUFHQyxJQUFJLE9BQU8zVixFQUFFLEdBQUcsSUFBSUwsRUFBRThELE1BQU1yRSxFQUFFc1csR0FBR0MsSUFBSSxVQUFVaFcsRUFBRThELElBQUlyRSxFQUFFc1csR0FBR0MsS0FBS3hXLEVBQUUsSUFBSSxXQUFXUSxFQUFFOEQsSUFBSXpFLEVBQUVJLEVBQUVzVyxHQUFHQyxJQUFJLEtBQUt2VyxFQUFFc1csR0FBR0MsSUFBSSxLQUFLLE1BQU0sS0FBSyxHQUFHLEdBQUd6VyxFQUFFOGdCLFFBQVEsTUFBTWhnQixHQUFHTCxFQUFFOEQsSUFBSXJFLEVBQUVzVyxHQUFHQyxJQUFJLE9BQU8zVixFQUFFLEdBQUcsSUFBSWIsR0FBR1EsRUFBRThELE1BQU1yRSxFQUFFc1csR0FBR0MsSUFBSSxVQUFVaFcsRUFBRThELElBQUlyRSxFQUFFc1csR0FBR0MsSUFBSSxVQUFVaFcsRUFBRThELElBQUl6RSxFQUFFSSxFQUFFc1csR0FBR0MsSUFBSSxLQUFLdlcsRUFBRXNXLEdBQUdDLElBQUksS0FBSyxNQUFNLEtBQUssR0FBRyxHQUFHelcsRUFBRThnQixRQUFRLE1BQU1oZ0IsR0FBR0wsRUFBRThELElBQUlyRSxFQUFFc1csR0FBR0MsSUFBSSxPQUFPM1YsRUFBRSxHQUFHLElBQUliLEdBQUdRLEVBQUU4RCxNQUFNckUsRUFBRXNXLEdBQUdDLElBQUksVUFBVWhXLEVBQUU4RCxJQUFJckUsRUFBRXNXLEdBQUdDLElBQUksVUFBVWhXLEVBQUU4RCxJQUFJekUsRUFBRUksRUFBRXNXLEdBQUdDLElBQUksS0FBS3ZXLEVBQUVzVyxHQUFHQyxJQUFJLEtBQUssTUFBTSxLQUFLLEdBQUd6VyxFQUFFb2UsVUFBVXBlLEVBQUVpZSxVQUFVeGQsRUFBRThELElBQUlyRSxFQUFFc1csR0FBR0MsSUFBSSxPQUFPLE1BQU0sS0FBSyxHQUFHaFcsRUFBRThELElBQUl6RCxFQUFFWixFQUFFc1csR0FBR0MsSUFBSSxPQUFPM1YsRUFBRSxHQUFHLElBQUlaLEVBQUVzVyxHQUFHQyxJQUFJLE1BQU0sTUFBTSxLQUFLLEdBQUdoVyxFQUFFOEQsSUFBSXpELEVBQUVaLEVBQUVzVyxHQUFHQyxJQUFJLE9BQU8zVixFQUFFLEdBQUcsSUFBSWhCLEVBQUVJLEVBQUVzVyxHQUFHQyxJQUFJLEtBQUt2VyxFQUFFc1csR0FBR0MsSUFBSSxLQUFLLE1BQU0sS0FBSyxHQUFHaFcsRUFBRThELElBQUl6RCxFQUFFWixFQUFFc1csR0FBR0MsSUFBSSxPQUFPM1YsRUFBRSxHQUFHLElBQUloQixFQUFFSSxFQUFFc1csR0FBR0MsSUFBSSxLQUFLdlcsRUFBRXNXLEdBQUdDLElBQUksS0FBSyxNQUFNLEtBQUssR0FBR3pXLEVBQUVvZSxTQUFTM2QsRUFBRXlWLEtBQUssRUFBRWxXLEVBQUVpZSxRQUFReGQsRUFBRThELElBQUlyRSxFQUFFc1csR0FBR0MsSUFBSSxPQUFPM1YsRUFBRSxHQUFHLElBQUlMLEVBQUU4RCxJQUFJckUsRUFBRXNXLEdBQUdDLElBQUksTUFBTSxNQUFNLEtBQUssR0FBR3pXLEVBQUVvZSxTQUFTM2QsRUFBRXlWLEtBQUssRUFBRWxXLEVBQUVpZSxRQUFReGQsRUFBRThELElBQUlyRSxFQUFFc1csR0FBR0MsSUFBSSxPQUFPM1YsRUFBRSxHQUFHLElBQUlMLEVBQUU4RCxJQUFJckUsRUFBRXNXLEdBQUdDLElBQUksTUFBTSxNQUFNLEtBQUssSUFBSWhXLEVBQUU4RCxJQUFJekQsRUFBRVosRUFBRXNXLEdBQUdDLElBQUksT0FBTzNWLEVBQUUsR0FBRyxJQUFJWixFQUFFc1csR0FBR0MsSUFBSSxLQUFLLE1BQU0sS0FBSyxJQUFJaFcsRUFBRThELElBQUl6RCxFQUFFWixFQUFFc1csR0FBR0MsSUFBSSxPQUFPM1YsRUFBRSxHQUFHLElBQUlaLEVBQUVzVyxHQUFHQyxJQUFJLEtBQUssTUFBTSxLQUFLLElBQUloVyxFQUFFOEQsSUFBSXpELEVBQUVaLEVBQUVzVyxHQUFHQyxJQUFJLE9BQU8zVixFQUFFLEdBQUcsSUFBSVosRUFBRXNXLEdBQUdDLElBQUksS0FBSyxNQUFNLEtBQUssSUFBSWhXLEVBQUU4RCxJQUFJekQsRUFBRVosRUFBRXNXLEdBQUdDLElBQUksT0FBTzNWLEVBQUUsR0FBRyxJQUFJWixFQUFFc1csR0FBR0MsSUFBSSxLQUFLLE1BQU0sS0FBSyxJQUFJaFcsRUFBRThELElBQUl6RCxFQUFFWixFQUFFc1csR0FBR0MsSUFBSSxRQUFRM1YsRUFBRSxHQUFHLElBQUlaLEVBQUVzVyxHQUFHQyxJQUFJLE9BQU8sTUFBTSxLQUFLLElBQUloVyxFQUFFOEQsSUFBSXpELEVBQUVaLEVBQUVzVyxHQUFHQyxJQUFJLFFBQVEzVixFQUFFLEdBQUcsSUFBSVosRUFBRXNXLEdBQUdDLElBQUksT0FBTyxNQUFNLEtBQUssSUFBSWhXLEVBQUU4RCxJQUFJekQsRUFBRVosRUFBRXNXLEdBQUdDLElBQUksUUFBUTNWLEVBQUUsR0FBRyxJQUFJWixFQUFFc1csR0FBR0MsSUFBSSxPQUFPLE1BQU0sS0FBSyxJQUFJaFcsRUFBRThELElBQUl6RCxFQUFFWixFQUFFc1csR0FBR0MsSUFBSSxRQUFRM1YsRUFBRSxHQUFHLElBQUlaLEVBQUVzVyxHQUFHQyxJQUFJLE9BQU8sTUFBTSxLQUFLLElBQUloVyxFQUFFOEQsSUFBSXpELEVBQUVaLEVBQUVzVyxHQUFHQyxJQUFJLFFBQVEzVixFQUFFLEdBQUcsSUFBSVosRUFBRXNXLEdBQUdDLElBQUksT0FBTyxNQUFNLEtBQUssSUFBSWhXLEVBQUU4RCxJQUFJekQsRUFBRVosRUFBRXNXLEdBQUdDLElBQUksUUFBUTNWLEVBQUUsR0FBRyxJQUFJWixFQUFFc1csR0FBR0MsSUFBSSxPQUFPLE1BQU0sS0FBSyxJQUFJaFcsRUFBRThELElBQUl6RCxFQUFFWixFQUFFc1csR0FBR0MsSUFBSSxRQUFRM1YsRUFBRSxHQUFHLElBQUlaLEVBQUVzVyxHQUFHQyxJQUFJLE9BQU8sTUFBTSxLQUFLLElBQUloVyxFQUFFOEQsSUFBSXpELEVBQUVaLEVBQUVzVyxHQUFHQyxJQUFJLFFBQVEzVixFQUFFLEdBQUcsSUFBSVosRUFBRXNXLEdBQUdDLElBQUksT0FBTyxNQUFNLFFBQVEsSUFBSXpXLEVBQUVpZSxTQUFTamUsRUFBRW9lLFVBQVVwZSxFQUFFbWUsUUFBUW5lLEVBQUU4Z0IsUUFBUSxHQUFHN2dCLElBQUlLLElBQUlOLEVBQUVtZSxRQUFRbmUsRUFBRThnQixTQUFTN2dCLEdBQUdELEVBQUVtZSxRQUFRbmUsRUFBRWllLFNBQVNqZSxFQUFFb2UsV0FBV3BlLEVBQUU4Z0IsUUFBUTlnQixFQUFFdUUsTUFBTXZFLEVBQUVpZSxVQUFVamUsRUFBRW1lLFNBQVNuZSxFQUFFOGdCLFNBQVM5Z0IsRUFBRXFoQixTQUFTLElBQUksSUFBSXJoQixFQUFFdUUsSUFBSS9ELE9BQU9DLEVBQUU4RCxJQUFJdkUsRUFBRXVFLElBQUl2RSxFQUFFdUUsS0FBS3ZFLEVBQUVpZSxVQUFVLE1BQU1qZSxFQUFFdUUsTUFBTTlELEVBQUU4RCxJQUFJckUsRUFBRXNXLEdBQUd1akMsSUFBSSxNQUFNLzVDLEVBQUV1RSxNQUFNOUQsRUFBRThELElBQUlyRSxFQUFFc1csR0FBR21pQyxNQUFNLEtBQUszNEMsRUFBRXFoQixVQUFVNWdCLEVBQUV5VixLQUFLLE9BQU8sQ0FBQyxNQUFNcFcsRUFBRU8sRUFBRUwsRUFBRXFoQixTQUFTcGhCLEVBQUUsTUFBTUgsT0FBRSxFQUFPQSxFQUFFRSxFQUFFb2UsU0FBUyxFQUFFLEdBQUcsR0FBR25lLEVBQUVRLEVBQUU4RCxJQUFJckUsRUFBRXNXLEdBQUdDLElBQUl4VyxPQUFPLEdBQUdELEVBQUVxaEIsU0FBUyxJQUFJcmhCLEVBQUVxaEIsU0FBUyxHQUFHLENBQUMsTUFBTXZoQixFQUFFRSxFQUFFaWUsUUFBUWplLEVBQUVxaEIsUUFBUSxHQUFHcmhCLEVBQUVxaEIsUUFBUSxHQUFHLElBQUlwaEIsRUFBRXVoQixPQUFPQyxhQUFhM2hCLEdBQUdFLEVBQUVvZSxXQUFXbmUsRUFBRUEsRUFBRTQ3QyxlQUFlcDdDLEVBQUU4RCxJQUFJckUsRUFBRXNXLEdBQUdDLElBQUl4VyxDQUFDLE1BQU0sR0FBRyxLQUFLRCxFQUFFcWhCLFFBQVE1Z0IsRUFBRThELElBQUlyRSxFQUFFc1csR0FBR0MsS0FBS3pXLEVBQUVpZSxRQUFRL2QsRUFBRXNXLEdBQUdtaUMsSUFBSSxVQUFVLEdBQUcsU0FBUzM0QyxFQUFFdUUsS0FBS3ZFLEVBQUVxbUMsS0FBS3dLLFdBQVcsT0FBTyxDQUFDLElBQUkvd0MsRUFBRUUsRUFBRXFtQyxLQUFLMU0sTUFBTSxFQUFFLEdBQUczNUIsRUFBRW9lLFdBQVd0ZSxFQUFFQSxFQUFFZzhDLGVBQWVyN0MsRUFBRThELElBQUlyRSxFQUFFc1csR0FBR0MsSUFBSTNXLEVBQUVXLEVBQUVnZSxRQUFPLENBQUUsQ0FBQyxNQUFNemUsRUFBRXFoQixTQUFTLElBQUlyaEIsRUFBRXFoQixTQUFTLEdBQUc1Z0IsRUFBRThELElBQUlpZCxPQUFPQyxhQUFhemhCLEVBQUVxaEIsUUFBUSxJQUFJLEtBQUtyaEIsRUFBRXFoQixRQUFRNWdCLEVBQUU4RCxJQUFJckUsRUFBRXNXLEdBQUdtaUMsSUFBSTM0QyxFQUFFcWhCLFNBQVMsSUFBSXJoQixFQUFFcWhCLFNBQVMsR0FBRzVnQixFQUFFOEQsSUFBSWlkLE9BQU9DLGFBQWF6aEIsRUFBRXFoQixRQUFRLEdBQUcsSUFBSSxLQUFLcmhCLEVBQUVxaEIsUUFBUTVnQixFQUFFOEQsSUFBSXJFLEVBQUVzVyxHQUFHOFUsSUFBSSxNQUFNdHJCLEVBQUVxaEIsUUFBUTVnQixFQUFFOEQsSUFBSXJFLEVBQUVzVyxHQUFHQyxJQUFJLE1BQU16VyxFQUFFcWhCLFFBQVE1Z0IsRUFBRThELElBQUlyRSxFQUFFc1csR0FBR29qQyxHQUFHLE1BQU01NUMsRUFBRXFoQixVQUFVNWdCLEVBQUU4RCxJQUFJckUsRUFBRXNXLEdBQUdxakMsSUFBSSxPQUFPcDVDLENBQUMsR0FBRyxJQUFJLENBQUNULEVBQUVGLEtBQUtZLE9BQU9LLGVBQWVqQixFQUFFLGFBQWEsQ0FBQ21CLE9BQU0sSUFBS25CLEVBQUV5a0MsWUFBWXprQyxFQUFFdWtDLGNBQWN2a0MsRUFBRWk4QyxjQUFjajhDLEVBQUUrdEMseUJBQW9CLEVBQU8vdEMsRUFBRSt0QyxvQkFBb0IsU0FBUzd0QyxHQUFHLE9BQU9BLEVBQUUsT0FBT0EsR0FBRyxNQUFNd2hCLE9BQU9DLGFBQWEsT0FBT3poQixHQUFHLEtBQUt3aEIsT0FBT0MsYUFBYXpoQixFQUFFLEtBQUssUUFBUXdoQixPQUFPQyxhQUFhemhCLEVBQUUsRUFBRUYsRUFBRWk4QyxjQUFjLFNBQVMvN0MsRUFBRUYsRUFBRSxFQUFFRyxFQUFFRCxFQUFFUSxRQUFRLElBQUlOLEVBQUUsR0FBRyxJQUFJLElBQUlHLEVBQUVQLEVBQUVPLEVBQUVKLElBQUlJLEVBQUUsQ0FBQyxJQUFJUCxFQUFFRSxFQUFFSyxHQUFHUCxFQUFFLE9BQU9BLEdBQUcsTUFBTUksR0FBR3NoQixPQUFPQyxhQUFhLE9BQU8zaEIsR0FBRyxLQUFLMGhCLE9BQU9DLGFBQWEzaEIsRUFBRSxLQUFLLFFBQVFJLEdBQUdzaEIsT0FBT0MsYUFBYTNoQixFQUFFLENBQUMsT0FBT0ksQ0FBQyxFQUFFSixFQUFFdWtDLGNBQWMsTUFBTTVpQyxjQUFjdEIsS0FBSzY3QyxTQUFTLENBQUMsQ0FBQzN5QyxRQUFRbEosS0FBSzY3QyxTQUFTLENBQUMsQ0FBQzNPLE9BQU9ydEMsRUFBRUYsR0FBRyxNQUFNRyxFQUFFRCxFQUFFUSxPQUFPLElBQUlQLEVBQUUsT0FBTyxFQUFFLElBQUlDLEVBQUUsRUFBRUcsRUFBRSxFQUFFLEdBQUdGLEtBQUs2N0MsU0FBUyxDQUFDLE1BQU0vN0MsRUFBRUQsRUFBRStnQixXQUFXMWdCLEtBQUssT0FBT0osR0FBR0EsR0FBRyxNQUFNSCxFQUFFSSxLQUFLLE1BQU1DLEtBQUs2N0MsU0FBUyxPQUFPLzdDLEVBQUUsTUFBTSxPQUFPSCxFQUFFSSxLQUFLQyxLQUFLNjdDLFNBQVNsOEMsRUFBRUksS0FBS0QsR0FBR0UsS0FBSzY3QyxTQUFTLENBQUMsQ0FBQyxJQUFJLElBQUkxN0MsRUFBRUQsRUFBRUMsRUFBRUwsSUFBSUssRUFBRSxDQUFDLE1BQU1ELEVBQUVMLEVBQUUrZ0IsV0FBV3pnQixHQUFHLEdBQUcsT0FBT0QsR0FBR0EsR0FBRyxNQUFNLENBQUMsS0FBS0MsR0FBR0wsRUFBRSxPQUFPRSxLQUFLNjdDLFNBQVMzN0MsRUFBRUgsRUFBRSxNQUFNTyxFQUFFVCxFQUFFK2dCLFdBQVd6Z0IsR0FBRyxPQUFPRyxHQUFHQSxHQUFHLE1BQU1YLEVBQUVJLEtBQUssTUFBTUcsRUFBRSxPQUFPSSxFQUFFLE1BQU0sT0FBT1gsRUFBRUksS0FBS0csRUFBRVAsRUFBRUksS0FBS08sRUFBRSxNQUFNLFFBQVFKLElBQUlQLEVBQUVJLEtBQUtHLEVBQUUsQ0FBQyxPQUFPSCxDQUFDLEdBQUdKLEVBQUV5a0MsWUFBWSxNQUFNOWlDLGNBQWN0QixLQUFLODdDLFFBQVEsSUFBSUMsV0FBVyxFQUFFLENBQUM3eUMsUUFBUWxKLEtBQUs4N0MsUUFBUWxxQixLQUFLLEVBQUUsQ0FBQ3NiLE9BQU9ydEMsRUFBRUYsR0FBRyxNQUFNRyxFQUFFRCxFQUFFUSxPQUFPLElBQUlQLEVBQUUsT0FBTyxFQUFFLElBQUlDLEVBQUVHLEVBQUVDLEVBQUVHLEVBQUVLLEVBQUUsRUFBRUssRUFBRSxFQUFFQyxFQUFFLEVBQUUsR0FBR2pCLEtBQUs4N0MsUUFBUSxHQUFHLENBQUMsSUFBSS83QyxHQUFFLEVBQUdHLEVBQUVGLEtBQUs4N0MsUUFBUSxHQUFHNTdDLEdBQUcsTUFBTSxJQUFJQSxHQUFHLEdBQUcsTUFBTSxJQUFJQSxHQUFHLEdBQUcsRUFBRSxJQUFJQyxFQUFFRyxFQUFFLEVBQUUsTUFBTUgsRUFBRSxHQUFHSCxLQUFLODdDLFVBQVV4N0MsS0FBS0EsRUFBRSxHQUFHSixJQUFJLEVBQUVBLEdBQUdDLEVBQUUsTUFBTWEsRUFBRSxNQUFNLElBQUloQixLQUFLODdDLFFBQVEsSUFBSSxFQUFFLE1BQU0sSUFBSTk3QyxLQUFLODdDLFFBQVEsSUFBSSxFQUFFLEVBQUU1NkMsRUFBRUYsRUFBRVYsRUFBRSxLQUFLVyxFQUFFQyxHQUFHLENBQUMsR0FBR0QsR0FBR25CLEVBQUUsT0FBTyxFQUFFLEdBQUdLLEVBQUVOLEVBQUVvQixLQUFLLE1BQU0sSUFBSWQsR0FBRyxDQUFDYyxJQUFJbEIsR0FBRSxFQUFHLEtBQUssQ0FBQ0MsS0FBSzg3QyxRQUFReDdDLEtBQUtILEVBQUVELElBQUksRUFBRUEsR0FBRyxHQUFHQyxDQUFDLENBQUNKLElBQUksSUFBSWlCLEVBQUVkLEVBQUUsSUFBSWUsSUFBSXRCLEVBQUVnQixLQUFLVCxFQUFFLElBQUljLEVBQUVkLEVBQUUsTUFBTUEsR0FBRyxPQUFPQSxHQUFHLE9BQU8sUUFBUUEsSUFBSVAsRUFBRWdCLEtBQUtULEdBQUdBLEVBQUUsT0FBT0EsRUFBRSxVQUFVUCxFQUFFZ0IsS0FBS1QsSUFBSUYsS0FBSzg3QyxRQUFRbHFCLEtBQUssRUFBRSxDQUFDLE1BQU0xd0IsRUFBRXBCLEVBQUUsRUFBRSxJQUFJcUIsRUFBRUYsRUFBRSxLQUFLRSxFQUFFckIsR0FBRyxDQUFDLFNBQVNxQixFQUFFRCxJQUFJLEtBQUtuQixFQUFFRixFQUFFc0IsS0FBSyxLQUFLakIsRUFBRUwsRUFBRXNCLEVBQUUsS0FBSyxLQUFLaEIsRUFBRU4sRUFBRXNCLEVBQUUsS0FBSyxLQUFLYixFQUFFVCxFQUFFc0IsRUFBRSxNQUFNeEIsRUFBRWdCLEtBQUtaLEVBQUVKLEVBQUVnQixLQUFLVCxFQUFFUCxFQUFFZ0IsS0FBS1IsRUFBRVIsRUFBRWdCLEtBQUtMLEVBQUVhLEdBQUcsRUFBRSxHQUFHcEIsRUFBRUYsRUFBRXNCLEtBQUtwQixFQUFFLElBQUlKLEVBQUVnQixLQUFLWixPQUFPLEdBQUcsTUFBTSxJQUFJQSxHQUFHLENBQUMsR0FBR29CLEdBQUdyQixFQUFFLE9BQU9FLEtBQUs4N0MsUUFBUSxHQUFHLzdDLEVBQUVZLEVBQUUsR0FBR1QsRUFBRUwsRUFBRXNCLEtBQUssTUFBTSxJQUFJakIsR0FBRyxDQUFDaUIsSUFBSSxRQUFRLENBQUMsR0FBR0gsR0FBRyxHQUFHakIsSUFBSSxFQUFFLEdBQUdHLEVBQUVjLEVBQUUsSUFBSSxDQUFDRyxJQUFJLFFBQVEsQ0FBQ3hCLEVBQUVnQixLQUFLSyxDQUFDLE1BQU0sR0FBRyxNQUFNLElBQUlqQixHQUFHLENBQUMsR0FBR29CLEdBQUdyQixFQUFFLE9BQU9FLEtBQUs4N0MsUUFBUSxHQUFHLzdDLEVBQUVZLEVBQUUsR0FBR1QsRUFBRUwsRUFBRXNCLEtBQUssTUFBTSxJQUFJakIsR0FBRyxDQUFDaUIsSUFBSSxRQUFRLENBQUMsR0FBR0EsR0FBR3JCLEVBQUUsT0FBT0UsS0FBSzg3QyxRQUFRLEdBQUcvN0MsRUFBRUMsS0FBSzg3QyxRQUFRLEdBQUc1N0MsRUFBRVMsRUFBRSxHQUFHUixFQUFFTixFQUFFc0IsS0FBSyxNQUFNLElBQUloQixHQUFHLENBQUNnQixJQUFJLFFBQVEsQ0FBQyxHQUFHSCxHQUFHLEdBQUdqQixJQUFJLElBQUksR0FBR0csSUFBSSxFQUFFLEdBQUdDLEVBQUVhLEVBQUUsTUFBTUEsR0FBRyxPQUFPQSxHQUFHLE9BQU8sUUFBUUEsRUFBRSxTQUFTckIsRUFBRWdCLEtBQUtLLENBQUMsTUFBTSxHQUFHLE1BQU0sSUFBSWpCLEdBQUcsQ0FBQyxHQUFHb0IsR0FBR3JCLEVBQUUsT0FBT0UsS0FBSzg3QyxRQUFRLEdBQUcvN0MsRUFBRVksRUFBRSxHQUFHVCxFQUFFTCxFQUFFc0IsS0FBSyxNQUFNLElBQUlqQixHQUFHLENBQUNpQixJQUFJLFFBQVEsQ0FBQyxHQUFHQSxHQUFHckIsRUFBRSxPQUFPRSxLQUFLODdDLFFBQVEsR0FBRy83QyxFQUFFQyxLQUFLODdDLFFBQVEsR0FBRzU3QyxFQUFFUyxFQUFFLEdBQUdSLEVBQUVOLEVBQUVzQixLQUFLLE1BQU0sSUFBSWhCLEdBQUcsQ0FBQ2dCLElBQUksUUFBUSxDQUFDLEdBQUdBLEdBQUdyQixFQUFFLE9BQU9FLEtBQUs4N0MsUUFBUSxHQUFHLzdDLEVBQUVDLEtBQUs4N0MsUUFBUSxHQUFHNTdDLEVBQUVGLEtBQUs4N0MsUUFBUSxHQUFHMzdDLEVBQUVRLEVBQUUsR0FBR0wsRUFBRVQsRUFBRXNCLEtBQUssTUFBTSxJQUFJYixHQUFHLENBQUNhLElBQUksUUFBUSxDQUFDLEdBQUdILEdBQUcsRUFBRWpCLElBQUksSUFBSSxHQUFHRyxJQUFJLElBQUksR0FBR0MsSUFBSSxFQUFFLEdBQUdHLEVBQUVVLEVBQUUsT0FBT0EsRUFBRSxRQUFRLFNBQVNyQixFQUFFZ0IsS0FBS0ssQ0FBQyxDQUFDLENBQUMsT0FBT0wsQ0FBQyxFQUFDLEVBQUcsSUFBSSxDQUFDZCxFQUFFRixLQUFLWSxPQUFPSyxlQUFlakIsRUFBRSxhQUFhLENBQUNtQixPQUFNLElBQUtuQixFQUFFcThDLGVBQVUsRUFBTyxNQUFNbDhDLEVBQUUsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLE1BQU0sT0FBTyxDQUFDLE1BQU0sT0FBTyxDQUFDLE1BQU0sT0FBTyxDQUFDLE1BQU0sT0FBTyxDQUFDLE1BQU0sT0FBTyxDQUFDLE1BQU0sT0FBTyxDQUFDLE1BQU0sT0FBTyxDQUFDLE1BQU0sT0FBTyxDQUFDLE1BQU0sT0FBTyxDQUFDLE1BQU0sUUFBUUMsRUFBRSxDQUFDLENBQUMsTUFBTSxPQUFPLENBQUMsTUFBTSxPQUFPLENBQUMsTUFBTSxPQUFPLENBQUMsTUFBTSxPQUFPLENBQUMsTUFBTSxPQUFPLENBQUMsT0FBTyxRQUFRLENBQUMsT0FBTyxRQUFRLENBQUMsT0FBTyxRQUFRLENBQUMsT0FBTyxRQUFRLENBQUMsT0FBTyxRQUFRLENBQUMsT0FBTyxRQUFRLENBQUMsT0FBTyxRQUFRLENBQUMsT0FBTyxTQUFTLElBQUlHLEVBQUVQLEVBQUVxOEMsVUFBVSxNQUFNMTZDLGNBQWMsR0FBR3RCLEtBQUtpOEMsUUFBUSxLQUFLLzdDLEVBQUUsQ0FBQ0EsRUFB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RUFBRXcrQyxRQUFRditDLEVBQUUsR0FBRyxJQUFJLEVBQUUsRUFBRSxHQUFHRCxFQUFFdytDLFFBQVEsQ0FBQyxHQUFHLEdBQUcsSUFBSSxFQUFFLEVBQUUsR0FBR3grQyxFQUFFdytDLFFBQVF0K0MsRUFBRSxFQUFFLEVBQUUsR0FBR0YsRUFBRXcrQyxRQUFRbitDLEVBQUUsRUFBRSxFQUFFLEdBQUdMLEVBQUVvQyxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUdwQyxFQUFFb0MsSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHcEMsRUFBRW9DLElBQUksR0FBRyxFQUFFLEdBQUcsR0FBR3BDLEVBQUV3K0MsUUFBUXYrQyxFQUFFLEdBQUcsS0FBSyxFQUFFLEVBQUUsR0FBR0QsRUFBRXcrQyxRQUFRditDLEVBQUUsR0FBRyxJQUFJLEVBQUUsRUFBRSxHQUFHRCxFQUFFdytDLFFBQVEsQ0FBQyxHQUFHLEdBQUcsR0FBRyxJQUFJLEVBQUUsRUFBRSxHQUFHeCtDLEVBQUV3K0MsUUFBUXYrQyxFQUFFLEdBQUcsSUFBSSxFQUFFLEVBQUUsR0FBR0QsRUFBRXcrQyxRQUFRditDLEVBQUUsR0FBRyxLQUFLLEVBQUUsRUFBRSxHQUFHRCxFQUFFdytDLFFBQVEsQ0FBQyxHQUFHLEdBQUcsR0FBRyxJQUFJLEVBQUUsRUFBRSxHQUFHeCtDLEVBQUV3K0MsUUFBUXYrQyxFQUFFLEdBQUcsSUFBSSxFQUFFLEVBQUUsR0FBR0QsRUFBRW9DLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBR3BDLEVBQUV3K0MsUUFBUXYrQyxFQUFFLEdBQUcsS0FBSyxFQUFFLEVBQUUsR0FBR0QsRUFBRXcrQyxRQUFRditDLEVBQUUsR0FBRyxJQUFJLEVBQUUsRUFBRSxHQUFHRCxFQUFFdytDLFFBQVF2K0MsRUFBRSxHQUFHLElBQUksRUFBRSxFQUFFLEdBQUdELEVBQUV3K0MsUUFBUXYrQyxFQUFFLEdBQUcsSUFBSSxFQUFFLEVBQUUsR0FBR0QsRUFBRXcrQyxRQUFRditDLEVBQUUsR0FBRyxLQUFLLEVBQUUsRUFBRSxHQUFHRCxFQUFFdytDLFFBQVF2K0MsRUFBRSxHQUFHLElBQUksRUFBRSxFQUFFLEdBQUdELEVBQUV3K0MsUUFBUXYrQyxFQUFFLEdBQUcsSUFBSSxFQUFFLEVBQUUsR0FBR0QsRUFBRXcrQyxRQUFRditDLEVBQUUsR0FBRyxJQUFJLEVBQUUsRUFBRSxHQUFHRCxFQUFFdytDLFFBQVF2K0MsRUFBRSxHQUFHLEtBQUssRUFBRSxHQUFHLEdBQUdELEVBQUV3K0MsUUFBUXYrQyxFQUFFLEdBQUcsSUFBSSxFQUFFLEdBQUcsR0FBR0QsRUFBRXcrQyxRQUFRditDLEVBQUUsR0FBRyxJQUFJLEVBQUUsR0FBRyxHQUFHRCxFQUFFdytDLFFBQVEsQ0FBQyxHQUFHLEdBQUcsSUFBSSxFQUFFLEdBQUcsR0FBR3grQyxFQUFFdytDLFFBQVF2K0MsRUFBRSxHQUFHLEtBQUssRUFBRSxHQUFHLEdBQUdELEVBQUVvQyxJQUFJLEdBQUcsRUFBRSxHQUFHLEdBQUdwQyxFQUFFdytDLFFBQVFuK0MsRUFBRSxFQUFFLEVBQUUsR0FBR0wsRUFBRW9DLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBR3BDLEVBQUV3K0MsUUFBUXYrQyxFQUFFLEdBQUcsSUFBSSxFQUFFLEVBQUUsR0FBR0QsRUFBRXcrQyxRQUFRditDLEVBQUUsR0FBRyxJQUFJLEVBQUUsRUFBRSxJQUFJRCxFQUFFdytDLFFBQVF2K0MsRUFBRSxHQUFHLElBQUksRUFBRSxFQUFFLElBQUlELEVBQUV3K0MsUUFBUSxDQUFDLEdBQUcsR0FBRyxHQUFHLElBQUksRUFBRSxFQUFFLElBQUl4K0MsRUFBRXcrQyxRQUFRbitDLEVBQUUsR0FBRyxFQUFFLElBQUlMLEVBQUV3K0MsUUFBUXYrQyxFQUFFLEdBQUcsS0FBSyxHQUFHLEVBQUUsSUFBSUQsRUFBRXcrQyxRQUFRditDLEVBQUUsR0FBRyxJQUFJLEdBQUcsRUFBRSxJQUFJRCxFQUFFdytDLFFBQVFuK0MsRUFBRSxHQUFHLEVBQUUsSUFBSUwsRUFBRW9DLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSXBDLEVBQUV3K0MsUUFBUXYrQyxFQUFFLEdBQUcs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cEQsZ0JBQUEsU0FBZ0IvMUIsR0FDZixJQUFNZzJCLEVBQVc3cEQsS0FBS3lwRCxXQUFXMWdELElBQUk4cUIsR0FFckMsSUFBS2cyQixFQUNKLE1BQU0sSUFBSXptRCxNQUFNLHdDQUdqQixPQUFPeW1ELENBQ1IsRUFNUSxZQUFBWSxjQUFSLFNBQXNCM2dELEdBQ3JCLE1BQU8sQ0FDTjFGLElBQUswRixFQUFNMUYsSUFDWDhoQyxLQUFNcDhCLEVBQU1vOEIsS0FDWngyQixTQUFVNUYsRUFBTTRGLFNBQ2hCd3VCLE9BQVFwMEIsRUFBTW8wQixPQUNkcGdCLFFBQVNoVSxFQUFNZ1UsUUFDZkcsU0FBVW5VLEVBQU1tVSxTQUNoQkQsT0FBUWxVLEVBQU1rVSxPQUNkMkMsUUFBUzdXLEVBQU02VyxRQUNmNUssS0FBTWpNLEVBQU1pTSxLQUVkLEVBQ0QsRUEzSkEsR0FtS0FyUixPQUFPNm1ELFlBQWMsSUFBSUEsQyIsInNvdXJjZXMiOlsid2VicGFjazovL3h0ZXJtLWJsYXpvci8uL25vZGVfbW9kdWxlcy94dGVybS9saWIveHRlcm0uanMiLCJ3ZWJwYWNrOi8veHRlcm0tYmxhem9yL3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovL3h0ZXJtLWJsYXpvci8uL3NjcmlwdHMvWHRlcm1CbGF6b3IudHMiXSwic291cmNlc0NvbnRlbnQiOlsiIWZ1bmN0aW9uKGUsdCl7aWYoXCJvYmplY3RcIj09dHlwZW9mIGV4cG9ydHMmJlwib2JqZWN0XCI9PXR5cGVvZiBtb2R1bGUpbW9kdWxlLmV4cG9ydHM9dCgpO2Vsc2UgaWYoXCJmdW5jdGlvblwiPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kKWRlZmluZShbXSx0KTtlbHNle3ZhciBpPXQoKTtmb3IodmFyIHMgaW4gaSkoXCJvYmplY3RcIj09dHlwZW9mIGV4cG9ydHM/ZXhwb3J0czplKVtzXT1pW3NdfX0oc2VsZiwoKCk9PigoKT0+e1widXNlIHN0cmljdFwiO3ZhciBlPXs0NTY3OmZ1bmN0aW9uKGUsdCxpKXt2YXIgcz10aGlzJiZ0aGlzLl9fZGVjb3JhdGV8fGZ1bmN0aW9uKGUsdCxpLHMpe3ZhciByLG49YXJndW1lbnRzLmxlbmd0aCxvPW48Mz90Om51bGw9PT1zP3M9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LGkpOnM7aWYoXCJvYmplY3RcIj09dHlwZW9mIFJlZmxlY3QmJlwiZnVuY3Rpb25cIj09dHlwZW9mIFJlZmxlY3QuZGVjb3JhdGUpbz1SZWZsZWN0LmRlY29yYXRlKGUsdCxpLHMpO2Vsc2UgZm9yKHZhciBhPWUubGVuZ3RoLTE7YT49MDthLS0pKHI9ZVthXSkmJihvPShuPDM/cihvKTpuPjM/cih0LGksbyk6cih0LGkpKXx8byk7cmV0dXJuIG4+MyYmbyYmT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsaSxvKSxvfSxyPXRoaXMmJnRoaXMuX19wYXJhbXx8ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZnVuY3Rpb24oaSxzKXt0KGkscyxlKX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuQWNjZXNzaWJpbGl0eU1hbmFnZXI9dm9pZCAwO2NvbnN0IG49aSg5MDQyKSxvPWkoNjExNCksYT1pKDk5MjQpLGg9aSg4NDQpLGM9aSg1NTk2KSxsPWkoNDcyNSksZD1pKDM2NTYpO2xldCBfPWNsYXNzIGV4dGVuZHMgaC5EaXNwb3NhYmxle2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoKSx0aGlzLl90ZXJtaW5hbD1lLHRoaXMuX3JlbmRlclNlcnZpY2U9dCx0aGlzLl9saXZlUmVnaW9uTGluZUNvdW50PTAsdGhpcy5fY2hhcnNUb0NvbnN1bWU9W10sdGhpcy5fY2hhcnNUb0Fubm91bmNlPVwiXCIsdGhpcy5fYWNjZXNzaWJpbGl0eUNvbnRhaW5lcj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLHRoaXMuX2FjY2Vzc2liaWxpdHlDb250YWluZXIuY2xhc3NMaXN0LmFkZChcInh0ZXJtLWFjY2Vzc2liaWxpdHlcIiksdGhpcy5fcm93Q29udGFpbmVyPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiksdGhpcy5fcm93Q29udGFpbmVyLnNldEF0dHJpYnV0ZShcInJvbGVcIixcImxpc3RcIiksdGhpcy5fcm93Q29udGFpbmVyLmNsYXNzTGlzdC5hZGQoXCJ4dGVybS1hY2Nlc3NpYmlsaXR5LXRyZWVcIiksdGhpcy5fcm93RWxlbWVudHM9W107Zm9yKGxldCBlPTA7ZTx0aGlzLl90ZXJtaW5hbC5yb3dzO2UrKyl0aGlzLl9yb3dFbGVtZW50c1tlXT10aGlzLl9jcmVhdGVBY2Nlc3NpYmlsaXR5VHJlZU5vZGUoKSx0aGlzLl9yb3dDb250YWluZXIuYXBwZW5kQ2hpbGQodGhpcy5fcm93RWxlbWVudHNbZV0pO2lmKHRoaXMuX3RvcEJvdW5kYXJ5Rm9jdXNMaXN0ZW5lcj1lPT50aGlzLl9oYW5kbGVCb3VuZGFyeUZvY3VzKGUsMCksdGhpcy5fYm90dG9tQm91bmRhcnlGb2N1c0xpc3RlbmVyPWU9PnRoaXMuX2hhbmRsZUJvdW5kYXJ5Rm9jdXMoZSwxKSx0aGlzLl9yb3dFbGVtZW50c1swXS5hZGRFdmVudExpc3RlbmVyKFwiZm9jdXNcIix0aGlzLl90b3BCb3VuZGFyeUZvY3VzTGlzdGVuZXIpLHRoaXMuX3Jvd0VsZW1lbnRzW3RoaXMuX3Jvd0VsZW1lbnRzLmxlbmd0aC0xXS5hZGRFdmVudExpc3RlbmVyKFwiZm9jdXNcIix0aGlzLl9ib3R0b21Cb3VuZGFyeUZvY3VzTGlzdGVuZXIpLHRoaXMuX3JlZnJlc2hSb3dzRGltZW5zaW9ucygpLHRoaXMuX2FjY2Vzc2liaWxpdHlDb250YWluZXIuYXBwZW5kQ2hpbGQodGhpcy5fcm93Q29udGFpbmVyKSx0aGlzLl9saXZlUmVnaW9uPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiksdGhpcy5fbGl2ZVJlZ2lvbi5jbGFzc0xpc3QuYWRkKFwibGl2ZS1yZWdpb25cIiksdGhpcy5fbGl2ZVJlZ2lvbi5zZXRBdHRyaWJ1dGUoXCJhcmlhLWxpdmVcIixcImFzc2VydGl2ZVwiKSx0aGlzLl9hY2Nlc3NpYmlsaXR5Q29udGFpbmVyLmFwcGVuZENoaWxkKHRoaXMuX2xpdmVSZWdpb24pLHRoaXMuX2xpdmVSZWdpb25EZWJvdW5jZXI9dGhpcy5yZWdpc3RlcihuZXcgYS5UaW1lQmFzZWREZWJvdW5jZXIodGhpcy5fYW5ub3VuY2VDaGFyYWN0ZXJzLmJpbmQodGhpcykpKSwhdGhpcy5fdGVybWluYWwuZWxlbWVudCl0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3QgZW5hYmxlIGFjY2Vzc2liaWxpdHkgYmVmb3JlIFRlcm1pbmFsLm9wZW5cIik7dGhpcy5fdGVybWluYWwuZWxlbWVudC5pbnNlcnRBZGphY2VudEVsZW1lbnQoXCJhZnRlcmJlZ2luXCIsdGhpcy5fYWNjZXNzaWJpbGl0eUNvbnRhaW5lciksdGhpcy5yZWdpc3Rlcih0aGlzLl9saXZlUmVnaW9uRGVib3VuY2VyKSx0aGlzLnJlZ2lzdGVyKHRoaXMuX3Rlcm1pbmFsLm9uUmVzaXplKChlPT50aGlzLl9oYW5kbGVSZXNpemUoZS5yb3dzKSkpKSx0aGlzLnJlZ2lzdGVyKHRoaXMuX3Rlcm1pbmFsLm9uUmVuZGVyKChlPT50aGlzLl9yZWZyZXNoUm93cyhlLnN0YXJ0LGUuZW5kKSkpKSx0aGlzLnJlZ2lzdGVyKHRoaXMuX3Rlcm1pbmFsLm9uU2Nyb2xsKCgoKT0+dGhpcy5fcmVmcmVzaFJvd3MoKSkpKSx0aGlzLnJlZ2lzdGVyKHRoaXMuX3Rlcm1pbmFsLm9uQTExeUNoYXIoKGU9PnRoaXMuX2hhbmRsZUNoYXIoZSkpKSksdGhpcy5yZWdpc3Rlcih0aGlzLl90ZXJtaW5hbC5vbkxpbmVGZWVkKCgoKT0+dGhpcy5faGFuZGxlQ2hhcihcIlxcblwiKSkpKSx0aGlzLnJlZ2lzdGVyKHRoaXMuX3Rlcm1pbmFsLm9uQTExeVRhYigoZT0+dGhpcy5faGFuZGxlVGFiKGUpKSkpLHRoaXMucmVnaXN0ZXIodGhpcy5fdGVybWluYWwub25LZXkoKGU9PnRoaXMuX2hhbmRsZUtleShlLmtleSkpKSksdGhpcy5yZWdpc3Rlcih0aGlzLl90ZXJtaW5hbC5vbkJsdXIoKCgpPT50aGlzLl9jbGVhckxpdmVSZWdpb24oKSkpKSx0aGlzLnJlZ2lzdGVyKHRoaXMuX3JlbmRlclNlcnZpY2Uub25EaW1lbnNpb25zQ2hhbmdlKCgoKT0+dGhpcy5fcmVmcmVzaFJvd3NEaW1lbnNpb25zKCkpKSksdGhpcy5fc2NyZWVuRHByTW9uaXRvcj1uZXcgYy5TY3JlZW5EcHJNb25pdG9yKHdpbmRvdyksdGhpcy5yZWdpc3Rlcih0aGlzLl9zY3JlZW5EcHJNb25pdG9yKSx0aGlzLl9zY3JlZW5EcHJNb25pdG9yLnNldExpc3RlbmVyKCgoKT0+dGhpcy5fcmVmcmVzaFJvd3NEaW1lbnNpb25zKCkpKSx0aGlzLnJlZ2lzdGVyKCgwLGQuYWRkRGlzcG9zYWJsZURvbUxpc3RlbmVyKSh3aW5kb3csXCJyZXNpemVcIiwoKCk9PnRoaXMuX3JlZnJlc2hSb3dzRGltZW5zaW9ucygpKSkpLHRoaXMuX3JlZnJlc2hSb3dzKCksdGhpcy5yZWdpc3RlcigoMCxoLnRvRGlzcG9zYWJsZSkoKCgpPT57dGhpcy5fYWNjZXNzaWJpbGl0eUNvbnRhaW5lci5yZW1vdmUoKSx0aGlzLl9yb3dFbGVtZW50cy5sZW5ndGg9MH0pKSl9X2hhbmRsZVRhYihlKXtmb3IobGV0IHQ9MDt0PGU7dCsrKXRoaXMuX2hhbmRsZUNoYXIoXCIgXCIpfV9oYW5kbGVDaGFyKGUpe3RoaXMuX2xpdmVSZWdpb25MaW5lQ291bnQ8MjEmJih0aGlzLl9jaGFyc1RvQ29uc3VtZS5sZW5ndGg+MD90aGlzLl9jaGFyc1RvQ29uc3VtZS5zaGlmdCgpIT09ZSYmKHRoaXMuX2NoYXJzVG9Bbm5vdW5jZSs9ZSk6dGhpcy5fY2hhcnNUb0Fubm91bmNlKz1lLFwiXFxuXCI9PT1lJiYodGhpcy5fbGl2ZVJlZ2lvbkxpbmVDb3VudCsrLDIxPT09dGhpcy5fbGl2ZVJlZ2lvbkxpbmVDb3VudCYmKHRoaXMuX2xpdmVSZWdpb24udGV4dENvbnRlbnQrPW4udG9vTXVjaE91dHB1dCkpLG8uaXNNYWMmJnRoaXMuX2xpdmVSZWdpb24udGV4dENvbnRlbnQmJnRoaXMuX2xpdmVSZWdpb24udGV4dENvbnRlbnQubGVuZ3RoPjAmJiF0aGlzLl9saXZlUmVnaW9uLnBhcmVudE5vZGUmJnNldFRpbWVvdXQoKCgpPT57dGhpcy5fYWNjZXNzaWJpbGl0eUNvbnRhaW5lci5hcHBlbmRDaGlsZCh0aGlzLl9saXZlUmVnaW9uKX0pLDApKX1fY2xlYXJMaXZlUmVnaW9uKCl7dGhpcy5fbGl2ZVJlZ2lvbi50ZXh0Q29udGVudD1cIlwiLHRoaXMuX2xpdmVSZWdpb25MaW5lQ291bnQ9MCxvLmlzTWFjJiZ0aGlzLl9saXZlUmVnaW9uLnJlbW92ZSgpfV9oYW5kbGVLZXkoZSl7dGhpcy5fY2xlYXJMaXZlUmVnaW9uKCksL1xccHtDb250cm9sfS91LnRlc3QoZSl8fHRoaXMuX2NoYXJzVG9Db25zdW1lLnB1c2goZSl9X3JlZnJlc2hSb3dzKGUsdCl7dGhpcy5fbGl2ZVJlZ2lvbkRlYm91bmNlci5yZWZyZXNoKGUsdCx0aGlzLl90ZXJtaW5hbC5yb3dzKX1fYW5ub3VuY2VDaGFyYWN0ZXJzKCl7MCE9PXRoaXMuX2NoYXJzVG9Bbm5vdW5jZS5sZW5ndGgmJih0aGlzLl9saXZlUmVnaW9uLnRleHRDb250ZW50Kz10aGlzLl9jaGFyc1RvQW5ub3VuY2UsdGhpcy5fY2hhcnNUb0Fubm91bmNlPVwiXCIpfV9oYW5kbGVCb3VuZGFyeUZvY3VzKGUsdCl7Y29uc3QgaT1lLnRhcmdldCxzPXRoaXMuX3Jvd0VsZW1lbnRzWzA9PT10PzE6dGhpcy5fcm93RWxlbWVudHMubGVuZ3RoLTJdO2lmKGkuZ2V0QXR0cmlidXRlKFwiYXJpYS1wb3NpbnNldFwiKT09PSgwPT09dD9cIjFcIjpgJHt0aGlzLl90ZXJtaW5hbC5idWZmZXIubGluZXMubGVuZ3RofWApKXJldHVybjtpZihlLnJlbGF0ZWRUYXJnZXQhPT1zKXJldHVybjtsZXQgcixuO2lmKDA9PT10PyhyPWksbj10aGlzLl9yb3dFbGVtZW50cy5wb3AoKSx0aGlzLl9yb3dDb250YWluZXIucmVtb3ZlQ2hpbGQobikpOihyPXRoaXMuX3Jvd0VsZW1lbnRzLnNoaWZ0KCksbj1pLHRoaXMuX3Jvd0NvbnRhaW5lci5yZW1vdmVDaGlsZChyKSksci5yZW1vdmVFdmVudExpc3RlbmVyKFwiZm9jdXNcIix0aGlzLl90b3BCb3VuZGFyeUZvY3VzTGlzdGVuZXIpLG4ucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImZvY3VzXCIsdGhpcy5fYm90dG9tQm91bmRhcnlGb2N1c0xpc3RlbmVyKSwwPT09dCl7Y29uc3QgZT10aGlzLl9jcmVhdGVBY2Nlc3NpYmlsaXR5VHJlZU5vZGUoKTt0aGlzLl9yb3dFbGVtZW50cy51bnNoaWZ0KGUpLHRoaXMuX3Jvd0NvbnRhaW5lci5pbnNlcnRBZGphY2VudEVsZW1lbnQoXCJhZnRlcmJlZ2luXCIsZSl9ZWxzZXtjb25zdCBlPXRoaXMuX2NyZWF0ZUFjY2Vzc2liaWxpdHlUcmVlTm9kZSgpO3RoaXMuX3Jvd0VsZW1lbnRzLnB1c2goZSksdGhpcy5fcm93Q29udGFpbmVyLmFwcGVuZENoaWxkKGUpfXRoaXMuX3Jvd0VsZW1lbnRzWzBdLmFkZEV2ZW50TGlzdGVuZXIoXCJmb2N1c1wiLHRoaXMuX3RvcEJvdW5kYXJ5Rm9jdXNMaXN0ZW5lciksdGhpcy5fcm93RWxlbWVudHNbdGhpcy5fcm93RWxlbWVudHMubGVuZ3RoLTFdLmFkZEV2ZW50TGlzdGVuZXIoXCJmb2N1c1wiLHRoaXMuX2JvdHRvbUJvdW5kYXJ5Rm9jdXNMaXN0ZW5lciksdGhpcy5fdGVybWluYWwuc2Nyb2xsTGluZXMoMD09PXQ/LTE6MSksdGhpcy5fcm93RWxlbWVudHNbMD09PXQ/MTp0aGlzLl9yb3dFbGVtZW50cy5sZW5ndGgtMl0uZm9jdXMoKSxlLnByZXZlbnREZWZhdWx0KCksZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKX1faGFuZGxlUmVzaXplKGUpe3RoaXMuX3Jvd0VsZW1lbnRzW3RoaXMuX3Jvd0VsZW1lbnRzLmxlbmd0aC0xXS5yZW1vdmVFdmVudExpc3RlbmVyKFwiZm9jdXNcIix0aGlzLl9ib3R0b21Cb3VuZGFyeUZvY3VzTGlzdGVuZXIpO2ZvcihsZXQgZT10aGlzLl9yb3dDb250YWluZXIuY2hpbGRyZW4ubGVuZ3RoO2U8dGhpcy5fdGVybWluYWwucm93cztlKyspdGhpcy5fcm93RWxlbWVudHNbZV09dGhpcy5fY3JlYXRlQWNjZXNzaWJpbGl0eVRyZWVOb2RlKCksdGhpcy5fcm93Q29udGFpbmVyLmFwcGVuZENoaWxkKHRoaXMuX3Jvd0VsZW1lbnRzW2VdKTtmb3IoO3RoaXMuX3Jvd0VsZW1lbnRzLmxlbmd0aD5lOyl0aGlzLl9yb3dDb250YWluZXIucmVtb3ZlQ2hpbGQodGhpcy5fcm93RWxlbWVudHMucG9wKCkpO3RoaXMuX3Jvd0VsZW1lbnRzW3RoaXMuX3Jvd0VsZW1lbnRzLmxlbmd0aC0xXS5hZGRFdmVudExpc3RlbmVyKFwiZm9jdXNcIix0aGlzLl9ib3R0b21Cb3VuZGFyeUZvY3VzTGlzdGVuZXIpLHRoaXMuX3JlZnJlc2hSb3dzRGltZW5zaW9ucygpfV9jcmVhdGVBY2Nlc3NpYmlsaXR5VHJlZU5vZGUoKXtjb25zdCBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7cmV0dXJuIGUuc2V0QXR0cmlidXRlKFwicm9sZVwiLFwibGlzdGl0ZW1cIiksZS50YWJJbmRleD0tMSx0aGlzLl9yZWZyZXNoUm93RGltZW5zaW9ucyhlKSxlfV9yZWZyZXNoUm93c0RpbWVuc2lvbnMoKXtpZih0aGlzLl9yZW5kZXJTZXJ2aWNlLmRpbWVuc2lvbnMuY3NzLmNlbGwuaGVpZ2h0KXt0aGlzLl9hY2Nlc3NpYmlsaXR5Q29udGFpbmVyLnN0eWxlLndpZHRoPWAke3RoaXMuX3JlbmRlclNlcnZpY2UuZGltZW5zaW9ucy5jc3MuY2FudmFzLndpZHRofXB4YCx0aGlzLl9yb3dFbGVtZW50cy5sZW5ndGghPT10aGlzLl90ZXJtaW5hbC5yb3dzJiZ0aGlzLl9oYW5kbGVSZXNpemUodGhpcy5fdGVybWluYWwucm93cyk7Zm9yKGxldCBlPTA7ZTx0aGlzLl90ZXJtaW5hbC5yb3dzO2UrKyl0aGlzLl9yZWZyZXNoUm93RGltZW5zaW9ucyh0aGlzLl9yb3dFbGVtZW50c1tlXSl9fV9yZWZyZXNoUm93RGltZW5zaW9ucyhlKXtlLnN0eWxlLmhlaWdodD1gJHt0aGlzLl9yZW5kZXJTZXJ2aWNlLmRpbWVuc2lvbnMuY3NzLmNlbGwuaGVpZ2h0fXB4YH19O189cyhbcigxLGwuSVJlbmRlclNlcnZpY2UpXSxfKSx0LkFjY2Vzc2liaWxpdHlNYW5hZ2VyPV99LDM2MTQ6KGUsdCk9PntmdW5jdGlvbiBpKGUpe3JldHVybiBlLnJlcGxhY2UoL1xccj9cXG4vZyxcIlxcclwiKX1mdW5jdGlvbiBzKGUsdCl7cmV0dXJuIHQ/XCJcdTAwMWJbMjAwflwiK2UrXCJcdTAwMWJbMjAxflwiOmV9ZnVuY3Rpb24gcihlLHQscil7ZT1zKGU9aShlKSxyLmRlY1ByaXZhdGVNb2Rlcy5icmFja2V0ZWRQYXN0ZU1vZGUpLHIudHJpZ2dlckRhdGFFdmVudChlLCEwKSx0LnZhbHVlPVwiXCJ9ZnVuY3Rpb24gbihlLHQsaSl7Y29uc3Qgcz1pLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHI9ZS5jbGllbnRYLXMubGVmdC0xMCxuPWUuY2xpZW50WS1zLnRvcC0xMDt0LnN0eWxlLndpZHRoPVwiMjBweFwiLHQuc3R5bGUuaGVpZ2h0PVwiMjBweFwiLHQuc3R5bGUubGVmdD1gJHtyfXB4YCx0LnN0eWxlLnRvcD1gJHtufXB4YCx0LnN0eWxlLnpJbmRleD1cIjEwMDBcIix0LmZvY3VzKCl9T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5yaWdodENsaWNrSGFuZGxlcj10Lm1vdmVUZXh0QXJlYVVuZGVyTW91c2VDdXJzb3I9dC5wYXN0ZT10LmhhbmRsZVBhc3RlRXZlbnQ9dC5jb3B5SGFuZGxlcj10LmJyYWNrZXRUZXh0Rm9yUGFzdGU9dC5wcmVwYXJlVGV4dEZvclRlcm1pbmFsPXZvaWQgMCx0LnByZXBhcmVUZXh0Rm9yVGVybWluYWw9aSx0LmJyYWNrZXRUZXh0Rm9yUGFzdGU9cyx0LmNvcHlIYW5kbGVyPWZ1bmN0aW9uKGUsdCl7ZS5jbGlwYm9hcmREYXRhJiZlLmNsaXBib2FyZERhdGEuc2V0RGF0YShcInRleHQvcGxhaW5cIix0LnNlbGVjdGlvblRleHQpLGUucHJldmVudERlZmF1bHQoKX0sdC5oYW5kbGVQYXN0ZUV2ZW50PWZ1bmN0aW9uKGUsdCxpKXtlLnN0b3BQcm9wYWdhdGlvbigpLGUuY2xpcGJvYXJkRGF0YSYmcihlLmNsaXBib2FyZERhdGEuZ2V0RGF0YShcInRleHQvcGxhaW5cIiksdCxpKX0sdC5wYXN0ZT1yLHQubW92ZVRleHRBcmVhVW5kZXJNb3VzZUN1cnNvcj1uLHQucmlnaHRDbGlja0hhbmRsZXI9ZnVuY3Rpb24oZSx0LGkscyxyKXtuKGUsdCxpKSxyJiZzLnJpZ2h0Q2xpY2tTZWxlY3QoZSksdC52YWx1ZT1zLnNlbGVjdGlvblRleHQsdC5zZWxlY3QoKX19LDcyMzk6KGUsdCxpKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuQ29sb3JDb250cmFzdENhY2hlPXZvaWQgMDtjb25zdCBzPWkoMTUwNSk7dC5Db2xvckNvbnRyYXN0Q2FjaGU9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLl9jb2xvcj1uZXcgcy5Ud29LZXlNYXAsdGhpcy5fY3NzPW5ldyBzLlR3b0tleU1hcH1zZXRDc3MoZSx0LGkpe3RoaXMuX2Nzcy5zZXQoZSx0LGkpfWdldENzcyhlLHQpe3JldHVybiB0aGlzLl9jc3MuZ2V0KGUsdCl9c2V0Q29sb3IoZSx0LGkpe3RoaXMuX2NvbG9yLnNldChlLHQsaSl9Z2V0Q29sb3IoZSx0KXtyZXR1cm4gdGhpcy5fY29sb3IuZ2V0KGUsdCl9Y2xlYXIoKXt0aGlzLl9jb2xvci5jbGVhcigpLHRoaXMuX2Nzcy5jbGVhcigpfX19LDM2NTY6KGUsdCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmFkZERpc3Bvc2FibGVEb21MaXN0ZW5lcj12b2lkIDAsdC5hZGREaXNwb3NhYmxlRG9tTGlzdGVuZXI9ZnVuY3Rpb24oZSx0LGkscyl7ZS5hZGRFdmVudExpc3RlbmVyKHQsaSxzKTtsZXQgcj0hMTtyZXR1cm57ZGlzcG9zZTooKT0+e3J8fChyPSEwLGUucmVtb3ZlRXZlbnRMaXN0ZW5lcih0LGkscykpfX19fSw2NDY1OmZ1bmN0aW9uKGUsdCxpKXt2YXIgcz10aGlzJiZ0aGlzLl9fZGVjb3JhdGV8fGZ1bmN0aW9uKGUsdCxpLHMpe3ZhciByLG49YXJndW1lbnRzLmxlbmd0aCxvPW48Mz90Om51bGw9PT1zP3M9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LGkpOnM7aWYoXCJvYmplY3RcIj09dHlwZW9mIFJlZmxlY3QmJlwiZnVuY3Rpb25cIj09dHlwZW9mIFJlZmxlY3QuZGVjb3JhdGUpbz1SZWZsZWN0LmRlY29yYXRlKGUsdCxpLHMpO2Vsc2UgZm9yKHZhciBhPWUubGVuZ3RoLTE7YT49MDthLS0pKHI9ZVthXSkmJihvPShuPDM/cihvKTpuPjM/cih0LGksbyk6cih0LGkpKXx8byk7cmV0dXJuIG4+MyYmbyYmT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsaSxvKSxvfSxyPXRoaXMmJnRoaXMuX19wYXJhbXx8ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZnVuY3Rpb24oaSxzKXt0KGkscyxlKX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuTGlua2lmaWVyMj12b2lkIDA7Y29uc3Qgbj1pKDI1ODUpLG89aSg4NDYwKSxhPWkoODQ0KSxoPWkoMzY1Nik7bGV0IGM9Y2xhc3MgZXh0ZW5kcyBhLkRpc3Bvc2FibGV7Y29uc3RydWN0b3IoZSl7c3VwZXIoKSx0aGlzLl9idWZmZXJTZXJ2aWNlPWUsdGhpcy5fbGlua1Byb3ZpZGVycz1bXSx0aGlzLl9saW5rQ2FjaGVEaXNwb3NhYmxlcz1bXSx0aGlzLl9pc01vdXNlT3V0PSEwLHRoaXMuX3dhc1Jlc2l6ZWQ9ITEsdGhpcy5fYWN0aXZlTGluZT0tMSx0aGlzLl9vblNob3dMaW5rVW5kZXJsaW5lPXRoaXMucmVnaXN0ZXIobmV3IG8uRXZlbnRFbWl0dGVyKSx0aGlzLm9uU2hvd0xpbmtVbmRlcmxpbmU9dGhpcy5fb25TaG93TGlua1VuZGVybGluZS5ldmVudCx0aGlzLl9vbkhpZGVMaW5rVW5kZXJsaW5lPXRoaXMucmVnaXN0ZXIobmV3IG8uRXZlbnRFbWl0dGVyKSx0aGlzLm9uSGlkZUxpbmtVbmRlcmxpbmU9dGhpcy5fb25IaWRlTGlua1VuZGVybGluZS5ldmVudCx0aGlzLnJlZ2lzdGVyKCgwLGEuZ2V0RGlzcG9zZUFycmF5RGlzcG9zYWJsZSkodGhpcy5fbGlua0NhY2hlRGlzcG9zYWJsZXMpKSx0aGlzLnJlZ2lzdGVyKCgwLGEudG9EaXNwb3NhYmxlKSgoKCk9Pnt0aGlzLl9sYXN0TW91c2VFdmVudD12b2lkIDB9KSkpLHRoaXMucmVnaXN0ZXIodGhpcy5fYnVmZmVyU2VydmljZS5vblJlc2l6ZSgoKCk9Pnt0aGlzLl9jbGVhckN1cnJlbnRMaW5rKCksdGhpcy5fd2FzUmVzaXplZD0hMH0pKSl9Z2V0IGN1cnJlbnRMaW5rKCl7cmV0dXJuIHRoaXMuX2N1cnJlbnRMaW5rfXJlZ2lzdGVyTGlua1Byb3ZpZGVyKGUpe3JldHVybiB0aGlzLl9saW5rUHJvdmlkZXJzLnB1c2goZSkse2Rpc3Bvc2U6KCk9Pntjb25zdCB0PXRoaXMuX2xpbmtQcm92aWRlcnMuaW5kZXhPZihlKTstMSE9PXQmJnRoaXMuX2xpbmtQcm92aWRlcnMuc3BsaWNlKHQsMSl9fX1hdHRhY2hUb0RvbShlLHQsaSl7dGhpcy5fZWxlbWVudD1lLHRoaXMuX21vdXNlU2VydmljZT10LHRoaXMuX3JlbmRlclNlcnZpY2U9aSx0aGlzLnJlZ2lzdGVyKCgwLGguYWRkRGlzcG9zYWJsZURvbUxpc3RlbmVyKSh0aGlzLl9lbGVtZW50LFwibW91c2VsZWF2ZVwiLCgoKT0+e3RoaXMuX2lzTW91c2VPdXQ9ITAsdGhpcy5fY2xlYXJDdXJyZW50TGluaygpfSkpKSx0aGlzLnJlZ2lzdGVyKCgwLGguYWRkRGlzcG9zYWJsZURvbUxpc3RlbmVyKSh0aGlzLl9lbGVtZW50LFwibW91c2Vtb3ZlXCIsdGhpcy5faGFuZGxlTW91c2VNb3ZlLmJpbmQodGhpcykpKSx0aGlzLnJlZ2lzdGVyKCgwLGguYWRkRGlzcG9zYWJsZURvbUxpc3RlbmVyKSh0aGlzLl9lbGVtZW50LFwibW91c2Vkb3duXCIsdGhpcy5faGFuZGxlTW91c2VEb3duLmJpbmQodGhpcykpKSx0aGlzLnJlZ2lzdGVyKCgwLGguYWRkRGlzcG9zYWJsZURvbUxpc3RlbmVyKSh0aGlzLl9lbGVtZW50LFwibW91c2V1cFwiLHRoaXMuX2hhbmRsZU1vdXNlVXAuYmluZCh0aGlzKSkpfV9oYW5kbGVNb3VzZU1vdmUoZSl7aWYodGhpcy5fbGFzdE1vdXNlRXZlbnQ9ZSwhdGhpcy5fZWxlbWVudHx8IXRoaXMuX21vdXNlU2VydmljZSlyZXR1cm47Y29uc3QgdD10aGlzLl9wb3NpdGlvbkZyb21Nb3VzZUV2ZW50KGUsdGhpcy5fZWxlbWVudCx0aGlzLl9tb3VzZVNlcnZpY2UpO2lmKCF0KXJldHVybjt0aGlzLl9pc01vdXNlT3V0PSExO2NvbnN0IGk9ZS5jb21wb3NlZFBhdGgoKTtmb3IobGV0IGU9MDtlPGkubGVuZ3RoO2UrKyl7Y29uc3QgdD1pW2VdO2lmKHQuY2xhc3NMaXN0LmNvbnRhaW5zKFwieHRlcm1cIikpYnJlYWs7aWYodC5jbGFzc0xpc3QuY29udGFpbnMoXCJ4dGVybS1ob3ZlclwiKSlyZXR1cm59dGhpcy5fbGFzdEJ1ZmZlckNlbGwmJnQueD09PXRoaXMuX2xhc3RCdWZmZXJDZWxsLngmJnQueT09PXRoaXMuX2xhc3RCdWZmZXJDZWxsLnl8fCh0aGlzLl9oYW5kbGVIb3Zlcih0KSx0aGlzLl9sYXN0QnVmZmVyQ2VsbD10KX1faGFuZGxlSG92ZXIoZSl7aWYodGhpcy5fYWN0aXZlTGluZSE9PWUueXx8dGhpcy5fd2FzUmVzaXplZClyZXR1cm4gdGhpcy5fY2xlYXJDdXJyZW50TGluaygpLHRoaXMuX2Fza0ZvckxpbmsoZSwhMSksdm9pZCh0aGlzLl93YXNSZXNpemVkPSExKTt0aGlzLl9jdXJyZW50TGluayYmdGhpcy5fbGlua0F0UG9zaXRpb24odGhpcy5fY3VycmVudExpbmsubGluayxlKXx8KHRoaXMuX2NsZWFyQ3VycmVudExpbmsoKSx0aGlzLl9hc2tGb3JMaW5rKGUsITApKX1fYXNrRm9yTGluayhlLHQpe3ZhciBpLHM7dGhpcy5fYWN0aXZlUHJvdmlkZXJSZXBsaWVzJiZ0fHwobnVsbD09PShpPXRoaXMuX2FjdGl2ZVByb3ZpZGVyUmVwbGllcyl8fHZvaWQgMD09PWl8fGkuZm9yRWFjaCgoZT0+e251bGw9PWV8fGUuZm9yRWFjaCgoZT0+e2UubGluay5kaXNwb3NlJiZlLmxpbmsuZGlzcG9zZSgpfSkpfSkpLHRoaXMuX2FjdGl2ZVByb3ZpZGVyUmVwbGllcz1uZXcgTWFwLHRoaXMuX2FjdGl2ZUxpbmU9ZS55KTtsZXQgcj0hMTtmb3IoY29uc3RbaSxuXW9mIHRoaXMuX2xpbmtQcm92aWRlcnMuZW50cmllcygpKXQ/KG51bGw9PT0ocz10aGlzLl9hY3RpdmVQcm92aWRlclJlcGxpZXMpfHx2b2lkIDA9PT1zP3ZvaWQgMDpzLmdldChpKSkmJihyPXRoaXMuX2NoZWNrTGlua1Byb3ZpZGVyUmVzdWx0KGksZSxyKSk6bi5wcm92aWRlTGlua3MoZS55LCh0PT57dmFyIHMsbjtpZih0aGlzLl9pc01vdXNlT3V0KXJldHVybjtjb25zdCBvPW51bGw9PXQ/dm9pZCAwOnQubWFwKChlPT4oe2xpbms6ZX0pKSk7bnVsbD09PShzPXRoaXMuX2FjdGl2ZVByb3ZpZGVyUmVwbGllcyl8fHZvaWQgMD09PXN8fHMuc2V0KGksbykscj10aGlzLl9jaGVja0xpbmtQcm92aWRlclJlc3VsdChpLGUsciksKG51bGw9PT0obj10aGlzLl9hY3RpdmVQcm92aWRlclJlcGxpZXMpfHx2b2lkIDA9PT1uP3ZvaWQgMDpuLnNpemUpPT09dGhpcy5fbGlua1Byb3ZpZGVycy5sZW5ndGgmJnRoaXMuX3JlbW92ZUludGVyc2VjdGluZ0xpbmtzKGUueSx0aGlzLl9hY3RpdmVQcm92aWRlclJlcGxpZXMpfSkpfV9yZW1vdmVJbnRlcnNlY3RpbmdMaW5rcyhlLHQpe2NvbnN0IGk9bmV3IFNldDtmb3IobGV0IHM9MDtzPHQuc2l6ZTtzKyspe2NvbnN0IHI9dC5nZXQocyk7aWYocilmb3IobGV0IHQ9MDt0PHIubGVuZ3RoO3QrKyl7Y29uc3Qgcz1yW3RdLG49cy5saW5rLnJhbmdlLnN0YXJ0Lnk8ZT8wOnMubGluay5yYW5nZS5zdGFydC54LG89cy5saW5rLnJhbmdlLmVuZC55PmU/dGhpcy5fYnVmZmVyU2VydmljZS5jb2xzOnMubGluay5yYW5nZS5lbmQueDtmb3IobGV0IGU9bjtlPD1vO2UrKyl7aWYoaS5oYXMoZSkpe3Iuc3BsaWNlKHQtLSwxKTticmVha31pLmFkZChlKX19fX1fY2hlY2tMaW5rUHJvdmlkZXJSZXN1bHQoZSx0LGkpe3ZhciBzO2lmKCF0aGlzLl9hY3RpdmVQcm92aWRlclJlcGxpZXMpcmV0dXJuIGk7Y29uc3Qgcj10aGlzLl9hY3RpdmVQcm92aWRlclJlcGxpZXMuZ2V0KGUpO2xldCBuPSExO2ZvcihsZXQgdD0wO3Q8ZTt0KyspdGhpcy5fYWN0aXZlUHJvdmlkZXJSZXBsaWVzLmhhcyh0KSYmIXRoaXMuX2FjdGl2ZVByb3ZpZGVyUmVwbGllcy5nZXQodCl8fChuPSEwKTtpZighbiYmcil7Y29uc3QgZT1yLmZpbmQoKGU9PnRoaXMuX2xpbmtBdFBvc2l0aW9uKGUubGluayx0KSkpO2UmJihpPSEwLHRoaXMuX2hhbmRsZU5ld0xpbmsoZSkpfWlmKHRoaXMuX2FjdGl2ZVByb3ZpZGVyUmVwbGllcy5zaXplPT09dGhpcy5fbGlua1Byb3ZpZGVycy5sZW5ndGgmJiFpKWZvcihsZXQgZT0wO2U8dGhpcy5fYWN0aXZlUHJvdmlkZXJSZXBsaWVzLnNpemU7ZSsrKXtjb25zdCByPW51bGw9PT0ocz10aGlzLl9hY3RpdmVQcm92aWRlclJlcGxpZXMuZ2V0KGUpKXx8dm9pZCAwPT09cz92b2lkIDA6cy5maW5kKChlPT50aGlzLl9saW5rQXRQb3NpdGlvbihlLmxpbmssdCkpKTtpZihyKXtpPSEwLHRoaXMuX2hhbmRsZU5ld0xpbmsocik7YnJlYWt9fXJldHVybiBpfV9oYW5kbGVNb3VzZURvd24oKXt0aGlzLl9tb3VzZURvd25MaW5rPXRoaXMuX2N1cnJlbnRMaW5rfV9oYW5kbGVNb3VzZVVwKGUpe2lmKCF0aGlzLl9lbGVtZW50fHwhdGhpcy5fbW91c2VTZXJ2aWNlfHwhdGhpcy5fY3VycmVudExpbmspcmV0dXJuO2NvbnN0IHQ9dGhpcy5fcG9zaXRpb25Gcm9tTW91c2VFdmVudChlLHRoaXMuX2VsZW1lbnQsdGhpcy5fbW91c2VTZXJ2aWNlKTt0JiZ0aGlzLl9tb3VzZURvd25MaW5rPT09dGhpcy5fY3VycmVudExpbmsmJnRoaXMuX2xpbmtBdFBvc2l0aW9uKHRoaXMuX2N1cnJlbnRMaW5rLmxpbmssdCkmJnRoaXMuX2N1cnJlbnRMaW5rLmxpbmsuYWN0aXZhdGUoZSx0aGlzLl9jdXJyZW50TGluay5saW5rLnRleHQpfV9jbGVhckN1cnJlbnRMaW5rKGUsdCl7dGhpcy5fZWxlbWVudCYmdGhpcy5fY3VycmVudExpbmsmJnRoaXMuX2xhc3RNb3VzZUV2ZW50JiYoIWV8fCF0fHx0aGlzLl9jdXJyZW50TGluay5saW5rLnJhbmdlLnN0YXJ0Lnk+PWUmJnRoaXMuX2N1cnJlbnRMaW5rLmxpbmsucmFuZ2UuZW5kLnk8PXQpJiYodGhpcy5fbGlua0xlYXZlKHRoaXMuX2VsZW1lbnQsdGhpcy5fY3VycmVudExpbmsubGluayx0aGlzLl9sYXN0TW91c2VFdmVudCksdGhpcy5fY3VycmVudExpbms9dm9pZCAwLCgwLGEuZGlzcG9zZUFycmF5KSh0aGlzLl9saW5rQ2FjaGVEaXNwb3NhYmxlcykpfV9oYW5kbGVOZXdMaW5rKGUpe2lmKCF0aGlzLl9lbGVtZW50fHwhdGhpcy5fbGFzdE1vdXNlRXZlbnR8fCF0aGlzLl9tb3VzZVNlcnZpY2UpcmV0dXJuO2NvbnN0IHQ9dGhpcy5fcG9zaXRpb25Gcm9tTW91c2VFdmVudCh0aGlzLl9sYXN0TW91c2VFdmVudCx0aGlzLl9lbGVtZW50LHRoaXMuX21vdXNlU2VydmljZSk7dCYmdGhpcy5fbGlua0F0UG9zaXRpb24oZS5saW5rLHQpJiYodGhpcy5fY3VycmVudExpbms9ZSx0aGlzLl9jdXJyZW50TGluay5zdGF0ZT17ZGVjb3JhdGlvbnM6e3VuZGVybGluZTp2b2lkIDA9PT1lLmxpbmsuZGVjb3JhdGlvbnN8fGUubGluay5kZWNvcmF0aW9ucy51bmRlcmxpbmUscG9pbnRlckN1cnNvcjp2b2lkIDA9PT1lLmxpbmsuZGVjb3JhdGlvbnN8fGUubGluay5kZWNvcmF0aW9ucy5wb2ludGVyQ3Vyc29yfSxpc0hvdmVyZWQ6ITB9LHRoaXMuX2xpbmtIb3Zlcih0aGlzLl9lbGVtZW50LGUubGluayx0aGlzLl9sYXN0TW91c2VFdmVudCksZS5saW5rLmRlY29yYXRpb25zPXt9LE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUubGluay5kZWNvcmF0aW9ucyx7cG9pbnRlckN1cnNvcjp7Z2V0OigpPT57dmFyIGUsdDtyZXR1cm4gbnVsbD09PSh0PW51bGw9PT0oZT10aGlzLl9jdXJyZW50TGluayl8fHZvaWQgMD09PWU/dm9pZCAwOmUuc3RhdGUpfHx2b2lkIDA9PT10P3ZvaWQgMDp0LmRlY29yYXRpb25zLnBvaW50ZXJDdXJzb3J9LHNldDplPT57dmFyIHQsaTsobnVsbD09PSh0PXRoaXMuX2N1cnJlbnRMaW5rKXx8dm9pZCAwPT09dD92b2lkIDA6dC5zdGF0ZSkmJnRoaXMuX2N1cnJlbnRMaW5rLnN0YXRlLmRlY29yYXRpb25zLnBvaW50ZXJDdXJzb3IhPT1lJiYodGhpcy5fY3VycmVudExpbmsuc3RhdGUuZGVjb3JhdGlvbnMucG9pbnRlckN1cnNvcj1lLHRoaXMuX2N1cnJlbnRMaW5rLnN0YXRlLmlzSG92ZXJlZCYmKG51bGw9PT0oaT10aGlzLl9lbGVtZW50KXx8dm9pZCAwPT09aXx8aS5jbGFzc0xpc3QudG9nZ2xlKFwieHRlcm0tY3Vyc29yLXBvaW50ZXJcIixlKSkpfX0sdW5kZXJsaW5lOntnZXQ6KCk9Pnt2YXIgZSx0O3JldHVybiBudWxsPT09KHQ9bnVsbD09PShlPXRoaXMuX2N1cnJlbnRMaW5rKXx8dm9pZCAwPT09ZT92b2lkIDA6ZS5zdGF0ZSl8fHZvaWQgMD09PXQ/dm9pZCAwOnQuZGVjb3JhdGlvbnMudW5kZXJsaW5lfSxzZXQ6dD0+e3ZhciBpLHMscjsobnVsbD09PShpPXRoaXMuX2N1cnJlbnRMaW5rKXx8dm9pZCAwPT09aT92b2lkIDA6aS5zdGF0ZSkmJihudWxsPT09KHI9bnVsbD09PShzPXRoaXMuX2N1cnJlbnRMaW5rKXx8dm9pZCAwPT09cz92b2lkIDA6cy5zdGF0ZSl8fHZvaWQgMD09PXI/dm9pZCAwOnIuZGVjb3JhdGlvbnMudW5kZXJsaW5lKSE9PXQmJih0aGlzLl9jdXJyZW50TGluay5zdGF0ZS5kZWNvcmF0aW9ucy51bmRlcmxpbmU9dCx0aGlzLl9jdXJyZW50TGluay5zdGF0ZS5pc0hvdmVyZWQmJnRoaXMuX2ZpcmVVbmRlcmxpbmVFdmVudChlLmxpbmssdCkpfX19KSx0aGlzLl9yZW5kZXJTZXJ2aWNlJiZ0aGlzLl9saW5rQ2FjaGVEaXNwb3NhYmxlcy5wdXNoKHRoaXMuX3JlbmRlclNlcnZpY2Uub25SZW5kZXJlZFZpZXdwb3J0Q2hhbmdlKChlPT57aWYoIXRoaXMuX2N1cnJlbnRMaW5rKXJldHVybjtjb25zdCB0PTA9PT1lLnN0YXJ0PzA6ZS5zdGFydCsxK3RoaXMuX2J1ZmZlclNlcnZpY2UuYnVmZmVyLnlkaXNwLGk9dGhpcy5fYnVmZmVyU2VydmljZS5idWZmZXIueWRpc3ArMStlLmVuZDtpZih0aGlzLl9jdXJyZW50TGluay5saW5rLnJhbmdlLnN0YXJ0Lnk+PXQmJnRoaXMuX2N1cnJlbnRMaW5rLmxpbmsucmFuZ2UuZW5kLnk8PWkmJih0aGlzLl9jbGVhckN1cnJlbnRMaW5rKHQsaSksdGhpcy5fbGFzdE1vdXNlRXZlbnQmJnRoaXMuX2VsZW1lbnQpKXtjb25zdCBlPXRoaXMuX3Bvc2l0aW9uRnJvbU1vdXNlRXZlbnQodGhpcy5fbGFzdE1vdXNlRXZlbnQsdGhpcy5fZWxlbWVudCx0aGlzLl9tb3VzZVNlcnZpY2UpO2UmJnRoaXMuX2Fza0ZvckxpbmsoZSwhMSl9fSkpKSl9X2xpbmtIb3ZlcihlLHQsaSl7dmFyIHM7KG51bGw9PT0ocz10aGlzLl9jdXJyZW50TGluayl8fHZvaWQgMD09PXM/dm9pZCAwOnMuc3RhdGUpJiYodGhpcy5fY3VycmVudExpbmsuc3RhdGUuaXNIb3ZlcmVkPSEwLHRoaXMuX2N1cnJlbnRMaW5rLnN0YXRlLmRlY29yYXRpb25zLnVuZGVybGluZSYmdGhpcy5fZmlyZVVuZGVybGluZUV2ZW50KHQsITApLHRoaXMuX2N1cnJlbnRMaW5rLnN0YXRlLmRlY29yYXRpb25zLnBvaW50ZXJDdXJzb3ImJmUuY2xhc3NMaXN0LmFkZChcInh0ZXJtLWN1cnNvci1wb2ludGVyXCIpKSx0LmhvdmVyJiZ0LmhvdmVyKGksdC50ZXh0KX1fZmlyZVVuZGVybGluZUV2ZW50KGUsdCl7Y29uc3QgaT1lLnJhbmdlLHM9dGhpcy5fYnVmZmVyU2VydmljZS5idWZmZXIueWRpc3Ascj10aGlzLl9jcmVhdGVMaW5rVW5kZXJsaW5lRXZlbnQoaS5zdGFydC54LTEsaS5zdGFydC55LXMtMSxpLmVuZC54LGkuZW5kLnktcy0xLHZvaWQgMCk7KHQ/dGhpcy5fb25TaG93TGlua1VuZGVybGluZTp0aGlzLl9vbkhpZGVMaW5rVW5kZXJsaW5lKS5maXJlKHIpfV9saW5rTGVhdmUoZSx0LGkpe3ZhciBzOyhudWxsPT09KHM9dGhpcy5fY3VycmVudExpbmspfHx2b2lkIDA9PT1zP3ZvaWQgMDpzLnN0YXRlKSYmKHRoaXMuX2N1cnJlbnRMaW5rLnN0YXRlLmlzSG92ZXJlZD0hMSx0aGlzLl9jdXJyZW50TGluay5zdGF0ZS5kZWNvcmF0aW9ucy51bmRlcmxpbmUmJnRoaXMuX2ZpcmVVbmRlcmxpbmVFdmVudCh0LCExKSx0aGlzLl9jdXJyZW50TGluay5zdGF0ZS5kZWNvcmF0aW9ucy5wb2ludGVyQ3Vyc29yJiZlLmNsYXNzTGlzdC5yZW1vdmUoXCJ4dGVybS1jdXJzb3ItcG9pbnRlclwiKSksdC5sZWF2ZSYmdC5sZWF2ZShpLHQudGV4dCl9X2xpbmtBdFBvc2l0aW9uKGUsdCl7Y29uc3QgaT1lLnJhbmdlLnN0YXJ0LnkqdGhpcy5fYnVmZmVyU2VydmljZS5jb2xzK2UucmFuZ2Uuc3RhcnQueCxzPWUucmFuZ2UuZW5kLnkqdGhpcy5fYnVmZmVyU2VydmljZS5jb2xzK2UucmFuZ2UuZW5kLngscj10LnkqdGhpcy5fYnVmZmVyU2VydmljZS5jb2xzK3QueDtyZXR1cm4gaTw9ciYmcjw9c31fcG9zaXRpb25Gcm9tTW91c2VFdmVudChlLHQsaSl7Y29uc3Qgcz1pLmdldENvb3JkcyhlLHQsdGhpcy5fYnVmZmVyU2VydmljZS5jb2xzLHRoaXMuX2J1ZmZlclNlcnZpY2Uucm93cyk7aWYocylyZXR1cm57eDpzWzBdLHk6c1sxXSt0aGlzLl9idWZmZXJTZXJ2aWNlLmJ1ZmZlci55ZGlzcH19X2NyZWF0ZUxpbmtVbmRlcmxpbmVFdmVudChlLHQsaSxzLHIpe3JldHVybnt4MTplLHkxOnQseDI6aSx5MjpzLGNvbHM6dGhpcy5fYnVmZmVyU2VydmljZS5jb2xzLGZnOnJ9fX07Yz1zKFtyKDAsbi5JQnVmZmVyU2VydmljZSldLGMpLHQuTGlua2lmaWVyMj1jfSw5MDQyOihlLHQpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC50b29NdWNoT3V0cHV0PXQucHJvbXB0TGFiZWw9dm9pZCAwLHQucHJvbXB0TGFiZWw9XCJUZXJtaW5hbCBpbnB1dFwiLHQudG9vTXVjaE91dHB1dD1cIlRvbyBtdWNoIG91dHB1dCB0byBhbm5vdW5jZSwgbmF2aWdhdGUgdG8gcm93cyBtYW51YWxseSB0byByZWFkXCJ9LDM3MzA6ZnVuY3Rpb24oZSx0LGkpe3ZhciBzPXRoaXMmJnRoaXMuX19kZWNvcmF0ZXx8ZnVuY3Rpb24oZSx0LGkscyl7dmFyIHIsbj1hcmd1bWVudHMubGVuZ3RoLG89bjwzP3Q6bnVsbD09PXM/cz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsaSk6cztpZihcIm9iamVjdFwiPT10eXBlb2YgUmVmbGVjdCYmXCJmdW5jdGlvblwiPT10eXBlb2YgUmVmbGVjdC5kZWNvcmF0ZSlvPVJlZmxlY3QuZGVjb3JhdGUoZSx0LGkscyk7ZWxzZSBmb3IodmFyIGE9ZS5sZW5ndGgtMTthPj0wO2EtLSkocj1lW2FdKSYmKG89KG48Mz9yKG8pOm4+Mz9yKHQsaSxvKTpyKHQsaSkpfHxvKTtyZXR1cm4gbj4zJiZvJiZPYmplY3QuZGVmaW5lUHJvcGVydHkodCxpLG8pLG99LHI9dGhpcyYmdGhpcy5fX3BhcmFtfHxmdW5jdGlvbihlLHQpe3JldHVybiBmdW5jdGlvbihpLHMpe3QoaSxzLGUpfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5Pc2NMaW5rUHJvdmlkZXI9dm9pZCAwO2NvbnN0IG49aSg1MTEpLG89aSgyNTg1KTtsZXQgYT1jbGFzc3tjb25zdHJ1Y3RvcihlLHQsaSl7dGhpcy5fYnVmZmVyU2VydmljZT1lLHRoaXMuX29wdGlvbnNTZXJ2aWNlPXQsdGhpcy5fb3NjTGlua1NlcnZpY2U9aX1wcm92aWRlTGlua3MoZSx0KXt2YXIgaTtjb25zdCBzPXRoaXMuX2J1ZmZlclNlcnZpY2UuYnVmZmVyLmxpbmVzLmdldChlLTEpO2lmKCFzKXJldHVybiB2b2lkIHQodm9pZCAwKTtjb25zdCByPVtdLG89dGhpcy5fb3B0aW9uc1NlcnZpY2UucmF3T3B0aW9ucy5saW5rSGFuZGxlcixhPW5ldyBuLkNlbGxEYXRhLGM9cy5nZXRUcmltbWVkTGVuZ3RoKCk7bGV0IGw9LTEsZD0tMSxfPSExO2ZvcihsZXQgdD0wO3Q8Yzt0KyspaWYoLTEhPT1kfHxzLmhhc0NvbnRlbnQodCkpe2lmKHMubG9hZENlbGwodCxhKSxhLmhhc0V4dGVuZGVkQXR0cnMoKSYmYS5leHRlbmRlZC51cmxJZCl7aWYoLTE9PT1kKXtkPXQsbD1hLmV4dGVuZGVkLnVybElkO2NvbnRpbnVlfV89YS5leHRlbmRlZC51cmxJZCE9PWx9ZWxzZS0xIT09ZCYmKF89ITApO2lmKF98fC0xIT09ZCYmdD09PWMtMSl7Y29uc3Qgcz1udWxsPT09KGk9dGhpcy5fb3NjTGlua1NlcnZpY2UuZ2V0TGlua0RhdGEobCkpfHx2b2lkIDA9PT1pP3ZvaWQgMDppLnVyaTtpZihzKXtjb25zdCBpPXtzdGFydDp7eDpkKzEseTplfSxlbmQ6e3g6dCsoX3x8dCE9PWMtMT8wOjEpLHk6ZX19O2xldCBuPSExO2lmKCEobnVsbD09bz92b2lkIDA6by5hbGxvd05vbkh0dHBQcm90b2NvbHMpKXRyeXtjb25zdCBlPW5ldyBVUkwocyk7W1wiaHR0cDpcIixcImh0dHBzOlwiXS5pbmNsdWRlcyhlLnByb3RvY29sKXx8KG49ITApfWNhdGNoKGUpe249ITB9bnx8ci5wdXNoKHt0ZXh0OnMscmFuZ2U6aSxhY3RpdmF0ZTooZSx0KT0+bz9vLmFjdGl2YXRlKGUsdCxpKTpoKDAsdCksaG92ZXI6KGUsdCk9Pnt2YXIgcztyZXR1cm4gbnVsbD09PShzPW51bGw9PW8/dm9pZCAwOm8uaG92ZXIpfHx2b2lkIDA9PT1zP3ZvaWQgMDpzLmNhbGwobyxlLHQsaSl9LGxlYXZlOihlLHQpPT57dmFyIHM7cmV0dXJuIG51bGw9PT0ocz1udWxsPT1vP3ZvaWQgMDpvLmxlYXZlKXx8dm9pZCAwPT09cz92b2lkIDA6cy5jYWxsKG8sZSx0LGkpfX0pfV89ITEsYS5oYXNFeHRlbmRlZEF0dHJzKCkmJmEuZXh0ZW5kZWQudXJsSWQ/KGQ9dCxsPWEuZXh0ZW5kZWQudXJsSWQpOihkPS0xLGw9LTEpfX10KHIpfX07ZnVuY3Rpb24gaChlLHQpe2lmKGNvbmZpcm0oYERvIHlvdSB3YW50IHRvIG5hdmlnYXRlIHRvICR7dH0/XFxuXFxuV0FSTklORzogVGhpcyBsaW5rIGNvdWxkIHBvdGVudGlhbGx5IGJlIGRhbmdlcm91c2ApKXtjb25zdCBlPXdpbmRvdy5vcGVuKCk7aWYoZSl7dHJ5e2Uub3BlbmVyPW51bGx9Y2F0Y2goZSl7fWUubG9jYXRpb24uaHJlZj10fWVsc2UgY29uc29sZS53YXJuKFwiT3BlbmluZyBsaW5rIGJsb2NrZWQgYXMgb3BlbmVyIGNvdWxkIG5vdCBiZSBjbGVhcmVkXCIpfX1hPXMoW3IoMCxvLklCdWZmZXJTZXJ2aWNlKSxyKDEsby5JT3B0aW9uc1NlcnZpY2UpLHIoMixvLklPc2NMaW5rU2VydmljZSldLGEpLHQuT3NjTGlua1Byb3ZpZGVyPWF9LDYxOTM6KGUsdCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LlJlbmRlckRlYm91bmNlcj12b2lkIDAsdC5SZW5kZXJEZWJvdW5jZXI9Y2xhc3N7Y29uc3RydWN0b3IoZSx0KXt0aGlzLl9wYXJlbnRXaW5kb3c9ZSx0aGlzLl9yZW5kZXJDYWxsYmFjaz10LHRoaXMuX3JlZnJlc2hDYWxsYmFja3M9W119ZGlzcG9zZSgpe3RoaXMuX2FuaW1hdGlvbkZyYW1lJiYodGhpcy5fcGFyZW50V2luZG93LmNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMuX2FuaW1hdGlvbkZyYW1lKSx0aGlzLl9hbmltYXRpb25GcmFtZT12b2lkIDApfWFkZFJlZnJlc2hDYWxsYmFjayhlKXtyZXR1cm4gdGhpcy5fcmVmcmVzaENhbGxiYWNrcy5wdXNoKGUpLHRoaXMuX2FuaW1hdGlvbkZyYW1lfHwodGhpcy5fYW5pbWF0aW9uRnJhbWU9dGhpcy5fcGFyZW50V2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSgoKCk9PnRoaXMuX2lubmVyUmVmcmVzaCgpKSkpLHRoaXMuX2FuaW1hdGlvbkZyYW1lfXJlZnJlc2goZSx0LGkpe3RoaXMuX3Jvd0NvdW50PWksZT12b2lkIDAhPT1lP2U6MCx0PXZvaWQgMCE9PXQ/dDp0aGlzLl9yb3dDb3VudC0xLHRoaXMuX3Jvd1N0YXJ0PXZvaWQgMCE9PXRoaXMuX3Jvd1N0YXJ0P01hdGgubWluKHRoaXMuX3Jvd1N0YXJ0LGUpOmUsdGhpcy5fcm93RW5kPXZvaWQgMCE9PXRoaXMuX3Jvd0VuZD9NYXRoLm1heCh0aGlzLl9yb3dFbmQsdCk6dCx0aGlzLl9hbmltYXRpb25GcmFtZXx8KHRoaXMuX2FuaW1hdGlvbkZyYW1lPXRoaXMuX3BhcmVudFdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCgpPT50aGlzLl9pbm5lclJlZnJlc2goKSkpKX1faW5uZXJSZWZyZXNoKCl7aWYodGhpcy5fYW5pbWF0aW9uRnJhbWU9dm9pZCAwLHZvaWQgMD09PXRoaXMuX3Jvd1N0YXJ0fHx2b2lkIDA9PT10aGlzLl9yb3dFbmR8fHZvaWQgMD09PXRoaXMuX3Jvd0NvdW50KXJldHVybiB2b2lkIHRoaXMuX3J1blJlZnJlc2hDYWxsYmFja3MoKTtjb25zdCBlPU1hdGgubWF4KHRoaXMuX3Jvd1N0YXJ0LDApLHQ9TWF0aC5taW4odGhpcy5fcm93RW5kLHRoaXMuX3Jvd0NvdW50LTEpO3RoaXMuX3Jvd1N0YXJ0PXZvaWQgMCx0aGlzLl9yb3dFbmQ9dm9pZCAwLHRoaXMuX3JlbmRlckNhbGxiYWNrKGUsdCksdGhpcy5fcnVuUmVmcmVzaENhbGxiYWNrcygpfV9ydW5SZWZyZXNoQ2FsbGJhY2tzKCl7Zm9yKGNvbnN0IGUgb2YgdGhpcy5fcmVmcmVzaENhbGxiYWNrcyllKDApO3RoaXMuX3JlZnJlc2hDYWxsYmFja3M9W119fX0sNTU5NjooZSx0LGkpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5TY3JlZW5EcHJNb25pdG9yPXZvaWQgMDtjb25zdCBzPWkoODQ0KTtjbGFzcyByIGV4dGVuZHMgcy5EaXNwb3NhYmxle2NvbnN0cnVjdG9yKGUpe3N1cGVyKCksdGhpcy5fcGFyZW50V2luZG93PWUsdGhpcy5fY3VycmVudERldmljZVBpeGVsUmF0aW89dGhpcy5fcGFyZW50V2luZG93LmRldmljZVBpeGVsUmF0aW8sdGhpcy5yZWdpc3RlcigoMCxzLnRvRGlzcG9zYWJsZSkoKCgpPT57dGhpcy5jbGVhckxpc3RlbmVyKCl9KSkpfXNldExpc3RlbmVyKGUpe3RoaXMuX2xpc3RlbmVyJiZ0aGlzLmNsZWFyTGlzdGVuZXIoKSx0aGlzLl9saXN0ZW5lcj1lLHRoaXMuX291dGVyTGlzdGVuZXI9KCk9Pnt0aGlzLl9saXN0ZW5lciYmKHRoaXMuX2xpc3RlbmVyKHRoaXMuX3BhcmVudFdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvLHRoaXMuX2N1cnJlbnREZXZpY2VQaXhlbFJhdGlvKSx0aGlzLl91cGRhdGVEcHIoKSl9LHRoaXMuX3VwZGF0ZURwcigpfV91cGRhdGVEcHIoKXt2YXIgZTt0aGlzLl9vdXRlckxpc3RlbmVyJiYobnVsbD09PShlPXRoaXMuX3Jlc29sdXRpb25NZWRpYU1hdGNoTGlzdCl8fHZvaWQgMD09PWV8fGUucmVtb3ZlTGlzdGVuZXIodGhpcy5fb3V0ZXJMaXN0ZW5lciksdGhpcy5fY3VycmVudERldmljZVBpeGVsUmF0aW89dGhpcy5fcGFyZW50V2luZG93LmRldmljZVBpeGVsUmF0aW8sdGhpcy5fcmVzb2x1dGlvbk1lZGlhTWF0Y2hMaXN0PXRoaXMuX3BhcmVudFdpbmRvdy5tYXRjaE1lZGlhKGBzY3JlZW4gYW5kIChyZXNvbHV0aW9uOiAke3RoaXMuX3BhcmVudFdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvfWRwcHgpYCksdGhpcy5fcmVzb2x1dGlvbk1lZGlhTWF0Y2hMaXN0LmFkZExpc3RlbmVyKHRoaXMuX291dGVyTGlzdGVuZXIpKX1jbGVhckxpc3RlbmVyKCl7dGhpcy5fcmVzb2x1dGlvbk1lZGlhTWF0Y2hMaXN0JiZ0aGlzLl9saXN0ZW5lciYmdGhpcy5fb3V0ZXJMaXN0ZW5lciYmKHRoaXMuX3Jlc29sdXRpb25NZWRpYU1hdGNoTGlzdC5yZW1vdmVMaXN0ZW5lcih0aGlzLl9vdXRlckxpc3RlbmVyKSx0aGlzLl9yZXNvbHV0aW9uTWVkaWFNYXRjaExpc3Q9dm9pZCAwLHRoaXMuX2xpc3RlbmVyPXZvaWQgMCx0aGlzLl9vdXRlckxpc3RlbmVyPXZvaWQgMCl9fXQuU2NyZWVuRHByTW9uaXRvcj1yfSwzMjM2OihlLHQsaSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LlRlcm1pbmFsPXZvaWQgMDtjb25zdCBzPWkoMjk1MCkscj1pKDE2ODApLG49aSgzNjE0KSxvPWkoMjU4NCksYT1pKDU0MzUpLGg9aSg5MzEyKSxjPWkoNjExNCksbD1pKDM2NTYpLGQ9aSg5MDQyKSxfPWkoNDU2NyksdT1pKDEyOTYpLGY9aSg3Mzk5KSx2PWkoODQ2MCksZz1pKDg0MzcpLHA9aSgzMjMwKSxTPWkoNDcyNSksbT1pKDQyOCksQz1pKDg5MzQpLGI9aSg2NDY1KSx5PWkoNTExNCksdz1pKDg5NjkpLEU9aSg4MDU1KSxMPWkoNDI2OSksaz1pKDU5NDEpLFI9aSgzMTA3KSxEPWkoNTc0NCksQT1pKDkwNzQpLHg9aSgyNTg1KSxCPWkoMzczMCksVD1pKDg0NCksTT1pKDY3MzEpLE89XCJ1bmRlZmluZWRcIiE9dHlwZW9mIHdpbmRvdz93aW5kb3cuZG9jdW1lbnQ6bnVsbDtjbGFzcyBJIGV4dGVuZHMgdy5Db3JlVGVybWluYWx7Y29uc3RydWN0b3IoZT17fSl7c3VwZXIoZSksdGhpcy5icm93c2VyPWMsdGhpcy5fa2V5RG93bkhhbmRsZWQ9ITEsdGhpcy5fa2V5RG93blNlZW49ITEsdGhpcy5fa2V5UHJlc3NIYW5kbGVkPSExLHRoaXMuX3VucHJvY2Vzc2VkRGVhZEtleT0hMSx0aGlzLl9vbkN1cnNvck1vdmU9dGhpcy5yZWdpc3RlcihuZXcgdi5FdmVudEVtaXR0ZXIpLHRoaXMub25DdXJzb3JNb3ZlPXRoaXMuX29uQ3Vyc29yTW92ZS5ldmVudCx0aGlzLl9vbktleT10aGlzLnJlZ2lzdGVyKG5ldyB2LkV2ZW50RW1pdHRlciksdGhpcy5vbktleT10aGlzLl9vbktleS5ldmVudCx0aGlzLl9vblJlbmRlcj10aGlzLnJlZ2lzdGVyKG5ldyB2LkV2ZW50RW1pdHRlciksdGhpcy5vblJlbmRlcj10aGlzLl9vblJlbmRlci5ldmVudCx0aGlzLl9vblNlbGVjdGlvbkNoYW5nZT10aGlzLnJlZ2lzdGVyKG5ldyB2LkV2ZW50RW1pdHRlciksdGhpcy5vblNlbGVjdGlvbkNoYW5nZT10aGlzLl9vblNlbGVjdGlvbkNoYW5nZS5ldmVudCx0aGlzLl9vblRpdGxlQ2hhbmdlPXRoaXMucmVnaXN0ZXIobmV3IHYuRXZlbnRFbWl0dGVyKSx0aGlzLm9uVGl0bGVDaGFuZ2U9dGhpcy5fb25UaXRsZUNoYW5nZS5ldmVudCx0aGlzLl9vbkJlbGw9dGhpcy5yZWdpc3RlcihuZXcgdi5FdmVudEVtaXR0ZXIpLHRoaXMub25CZWxsPXRoaXMuX29uQmVsbC5ldmVudCx0aGlzLl9vbkZvY3VzPXRoaXMucmVnaXN0ZXIobmV3IHYuRXZlbnRFbWl0dGVyKSx0aGlzLl9vbkJsdXI9dGhpcy5yZWdpc3RlcihuZXcgdi5FdmVudEVtaXR0ZXIpLHRoaXMuX29uQTExeUNoYXJFbWl0dGVyPXRoaXMucmVnaXN0ZXIobmV3IHYuRXZlbnRFbWl0dGVyKSx0aGlzLl9vbkExMXlUYWJFbWl0dGVyPXRoaXMucmVnaXN0ZXIobmV3IHYuRXZlbnRFbWl0dGVyKSx0aGlzLl9vbldpbGxPcGVuPXRoaXMucmVnaXN0ZXIobmV3IHYuRXZlbnRFbWl0dGVyKSx0aGlzLl9zZXR1cCgpLHRoaXMubGlua2lmaWVyMj10aGlzLnJlZ2lzdGVyKHRoaXMuX2luc3RhbnRpYXRpb25TZXJ2aWNlLmNyZWF0ZUluc3RhbmNlKGIuTGlua2lmaWVyMikpLHRoaXMubGlua2lmaWVyMi5yZWdpc3RlckxpbmtQcm92aWRlcih0aGlzLl9pbnN0YW50aWF0aW9uU2VydmljZS5jcmVhdGVJbnN0YW5jZShCLk9zY0xpbmtQcm92aWRlcikpLHRoaXMuX2RlY29yYXRpb25TZXJ2aWNlPXRoaXMuX2luc3RhbnRpYXRpb25TZXJ2aWNlLmNyZWF0ZUluc3RhbmNlKEEuRGVjb3JhdGlvblNlcnZpY2UpLHRoaXMuX2luc3RhbnRpYXRpb25TZXJ2aWNlLnNldFNlcnZpY2UoeC5JRGVjb3JhdGlvblNlcnZpY2UsdGhpcy5fZGVjb3JhdGlvblNlcnZpY2UpLHRoaXMucmVnaXN0ZXIodGhpcy5faW5wdXRIYW5kbGVyLm9uUmVxdWVzdEJlbGwoKCgpPT50aGlzLl9vbkJlbGwuZmlyZSgpKSkpLHRoaXMucmVnaXN0ZXIodGhpcy5faW5wdXRIYW5kbGVyLm9uUmVxdWVzdFJlZnJlc2hSb3dzKCgoZSx0KT0+dGhpcy5yZWZyZXNoKGUsdCkpKSksdGhpcy5yZWdpc3Rlcih0aGlzLl9pbnB1dEhhbmRsZXIub25SZXF1ZXN0U2VuZEZvY3VzKCgoKT0+dGhpcy5fcmVwb3J0Rm9jdXMoKSkpKSx0aGlzLnJlZ2lzdGVyKHRoaXMuX2lucHV0SGFuZGxlci5vblJlcXVlc3RSZXNldCgoKCk9PnRoaXMucmVzZXQoKSkpKSx0aGlzLnJlZ2lzdGVyKHRoaXMuX2lucHV0SGFuZGxlci5vblJlcXVlc3RXaW5kb3dzT3B0aW9uc1JlcG9ydCgoZT0+dGhpcy5fcmVwb3J0V2luZG93c09wdGlvbnMoZSkpKSksdGhpcy5yZWdpc3Rlcih0aGlzLl9pbnB1dEhhbmRsZXIub25Db2xvcigoZT0+dGhpcy5faGFuZGxlQ29sb3JFdmVudChlKSkpKSx0aGlzLnJlZ2lzdGVyKCgwLHYuZm9yd2FyZEV2ZW50KSh0aGlzLl9pbnB1dEhhbmRsZXIub25DdXJzb3JNb3ZlLHRoaXMuX29uQ3Vyc29yTW92ZSkpLHRoaXMucmVnaXN0ZXIoKDAsdi5mb3J3YXJkRXZlbnQpKHRoaXMuX2lucHV0SGFuZGxlci5vblRpdGxlQ2hhbmdlLHRoaXMuX29uVGl0bGVDaGFuZ2UpKSx0aGlzLnJlZ2lzdGVyKCgwLHYuZm9yd2FyZEV2ZW50KSh0aGlzLl9pbnB1dEhhbmRsZXIub25BMTF5Q2hhcix0aGlzLl9vbkExMXlDaGFyRW1pdHRlcikpLHRoaXMucmVnaXN0ZXIoKDAsdi5mb3J3YXJkRXZlbnQpKHRoaXMuX2lucHV0SGFuZGxlci5vbkExMXlUYWIsdGhpcy5fb25BMTF5VGFiRW1pdHRlcikpLHRoaXMucmVnaXN0ZXIodGhpcy5fYnVmZmVyU2VydmljZS5vblJlc2l6ZSgoZT0+dGhpcy5fYWZ0ZXJSZXNpemUoZS5jb2xzLGUucm93cykpKSksdGhpcy5yZWdpc3RlcigoMCxULnRvRGlzcG9zYWJsZSkoKCgpPT57dmFyIGUsdDt0aGlzLl9jdXN0b21LZXlFdmVudEhhbmRsZXI9dm9pZCAwLG51bGw9PT0odD1udWxsPT09KGU9dGhpcy5lbGVtZW50KXx8dm9pZCAwPT09ZT92b2lkIDA6ZS5wYXJlbnROb2RlKXx8dm9pZCAwPT09dHx8dC5yZW1vdmVDaGlsZCh0aGlzLmVsZW1lbnQpfSkpKX1nZXQgb25Gb2N1cygpe3JldHVybiB0aGlzLl9vbkZvY3VzLmV2ZW50fWdldCBvbkJsdXIoKXtyZXR1cm4gdGhpcy5fb25CbHVyLmV2ZW50fWdldCBvbkExMXlDaGFyKCl7cmV0dXJuIHRoaXMuX29uQTExeUNoYXJFbWl0dGVyLmV2ZW50fWdldCBvbkExMXlUYWIoKXtyZXR1cm4gdGhpcy5fb25BMTF5VGFiRW1pdHRlci5ldmVudH1nZXQgb25XaWxsT3Blbigpe3JldHVybiB0aGlzLl9vbldpbGxPcGVuLmV2ZW50fV9oYW5kbGVDb2xvckV2ZW50KGUpe2lmKHRoaXMuX3RoZW1lU2VydmljZSlmb3IoY29uc3QgdCBvZiBlKXtsZXQgZSxpPVwiXCI7c3dpdGNoKHQuaW5kZXgpe2Nhc2UgMjU2OmU9XCJmb3JlZ3JvdW5kXCIsaT1cIjEwXCI7YnJlYWs7Y2FzZSAyNTc6ZT1cImJhY2tncm91bmRcIixpPVwiMTFcIjticmVhaztjYXNlIDI1ODplPVwiY3Vyc29yXCIsaT1cIjEyXCI7YnJlYWs7ZGVmYXVsdDplPVwiYW5zaVwiLGk9XCI0O1wiK3QuaW5kZXh9c3dpdGNoKHQudHlwZSl7Y2FzZSAwOmNvbnN0IHM9RS5jb2xvci50b0NvbG9yUkdCKFwiYW5zaVwiPT09ZT90aGlzLl90aGVtZVNlcnZpY2UuY29sb3JzLmFuc2lbdC5pbmRleF06dGhpcy5fdGhlbWVTZXJ2aWNlLmNvbG9yc1tlXSk7dGhpcy5jb3JlU2VydmljZS50cmlnZ2VyRGF0YUV2ZW50KGAke28uQzAuRVNDfV0ke2l9OyR7KDAsay50b1JnYlN0cmluZykocyl9JHtvLkMxX0VTQ0FQRUQuU1R9YCk7YnJlYWs7Y2FzZSAxOmlmKFwiYW5zaVwiPT09ZSl0aGlzLl90aGVtZVNlcnZpY2UubW9kaWZ5Q29sb3JzKChlPT5lLmFuc2lbdC5pbmRleF09RS5yZ2JhLnRvQ29sb3IoLi4udC5jb2xvcikpKTtlbHNle2NvbnN0IGk9ZTt0aGlzLl90aGVtZVNlcnZpY2UubW9kaWZ5Q29sb3JzKChlPT5lW2ldPUUucmdiYS50b0NvbG9yKC4uLnQuY29sb3IpKSl9YnJlYWs7Y2FzZSAyOnRoaXMuX3RoZW1lU2VydmljZS5yZXN0b3JlQ29sb3IodC5pbmRleCl9fX1fc2V0dXAoKXtzdXBlci5fc2V0dXAoKSx0aGlzLl9jdXN0b21LZXlFdmVudEhhbmRsZXI9dm9pZCAwfWdldCBidWZmZXIoKXtyZXR1cm4gdGhpcy5idWZmZXJzLmFjdGl2ZX1mb2N1cygpe3RoaXMudGV4dGFyZWEmJnRoaXMudGV4dGFyZWEuZm9jdXMoe3ByZXZlbnRTY3JvbGw6ITB9KX1faGFuZGxlU2NyZWVuUmVhZGVyTW9kZU9wdGlvbkNoYW5nZShlKXt2YXIgdDtlPyF0aGlzLl9hY2Nlc3NpYmlsaXR5TWFuYWdlciYmdGhpcy5fcmVuZGVyU2VydmljZSYmKHRoaXMuX2FjY2Vzc2liaWxpdHlNYW5hZ2VyPXRoaXMuX2luc3RhbnRpYXRpb25TZXJ2aWNlLmNyZWF0ZUluc3RhbmNlKF8uQWNjZXNzaWJpbGl0eU1hbmFnZXIsdGhpcykpOihudWxsPT09KHQ9dGhpcy5fYWNjZXNzaWJpbGl0eU1hbmFnZXIpfHx2b2lkIDA9PT10fHx0LmRpc3Bvc2UoKSx0aGlzLl9hY2Nlc3NpYmlsaXR5TWFuYWdlcj12b2lkIDApfV9oYW5kbGVUZXh0QXJlYUZvY3VzKGUpe3RoaXMuY29yZVNlcnZpY2UuZGVjUHJpdmF0ZU1vZGVzLnNlbmRGb2N1cyYmdGhpcy5jb3JlU2VydmljZS50cmlnZ2VyRGF0YUV2ZW50KG8uQzAuRVNDK1wiW0lcIiksdGhpcy51cGRhdGVDdXJzb3JTdHlsZShlKSx0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZChcImZvY3VzXCIpLHRoaXMuX3Nob3dDdXJzb3IoKSx0aGlzLl9vbkZvY3VzLmZpcmUoKX1ibHVyKCl7dmFyIGU7cmV0dXJuIG51bGw9PT0oZT10aGlzLnRleHRhcmVhKXx8dm9pZCAwPT09ZT92b2lkIDA6ZS5ibHVyKCl9X2hhbmRsZVRleHRBcmVhQmx1cigpe3RoaXMudGV4dGFyZWEudmFsdWU9XCJcIix0aGlzLnJlZnJlc2godGhpcy5idWZmZXIueSx0aGlzLmJ1ZmZlci55KSx0aGlzLmNvcmVTZXJ2aWNlLmRlY1ByaXZhdGVNb2Rlcy5zZW5kRm9jdXMmJnRoaXMuY29yZVNlcnZpY2UudHJpZ2dlckRhdGFFdmVudChvLkMwLkVTQytcIltPXCIpLHRoaXMuZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKFwiZm9jdXNcIiksdGhpcy5fb25CbHVyLmZpcmUoKX1fc3luY1RleHRBcmVhKCl7aWYoIXRoaXMudGV4dGFyZWF8fCF0aGlzLmJ1ZmZlci5pc0N1cnNvckluVmlld3BvcnR8fHRoaXMuX2NvbXBvc2l0aW9uSGVscGVyLmlzQ29tcG9zaW5nfHwhdGhpcy5fcmVuZGVyU2VydmljZSlyZXR1cm47Y29uc3QgZT10aGlzLmJ1ZmZlci55YmFzZSt0aGlzLmJ1ZmZlci55LHQ9dGhpcy5idWZmZXIubGluZXMuZ2V0KGUpO2lmKCF0KXJldHVybjtjb25zdCBpPU1hdGgubWluKHRoaXMuYnVmZmVyLngsdGhpcy5jb2xzLTEpLHM9dGhpcy5fcmVuZGVyU2VydmljZS5kaW1lbnNpb25zLmNzcy5jZWxsLmhlaWdodCxyPXQuZ2V0V2lkdGgoaSksbj10aGlzLl9yZW5kZXJTZXJ2aWNlLmRpbWVuc2lvbnMuY3NzLmNlbGwud2lkdGgqcixvPXRoaXMuYnVmZmVyLnkqdGhpcy5fcmVuZGVyU2VydmljZS5kaW1lbnNpb25zLmNzcy5jZWxsLmhlaWdodCxhPWkqdGhpcy5fcmVuZGVyU2VydmljZS5kaW1lbnNpb25zLmNzcy5jZWxsLndpZHRoO3RoaXMudGV4dGFyZWEuc3R5bGUubGVmdD1hK1wicHhcIix0aGlzLnRleHRhcmVhLnN0eWxlLnRvcD1vK1wicHhcIix0aGlzLnRleHRhcmVhLnN0eWxlLndpZHRoPW4rXCJweFwiLHRoaXMudGV4dGFyZWEuc3R5bGUuaGVpZ2h0PXMrXCJweFwiLHRoaXMudGV4dGFyZWEuc3R5bGUubGluZUhlaWdodD1zK1wicHhcIix0aGlzLnRleHRhcmVhLnN0eWxlLnpJbmRleD1cIi01XCJ9X2luaXRHbG9iYWwoKXt0aGlzLl9iaW5kS2V5cygpLHRoaXMucmVnaXN0ZXIoKDAsbC5hZGREaXNwb3NhYmxlRG9tTGlzdGVuZXIpKHRoaXMuZWxlbWVudCxcImNvcHlcIiwoZT0+e3RoaXMuaGFzU2VsZWN0aW9uKCkmJigwLG4uY29weUhhbmRsZXIpKGUsdGhpcy5fc2VsZWN0aW9uU2VydmljZSl9KSkpO2NvbnN0IGU9ZT0+KDAsbi5oYW5kbGVQYXN0ZUV2ZW50KShlLHRoaXMudGV4dGFyZWEsdGhpcy5jb3JlU2VydmljZSk7dGhpcy5yZWdpc3RlcigoMCxsLmFkZERpc3Bvc2FibGVEb21MaXN0ZW5lcikodGhpcy50ZXh0YXJlYSxcInBhc3RlXCIsZSkpLHRoaXMucmVnaXN0ZXIoKDAsbC5hZGREaXNwb3NhYmxlRG9tTGlzdGVuZXIpKHRoaXMuZWxlbWVudCxcInBhc3RlXCIsZSkpLGMuaXNGaXJlZm94P3RoaXMucmVnaXN0ZXIoKDAsbC5hZGREaXNwb3NhYmxlRG9tTGlzdGVuZXIpKHRoaXMuZWxlbWVudCxcIm1vdXNlZG93blwiLChlPT57Mj09PWUuYnV0dG9uJiYoMCxuLnJpZ2h0Q2xpY2tIYW5kbGVyKShlLHRoaXMudGV4dGFyZWEsdGhpcy5zY3JlZW5FbGVtZW50LHRoaXMuX3NlbGVjdGlvblNlcnZpY2UsdGhpcy5vcHRpb25zLnJpZ2h0Q2xpY2tTZWxlY3RzV29yZCl9KSkpOnRoaXMucmVnaXN0ZXIoKDAsbC5hZGREaXNwb3NhYmxlRG9tTGlzdGVuZXIpKHRoaXMuZWxlbWVudCxcImNvbnRleHRtZW51XCIsKGU9PnsoMCxuLnJpZ2h0Q2xpY2tIYW5kbGVyKShlLHRoaXMudGV4dGFyZWEsdGhpcy5zY3JlZW5FbGVtZW50LHRoaXMuX3NlbGVjdGlvblNlcnZpY2UsdGhpcy5vcHRpb25zLnJpZ2h0Q2xpY2tTZWxlY3RzV29yZCl9KSkpLGMuaXNMaW51eCYmdGhpcy5yZWdpc3RlcigoMCxsLmFkZERpc3Bvc2FibGVEb21MaXN0ZW5lcikodGhpcy5lbGVtZW50LFwiYXV4Y2xpY2tcIiwoZT0+ezE9PT1lLmJ1dHRvbiYmKDAsbi5tb3ZlVGV4dEFyZWFVbmRlck1vdXNlQ3Vyc29yKShlLHRoaXMudGV4dGFyZWEsdGhpcy5zY3JlZW5FbGVtZW50KX0pKSl9X2JpbmRLZXlzKCl7dGhpcy5yZWdpc3RlcigoMCxsLmFkZERpc3Bvc2FibGVEb21MaXN0ZW5lcikodGhpcy50ZXh0YXJlYSxcImtleXVwXCIsKGU9PnRoaXMuX2tleVVwKGUpKSwhMCkpLHRoaXMucmVnaXN0ZXIoKDAsbC5hZGREaXNwb3NhYmxlRG9tTGlzdGVuZXIpKHRoaXMudGV4dGFyZWEsXCJrZXlkb3duXCIsKGU9PnRoaXMuX2tleURvd24oZSkpLCEwKSksdGhpcy5yZWdpc3RlcigoMCxsLmFkZERpc3Bvc2FibGVEb21MaXN0ZW5lcikodGhpcy50ZXh0YXJlYSxcImtleXByZXNzXCIsKGU9PnRoaXMuX2tleVByZXNzKGUpKSwhMCkpLHRoaXMucmVnaXN0ZXIoKDAsbC5hZGREaXNwb3NhYmxlRG9tTGlzdGVuZXIpKHRoaXMudGV4dGFyZWEsXCJjb21wb3NpdGlvbnN0YXJ0XCIsKCgpPT50aGlzLl9jb21wb3NpdGlvbkhlbHBlci5jb21wb3NpdGlvbnN0YXJ0KCkpKSksdGhpcy5yZWdpc3RlcigoMCxsLmFkZERpc3Bvc2FibGVEb21MaXN0ZW5lcikodGhpcy50ZXh0YXJlYSxcImNvbXBvc2l0aW9udXBkYXRlXCIsKGU9PnRoaXMuX2NvbXBvc2l0aW9uSGVscGVyLmNvbXBvc2l0aW9udXBkYXRlKGUpKSkpLHRoaXMucmVnaXN0ZXIoKDAsbC5hZGREaXNwb3NhYmxlRG9tTGlzdGVuZXIpKHRoaXMudGV4dGFyZWEsXCJjb21wb3NpdGlvbmVuZFwiLCgoKT0+dGhpcy5fY29tcG9zaXRpb25IZWxwZXIuY29tcG9zaXRpb25lbmQoKSkpKSx0aGlzLnJlZ2lzdGVyKCgwLGwuYWRkRGlzcG9zYWJsZURvbUxpc3RlbmVyKSh0aGlzLnRleHRhcmVhLFwiaW5wdXRcIiwoZT0+dGhpcy5faW5wdXRFdmVudChlKSksITApKSx0aGlzLnJlZ2lzdGVyKHRoaXMub25SZW5kZXIoKCgpPT50aGlzLl9jb21wb3NpdGlvbkhlbHBlci51cGRhdGVDb21wb3NpdGlvbkVsZW1lbnRzKCkpKSl9b3BlbihlKXt2YXIgdDtpZighZSl0aHJvdyBuZXcgRXJyb3IoXCJUZXJtaW5hbCByZXF1aXJlcyBhIHBhcmVudCBlbGVtZW50LlwiKTtlLmlzQ29ubmVjdGVkfHx0aGlzLl9sb2dTZXJ2aWNlLmRlYnVnKFwiVGVybWluYWwub3BlbiB3YXMgY2FsbGVkIG9uIGFuIGVsZW1lbnQgdGhhdCB3YXMgbm90IGF0dGFjaGVkIHRvIHRoZSBET01cIiksdGhpcy5fZG9jdW1lbnQ9ZS5vd25lckRvY3VtZW50LHRoaXMuZWxlbWVudD10aGlzLl9kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLHRoaXMuZWxlbWVudC5kaXI9XCJsdHJcIix0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZChcInRlcm1pbmFsXCIpLHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKFwieHRlcm1cIiksZS5hcHBlbmRDaGlsZCh0aGlzLmVsZW1lbnQpO2NvbnN0IGk9Ty5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7dGhpcy5fdmlld3BvcnRFbGVtZW50PU8uY3JlYXRlRWxlbWVudChcImRpdlwiKSx0aGlzLl92aWV3cG9ydEVsZW1lbnQuY2xhc3NMaXN0LmFkZChcInh0ZXJtLXZpZXdwb3J0XCIpLGkuYXBwZW5kQ2hpbGQodGhpcy5fdmlld3BvcnRFbGVtZW50KSx0aGlzLl92aWV3cG9ydFNjcm9sbEFyZWE9Ty5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLHRoaXMuX3ZpZXdwb3J0U2Nyb2xsQXJlYS5jbGFzc0xpc3QuYWRkKFwieHRlcm0tc2Nyb2xsLWFyZWFcIiksdGhpcy5fdmlld3BvcnRFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX3ZpZXdwb3J0U2Nyb2xsQXJlYSksdGhpcy5zY3JlZW5FbGVtZW50PU8uY3JlYXRlRWxlbWVudChcImRpdlwiKSx0aGlzLnNjcmVlbkVsZW1lbnQuY2xhc3NMaXN0LmFkZChcInh0ZXJtLXNjcmVlblwiKSx0aGlzLl9oZWxwZXJDb250YWluZXI9Ty5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLHRoaXMuX2hlbHBlckNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKFwieHRlcm0taGVscGVyc1wiKSx0aGlzLnNjcmVlbkVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5faGVscGVyQ29udGFpbmVyKSxpLmFwcGVuZENoaWxkKHRoaXMuc2NyZWVuRWxlbWVudCksdGhpcy50ZXh0YXJlYT1PLmNyZWF0ZUVsZW1lbnQoXCJ0ZXh0YXJlYVwiKSx0aGlzLnRleHRhcmVhLmNsYXNzTGlzdC5hZGQoXCJ4dGVybS1oZWxwZXItdGV4dGFyZWFcIiksdGhpcy50ZXh0YXJlYS5zZXRBdHRyaWJ1dGUoXCJhcmlhLWxhYmVsXCIsZC5wcm9tcHRMYWJlbCksYy5pc0Nocm9tZU9TfHx0aGlzLnRleHRhcmVhLnNldEF0dHJpYnV0ZShcImFyaWEtbXVsdGlsaW5lXCIsXCJmYWxzZVwiKSx0aGlzLnRleHRhcmVhLnNldEF0dHJpYnV0ZShcImF1dG9jb3JyZWN0XCIsXCJvZmZcIiksdGhpcy50ZXh0YXJlYS5zZXRBdHRyaWJ1dGUoXCJhdXRvY2FwaXRhbGl6ZVwiLFwib2ZmXCIpLHRoaXMudGV4dGFyZWEuc2V0QXR0cmlidXRlKFwic3BlbGxjaGVja1wiLFwiZmFsc2VcIiksdGhpcy50ZXh0YXJlYS50YWJJbmRleD0wLHRoaXMuX2NvcmVCcm93c2VyU2VydmljZT10aGlzLl9pbnN0YW50aWF0aW9uU2VydmljZS5jcmVhdGVJbnN0YW5jZSh5LkNvcmVCcm93c2VyU2VydmljZSx0aGlzLnRleHRhcmVhLG51bGwhPT0odD10aGlzLl9kb2N1bWVudC5kZWZhdWx0VmlldykmJnZvaWQgMCE9PXQ/dDp3aW5kb3cpLHRoaXMuX2luc3RhbnRpYXRpb25TZXJ2aWNlLnNldFNlcnZpY2UoUy5JQ29yZUJyb3dzZXJTZXJ2aWNlLHRoaXMuX2NvcmVCcm93c2VyU2VydmljZSksdGhpcy5yZWdpc3RlcigoMCxsLmFkZERpc3Bvc2FibGVEb21MaXN0ZW5lcikodGhpcy50ZXh0YXJlYSxcImZvY3VzXCIsKGU9PnRoaXMuX2hhbmRsZVRleHRBcmVhRm9jdXMoZSkpKSksdGhpcy5yZWdpc3RlcigoMCxsLmFkZERpc3Bvc2FibGVEb21MaXN0ZW5lcikodGhpcy50ZXh0YXJlYSxcImJsdXJcIiwoKCk9PnRoaXMuX2hhbmRsZVRleHRBcmVhQmx1cigpKSkpLHRoaXMuX2hlbHBlckNvbnRhaW5lci5hcHBlbmRDaGlsZCh0aGlzLnRleHRhcmVhKSx0aGlzLl9jaGFyU2l6ZVNlcnZpY2U9dGhpcy5faW5zdGFudGlhdGlvblNlcnZpY2UuY3JlYXRlSW5zdGFuY2UobS5DaGFyU2l6ZVNlcnZpY2UsdGhpcy5fZG9jdW1lbnQsdGhpcy5faGVscGVyQ29udGFpbmVyKSx0aGlzLl9pbnN0YW50aWF0aW9uU2VydmljZS5zZXRTZXJ2aWNlKFMuSUNoYXJTaXplU2VydmljZSx0aGlzLl9jaGFyU2l6ZVNlcnZpY2UpLHRoaXMuX3RoZW1lU2VydmljZT10aGlzLl9pbnN0YW50aWF0aW9uU2VydmljZS5jcmVhdGVJbnN0YW5jZShNLlRoZW1lU2VydmljZSksdGhpcy5faW5zdGFudGlhdGlvblNlcnZpY2Uuc2V0U2VydmljZShTLklUaGVtZVNlcnZpY2UsdGhpcy5fdGhlbWVTZXJ2aWNlKSx0aGlzLl9jaGFyYWN0ZXJKb2luZXJTZXJ2aWNlPXRoaXMuX2luc3RhbnRpYXRpb25TZXJ2aWNlLmNyZWF0ZUluc3RhbmNlKEwuQ2hhcmFjdGVySm9pbmVyU2VydmljZSksdGhpcy5faW5zdGFudGlhdGlvblNlcnZpY2Uuc2V0U2VydmljZShTLklDaGFyYWN0ZXJKb2luZXJTZXJ2aWNlLHRoaXMuX2NoYXJhY3RlckpvaW5lclNlcnZpY2UpLHRoaXMuX3JlbmRlclNlcnZpY2U9dGhpcy5yZWdpc3Rlcih0aGlzLl9pbnN0YW50aWF0aW9uU2VydmljZS5jcmVhdGVJbnN0YW5jZShwLlJlbmRlclNlcnZpY2UsdGhpcy5yb3dzLHRoaXMuc2NyZWVuRWxlbWVudCkpLHRoaXMuX2luc3RhbnRpYXRpb25TZXJ2aWNlLnNldFNlcnZpY2UoUy5JUmVuZGVyU2VydmljZSx0aGlzLl9yZW5kZXJTZXJ2aWNlKSx0aGlzLnJlZ2lzdGVyKHRoaXMuX3JlbmRlclNlcnZpY2Uub25SZW5kZXJlZFZpZXdwb3J0Q2hhbmdlKChlPT50aGlzLl9vblJlbmRlci5maXJlKGUpKSkpLHRoaXMub25SZXNpemUoKGU9PnRoaXMuX3JlbmRlclNlcnZpY2UucmVzaXplKGUuY29scyxlLnJvd3MpKSksdGhpcy5fY29tcG9zaXRpb25WaWV3PU8uY3JlYXRlRWxlbWVudChcImRpdlwiKSx0aGlzLl9jb21wb3NpdGlvblZpZXcuY2xhc3NMaXN0LmFkZChcImNvbXBvc2l0aW9uLXZpZXdcIiksdGhpcy5fY29tcG9zaXRpb25IZWxwZXI9dGhpcy5faW5zdGFudGlhdGlvblNlcnZpY2UuY3JlYXRlSW5zdGFuY2Uocy5Db21wb3NpdGlvbkhlbHBlcix0aGlzLnRleHRhcmVhLHRoaXMuX2NvbXBvc2l0aW9uVmlldyksdGhpcy5faGVscGVyQ29udGFpbmVyLmFwcGVuZENoaWxkKHRoaXMuX2NvbXBvc2l0aW9uVmlldyksdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKGkpO3RyeXt0aGlzLl9vbldpbGxPcGVuLmZpcmUodGhpcy5lbGVtZW50KX1jYXRjaChlKXt9dGhpcy5fcmVuZGVyU2VydmljZS5oYXNSZW5kZXJlcigpfHx0aGlzLl9yZW5kZXJTZXJ2aWNlLnNldFJlbmRlcmVyKHRoaXMuX2NyZWF0ZVJlbmRlcmVyKCkpLHRoaXMuX21vdXNlU2VydmljZT10aGlzLl9pbnN0YW50aWF0aW9uU2VydmljZS5jcmVhdGVJbnN0YW5jZShDLk1vdXNlU2VydmljZSksdGhpcy5faW5zdGFudGlhdGlvblNlcnZpY2Uuc2V0U2VydmljZShTLklNb3VzZVNlcnZpY2UsdGhpcy5fbW91c2VTZXJ2aWNlKSx0aGlzLnZpZXdwb3J0PXRoaXMuX2luc3RhbnRpYXRpb25TZXJ2aWNlLmNyZWF0ZUluc3RhbmNlKHIuVmlld3BvcnQsKGU9PnRoaXMuc2Nyb2xsTGluZXMoZSwhMCwxKSksdGhpcy5fdmlld3BvcnRFbGVtZW50LHRoaXMuX3ZpZXdwb3J0U2Nyb2xsQXJlYSksdGhpcy5yZWdpc3Rlcih0aGlzLl9pbnB1dEhhbmRsZXIub25SZXF1ZXN0U3luY1Njcm9sbEJhcigoKCk9PnRoaXMudmlld3BvcnQuc3luY1Njcm9sbEFyZWEoKSkpKSx0aGlzLnJlZ2lzdGVyKHRoaXMudmlld3BvcnQpLHRoaXMucmVnaXN0ZXIodGhpcy5vbkN1cnNvck1vdmUoKCgpPT57dGhpcy5fcmVuZGVyU2VydmljZS5oYW5kbGVDdXJzb3JNb3ZlKCksdGhpcy5fc3luY1RleHRBcmVhKCl9KSkpLHRoaXMucmVnaXN0ZXIodGhpcy5vblJlc2l6ZSgoKCk9PnRoaXMuX3JlbmRlclNlcnZpY2UuaGFuZGxlUmVzaXplKHRoaXMuY29scyx0aGlzLnJvd3MpKSkpLHRoaXMucmVnaXN0ZXIodGhpcy5vbkJsdXIoKCgpPT50aGlzLl9yZW5kZXJTZXJ2aWNlLmhhbmRsZUJsdXIoKSkpKSx0aGlzLnJlZ2lzdGVyKHRoaXMub25Gb2N1cygoKCk9PnRoaXMuX3JlbmRlclNlcnZpY2UuaGFuZGxlRm9jdXMoKSkpKSx0aGlzLnJlZ2lzdGVyKHRoaXMuX3JlbmRlclNlcnZpY2Uub25EaW1lbnNpb25zQ2hhbmdlKCgoKT0+dGhpcy52aWV3cG9ydC5zeW5jU2Nyb2xsQXJlYSgpKSkpLHRoaXMuX3NlbGVjdGlvblNlcnZpY2U9dGhpcy5yZWdpc3Rlcih0aGlzLl9pbnN0YW50aWF0aW9uU2VydmljZS5jcmVhdGVJbnN0YW5jZShoLlNlbGVjdGlvblNlcnZpY2UsdGhpcy5lbGVtZW50LHRoaXMuc2NyZWVuRWxlbWVudCx0aGlzLmxpbmtpZmllcjIpKSx0aGlzLl9pbnN0YW50aWF0aW9uU2VydmljZS5zZXRTZXJ2aWNlKFMuSVNlbGVjdGlvblNlcnZpY2UsdGhpcy5fc2VsZWN0aW9uU2VydmljZSksdGhpcy5yZWdpc3Rlcih0aGlzLl9zZWxlY3Rpb25TZXJ2aWNlLm9uUmVxdWVzdFNjcm9sbExpbmVzKChlPT50aGlzLnNjcm9sbExpbmVzKGUuYW1vdW50LGUuc3VwcHJlc3NTY3JvbGxFdmVudCkpKSksdGhpcy5yZWdpc3Rlcih0aGlzLl9zZWxlY3Rpb25TZXJ2aWNlLm9uU2VsZWN0aW9uQ2hhbmdlKCgoKT0+dGhpcy5fb25TZWxlY3Rpb25DaGFuZ2UuZmlyZSgpKSkpLHRoaXMucmVnaXN0ZXIodGhpcy5fc2VsZWN0aW9uU2VydmljZS5vblJlcXVlc3RSZWRyYXcoKGU9PnRoaXMuX3JlbmRlclNlcnZpY2UuaGFuZGxlU2VsZWN0aW9uQ2hhbmdlZChlLnN0YXJ0LGUuZW5kLGUuY29sdW1uU2VsZWN0TW9kZSkpKSksdGhpcy5yZWdpc3Rlcih0aGlzLl9zZWxlY3Rpb25TZXJ2aWNlLm9uTGludXhNb3VzZVNlbGVjdGlvbigoZT0+e3RoaXMudGV4dGFyZWEudmFsdWU9ZSx0aGlzLnRleHRhcmVhLmZvY3VzKCksdGhpcy50ZXh0YXJlYS5zZWxlY3QoKX0pKSksdGhpcy5yZWdpc3Rlcih0aGlzLl9vblNjcm9sbC5ldmVudCgoZT0+e3RoaXMudmlld3BvcnQuc3luY1Njcm9sbEFyZWEoKSx0aGlzLl9zZWxlY3Rpb25TZXJ2aWNlLnJlZnJlc2goKX0pKSksdGhpcy5yZWdpc3RlcigoMCxsLmFkZERpc3Bvc2FibGVEb21MaXN0ZW5lcikodGhpcy5fdmlld3BvcnRFbGVtZW50LFwic2Nyb2xsXCIsKCgpPT50aGlzLl9zZWxlY3Rpb25TZXJ2aWNlLnJlZnJlc2goKSkpKSx0aGlzLmxpbmtpZmllcjIuYXR0YWNoVG9Eb20odGhpcy5zY3JlZW5FbGVtZW50LHRoaXMuX21vdXNlU2VydmljZSx0aGlzLl9yZW5kZXJTZXJ2aWNlKSx0aGlzLnJlZ2lzdGVyKHRoaXMuX2luc3RhbnRpYXRpb25TZXJ2aWNlLmNyZWF0ZUluc3RhbmNlKFIuQnVmZmVyRGVjb3JhdGlvblJlbmRlcmVyLHRoaXMuc2NyZWVuRWxlbWVudCkpLHRoaXMucmVnaXN0ZXIoKDAsbC5hZGREaXNwb3NhYmxlRG9tTGlzdGVuZXIpKHRoaXMuZWxlbWVudCxcIm1vdXNlZG93blwiLChlPT50aGlzLl9zZWxlY3Rpb25TZXJ2aWNlLmhhbmRsZU1vdXNlRG93bihlKSkpKSx0aGlzLmNvcmVNb3VzZVNlcnZpY2UuYXJlTW91c2VFdmVudHNBY3RpdmU/KHRoaXMuX3NlbGVjdGlvblNlcnZpY2UuZGlzYWJsZSgpLHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKFwiZW5hYmxlLW1vdXNlLWV2ZW50c1wiKSk6dGhpcy5fc2VsZWN0aW9uU2VydmljZS5lbmFibGUoKSx0aGlzLm9wdGlvbnMuc2NyZWVuUmVhZGVyTW9kZSYmKHRoaXMuX2FjY2Vzc2liaWxpdHlNYW5hZ2VyPXRoaXMuX2luc3RhbnRpYXRpb25TZXJ2aWNlLmNyZWF0ZUluc3RhbmNlKF8uQWNjZXNzaWJpbGl0eU1hbmFnZXIsdGhpcykpLHRoaXMucmVnaXN0ZXIodGhpcy5vcHRpb25zU2VydmljZS5vblNwZWNpZmljT3B0aW9uQ2hhbmdlKFwic2NyZWVuUmVhZGVyTW9kZVwiLChlPT50aGlzLl9oYW5kbGVTY3JlZW5SZWFkZXJNb2RlT3B0aW9uQ2hhbmdlKGUpKSkpLHRoaXMub3B0aW9ucy5vdmVydmlld1J1bGVyV2lkdGgmJih0aGlzLl9vdmVydmlld1J1bGVyUmVuZGVyZXI9dGhpcy5yZWdpc3Rlcih0aGlzLl9pbnN0YW50aWF0aW9uU2VydmljZS5jcmVhdGVJbnN0YW5jZShELk92ZXJ2aWV3UnVsZXJSZW5kZXJlcix0aGlzLl92aWV3cG9ydEVsZW1lbnQsdGhpcy5zY3JlZW5FbGVtZW50KSkpLHRoaXMub3B0aW9uc1NlcnZpY2Uub25TcGVjaWZpY09wdGlvbkNoYW5nZShcIm92ZXJ2aWV3UnVsZXJXaWR0aFwiLChlPT57IXRoaXMuX292ZXJ2aWV3UnVsZXJSZW5kZXJlciYmZSYmdGhpcy5fdmlld3BvcnRFbGVtZW50JiZ0aGlzLnNjcmVlbkVsZW1lbnQmJih0aGlzLl9vdmVydmlld1J1bGVyUmVuZGVyZXI9dGhpcy5yZWdpc3Rlcih0aGlzLl9pbnN0YW50aWF0aW9uU2VydmljZS5jcmVhdGVJbnN0YW5jZShELk92ZXJ2aWV3UnVsZXJSZW5kZXJlcix0aGlzLl92aWV3cG9ydEVsZW1lbnQsdGhpcy5zY3JlZW5FbGVtZW50KSkpfSkpLHRoaXMuX2NoYXJTaXplU2VydmljZS5tZWFzdXJlKCksdGhpcy5yZWZyZXNoKDAsdGhpcy5yb3dzLTEpLHRoaXMuX2luaXRHbG9iYWwoKSx0aGlzLmJpbmRNb3VzZSgpfV9jcmVhdGVSZW5kZXJlcigpe3JldHVybiB0aGlzLl9pbnN0YW50aWF0aW9uU2VydmljZS5jcmVhdGVJbnN0YW5jZSh1LkRvbVJlbmRlcmVyLHRoaXMuZWxlbWVudCx0aGlzLnNjcmVlbkVsZW1lbnQsdGhpcy5fdmlld3BvcnRFbGVtZW50LHRoaXMubGlua2lmaWVyMil9YmluZE1vdXNlKCl7Y29uc3QgZT10aGlzLHQ9dGhpcy5lbGVtZW50O2Z1bmN0aW9uIGkodCl7Y29uc3QgaT1lLl9tb3VzZVNlcnZpY2UuZ2V0TW91c2VSZXBvcnRDb29yZHModCxlLnNjcmVlbkVsZW1lbnQpO2lmKCFpKXJldHVybiExO2xldCBzLHI7c3dpdGNoKHQub3ZlcnJpZGVUeXBlfHx0LnR5cGUpe2Nhc2VcIm1vdXNlbW92ZVwiOnI9MzIsdm9pZCAwPT09dC5idXR0b25zPyhzPTMsdm9pZCAwIT09dC5idXR0b24mJihzPXQuYnV0dG9uPDM/dC5idXR0b246MykpOnM9MSZ0LmJ1dHRvbnM/MDo0JnQuYnV0dG9ucz8xOjImdC5idXR0b25zPzI6MzticmVhaztjYXNlXCJtb3VzZXVwXCI6cj0wLHM9dC5idXR0b248Mz90LmJ1dHRvbjozO2JyZWFrO2Nhc2VcIm1vdXNlZG93blwiOnI9MSxzPXQuYnV0dG9uPDM/dC5idXR0b246MzticmVhaztjYXNlXCJ3aGVlbFwiOmlmKDA9PT1lLnZpZXdwb3J0LmdldExpbmVzU2Nyb2xsZWQodCkpcmV0dXJuITE7cj10LmRlbHRhWTwwPzA6MSxzPTQ7YnJlYWs7ZGVmYXVsdDpyZXR1cm4hMX1yZXR1cm4hKHZvaWQgMD09PXJ8fHZvaWQgMD09PXN8fHM+NCkmJmUuY29yZU1vdXNlU2VydmljZS50cmlnZ2VyTW91c2VFdmVudCh7Y29sOmkuY29sLHJvdzppLnJvdyx4OmkueCx5OmkueSxidXR0b246cyxhY3Rpb246cixjdHJsOnQuY3RybEtleSxhbHQ6dC5hbHRLZXksc2hpZnQ6dC5zaGlmdEtleX0pfWNvbnN0IHM9e21vdXNldXA6bnVsbCx3aGVlbDpudWxsLG1vdXNlZHJhZzpudWxsLG1vdXNlbW92ZTpudWxsfSxyPXttb3VzZXVwOmU9PihpKGUpLGUuYnV0dG9uc3x8KHRoaXMuX2RvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtb3VzZXVwXCIscy5tb3VzZXVwKSxzLm1vdXNlZHJhZyYmdGhpcy5fZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1vdXNlbW92ZVwiLHMubW91c2VkcmFnKSksdGhpcy5jYW5jZWwoZSkpLHdoZWVsOmU9PihpKGUpLHRoaXMuY2FuY2VsKGUsITApKSxtb3VzZWRyYWc6ZT0+e2UuYnV0dG9ucyYmaShlKX0sbW91c2Vtb3ZlOmU9PntlLmJ1dHRvbnN8fGkoZSl9fTt0aGlzLnJlZ2lzdGVyKHRoaXMuY29yZU1vdXNlU2VydmljZS5vblByb3RvY29sQ2hhbmdlKChlPT57ZT8oXCJkZWJ1Z1wiPT09dGhpcy5vcHRpb25zU2VydmljZS5yYXdPcHRpb25zLmxvZ0xldmVsJiZ0aGlzLl9sb2dTZXJ2aWNlLmRlYnVnKFwiQmluZGluZyB0byBtb3VzZSBldmVudHM6XCIsdGhpcy5jb3JlTW91c2VTZXJ2aWNlLmV4cGxhaW5FdmVudHMoZSkpLHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKFwiZW5hYmxlLW1vdXNlLWV2ZW50c1wiKSx0aGlzLl9zZWxlY3Rpb25TZXJ2aWNlLmRpc2FibGUoKSk6KHRoaXMuX2xvZ1NlcnZpY2UuZGVidWcoXCJVbmJpbmRpbmcgZnJvbSBtb3VzZSBldmVudHMuXCIpLHRoaXMuZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKFwiZW5hYmxlLW1vdXNlLWV2ZW50c1wiKSx0aGlzLl9zZWxlY3Rpb25TZXJ2aWNlLmVuYWJsZSgpKSw4JmU/cy5tb3VzZW1vdmV8fCh0LmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZW1vdmVcIixyLm1vdXNlbW92ZSkscy5tb3VzZW1vdmU9ci5tb3VzZW1vdmUpOih0LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtb3VzZW1vdmVcIixzLm1vdXNlbW92ZSkscy5tb3VzZW1vdmU9bnVsbCksMTYmZT9zLndoZWVsfHwodC5hZGRFdmVudExpc3RlbmVyKFwid2hlZWxcIixyLndoZWVsLHtwYXNzaXZlOiExfSkscy53aGVlbD1yLndoZWVsKToodC5yZW1vdmVFdmVudExpc3RlbmVyKFwid2hlZWxcIixzLndoZWVsKSxzLndoZWVsPW51bGwpLDImZT9zLm1vdXNldXB8fChzLm1vdXNldXA9ci5tb3VzZXVwKToodGhpcy5fZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1vdXNldXBcIixzLm1vdXNldXApLHMubW91c2V1cD1udWxsKSw0JmU/cy5tb3VzZWRyYWd8fChzLm1vdXNlZHJhZz1yLm1vdXNlZHJhZyk6KHRoaXMuX2RvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtb3VzZW1vdmVcIixzLm1vdXNlZHJhZykscy5tb3VzZWRyYWc9bnVsbCl9KSkpLHRoaXMuY29yZU1vdXNlU2VydmljZS5hY3RpdmVQcm90b2NvbD10aGlzLmNvcmVNb3VzZVNlcnZpY2UuYWN0aXZlUHJvdG9jb2wsdGhpcy5yZWdpc3RlcigoMCxsLmFkZERpc3Bvc2FibGVEb21MaXN0ZW5lcikodCxcIm1vdXNlZG93blwiLChlPT57aWYoZS5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuZm9jdXMoKSx0aGlzLmNvcmVNb3VzZVNlcnZpY2UuYXJlTW91c2VFdmVudHNBY3RpdmUmJiF0aGlzLl9zZWxlY3Rpb25TZXJ2aWNlLnNob3VsZEZvcmNlU2VsZWN0aW9uKGUpKXJldHVybiBpKGUpLHMubW91c2V1cCYmdGhpcy5fZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNldXBcIixzLm1vdXNldXApLHMubW91c2VkcmFnJiZ0aGlzLl9kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwibW91c2Vtb3ZlXCIscy5tb3VzZWRyYWcpLHRoaXMuY2FuY2VsKGUpfSkpKSx0aGlzLnJlZ2lzdGVyKCgwLGwuYWRkRGlzcG9zYWJsZURvbUxpc3RlbmVyKSh0LFwid2hlZWxcIiwoZT0+e2lmKCFzLndoZWVsKXtpZighdGhpcy5idWZmZXIuaGFzU2Nyb2xsYmFjayl7Y29uc3QgdD10aGlzLnZpZXdwb3J0LmdldExpbmVzU2Nyb2xsZWQoZSk7aWYoMD09PXQpcmV0dXJuO2NvbnN0IGk9by5DMC5FU0MrKHRoaXMuY29yZVNlcnZpY2UuZGVjUHJpdmF0ZU1vZGVzLmFwcGxpY2F0aW9uQ3Vyc29yS2V5cz9cIk9cIjpcIltcIikrKGUuZGVsdGFZPDA/XCJBXCI6XCJCXCIpO2xldCBzPVwiXCI7Zm9yKGxldCBlPTA7ZTxNYXRoLmFicyh0KTtlKyspcys9aTtyZXR1cm4gdGhpcy5jb3JlU2VydmljZS50cmlnZ2VyRGF0YUV2ZW50KHMsITApLHRoaXMuY2FuY2VsKGUsITApfXJldHVybiB0aGlzLnZpZXdwb3J0LmhhbmRsZVdoZWVsKGUpP3RoaXMuY2FuY2VsKGUpOnZvaWQgMH19KSx7cGFzc2l2ZTohMX0pKSx0aGlzLnJlZ2lzdGVyKCgwLGwuYWRkRGlzcG9zYWJsZURvbUxpc3RlbmVyKSh0LFwidG91Y2hzdGFydFwiLChlPT57aWYoIXRoaXMuY29yZU1vdXNlU2VydmljZS5hcmVNb3VzZUV2ZW50c0FjdGl2ZSlyZXR1cm4gdGhpcy52aWV3cG9ydC5oYW5kbGVUb3VjaFN0YXJ0KGUpLHRoaXMuY2FuY2VsKGUpfSkse3Bhc3NpdmU6ITB9KSksdGhpcy5yZWdpc3RlcigoMCxsLmFkZERpc3Bvc2FibGVEb21MaXN0ZW5lcikodCxcInRvdWNobW92ZVwiLChlPT57aWYoIXRoaXMuY29yZU1vdXNlU2VydmljZS5hcmVNb3VzZUV2ZW50c0FjdGl2ZSlyZXR1cm4gdGhpcy52aWV3cG9ydC5oYW5kbGVUb3VjaE1vdmUoZSk/dm9pZCAwOnRoaXMuY2FuY2VsKGUpfSkse3Bhc3NpdmU6ITF9KSl9cmVmcmVzaChlLHQpe3ZhciBpO251bGw9PT0oaT10aGlzLl9yZW5kZXJTZXJ2aWNlKXx8dm9pZCAwPT09aXx8aS5yZWZyZXNoUm93cyhlLHQpfXVwZGF0ZUN1cnNvclN0eWxlKGUpe3ZhciB0OyhudWxsPT09KHQ9dGhpcy5fc2VsZWN0aW9uU2VydmljZSl8fHZvaWQgMD09PXQ/dm9pZCAwOnQuc2hvdWxkQ29sdW1uU2VsZWN0KGUpKT90aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZChcImNvbHVtbi1zZWxlY3RcIik6dGhpcy5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoXCJjb2x1bW4tc2VsZWN0XCIpfV9zaG93Q3Vyc29yKCl7dGhpcy5jb3JlU2VydmljZS5pc0N1cnNvckluaXRpYWxpemVkfHwodGhpcy5jb3JlU2VydmljZS5pc0N1cnNvckluaXRpYWxpemVkPSEwLHRoaXMucmVmcmVzaCh0aGlzLmJ1ZmZlci55LHRoaXMuYnVmZmVyLnkpKX1zY3JvbGxMaW5lcyhlLHQsaT0wKXtzdXBlci5zY3JvbGxMaW5lcyhlLHQsaSksdGhpcy5yZWZyZXNoKDAsdGhpcy5yb3dzLTEpfXBhc3RlKGUpeygwLG4ucGFzdGUpKGUsdGhpcy50ZXh0YXJlYSx0aGlzLmNvcmVTZXJ2aWNlKX1hdHRhY2hDdXN0b21LZXlFdmVudEhhbmRsZXIoZSl7dGhpcy5fY3VzdG9tS2V5RXZlbnRIYW5kbGVyPWV9cmVnaXN0ZXJMaW5rUHJvdmlkZXIoZSl7cmV0dXJuIHRoaXMubGlua2lmaWVyMi5yZWdpc3RlckxpbmtQcm92aWRlcihlKX1yZWdpc3RlckNoYXJhY3RlckpvaW5lcihlKXtpZighdGhpcy5fY2hhcmFjdGVySm9pbmVyU2VydmljZSl0aHJvdyBuZXcgRXJyb3IoXCJUZXJtaW5hbCBtdXN0IGJlIG9wZW5lZCBmaXJzdFwiKTtjb25zdCB0PXRoaXMuX2NoYXJhY3RlckpvaW5lclNlcnZpY2UucmVnaXN0ZXIoZSk7cmV0dXJuIHRoaXMucmVmcmVzaCgwLHRoaXMucm93cy0xKSx0fWRlcmVnaXN0ZXJDaGFyYWN0ZXJKb2luZXIoZSl7aWYoIXRoaXMuX2NoYXJhY3RlckpvaW5lclNlcnZpY2UpdGhyb3cgbmV3IEVycm9yKFwiVGVybWluYWwgbXVzdCBiZSBvcGVuZWQgZmlyc3RcIik7dGhpcy5fY2hhcmFjdGVySm9pbmVyU2VydmljZS5kZXJlZ2lzdGVyKGUpJiZ0aGlzLnJlZnJlc2goMCx0aGlzLnJvd3MtMSl9Z2V0IG1hcmtlcnMoKXtyZXR1cm4gdGhpcy5idWZmZXIubWFya2Vyc31hZGRNYXJrZXIoZSl7cmV0dXJuIHRoaXMuYnVmZmVyLmFkZE1hcmtlcih0aGlzLmJ1ZmZlci55YmFzZSt0aGlzLmJ1ZmZlci55K2UpfXJlZ2lzdGVyRGVjb3JhdGlvbihlKXtyZXR1cm4gdGhpcy5fZGVjb3JhdGlvblNlcnZpY2UucmVnaXN0ZXJEZWNvcmF0aW9uKGUpfWhhc1NlbGVjdGlvbigpe3JldHVybiEhdGhpcy5fc2VsZWN0aW9uU2VydmljZSYmdGhpcy5fc2VsZWN0aW9uU2VydmljZS5oYXNTZWxlY3Rpb259c2VsZWN0KGUsdCxpKXt0aGlzLl9zZWxlY3Rpb25TZXJ2aWNlLnNldFNlbGVjdGlvbihlLHQsaSl9Z2V0U2VsZWN0aW9uKCl7cmV0dXJuIHRoaXMuX3NlbGVjdGlvblNlcnZpY2U/dGhpcy5fc2VsZWN0aW9uU2VydmljZS5zZWxlY3Rpb25UZXh0OlwiXCJ9Z2V0U2VsZWN0aW9uUG9zaXRpb24oKXtpZih0aGlzLl9zZWxlY3Rpb25TZXJ2aWNlJiZ0aGlzLl9zZWxlY3Rpb25TZXJ2aWNlLmhhc1NlbGVjdGlvbilyZXR1cm57c3RhcnQ6e3g6dGhpcy5fc2VsZWN0aW9uU2VydmljZS5zZWxlY3Rpb25TdGFydFswXSx5OnRoaXMuX3NlbGVjdGlvblNlcnZpY2Uuc2VsZWN0aW9uU3RhcnRbMV19LGVuZDp7eDp0aGlzLl9zZWxlY3Rpb25TZXJ2aWNlLnNlbGVjdGlvbkVuZFswXSx5OnRoaXMuX3NlbGVjdGlvblNlcnZpY2Uuc2VsZWN0aW9uRW5kWzFdfX19Y2xlYXJTZWxlY3Rpb24oKXt2YXIgZTtudWxsPT09KGU9dGhpcy5fc2VsZWN0aW9uU2VydmljZSl8fHZvaWQgMD09PWV8fGUuY2xlYXJTZWxlY3Rpb24oKX1zZWxlY3RBbGwoKXt2YXIgZTtudWxsPT09KGU9dGhpcy5fc2VsZWN0aW9uU2VydmljZSl8fHZvaWQgMD09PWV8fGUuc2VsZWN0QWxsKCl9c2VsZWN0TGluZXMoZSx0KXt2YXIgaTtudWxsPT09KGk9dGhpcy5fc2VsZWN0aW9uU2VydmljZSl8fHZvaWQgMD09PWl8fGkuc2VsZWN0TGluZXMoZSx0KX1fa2V5RG93bihlKXtpZih0aGlzLl9rZXlEb3duSGFuZGxlZD0hMSx0aGlzLl9rZXlEb3duU2Vlbj0hMCx0aGlzLl9jdXN0b21LZXlFdmVudEhhbmRsZXImJiExPT09dGhpcy5fY3VzdG9tS2V5RXZlbnRIYW5kbGVyKGUpKXJldHVybiExO2NvbnN0IHQ9dGhpcy5icm93c2VyLmlzTWFjJiZ0aGlzLm9wdGlvbnMubWFjT3B0aW9uSXNNZXRhJiZlLmFsdEtleTtpZighdCYmIXRoaXMuX2NvbXBvc2l0aW9uSGVscGVyLmtleWRvd24oZSkpcmV0dXJuIHRoaXMub3B0aW9ucy5zY3JvbGxPblVzZXJJbnB1dCYmdGhpcy5idWZmZXIueWJhc2UhPT10aGlzLmJ1ZmZlci55ZGlzcCYmdGhpcy5fYnVmZmVyU2VydmljZS5zY3JvbGxUb0JvdHRvbSgpLCExO3R8fFwiRGVhZFwiIT09ZS5rZXkmJlwiQWx0R3JhcGhcIiE9PWUua2V5fHwodGhpcy5fdW5wcm9jZXNzZWREZWFkS2V5PSEwKTtjb25zdCBpPSgwLGYuZXZhbHVhdGVLZXlib2FyZEV2ZW50KShlLHRoaXMuY29yZVNlcnZpY2UuZGVjUHJpdmF0ZU1vZGVzLmFwcGxpY2F0aW9uQ3Vyc29yS2V5cyx0aGlzLmJyb3dzZXIuaXNNYWMsdGhpcy5vcHRpb25zLm1hY09wdGlvbklzTWV0YSk7aWYodGhpcy51cGRhdGVDdXJzb3JTdHlsZShlKSwzPT09aS50eXBlfHwyPT09aS50eXBlKXtjb25zdCB0PXRoaXMucm93cy0xO3JldHVybiB0aGlzLnNjcm9sbExpbmVzKDI9PT1pLnR5cGU/LXQ6dCksdGhpcy5jYW5jZWwoZSwhMCl9cmV0dXJuIDE9PT1pLnR5cGUmJnRoaXMuc2VsZWN0QWxsKCksISF0aGlzLl9pc1RoaXJkTGV2ZWxTaGlmdCh0aGlzLmJyb3dzZXIsZSl8fChpLmNhbmNlbCYmdGhpcy5jYW5jZWwoZSwhMCksIWkua2V5fHwhIShlLmtleSYmIWUuY3RybEtleSYmIWUuYWx0S2V5JiYhZS5tZXRhS2V5JiYxPT09ZS5rZXkubGVuZ3RoJiZlLmtleS5jaGFyQ29kZUF0KDApPj02NSYmZS5rZXkuY2hhckNvZGVBdCgwKTw9OTApfHwodGhpcy5fdW5wcm9jZXNzZWREZWFkS2V5Pyh0aGlzLl91bnByb2Nlc3NlZERlYWRLZXk9ITEsITApOihpLmtleSE9PW8uQzAuRVRYJiZpLmtleSE9PW8uQzAuQ1J8fCh0aGlzLnRleHRhcmVhLnZhbHVlPVwiXCIpLHRoaXMuX29uS2V5LmZpcmUoe2tleTppLmtleSxkb21FdmVudDplfSksdGhpcy5fc2hvd0N1cnNvcigpLHRoaXMuY29yZVNlcnZpY2UudHJpZ2dlckRhdGFFdmVudChpLmtleSwhMCksIXRoaXMub3B0aW9uc1NlcnZpY2UucmF3T3B0aW9ucy5zY3JlZW5SZWFkZXJNb2RlfHxlLmFsdEtleXx8ZS5jdHJsS2V5P3RoaXMuY2FuY2VsKGUsITApOnZvaWQodGhpcy5fa2V5RG93bkhhbmRsZWQ9ITApKSkpfV9pc1RoaXJkTGV2ZWxTaGlmdChlLHQpe2NvbnN0IGk9ZS5pc01hYyYmIXRoaXMub3B0aW9ucy5tYWNPcHRpb25Jc01ldGEmJnQuYWx0S2V5JiYhdC5jdHJsS2V5JiYhdC5tZXRhS2V5fHxlLmlzV2luZG93cyYmdC5hbHRLZXkmJnQuY3RybEtleSYmIXQubWV0YUtleXx8ZS5pc1dpbmRvd3MmJnQuZ2V0TW9kaWZpZXJTdGF0ZShcIkFsdEdyYXBoXCIpO3JldHVyblwia2V5cHJlc3NcIj09PXQudHlwZT9pOmkmJighdC5rZXlDb2RlfHx0LmtleUNvZGU+NDcpfV9rZXlVcChlKXt0aGlzLl9rZXlEb3duU2Vlbj0hMSx0aGlzLl9jdXN0b21LZXlFdmVudEhhbmRsZXImJiExPT09dGhpcy5fY3VzdG9tS2V5RXZlbnRIYW5kbGVyKGUpfHwoZnVuY3Rpb24oZSl7cmV0dXJuIDE2PT09ZS5rZXlDb2RlfHwxNz09PWUua2V5Q29kZXx8MTg9PT1lLmtleUNvZGV9KGUpfHx0aGlzLmZvY3VzKCksdGhpcy51cGRhdGVDdXJzb3JTdHlsZShlKSx0aGlzLl9rZXlQcmVzc0hhbmRsZWQ9ITEpfV9rZXlQcmVzcyhlKXtsZXQgdDtpZih0aGlzLl9rZXlQcmVzc0hhbmRsZWQ9ITEsdGhpcy5fa2V5RG93bkhhbmRsZWQpcmV0dXJuITE7aWYodGhpcy5fY3VzdG9tS2V5RXZlbnRIYW5kbGVyJiYhMT09PXRoaXMuX2N1c3RvbUtleUV2ZW50SGFuZGxlcihlKSlyZXR1cm4hMTtpZih0aGlzLmNhbmNlbChlKSxlLmNoYXJDb2RlKXQ9ZS5jaGFyQ29kZTtlbHNlIGlmKG51bGw9PT1lLndoaWNofHx2b2lkIDA9PT1lLndoaWNoKXQ9ZS5rZXlDb2RlO2Vsc2V7aWYoMD09PWUud2hpY2h8fDA9PT1lLmNoYXJDb2RlKXJldHVybiExO3Q9ZS53aGljaH1yZXR1cm4hKCF0fHwoZS5hbHRLZXl8fGUuY3RybEtleXx8ZS5tZXRhS2V5KSYmIXRoaXMuX2lzVGhpcmRMZXZlbFNoaWZ0KHRoaXMuYnJvd3NlcixlKXx8KHQ9U3RyaW5nLmZyb21DaGFyQ29kZSh0KSx0aGlzLl9vbktleS5maXJlKHtrZXk6dCxkb21FdmVudDplfSksdGhpcy5fc2hvd0N1cnNvcigpLHRoaXMuY29yZVNlcnZpY2UudHJpZ2dlckRhdGFFdmVudCh0LCEwKSx0aGlzLl9rZXlQcmVzc0hhbmRsZWQ9ITAsdGhpcy5fdW5wcm9jZXNzZWREZWFkS2V5PSExLDApKX1faW5wdXRFdmVudChlKXtpZihlLmRhdGEmJlwiaW5zZXJ0VGV4dFwiPT09ZS5pbnB1dFR5cGUmJighZS5jb21wb3NlZHx8IXRoaXMuX2tleURvd25TZWVuKSYmIXRoaXMub3B0aW9uc1NlcnZpY2UucmF3T3B0aW9ucy5zY3JlZW5SZWFkZXJNb2RlKXtpZih0aGlzLl9rZXlQcmVzc0hhbmRsZWQpcmV0dXJuITE7dGhpcy5fdW5wcm9jZXNzZWREZWFkS2V5PSExO2NvbnN0IHQ9ZS5kYXRhO3JldHVybiB0aGlzLmNvcmVTZXJ2aWNlLnRyaWdnZXJEYXRhRXZlbnQodCwhMCksdGhpcy5jYW5jZWwoZSksITB9cmV0dXJuITF9cmVzaXplKGUsdCl7ZSE9PXRoaXMuY29sc3x8dCE9PXRoaXMucm93cz9zdXBlci5yZXNpemUoZSx0KTp0aGlzLl9jaGFyU2l6ZVNlcnZpY2UmJiF0aGlzLl9jaGFyU2l6ZVNlcnZpY2UuaGFzVmFsaWRTaXplJiZ0aGlzLl9jaGFyU2l6ZVNlcnZpY2UubWVhc3VyZSgpfV9hZnRlclJlc2l6ZShlLHQpe3ZhciBpLHM7bnVsbD09PShpPXRoaXMuX2NoYXJTaXplU2VydmljZSl8fHZvaWQgMD09PWl8fGkubWVhc3VyZSgpLG51bGw9PT0ocz10aGlzLnZpZXdwb3J0KXx8dm9pZCAwPT09c3x8cy5zeW5jU2Nyb2xsQXJlYSghMCl9Y2xlYXIoKXtpZigwIT09dGhpcy5idWZmZXIueWJhc2V8fDAhPT10aGlzLmJ1ZmZlci55KXt0aGlzLmJ1ZmZlci5jbGVhckFsbE1hcmtlcnMoKSx0aGlzLmJ1ZmZlci5saW5lcy5zZXQoMCx0aGlzLmJ1ZmZlci5saW5lcy5nZXQodGhpcy5idWZmZXIueWJhc2UrdGhpcy5idWZmZXIueSkpLHRoaXMuYnVmZmVyLmxpbmVzLmxlbmd0aD0xLHRoaXMuYnVmZmVyLnlkaXNwPTAsdGhpcy5idWZmZXIueWJhc2U9MCx0aGlzLmJ1ZmZlci55PTA7Zm9yKGxldCBlPTE7ZTx0aGlzLnJvd3M7ZSsrKXRoaXMuYnVmZmVyLmxpbmVzLnB1c2godGhpcy5idWZmZXIuZ2V0QmxhbmtMaW5lKGcuREVGQVVMVF9BVFRSX0RBVEEpKTt0aGlzLnJlZnJlc2goMCx0aGlzLnJvd3MtMSksdGhpcy5fb25TY3JvbGwuZmlyZSh7cG9zaXRpb246dGhpcy5idWZmZXIueWRpc3Asc291cmNlOjB9KX19cmVzZXQoKXt2YXIgZSx0O3RoaXMub3B0aW9ucy5yb3dzPXRoaXMucm93cyx0aGlzLm9wdGlvbnMuY29scz10aGlzLmNvbHM7Y29uc3QgaT10aGlzLl9jdXN0b21LZXlFdmVudEhhbmRsZXI7dGhpcy5fc2V0dXAoKSxzdXBlci5yZXNldCgpLG51bGw9PT0oZT10aGlzLl9zZWxlY3Rpb25TZXJ2aWNlKXx8dm9pZCAwPT09ZXx8ZS5yZXNldCgpLHRoaXMuX2RlY29yYXRpb25TZXJ2aWNlLnJlc2V0KCksdGhpcy5fY3VzdG9tS2V5RXZlbnRIYW5kbGVyPWksdGhpcy5yZWZyZXNoKDAsdGhpcy5yb3dzLTEpLG51bGw9PT0odD10aGlzLnZpZXdwb3J0KXx8dm9pZCAwPT09dHx8dC5zeW5jU2Nyb2xsQXJlYSgpfWNsZWFyVGV4dHVyZUF0bGFzKCl7dmFyIGU7bnVsbD09PShlPXRoaXMuX3JlbmRlclNlcnZpY2UpfHx2b2lkIDA9PT1lfHxlLmNsZWFyVGV4dHVyZUF0bGFzKCl9X3JlcG9ydEZvY3VzKCl7dmFyIGU7KG51bGw9PT0oZT10aGlzLmVsZW1lbnQpfHx2b2lkIDA9PT1lP3ZvaWQgMDplLmNsYXNzTGlzdC5jb250YWlucyhcImZvY3VzXCIpKT90aGlzLmNvcmVTZXJ2aWNlLnRyaWdnZXJEYXRhRXZlbnQoby5DMC5FU0MrXCJbSVwiKTp0aGlzLmNvcmVTZXJ2aWNlLnRyaWdnZXJEYXRhRXZlbnQoby5DMC5FU0MrXCJbT1wiKX1fcmVwb3J0V2luZG93c09wdGlvbnMoZSl7aWYodGhpcy5fcmVuZGVyU2VydmljZSlzd2l0Y2goZSl7Y2FzZSBhLldpbmRvd3NPcHRpb25zUmVwb3J0VHlwZS5HRVRfV0lOX1NJWkVfUElYRUxTOmNvbnN0IGU9dGhpcy5fcmVuZGVyU2VydmljZS5kaW1lbnNpb25zLmNzcy5jYW52YXMud2lkdGgudG9GaXhlZCgwKSx0PXRoaXMuX3JlbmRlclNlcnZpY2UuZGltZW5zaW9ucy5jc3MuY2FudmFzLmhlaWdodC50b0ZpeGVkKDApO3RoaXMuY29yZVNlcnZpY2UudHJpZ2dlckRhdGFFdmVudChgJHtvLkMwLkVTQ31bNDske3R9OyR7ZX10YCk7YnJlYWs7Y2FzZSBhLldpbmRvd3NPcHRpb25zUmVwb3J0VHlwZS5HRVRfQ0VMTF9TSVpFX1BJWEVMUzpjb25zdCBpPXRoaXMuX3JlbmRlclNlcnZpY2UuZGltZW5zaW9ucy5jc3MuY2VsbC53aWR0aC50b0ZpeGVkKDApLHM9dGhpcy5fcmVuZGVyU2VydmljZS5kaW1lbnNpb25zLmNzcy5jZWxsLmhlaWdodC50b0ZpeGVkKDApO3RoaXMuY29yZVNlcnZpY2UudHJpZ2dlckRhdGFFdmVudChgJHtvLkMwLkVTQ31bNjske3N9OyR7aX10YCl9fWNhbmNlbChlLHQpe2lmKHRoaXMub3B0aW9ucy5jYW5jZWxFdmVudHN8fHQpcmV0dXJuIGUucHJldmVudERlZmF1bHQoKSxlLnN0b3BQcm9wYWdhdGlvbigpLCExfX10LlRlcm1pbmFsPUl9LDk5MjQ6KGUsdCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LlRpbWVCYXNlZERlYm91bmNlcj12b2lkIDAsdC5UaW1lQmFzZWREZWJvdW5jZXI9Y2xhc3N7Y29uc3RydWN0b3IoZSx0PTFlMyl7dGhpcy5fcmVuZGVyQ2FsbGJhY2s9ZSx0aGlzLl9kZWJvdW5jZVRocmVzaG9sZE1TPXQsdGhpcy5fbGFzdFJlZnJlc2hNcz0wLHRoaXMuX2FkZGl0aW9uYWxSZWZyZXNoUmVxdWVzdGVkPSExfWRpc3Bvc2UoKXt0aGlzLl9yZWZyZXNoVGltZW91dElEJiZjbGVhclRpbWVvdXQodGhpcy5fcmVmcmVzaFRpbWVvdXRJRCl9cmVmcmVzaChlLHQsaSl7dGhpcy5fcm93Q291bnQ9aSxlPXZvaWQgMCE9PWU/ZTowLHQ9dm9pZCAwIT09dD90OnRoaXMuX3Jvd0NvdW50LTEsdGhpcy5fcm93U3RhcnQ9dm9pZCAwIT09dGhpcy5fcm93U3RhcnQ/TWF0aC5taW4odGhpcy5fcm93U3RhcnQsZSk6ZSx0aGlzLl9yb3dFbmQ9dm9pZCAwIT09dGhpcy5fcm93RW5kP01hdGgubWF4KHRoaXMuX3Jvd0VuZCx0KTp0O2NvbnN0IHM9RGF0ZS5ub3coKTtpZihzLXRoaXMuX2xhc3RSZWZyZXNoTXM+PXRoaXMuX2RlYm91bmNlVGhyZXNob2xkTVMpdGhpcy5fbGFzdFJlZnJlc2hNcz1zLHRoaXMuX2lubmVyUmVmcmVzaCgpO2Vsc2UgaWYoIXRoaXMuX2FkZGl0aW9uYWxSZWZyZXNoUmVxdWVzdGVkKXtjb25zdCBlPXMtdGhpcy5fbGFzdFJlZnJlc2hNcyx0PXRoaXMuX2RlYm91bmNlVGhyZXNob2xkTVMtZTt0aGlzLl9hZGRpdGlvbmFsUmVmcmVzaFJlcXVlc3RlZD0hMCx0aGlzLl9yZWZyZXNoVGltZW91dElEPXdpbmRvdy5zZXRUaW1lb3V0KCgoKT0+e3RoaXMuX2xhc3RSZWZyZXNoTXM9RGF0ZS5ub3coKSx0aGlzLl9pbm5lclJlZnJlc2goKSx0aGlzLl9hZGRpdGlvbmFsUmVmcmVzaFJlcXVlc3RlZD0hMSx0aGlzLl9yZWZyZXNoVGltZW91dElEPXZvaWQgMH0pLHQpfX1faW5uZXJSZWZyZXNoKCl7aWYodm9pZCAwPT09dGhpcy5fcm93U3RhcnR8fHZvaWQgMD09PXRoaXMuX3Jvd0VuZHx8dm9pZCAwPT09dGhpcy5fcm93Q291bnQpcmV0dXJuO2NvbnN0IGU9TWF0aC5tYXgodGhpcy5fcm93U3RhcnQsMCksdD1NYXRoLm1pbih0aGlzLl9yb3dFbmQsdGhpcy5fcm93Q291bnQtMSk7dGhpcy5fcm93U3RhcnQ9dm9pZCAwLHRoaXMuX3Jvd0VuZD12b2lkIDAsdGhpcy5fcmVuZGVyQ2FsbGJhY2soZSx0KX19fSwxNjgwOmZ1bmN0aW9uKGUsdCxpKXt2YXIgcz10aGlzJiZ0aGlzLl9fZGVjb3JhdGV8fGZ1bmN0aW9uKGUsdCxpLHMpe3ZhciByLG49YXJndW1lbnRzLmxlbmd0aCxvPW48Mz90Om51bGw9PT1zP3M9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LGkpOnM7aWYoXCJvYmplY3RcIj09dHlwZW9mIFJlZmxlY3QmJlwiZnVuY3Rpb25cIj09dHlwZW9mIFJlZmxlY3QuZGVjb3JhdGUpbz1SZWZsZWN0LmRlY29yYXRlKGUsdCxpLHMpO2Vsc2UgZm9yKHZhciBhPWUubGVuZ3RoLTE7YT49MDthLS0pKHI9ZVthXSkmJihvPShuPDM/cihvKTpuPjM/cih0LGksbyk6cih0LGkpKXx8byk7cmV0dXJuIG4+MyYmbyYmT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsaSxvKSxvfSxyPXRoaXMmJnRoaXMuX19wYXJhbXx8ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZnVuY3Rpb24oaSxzKXt0KGkscyxlKX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuVmlld3BvcnQ9dm9pZCAwO2NvbnN0IG49aSg4NDQpLG89aSgzNjU2KSxhPWkoNDcyNSksaD1pKDI1ODUpO2xldCBjPWNsYXNzIGV4dGVuZHMgbi5EaXNwb3NhYmxle2NvbnN0cnVjdG9yKGUsdCxpLHMscixuLGEsaCxjKXtzdXBlcigpLHRoaXMuX3Njcm9sbExpbmVzPWUsdGhpcy5fdmlld3BvcnRFbGVtZW50PXQsdGhpcy5fc2Nyb2xsQXJlYT1pLHRoaXMuX2J1ZmZlclNlcnZpY2U9cyx0aGlzLl9vcHRpb25zU2VydmljZT1yLHRoaXMuX2NoYXJTaXplU2VydmljZT1uLHRoaXMuX3JlbmRlclNlcnZpY2U9YSx0aGlzLl9jb3JlQnJvd3NlclNlcnZpY2U9aCx0aGlzLnNjcm9sbEJhcldpZHRoPTAsdGhpcy5fY3VycmVudFJvd0hlaWdodD0wLHRoaXMuX2N1cnJlbnREZXZpY2VDZWxsSGVpZ2h0PTAsdGhpcy5fbGFzdFJlY29yZGVkQnVmZmVyTGVuZ3RoPTAsdGhpcy5fbGFzdFJlY29yZGVkVmlld3BvcnRIZWlnaHQ9MCx0aGlzLl9sYXN0UmVjb3JkZWRCdWZmZXJIZWlnaHQ9MCx0aGlzLl9sYXN0VG91Y2hZPTAsdGhpcy5fbGFzdFNjcm9sbFRvcD0wLHRoaXMuX3doZWVsUGFydGlhbFNjcm9sbD0wLHRoaXMuX3JlZnJlc2hBbmltYXRpb25GcmFtZT1udWxsLHRoaXMuX2lnbm9yZU5leHRTY3JvbGxFdmVudD0hMSx0aGlzLl9zbW9vdGhTY3JvbGxTdGF0ZT17c3RhcnRUaW1lOjAsb3JpZ2luOi0xLHRhcmdldDotMX0sdGhpcy5zY3JvbGxCYXJXaWR0aD10aGlzLl92aWV3cG9ydEVsZW1lbnQub2Zmc2V0V2lkdGgtdGhpcy5fc2Nyb2xsQXJlYS5vZmZzZXRXaWR0aHx8MTUsdGhpcy5yZWdpc3RlcigoMCxvLmFkZERpc3Bvc2FibGVEb21MaXN0ZW5lcikodGhpcy5fdmlld3BvcnRFbGVtZW50LFwic2Nyb2xsXCIsdGhpcy5faGFuZGxlU2Nyb2xsLmJpbmQodGhpcykpKSx0aGlzLl9hY3RpdmVCdWZmZXI9dGhpcy5fYnVmZmVyU2VydmljZS5idWZmZXIsdGhpcy5yZWdpc3Rlcih0aGlzLl9idWZmZXJTZXJ2aWNlLmJ1ZmZlcnMub25CdWZmZXJBY3RpdmF0ZSgoZT0+dGhpcy5fYWN0aXZlQnVmZmVyPWUuYWN0aXZlQnVmZmVyKSkpLHRoaXMuX3JlbmRlckRpbWVuc2lvbnM9dGhpcy5fcmVuZGVyU2VydmljZS5kaW1lbnNpb25zLHRoaXMucmVnaXN0ZXIodGhpcy5fcmVuZGVyU2VydmljZS5vbkRpbWVuc2lvbnNDaGFuZ2UoKGU9PnRoaXMuX3JlbmRlckRpbWVuc2lvbnM9ZSkpKSx0aGlzLl9oYW5kbGVUaGVtZUNoYW5nZShjLmNvbG9ycyksdGhpcy5yZWdpc3RlcihjLm9uQ2hhbmdlQ29sb3JzKChlPT50aGlzLl9oYW5kbGVUaGVtZUNoYW5nZShlKSkpKSx0aGlzLnJlZ2lzdGVyKHRoaXMuX29wdGlvbnNTZXJ2aWNlLm9uU3BlY2lmaWNPcHRpb25DaGFuZ2UoXCJzY3JvbGxiYWNrXCIsKCgpPT50aGlzLnN5bmNTY3JvbGxBcmVhKCkpKSksc2V0VGltZW91dCgoKCk9PnRoaXMuc3luY1Njcm9sbEFyZWEoKSksMCl9X2hhbmRsZVRoZW1lQ2hhbmdlKGUpe3RoaXMuX3ZpZXdwb3J0RWxlbWVudC5zdHlsZS5iYWNrZ3JvdW5kQ29sb3I9ZS5iYWNrZ3JvdW5kLmNzc31fcmVmcmVzaChlKXtpZihlKXJldHVybiB0aGlzLl9pbm5lclJlZnJlc2goKSx2b2lkKG51bGwhPT10aGlzLl9yZWZyZXNoQW5pbWF0aW9uRnJhbWUmJnRoaXMuX2NvcmVCcm93c2VyU2VydmljZS53aW5kb3cuY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5fcmVmcmVzaEFuaW1hdGlvbkZyYW1lKSk7bnVsbD09PXRoaXMuX3JlZnJlc2hBbmltYXRpb25GcmFtZSYmKHRoaXMuX3JlZnJlc2hBbmltYXRpb25GcmFtZT10aGlzLl9jb3JlQnJvd3NlclNlcnZpY2Uud2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSgoKCk9PnRoaXMuX2lubmVyUmVmcmVzaCgpKSkpfV9pbm5lclJlZnJlc2goKXtpZih0aGlzLl9jaGFyU2l6ZVNlcnZpY2UuaGVpZ2h0PjApe3RoaXMuX2N1cnJlbnRSb3dIZWlnaHQ9dGhpcy5fcmVuZGVyU2VydmljZS5kaW1lbnNpb25zLmRldmljZS5jZWxsLmhlaWdodC90aGlzLl9jb3JlQnJvd3NlclNlcnZpY2UuZHByLHRoaXMuX2N1cnJlbnREZXZpY2VDZWxsSGVpZ2h0PXRoaXMuX3JlbmRlclNlcnZpY2UuZGltZW5zaW9ucy5kZXZpY2UuY2VsbC5oZWlnaHQsdGhpcy5fbGFzdFJlY29yZGVkVmlld3BvcnRIZWlnaHQ9dGhpcy5fdmlld3BvcnRFbGVtZW50Lm9mZnNldEhlaWdodDtjb25zdCBlPU1hdGgucm91bmQodGhpcy5fY3VycmVudFJvd0hlaWdodCp0aGlzLl9sYXN0UmVjb3JkZWRCdWZmZXJMZW5ndGgpKyh0aGlzLl9sYXN0UmVjb3JkZWRWaWV3cG9ydEhlaWdodC10aGlzLl9yZW5kZXJTZXJ2aWNlLmRpbWVuc2lvbnMuY3NzLmNhbnZhcy5oZWlnaHQpO3RoaXMuX2xhc3RSZWNvcmRlZEJ1ZmZlckhlaWdodCE9PWUmJih0aGlzLl9sYXN0UmVjb3JkZWRCdWZmZXJIZWlnaHQ9ZSx0aGlzLl9zY3JvbGxBcmVhLnN0eWxlLmhlaWdodD10aGlzLl9sYXN0UmVjb3JkZWRCdWZmZXJIZWlnaHQrXCJweFwiKX1jb25zdCBlPXRoaXMuX2J1ZmZlclNlcnZpY2UuYnVmZmVyLnlkaXNwKnRoaXMuX2N1cnJlbnRSb3dIZWlnaHQ7dGhpcy5fdmlld3BvcnRFbGVtZW50LnNjcm9sbFRvcCE9PWUmJih0aGlzLl9pZ25vcmVOZXh0U2Nyb2xsRXZlbnQ9ITAsdGhpcy5fdmlld3BvcnRFbGVtZW50LnNjcm9sbFRvcD1lKSx0aGlzLl9yZWZyZXNoQW5pbWF0aW9uRnJhbWU9bnVsbH1zeW5jU2Nyb2xsQXJlYShlPSExKXtpZih0aGlzLl9sYXN0UmVjb3JkZWRCdWZmZXJMZW5ndGghPT10aGlzLl9idWZmZXJTZXJ2aWNlLmJ1ZmZlci5saW5lcy5sZW5ndGgpcmV0dXJuIHRoaXMuX2xhc3RSZWNvcmRlZEJ1ZmZlckxlbmd0aD10aGlzLl9idWZmZXJTZXJ2aWNlLmJ1ZmZlci5saW5lcy5sZW5ndGgsdm9pZCB0aGlzLl9yZWZyZXNoKGUpO3RoaXMuX2xhc3RSZWNvcmRlZFZpZXdwb3J0SGVpZ2h0PT09dGhpcy5fcmVuZGVyU2VydmljZS5kaW1lbnNpb25zLmNzcy5jYW52YXMuaGVpZ2h0JiZ0aGlzLl9sYXN0U2Nyb2xsVG9wPT09dGhpcy5fYWN0aXZlQnVmZmVyLnlkaXNwKnRoaXMuX2N1cnJlbnRSb3dIZWlnaHQmJnRoaXMuX3JlbmRlckRpbWVuc2lvbnMuZGV2aWNlLmNlbGwuaGVpZ2h0PT09dGhpcy5fY3VycmVudERldmljZUNlbGxIZWlnaHR8fHRoaXMuX3JlZnJlc2goZSl9X2hhbmRsZVNjcm9sbChlKXtpZih0aGlzLl9sYXN0U2Nyb2xsVG9wPXRoaXMuX3ZpZXdwb3J0RWxlbWVudC5zY3JvbGxUb3AsIXRoaXMuX3ZpZXdwb3J0RWxlbWVudC5vZmZzZXRQYXJlbnQpcmV0dXJuO2lmKHRoaXMuX2lnbm9yZU5leHRTY3JvbGxFdmVudClyZXR1cm4gdGhpcy5faWdub3JlTmV4dFNjcm9sbEV2ZW50PSExLHZvaWQgdGhpcy5fc2Nyb2xsTGluZXMoMCk7Y29uc3QgdD1NYXRoLnJvdW5kKHRoaXMuX2xhc3RTY3JvbGxUb3AvdGhpcy5fY3VycmVudFJvd0hlaWdodCktdGhpcy5fYnVmZmVyU2VydmljZS5idWZmZXIueWRpc3A7dGhpcy5fc2Nyb2xsTGluZXModCl9X3Ntb290aFNjcm9sbCgpe2lmKHRoaXMuX2lzRGlzcG9zZWR8fC0xPT09dGhpcy5fc21vb3RoU2Nyb2xsU3RhdGUub3JpZ2lufHwtMT09PXRoaXMuX3Ntb290aFNjcm9sbFN0YXRlLnRhcmdldClyZXR1cm47Y29uc3QgZT10aGlzLl9zbW9vdGhTY3JvbGxQZXJjZW50KCk7dGhpcy5fdmlld3BvcnRFbGVtZW50LnNjcm9sbFRvcD10aGlzLl9zbW9vdGhTY3JvbGxTdGF0ZS5vcmlnaW4rTWF0aC5yb3VuZChlKih0aGlzLl9zbW9vdGhTY3JvbGxTdGF0ZS50YXJnZXQtdGhpcy5fc21vb3RoU2Nyb2xsU3RhdGUub3JpZ2luKSksZTwxP3RoaXMuX2NvcmVCcm93c2VyU2VydmljZS53aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgoKT0+dGhpcy5fc21vb3RoU2Nyb2xsKCkpKTp0aGlzLl9jbGVhclNtb290aFNjcm9sbFN0YXRlKCl9X3Ntb290aFNjcm9sbFBlcmNlbnQoKXtyZXR1cm4gdGhpcy5fb3B0aW9uc1NlcnZpY2UucmF3T3B0aW9ucy5zbW9vdGhTY3JvbGxEdXJhdGlvbiYmdGhpcy5fc21vb3RoU2Nyb2xsU3RhdGUuc3RhcnRUaW1lP01hdGgubWF4KE1hdGgubWluKChEYXRlLm5vdygpLXRoaXMuX3Ntb290aFNjcm9sbFN0YXRlLnN0YXJ0VGltZSkvdGhpcy5fb3B0aW9uc1NlcnZpY2UucmF3T3B0aW9ucy5zbW9vdGhTY3JvbGxEdXJhdGlvbiwxKSwwKToxfV9jbGVhclNtb290aFNjcm9sbFN0YXRlKCl7dGhpcy5fc21vb3RoU2Nyb2xsU3RhdGUuc3RhcnRUaW1lPTAsdGhpcy5fc21vb3RoU2Nyb2xsU3RhdGUub3JpZ2luPS0xLHRoaXMuX3Ntb290aFNjcm9sbFN0YXRlLnRhcmdldD0tMX1fYnViYmxlU2Nyb2xsKGUsdCl7Y29uc3QgaT10aGlzLl92aWV3cG9ydEVsZW1lbnQuc2Nyb2xsVG9wK3RoaXMuX2xhc3RSZWNvcmRlZFZpZXdwb3J0SGVpZ2h0O3JldHVybiEodDwwJiYwIT09dGhpcy5fdmlld3BvcnRFbGVtZW50LnNjcm9sbFRvcHx8dD4wJiZpPHRoaXMuX2xhc3RSZWNvcmRlZEJ1ZmZlckhlaWdodCl8fChlLmNhbmNlbGFibGUmJmUucHJldmVudERlZmF1bHQoKSwhMSl9aGFuZGxlV2hlZWwoZSl7Y29uc3QgdD10aGlzLl9nZXRQaXhlbHNTY3JvbGxlZChlKTtyZXR1cm4gMCE9PXQmJih0aGlzLl9vcHRpb25zU2VydmljZS5yYXdPcHRpb25zLnNtb290aFNjcm9sbER1cmF0aW9uPyh0aGlzLl9zbW9vdGhTY3JvbGxTdGF0ZS5zdGFydFRpbWU9RGF0ZS5ub3coKSx0aGlzLl9zbW9vdGhTY3JvbGxQZXJjZW50KCk8MT8odGhpcy5fc21vb3RoU2Nyb2xsU3RhdGUub3JpZ2luPXRoaXMuX3ZpZXdwb3J0RWxlbWVudC5zY3JvbGxUb3AsLTE9PT10aGlzLl9zbW9vdGhTY3JvbGxTdGF0ZS50YXJnZXQ/dGhpcy5fc21vb3RoU2Nyb2xsU3RhdGUudGFyZ2V0PXRoaXMuX3ZpZXdwb3J0RWxlbWVudC5zY3JvbGxUb3ArdDp0aGlzLl9zbW9vdGhTY3JvbGxTdGF0ZS50YXJnZXQrPXQsdGhpcy5fc21vb3RoU2Nyb2xsU3RhdGUudGFyZ2V0PU1hdGgubWF4KE1hdGgubWluKHRoaXMuX3Ntb290aFNjcm9sbFN0YXRlLnRhcmdldCx0aGlzLl92aWV3cG9ydEVsZW1lbnQuc2Nyb2xsSGVpZ2h0KSwwKSx0aGlzLl9zbW9vdGhTY3JvbGwoKSk6dGhpcy5fY2xlYXJTbW9vdGhTY3JvbGxTdGF0ZSgpKTp0aGlzLl92aWV3cG9ydEVsZW1lbnQuc2Nyb2xsVG9wKz10LHRoaXMuX2J1YmJsZVNjcm9sbChlLHQpKX1fZ2V0UGl4ZWxzU2Nyb2xsZWQoZSl7aWYoMD09PWUuZGVsdGFZfHxlLnNoaWZ0S2V5KXJldHVybiAwO2xldCB0PXRoaXMuX2FwcGx5U2Nyb2xsTW9kaWZpZXIoZS5kZWx0YVksZSk7cmV0dXJuIGUuZGVsdGFNb2RlPT09V2hlZWxFdmVudC5ET01fREVMVEFfTElORT90Kj10aGlzLl9jdXJyZW50Um93SGVpZ2h0OmUuZGVsdGFNb2RlPT09V2hlZWxFdmVudC5ET01fREVMVEFfUEFHRSYmKHQqPXRoaXMuX2N1cnJlbnRSb3dIZWlnaHQqdGhpcy5fYnVmZmVyU2VydmljZS5yb3dzKSx0fWdldEJ1ZmZlckVsZW1lbnRzKGUsdCl7dmFyIGk7bGV0IHMscj1cIlwiO2NvbnN0IG49W10sbz1udWxsIT10P3Q6dGhpcy5fYnVmZmVyU2VydmljZS5idWZmZXIubGluZXMubGVuZ3RoLGE9dGhpcy5fYnVmZmVyU2VydmljZS5idWZmZXIubGluZXM7Zm9yKGxldCB0PWU7dDxvO3QrKyl7Y29uc3QgZT1hLmdldCh0KTtpZighZSljb250aW51ZTtjb25zdCBvPW51bGw9PT0oaT1hLmdldCh0KzEpKXx8dm9pZCAwPT09aT92b2lkIDA6aS5pc1dyYXBwZWQ7aWYocis9ZS50cmFuc2xhdGVUb1N0cmluZyghbyksIW98fHQ9PT1hLmxlbmd0aC0xKXtjb25zdCBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7ZS50ZXh0Q29udGVudD1yLG4ucHVzaChlKSxyLmxlbmd0aD4wJiYocz1lKSxyPVwiXCJ9fXJldHVybntidWZmZXJFbGVtZW50czpuLGN1cnNvckVsZW1lbnQ6c319Z2V0TGluZXNTY3JvbGxlZChlKXtpZigwPT09ZS5kZWx0YVl8fGUuc2hpZnRLZXkpcmV0dXJuIDA7bGV0IHQ9dGhpcy5fYXBwbHlTY3JvbGxNb2RpZmllcihlLmRlbHRhWSxlKTtyZXR1cm4gZS5kZWx0YU1vZGU9PT1XaGVlbEV2ZW50LkRPTV9ERUxUQV9QSVhFTD8odC89dGhpcy5fY3VycmVudFJvd0hlaWdodCswLHRoaXMuX3doZWVsUGFydGlhbFNjcm9sbCs9dCx0PU1hdGguZmxvb3IoTWF0aC5hYnModGhpcy5fd2hlZWxQYXJ0aWFsU2Nyb2xsKSkqKHRoaXMuX3doZWVsUGFydGlhbFNjcm9sbD4wPzE6LTEpLHRoaXMuX3doZWVsUGFydGlhbFNjcm9sbCU9MSk6ZS5kZWx0YU1vZGU9PT1XaGVlbEV2ZW50LkRPTV9ERUxUQV9QQUdFJiYodCo9dGhpcy5fYnVmZmVyU2VydmljZS5yb3dzKSx0fV9hcHBseVNjcm9sbE1vZGlmaWVyKGUsdCl7Y29uc3QgaT10aGlzLl9vcHRpb25zU2VydmljZS5yYXdPcHRpb25zLmZhc3RTY3JvbGxNb2RpZmllcjtyZXR1cm5cImFsdFwiPT09aSYmdC5hbHRLZXl8fFwiY3RybFwiPT09aSYmdC5jdHJsS2V5fHxcInNoaWZ0XCI9PT1pJiZ0LnNoaWZ0S2V5P2UqdGhpcy5fb3B0aW9uc1NlcnZpY2UucmF3T3B0aW9ucy5mYXN0U2Nyb2xsU2Vuc2l0aXZpdHkqdGhpcy5fb3B0aW9uc1NlcnZpY2UucmF3T3B0aW9ucy5zY3JvbGxTZW5zaXRpdml0eTplKnRoaXMuX29wdGlvbnNTZXJ2aWNlLnJhd09wdGlvbnMuc2Nyb2xsU2Vuc2l0aXZpdHl9aGFuZGxlVG91Y2hTdGFydChlKXt0aGlzLl9sYXN0VG91Y2hZPWUudG91Y2hlc1swXS5wYWdlWX1oYW5kbGVUb3VjaE1vdmUoZSl7Y29uc3QgdD10aGlzLl9sYXN0VG91Y2hZLWUudG91Y2hlc1swXS5wYWdlWTtyZXR1cm4gdGhpcy5fbGFzdFRvdWNoWT1lLnRvdWNoZXNbMF0ucGFnZVksMCE9PXQmJih0aGlzLl92aWV3cG9ydEVsZW1lbnQuc2Nyb2xsVG9wKz10LHRoaXMuX2J1YmJsZVNjcm9sbChlLHQpKX19O2M9cyhbcigzLGguSUJ1ZmZlclNlcnZpY2UpLHIoNCxoLklPcHRpb25zU2VydmljZSkscig1LGEuSUNoYXJTaXplU2VydmljZSkscig2LGEuSVJlbmRlclNlcnZpY2UpLHIoNyxhLklDb3JlQnJvd3NlclNlcnZpY2UpLHIoOCxhLklUaGVtZVNlcnZpY2UpXSxjKSx0LlZpZXdwb3J0PWN9LDMxMDc6ZnVuY3Rpb24oZSx0LGkpe3ZhciBzPXRoaXMmJnRoaXMuX19kZWNvcmF0ZXx8ZnVuY3Rpb24oZSx0LGkscyl7dmFyIHIsbj1hcmd1bWVudHMubGVuZ3RoLG89bjwzP3Q6bnVsbD09PXM/cz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsaSk6cztpZihcIm9iamVjdFwiPT10eXBlb2YgUmVmbGVjdCYmXCJmdW5jdGlvblwiPT10eXBlb2YgUmVmbGVjdC5kZWNvcmF0ZSlvPVJlZmxlY3QuZGVjb3JhdGUoZSx0LGkscyk7ZWxzZSBmb3IodmFyIGE9ZS5sZW5ndGgtMTthPj0wO2EtLSkocj1lW2FdKSYmKG89KG48Mz9yKG8pOm4+Mz9yKHQsaSxvKTpyKHQsaSkpfHxvKTtyZXR1cm4gbj4zJiZvJiZPYmplY3QuZGVmaW5lUHJvcGVydHkodCxpLG8pLG99LHI9dGhpcyYmdGhpcy5fX3BhcmFtfHxmdW5jdGlvbihlLHQpe3JldHVybiBmdW5jdGlvbihpLHMpe3QoaSxzLGUpfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5CdWZmZXJEZWNvcmF0aW9uUmVuZGVyZXI9dm9pZCAwO2NvbnN0IG49aSgzNjU2KSxvPWkoNDcyNSksYT1pKDg0NCksaD1pKDI1ODUpO2xldCBjPWNsYXNzIGV4dGVuZHMgYS5EaXNwb3NhYmxle2NvbnN0cnVjdG9yKGUsdCxpLHMpe3N1cGVyKCksdGhpcy5fc2NyZWVuRWxlbWVudD1lLHRoaXMuX2J1ZmZlclNlcnZpY2U9dCx0aGlzLl9kZWNvcmF0aW9uU2VydmljZT1pLHRoaXMuX3JlbmRlclNlcnZpY2U9cyx0aGlzLl9kZWNvcmF0aW9uRWxlbWVudHM9bmV3IE1hcCx0aGlzLl9hbHRCdWZmZXJJc0FjdGl2ZT0hMSx0aGlzLl9kaW1lbnNpb25zQ2hhbmdlZD0hMSx0aGlzLl9jb250YWluZXI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSx0aGlzLl9jb250YWluZXIuY2xhc3NMaXN0LmFkZChcInh0ZXJtLWRlY29yYXRpb24tY29udGFpbmVyXCIpLHRoaXMuX3NjcmVlbkVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fY29udGFpbmVyKSx0aGlzLnJlZ2lzdGVyKHRoaXMuX3JlbmRlclNlcnZpY2Uub25SZW5kZXJlZFZpZXdwb3J0Q2hhbmdlKCgoKT0+dGhpcy5fZG9SZWZyZXNoRGVjb3JhdGlvbnMoKSkpKSx0aGlzLnJlZ2lzdGVyKHRoaXMuX3JlbmRlclNlcnZpY2Uub25EaW1lbnNpb25zQ2hhbmdlKCgoKT0+e3RoaXMuX2RpbWVuc2lvbnNDaGFuZ2VkPSEwLHRoaXMuX3F1ZXVlUmVmcmVzaCgpfSkpKSx0aGlzLnJlZ2lzdGVyKCgwLG4uYWRkRGlzcG9zYWJsZURvbUxpc3RlbmVyKSh3aW5kb3csXCJyZXNpemVcIiwoKCk9PnRoaXMuX3F1ZXVlUmVmcmVzaCgpKSkpLHRoaXMucmVnaXN0ZXIodGhpcy5fYnVmZmVyU2VydmljZS5idWZmZXJzLm9uQnVmZmVyQWN0aXZhdGUoKCgpPT57dGhpcy5fYWx0QnVmZmVySXNBY3RpdmU9dGhpcy5fYnVmZmVyU2VydmljZS5idWZmZXI9PT10aGlzLl9idWZmZXJTZXJ2aWNlLmJ1ZmZlcnMuYWx0fSkpKSx0aGlzLnJlZ2lzdGVyKHRoaXMuX2RlY29yYXRpb25TZXJ2aWNlLm9uRGVjb3JhdGlvblJlZ2lzdGVyZWQoKCgpPT50aGlzLl9xdWV1ZVJlZnJlc2goKSkpKSx0aGlzLnJlZ2lzdGVyKHRoaXMuX2RlY29yYXRpb25TZXJ2aWNlLm9uRGVjb3JhdGlvblJlbW92ZWQoKGU9PnRoaXMuX3JlbW92ZURlY29yYXRpb24oZSkpKSksdGhpcy5yZWdpc3RlcigoMCxhLnRvRGlzcG9zYWJsZSkoKCgpPT57dGhpcy5fY29udGFpbmVyLnJlbW92ZSgpLHRoaXMuX2RlY29yYXRpb25FbGVtZW50cy5jbGVhcigpfSkpKX1fcXVldWVSZWZyZXNoKCl7dm9pZCAwPT09dGhpcy5fYW5pbWF0aW9uRnJhbWUmJih0aGlzLl9hbmltYXRpb25GcmFtZT10aGlzLl9yZW5kZXJTZXJ2aWNlLmFkZFJlZnJlc2hDYWxsYmFjaygoKCk9Pnt0aGlzLl9kb1JlZnJlc2hEZWNvcmF0aW9ucygpLHRoaXMuX2FuaW1hdGlvbkZyYW1lPXZvaWQgMH0pKSl9X2RvUmVmcmVzaERlY29yYXRpb25zKCl7Zm9yKGNvbnN0IGUgb2YgdGhpcy5fZGVjb3JhdGlvblNlcnZpY2UuZGVjb3JhdGlvbnMpdGhpcy5fcmVuZGVyRGVjb3JhdGlvbihlKTt0aGlzLl9kaW1lbnNpb25zQ2hhbmdlZD0hMX1fcmVuZGVyRGVjb3JhdGlvbihlKXt0aGlzLl9yZWZyZXNoU3R5bGUoZSksdGhpcy5fZGltZW5zaW9uc0NoYW5nZWQmJnRoaXMuX3JlZnJlc2hYUG9zaXRpb24oZSl9X2NyZWF0ZUVsZW1lbnQoZSl7dmFyIHQsaTtjb25zdCBzPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7cy5jbGFzc0xpc3QuYWRkKFwieHRlcm0tZGVjb3JhdGlvblwiKSxzLmNsYXNzTGlzdC50b2dnbGUoXCJ4dGVybS1kZWNvcmF0aW9uLXRvcC1sYXllclwiLFwidG9wXCI9PT0obnVsbD09PSh0PW51bGw9PWU/dm9pZCAwOmUub3B0aW9ucyl8fHZvaWQgMD09PXQ/dm9pZCAwOnQubGF5ZXIpKSxzLnN0eWxlLndpZHRoPWAke01hdGgucm91bmQoKGUub3B0aW9ucy53aWR0aHx8MSkqdGhpcy5fcmVuZGVyU2VydmljZS5kaW1lbnNpb25zLmNzcy5jZWxsLndpZHRoKX1weGAscy5zdHlsZS5oZWlnaHQ9KGUub3B0aW9ucy5oZWlnaHR8fDEpKnRoaXMuX3JlbmRlclNlcnZpY2UuZGltZW5zaW9ucy5jc3MuY2VsbC5oZWlnaHQrXCJweFwiLHMuc3R5bGUudG9wPShlLm1hcmtlci5saW5lLXRoaXMuX2J1ZmZlclNlcnZpY2UuYnVmZmVycy5hY3RpdmUueWRpc3ApKnRoaXMuX3JlbmRlclNlcnZpY2UuZGltZW5zaW9ucy5jc3MuY2VsbC5oZWlnaHQrXCJweFwiLHMuc3R5bGUubGluZUhlaWdodD1gJHt0aGlzLl9yZW5kZXJTZXJ2aWNlLmRpbWVuc2lvbnMuY3NzLmNlbGwuaGVpZ2h0fXB4YDtjb25zdCByPW51bGwhPT0oaT1lLm9wdGlvbnMueCkmJnZvaWQgMCE9PWk/aTowO3JldHVybiByJiZyPnRoaXMuX2J1ZmZlclNlcnZpY2UuY29scyYmKHMuc3R5bGUuZGlzcGxheT1cIm5vbmVcIiksdGhpcy5fcmVmcmVzaFhQb3NpdGlvbihlLHMpLHN9X3JlZnJlc2hTdHlsZShlKXtjb25zdCB0PWUubWFya2VyLmxpbmUtdGhpcy5fYnVmZmVyU2VydmljZS5idWZmZXJzLmFjdGl2ZS55ZGlzcDtpZih0PDB8fHQ+PXRoaXMuX2J1ZmZlclNlcnZpY2Uucm93cyllLmVsZW1lbnQmJihlLmVsZW1lbnQuc3R5bGUuZGlzcGxheT1cIm5vbmVcIixlLm9uUmVuZGVyRW1pdHRlci5maXJlKGUuZWxlbWVudCkpO2Vsc2V7bGV0IGk9dGhpcy5fZGVjb3JhdGlvbkVsZW1lbnRzLmdldChlKTtpfHwoaT10aGlzLl9jcmVhdGVFbGVtZW50KGUpLGUuZWxlbWVudD1pLHRoaXMuX2RlY29yYXRpb25FbGVtZW50cy5zZXQoZSxpKSx0aGlzLl9jb250YWluZXIuYXBwZW5kQ2hpbGQoaSkpLGkuc3R5bGUudG9wPXQqdGhpcy5fcmVuZGVyU2VydmljZS5kaW1lbnNpb25zLmNzcy5jZWxsLmhlaWdodCtcInB4XCIsaS5zdHlsZS5kaXNwbGF5PXRoaXMuX2FsdEJ1ZmZlcklzQWN0aXZlP1wibm9uZVwiOlwiYmxvY2tcIixlLm9uUmVuZGVyRW1pdHRlci5maXJlKGkpfX1fcmVmcmVzaFhQb3NpdGlvbihlLHQ9ZS5lbGVtZW50KXt2YXIgaTtpZighdClyZXR1cm47Y29uc3Qgcz1udWxsIT09KGk9ZS5vcHRpb25zLngpJiZ2b2lkIDAhPT1pP2k6MDtcInJpZ2h0XCI9PT0oZS5vcHRpb25zLmFuY2hvcnx8XCJsZWZ0XCIpP3Quc3R5bGUucmlnaHQ9cz9zKnRoaXMuX3JlbmRlclNlcnZpY2UuZGltZW5zaW9ucy5jc3MuY2VsbC53aWR0aCtcInB4XCI6XCJcIjp0LnN0eWxlLmxlZnQ9cz9zKnRoaXMuX3JlbmRlclNlcnZpY2UuZGltZW5zaW9ucy5jc3MuY2VsbC53aWR0aCtcInB4XCI6XCJcIn1fcmVtb3ZlRGVjb3JhdGlvbihlKXt2YXIgdDtudWxsPT09KHQ9dGhpcy5fZGVjb3JhdGlvbkVsZW1lbnRzLmdldChlKSl8fHZvaWQgMD09PXR8fHQucmVtb3ZlKCksdGhpcy5fZGVjb3JhdGlvbkVsZW1lbnRzLmRlbGV0ZShlKSxlLmRpc3Bvc2UoKX19O2M9cyhbcigxLGguSUJ1ZmZlclNlcnZpY2UpLHIoMixoLklEZWNvcmF0aW9uU2VydmljZSkscigzLG8uSVJlbmRlclNlcnZpY2UpXSxjKSx0LkJ1ZmZlckRlY29yYXRpb25SZW5kZXJlcj1jfSw1ODcxOihlLHQpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5Db2xvclpvbmVTdG9yZT12b2lkIDAsdC5Db2xvclpvbmVTdG9yZT1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMuX3pvbmVzPVtdLHRoaXMuX3pvbmVQb29sPVtdLHRoaXMuX3pvbmVQb29sSW5kZXg9MCx0aGlzLl9saW5lUGFkZGluZz17ZnVsbDowLGxlZnQ6MCxjZW50ZXI6MCxyaWdodDowfX1nZXQgem9uZXMoKXtyZXR1cm4gdGhpcy5fem9uZVBvb2wubGVuZ3RoPU1hdGgubWluKHRoaXMuX3pvbmVQb29sLmxlbmd0aCx0aGlzLl96b25lcy5sZW5ndGgpLHRoaXMuX3pvbmVzfWNsZWFyKCl7dGhpcy5fem9uZXMubGVuZ3RoPTAsdGhpcy5fem9uZVBvb2xJbmRleD0wfWFkZERlY29yYXRpb24oZSl7aWYoZS5vcHRpb25zLm92ZXJ2aWV3UnVsZXJPcHRpb25zKXtmb3IoY29uc3QgdCBvZiB0aGlzLl96b25lcylpZih0LmNvbG9yPT09ZS5vcHRpb25zLm92ZXJ2aWV3UnVsZXJPcHRpb25zLmNvbG9yJiZ0LnBvc2l0aW9uPT09ZS5vcHRpb25zLm92ZXJ2aWV3UnVsZXJPcHRpb25zLnBvc2l0aW9uKXtpZih0aGlzLl9saW5lSW50ZXJzZWN0c1pvbmUodCxlLm1hcmtlci5saW5lKSlyZXR1cm47aWYodGhpcy5fbGluZUFkamFjZW50VG9ab25lKHQsZS5tYXJrZXIubGluZSxlLm9wdGlvbnMub3ZlcnZpZXdSdWxlck9wdGlvbnMucG9zaXRpb24pKXJldHVybiB2b2lkIHRoaXMuX2FkZExpbmVUb1pvbmUodCxlLm1hcmtlci5saW5lKX1pZih0aGlzLl96b25lUG9vbEluZGV4PHRoaXMuX3pvbmVQb29sLmxlbmd0aClyZXR1cm4gdGhpcy5fem9uZVBvb2xbdGhpcy5fem9uZVBvb2xJbmRleF0uY29sb3I9ZS5vcHRpb25zLm92ZXJ2aWV3UnVsZXJPcHRpb25zLmNvbG9yLHRoaXMuX3pvbmVQb29sW3RoaXMuX3pvbmVQb29sSW5kZXhdLnBvc2l0aW9uPWUub3B0aW9ucy5vdmVydmlld1J1bGVyT3B0aW9ucy5wb3NpdGlvbix0aGlzLl96b25lUG9vbFt0aGlzLl96b25lUG9vbEluZGV4XS5zdGFydEJ1ZmZlckxpbmU9ZS5tYXJrZXIubGluZSx0aGlzLl96b25lUG9vbFt0aGlzLl96b25lUG9vbEluZGV4XS5lbmRCdWZmZXJMaW5lPWUubWFya2VyLmxpbmUsdm9pZCB0aGlzLl96b25lcy5wdXNoKHRoaXMuX3pvbmVQb29sW3RoaXMuX3pvbmVQb29sSW5kZXgrK10pO3RoaXMuX3pvbmVzLnB1c2goe2NvbG9yOmUub3B0aW9ucy5vdmVydmlld1J1bGVyT3B0aW9ucy5jb2xvcixwb3NpdGlvbjplLm9wdGlvbnMub3ZlcnZpZXdSdWxlck9wdGlvbnMucG9zaXRpb24sc3RhcnRCdWZmZXJMaW5lOmUubWFya2VyLmxpbmUsZW5kQnVmZmVyTGluZTplLm1hcmtlci5saW5lfSksdGhpcy5fem9uZVBvb2wucHVzaCh0aGlzLl96b25lc1t0aGlzLl96b25lcy5sZW5ndGgtMV0pLHRoaXMuX3pvbmVQb29sSW5kZXgrK319c2V0UGFkZGluZyhlKXt0aGlzLl9saW5lUGFkZGluZz1lfV9saW5lSW50ZXJzZWN0c1pvbmUoZSx0KXtyZXR1cm4gdD49ZS5zdGFydEJ1ZmZlckxpbmUmJnQ8PWUuZW5kQnVmZmVyTGluZX1fbGluZUFkamFjZW50VG9ab25lKGUsdCxpKXtyZXR1cm4gdD49ZS5zdGFydEJ1ZmZlckxpbmUtdGhpcy5fbGluZVBhZGRpbmdbaXx8XCJmdWxsXCJdJiZ0PD1lLmVuZEJ1ZmZlckxpbmUrdGhpcy5fbGluZVBhZGRpbmdbaXx8XCJmdWxsXCJdfV9hZGRMaW5lVG9ab25lKGUsdCl7ZS5zdGFydEJ1ZmZlckxpbmU9TWF0aC5taW4oZS5zdGFydEJ1ZmZlckxpbmUsdCksZS5lbmRCdWZmZXJMaW5lPU1hdGgubWF4KGUuZW5kQnVmZmVyTGluZSx0KX19fSw1NzQ0OmZ1bmN0aW9uKGUsdCxpKXt2YXIgcz10aGlzJiZ0aGlzLl9fZGVjb3JhdGV8fGZ1bmN0aW9uKGUsdCxpLHMpe3ZhciByLG49YXJndW1lbnRzLmxlbmd0aCxvPW48Mz90Om51bGw9PT1zP3M9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LGkpOnM7aWYoXCJvYmplY3RcIj09dHlwZW9mIFJlZmxlY3QmJlwiZnVuY3Rpb25cIj09dHlwZW9mIFJlZmxlY3QuZGVjb3JhdGUpbz1SZWZsZWN0LmRlY29yYXRlKGUsdCxpLHMpO2Vsc2UgZm9yKHZhciBhPWUubGVuZ3RoLTE7YT49MDthLS0pKHI9ZVthXSkmJihvPShuPDM/cihvKTpuPjM/cih0LGksbyk6cih0LGkpKXx8byk7cmV0dXJuIG4+MyYmbyYmT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsaSxvKSxvfSxyPXRoaXMmJnRoaXMuX19wYXJhbXx8ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZnVuY3Rpb24oaSxzKXt0KGkscyxlKX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuT3ZlcnZpZXdSdWxlclJlbmRlcmVyPXZvaWQgMDtjb25zdCBuPWkoNTg3MSksbz1pKDM2NTYpLGE9aSg0NzI1KSxoPWkoODQ0KSxjPWkoMjU4NSksbD17ZnVsbDowLGxlZnQ6MCxjZW50ZXI6MCxyaWdodDowfSxkPXtmdWxsOjAsbGVmdDowLGNlbnRlcjowLHJpZ2h0OjB9LF89e2Z1bGw6MCxsZWZ0OjAsY2VudGVyOjAscmlnaHQ6MH07bGV0IHU9Y2xhc3MgZXh0ZW5kcyBoLkRpc3Bvc2FibGV7Y29uc3RydWN0b3IoZSx0LGkscyxyLG8sYSl7dmFyIGM7c3VwZXIoKSx0aGlzLl92aWV3cG9ydEVsZW1lbnQ9ZSx0aGlzLl9zY3JlZW5FbGVtZW50PXQsdGhpcy5fYnVmZmVyU2VydmljZT1pLHRoaXMuX2RlY29yYXRpb25TZXJ2aWNlPXMsdGhpcy5fcmVuZGVyU2VydmljZT1yLHRoaXMuX29wdGlvbnNTZXJ2aWNlPW8sdGhpcy5fY29yZUJyb3dzZVNlcnZpY2U9YSx0aGlzLl9jb2xvclpvbmVTdG9yZT1uZXcgbi5Db2xvclpvbmVTdG9yZSx0aGlzLl9zaG91bGRVcGRhdGVEaW1lbnNpb25zPSEwLHRoaXMuX3Nob3VsZFVwZGF0ZUFuY2hvcj0hMCx0aGlzLl9sYXN0S25vd25CdWZmZXJMZW5ndGg9MCx0aGlzLl9jYW52YXM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImNhbnZhc1wiKSx0aGlzLl9jYW52YXMuY2xhc3NMaXN0LmFkZChcInh0ZXJtLWRlY29yYXRpb24tb3ZlcnZpZXctcnVsZXJcIiksdGhpcy5fcmVmcmVzaENhbnZhc0RpbWVuc2lvbnMoKSxudWxsPT09KGM9dGhpcy5fdmlld3BvcnRFbGVtZW50LnBhcmVudEVsZW1lbnQpfHx2b2lkIDA9PT1jfHxjLmluc2VydEJlZm9yZSh0aGlzLl9jYW52YXMsdGhpcy5fdmlld3BvcnRFbGVtZW50KTtjb25zdCBsPXRoaXMuX2NhbnZhcy5nZXRDb250ZXh0KFwiMmRcIik7aWYoIWwpdGhyb3cgbmV3IEVycm9yKFwiQ3R4IGNhbm5vdCBiZSBudWxsXCIpO3RoaXMuX2N0eD1sLHRoaXMuX3JlZ2lzdGVyRGVjb3JhdGlvbkxpc3RlbmVycygpLHRoaXMuX3JlZ2lzdGVyQnVmZmVyQ2hhbmdlTGlzdGVuZXJzKCksdGhpcy5fcmVnaXN0ZXJEaW1lbnNpb25DaGFuZ2VMaXN0ZW5lcnMoKSx0aGlzLnJlZ2lzdGVyKCgwLGgudG9EaXNwb3NhYmxlKSgoKCk9Pnt2YXIgZTtudWxsPT09KGU9dGhpcy5fY2FudmFzKXx8dm9pZCAwPT09ZXx8ZS5yZW1vdmUoKX0pKSl9Z2V0IF93aWR0aCgpe3JldHVybiB0aGlzLl9vcHRpb25zU2VydmljZS5vcHRpb25zLm92ZXJ2aWV3UnVsZXJXaWR0aHx8MH1fcmVnaXN0ZXJEZWNvcmF0aW9uTGlzdGVuZXJzKCl7dGhpcy5yZWdpc3Rlcih0aGlzLl9kZWNvcmF0aW9uU2VydmljZS5vbkRlY29yYXRpb25SZWdpc3RlcmVkKCgoKT0+dGhpcy5fcXVldWVSZWZyZXNoKHZvaWQgMCwhMCkpKSksdGhpcy5yZWdpc3Rlcih0aGlzLl9kZWNvcmF0aW9uU2VydmljZS5vbkRlY29yYXRpb25SZW1vdmVkKCgoKT0+dGhpcy5fcXVldWVSZWZyZXNoKHZvaWQgMCwhMCkpKSl9X3JlZ2lzdGVyQnVmZmVyQ2hhbmdlTGlzdGVuZXJzKCl7dGhpcy5yZWdpc3Rlcih0aGlzLl9yZW5kZXJTZXJ2aWNlLm9uUmVuZGVyZWRWaWV3cG9ydENoYW5nZSgoKCk9PnRoaXMuX3F1ZXVlUmVmcmVzaCgpKSkpLHRoaXMucmVnaXN0ZXIodGhpcy5fYnVmZmVyU2VydmljZS5idWZmZXJzLm9uQnVmZmVyQWN0aXZhdGUoKCgpPT57dGhpcy5fY2FudmFzLnN0eWxlLmRpc3BsYXk9dGhpcy5fYnVmZmVyU2VydmljZS5idWZmZXI9PT10aGlzLl9idWZmZXJTZXJ2aWNlLmJ1ZmZlcnMuYWx0P1wibm9uZVwiOlwiYmxvY2tcIn0pKSksdGhpcy5yZWdpc3Rlcih0aGlzLl9idWZmZXJTZXJ2aWNlLm9uU2Nyb2xsKCgoKT0+e3RoaXMuX2xhc3RLbm93bkJ1ZmZlckxlbmd0aCE9PXRoaXMuX2J1ZmZlclNlcnZpY2UuYnVmZmVycy5ub3JtYWwubGluZXMubGVuZ3RoJiYodGhpcy5fcmVmcmVzaERyYXdIZWlnaHRDb25zdGFudHMoKSx0aGlzLl9yZWZyZXNoQ29sb3Jab25lUGFkZGluZygpKX0pKSl9X3JlZ2lzdGVyRGltZW5zaW9uQ2hhbmdlTGlzdGVuZXJzKCl7dGhpcy5yZWdpc3Rlcih0aGlzLl9yZW5kZXJTZXJ2aWNlLm9uUmVuZGVyKCgoKT0+e3RoaXMuX2NvbnRhaW5lckhlaWdodCYmdGhpcy5fY29udGFpbmVySGVpZ2h0PT09dGhpcy5fc2NyZWVuRWxlbWVudC5jbGllbnRIZWlnaHR8fCh0aGlzLl9xdWV1ZVJlZnJlc2goITApLHRoaXMuX2NvbnRhaW5lckhlaWdodD10aGlzLl9zY3JlZW5FbGVtZW50LmNsaWVudEhlaWdodCl9KSkpLHRoaXMucmVnaXN0ZXIodGhpcy5fb3B0aW9uc1NlcnZpY2Uub25TcGVjaWZpY09wdGlvbkNoYW5nZShcIm92ZXJ2aWV3UnVsZXJXaWR0aFwiLCgoKT0+dGhpcy5fcXVldWVSZWZyZXNoKCEwKSkpKSx0aGlzLnJlZ2lzdGVyKCgwLG8uYWRkRGlzcG9zYWJsZURvbUxpc3RlbmVyKSh0aGlzLl9jb3JlQnJvd3NlU2VydmljZS53aW5kb3csXCJyZXNpemVcIiwoKCk9PnRoaXMuX3F1ZXVlUmVmcmVzaCghMCkpKSksdGhpcy5fcXVldWVSZWZyZXNoKCEwKX1fcmVmcmVzaERyYXdDb25zdGFudHMoKXtjb25zdCBlPU1hdGguZmxvb3IodGhpcy5fY2FudmFzLndpZHRoLzMpLHQ9TWF0aC5jZWlsKHRoaXMuX2NhbnZhcy53aWR0aC8zKTtkLmZ1bGw9dGhpcy5fY2FudmFzLndpZHRoLGQubGVmdD1lLGQuY2VudGVyPXQsZC5yaWdodD1lLHRoaXMuX3JlZnJlc2hEcmF3SGVpZ2h0Q29uc3RhbnRzKCksXy5mdWxsPTAsXy5sZWZ0PTAsXy5jZW50ZXI9ZC5sZWZ0LF8ucmlnaHQ9ZC5sZWZ0K2QuY2VudGVyfV9yZWZyZXNoRHJhd0hlaWdodENvbnN0YW50cygpe2wuZnVsbD1NYXRoLnJvdW5kKDIqdGhpcy5fY29yZUJyb3dzZVNlcnZpY2UuZHByKTtjb25zdCBlPXRoaXMuX2NhbnZhcy5oZWlnaHQvdGhpcy5fYnVmZmVyU2VydmljZS5idWZmZXIubGluZXMubGVuZ3RoLHQ9TWF0aC5yb3VuZChNYXRoLm1heChNYXRoLm1pbihlLDEyKSw2KSp0aGlzLl9jb3JlQnJvd3NlU2VydmljZS5kcHIpO2wubGVmdD10LGwuY2VudGVyPXQsbC5yaWdodD10fV9yZWZyZXNoQ29sb3Jab25lUGFkZGluZygpe3RoaXMuX2NvbG9yWm9uZVN0b3JlLnNldFBhZGRpbmcoe2Z1bGw6TWF0aC5mbG9vcih0aGlzLl9idWZmZXJTZXJ2aWNlLmJ1ZmZlcnMuYWN0aXZlLmxpbmVzLmxlbmd0aC8odGhpcy5fY2FudmFzLmhlaWdodC0xKSpsLmZ1bGwpLGxlZnQ6TWF0aC5mbG9vcih0aGlzLl9idWZmZXJTZXJ2aWNlLmJ1ZmZlcnMuYWN0aXZlLmxpbmVzLmxlbmd0aC8odGhpcy5fY2FudmFzLmhlaWdodC0xKSpsLmxlZnQpLGNlbnRlcjpNYXRoLmZsb29yKHRoaXMuX2J1ZmZlclNlcnZpY2UuYnVmZmVycy5hY3RpdmUubGluZXMubGVuZ3RoLyh0aGlzLl9jYW52YXMuaGVpZ2h0LTEpKmwuY2VudGVyKSxyaWdodDpNYXRoLmZsb29yKHRoaXMuX2J1ZmZlclNlcnZpY2UuYnVmZmVycy5hY3RpdmUubGluZXMubGVuZ3RoLyh0aGlzLl9jYW52YXMuaGVpZ2h0LTEpKmwucmlnaHQpfSksdGhpcy5fbGFzdEtub3duQnVmZmVyTGVuZ3RoPXRoaXMuX2J1ZmZlclNlcnZpY2UuYnVmZmVycy5ub3JtYWwubGluZXMubGVuZ3RofV9yZWZyZXNoQ2FudmFzRGltZW5zaW9ucygpe3RoaXMuX2NhbnZhcy5zdHlsZS53aWR0aD1gJHt0aGlzLl93aWR0aH1weGAsdGhpcy5fY2FudmFzLndpZHRoPU1hdGgucm91bmQodGhpcy5fd2lkdGgqdGhpcy5fY29yZUJyb3dzZVNlcnZpY2UuZHByKSx0aGlzLl9jYW52YXMuc3R5bGUuaGVpZ2h0PWAke3RoaXMuX3NjcmVlbkVsZW1lbnQuY2xpZW50SGVpZ2h0fXB4YCx0aGlzLl9jYW52YXMuaGVpZ2h0PU1hdGgucm91bmQodGhpcy5fc2NyZWVuRWxlbWVudC5jbGllbnRIZWlnaHQqdGhpcy5fY29yZUJyb3dzZVNlcnZpY2UuZHByKSx0aGlzLl9yZWZyZXNoRHJhd0NvbnN0YW50cygpLHRoaXMuX3JlZnJlc2hDb2xvclpvbmVQYWRkaW5nKCl9X3JlZnJlc2hEZWNvcmF0aW9ucygpe3RoaXMuX3Nob3VsZFVwZGF0ZURpbWVuc2lvbnMmJnRoaXMuX3JlZnJlc2hDYW52YXNEaW1lbnNpb25zKCksdGhpcy5fY3R4LmNsZWFyUmVjdCgwLDAsdGhpcy5fY2FudmFzLndpZHRoLHRoaXMuX2NhbnZhcy5oZWlnaHQpLHRoaXMuX2NvbG9yWm9uZVN0b3JlLmNsZWFyKCk7Zm9yKGNvbnN0IGUgb2YgdGhpcy5fZGVjb3JhdGlvblNlcnZpY2UuZGVjb3JhdGlvbnMpdGhpcy5fY29sb3Jab25lU3RvcmUuYWRkRGVjb3JhdGlvbihlKTt0aGlzLl9jdHgubGluZVdpZHRoPTE7Y29uc3QgZT10aGlzLl9jb2xvclpvbmVTdG9yZS56b25lcztmb3IoY29uc3QgdCBvZiBlKVwiZnVsbFwiIT09dC5wb3NpdGlvbiYmdGhpcy5fcmVuZGVyQ29sb3Jab25lKHQpO2Zvcihjb25zdCB0IG9mIGUpXCJmdWxsXCI9PT10LnBvc2l0aW9uJiZ0aGlzLl9yZW5kZXJDb2xvclpvbmUodCk7dGhpcy5fc2hvdWxkVXBkYXRlRGltZW5zaW9ucz0hMSx0aGlzLl9zaG91bGRVcGRhdGVBbmNob3I9ITF9X3JlbmRlckNvbG9yWm9uZShlKXt0aGlzLl9jdHguZmlsbFN0eWxlPWUuY29sb3IsdGhpcy5fY3R4LmZpbGxSZWN0KF9bZS5wb3NpdGlvbnx8XCJmdWxsXCJdLE1hdGgucm91bmQoKHRoaXMuX2NhbnZhcy5oZWlnaHQtMSkqKGUuc3RhcnRCdWZmZXJMaW5lL3RoaXMuX2J1ZmZlclNlcnZpY2UuYnVmZmVycy5hY3RpdmUubGluZXMubGVuZ3RoKS1sW2UucG9zaXRpb258fFwiZnVsbFwiXS8yKSxkW2UucG9zaXRpb258fFwiZnVsbFwiXSxNYXRoLnJvdW5kKCh0aGlzLl9jYW52YXMuaGVpZ2h0LTEpKigoZS5lbmRCdWZmZXJMaW5lLWUuc3RhcnRCdWZmZXJMaW5lKS90aGlzLl9idWZmZXJTZXJ2aWNlLmJ1ZmZlcnMuYWN0aXZlLmxpbmVzLmxlbmd0aCkrbFtlLnBvc2l0aW9ufHxcImZ1bGxcIl0pKX1fcXVldWVSZWZyZXNoKGUsdCl7dGhpcy5fc2hvdWxkVXBkYXRlRGltZW5zaW9ucz1lfHx0aGlzLl9zaG91bGRVcGRhdGVEaW1lbnNpb25zLHRoaXMuX3Nob3VsZFVwZGF0ZUFuY2hvcj10fHx0aGlzLl9zaG91bGRVcGRhdGVBbmNob3Isdm9pZCAwPT09dGhpcy5fYW5pbWF0aW9uRnJhbWUmJih0aGlzLl9hbmltYXRpb25GcmFtZT10aGlzLl9jb3JlQnJvd3NlU2VydmljZS53aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgoKT0+e3RoaXMuX3JlZnJlc2hEZWNvcmF0aW9ucygpLHRoaXMuX2FuaW1hdGlvbkZyYW1lPXZvaWQgMH0pKSl9fTt1PXMoW3IoMixjLklCdWZmZXJTZXJ2aWNlKSxyKDMsYy5JRGVjb3JhdGlvblNlcnZpY2UpLHIoNCxhLklSZW5kZXJTZXJ2aWNlKSxyKDUsYy5JT3B0aW9uc1NlcnZpY2UpLHIoNixhLklDb3JlQnJvd3NlclNlcnZpY2UpXSx1KSx0Lk92ZXJ2aWV3UnVsZXJSZW5kZXJlcj11fSwyOTUwOmZ1bmN0aW9uKGUsdCxpKXt2YXIgcz10aGlzJiZ0aGlzLl9fZGVjb3JhdGV8fGZ1bmN0aW9uKGUsdCxpLHMpe3ZhciByLG49YXJndW1lbnRzLmxlbmd0aCxvPW48Mz90Om51bGw9PT1zP3M9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LGkpOnM7aWYoXCJvYmplY3RcIj09dHlwZW9mIFJlZmxlY3QmJlwiZnVuY3Rpb25cIj09dHlwZW9mIFJlZmxlY3QuZGVjb3JhdGUpbz1SZWZsZWN0LmRlY29yYXRlKGUsdCxpLHMpO2Vsc2UgZm9yKHZhciBhPWUubGVuZ3RoLTE7YT49MDthLS0pKHI9ZVthXSkmJihvPShuPDM/cihvKTpuPjM/cih0LGksbyk6cih0LGkpKXx8byk7cmV0dXJuIG4+MyYmbyYmT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsaSxvKSxvfSxyPXRoaXMmJnRoaXMuX19wYXJhbXx8ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZnVuY3Rpb24oaSxzKXt0KGkscyxlKX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuQ29tcG9zaXRpb25IZWxwZXI9dm9pZCAwO2NvbnN0IG49aSg0NzI1KSxvPWkoMjU4NSksYT1pKDI1ODQpO2xldCBoPWNsYXNze2NvbnN0cnVjdG9yKGUsdCxpLHMscixuKXt0aGlzLl90ZXh0YXJlYT1lLHRoaXMuX2NvbXBvc2l0aW9uVmlldz10LHRoaXMuX2J1ZmZlclNlcnZpY2U9aSx0aGlzLl9vcHRpb25zU2VydmljZT1zLHRoaXMuX2NvcmVTZXJ2aWNlPXIsdGhpcy5fcmVuZGVyU2VydmljZT1uLHRoaXMuX2lzQ29tcG9zaW5nPSExLHRoaXMuX2lzU2VuZGluZ0NvbXBvc2l0aW9uPSExLHRoaXMuX2NvbXBvc2l0aW9uUG9zaXRpb249e3N0YXJ0OjAsZW5kOjB9LHRoaXMuX2RhdGFBbHJlYWR5U2VudD1cIlwifWdldCBpc0NvbXBvc2luZygpe3JldHVybiB0aGlzLl9pc0NvbXBvc2luZ31jb21wb3NpdGlvbnN0YXJ0KCl7dGhpcy5faXNDb21wb3Npbmc9ITAsdGhpcy5fY29tcG9zaXRpb25Qb3NpdGlvbi5zdGFydD10aGlzLl90ZXh0YXJlYS52YWx1ZS5sZW5ndGgsdGhpcy5fY29tcG9zaXRpb25WaWV3LnRleHRDb250ZW50PVwiXCIsdGhpcy5fZGF0YUFscmVhZHlTZW50PVwiXCIsdGhpcy5fY29tcG9zaXRpb25WaWV3LmNsYXNzTGlzdC5hZGQoXCJhY3RpdmVcIil9Y29tcG9zaXRpb251cGRhdGUoZSl7dGhpcy5fY29tcG9zaXRpb25WaWV3LnRleHRDb250ZW50PWUuZGF0YSx0aGlzLnVwZGF0ZUNvbXBvc2l0aW9uRWxlbWVudHMoKSxzZXRUaW1lb3V0KCgoKT0+e3RoaXMuX2NvbXBvc2l0aW9uUG9zaXRpb24uZW5kPXRoaXMuX3RleHRhcmVhLnZhbHVlLmxlbmd0aH0pLDApfWNvbXBvc2l0aW9uZW5kKCl7dGhpcy5fZmluYWxpemVDb21wb3NpdGlvbighMCl9a2V5ZG93bihlKXtpZih0aGlzLl9pc0NvbXBvc2luZ3x8dGhpcy5faXNTZW5kaW5nQ29tcG9zaXRpb24pe2lmKDIyOT09PWUua2V5Q29kZSlyZXR1cm4hMTtpZigxNj09PWUua2V5Q29kZXx8MTc9PT1lLmtleUNvZGV8fDE4PT09ZS5rZXlDb2RlKXJldHVybiExO3RoaXMuX2ZpbmFsaXplQ29tcG9zaXRpb24oITEpfXJldHVybiAyMjkhPT1lLmtleUNvZGV8fCh0aGlzLl9oYW5kbGVBbnlUZXh0YXJlYUNoYW5nZXMoKSwhMSl9X2ZpbmFsaXplQ29tcG9zaXRpb24oZSl7aWYodGhpcy5fY29tcG9zaXRpb25WaWV3LmNsYXNzTGlzdC5yZW1vdmUoXCJhY3RpdmVcIiksdGhpcy5faXNDb21wb3Npbmc9ITEsZSl7Y29uc3QgZT17c3RhcnQ6dGhpcy5fY29tcG9zaXRpb25Qb3NpdGlvbi5zdGFydCxlbmQ6dGhpcy5fY29tcG9zaXRpb25Qb3NpdGlvbi5lbmR9O3RoaXMuX2lzU2VuZGluZ0NvbXBvc2l0aW9uPSEwLHNldFRpbWVvdXQoKCgpPT57aWYodGhpcy5faXNTZW5kaW5nQ29tcG9zaXRpb24pe2xldCB0O3RoaXMuX2lzU2VuZGluZ0NvbXBvc2l0aW9uPSExLGUuc3RhcnQrPXRoaXMuX2RhdGFBbHJlYWR5U2VudC5sZW5ndGgsdD10aGlzLl9pc0NvbXBvc2luZz90aGlzLl90ZXh0YXJlYS52YWx1ZS5zdWJzdHJpbmcoZS5zdGFydCxlLmVuZCk6dGhpcy5fdGV4dGFyZWEudmFsdWUuc3Vic3RyaW5nKGUuc3RhcnQpLHQubGVuZ3RoPjAmJnRoaXMuX2NvcmVTZXJ2aWNlLnRyaWdnZXJEYXRhRXZlbnQodCwhMCl9fSksMCl9ZWxzZXt0aGlzLl9pc1NlbmRpbmdDb21wb3NpdGlvbj0hMTtjb25zdCBlPXRoaXMuX3RleHRhcmVhLnZhbHVlLnN1YnN0cmluZyh0aGlzLl9jb21wb3NpdGlvblBvc2l0aW9uLnN0YXJ0LHRoaXMuX2NvbXBvc2l0aW9uUG9zaXRpb24uZW5kKTt0aGlzLl9jb3JlU2VydmljZS50cmlnZ2VyRGF0YUV2ZW50KGUsITApfX1faGFuZGxlQW55VGV4dGFyZWFDaGFuZ2VzKCl7Y29uc3QgZT10aGlzLl90ZXh0YXJlYS52YWx1ZTtzZXRUaW1lb3V0KCgoKT0+e2lmKCF0aGlzLl9pc0NvbXBvc2luZyl7Y29uc3QgdD10aGlzLl90ZXh0YXJlYS52YWx1ZSxpPXQucmVwbGFjZShlLFwiXCIpO3RoaXMuX2RhdGFBbHJlYWR5U2VudD1pLHQubGVuZ3RoPmUubGVuZ3RoP3RoaXMuX2NvcmVTZXJ2aWNlLnRyaWdnZXJEYXRhRXZlbnQoaSwhMCk6dC5sZW5ndGg8ZS5sZW5ndGg/dGhpcy5fY29yZVNlcnZpY2UudHJpZ2dlckRhdGFFdmVudChgJHthLkMwLkRFTH1gLCEwKTp0Lmxlbmd0aD09PWUubGVuZ3RoJiZ0IT09ZSYmdGhpcy5fY29yZVNlcnZpY2UudHJpZ2dlckRhdGFFdmVudCh0LCEwKX19KSwwKX11cGRhdGVDb21wb3NpdGlvbkVsZW1lbnRzKGUpe2lmKHRoaXMuX2lzQ29tcG9zaW5nKXtpZih0aGlzLl9idWZmZXJTZXJ2aWNlLmJ1ZmZlci5pc0N1cnNvckluVmlld3BvcnQpe2NvbnN0IGU9TWF0aC5taW4odGhpcy5fYnVmZmVyU2VydmljZS5idWZmZXIueCx0aGlzLl9idWZmZXJTZXJ2aWNlLmNvbHMtMSksdD10aGlzLl9yZW5kZXJTZXJ2aWNlLmRpbWVuc2lvbnMuY3NzLmNlbGwuaGVpZ2h0LGk9dGhpcy5fYnVmZmVyU2VydmljZS5idWZmZXIueSp0aGlzLl9yZW5kZXJTZXJ2aWNlLmRpbWVuc2lvbnMuY3NzLmNlbGwuaGVpZ2h0LHM9ZSp0aGlzLl9yZW5kZXJTZXJ2aWNlLmRpbWVuc2lvbnMuY3NzLmNlbGwud2lkdGg7dGhpcy5fY29tcG9zaXRpb25WaWV3LnN0eWxlLmxlZnQ9cytcInB4XCIsdGhpcy5fY29tcG9zaXRpb25WaWV3LnN0eWxlLnRvcD1pK1wicHhcIix0aGlzLl9jb21wb3NpdGlvblZpZXcuc3R5bGUuaGVpZ2h0PXQrXCJweFwiLHRoaXMuX2NvbXBvc2l0aW9uVmlldy5zdHlsZS5saW5lSGVpZ2h0PXQrXCJweFwiLHRoaXMuX2NvbXBvc2l0aW9uVmlldy5zdHlsZS5mb250RmFtaWx5PXRoaXMuX29wdGlvbnNTZXJ2aWNlLnJhd09wdGlvbnMuZm9udEZhbWlseSx0aGlzLl9jb21wb3NpdGlvblZpZXcuc3R5bGUuZm9udFNpemU9dGhpcy5fb3B0aW9uc1NlcnZpY2UucmF3T3B0aW9ucy5mb250U2l6ZStcInB4XCI7Y29uc3Qgcj10aGlzLl9jb21wb3NpdGlvblZpZXcuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7dGhpcy5fdGV4dGFyZWEuc3R5bGUubGVmdD1zK1wicHhcIix0aGlzLl90ZXh0YXJlYS5zdHlsZS50b3A9aStcInB4XCIsdGhpcy5fdGV4dGFyZWEuc3R5bGUud2lkdGg9TWF0aC5tYXgoci53aWR0aCwxKStcInB4XCIsdGhpcy5fdGV4dGFyZWEuc3R5bGUuaGVpZ2h0PU1hdGgubWF4KHIuaGVpZ2h0LDEpK1wicHhcIix0aGlzLl90ZXh0YXJlYS5zdHlsZS5saW5lSGVpZ2h0PXIuaGVpZ2h0K1wicHhcIn1lfHxzZXRUaW1lb3V0KCgoKT0+dGhpcy51cGRhdGVDb21wb3NpdGlvbkVsZW1lbnRzKCEwKSksMCl9fX07aD1zKFtyKDIsby5JQnVmZmVyU2VydmljZSkscigzLG8uSU9wdGlvbnNTZXJ2aWNlKSxyKDQsby5JQ29yZVNlcnZpY2UpLHIoNSxuLklSZW5kZXJTZXJ2aWNlKV0saCksdC5Db21wb3NpdGlvbkhlbHBlcj1ofSw5ODA2OihlLHQpPT57ZnVuY3Rpb24gaShlLHQsaSl7Y29uc3Qgcz1pLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHI9ZS5nZXRDb21wdXRlZFN0eWxlKGkpLG49cGFyc2VJbnQoci5nZXRQcm9wZXJ0eVZhbHVlKFwicGFkZGluZy1sZWZ0XCIpKSxvPXBhcnNlSW50KHIuZ2V0UHJvcGVydHlWYWx1ZShcInBhZGRpbmctdG9wXCIpKTtyZXR1cm5bdC5jbGllbnRYLXMubGVmdC1uLHQuY2xpZW50WS1zLnRvcC1vXX1PYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmdldENvb3Jkcz10LmdldENvb3Jkc1JlbGF0aXZlVG9FbGVtZW50PXZvaWQgMCx0LmdldENvb3Jkc1JlbGF0aXZlVG9FbGVtZW50PWksdC5nZXRDb29yZHM9ZnVuY3Rpb24oZSx0LHMscixuLG8sYSxoLGMpe2lmKCFvKXJldHVybjtjb25zdCBsPWkoZSx0LHMpO3JldHVybiBsPyhsWzBdPU1hdGguY2VpbCgobFswXSsoYz9hLzI6MCkpL2EpLGxbMV09TWF0aC5jZWlsKGxbMV0vaCksbFswXT1NYXRoLm1pbihNYXRoLm1heChsWzBdLDEpLHIrKGM/MTowKSksbFsxXT1NYXRoLm1pbihNYXRoLm1heChsWzFdLDEpLG4pLGwpOnZvaWQgMH19LDk1MDQ6KGUsdCxpKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQubW92ZVRvQ2VsbFNlcXVlbmNlPXZvaWQgMDtjb25zdCBzPWkoMjU4NCk7ZnVuY3Rpb24gcihlLHQsaSxzKXtjb25zdCByPWUtbihlLGkpLGE9dC1uKHQsaSksbD1NYXRoLmFicyhyLWEpLWZ1bmN0aW9uKGUsdCxpKXtsZXQgcz0wO2NvbnN0IHI9ZS1uKGUsaSksYT10LW4odCxpKTtmb3IobGV0IG49MDtuPE1hdGguYWJzKHItYSk7bisrKXtjb25zdCBhPVwiQVwiPT09byhlLHQpPy0xOjEsaD1pLmJ1ZmZlci5saW5lcy5nZXQocithKm4pOyhudWxsPT1oP3ZvaWQgMDpoLmlzV3JhcHBlZCkmJnMrK31yZXR1cm4gc30oZSx0LGkpO3JldHVybiBjKGwsaChvKGUsdCkscykpfWZ1bmN0aW9uIG4oZSx0KXtsZXQgaT0wLHM9dC5idWZmZXIubGluZXMuZ2V0KGUpLHI9bnVsbD09cz92b2lkIDA6cy5pc1dyYXBwZWQ7Zm9yKDtyJiZlPj0wJiZlPHQucm93czspaSsrLHM9dC5idWZmZXIubGluZXMuZ2V0KC0tZSkscj1udWxsPT1zP3ZvaWQgMDpzLmlzV3JhcHBlZDtyZXR1cm4gaX1mdW5jdGlvbiBvKGUsdCl7cmV0dXJuIGU+dD9cIkFcIjpcIkJcIn1mdW5jdGlvbiBhKGUsdCxpLHMscixuKXtsZXQgbz1lLGE9dCxoPVwiXCI7Zm9yKDtvIT09aXx8YSE9PXM7KW8rPXI/MTotMSxyJiZvPm4uY29scy0xPyhoKz1uLmJ1ZmZlci50cmFuc2xhdGVCdWZmZXJMaW5lVG9TdHJpbmcoYSwhMSxlLG8pLG89MCxlPTAsYSsrKTohciYmbzwwJiYoaCs9bi5idWZmZXIudHJhbnNsYXRlQnVmZmVyTGluZVRvU3RyaW5nKGEsITEsMCxlKzEpLG89bi5jb2xzLTEsZT1vLGEtLSk7cmV0dXJuIGgrbi5idWZmZXIudHJhbnNsYXRlQnVmZmVyTGluZVRvU3RyaW5nKGEsITEsZSxvKX1mdW5jdGlvbiBoKGUsdCl7Y29uc3QgaT10P1wiT1wiOlwiW1wiO3JldHVybiBzLkMwLkVTQytpK2V9ZnVuY3Rpb24gYyhlLHQpe2U9TWF0aC5mbG9vcihlKTtsZXQgaT1cIlwiO2ZvcihsZXQgcz0wO3M8ZTtzKyspaSs9dDtyZXR1cm4gaX10Lm1vdmVUb0NlbGxTZXF1ZW5jZT1mdW5jdGlvbihlLHQsaSxzKXtjb25zdCBvPWkuYnVmZmVyLngsbD1pLmJ1ZmZlci55O2lmKCFpLmJ1ZmZlci5oYXNTY3JvbGxiYWNrKXJldHVybiBmdW5jdGlvbihlLHQsaSxzLG8sbCl7cmV0dXJuIDA9PT1yKHQscyxvLGwpLmxlbmd0aD9cIlwiOmMoYShlLHQsZSx0LW4odCxvKSwhMSxvKS5sZW5ndGgsaChcIkRcIixsKSl9KG8sbCwwLHQsaSxzKStyKGwsdCxpLHMpK2Z1bmN0aW9uKGUsdCxpLHMsbyxsKXtsZXQgZDtkPXIodCxzLG8sbCkubGVuZ3RoPjA/cy1uKHMsbyk6dDtjb25zdCBfPXMsdT1mdW5jdGlvbihlLHQsaSxzLG8sYSl7bGV0IGg7cmV0dXJuIGg9cihpLHMsbyxhKS5sZW5ndGg+MD9zLW4ocyxvKTp0LGU8aSYmaDw9c3x8ZT49aSYmaDxzP1wiQ1wiOlwiRFwifShlLHQsaSxzLG8sbCk7cmV0dXJuIGMoYShlLGQsaSxfLFwiQ1wiPT09dSxvKS5sZW5ndGgsaCh1LGwpKX0obyxsLGUsdCxpLHMpO2xldCBkO2lmKGw9PT10KXJldHVybiBkPW8+ZT9cIkRcIjpcIkNcIixjKE1hdGguYWJzKG8tZSksaChkLHMpKTtkPWw+dD9cIkRcIjpcIkNcIjtjb25zdCBfPU1hdGguYWJzKGwtdCk7cmV0dXJuIGMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gdC5jb2xzLWV9KGw+dD9lOm8saSkrKF8tMSkqaS5jb2xzKzErKChsPnQ/bzplKS0xKSxoKGQscykpfX0sMTI5NjpmdW5jdGlvbihlLHQsaSl7dmFyIHM9dGhpcyYmdGhpcy5fX2RlY29yYXRlfHxmdW5jdGlvbihlLHQsaSxzKXt2YXIgcixuPWFyZ3VtZW50cy5sZW5ndGgsbz1uPDM/dDpudWxsPT09cz9zPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxpKTpzO2lmKFwib2JqZWN0XCI9PXR5cGVvZiBSZWZsZWN0JiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBSZWZsZWN0LmRlY29yYXRlKW89UmVmbGVjdC5kZWNvcmF0ZShlLHQsaSxzKTtlbHNlIGZvcih2YXIgYT1lLmxlbmd0aC0xO2E+PTA7YS0tKShyPWVbYV0pJiYobz0objwzP3Iobyk6bj4zP3IodCxpLG8pOnIodCxpKSl8fG8pO3JldHVybiBuPjMmJm8mJk9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGksbyksb30scj10aGlzJiZ0aGlzLl9fcGFyYW18fGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGkscyl7dChpLHMsZSl9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkRvbVJlbmRlcmVyPXZvaWQgMDtjb25zdCBuPWkoMzc4Nyksbz1pKDIyMjMpLGE9aSg2MTcxKSxoPWkoNDcyNSksYz1pKDgwNTUpLGw9aSg4NDYwKSxkPWkoODQ0KSxfPWkoMjU4NSksdT1cInh0ZXJtLWRvbS1yZW5kZXJlci1vd25lci1cIixmPVwieHRlcm0tZm9jdXNcIjtsZXQgdj0xLGc9Y2xhc3MgZXh0ZW5kcyBkLkRpc3Bvc2FibGV7Y29uc3RydWN0b3IoZSx0LGkscyxyLG8saCxjLF8sZil7c3VwZXIoKSx0aGlzLl9lbGVtZW50PWUsdGhpcy5fc2NyZWVuRWxlbWVudD10LHRoaXMuX3ZpZXdwb3J0RWxlbWVudD1pLHRoaXMuX2xpbmtpZmllcjI9cyx0aGlzLl9jaGFyU2l6ZVNlcnZpY2U9byx0aGlzLl9vcHRpb25zU2VydmljZT1oLHRoaXMuX2J1ZmZlclNlcnZpY2U9Yyx0aGlzLl9jb3JlQnJvd3NlclNlcnZpY2U9Xyx0aGlzLl90aGVtZVNlcnZpY2U9Zix0aGlzLl90ZXJtaW5hbENsYXNzPXYrKyx0aGlzLl9yb3dFbGVtZW50cz1bXSx0aGlzLl9jZWxsVG9Sb3dFbGVtZW50cz1bXSx0aGlzLm9uUmVxdWVzdFJlZHJhdz10aGlzLnJlZ2lzdGVyKG5ldyBsLkV2ZW50RW1pdHRlcikuZXZlbnQsdGhpcy5fcm93Q29udGFpbmVyPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiksdGhpcy5fcm93Q29udGFpbmVyLmNsYXNzTGlzdC5hZGQoXCJ4dGVybS1yb3dzXCIpLHRoaXMuX3Jvd0NvbnRhaW5lci5zdHlsZS5saW5lSGVpZ2h0PVwibm9ybWFsXCIsdGhpcy5fcm93Q29udGFpbmVyLnNldEF0dHJpYnV0ZShcImFyaWEtaGlkZGVuXCIsXCJ0cnVlXCIpLHRoaXMuX3JlZnJlc2hSb3dFbGVtZW50cyh0aGlzLl9idWZmZXJTZXJ2aWNlLmNvbHMsdGhpcy5fYnVmZmVyU2VydmljZS5yb3dzKSx0aGlzLl9zZWxlY3Rpb25Db250YWluZXI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSx0aGlzLl9zZWxlY3Rpb25Db250YWluZXIuY2xhc3NMaXN0LmFkZChcInh0ZXJtLXNlbGVjdGlvblwiKSx0aGlzLl9zZWxlY3Rpb25Db250YWluZXIuc2V0QXR0cmlidXRlKFwiYXJpYS1oaWRkZW5cIixcInRydWVcIiksdGhpcy5kaW1lbnNpb25zPSgwLGEuY3JlYXRlUmVuZGVyRGltZW5zaW9ucykoKSx0aGlzLl91cGRhdGVEaW1lbnNpb25zKCksdGhpcy5yZWdpc3Rlcih0aGlzLl9vcHRpb25zU2VydmljZS5vbk9wdGlvbkNoYW5nZSgoKCk9PnRoaXMuX2hhbmRsZU9wdGlvbnNDaGFuZ2VkKCkpKSksdGhpcy5yZWdpc3Rlcih0aGlzLl90aGVtZVNlcnZpY2Uub25DaGFuZ2VDb2xvcnMoKGU9PnRoaXMuX2luamVjdENzcyhlKSkpKSx0aGlzLl9pbmplY3RDc3ModGhpcy5fdGhlbWVTZXJ2aWNlLmNvbG9ycyksdGhpcy5fcm93RmFjdG9yeT1yLmNyZWF0ZUluc3RhbmNlKG4uRG9tUmVuZGVyZXJSb3dGYWN0b3J5LGRvY3VtZW50KSx0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQodSt0aGlzLl90ZXJtaW5hbENsYXNzKSx0aGlzLl9zY3JlZW5FbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX3Jvd0NvbnRhaW5lciksdGhpcy5fc2NyZWVuRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9zZWxlY3Rpb25Db250YWluZXIpLHRoaXMucmVnaXN0ZXIodGhpcy5fbGlua2lmaWVyMi5vblNob3dMaW5rVW5kZXJsaW5lKChlPT50aGlzLl9oYW5kbGVMaW5rSG92ZXIoZSkpKSksdGhpcy5yZWdpc3Rlcih0aGlzLl9saW5raWZpZXIyLm9uSGlkZUxpbmtVbmRlcmxpbmUoKGU9PnRoaXMuX2hhbmRsZUxpbmtMZWF2ZShlKSkpKSx0aGlzLnJlZ2lzdGVyKCgwLGQudG9EaXNwb3NhYmxlKSgoKCk9Pnt0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUodSt0aGlzLl90ZXJtaW5hbENsYXNzKSx0aGlzLl9yb3dDb250YWluZXIucmVtb3ZlKCksdGhpcy5fc2VsZWN0aW9uQ29udGFpbmVyLnJlbW92ZSgpLHRoaXMuX3RoZW1lU3R5bGVFbGVtZW50LnJlbW92ZSgpLHRoaXMuX2RpbWVuc2lvbnNTdHlsZUVsZW1lbnQucmVtb3ZlKCl9KSkpfV91cGRhdGVEaW1lbnNpb25zKCl7Y29uc3QgZT10aGlzLl9jb3JlQnJvd3NlclNlcnZpY2UuZHByO3RoaXMuZGltZW5zaW9ucy5kZXZpY2UuY2hhci53aWR0aD10aGlzLl9jaGFyU2l6ZVNlcnZpY2Uud2lkdGgqZSx0aGlzLmRpbWVuc2lvbnMuZGV2aWNlLmNoYXIuaGVpZ2h0PU1hdGguY2VpbCh0aGlzLl9jaGFyU2l6ZVNlcnZpY2UuaGVpZ2h0KmUpLHRoaXMuZGltZW5zaW9ucy5kZXZpY2UuY2VsbC53aWR0aD10aGlzLmRpbWVuc2lvbnMuZGV2aWNlLmNoYXIud2lkdGgrTWF0aC5yb3VuZCh0aGlzLl9vcHRpb25zU2VydmljZS5yYXdPcHRpb25zLmxldHRlclNwYWNpbmcpLHRoaXMuZGltZW5zaW9ucy5kZXZpY2UuY2VsbC5oZWlnaHQ9TWF0aC5mbG9vcih0aGlzLmRpbWVuc2lvbnMuZGV2aWNlLmNoYXIuaGVpZ2h0KnRoaXMuX29wdGlvbnNTZXJ2aWNlLnJhd09wdGlvbnMubGluZUhlaWdodCksdGhpcy5kaW1lbnNpb25zLmRldmljZS5jaGFyLmxlZnQ9MCx0aGlzLmRpbWVuc2lvbnMuZGV2aWNlLmNoYXIudG9wPTAsdGhpcy5kaW1lbnNpb25zLmRldmljZS5jYW52YXMud2lkdGg9dGhpcy5kaW1lbnNpb25zLmRldmljZS5jZWxsLndpZHRoKnRoaXMuX2J1ZmZlclNlcnZpY2UuY29scyx0aGlzLmRpbWVuc2lvbnMuZGV2aWNlLmNhbnZhcy5oZWlnaHQ9dGhpcy5kaW1lbnNpb25zLmRldmljZS5jZWxsLmhlaWdodCp0aGlzLl9idWZmZXJTZXJ2aWNlLnJvd3MsdGhpcy5kaW1lbnNpb25zLmNzcy5jYW52YXMud2lkdGg9TWF0aC5yb3VuZCh0aGlzLmRpbWVuc2lvbnMuZGV2aWNlLmNhbnZhcy53aWR0aC9lKSx0aGlzLmRpbWVuc2lvbnMuY3NzLmNhbnZhcy5oZWlnaHQ9TWF0aC5yb3VuZCh0aGlzLmRpbWVuc2lvbnMuZGV2aWNlLmNhbnZhcy5oZWlnaHQvZSksdGhpcy5kaW1lbnNpb25zLmNzcy5jZWxsLndpZHRoPXRoaXMuZGltZW5zaW9ucy5jc3MuY2FudmFzLndpZHRoL3RoaXMuX2J1ZmZlclNlcnZpY2UuY29scyx0aGlzLmRpbWVuc2lvbnMuY3NzLmNlbGwuaGVpZ2h0PXRoaXMuZGltZW5zaW9ucy5jc3MuY2FudmFzLmhlaWdodC90aGlzLl9idWZmZXJTZXJ2aWNlLnJvd3M7Zm9yKGNvbnN0IGUgb2YgdGhpcy5fcm93RWxlbWVudHMpZS5zdHlsZS53aWR0aD1gJHt0aGlzLmRpbWVuc2lvbnMuY3NzLmNhbnZhcy53aWR0aH1weGAsZS5zdHlsZS5oZWlnaHQ9YCR7dGhpcy5kaW1lbnNpb25zLmNzcy5jZWxsLmhlaWdodH1weGAsZS5zdHlsZS5saW5lSGVpZ2h0PWAke3RoaXMuZGltZW5zaW9ucy5jc3MuY2VsbC5oZWlnaHR9cHhgLGUuc3R5bGUub3ZlcmZsb3c9XCJoaWRkZW5cIjt0aGlzLl9kaW1lbnNpb25zU3R5bGVFbGVtZW50fHwodGhpcy5fZGltZW5zaW9uc1N0eWxlRWxlbWVudD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3R5bGVcIiksdGhpcy5fc2NyZWVuRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9kaW1lbnNpb25zU3R5bGVFbGVtZW50KSk7Y29uc3QgdD1gJHt0aGlzLl90ZXJtaW5hbFNlbGVjdG9yfSAueHRlcm0tcm93cyBzcGFuIHsgZGlzcGxheTogaW5saW5lLWJsb2NrOyBoZWlnaHQ6IDEwMCU7IHZlcnRpY2FsLWFsaWduOiB0b3A7IHdpZHRoOiAke3RoaXMuZGltZW5zaW9ucy5jc3MuY2VsbC53aWR0aH1weH1gO3RoaXMuX2RpbWVuc2lvbnNTdHlsZUVsZW1lbnQudGV4dENvbnRlbnQ9dCx0aGlzLl9zZWxlY3Rpb25Db250YWluZXIuc3R5bGUuaGVpZ2h0PXRoaXMuX3ZpZXdwb3J0RWxlbWVudC5zdHlsZS5oZWlnaHQsdGhpcy5fc2NyZWVuRWxlbWVudC5zdHlsZS53aWR0aD1gJHt0aGlzLmRpbWVuc2lvbnMuY3NzLmNhbnZhcy53aWR0aH1weGAsdGhpcy5fc2NyZWVuRWxlbWVudC5zdHlsZS5oZWlnaHQ9YCR7dGhpcy5kaW1lbnNpb25zLmNzcy5jYW52YXMuaGVpZ2h0fXB4YH1faW5qZWN0Q3NzKGUpe3RoaXMuX3RoZW1lU3R5bGVFbGVtZW50fHwodGhpcy5fdGhlbWVTdHlsZUVsZW1lbnQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInN0eWxlXCIpLHRoaXMuX3NjcmVlbkVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fdGhlbWVTdHlsZUVsZW1lbnQpKTtsZXQgdD1gJHt0aGlzLl90ZXJtaW5hbFNlbGVjdG9yfSAueHRlcm0tcm93cyB7IGNvbG9yOiAke2UuZm9yZWdyb3VuZC5jc3N9OyBmb250LWZhbWlseTogJHt0aGlzLl9vcHRpb25zU2VydmljZS5yYXdPcHRpb25zLmZvbnRGYW1pbHl9OyBmb250LXNpemU6ICR7dGhpcy5fb3B0aW9uc1NlcnZpY2UucmF3T3B0aW9ucy5mb250U2l6ZX1weDt9YDt0Kz1gJHt0aGlzLl90ZXJtaW5hbFNlbGVjdG9yfSAueHRlcm0tcm93cyAueHRlcm0tZGltIHsgY29sb3I6ICR7Yy5jb2xvci5tdWx0aXBseU9wYWNpdHkoZS5mb3JlZ3JvdW5kLC41KS5jc3N9O31gLHQrPWAke3RoaXMuX3Rlcm1pbmFsU2VsZWN0b3J9IHNwYW46bm90KC4ke24uQk9MRF9DTEFTU30pIHsgZm9udC13ZWlnaHQ6ICR7dGhpcy5fb3B0aW9uc1NlcnZpY2UucmF3T3B0aW9ucy5mb250V2VpZ2h0fTt9JHt0aGlzLl90ZXJtaW5hbFNlbGVjdG9yfSBzcGFuLiR7bi5CT0xEX0NMQVNTfSB7IGZvbnQtd2VpZ2h0OiAke3RoaXMuX29wdGlvbnNTZXJ2aWNlLnJhd09wdGlvbnMuZm9udFdlaWdodEJvbGR9O30ke3RoaXMuX3Rlcm1pbmFsU2VsZWN0b3J9IHNwYW4uJHtuLklUQUxJQ19DTEFTU30geyBmb250LXN0eWxlOiBpdGFsaWM7fWAsdCs9XCJAa2V5ZnJhbWVzIGJsaW5rX2JveF9zaGFkb3dfXCIrdGhpcy5fdGVybWluYWxDbGFzcytcIiB7IDUwJSB7ICBib3gtc2hhZG93OiBub25lOyB9fVwiLHQrPVwiQGtleWZyYW1lcyBibGlua19ibG9ja19cIit0aGlzLl90ZXJtaW5hbENsYXNzK1wiIHsgMCUge1wiK2AgIGJhY2tncm91bmQtY29sb3I6ICR7ZS5jdXJzb3IuY3NzfTtgK2AgIGNvbG9yOiAke2UuY3Vyc29yQWNjZW50LmNzc307IH0gNTAlIHtgK2AgIGJhY2tncm91bmQtY29sb3I6ICR7ZS5jdXJzb3JBY2NlbnQuY3NzfTtgK2AgIGNvbG9yOiAke2UuY3Vyc29yLmNzc307IH19YCx0Kz1gJHt0aGlzLl90ZXJtaW5hbFNlbGVjdG9yfSAueHRlcm0tcm93czpub3QoLnh0ZXJtLWZvY3VzKSAuJHtuLkNVUlNPUl9DTEFTU30uJHtuLkNVUlNPUl9TVFlMRV9CTE9DS19DTEFTU30gLCR7dGhpcy5fdGVybWluYWxTZWxlY3Rvcn0gLnh0ZXJtLXJvd3M6bm90KC54dGVybS1mb2N1cykgLiR7bi5DVVJTT1JfQ0xBU1N9LiR7bi5DVVJTT1JfU1RZTEVfQkFSX0NMQVNTfSAsJHt0aGlzLl90ZXJtaW5hbFNlbGVjdG9yfSAueHRlcm0tcm93czpub3QoLnh0ZXJtLWZvY3VzKSAuJHtuLkNVUlNPUl9DTEFTU30uJHtuLkNVUlNPUl9TVFlMRV9VTkRFUkxJTkVfQ0xBU1N9IHsgb3V0bGluZTogMXB4IHNvbGlkICR7ZS5jdXJzb3IuY3NzfTsgb3V0bGluZS1vZmZzZXQ6IC0xcHg7fSR7dGhpcy5fdGVybWluYWxTZWxlY3Rvcn0gLnh0ZXJtLXJvd3MueHRlcm0tZm9jdXMgLiR7bi5DVVJTT1JfQ0xBU1N9LiR7bi5DVVJTT1JfQkxJTktfQ0xBU1N9Om5vdCguJHtuLkNVUlNPUl9TVFlMRV9CTE9DS19DTEFTU30pIHsgYW5pbWF0aW9uOiBibGlua19ib3hfc2hhZG93X2ArdGhpcy5fdGVybWluYWxDbGFzcytcIiAxcyBzdGVwLWVuZCBpbmZpbml0ZTt9XCIrYCR7dGhpcy5fdGVybWluYWxTZWxlY3Rvcn0gLnh0ZXJtLXJvd3MueHRlcm0tZm9jdXMgLiR7bi5DVVJTT1JfQ0xBU1N9LiR7bi5DVVJTT1JfQkxJTktfQ0xBU1N9LiR7bi5DVVJTT1JfU1RZTEVfQkxPQ0tfQ0xBU1N9IHsgYW5pbWF0aW9uOiBibGlua19ibG9ja19gK3RoaXMuX3Rlcm1pbmFsQ2xhc3MrXCIgMXMgc3RlcC1lbmQgaW5maW5pdGU7fVwiK2Ake3RoaXMuX3Rlcm1pbmFsU2VsZWN0b3J9IC54dGVybS1yb3dzLnh0ZXJtLWZvY3VzIC4ke24uQ1VSU09SX0NMQVNTfS4ke24uQ1VSU09SX1NUWUxFX0JMT0NLX0NMQVNTfSB7YCtgIGJhY2tncm91bmQtY29sb3I6ICR7ZS5jdXJzb3IuY3NzfTtgK2AgY29sb3I6ICR7ZS5jdXJzb3JBY2NlbnQuY3NzfTt9YCtgJHt0aGlzLl90ZXJtaW5hbFNlbGVjdG9yfSAueHRlcm0tcm93cyAuJHtuLkNVUlNPUl9DTEFTU30uJHtuLkNVUlNPUl9TVFlMRV9CQVJfQ0xBU1N9IHtgK2AgYm94LXNoYWRvdzogJHt0aGlzLl9vcHRpb25zU2VydmljZS5yYXdPcHRpb25zLmN1cnNvcldpZHRofXB4IDAgMCAke2UuY3Vyc29yLmNzc30gaW5zZXQ7fWArYCR7dGhpcy5fdGVybWluYWxTZWxlY3Rvcn0gLnh0ZXJtLXJvd3MgLiR7bi5DVVJTT1JfQ0xBU1N9LiR7bi5DVVJTT1JfU1RZTEVfVU5ERVJMSU5FX0NMQVNTfSB7YCtgIGJveC1zaGFkb3c6IDAgLTFweCAwICR7ZS5jdXJzb3IuY3NzfSBpbnNldDt9YCx0Kz1gJHt0aGlzLl90ZXJtaW5hbFNlbGVjdG9yfSAueHRlcm0tc2VsZWN0aW9uIHsgcG9zaXRpb246IGFic29sdXRlOyB0b3A6IDA7IGxlZnQ6IDA7IHotaW5kZXg6IDE7IHBvaW50ZXItZXZlbnRzOiBub25lO30ke3RoaXMuX3Rlcm1pbmFsU2VsZWN0b3J9LmZvY3VzIC54dGVybS1zZWxlY3Rpb24gZGl2IHsgcG9zaXRpb246IGFic29sdXRlOyBiYWNrZ3JvdW5kLWNvbG9yOiAke2Uuc2VsZWN0aW9uQmFja2dyb3VuZE9wYXF1ZS5jc3N9O30ke3RoaXMuX3Rlcm1pbmFsU2VsZWN0b3J9IC54dGVybS1zZWxlY3Rpb24gZGl2IHsgcG9zaXRpb246IGFic29sdXRlOyBiYWNrZ3JvdW5kLWNvbG9yOiAke2Uuc2VsZWN0aW9uSW5hY3RpdmVCYWNrZ3JvdW5kT3BhcXVlLmNzc307fWA7Zm9yKGNvbnN0W2ksc11vZiBlLmFuc2kuZW50cmllcygpKXQrPWAke3RoaXMuX3Rlcm1pbmFsU2VsZWN0b3J9IC54dGVybS1mZy0ke2l9IHsgY29sb3I6ICR7cy5jc3N9OyB9JHt0aGlzLl90ZXJtaW5hbFNlbGVjdG9yfSAueHRlcm0tZmctJHtpfS4ke24uRElNX0NMQVNTfSB7IGNvbG9yOiAke2MuY29sb3IubXVsdGlwbHlPcGFjaXR5KHMsLjUpLmNzc307IH0ke3RoaXMuX3Rlcm1pbmFsU2VsZWN0b3J9IC54dGVybS1iZy0ke2l9IHsgYmFja2dyb3VuZC1jb2xvcjogJHtzLmNzc307IH1gO3QrPWAke3RoaXMuX3Rlcm1pbmFsU2VsZWN0b3J9IC54dGVybS1mZy0ke28uSU5WRVJURURfREVGQVVMVF9DT0xPUn0geyBjb2xvcjogJHtjLmNvbG9yLm9wYXF1ZShlLmJhY2tncm91bmQpLmNzc307IH0ke3RoaXMuX3Rlcm1pbmFsU2VsZWN0b3J9IC54dGVybS1mZy0ke28uSU5WRVJURURfREVGQVVMVF9DT0xPUn0uJHtuLkRJTV9DTEFTU30geyBjb2xvcjogJHtjLmNvbG9yLm11bHRpcGx5T3BhY2l0eShjLmNvbG9yLm9wYXF1ZShlLmJhY2tncm91bmQpLC41KS5jc3N9OyB9JHt0aGlzLl90ZXJtaW5hbFNlbGVjdG9yfSAueHRlcm0tYmctJHtvLklOVkVSVEVEX0RFRkFVTFRfQ09MT1J9IHsgYmFja2dyb3VuZC1jb2xvcjogJHtlLmZvcmVncm91bmQuY3NzfTsgfWAsdGhpcy5fdGhlbWVTdHlsZUVsZW1lbnQudGV4dENvbnRlbnQ9dH1oYW5kbGVEZXZpY2VQaXhlbFJhdGlvQ2hhbmdlKCl7dGhpcy5fdXBkYXRlRGltZW5zaW9ucygpfV9yZWZyZXNoUm93RWxlbWVudHMoZSx0KXtmb3IobGV0IGU9dGhpcy5fcm93RWxlbWVudHMubGVuZ3RoO2U8PXQ7ZSsrKXtjb25zdCBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7dGhpcy5fcm93Q29udGFpbmVyLmFwcGVuZENoaWxkKGUpLHRoaXMuX3Jvd0VsZW1lbnRzLnB1c2goZSl9Zm9yKDt0aGlzLl9yb3dFbGVtZW50cy5sZW5ndGg+dDspdGhpcy5fcm93Q29udGFpbmVyLnJlbW92ZUNoaWxkKHRoaXMuX3Jvd0VsZW1lbnRzLnBvcCgpKX1oYW5kbGVSZXNpemUoZSx0KXt0aGlzLl9yZWZyZXNoUm93RWxlbWVudHMoZSx0KSx0aGlzLl91cGRhdGVEaW1lbnNpb25zKCl9aGFuZGxlQ2hhclNpemVDaGFuZ2VkKCl7dGhpcy5fdXBkYXRlRGltZW5zaW9ucygpfWhhbmRsZUJsdXIoKXt0aGlzLl9yb3dDb250YWluZXIuY2xhc3NMaXN0LnJlbW92ZShmKX1oYW5kbGVGb2N1cygpe3RoaXMuX3Jvd0NvbnRhaW5lci5jbGFzc0xpc3QuYWRkKGYpfWhhbmRsZVNlbGVjdGlvbkNoYW5nZWQoZSx0LGkpe2Zvcig7dGhpcy5fc2VsZWN0aW9uQ29udGFpbmVyLmNoaWxkcmVuLmxlbmd0aDspdGhpcy5fc2VsZWN0aW9uQ29udGFpbmVyLnJlbW92ZUNoaWxkKHRoaXMuX3NlbGVjdGlvbkNvbnRhaW5lci5jaGlsZHJlblswXSk7aWYodGhpcy5fcm93RmFjdG9yeS5oYW5kbGVTZWxlY3Rpb25DaGFuZ2VkKGUsdCxpKSx0aGlzLnJlbmRlclJvd3MoMCx0aGlzLl9idWZmZXJTZXJ2aWNlLnJvd3MtMSksIWV8fCF0KXJldHVybjtjb25zdCBzPWVbMV0tdGhpcy5fYnVmZmVyU2VydmljZS5idWZmZXIueWRpc3Ascj10WzFdLXRoaXMuX2J1ZmZlclNlcnZpY2UuYnVmZmVyLnlkaXNwLG49TWF0aC5tYXgocywwKSxvPU1hdGgubWluKHIsdGhpcy5fYnVmZmVyU2VydmljZS5yb3dzLTEpO2lmKG4+PXRoaXMuX2J1ZmZlclNlcnZpY2Uucm93c3x8bzwwKXJldHVybjtjb25zdCBhPWRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtpZihpKXtjb25zdCBpPWVbMF0+dFswXTthLmFwcGVuZENoaWxkKHRoaXMuX2NyZWF0ZVNlbGVjdGlvbkVsZW1lbnQobixpP3RbMF06ZVswXSxpP2VbMF06dFswXSxvLW4rMSkpfWVsc2V7Y29uc3QgaT1zPT09bj9lWzBdOjAsaD1uPT09cj90WzBdOnRoaXMuX2J1ZmZlclNlcnZpY2UuY29sczthLmFwcGVuZENoaWxkKHRoaXMuX2NyZWF0ZVNlbGVjdGlvbkVsZW1lbnQobixpLGgpKTtjb25zdCBjPW8tbi0xO2lmKGEuYXBwZW5kQ2hpbGQodGhpcy5fY3JlYXRlU2VsZWN0aW9uRWxlbWVudChuKzEsMCx0aGlzLl9idWZmZXJTZXJ2aWNlLmNvbHMsYykpLG4hPT1vKXtjb25zdCBlPXI9PT1vP3RbMF06dGhpcy5fYnVmZmVyU2VydmljZS5jb2xzO2EuYXBwZW5kQ2hpbGQodGhpcy5fY3JlYXRlU2VsZWN0aW9uRWxlbWVudChvLDAsZSkpfX10aGlzLl9zZWxlY3Rpb25Db250YWluZXIuYXBwZW5kQ2hpbGQoYSl9X2NyZWF0ZVNlbGVjdGlvbkVsZW1lbnQoZSx0LGkscz0xKXtjb25zdCByPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7cmV0dXJuIHIuc3R5bGUuaGVpZ2h0PXMqdGhpcy5kaW1lbnNpb25zLmNzcy5jZWxsLmhlaWdodCtcInB4XCIsci5zdHlsZS50b3A9ZSp0aGlzLmRpbWVuc2lvbnMuY3NzLmNlbGwuaGVpZ2h0K1wicHhcIixyLnN0eWxlLmxlZnQ9dCp0aGlzLmRpbWVuc2lvbnMuY3NzLmNlbGwud2lkdGgrXCJweFwiLHIuc3R5bGUud2lkdGg9dGhpcy5kaW1lbnNpb25zLmNzcy5jZWxsLndpZHRoKihpLXQpK1wicHhcIixyfWhhbmRsZUN1cnNvck1vdmUoKXt9X2hhbmRsZU9wdGlvbnNDaGFuZ2VkKCl7dGhpcy5fdXBkYXRlRGltZW5zaW9ucygpLHRoaXMuX2luamVjdENzcyh0aGlzLl90aGVtZVNlcnZpY2UuY29sb3JzKX1jbGVhcigpe2Zvcihjb25zdCBlIG9mIHRoaXMuX3Jvd0VsZW1lbnRzKWUucmVwbGFjZUNoaWxkcmVuKCl9cmVuZGVyUm93cyhlLHQpe2NvbnN0IGk9dGhpcy5fYnVmZmVyU2VydmljZS5idWZmZXIueWJhc2UrdGhpcy5fYnVmZmVyU2VydmljZS5idWZmZXIueSxzPU1hdGgubWluKHRoaXMuX2J1ZmZlclNlcnZpY2UuYnVmZmVyLngsdGhpcy5fYnVmZmVyU2VydmljZS5jb2xzLTEpLHI9dGhpcy5fb3B0aW9uc1NlcnZpY2UucmF3T3B0aW9ucy5jdXJzb3JCbGluaztmb3IobGV0IG49ZTtuPD10O24rKyl7Y29uc3QgZT10aGlzLl9yb3dFbGVtZW50c1tuXSx0PW4rdGhpcy5fYnVmZmVyU2VydmljZS5idWZmZXIueWRpc3Asbz10aGlzLl9idWZmZXJTZXJ2aWNlLmJ1ZmZlci5saW5lcy5nZXQodCksYT10aGlzLl9vcHRpb25zU2VydmljZS5yYXdPcHRpb25zLmN1cnNvclN0eWxlO3RoaXMuX2NlbGxUb1Jvd0VsZW1lbnRzW25dJiZ0aGlzLl9jZWxsVG9Sb3dFbGVtZW50c1tuXS5sZW5ndGg9PT10aGlzLl9idWZmZXJTZXJ2aWNlLmNvbHN8fCh0aGlzLl9jZWxsVG9Sb3dFbGVtZW50c1tuXT1uZXcgSW50MTZBcnJheSh0aGlzLl9idWZmZXJTZXJ2aWNlLmNvbHMpKSxlLnJlcGxhY2VDaGlsZHJlbih0aGlzLl9yb3dGYWN0b3J5LmNyZWF0ZVJvdyhvLHQsdD09PWksYSxzLHIsdGhpcy5kaW1lbnNpb25zLmNzcy5jZWxsLndpZHRoLHRoaXMuX2J1ZmZlclNlcnZpY2UuY29scyx0aGlzLl9jZWxsVG9Sb3dFbGVtZW50c1tuXSkpfX1nZXQgX3Rlcm1pbmFsU2VsZWN0b3IoKXtyZXR1cm5gLiR7dX0ke3RoaXMuX3Rlcm1pbmFsQ2xhc3N9YH1faGFuZGxlTGlua0hvdmVyKGUpe3RoaXMuX3NldENlbGxVbmRlcmxpbmUoZS54MSxlLngyLGUueTEsZS55MixlLmNvbHMsITApfV9oYW5kbGVMaW5rTGVhdmUoZSl7dGhpcy5fc2V0Q2VsbFVuZGVybGluZShlLngxLGUueDIsZS55MSxlLnkyLGUuY29scywhMSl9X3NldENlbGxVbmRlcmxpbmUoZSx0LGkscyxyLG4pe2k8MCYmKGU9MCksczwwJiYodD0wKTtjb25zdCBvPXRoaXMuX2NlbGxUb1Jvd0VsZW1lbnRzLmxlbmd0aC0xO2k9TWF0aC5tYXgoTWF0aC5taW4oaSxvKSwwKSxzPU1hdGgubWF4KE1hdGgubWluKHMsbyksMCk7Y29uc3QgYT10aGlzLl9jZWxsVG9Sb3dFbGVtZW50c1tpXSxoPXRoaXMuX2NlbGxUb1Jvd0VsZW1lbnRzW3NdO2lmKCEoZT49YS5sZW5ndGh8fHQ+PWgubGVuZ3RoKSYmKGU9YVtlXSx0PWhbdF0sLTEhPT1lJiYtMSE9PXQpKWZvcig7ZSE9PXR8fGkhPT1zOyl7Y29uc3QgdD10aGlzLl9yb3dFbGVtZW50c1tpXTtpZighdClyZXR1cm47Y29uc3Qgcz10LmNoaWxkcmVuW2VdO3MmJihzLnN0eWxlLnRleHREZWNvcmF0aW9uPW4/XCJ1bmRlcmxpbmVcIjpcIm5vbmVcIiksKytlPj1yJiYoZT0wLGkrKyl9fX07Zz1zKFtyKDQsXy5JSW5zdGFudGlhdGlvblNlcnZpY2UpLHIoNSxoLklDaGFyU2l6ZVNlcnZpY2UpLHIoNixfLklPcHRpb25zU2VydmljZSkscig3LF8uSUJ1ZmZlclNlcnZpY2UpLHIoOCxoLklDb3JlQnJvd3NlclNlcnZpY2UpLHIoOSxoLklUaGVtZVNlcnZpY2UpXSxnKSx0LkRvbVJlbmRlcmVyPWd9LDM3ODc6ZnVuY3Rpb24oZSx0LGkpe3ZhciBzPXRoaXMmJnRoaXMuX19kZWNvcmF0ZXx8ZnVuY3Rpb24oZSx0LGkscyl7dmFyIHIsbj1hcmd1bWVudHMubGVuZ3RoLG89bjwzP3Q6bnVsbD09PXM/cz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsaSk6cztpZihcIm9iamVjdFwiPT10eXBlb2YgUmVmbGVjdCYmXCJmdW5jdGlvblwiPT10eXBlb2YgUmVmbGVjdC5kZWNvcmF0ZSlvPVJlZmxlY3QuZGVjb3JhdGUoZSx0LGkscyk7ZWxzZSBmb3IodmFyIGE9ZS5sZW5ndGgtMTthPj0wO2EtLSkocj1lW2FdKSYmKG89KG48Mz9yKG8pOm4+Mz9yKHQsaSxvKTpyKHQsaSkpfHxvKTtyZXR1cm4gbj4zJiZvJiZPYmplY3QuZGVmaW5lUHJvcGVydHkodCxpLG8pLG99LHI9dGhpcyYmdGhpcy5fX3BhcmFtfHxmdW5jdGlvbihlLHQpe3JldHVybiBmdW5jdGlvbihpLHMpe3QoaSxzLGUpfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5Eb21SZW5kZXJlclJvd0ZhY3Rvcnk9dC5DVVJTT1JfU1RZTEVfVU5ERVJMSU5FX0NMQVNTPXQuQ1VSU09SX1NUWUxFX0JBUl9DTEFTUz10LkNVUlNPUl9TVFlMRV9CTE9DS19DTEFTUz10LkNVUlNPUl9CTElOS19DTEFTUz10LkNVUlNPUl9DTEFTUz10LlNUUklLRVRIUk9VR0hfQ0xBU1M9dC5PVkVSTElORV9DTEFTUz10LlVOREVSTElORV9DTEFTUz10LklUQUxJQ19DTEFTUz10LkRJTV9DTEFTUz10LkJPTERfQ0xBU1M9dm9pZCAwO2NvbnN0IG49aSgyMjIzKSxvPWkoNjQzKSxhPWkoNTExKSxoPWkoMjU4NSksYz1pKDgwNTUpLGw9aSg0NzI1KSxkPWkoNDI2OSksXz1pKDYxNzEpLHU9aSgzNzM0KTt0LkJPTERfQ0xBU1M9XCJ4dGVybS1ib2xkXCIsdC5ESU1fQ0xBU1M9XCJ4dGVybS1kaW1cIix0LklUQUxJQ19DTEFTUz1cInh0ZXJtLWl0YWxpY1wiLHQuVU5ERVJMSU5FX0NMQVNTPVwieHRlcm0tdW5kZXJsaW5lXCIsdC5PVkVSTElORV9DTEFTUz1cInh0ZXJtLW92ZXJsaW5lXCIsdC5TVFJJS0VUSFJPVUdIX0NMQVNTPVwieHRlcm0tc3RyaWtldGhyb3VnaFwiLHQuQ1VSU09SX0NMQVNTPVwieHRlcm0tY3Vyc29yXCIsdC5DVVJTT1JfQkxJTktfQ0xBU1M9XCJ4dGVybS1jdXJzb3ItYmxpbmtcIix0LkNVUlNPUl9TVFlMRV9CTE9DS19DTEFTUz1cInh0ZXJtLWN1cnNvci1ibG9ja1wiLHQuQ1VSU09SX1NUWUxFX0JBUl9DTEFTUz1cInh0ZXJtLWN1cnNvci1iYXJcIix0LkNVUlNPUl9TVFlMRV9VTkRFUkxJTkVfQ0xBU1M9XCJ4dGVybS1jdXJzb3ItdW5kZXJsaW5lXCI7bGV0IGY9Y2xhc3N7Y29uc3RydWN0b3IoZSx0LGkscyxyLG4sbyl7dGhpcy5fZG9jdW1lbnQ9ZSx0aGlzLl9jaGFyYWN0ZXJKb2luZXJTZXJ2aWNlPXQsdGhpcy5fb3B0aW9uc1NlcnZpY2U9aSx0aGlzLl9jb3JlQnJvd3NlclNlcnZpY2U9cyx0aGlzLl9jb3JlU2VydmljZT1yLHRoaXMuX2RlY29yYXRpb25TZXJ2aWNlPW4sdGhpcy5fdGhlbWVTZXJ2aWNlPW8sdGhpcy5fd29ya0NlbGw9bmV3IGEuQ2VsbERhdGEsdGhpcy5fY29sdW1uU2VsZWN0TW9kZT0hMX1oYW5kbGVTZWxlY3Rpb25DaGFuZ2VkKGUsdCxpKXt0aGlzLl9zZWxlY3Rpb25TdGFydD1lLHRoaXMuX3NlbGVjdGlvbkVuZD10LHRoaXMuX2NvbHVtblNlbGVjdE1vZGU9aX1jcmVhdGVSb3coZSxpLHMscixhLGgsbCxfLGYpe2NvbnN0IGc9dGhpcy5fZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpLHA9dGhpcy5fY2hhcmFjdGVySm9pbmVyU2VydmljZS5nZXRKb2luZWRDaGFyYWN0ZXJzKGkpO2xldCBTPTA7Zm9yKGxldCB0PU1hdGgubWluKGUubGVuZ3RoLF8pLTE7dD49MDt0LS0paWYoZS5sb2FkQ2VsbCh0LHRoaXMuX3dvcmtDZWxsKS5nZXRDb2RlKCkhPT1vLk5VTExfQ0VMTF9DT0RFfHxzJiZ0PT09YSl7Uz10KzE7YnJlYWt9Y29uc3QgbT10aGlzLl90aGVtZVNlcnZpY2UuY29sb3JzO2xldCBDPS0xLGI9MDtmb3IoO2I8UztiKyspe2UubG9hZENlbGwoYix0aGlzLl93b3JrQ2VsbCk7bGV0IF89dGhpcy5fd29ya0NlbGwuZ2V0V2lkdGgoKTtpZigwPT09Xyl7ZltiXT1DO2NvbnRpbnVlfWxldCBTPSExLHk9Yix3PXRoaXMuX3dvcmtDZWxsO2lmKHAubGVuZ3RoPjAmJmI9PT1wWzBdWzBdKXtTPSEwO2NvbnN0IHQ9cC5zaGlmdCgpO3c9bmV3IGQuSm9pbmVkQ2VsbERhdGEodGhpcy5fd29ya0NlbGwsZS50cmFuc2xhdGVUb1N0cmluZyghMCx0WzBdLHRbMV0pLHRbMV0tdFswXSkseT10WzFdLTEsXz13LmdldFdpZHRoKCl9Y29uc3QgRT10aGlzLl9kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3BhblwiKTtpZihfPjEmJihFLnN0eWxlLndpZHRoPWwqXytcInB4XCIpLFMmJihFLnN0eWxlLmRpc3BsYXk9XCJpbmxpbmVcIixhPj1iJiZhPD15JiYoYT1iKSksIXRoaXMuX2NvcmVTZXJ2aWNlLmlzQ3Vyc29ySGlkZGVuJiZzJiZiPT09YSlzd2l0Y2goRS5jbGFzc0xpc3QuYWRkKHQuQ1VSU09SX0NMQVNTKSxoJiZFLmNsYXNzTGlzdC5hZGQodC5DVVJTT1JfQkxJTktfQ0xBU1MpLHIpe2Nhc2VcImJhclwiOkUuY2xhc3NMaXN0LmFkZCh0LkNVUlNPUl9TVFlMRV9CQVJfQ0xBU1MpO2JyZWFrO2Nhc2VcInVuZGVybGluZVwiOkUuY2xhc3NMaXN0LmFkZCh0LkNVUlNPUl9TVFlMRV9VTkRFUkxJTkVfQ0xBU1MpO2JyZWFrO2RlZmF1bHQ6RS5jbGFzc0xpc3QuYWRkKHQuQ1VSU09SX1NUWUxFX0JMT0NLX0NMQVNTKX1pZih3LmlzQm9sZCgpJiZFLmNsYXNzTGlzdC5hZGQodC5CT0xEX0NMQVNTKSx3LmlzSXRhbGljKCkmJkUuY2xhc3NMaXN0LmFkZCh0LklUQUxJQ19DTEFTUyksdy5pc0RpbSgpJiZFLmNsYXNzTGlzdC5hZGQodC5ESU1fQ0xBU1MpLHcuaXNJbnZpc2libGUoKT9FLnRleHRDb250ZW50PW8uV0hJVEVTUEFDRV9DRUxMX0NIQVI6RS50ZXh0Q29udGVudD13LmdldENoYXJzKCl8fG8uV0hJVEVTUEFDRV9DRUxMX0NIQVIsdy5pc1VuZGVybGluZSgpJiYoRS5jbGFzc0xpc3QuYWRkKGAke3QuVU5ERVJMSU5FX0NMQVNTfS0ke3cuZXh0ZW5kZWQudW5kZXJsaW5lU3R5bGV9YCksXCIgXCI9PT1FLnRleHRDb250ZW50JiYoRS50ZXh0Q29udGVudD1cIsKgXCIpLCF3LmlzVW5kZXJsaW5lQ29sb3JEZWZhdWx0KCkpKWlmKHcuaXNVbmRlcmxpbmVDb2xvclJHQigpKUUuc3R5bGUudGV4dERlY29yYXRpb25Db2xvcj1gcmdiKCR7dS5BdHRyaWJ1dGVEYXRhLnRvQ29sb3JSR0Iody5nZXRVbmRlcmxpbmVDb2xvcigpKS5qb2luKFwiLFwiKX0pYDtlbHNle2xldCBlPXcuZ2V0VW5kZXJsaW5lQ29sb3IoKTt0aGlzLl9vcHRpb25zU2VydmljZS5yYXdPcHRpb25zLmRyYXdCb2xkVGV4dEluQnJpZ2h0Q29sb3JzJiZ3LmlzQm9sZCgpJiZlPDgmJihlKz04KSxFLnN0eWxlLnRleHREZWNvcmF0aW9uQ29sb3I9bS5hbnNpW2VdLmNzc313LmlzT3ZlcmxpbmUoKSYmKEUuY2xhc3NMaXN0LmFkZCh0Lk9WRVJMSU5FX0NMQVNTKSxcIiBcIj09PUUudGV4dENvbnRlbnQmJihFLnRleHRDb250ZW50PVwiwqBcIikpLHcuaXNTdHJpa2V0aHJvdWdoKCkmJkUuY2xhc3NMaXN0LmFkZCh0LlNUUklLRVRIUk9VR0hfQ0xBU1MpO2xldCBMPXcuZ2V0RmdDb2xvcigpLGs9dy5nZXRGZ0NvbG9yTW9kZSgpLFI9dy5nZXRCZ0NvbG9yKCksRD13LmdldEJnQ29sb3JNb2RlKCk7Y29uc3QgQT0hIXcuaXNJbnZlcnNlKCk7aWYoQSl7Y29uc3QgZT1MO0w9UixSPWU7Y29uc3QgdD1rO2s9RCxEPXR9bGV0IHgsQixUPSExO3RoaXMuX2RlY29yYXRpb25TZXJ2aWNlLmZvckVhY2hEZWNvcmF0aW9uQXRDZWxsKGIsaSx2b2lkIDAsKGU9PntcInRvcFwiIT09ZS5vcHRpb25zLmxheWVyJiZUfHwoZS5iYWNrZ3JvdW5kQ29sb3JSR0ImJihEPTUwMzMxNjQ4LFI9ZS5iYWNrZ3JvdW5kQ29sb3JSR0IucmdiYT4+OCYxNjc3NzIxNSx4PWUuYmFja2dyb3VuZENvbG9yUkdCKSxlLmZvcmVncm91bmRDb2xvclJHQiYmKGs9NTAzMzE2NDgsTD1lLmZvcmVncm91bmRDb2xvclJHQi5yZ2JhPj44JjE2Nzc3MjE1LEI9ZS5mb3JlZ3JvdW5kQ29sb3JSR0IpLFQ9XCJ0b3BcIj09PWUub3B0aW9ucy5sYXllcil9KSk7Y29uc3QgTT10aGlzLl9pc0NlbGxJblNlbGVjdGlvbihiLGkpO2xldCBPO3N3aXRjaChUfHxtLnNlbGVjdGlvbkZvcmVncm91bmQmJk0mJihrPTUwMzMxNjQ4LEw9bS5zZWxlY3Rpb25Gb3JlZ3JvdW5kLnJnYmE+PjgmMTY3NzcyMTUsQj1tLnNlbGVjdGlvbkZvcmVncm91bmQpLE0mJih4PXRoaXMuX2NvcmVCcm93c2VyU2VydmljZS5pc0ZvY3VzZWQ/bS5zZWxlY3Rpb25CYWNrZ3JvdW5kT3BhcXVlOm0uc2VsZWN0aW9uSW5hY3RpdmVCYWNrZ3JvdW5kT3BhcXVlLFQ9ITApLFQmJkUuY2xhc3NMaXN0LmFkZChcInh0ZXJtLWRlY29yYXRpb24tdG9wXCIpLEQpe2Nhc2UgMTY3NzcyMTY6Y2FzZSAzMzU1NDQzMjpPPW0uYW5zaVtSXSxFLmNsYXNzTGlzdC5hZGQoYHh0ZXJtLWJnLSR7Un1gKTticmVhaztjYXNlIDUwMzMxNjQ4Ok89Yy5yZ2JhLnRvQ29sb3IoUj4+MTYsUj4+OCYyNTUsMjU1JlIpLHRoaXMuX2FkZFN0eWxlKEUsYGJhY2tncm91bmQtY29sb3I6IyR7digoUj4+PjApLnRvU3RyaW5nKDE2KSxcIjBcIiw2KX1gKTticmVhaztkZWZhdWx0OkE/KE89bS5mb3JlZ3JvdW5kLEUuY2xhc3NMaXN0LmFkZChgeHRlcm0tYmctJHtuLklOVkVSVEVEX0RFRkFVTFRfQ09MT1J9YCkpOk89bS5iYWNrZ3JvdW5kfXN3aXRjaCh4fHx3LmlzRGltKCkmJih4PWMuY29sb3IubXVsdGlwbHlPcGFjaXR5KE8sLjUpKSxrKXtjYXNlIDE2Nzc3MjE2OmNhc2UgMzM1NTQ0MzI6dy5pc0JvbGQoKSYmTDw4JiZ0aGlzLl9vcHRpb25zU2VydmljZS5yYXdPcHRpb25zLmRyYXdCb2xkVGV4dEluQnJpZ2h0Q29sb3JzJiYoTCs9OCksdGhpcy5fYXBwbHlNaW5pbXVtQ29udHJhc3QoRSxPLG0uYW5zaVtMXSx3LHgsdm9pZCAwKXx8RS5jbGFzc0xpc3QuYWRkKGB4dGVybS1mZy0ke0x9YCk7YnJlYWs7Y2FzZSA1MDMzMTY0ODpjb25zdCBlPWMucmdiYS50b0NvbG9yKEw+PjE2JjI1NSxMPj44JjI1NSwyNTUmTCk7dGhpcy5fYXBwbHlNaW5pbXVtQ29udHJhc3QoRSxPLGUsdyx4LEIpfHx0aGlzLl9hZGRTdHlsZShFLGBjb2xvcjojJHt2KEwudG9TdHJpbmcoMTYpLFwiMFwiLDYpfWApO2JyZWFrO2RlZmF1bHQ6dGhpcy5fYXBwbHlNaW5pbXVtQ29udHJhc3QoRSxPLG0uZm9yZWdyb3VuZCx3LHgsdm9pZCAwKXx8QSYmRS5jbGFzc0xpc3QuYWRkKGB4dGVybS1mZy0ke24uSU5WRVJURURfREVGQVVMVF9DT0xPUn1gKX1nLmFwcGVuZENoaWxkKEUpLGZbYl09KytDLGI9eX1yZXR1cm4gYjxfLTEmJmYuc3ViYXJyYXkoYikuZmlsbCgrK0MpLGd9X2FwcGx5TWluaW11bUNvbnRyYXN0KGUsdCxpLHMscixuKXtpZigxPT09dGhpcy5fb3B0aW9uc1NlcnZpY2UucmF3T3B0aW9ucy5taW5pbXVtQ29udHJhc3RSYXRpb3x8KDAsXy5leGNsdWRlRnJvbUNvbnRyYXN0UmF0aW9EZW1hbmRzKShzLmdldENvZGUoKSkpcmV0dXJuITE7bGV0IG87cmV0dXJuIHJ8fG58fChvPXRoaXMuX3RoZW1lU2VydmljZS5jb2xvcnMuY29udHJhc3RDYWNoZS5nZXRDb2xvcih0LnJnYmEsaS5yZ2JhKSksdm9pZCAwPT09byYmKG89Yy5jb2xvci5lbnN1cmVDb250cmFzdFJhdGlvKHJ8fHQsbnx8aSx0aGlzLl9vcHRpb25zU2VydmljZS5yYXdPcHRpb25zLm1pbmltdW1Db250cmFzdFJhdGlvKSx0aGlzLl90aGVtZVNlcnZpY2UuY29sb3JzLmNvbnRyYXN0Q2FjaGUuc2V0Q29sb3IoKHJ8fHQpLnJnYmEsKG58fGkpLnJnYmEsbnVsbCE9bz9vOm51bGwpKSwhIW8mJih0aGlzLl9hZGRTdHlsZShlLGBjb2xvcjoke28uY3NzfWApLCEwKX1fYWRkU3R5bGUoZSx0KXtlLnNldEF0dHJpYnV0ZShcInN0eWxlXCIsYCR7ZS5nZXRBdHRyaWJ1dGUoXCJzdHlsZVwiKXx8XCJcIn0ke3R9O2ApfV9pc0NlbGxJblNlbGVjdGlvbihlLHQpe2NvbnN0IGk9dGhpcy5fc2VsZWN0aW9uU3RhcnQscz10aGlzLl9zZWxlY3Rpb25FbmQ7cmV0dXJuISghaXx8IXMpJiYodGhpcy5fY29sdW1uU2VsZWN0TW9kZT9pWzBdPD1zWzBdP2U+PWlbMF0mJnQ+PWlbMV0mJmU8c1swXSYmdDw9c1sxXTplPGlbMF0mJnQ+PWlbMV0mJmU+PXNbMF0mJnQ8PXNbMV06dD5pWzFdJiZ0PHNbMV18fGlbMV09PT1zWzFdJiZ0PT09aVsxXSYmZT49aVswXSYmZTxzWzBdfHxpWzFdPHNbMV0mJnQ9PT1zWzFdJiZlPHNbMF18fGlbMV08c1sxXSYmdD09PWlbMV0mJmU+PWlbMF0pfX07ZnVuY3Rpb24gdihlLHQsaSl7Zm9yKDtlLmxlbmd0aDxpOyllPXQrZTtyZXR1cm4gZX1mPXMoW3IoMSxsLklDaGFyYWN0ZXJKb2luZXJTZXJ2aWNlKSxyKDIsaC5JT3B0aW9uc1NlcnZpY2UpLHIoMyxsLklDb3JlQnJvd3NlclNlcnZpY2UpLHIoNCxoLklDb3JlU2VydmljZSkscig1LGguSURlY29yYXRpb25TZXJ2aWNlKSxyKDYsbC5JVGhlbWVTZXJ2aWNlKV0sZiksdC5Eb21SZW5kZXJlclJvd0ZhY3Rvcnk9Zn0sMjIyMzooZSx0LGkpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5URVhUX0JBU0VMSU5FPXQuRElNX09QQUNJVFk9dC5JTlZFUlRFRF9ERUZBVUxUX0NPTE9SPXZvaWQgMDtjb25zdCBzPWkoNjExNCk7dC5JTlZFUlRFRF9ERUZBVUxUX0NPTE9SPTI1Nyx0LkRJTV9PUEFDSVRZPS41LHQuVEVYVF9CQVNFTElORT1zLmlzRmlyZWZveHx8cy5pc0xlZ2FjeUVkZ2U/XCJib3R0b21cIjpcImlkZW9ncmFwaGljXCJ9LDYxNzE6KGUsdCk9PntmdW5jdGlvbiBpKGUpe3JldHVybiA1NzUwODw9ZSYmZTw9NTc1NTh9T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5jcmVhdGVSZW5kZXJEaW1lbnNpb25zPXQuZXhjbHVkZUZyb21Db250cmFzdFJhdGlvRGVtYW5kcz10LmlzUmVzdHJpY3RlZFBvd2VybGluZUdseXBoPXQuaXNQb3dlcmxpbmVHbHlwaD10LnRocm93SWZGYWxzeT12b2lkIDAsdC50aHJvd0lmRmFsc3k9ZnVuY3Rpb24oZSl7aWYoIWUpdGhyb3cgbmV3IEVycm9yKFwidmFsdWUgbXVzdCBub3QgYmUgZmFsc3lcIik7cmV0dXJuIGV9LHQuaXNQb3dlcmxpbmVHbHlwaD1pLHQuaXNSZXN0cmljdGVkUG93ZXJsaW5lR2x5cGg9ZnVuY3Rpb24oZSl7cmV0dXJuIDU3NTIwPD1lJiZlPD01NzUyN30sdC5leGNsdWRlRnJvbUNvbnRyYXN0UmF0aW9EZW1hbmRzPWZ1bmN0aW9uKGUpe3JldHVybiBpKGUpfHxmdW5jdGlvbihlKXtyZXR1cm4gOTQ3Mjw9ZSYmZTw9OTYzMX0oZSl9LHQuY3JlYXRlUmVuZGVyRGltZW5zaW9ucz1mdW5jdGlvbigpe3JldHVybntjc3M6e2NhbnZhczp7d2lkdGg6MCxoZWlnaHQ6MH0sY2VsbDp7d2lkdGg6MCxoZWlnaHQ6MH19LGRldmljZTp7Y2FudmFzOnt3aWR0aDowLGhlaWdodDowfSxjZWxsOnt3aWR0aDowLGhlaWdodDowfSxjaGFyOnt3aWR0aDowLGhlaWdodDowLGxlZnQ6MCx0b3A6MH19fX19LDQ1NjooZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuU2VsZWN0aW9uTW9kZWw9dm9pZCAwLHQuU2VsZWN0aW9uTW9kZWw9Y2xhc3N7Y29uc3RydWN0b3IoZSl7dGhpcy5fYnVmZmVyU2VydmljZT1lLHRoaXMuaXNTZWxlY3RBbGxBY3RpdmU9ITEsdGhpcy5zZWxlY3Rpb25TdGFydExlbmd0aD0wfWNsZWFyU2VsZWN0aW9uKCl7dGhpcy5zZWxlY3Rpb25TdGFydD12b2lkIDAsdGhpcy5zZWxlY3Rpb25FbmQ9dm9pZCAwLHRoaXMuaXNTZWxlY3RBbGxBY3RpdmU9ITEsdGhpcy5zZWxlY3Rpb25TdGFydExlbmd0aD0wfWdldCBmaW5hbFNlbGVjdGlvblN0YXJ0KCl7cmV0dXJuIHRoaXMuaXNTZWxlY3RBbGxBY3RpdmU/WzAsMF06dGhpcy5zZWxlY3Rpb25FbmQmJnRoaXMuc2VsZWN0aW9uU3RhcnQmJnRoaXMuYXJlU2VsZWN0aW9uVmFsdWVzUmV2ZXJzZWQoKT90aGlzLnNlbGVjdGlvbkVuZDp0aGlzLnNlbGVjdGlvblN0YXJ0fWdldCBmaW5hbFNlbGVjdGlvbkVuZCgpe2lmKHRoaXMuaXNTZWxlY3RBbGxBY3RpdmUpcmV0dXJuW3RoaXMuX2J1ZmZlclNlcnZpY2UuY29scyx0aGlzLl9idWZmZXJTZXJ2aWNlLmJ1ZmZlci55YmFzZSt0aGlzLl9idWZmZXJTZXJ2aWNlLnJvd3MtMV07aWYodGhpcy5zZWxlY3Rpb25TdGFydCl7aWYoIXRoaXMuc2VsZWN0aW9uRW5kfHx0aGlzLmFyZVNlbGVjdGlvblZhbHVlc1JldmVyc2VkKCkpe2NvbnN0IGU9dGhpcy5zZWxlY3Rpb25TdGFydFswXSt0aGlzLnNlbGVjdGlvblN0YXJ0TGVuZ3RoO3JldHVybiBlPnRoaXMuX2J1ZmZlclNlcnZpY2UuY29scz9lJXRoaXMuX2J1ZmZlclNlcnZpY2UuY29scz09MD9bdGhpcy5fYnVmZmVyU2VydmljZS5jb2xzLHRoaXMuc2VsZWN0aW9uU3RhcnRbMV0rTWF0aC5mbG9vcihlL3RoaXMuX2J1ZmZlclNlcnZpY2UuY29scyktMV06W2UldGhpcy5fYnVmZmVyU2VydmljZS5jb2xzLHRoaXMuc2VsZWN0aW9uU3RhcnRbMV0rTWF0aC5mbG9vcihlL3RoaXMuX2J1ZmZlclNlcnZpY2UuY29scyldOltlLHRoaXMuc2VsZWN0aW9uU3RhcnRbMV1dfWlmKHRoaXMuc2VsZWN0aW9uU3RhcnRMZW5ndGgmJnRoaXMuc2VsZWN0aW9uRW5kWzFdPT09dGhpcy5zZWxlY3Rpb25TdGFydFsxXSl7Y29uc3QgZT10aGlzLnNlbGVjdGlvblN0YXJ0WzBdK3RoaXMuc2VsZWN0aW9uU3RhcnRMZW5ndGg7cmV0dXJuIGU+dGhpcy5fYnVmZmVyU2VydmljZS5jb2xzP1tlJXRoaXMuX2J1ZmZlclNlcnZpY2UuY29scyx0aGlzLnNlbGVjdGlvblN0YXJ0WzFdK01hdGguZmxvb3IoZS90aGlzLl9idWZmZXJTZXJ2aWNlLmNvbHMpXTpbTWF0aC5tYXgoZSx0aGlzLnNlbGVjdGlvbkVuZFswXSksdGhpcy5zZWxlY3Rpb25FbmRbMV1dfXJldHVybiB0aGlzLnNlbGVjdGlvbkVuZH19YXJlU2VsZWN0aW9uVmFsdWVzUmV2ZXJzZWQoKXtjb25zdCBlPXRoaXMuc2VsZWN0aW9uU3RhcnQsdD10aGlzLnNlbGVjdGlvbkVuZDtyZXR1cm4hKCFlfHwhdCkmJihlWzFdPnRbMV18fGVbMV09PT10WzFdJiZlWzBdPnRbMF0pfWhhbmRsZVRyaW0oZSl7cmV0dXJuIHRoaXMuc2VsZWN0aW9uU3RhcnQmJih0aGlzLnNlbGVjdGlvblN0YXJ0WzFdLT1lKSx0aGlzLnNlbGVjdGlvbkVuZCYmKHRoaXMuc2VsZWN0aW9uRW5kWzFdLT1lKSx0aGlzLnNlbGVjdGlvbkVuZCYmdGhpcy5zZWxlY3Rpb25FbmRbMV08MD8odGhpcy5jbGVhclNlbGVjdGlvbigpLCEwKToodGhpcy5zZWxlY3Rpb25TdGFydCYmdGhpcy5zZWxlY3Rpb25TdGFydFsxXTwwJiYodGhpcy5zZWxlY3Rpb25TdGFydFsxXT0wKSwhMSl9fX0sNDI4OmZ1bmN0aW9uKGUsdCxpKXt2YXIgcz10aGlzJiZ0aGlzLl9fZGVjb3JhdGV8fGZ1bmN0aW9uKGUsdCxpLHMpe3ZhciByLG49YXJndW1lbnRzLmxlbmd0aCxvPW48Mz90Om51bGw9PT1zP3M9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LGkpOnM7aWYoXCJvYmplY3RcIj09dHlwZW9mIFJlZmxlY3QmJlwiZnVuY3Rpb25cIj09dHlwZW9mIFJlZmxlY3QuZGVjb3JhdGUpbz1SZWZsZWN0LmRlY29yYXRlKGUsdCxpLHMpO2Vsc2UgZm9yKHZhciBhPWUubGVuZ3RoLTE7YT49MDthLS0pKHI9ZVthXSkmJihvPShuPDM/cihvKTpuPjM/cih0LGksbyk6cih0LGkpKXx8byk7cmV0dXJuIG4+MyYmbyYmT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsaSxvKSxvfSxyPXRoaXMmJnRoaXMuX19wYXJhbXx8ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZnVuY3Rpb24oaSxzKXt0KGkscyxlKX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuQ2hhclNpemVTZXJ2aWNlPXZvaWQgMDtjb25zdCBuPWkoMjU4NSksbz1pKDg0NjApLGE9aSg4NDQpO2xldCBoPWNsYXNzIGV4dGVuZHMgYS5EaXNwb3NhYmxle2NvbnN0cnVjdG9yKGUsdCxpKXtzdXBlcigpLHRoaXMuX29wdGlvbnNTZXJ2aWNlPWksdGhpcy53aWR0aD0wLHRoaXMuaGVpZ2h0PTAsdGhpcy5fb25DaGFyU2l6ZUNoYW5nZT10aGlzLnJlZ2lzdGVyKG5ldyBvLkV2ZW50RW1pdHRlciksdGhpcy5vbkNoYXJTaXplQ2hhbmdlPXRoaXMuX29uQ2hhclNpemVDaGFuZ2UuZXZlbnQsdGhpcy5fbWVhc3VyZVN0cmF0ZWd5PW5ldyBjKGUsdCx0aGlzLl9vcHRpb25zU2VydmljZSksdGhpcy5yZWdpc3Rlcih0aGlzLl9vcHRpb25zU2VydmljZS5vbk11bHRpcGxlT3B0aW9uQ2hhbmdlKFtcImZvbnRGYW1pbHlcIixcImZvbnRTaXplXCJdLCgoKT0+dGhpcy5tZWFzdXJlKCkpKSl9Z2V0IGhhc1ZhbGlkU2l6ZSgpe3JldHVybiB0aGlzLndpZHRoPjAmJnRoaXMuaGVpZ2h0PjB9bWVhc3VyZSgpe2NvbnN0IGU9dGhpcy5fbWVhc3VyZVN0cmF0ZWd5Lm1lYXN1cmUoKTtlLndpZHRoPT09dGhpcy53aWR0aCYmZS5oZWlnaHQ9PT10aGlzLmhlaWdodHx8KHRoaXMud2lkdGg9ZS53aWR0aCx0aGlzLmhlaWdodD1lLmhlaWdodCx0aGlzLl9vbkNoYXJTaXplQ2hhbmdlLmZpcmUoKSl9fTtoPXMoW3IoMixuLklPcHRpb25zU2VydmljZSldLGgpLHQuQ2hhclNpemVTZXJ2aWNlPWg7Y2xhc3MgY3tjb25zdHJ1Y3RvcihlLHQsaSl7dGhpcy5fZG9jdW1lbnQ9ZSx0aGlzLl9wYXJlbnRFbGVtZW50PXQsdGhpcy5fb3B0aW9uc1NlcnZpY2U9aSx0aGlzLl9yZXN1bHQ9e3dpZHRoOjAsaGVpZ2h0OjB9LHRoaXMuX21lYXN1cmVFbGVtZW50PXRoaXMuX2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIpLHRoaXMuX21lYXN1cmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoXCJ4dGVybS1jaGFyLW1lYXN1cmUtZWxlbWVudFwiKSx0aGlzLl9tZWFzdXJlRWxlbWVudC50ZXh0Q29udGVudD1cIldcIix0aGlzLl9tZWFzdXJlRWxlbWVudC5zZXRBdHRyaWJ1dGUoXCJhcmlhLWhpZGRlblwiLFwidHJ1ZVwiKSx0aGlzLl9wYXJlbnRFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX21lYXN1cmVFbGVtZW50KX1tZWFzdXJlKCl7dGhpcy5fbWVhc3VyZUVsZW1lbnQuc3R5bGUuZm9udEZhbWlseT10aGlzLl9vcHRpb25zU2VydmljZS5yYXdPcHRpb25zLmZvbnRGYW1pbHksdGhpcy5fbWVhc3VyZUVsZW1lbnQuc3R5bGUuZm9udFNpemU9YCR7dGhpcy5fb3B0aW9uc1NlcnZpY2UucmF3T3B0aW9ucy5mb250U2l6ZX1weGA7Y29uc3QgZT10aGlzLl9tZWFzdXJlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtyZXR1cm4gMCE9PWUud2lkdGgmJjAhPT1lLmhlaWdodCYmKHRoaXMuX3Jlc3VsdC53aWR0aD1lLndpZHRoLHRoaXMuX3Jlc3VsdC5oZWlnaHQ9TWF0aC5jZWlsKGUuaGVpZ2h0KSksdGhpcy5fcmVzdWx0fX19LDQyNjk6ZnVuY3Rpb24oZSx0LGkpe3ZhciBzPXRoaXMmJnRoaXMuX19kZWNvcmF0ZXx8ZnVuY3Rpb24oZSx0LGkscyl7dmFyIHIsbj1hcmd1bWVudHMubGVuZ3RoLG89bjwzP3Q6bnVsbD09PXM/cz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsaSk6cztpZihcIm9iamVjdFwiPT10eXBlb2YgUmVmbGVjdCYmXCJmdW5jdGlvblwiPT10eXBlb2YgUmVmbGVjdC5kZWNvcmF0ZSlvPVJlZmxlY3QuZGVjb3JhdGUoZSx0LGkscyk7ZWxzZSBmb3IodmFyIGE9ZS5sZW5ndGgtMTthPj0wO2EtLSkocj1lW2FdKSYmKG89KG48Mz9yKG8pOm4+Mz9yKHQsaSxvKTpyKHQsaSkpfHxvKTtyZXR1cm4gbj4zJiZvJiZPYmplY3QuZGVmaW5lUHJvcGVydHkodCxpLG8pLG99LHI9dGhpcyYmdGhpcy5fX3BhcmFtfHxmdW5jdGlvbihlLHQpe3JldHVybiBmdW5jdGlvbihpLHMpe3QoaSxzLGUpfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5DaGFyYWN0ZXJKb2luZXJTZXJ2aWNlPXQuSm9pbmVkQ2VsbERhdGE9dm9pZCAwO2NvbnN0IG49aSgzNzM0KSxvPWkoNjQzKSxhPWkoNTExKSxoPWkoMjU4NSk7Y2xhc3MgYyBleHRlbmRzIG4uQXR0cmlidXRlRGF0YXtjb25zdHJ1Y3RvcihlLHQsaSl7c3VwZXIoKSx0aGlzLmNvbnRlbnQ9MCx0aGlzLmNvbWJpbmVkRGF0YT1cIlwiLHRoaXMuZmc9ZS5mZyx0aGlzLmJnPWUuYmcsdGhpcy5jb21iaW5lZERhdGE9dCx0aGlzLl93aWR0aD1pfWlzQ29tYmluZWQoKXtyZXR1cm4gMjA5NzE1Mn1nZXRXaWR0aCgpe3JldHVybiB0aGlzLl93aWR0aH1nZXRDaGFycygpe3JldHVybiB0aGlzLmNvbWJpbmVkRGF0YX1nZXRDb2RlKCl7cmV0dXJuIDIwOTcxNTF9c2V0RnJvbUNoYXJEYXRhKGUpe3Rocm93IG5ldyBFcnJvcihcIm5vdCBpbXBsZW1lbnRlZFwiKX1nZXRBc0NoYXJEYXRhKCl7cmV0dXJuW3RoaXMuZmcsdGhpcy5nZXRDaGFycygpLHRoaXMuZ2V0V2lkdGgoKSx0aGlzLmdldENvZGUoKV19fXQuSm9pbmVkQ2VsbERhdGE9YztsZXQgbD1jbGFzcyBle2NvbnN0cnVjdG9yKGUpe3RoaXMuX2J1ZmZlclNlcnZpY2U9ZSx0aGlzLl9jaGFyYWN0ZXJKb2luZXJzPVtdLHRoaXMuX25leHRDaGFyYWN0ZXJKb2luZXJJZD0wLHRoaXMuX3dvcmtDZWxsPW5ldyBhLkNlbGxEYXRhfXJlZ2lzdGVyKGUpe2NvbnN0IHQ9e2lkOnRoaXMuX25leHRDaGFyYWN0ZXJKb2luZXJJZCsrLGhhbmRsZXI6ZX07cmV0dXJuIHRoaXMuX2NoYXJhY3RlckpvaW5lcnMucHVzaCh0KSx0LmlkfWRlcmVnaXN0ZXIoZSl7Zm9yKGxldCB0PTA7dDx0aGlzLl9jaGFyYWN0ZXJKb2luZXJzLmxlbmd0aDt0KyspaWYodGhpcy5fY2hhcmFjdGVySm9pbmVyc1t0XS5pZD09PWUpcmV0dXJuIHRoaXMuX2NoYXJhY3RlckpvaW5lcnMuc3BsaWNlKHQsMSksITA7cmV0dXJuITF9Z2V0Sm9pbmVkQ2hhcmFjdGVycyhlKXtpZigwPT09dGhpcy5fY2hhcmFjdGVySm9pbmVycy5sZW5ndGgpcmV0dXJuW107Y29uc3QgdD10aGlzLl9idWZmZXJTZXJ2aWNlLmJ1ZmZlci5saW5lcy5nZXQoZSk7aWYoIXR8fDA9PT10Lmxlbmd0aClyZXR1cm5bXTtjb25zdCBpPVtdLHM9dC50cmFuc2xhdGVUb1N0cmluZyghMCk7bGV0IHI9MCxuPTAsYT0wLGg9dC5nZXRGZygwKSxjPXQuZ2V0QmcoMCk7Zm9yKGxldCBlPTA7ZTx0LmdldFRyaW1tZWRMZW5ndGgoKTtlKyspaWYodC5sb2FkQ2VsbChlLHRoaXMuX3dvcmtDZWxsKSwwIT09dGhpcy5fd29ya0NlbGwuZ2V0V2lkdGgoKSl7aWYodGhpcy5fd29ya0NlbGwuZmchPT1ofHx0aGlzLl93b3JrQ2VsbC5iZyE9PWMpe2lmKGUtcj4xKXtjb25zdCBlPXRoaXMuX2dldEpvaW5lZFJhbmdlcyhzLGEsbix0LHIpO2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKWkucHVzaChlW3RdKX1yPWUsYT1uLGg9dGhpcy5fd29ya0NlbGwuZmcsYz10aGlzLl93b3JrQ2VsbC5iZ31uKz10aGlzLl93b3JrQ2VsbC5nZXRDaGFycygpLmxlbmd0aHx8by5XSElURVNQQUNFX0NFTExfQ0hBUi5sZW5ndGh9aWYodGhpcy5fYnVmZmVyU2VydmljZS5jb2xzLXI+MSl7Y29uc3QgZT10aGlzLl9nZXRKb2luZWRSYW5nZXMocyxhLG4sdCxyKTtmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKylpLnB1c2goZVt0XSl9cmV0dXJuIGl9X2dldEpvaW5lZFJhbmdlcyh0LGkscyxyLG4pe2NvbnN0IG89dC5zdWJzdHJpbmcoaSxzKTtsZXQgYT1bXTt0cnl7YT10aGlzLl9jaGFyYWN0ZXJKb2luZXJzWzBdLmhhbmRsZXIobyl9Y2F0Y2goZSl7Y29uc29sZS5lcnJvcihlKX1mb3IobGV0IHQ9MTt0PHRoaXMuX2NoYXJhY3RlckpvaW5lcnMubGVuZ3RoO3QrKyl0cnl7Y29uc3QgaT10aGlzLl9jaGFyYWN0ZXJKb2luZXJzW3RdLmhhbmRsZXIobyk7Zm9yKGxldCB0PTA7dDxpLmxlbmd0aDt0KyspZS5fbWVyZ2VSYW5nZXMoYSxpW3RdKX1jYXRjaChlKXtjb25zb2xlLmVycm9yKGUpfXJldHVybiB0aGlzLl9zdHJpbmdSYW5nZXNUb0NlbGxSYW5nZXMoYSxyLG4pLGF9X3N0cmluZ1Jhbmdlc1RvQ2VsbFJhbmdlcyhlLHQsaSl7bGV0IHM9MCxyPSExLG49MCxhPWVbc107aWYoYSl7Zm9yKGxldCBoPWk7aDx0aGlzLl9idWZmZXJTZXJ2aWNlLmNvbHM7aCsrKXtjb25zdCBpPXQuZ2V0V2lkdGgoaCksYz10LmdldFN0cmluZyhoKS5sZW5ndGh8fG8uV0hJVEVTUEFDRV9DRUxMX0NIQVIubGVuZ3RoO2lmKDAhPT1pKXtpZighciYmYVswXTw9biYmKGFbMF09aCxyPSEwKSxhWzFdPD1uKXtpZihhWzFdPWgsYT1lWysrc10sIWEpYnJlYWs7YVswXTw9bj8oYVswXT1oLHI9ITApOnI9ITF9bis9Y319YSYmKGFbMV09dGhpcy5fYnVmZmVyU2VydmljZS5jb2xzKX19c3RhdGljIF9tZXJnZVJhbmdlcyhlLHQpe2xldCBpPSExO2ZvcihsZXQgcz0wO3M8ZS5sZW5ndGg7cysrKXtjb25zdCByPWVbc107aWYoaSl7aWYodFsxXTw9clswXSlyZXR1cm4gZVtzLTFdWzFdPXRbMV0sZTtpZih0WzFdPD1yWzFdKXJldHVybiBlW3MtMV1bMV09TWF0aC5tYXgodFsxXSxyWzFdKSxlLnNwbGljZShzLDEpLGU7ZS5zcGxpY2UocywxKSxzLS19ZWxzZXtpZih0WzFdPD1yWzBdKXJldHVybiBlLnNwbGljZShzLDAsdCksZTtpZih0WzFdPD1yWzFdKXJldHVybiByWzBdPU1hdGgubWluKHRbMF0sclswXSksZTt0WzBdPHJbMV0mJihyWzBdPU1hdGgubWluKHRbMF0sclswXSksaT0hMCl9fXJldHVybiBpP2VbZS5sZW5ndGgtMV1bMV09dFsxXTplLnB1c2godCksZX19O2w9cyhbcigwLGguSUJ1ZmZlclNlcnZpY2UpXSxsKSx0LkNoYXJhY3RlckpvaW5lclNlcnZpY2U9bH0sNTExNDooZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuQ29yZUJyb3dzZXJTZXJ2aWNlPXZvaWQgMCx0LkNvcmVCcm93c2VyU2VydmljZT1jbGFzc3tjb25zdHJ1Y3RvcihlLHQpe3RoaXMuX3RleHRhcmVhPWUsdGhpcy53aW5kb3c9dCx0aGlzLl9pc0ZvY3VzZWQ9ITEsdGhpcy5fY2FjaGVkSXNGb2N1c2VkPXZvaWQgMCx0aGlzLl90ZXh0YXJlYS5hZGRFdmVudExpc3RlbmVyKFwiZm9jdXNcIiwoKCk9PnRoaXMuX2lzRm9jdXNlZD0hMCkpLHRoaXMuX3RleHRhcmVhLmFkZEV2ZW50TGlzdGVuZXIoXCJibHVyXCIsKCgpPT50aGlzLl9pc0ZvY3VzZWQ9ITEpKX1nZXQgZHByKCl7cmV0dXJuIHRoaXMud2luZG93LmRldmljZVBpeGVsUmF0aW99Z2V0IGlzRm9jdXNlZCgpe3JldHVybiB2b2lkIDA9PT10aGlzLl9jYWNoZWRJc0ZvY3VzZWQmJih0aGlzLl9jYWNoZWRJc0ZvY3VzZWQ9dGhpcy5faXNGb2N1c2VkJiZ0aGlzLl90ZXh0YXJlYS5vd25lckRvY3VtZW50Lmhhc0ZvY3VzKCkscXVldWVNaWNyb3Rhc2soKCgpPT50aGlzLl9jYWNoZWRJc0ZvY3VzZWQ9dm9pZCAwKSkpLHRoaXMuX2NhY2hlZElzRm9jdXNlZH19fSw4OTM0OmZ1bmN0aW9uKGUsdCxpKXt2YXIgcz10aGlzJiZ0aGlzLl9fZGVjb3JhdGV8fGZ1bmN0aW9uKGUsdCxpLHMpe3ZhciByLG49YXJndW1lbnRzLmxlbmd0aCxvPW48Mz90Om51bGw9PT1zP3M9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LGkpOnM7aWYoXCJvYmplY3RcIj09dHlwZW9mIFJlZmxlY3QmJlwiZnVuY3Rpb25cIj09dHlwZW9mIFJlZmxlY3QuZGVjb3JhdGUpbz1SZWZsZWN0LmRlY29yYXRlKGUsdCxpLHMpO2Vsc2UgZm9yKHZhciBhPWUubGVuZ3RoLTE7YT49MDthLS0pKHI9ZVthXSkmJihvPShuPDM/cihvKTpuPjM/cih0LGksbyk6cih0LGkpKXx8byk7cmV0dXJuIG4+MyYmbyYmT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsaSxvKSxvfSxyPXRoaXMmJnRoaXMuX19wYXJhbXx8ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZnVuY3Rpb24oaSxzKXt0KGkscyxlKX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuTW91c2VTZXJ2aWNlPXZvaWQgMDtjb25zdCBuPWkoNDcyNSksbz1pKDk4MDYpO2xldCBhPWNsYXNze2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5fcmVuZGVyU2VydmljZT1lLHRoaXMuX2NoYXJTaXplU2VydmljZT10fWdldENvb3JkcyhlLHQsaSxzLHIpe3JldHVybigwLG8uZ2V0Q29vcmRzKSh3aW5kb3csZSx0LGkscyx0aGlzLl9jaGFyU2l6ZVNlcnZpY2UuaGFzVmFsaWRTaXplLHRoaXMuX3JlbmRlclNlcnZpY2UuZGltZW5zaW9ucy5jc3MuY2VsbC53aWR0aCx0aGlzLl9yZW5kZXJTZXJ2aWNlLmRpbWVuc2lvbnMuY3NzLmNlbGwuaGVpZ2h0LHIpfWdldE1vdXNlUmVwb3J0Q29vcmRzKGUsdCl7Y29uc3QgaT0oMCxvLmdldENvb3Jkc1JlbGF0aXZlVG9FbGVtZW50KSh3aW5kb3csZSx0KTtpZighKCF0aGlzLl9jaGFyU2l6ZVNlcnZpY2UuaGFzVmFsaWRTaXplfHxpWzBdPDB8fGlbMV08MHx8aVswXT49dGhpcy5fcmVuZGVyU2VydmljZS5kaW1lbnNpb25zLmNzcy5jYW52YXMud2lkdGh8fGlbMV0+PXRoaXMuX3JlbmRlclNlcnZpY2UuZGltZW5zaW9ucy5jc3MuY2FudmFzLmhlaWdodCkpcmV0dXJue2NvbDpNYXRoLmZsb29yKGlbMF0vdGhpcy5fcmVuZGVyU2VydmljZS5kaW1lbnNpb25zLmNzcy5jZWxsLndpZHRoKSxyb3c6TWF0aC5mbG9vcihpWzFdL3RoaXMuX3JlbmRlclNlcnZpY2UuZGltZW5zaW9ucy5jc3MuY2VsbC5oZWlnaHQpLHg6TWF0aC5mbG9vcihpWzBdKSx5Ok1hdGguZmxvb3IoaVsxXSl9fX07YT1zKFtyKDAsbi5JUmVuZGVyU2VydmljZSkscigxLG4uSUNoYXJTaXplU2VydmljZSldLGEpLHQuTW91c2VTZXJ2aWNlPWF9LDMyMzA6ZnVuY3Rpb24oZSx0LGkpe3ZhciBzPXRoaXMmJnRoaXMuX19kZWNvcmF0ZXx8ZnVuY3Rpb24oZSx0LGkscyl7dmFyIHIsbj1hcmd1bWVudHMubGVuZ3RoLG89bjwzP3Q6bnVsbD09PXM/cz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsaSk6cztpZihcIm9iamVjdFwiPT10eXBlb2YgUmVmbGVjdCYmXCJmdW5jdGlvblwiPT10eXBlb2YgUmVmbGVjdC5kZWNvcmF0ZSlvPVJlZmxlY3QuZGVjb3JhdGUoZSx0LGkscyk7ZWxzZSBmb3IodmFyIGE9ZS5sZW5ndGgtMTthPj0wO2EtLSkocj1lW2FdKSYmKG89KG48Mz9yKG8pOm4+Mz9yKHQsaSxvKTpyKHQsaSkpfHxvKTtyZXR1cm4gbj4zJiZvJiZPYmplY3QuZGVmaW5lUHJvcGVydHkodCxpLG8pLG99LHI9dGhpcyYmdGhpcy5fX3BhcmFtfHxmdW5jdGlvbihlLHQpe3JldHVybiBmdW5jdGlvbihpLHMpe3QoaSxzLGUpfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5SZW5kZXJTZXJ2aWNlPXZvaWQgMDtjb25zdCBuPWkoNjE5Myksbz1pKDg0NjApLGE9aSg4NDQpLGg9aSg1NTk2KSxjPWkoMzY1NiksbD1pKDI1ODUpLGQ9aSg0NzI1KSxfPWkoNzIyNik7bGV0IHU9Y2xhc3MgZXh0ZW5kcyBhLkRpc3Bvc2FibGV7Y29uc3RydWN0b3IoZSx0LGkscyxyLGEsbCxkKXtpZihzdXBlcigpLHRoaXMuX3Jvd0NvdW50PWUsdGhpcy5fY2hhclNpemVTZXJ2aWNlPXMsdGhpcy5fcGF1c2VkUmVzaXplVGFzaz1uZXcgXy5EZWJvdW5jZWRJZGxlVGFzayx0aGlzLl9pc1BhdXNlZD0hMSx0aGlzLl9uZWVkc0Z1bGxSZWZyZXNoPSExLHRoaXMuX2lzTmV4dFJlbmRlclJlZHJhd09ubHk9ITAsdGhpcy5fbmVlZHNTZWxlY3Rpb25SZWZyZXNoPSExLHRoaXMuX2NhbnZhc1dpZHRoPTAsdGhpcy5fY2FudmFzSGVpZ2h0PTAsdGhpcy5fc2VsZWN0aW9uU3RhdGU9e3N0YXJ0OnZvaWQgMCxlbmQ6dm9pZCAwLGNvbHVtblNlbGVjdE1vZGU6ITF9LHRoaXMuX29uRGltZW5zaW9uc0NoYW5nZT10aGlzLnJlZ2lzdGVyKG5ldyBvLkV2ZW50RW1pdHRlciksdGhpcy5vbkRpbWVuc2lvbnNDaGFuZ2U9dGhpcy5fb25EaW1lbnNpb25zQ2hhbmdlLmV2ZW50LHRoaXMuX29uUmVuZGVyZWRWaWV3cG9ydENoYW5nZT10aGlzLnJlZ2lzdGVyKG5ldyBvLkV2ZW50RW1pdHRlciksdGhpcy5vblJlbmRlcmVkVmlld3BvcnRDaGFuZ2U9dGhpcy5fb25SZW5kZXJlZFZpZXdwb3J0Q2hhbmdlLmV2ZW50LHRoaXMuX29uUmVuZGVyPXRoaXMucmVnaXN0ZXIobmV3IG8uRXZlbnRFbWl0dGVyKSx0aGlzLm9uUmVuZGVyPXRoaXMuX29uUmVuZGVyLmV2ZW50LHRoaXMuX29uUmVmcmVzaFJlcXVlc3Q9dGhpcy5yZWdpc3RlcihuZXcgby5FdmVudEVtaXR0ZXIpLHRoaXMub25SZWZyZXNoUmVxdWVzdD10aGlzLl9vblJlZnJlc2hSZXF1ZXN0LmV2ZW50LHRoaXMucmVnaXN0ZXIoe2Rpc3Bvc2U6KCk9Pnt2YXIgZTtyZXR1cm4gbnVsbD09PShlPXRoaXMuX3JlbmRlcmVyKXx8dm9pZCAwPT09ZT92b2lkIDA6ZS5kaXNwb3NlKCl9fSksdGhpcy5fcmVuZGVyRGVib3VuY2VyPW5ldyBuLlJlbmRlckRlYm91bmNlcihsLndpbmRvdywoKGUsdCk9PnRoaXMuX3JlbmRlclJvd3MoZSx0KSkpLHRoaXMucmVnaXN0ZXIodGhpcy5fcmVuZGVyRGVib3VuY2VyKSx0aGlzLl9zY3JlZW5EcHJNb25pdG9yPW5ldyBoLlNjcmVlbkRwck1vbml0b3IobC53aW5kb3cpLHRoaXMuX3NjcmVlbkRwck1vbml0b3Iuc2V0TGlzdGVuZXIoKCgpPT50aGlzLmhhbmRsZURldmljZVBpeGVsUmF0aW9DaGFuZ2UoKSkpLHRoaXMucmVnaXN0ZXIodGhpcy5fc2NyZWVuRHByTW9uaXRvciksdGhpcy5yZWdpc3RlcihhLm9uUmVzaXplKCgoKT0+dGhpcy5fZnVsbFJlZnJlc2goKSkpKSx0aGlzLnJlZ2lzdGVyKGEuYnVmZmVycy5vbkJ1ZmZlckFjdGl2YXRlKCgoKT0+e3ZhciBlO3JldHVybiBudWxsPT09KGU9dGhpcy5fcmVuZGVyZXIpfHx2b2lkIDA9PT1lP3ZvaWQgMDplLmNsZWFyKCl9KSkpLHRoaXMucmVnaXN0ZXIoaS5vbk9wdGlvbkNoYW5nZSgoKCk9PnRoaXMuX2hhbmRsZU9wdGlvbnNDaGFuZ2VkKCkpKSksdGhpcy5yZWdpc3Rlcih0aGlzLl9jaGFyU2l6ZVNlcnZpY2Uub25DaGFyU2l6ZUNoYW5nZSgoKCk9PnRoaXMuaGFuZGxlQ2hhclNpemVDaGFuZ2VkKCkpKSksdGhpcy5yZWdpc3RlcihyLm9uRGVjb3JhdGlvblJlZ2lzdGVyZWQoKCgpPT50aGlzLl9mdWxsUmVmcmVzaCgpKSkpLHRoaXMucmVnaXN0ZXIoci5vbkRlY29yYXRpb25SZW1vdmVkKCgoKT0+dGhpcy5fZnVsbFJlZnJlc2goKSkpKSx0aGlzLnJlZ2lzdGVyKGkub25NdWx0aXBsZU9wdGlvbkNoYW5nZShbXCJjdXN0b21HbHlwaHNcIixcImRyYXdCb2xkVGV4dEluQnJpZ2h0Q29sb3JzXCIsXCJsZXR0ZXJTcGFjaW5nXCIsXCJsaW5lSGVpZ2h0XCIsXCJmb250RmFtaWx5XCIsXCJmb250U2l6ZVwiLFwiZm9udFdlaWdodFwiLFwiZm9udFdlaWdodEJvbGRcIixcIm1pbmltdW1Db250cmFzdFJhdGlvXCJdLCgoKT0+e3RoaXMuY2xlYXIoKSx0aGlzLmhhbmRsZVJlc2l6ZShhLmNvbHMsYS5yb3dzKSx0aGlzLl9mdWxsUmVmcmVzaCgpfSkpKSx0aGlzLnJlZ2lzdGVyKGkub25NdWx0aXBsZU9wdGlvbkNoYW5nZShbXCJjdXJzb3JCbGlua1wiLFwiY3Vyc29yU3R5bGVcIl0sKCgpPT50aGlzLnJlZnJlc2hSb3dzKGEuYnVmZmVyLnksYS5idWZmZXIueSwhMCkpKSksdGhpcy5yZWdpc3RlcigoMCxjLmFkZERpc3Bvc2FibGVEb21MaXN0ZW5lcikobC53aW5kb3csXCJyZXNpemVcIiwoKCk9PnRoaXMuaGFuZGxlRGV2aWNlUGl4ZWxSYXRpb0NoYW5nZSgpKSkpLHRoaXMucmVnaXN0ZXIoZC5vbkNoYW5nZUNvbG9ycygoKCk9PnRoaXMuX2Z1bGxSZWZyZXNoKCkpKSksXCJJbnRlcnNlY3Rpb25PYnNlcnZlclwiaW4gbC53aW5kb3cpe2NvbnN0IGU9bmV3IGwud2luZG93LkludGVyc2VjdGlvbk9ic2VydmVyKChlPT50aGlzLl9oYW5kbGVJbnRlcnNlY3Rpb25DaGFuZ2UoZVtlLmxlbmd0aC0xXSkpLHt0aHJlc2hvbGQ6MH0pO2Uub2JzZXJ2ZSh0KSx0aGlzLnJlZ2lzdGVyKHtkaXNwb3NlOigpPT5lLmRpc2Nvbm5lY3QoKX0pfX1nZXQgZGltZW5zaW9ucygpe3JldHVybiB0aGlzLl9yZW5kZXJlci5kaW1lbnNpb25zfV9oYW5kbGVJbnRlcnNlY3Rpb25DaGFuZ2UoZSl7dGhpcy5faXNQYXVzZWQ9dm9pZCAwPT09ZS5pc0ludGVyc2VjdGluZz8wPT09ZS5pbnRlcnNlY3Rpb25SYXRpbzohZS5pc0ludGVyc2VjdGluZyx0aGlzLl9pc1BhdXNlZHx8dGhpcy5fY2hhclNpemVTZXJ2aWNlLmhhc1ZhbGlkU2l6ZXx8dGhpcy5fY2hhclNpemVTZXJ2aWNlLm1lYXN1cmUoKSwhdGhpcy5faXNQYXVzZWQmJnRoaXMuX25lZWRzRnVsbFJlZnJlc2gmJih0aGlzLl9wYXVzZWRSZXNpemVUYXNrLmZsdXNoKCksdGhpcy5yZWZyZXNoUm93cygwLHRoaXMuX3Jvd0NvdW50LTEpLHRoaXMuX25lZWRzRnVsbFJlZnJlc2g9ITEpfXJlZnJlc2hSb3dzKGUsdCxpPSExKXt0aGlzLl9pc1BhdXNlZD90aGlzLl9uZWVkc0Z1bGxSZWZyZXNoPSEwOihpfHwodGhpcy5faXNOZXh0UmVuZGVyUmVkcmF3T25seT0hMSksdGhpcy5fcmVuZGVyRGVib3VuY2VyLnJlZnJlc2goZSx0LHRoaXMuX3Jvd0NvdW50KSl9X3JlbmRlclJvd3MoZSx0KXt0aGlzLl9yZW5kZXJlciYmKGU9TWF0aC5taW4oZSx0aGlzLl9yb3dDb3VudC0xKSx0PU1hdGgubWluKHQsdGhpcy5fcm93Q291bnQtMSksdGhpcy5fcmVuZGVyZXIucmVuZGVyUm93cyhlLHQpLHRoaXMuX25lZWRzU2VsZWN0aW9uUmVmcmVzaCYmKHRoaXMuX3JlbmRlcmVyLmhhbmRsZVNlbGVjdGlvbkNoYW5nZWQodGhpcy5fc2VsZWN0aW9uU3RhdGUuc3RhcnQsdGhpcy5fc2VsZWN0aW9uU3RhdGUuZW5kLHRoaXMuX3NlbGVjdGlvblN0YXRlLmNvbHVtblNlbGVjdE1vZGUpLHRoaXMuX25lZWRzU2VsZWN0aW9uUmVmcmVzaD0hMSksdGhpcy5faXNOZXh0UmVuZGVyUmVkcmF3T25seXx8dGhpcy5fb25SZW5kZXJlZFZpZXdwb3J0Q2hhbmdlLmZpcmUoe3N0YXJ0OmUsZW5kOnR9KSx0aGlzLl9vblJlbmRlci5maXJlKHtzdGFydDplLGVuZDp0fSksdGhpcy5faXNOZXh0UmVuZGVyUmVkcmF3T25seT0hMCl9cmVzaXplKGUsdCl7dGhpcy5fcm93Q291bnQ9dCx0aGlzLl9maXJlT25DYW52YXNSZXNpemUoKX1faGFuZGxlT3B0aW9uc0NoYW5nZWQoKXt0aGlzLl9yZW5kZXJlciYmKHRoaXMucmVmcmVzaFJvd3MoMCx0aGlzLl9yb3dDb3VudC0xKSx0aGlzLl9maXJlT25DYW52YXNSZXNpemUoKSl9X2ZpcmVPbkNhbnZhc1Jlc2l6ZSgpe3RoaXMuX3JlbmRlcmVyJiYodGhpcy5fcmVuZGVyZXIuZGltZW5zaW9ucy5jc3MuY2FudmFzLndpZHRoPT09dGhpcy5fY2FudmFzV2lkdGgmJnRoaXMuX3JlbmRlcmVyLmRpbWVuc2lvbnMuY3NzLmNhbnZhcy5oZWlnaHQ9PT10aGlzLl9jYW52YXNIZWlnaHR8fHRoaXMuX29uRGltZW5zaW9uc0NoYW5nZS5maXJlKHRoaXMuX3JlbmRlcmVyLmRpbWVuc2lvbnMpKX1oYXNSZW5kZXJlcigpe3JldHVybiEhdGhpcy5fcmVuZGVyZXJ9c2V0UmVuZGVyZXIoZSl7dmFyIHQ7bnVsbD09PSh0PXRoaXMuX3JlbmRlcmVyKXx8dm9pZCAwPT09dHx8dC5kaXNwb3NlKCksdGhpcy5fcmVuZGVyZXI9ZSx0aGlzLl9yZW5kZXJlci5vblJlcXVlc3RSZWRyYXcoKGU9PnRoaXMucmVmcmVzaFJvd3MoZS5zdGFydCxlLmVuZCwhMCkpKSx0aGlzLl9uZWVkc1NlbGVjdGlvblJlZnJlc2g9ITAsdGhpcy5fZnVsbFJlZnJlc2goKX1hZGRSZWZyZXNoQ2FsbGJhY2soZSl7cmV0dXJuIHRoaXMuX3JlbmRlckRlYm91bmNlci5hZGRSZWZyZXNoQ2FsbGJhY2soZSl9X2Z1bGxSZWZyZXNoKCl7dGhpcy5faXNQYXVzZWQ/dGhpcy5fbmVlZHNGdWxsUmVmcmVzaD0hMDp0aGlzLnJlZnJlc2hSb3dzKDAsdGhpcy5fcm93Q291bnQtMSl9Y2xlYXJUZXh0dXJlQXRsYXMoKXt2YXIgZSx0O3RoaXMuX3JlbmRlcmVyJiYobnVsbD09PSh0PShlPXRoaXMuX3JlbmRlcmVyKS5jbGVhclRleHR1cmVBdGxhcyl8fHZvaWQgMD09PXR8fHQuY2FsbChlKSx0aGlzLl9mdWxsUmVmcmVzaCgpKX1oYW5kbGVEZXZpY2VQaXhlbFJhdGlvQ2hhbmdlKCl7dGhpcy5fY2hhclNpemVTZXJ2aWNlLm1lYXN1cmUoKSx0aGlzLl9yZW5kZXJlciYmKHRoaXMuX3JlbmRlcmVyLmhhbmRsZURldmljZVBpeGVsUmF0aW9DaGFuZ2UoKSx0aGlzLnJlZnJlc2hSb3dzKDAsdGhpcy5fcm93Q291bnQtMSkpfWhhbmRsZVJlc2l6ZShlLHQpe3RoaXMuX3JlbmRlcmVyJiYodGhpcy5faXNQYXVzZWQ/dGhpcy5fcGF1c2VkUmVzaXplVGFzay5zZXQoKCgpPT50aGlzLl9yZW5kZXJlci5oYW5kbGVSZXNpemUoZSx0KSkpOnRoaXMuX3JlbmRlcmVyLmhhbmRsZVJlc2l6ZShlLHQpLHRoaXMuX2Z1bGxSZWZyZXNoKCkpfWhhbmRsZUNoYXJTaXplQ2hhbmdlZCgpe3ZhciBlO251bGw9PT0oZT10aGlzLl9yZW5kZXJlcil8fHZvaWQgMD09PWV8fGUuaGFuZGxlQ2hhclNpemVDaGFuZ2VkKCl9aGFuZGxlQmx1cigpe3ZhciBlO251bGw9PT0oZT10aGlzLl9yZW5kZXJlcil8fHZvaWQgMD09PWV8fGUuaGFuZGxlQmx1cigpfWhhbmRsZUZvY3VzKCl7dmFyIGU7bnVsbD09PShlPXRoaXMuX3JlbmRlcmVyKXx8dm9pZCAwPT09ZXx8ZS5oYW5kbGVGb2N1cygpfWhhbmRsZVNlbGVjdGlvbkNoYW5nZWQoZSx0LGkpe3ZhciBzO3RoaXMuX3NlbGVjdGlvblN0YXRlLnN0YXJ0PWUsdGhpcy5fc2VsZWN0aW9uU3RhdGUuZW5kPXQsdGhpcy5fc2VsZWN0aW9uU3RhdGUuY29sdW1uU2VsZWN0TW9kZT1pLG51bGw9PT0ocz10aGlzLl9yZW5kZXJlcil8fHZvaWQgMD09PXN8fHMuaGFuZGxlU2VsZWN0aW9uQ2hhbmdlZChlLHQsaSl9aGFuZGxlQ3Vyc29yTW92ZSgpe3ZhciBlO251bGw9PT0oZT10aGlzLl9yZW5kZXJlcil8fHZvaWQgMD09PWV8fGUuaGFuZGxlQ3Vyc29yTW92ZSgpfWNsZWFyKCl7dmFyIGU7bnVsbD09PShlPXRoaXMuX3JlbmRlcmVyKXx8dm9pZCAwPT09ZXx8ZS5jbGVhcigpfX07dT1zKFtyKDIsbC5JT3B0aW9uc1NlcnZpY2UpLHIoMyxkLklDaGFyU2l6ZVNlcnZpY2UpLHIoNCxsLklEZWNvcmF0aW9uU2VydmljZSkscig1LGwuSUJ1ZmZlclNlcnZpY2UpLHIoNixkLklDb3JlQnJvd3NlclNlcnZpY2UpLHIoNyxkLklUaGVtZVNlcnZpY2UpXSx1KSx0LlJlbmRlclNlcnZpY2U9dX0sOTMxMjpmdW5jdGlvbihlLHQsaSl7dmFyIHM9dGhpcyYmdGhpcy5fX2RlY29yYXRlfHxmdW5jdGlvbihlLHQsaSxzKXt2YXIgcixuPWFyZ3VtZW50cy5sZW5ndGgsbz1uPDM/dDpudWxsPT09cz9zPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxpKTpzO2lmKFwib2JqZWN0XCI9PXR5cGVvZiBSZWZsZWN0JiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBSZWZsZWN0LmRlY29yYXRlKW89UmVmbGVjdC5kZWNvcmF0ZShlLHQsaSxzKTtlbHNlIGZvcih2YXIgYT1lLmxlbmd0aC0xO2E+PTA7YS0tKShyPWVbYV0pJiYobz0objwzP3Iobyk6bj4zP3IodCxpLG8pOnIodCxpKSl8fG8pO3JldHVybiBuPjMmJm8mJk9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGksbyksb30scj10aGlzJiZ0aGlzLl9fcGFyYW18fGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGkscyl7dChpLHMsZSl9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LlNlbGVjdGlvblNlcnZpY2U9dm9pZCAwO2NvbnN0IG49aSg2MTE0KSxvPWkoNDU2KSxhPWkoNTExKSxoPWkoODQ2MCksYz1pKDQ3MjUpLGw9aSgyNTg1KSxkPWkoOTgwNiksXz1pKDk1MDQpLHU9aSg4NDQpLGY9aSg0ODQxKSx2PVN0cmluZy5mcm9tQ2hhckNvZGUoMTYwKSxnPW5ldyBSZWdFeHAodixcImdcIik7bGV0IHA9Y2xhc3MgZXh0ZW5kcyB1LkRpc3Bvc2FibGV7Y29uc3RydWN0b3IoZSx0LGkscyxyLG4sYyxsLGQpe3N1cGVyKCksdGhpcy5fZWxlbWVudD1lLHRoaXMuX3NjcmVlbkVsZW1lbnQ9dCx0aGlzLl9saW5raWZpZXI9aSx0aGlzLl9idWZmZXJTZXJ2aWNlPXMsdGhpcy5fY29yZVNlcnZpY2U9cix0aGlzLl9tb3VzZVNlcnZpY2U9bix0aGlzLl9vcHRpb25zU2VydmljZT1jLHRoaXMuX3JlbmRlclNlcnZpY2U9bCx0aGlzLl9jb3JlQnJvd3NlclNlcnZpY2U9ZCx0aGlzLl9kcmFnU2Nyb2xsQW1vdW50PTAsdGhpcy5fZW5hYmxlZD0hMCx0aGlzLl93b3JrQ2VsbD1uZXcgYS5DZWxsRGF0YSx0aGlzLl9tb3VzZURvd25UaW1lU3RhbXA9MCx0aGlzLl9vbGRIYXNTZWxlY3Rpb249ITEsdGhpcy5fb2xkU2VsZWN0aW9uU3RhcnQ9dm9pZCAwLHRoaXMuX29sZFNlbGVjdGlvbkVuZD12b2lkIDAsdGhpcy5fb25MaW51eE1vdXNlU2VsZWN0aW9uPXRoaXMucmVnaXN0ZXIobmV3IGguRXZlbnRFbWl0dGVyKSx0aGlzLm9uTGludXhNb3VzZVNlbGVjdGlvbj10aGlzLl9vbkxpbnV4TW91c2VTZWxlY3Rpb24uZXZlbnQsdGhpcy5fb25SZWRyYXdSZXF1ZXN0PXRoaXMucmVnaXN0ZXIobmV3IGguRXZlbnRFbWl0dGVyKSx0aGlzLm9uUmVxdWVzdFJlZHJhdz10aGlzLl9vblJlZHJhd1JlcXVlc3QuZXZlbnQsdGhpcy5fb25TZWxlY3Rpb25DaGFuZ2U9dGhpcy5yZWdpc3RlcihuZXcgaC5FdmVudEVtaXR0ZXIpLHRoaXMub25TZWxlY3Rpb25DaGFuZ2U9dGhpcy5fb25TZWxlY3Rpb25DaGFuZ2UuZXZlbnQsdGhpcy5fb25SZXF1ZXN0U2Nyb2xsTGluZXM9dGhpcy5yZWdpc3RlcihuZXcgaC5FdmVudEVtaXR0ZXIpLHRoaXMub25SZXF1ZXN0U2Nyb2xsTGluZXM9dGhpcy5fb25SZXF1ZXN0U2Nyb2xsTGluZXMuZXZlbnQsdGhpcy5fbW91c2VNb3ZlTGlzdGVuZXI9ZT0+dGhpcy5faGFuZGxlTW91c2VNb3ZlKGUpLHRoaXMuX21vdXNlVXBMaXN0ZW5lcj1lPT50aGlzLl9oYW5kbGVNb3VzZVVwKGUpLHRoaXMuX2NvcmVTZXJ2aWNlLm9uVXNlcklucHV0KCgoKT0+e3RoaXMuaGFzU2VsZWN0aW9uJiZ0aGlzLmNsZWFyU2VsZWN0aW9uKCl9KSksdGhpcy5fdHJpbUxpc3RlbmVyPXRoaXMuX2J1ZmZlclNlcnZpY2UuYnVmZmVyLmxpbmVzLm9uVHJpbSgoZT0+dGhpcy5faGFuZGxlVHJpbShlKSkpLHRoaXMucmVnaXN0ZXIodGhpcy5fYnVmZmVyU2VydmljZS5idWZmZXJzLm9uQnVmZmVyQWN0aXZhdGUoKGU9PnRoaXMuX2hhbmRsZUJ1ZmZlckFjdGl2YXRlKGUpKSkpLHRoaXMuZW5hYmxlKCksdGhpcy5fbW9kZWw9bmV3IG8uU2VsZWN0aW9uTW9kZWwodGhpcy5fYnVmZmVyU2VydmljZSksdGhpcy5fYWN0aXZlU2VsZWN0aW9uTW9kZT0wLHRoaXMucmVnaXN0ZXIoKDAsdS50b0Rpc3Bvc2FibGUpKCgoKT0+e3RoaXMuX3JlbW92ZU1vdXNlRG93bkxpc3RlbmVycygpfSkpKX1yZXNldCgpe3RoaXMuY2xlYXJTZWxlY3Rpb24oKX1kaXNhYmxlKCl7dGhpcy5jbGVhclNlbGVjdGlvbigpLHRoaXMuX2VuYWJsZWQ9ITF9ZW5hYmxlKCl7dGhpcy5fZW5hYmxlZD0hMH1nZXQgc2VsZWN0aW9uU3RhcnQoKXtyZXR1cm4gdGhpcy5fbW9kZWwuZmluYWxTZWxlY3Rpb25TdGFydH1nZXQgc2VsZWN0aW9uRW5kKCl7cmV0dXJuIHRoaXMuX21vZGVsLmZpbmFsU2VsZWN0aW9uRW5kfWdldCBoYXNTZWxlY3Rpb24oKXtjb25zdCBlPXRoaXMuX21vZGVsLmZpbmFsU2VsZWN0aW9uU3RhcnQsdD10aGlzLl9tb2RlbC5maW5hbFNlbGVjdGlvbkVuZDtyZXR1cm4hKCFlfHwhdHx8ZVswXT09PXRbMF0mJmVbMV09PT10WzFdKX1nZXQgc2VsZWN0aW9uVGV4dCgpe2NvbnN0IGU9dGhpcy5fbW9kZWwuZmluYWxTZWxlY3Rpb25TdGFydCx0PXRoaXMuX21vZGVsLmZpbmFsU2VsZWN0aW9uRW5kO2lmKCFlfHwhdClyZXR1cm5cIlwiO2NvbnN0IGk9dGhpcy5fYnVmZmVyU2VydmljZS5idWZmZXIscz1bXTtpZigzPT09dGhpcy5fYWN0aXZlU2VsZWN0aW9uTW9kZSl7aWYoZVswXT09PXRbMF0pcmV0dXJuXCJcIjtjb25zdCByPWVbMF08dFswXT9lWzBdOnRbMF0sbj1lWzBdPHRbMF0/dFswXTplWzBdO2ZvcihsZXQgbz1lWzFdO288PXRbMV07bysrKXtjb25zdCBlPWkudHJhbnNsYXRlQnVmZmVyTGluZVRvU3RyaW5nKG8sITAscixuKTtzLnB1c2goZSl9fWVsc2V7Y29uc3Qgcj1lWzFdPT09dFsxXT90WzBdOnZvaWQgMDtzLnB1c2goaS50cmFuc2xhdGVCdWZmZXJMaW5lVG9TdHJpbmcoZVsxXSwhMCxlWzBdLHIpKTtmb3IobGV0IHI9ZVsxXSsxO3I8PXRbMV0tMTtyKyspe2NvbnN0IGU9aS5saW5lcy5nZXQociksdD1pLnRyYW5zbGF0ZUJ1ZmZlckxpbmVUb1N0cmluZyhyLCEwKTsobnVsbD09ZT92b2lkIDA6ZS5pc1dyYXBwZWQpP3Nbcy5sZW5ndGgtMV0rPXQ6cy5wdXNoKHQpfWlmKGVbMV0hPT10WzFdKXtjb25zdCBlPWkubGluZXMuZ2V0KHRbMV0pLHI9aS50cmFuc2xhdGVCdWZmZXJMaW5lVG9TdHJpbmcodFsxXSwhMCwwLHRbMF0pO2UmJmUuaXNXcmFwcGVkP3Nbcy5sZW5ndGgtMV0rPXI6cy5wdXNoKHIpfX1yZXR1cm4gcy5tYXAoKGU9PmUucmVwbGFjZShnLFwiIFwiKSkpLmpvaW4obi5pc1dpbmRvd3M/XCJcXHJcXG5cIjpcIlxcblwiKX1jbGVhclNlbGVjdGlvbigpe3RoaXMuX21vZGVsLmNsZWFyU2VsZWN0aW9uKCksdGhpcy5fcmVtb3ZlTW91c2VEb3duTGlzdGVuZXJzKCksdGhpcy5yZWZyZXNoKCksdGhpcy5fb25TZWxlY3Rpb25DaGFuZ2UuZmlyZSgpfXJlZnJlc2goZSl7dGhpcy5fcmVmcmVzaEFuaW1hdGlvbkZyYW1lfHwodGhpcy5fcmVmcmVzaEFuaW1hdGlvbkZyYW1lPXRoaXMuX2NvcmVCcm93c2VyU2VydmljZS53aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgoKT0+dGhpcy5fcmVmcmVzaCgpKSkpLG4uaXNMaW51eCYmZSYmdGhpcy5zZWxlY3Rpb25UZXh0Lmxlbmd0aCYmdGhpcy5fb25MaW51eE1vdXNlU2VsZWN0aW9uLmZpcmUodGhpcy5zZWxlY3Rpb25UZXh0KX1fcmVmcmVzaCgpe3RoaXMuX3JlZnJlc2hBbmltYXRpb25GcmFtZT12b2lkIDAsdGhpcy5fb25SZWRyYXdSZXF1ZXN0LmZpcmUoe3N0YXJ0OnRoaXMuX21vZGVsLmZpbmFsU2VsZWN0aW9uU3RhcnQsZW5kOnRoaXMuX21vZGVsLmZpbmFsU2VsZWN0aW9uRW5kLGNvbHVtblNlbGVjdE1vZGU6Mz09PXRoaXMuX2FjdGl2ZVNlbGVjdGlvbk1vZGV9KX1faXNDbGlja0luU2VsZWN0aW9uKGUpe2NvbnN0IHQ9dGhpcy5fZ2V0TW91c2VCdWZmZXJDb29yZHMoZSksaT10aGlzLl9tb2RlbC5maW5hbFNlbGVjdGlvblN0YXJ0LHM9dGhpcy5fbW9kZWwuZmluYWxTZWxlY3Rpb25FbmQ7cmV0dXJuISEoaSYmcyYmdCkmJnRoaXMuX2FyZUNvb3Jkc0luU2VsZWN0aW9uKHQsaSxzKX1pc0NlbGxJblNlbGVjdGlvbihlLHQpe2NvbnN0IGk9dGhpcy5fbW9kZWwuZmluYWxTZWxlY3Rpb25TdGFydCxzPXRoaXMuX21vZGVsLmZpbmFsU2VsZWN0aW9uRW5kO3JldHVybiEoIWl8fCFzKSYmdGhpcy5fYXJlQ29vcmRzSW5TZWxlY3Rpb24oW2UsdF0saSxzKX1fYXJlQ29vcmRzSW5TZWxlY3Rpb24oZSx0LGkpe3JldHVybiBlWzFdPnRbMV0mJmVbMV08aVsxXXx8dFsxXT09PWlbMV0mJmVbMV09PT10WzFdJiZlWzBdPj10WzBdJiZlWzBdPGlbMF18fHRbMV08aVsxXSYmZVsxXT09PWlbMV0mJmVbMF08aVswXXx8dFsxXTxpWzFdJiZlWzFdPT09dFsxXSYmZVswXT49dFswXX1fc2VsZWN0V29yZEF0Q3Vyc29yKGUsdCl7dmFyIGkscztjb25zdCByPW51bGw9PT0ocz1udWxsPT09KGk9dGhpcy5fbGlua2lmaWVyLmN1cnJlbnRMaW5rKXx8dm9pZCAwPT09aT92b2lkIDA6aS5saW5rKXx8dm9pZCAwPT09cz92b2lkIDA6cy5yYW5nZTtpZihyKXJldHVybiB0aGlzLl9tb2RlbC5zZWxlY3Rpb25TdGFydD1bci5zdGFydC54LTEsci5zdGFydC55LTFdLHRoaXMuX21vZGVsLnNlbGVjdGlvblN0YXJ0TGVuZ3RoPSgwLGYuZ2V0UmFuZ2VMZW5ndGgpKHIsdGhpcy5fYnVmZmVyU2VydmljZS5jb2xzKSx0aGlzLl9tb2RlbC5zZWxlY3Rpb25FbmQ9dm9pZCAwLCEwO2NvbnN0IG49dGhpcy5fZ2V0TW91c2VCdWZmZXJDb29yZHMoZSk7cmV0dXJuISFuJiYodGhpcy5fc2VsZWN0V29yZEF0KG4sdCksdGhpcy5fbW9kZWwuc2VsZWN0aW9uRW5kPXZvaWQgMCwhMCl9c2VsZWN0QWxsKCl7dGhpcy5fbW9kZWwuaXNTZWxlY3RBbGxBY3RpdmU9ITAsdGhpcy5yZWZyZXNoKCksdGhpcy5fb25TZWxlY3Rpb25DaGFuZ2UuZmlyZSgpfXNlbGVjdExpbmVzKGUsdCl7dGhpcy5fbW9kZWwuY2xlYXJTZWxlY3Rpb24oKSxlPU1hdGgubWF4KGUsMCksdD1NYXRoLm1pbih0LHRoaXMuX2J1ZmZlclNlcnZpY2UuYnVmZmVyLmxpbmVzLmxlbmd0aC0xKSx0aGlzLl9tb2RlbC5zZWxlY3Rpb25TdGFydD1bMCxlXSx0aGlzLl9tb2RlbC5zZWxlY3Rpb25FbmQ9W3RoaXMuX2J1ZmZlclNlcnZpY2UuY29scyx0XSx0aGlzLnJlZnJlc2goKSx0aGlzLl9vblNlbGVjdGlvbkNoYW5nZS5maXJlKCl9X2hhbmRsZVRyaW0oZSl7dGhpcy5fbW9kZWwuaGFuZGxlVHJpbShlKSYmdGhpcy5yZWZyZXNoKCl9X2dldE1vdXNlQnVmZmVyQ29vcmRzKGUpe2NvbnN0IHQ9dGhpcy5fbW91c2VTZXJ2aWNlLmdldENvb3JkcyhlLHRoaXMuX3NjcmVlbkVsZW1lbnQsdGhpcy5fYnVmZmVyU2VydmljZS5jb2xzLHRoaXMuX2J1ZmZlclNlcnZpY2Uucm93cywhMCk7aWYodClyZXR1cm4gdFswXS0tLHRbMV0tLSx0WzFdKz10aGlzLl9idWZmZXJTZXJ2aWNlLmJ1ZmZlci55ZGlzcCx0fV9nZXRNb3VzZUV2ZW50U2Nyb2xsQW1vdW50KGUpe2xldCB0PSgwLGQuZ2V0Q29vcmRzUmVsYXRpdmVUb0VsZW1lbnQpKHRoaXMuX2NvcmVCcm93c2VyU2VydmljZS53aW5kb3csZSx0aGlzLl9zY3JlZW5FbGVtZW50KVsxXTtjb25zdCBpPXRoaXMuX3JlbmRlclNlcnZpY2UuZGltZW5zaW9ucy5jc3MuY2FudmFzLmhlaWdodDtyZXR1cm4gdD49MCYmdDw9aT8wOih0PmkmJih0LT1pKSx0PU1hdGgubWluKE1hdGgubWF4KHQsLTUwKSw1MCksdC89NTAsdC9NYXRoLmFicyh0KStNYXRoLnJvdW5kKDE0KnQpKX1zaG91bGRGb3JjZVNlbGVjdGlvbihlKXtyZXR1cm4gbi5pc01hYz9lLmFsdEtleSYmdGhpcy5fb3B0aW9uc1NlcnZpY2UucmF3T3B0aW9ucy5tYWNPcHRpb25DbGlja0ZvcmNlc1NlbGVjdGlvbjplLnNoaWZ0S2V5fWhhbmRsZU1vdXNlRG93bihlKXtpZih0aGlzLl9tb3VzZURvd25UaW1lU3RhbXA9ZS50aW1lU3RhbXAsKDIhPT1lLmJ1dHRvbnx8IXRoaXMuaGFzU2VsZWN0aW9uKSYmMD09PWUuYnV0dG9uKXtpZighdGhpcy5fZW5hYmxlZCl7aWYoIXRoaXMuc2hvdWxkRm9yY2VTZWxlY3Rpb24oZSkpcmV0dXJuO2Uuc3RvcFByb3BhZ2F0aW9uKCl9ZS5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuX2RyYWdTY3JvbGxBbW91bnQ9MCx0aGlzLl9lbmFibGVkJiZlLnNoaWZ0S2V5P3RoaXMuX2hhbmRsZUluY3JlbWVudGFsQ2xpY2soZSk6MT09PWUuZGV0YWlsP3RoaXMuX2hhbmRsZVNpbmdsZUNsaWNrKGUpOjI9PT1lLmRldGFpbD90aGlzLl9oYW5kbGVEb3VibGVDbGljayhlKTozPT09ZS5kZXRhaWwmJnRoaXMuX2hhbmRsZVRyaXBsZUNsaWNrKGUpLHRoaXMuX2FkZE1vdXNlRG93bkxpc3RlbmVycygpLHRoaXMucmVmcmVzaCghMCl9fV9hZGRNb3VzZURvd25MaXN0ZW5lcnMoKXt0aGlzLl9zY3JlZW5FbGVtZW50Lm93bmVyRG9jdW1lbnQmJih0aGlzLl9zY3JlZW5FbGVtZW50Lm93bmVyRG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlbW92ZVwiLHRoaXMuX21vdXNlTW92ZUxpc3RlbmVyKSx0aGlzLl9zY3JlZW5FbGVtZW50Lm93bmVyRG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNldXBcIix0aGlzLl9tb3VzZVVwTGlzdGVuZXIpKSx0aGlzLl9kcmFnU2Nyb2xsSW50ZXJ2YWxUaW1lcj10aGlzLl9jb3JlQnJvd3NlclNlcnZpY2Uud2luZG93LnNldEludGVydmFsKCgoKT0+dGhpcy5fZHJhZ1Njcm9sbCgpKSw1MCl9X3JlbW92ZU1vdXNlRG93bkxpc3RlbmVycygpe3RoaXMuX3NjcmVlbkVsZW1lbnQub3duZXJEb2N1bWVudCYmKHRoaXMuX3NjcmVlbkVsZW1lbnQub3duZXJEb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwibW91c2Vtb3ZlXCIsdGhpcy5fbW91c2VNb3ZlTGlzdGVuZXIpLHRoaXMuX3NjcmVlbkVsZW1lbnQub3duZXJEb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwibW91c2V1cFwiLHRoaXMuX21vdXNlVXBMaXN0ZW5lcikpLHRoaXMuX2NvcmVCcm93c2VyU2VydmljZS53aW5kb3cuY2xlYXJJbnRlcnZhbCh0aGlzLl9kcmFnU2Nyb2xsSW50ZXJ2YWxUaW1lciksdGhpcy5fZHJhZ1Njcm9sbEludGVydmFsVGltZXI9dm9pZCAwfV9oYW5kbGVJbmNyZW1lbnRhbENsaWNrKGUpe3RoaXMuX21vZGVsLnNlbGVjdGlvblN0YXJ0JiYodGhpcy5fbW9kZWwuc2VsZWN0aW9uRW5kPXRoaXMuX2dldE1vdXNlQnVmZmVyQ29vcmRzKGUpKX1faGFuZGxlU2luZ2xlQ2xpY2soZSl7aWYodGhpcy5fbW9kZWwuc2VsZWN0aW9uU3RhcnRMZW5ndGg9MCx0aGlzLl9tb2RlbC5pc1NlbGVjdEFsbEFjdGl2ZT0hMSx0aGlzLl9hY3RpdmVTZWxlY3Rpb25Nb2RlPXRoaXMuc2hvdWxkQ29sdW1uU2VsZWN0KGUpPzM6MCx0aGlzLl9tb2RlbC5zZWxlY3Rpb25TdGFydD10aGlzLl9nZXRNb3VzZUJ1ZmZlckNvb3JkcyhlKSwhdGhpcy5fbW9kZWwuc2VsZWN0aW9uU3RhcnQpcmV0dXJuO3RoaXMuX21vZGVsLnNlbGVjdGlvbkVuZD12b2lkIDA7Y29uc3QgdD10aGlzLl9idWZmZXJTZXJ2aWNlLmJ1ZmZlci5saW5lcy5nZXQodGhpcy5fbW9kZWwuc2VsZWN0aW9uU3RhcnRbMV0pO3QmJnQubGVuZ3RoIT09dGhpcy5fbW9kZWwuc2VsZWN0aW9uU3RhcnRbMF0mJjA9PT10Lmhhc1dpZHRoKHRoaXMuX21vZGVsLnNlbGVjdGlvblN0YXJ0WzBdKSYmdGhpcy5fbW9kZWwuc2VsZWN0aW9uU3RhcnRbMF0rK31faGFuZGxlRG91YmxlQ2xpY2soZSl7dGhpcy5fc2VsZWN0V29yZEF0Q3Vyc29yKGUsITApJiYodGhpcy5fYWN0aXZlU2VsZWN0aW9uTW9kZT0xKX1faGFuZGxlVHJpcGxlQ2xpY2soZSl7Y29uc3QgdD10aGlzLl9nZXRNb3VzZUJ1ZmZlckNvb3JkcyhlKTt0JiYodGhpcy5fYWN0aXZlU2VsZWN0aW9uTW9kZT0yLHRoaXMuX3NlbGVjdExpbmVBdCh0WzFdKSl9c2hvdWxkQ29sdW1uU2VsZWN0KGUpe3JldHVybiBlLmFsdEtleSYmIShuLmlzTWFjJiZ0aGlzLl9vcHRpb25zU2VydmljZS5yYXdPcHRpb25zLm1hY09wdGlvbkNsaWNrRm9yY2VzU2VsZWN0aW9uKX1faGFuZGxlTW91c2VNb3ZlKGUpe2lmKGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCksIXRoaXMuX21vZGVsLnNlbGVjdGlvblN0YXJ0KXJldHVybjtjb25zdCB0PXRoaXMuX21vZGVsLnNlbGVjdGlvbkVuZD9bdGhpcy5fbW9kZWwuc2VsZWN0aW9uRW5kWzBdLHRoaXMuX21vZGVsLnNlbGVjdGlvbkVuZFsxXV06bnVsbDtpZih0aGlzLl9tb2RlbC5zZWxlY3Rpb25FbmQ9dGhpcy5fZ2V0TW91c2VCdWZmZXJDb29yZHMoZSksIXRoaXMuX21vZGVsLnNlbGVjdGlvbkVuZClyZXR1cm4gdm9pZCB0aGlzLnJlZnJlc2goITApOzI9PT10aGlzLl9hY3RpdmVTZWxlY3Rpb25Nb2RlP3RoaXMuX21vZGVsLnNlbGVjdGlvbkVuZFsxXTx0aGlzLl9tb2RlbC5zZWxlY3Rpb25TdGFydFsxXT90aGlzLl9tb2RlbC5zZWxlY3Rpb25FbmRbMF09MDp0aGlzLl9tb2RlbC5zZWxlY3Rpb25FbmRbMF09dGhpcy5fYnVmZmVyU2VydmljZS5jb2xzOjE9PT10aGlzLl9hY3RpdmVTZWxlY3Rpb25Nb2RlJiZ0aGlzLl9zZWxlY3RUb1dvcmRBdCh0aGlzLl9tb2RlbC5zZWxlY3Rpb25FbmQpLHRoaXMuX2RyYWdTY3JvbGxBbW91bnQ9dGhpcy5fZ2V0TW91c2VFdmVudFNjcm9sbEFtb3VudChlKSwzIT09dGhpcy5fYWN0aXZlU2VsZWN0aW9uTW9kZSYmKHRoaXMuX2RyYWdTY3JvbGxBbW91bnQ+MD90aGlzLl9tb2RlbC5zZWxlY3Rpb25FbmRbMF09dGhpcy5fYnVmZmVyU2VydmljZS5jb2xzOnRoaXMuX2RyYWdTY3JvbGxBbW91bnQ8MCYmKHRoaXMuX21vZGVsLnNlbGVjdGlvbkVuZFswXT0wKSk7Y29uc3QgaT10aGlzLl9idWZmZXJTZXJ2aWNlLmJ1ZmZlcjtpZih0aGlzLl9tb2RlbC5zZWxlY3Rpb25FbmRbMV08aS5saW5lcy5sZW5ndGgpe2NvbnN0IGU9aS5saW5lcy5nZXQodGhpcy5fbW9kZWwuc2VsZWN0aW9uRW5kWzFdKTtlJiYwPT09ZS5oYXNXaWR0aCh0aGlzLl9tb2RlbC5zZWxlY3Rpb25FbmRbMF0pJiZ0aGlzLl9tb2RlbC5zZWxlY3Rpb25FbmRbMF0rK310JiZ0WzBdPT09dGhpcy5fbW9kZWwuc2VsZWN0aW9uRW5kWzBdJiZ0WzFdPT09dGhpcy5fbW9kZWwuc2VsZWN0aW9uRW5kWzFdfHx0aGlzLnJlZnJlc2goITApfV9kcmFnU2Nyb2xsKCl7aWYodGhpcy5fbW9kZWwuc2VsZWN0aW9uRW5kJiZ0aGlzLl9tb2RlbC5zZWxlY3Rpb25TdGFydCYmdGhpcy5fZHJhZ1Njcm9sbEFtb3VudCl7dGhpcy5fb25SZXF1ZXN0U2Nyb2xsTGluZXMuZmlyZSh7YW1vdW50OnRoaXMuX2RyYWdTY3JvbGxBbW91bnQsc3VwcHJlc3NTY3JvbGxFdmVudDohMX0pO2NvbnN0IGU9dGhpcy5fYnVmZmVyU2VydmljZS5idWZmZXI7dGhpcy5fZHJhZ1Njcm9sbEFtb3VudD4wPygzIT09dGhpcy5fYWN0aXZlU2VsZWN0aW9uTW9kZSYmKHRoaXMuX21vZGVsLnNlbGVjdGlvbkVuZFswXT10aGlzLl9idWZmZXJTZXJ2aWNlLmNvbHMpLHRoaXMuX21vZGVsLnNlbGVjdGlvbkVuZFsxXT1NYXRoLm1pbihlLnlkaXNwK3RoaXMuX2J1ZmZlclNlcnZpY2Uucm93cyxlLmxpbmVzLmxlbmd0aC0xKSk6KDMhPT10aGlzLl9hY3RpdmVTZWxlY3Rpb25Nb2RlJiYodGhpcy5fbW9kZWwuc2VsZWN0aW9uRW5kWzBdPTApLHRoaXMuX21vZGVsLnNlbGVjdGlvbkVuZFsxXT1lLnlkaXNwKSx0aGlzLnJlZnJlc2goKX19X2hhbmRsZU1vdXNlVXAoZSl7Y29uc3QgdD1lLnRpbWVTdGFtcC10aGlzLl9tb3VzZURvd25UaW1lU3RhbXA7aWYodGhpcy5fcmVtb3ZlTW91c2VEb3duTGlzdGVuZXJzKCksdGhpcy5zZWxlY3Rpb25UZXh0Lmxlbmd0aDw9MSYmdDw1MDAmJmUuYWx0S2V5JiZ0aGlzLl9vcHRpb25zU2VydmljZS5yYXdPcHRpb25zLmFsdENsaWNrTW92ZXNDdXJzb3Ipe2lmKHRoaXMuX2J1ZmZlclNlcnZpY2UuYnVmZmVyLnliYXNlPT09dGhpcy5fYnVmZmVyU2VydmljZS5idWZmZXIueWRpc3Ape2NvbnN0IHQ9dGhpcy5fbW91c2VTZXJ2aWNlLmdldENvb3JkcyhlLHRoaXMuX2VsZW1lbnQsdGhpcy5fYnVmZmVyU2VydmljZS5jb2xzLHRoaXMuX2J1ZmZlclNlcnZpY2Uucm93cywhMSk7aWYodCYmdm9pZCAwIT09dFswXSYmdm9pZCAwIT09dFsxXSl7Y29uc3QgZT0oMCxfLm1vdmVUb0NlbGxTZXF1ZW5jZSkodFswXS0xLHRbMV0tMSx0aGlzLl9idWZmZXJTZXJ2aWNlLHRoaXMuX2NvcmVTZXJ2aWNlLmRlY1ByaXZhdGVNb2Rlcy5hcHBsaWNhdGlvbkN1cnNvcktleXMpO3RoaXMuX2NvcmVTZXJ2aWNlLnRyaWdnZXJEYXRhRXZlbnQoZSwhMCl9fX1lbHNlIHRoaXMuX2ZpcmVFdmVudElmU2VsZWN0aW9uQ2hhbmdlZCgpfV9maXJlRXZlbnRJZlNlbGVjdGlvbkNoYW5nZWQoKXtjb25zdCBlPXRoaXMuX21vZGVsLmZpbmFsU2VsZWN0aW9uU3RhcnQsdD10aGlzLl9tb2RlbC5maW5hbFNlbGVjdGlvbkVuZCxpPSEoIWV8fCF0fHxlWzBdPT09dFswXSYmZVsxXT09PXRbMV0pO2k/ZSYmdCYmKHRoaXMuX29sZFNlbGVjdGlvblN0YXJ0JiZ0aGlzLl9vbGRTZWxlY3Rpb25FbmQmJmVbMF09PT10aGlzLl9vbGRTZWxlY3Rpb25TdGFydFswXSYmZVsxXT09PXRoaXMuX29sZFNlbGVjdGlvblN0YXJ0WzFdJiZ0WzBdPT09dGhpcy5fb2xkU2VsZWN0aW9uRW5kWzBdJiZ0WzFdPT09dGhpcy5fb2xkU2VsZWN0aW9uRW5kWzFdfHx0aGlzLl9maXJlT25TZWxlY3Rpb25DaGFuZ2UoZSx0LGkpKTp0aGlzLl9vbGRIYXNTZWxlY3Rpb24mJnRoaXMuX2ZpcmVPblNlbGVjdGlvbkNoYW5nZShlLHQsaSl9X2ZpcmVPblNlbGVjdGlvbkNoYW5nZShlLHQsaSl7dGhpcy5fb2xkU2VsZWN0aW9uU3RhcnQ9ZSx0aGlzLl9vbGRTZWxlY3Rpb25FbmQ9dCx0aGlzLl9vbGRIYXNTZWxlY3Rpb249aSx0aGlzLl9vblNlbGVjdGlvbkNoYW5nZS5maXJlKCl9X2hhbmRsZUJ1ZmZlckFjdGl2YXRlKGUpe3RoaXMuY2xlYXJTZWxlY3Rpb24oKSx0aGlzLl90cmltTGlzdGVuZXIuZGlzcG9zZSgpLHRoaXMuX3RyaW1MaXN0ZW5lcj1lLmFjdGl2ZUJ1ZmZlci5saW5lcy5vblRyaW0oKGU9PnRoaXMuX2hhbmRsZVRyaW0oZSkpKX1fY29udmVydFZpZXdwb3J0Q29sVG9DaGFyYWN0ZXJJbmRleChlLHQpe2xldCBpPXQ7Zm9yKGxldCBzPTA7dD49cztzKyspe2NvbnN0IHI9ZS5sb2FkQ2VsbChzLHRoaXMuX3dvcmtDZWxsKS5nZXRDaGFycygpLmxlbmd0aDswPT09dGhpcy5fd29ya0NlbGwuZ2V0V2lkdGgoKT9pLS06cj4xJiZ0IT09cyYmKGkrPXItMSl9cmV0dXJuIGl9c2V0U2VsZWN0aW9uKGUsdCxpKXt0aGlzLl9tb2RlbC5jbGVhclNlbGVjdGlvbigpLHRoaXMuX3JlbW92ZU1vdXNlRG93bkxpc3RlbmVycygpLHRoaXMuX21vZGVsLnNlbGVjdGlvblN0YXJ0PVtlLHRdLHRoaXMuX21vZGVsLnNlbGVjdGlvblN0YXJ0TGVuZ3RoPWksdGhpcy5yZWZyZXNoKCksdGhpcy5fZmlyZUV2ZW50SWZTZWxlY3Rpb25DaGFuZ2VkKCl9cmlnaHRDbGlja1NlbGVjdChlKXt0aGlzLl9pc0NsaWNrSW5TZWxlY3Rpb24oZSl8fCh0aGlzLl9zZWxlY3RXb3JkQXRDdXJzb3IoZSwhMSkmJnRoaXMucmVmcmVzaCghMCksdGhpcy5fZmlyZUV2ZW50SWZTZWxlY3Rpb25DaGFuZ2VkKCkpfV9nZXRXb3JkQXQoZSx0LGk9ITAscz0hMCl7aWYoZVswXT49dGhpcy5fYnVmZmVyU2VydmljZS5jb2xzKXJldHVybjtjb25zdCByPXRoaXMuX2J1ZmZlclNlcnZpY2UuYnVmZmVyLG49ci5saW5lcy5nZXQoZVsxXSk7aWYoIW4pcmV0dXJuO2NvbnN0IG89ci50cmFuc2xhdGVCdWZmZXJMaW5lVG9TdHJpbmcoZVsxXSwhMSk7bGV0IGE9dGhpcy5fY29udmVydFZpZXdwb3J0Q29sVG9DaGFyYWN0ZXJJbmRleChuLGVbMF0pLGg9YTtjb25zdCBjPWVbMF0tYTtsZXQgbD0wLGQ9MCxfPTAsdT0wO2lmKFwiIFwiPT09by5jaGFyQXQoYSkpe2Zvcig7YT4wJiZcIiBcIj09PW8uY2hhckF0KGEtMSk7KWEtLTtmb3IoO2g8by5sZW5ndGgmJlwiIFwiPT09by5jaGFyQXQoaCsxKTspaCsrfWVsc2V7bGV0IHQ9ZVswXSxpPWVbMF07MD09PW4uZ2V0V2lkdGgodCkmJihsKyssdC0tKSwyPT09bi5nZXRXaWR0aChpKSYmKGQrKyxpKyspO2NvbnN0IHM9bi5nZXRTdHJpbmcoaSkubGVuZ3RoO2ZvcihzPjEmJih1Kz1zLTEsaCs9cy0xKTt0PjAmJmE+MCYmIXRoaXMuX2lzQ2hhcldvcmRTZXBhcmF0b3Iobi5sb2FkQ2VsbCh0LTEsdGhpcy5fd29ya0NlbGwpKTspe24ubG9hZENlbGwodC0xLHRoaXMuX3dvcmtDZWxsKTtjb25zdCBlPXRoaXMuX3dvcmtDZWxsLmdldENoYXJzKCkubGVuZ3RoOzA9PT10aGlzLl93b3JrQ2VsbC5nZXRXaWR0aCgpPyhsKyssdC0tKTplPjEmJihfKz1lLTEsYS09ZS0xKSxhLS0sdC0tfWZvcig7aTxuLmxlbmd0aCYmaCsxPG8ubGVuZ3RoJiYhdGhpcy5faXNDaGFyV29yZFNlcGFyYXRvcihuLmxvYWRDZWxsKGkrMSx0aGlzLl93b3JrQ2VsbCkpOyl7bi5sb2FkQ2VsbChpKzEsdGhpcy5fd29ya0NlbGwpO2NvbnN0IGU9dGhpcy5fd29ya0NlbGwuZ2V0Q2hhcnMoKS5sZW5ndGg7Mj09PXRoaXMuX3dvcmtDZWxsLmdldFdpZHRoKCk/KGQrKyxpKyspOmU+MSYmKHUrPWUtMSxoKz1lLTEpLGgrKyxpKyt9fWgrKztsZXQgZj1hK2MtbCtfLHY9TWF0aC5taW4odGhpcy5fYnVmZmVyU2VydmljZS5jb2xzLGgtYStsK2QtXy11KTtpZih0fHxcIlwiIT09by5zbGljZShhLGgpLnRyaW0oKSl7aWYoaSYmMD09PWYmJjMyIT09bi5nZXRDb2RlUG9pbnQoMCkpe2NvbnN0IHQ9ci5saW5lcy5nZXQoZVsxXS0xKTtpZih0JiZuLmlzV3JhcHBlZCYmMzIhPT10LmdldENvZGVQb2ludCh0aGlzLl9idWZmZXJTZXJ2aWNlLmNvbHMtMSkpe2NvbnN0IHQ9dGhpcy5fZ2V0V29yZEF0KFt0aGlzLl9idWZmZXJTZXJ2aWNlLmNvbHMtMSxlWzFdLTFdLCExLCEwLCExKTtpZih0KXtjb25zdCBlPXRoaXMuX2J1ZmZlclNlcnZpY2UuY29scy10LnN0YXJ0O2YtPWUsdis9ZX19fWlmKHMmJmYrdj09PXRoaXMuX2J1ZmZlclNlcnZpY2UuY29scyYmMzIhPT1uLmdldENvZGVQb2ludCh0aGlzLl9idWZmZXJTZXJ2aWNlLmNvbHMtMSkpe2NvbnN0IHQ9ci5saW5lcy5nZXQoZVsxXSsxKTtpZigobnVsbD09dD92b2lkIDA6dC5pc1dyYXBwZWQpJiYzMiE9PXQuZ2V0Q29kZVBvaW50KDApKXtjb25zdCB0PXRoaXMuX2dldFdvcmRBdChbMCxlWzFdKzFdLCExLCExLCEwKTt0JiYodis9dC5sZW5ndGgpfX1yZXR1cm57c3RhcnQ6ZixsZW5ndGg6dn19fV9zZWxlY3RXb3JkQXQoZSx0KXtjb25zdCBpPXRoaXMuX2dldFdvcmRBdChlLHQpO2lmKGkpe2Zvcig7aS5zdGFydDwwOylpLnN0YXJ0Kz10aGlzLl9idWZmZXJTZXJ2aWNlLmNvbHMsZVsxXS0tO3RoaXMuX21vZGVsLnNlbGVjdGlvblN0YXJ0PVtpLnN0YXJ0LGVbMV1dLHRoaXMuX21vZGVsLnNlbGVjdGlvblN0YXJ0TGVuZ3RoPWkubGVuZ3RofX1fc2VsZWN0VG9Xb3JkQXQoZSl7Y29uc3QgdD10aGlzLl9nZXRXb3JkQXQoZSwhMCk7aWYodCl7bGV0IGk9ZVsxXTtmb3IoO3Quc3RhcnQ8MDspdC5zdGFydCs9dGhpcy5fYnVmZmVyU2VydmljZS5jb2xzLGktLTtpZighdGhpcy5fbW9kZWwuYXJlU2VsZWN0aW9uVmFsdWVzUmV2ZXJzZWQoKSlmb3IoO3Quc3RhcnQrdC5sZW5ndGg+dGhpcy5fYnVmZmVyU2VydmljZS5jb2xzOyl0Lmxlbmd0aC09dGhpcy5fYnVmZmVyU2VydmljZS5jb2xzLGkrKzt0aGlzLl9tb2RlbC5zZWxlY3Rpb25FbmQ9W3RoaXMuX21vZGVsLmFyZVNlbGVjdGlvblZhbHVlc1JldmVyc2VkKCk/dC5zdGFydDp0LnN0YXJ0K3QubGVuZ3RoLGldfX1faXNDaGFyV29yZFNlcGFyYXRvcihlKXtyZXR1cm4gMCE9PWUuZ2V0V2lkdGgoKSYmdGhpcy5fb3B0aW9uc1NlcnZpY2UucmF3T3B0aW9ucy53b3JkU2VwYXJhdG9yLmluZGV4T2YoZS5nZXRDaGFycygpKT49MH1fc2VsZWN0TGluZUF0KGUpe2NvbnN0IHQ9dGhpcy5fYnVmZmVyU2VydmljZS5idWZmZXIuZ2V0V3JhcHBlZFJhbmdlRm9yTGluZShlKSxpPXtzdGFydDp7eDowLHk6dC5maXJzdH0sZW5kOnt4OnRoaXMuX2J1ZmZlclNlcnZpY2UuY29scy0xLHk6dC5sYXN0fX07dGhpcy5fbW9kZWwuc2VsZWN0aW9uU3RhcnQ9WzAsdC5maXJzdF0sdGhpcy5fbW9kZWwuc2VsZWN0aW9uRW5kPXZvaWQgMCx0aGlzLl9tb2RlbC5zZWxlY3Rpb25TdGFydExlbmd0aD0oMCxmLmdldFJhbmdlTGVuZ3RoKShpLHRoaXMuX2J1ZmZlclNlcnZpY2UuY29scyl9fTtwPXMoW3IoMyxsLklCdWZmZXJTZXJ2aWNlKSxyKDQsbC5JQ29yZVNlcnZpY2UpLHIoNSxjLklNb3VzZVNlcnZpY2UpLHIoNixsLklPcHRpb25zU2VydmljZSkscig3LGMuSVJlbmRlclNlcnZpY2UpLHIoOCxjLklDb3JlQnJvd3NlclNlcnZpY2UpXSxwKSx0LlNlbGVjdGlvblNlcnZpY2U9cH0sNDcyNTooZSx0LGkpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5JVGhlbWVTZXJ2aWNlPXQuSUNoYXJhY3RlckpvaW5lclNlcnZpY2U9dC5JU2VsZWN0aW9uU2VydmljZT10LklSZW5kZXJTZXJ2aWNlPXQuSU1vdXNlU2VydmljZT10LklDb3JlQnJvd3NlclNlcnZpY2U9dC5JQ2hhclNpemVTZXJ2aWNlPXZvaWQgMDtjb25zdCBzPWkoODM0Myk7dC5JQ2hhclNpemVTZXJ2aWNlPSgwLHMuY3JlYXRlRGVjb3JhdG9yKShcIkNoYXJTaXplU2VydmljZVwiKSx0LklDb3JlQnJvd3NlclNlcnZpY2U9KDAscy5jcmVhdGVEZWNvcmF0b3IpKFwiQ29yZUJyb3dzZXJTZXJ2aWNlXCIpLHQuSU1vdXNlU2VydmljZT0oMCxzLmNyZWF0ZURlY29yYXRvcikoXCJNb3VzZVNlcnZpY2VcIiksdC5JUmVuZGVyU2VydmljZT0oMCxzLmNyZWF0ZURlY29yYXRvcikoXCJSZW5kZXJTZXJ2aWNlXCIpLHQuSVNlbGVjdGlvblNlcnZpY2U9KDAscy5jcmVhdGVEZWNvcmF0b3IpKFwiU2VsZWN0aW9uU2VydmljZVwiKSx0LklDaGFyYWN0ZXJKb2luZXJTZXJ2aWNlPSgwLHMuY3JlYXRlRGVjb3JhdG9yKShcIkNoYXJhY3RlckpvaW5lclNlcnZpY2VcIiksdC5JVGhlbWVTZXJ2aWNlPSgwLHMuY3JlYXRlRGVjb3JhdG9yKShcIlRoZW1lU2VydmljZVwiKX0sNjczMTpmdW5jdGlvbihlLHQsaSl7dmFyIHM9dGhpcyYmdGhpcy5fX2RlY29yYXRlfHxmdW5jdGlvbihlLHQsaSxzKXt2YXIgcixuPWFyZ3VtZW50cy5sZW5ndGgsbz1uPDM/dDpudWxsPT09cz9zPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxpKTpzO2lmKFwib2JqZWN0XCI9PXR5cGVvZiBSZWZsZWN0JiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBSZWZsZWN0LmRlY29yYXRlKW89UmVmbGVjdC5kZWNvcmF0ZShlLHQsaSxzKTtlbHNlIGZvcih2YXIgYT1lLmxlbmd0aC0xO2E+PTA7YS0tKShyPWVbYV0pJiYobz0objwzP3Iobyk6bj4zP3IodCxpLG8pOnIodCxpKSl8fG8pO3JldHVybiBuPjMmJm8mJk9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGksbyksb30scj10aGlzJiZ0aGlzLl9fcGFyYW18fGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGkscyl7dChpLHMsZSl9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LlRoZW1lU2VydmljZT10LkRFRkFVTFRfQU5TSV9DT0xPUlM9dm9pZCAwO2NvbnN0IG49aSg3MjM5KSxvPWkoODA1NSksYT1pKDg0NjApLGg9aSg4NDQpLGM9aSgyNTg1KSxsPW8uY3NzLnRvQ29sb3IoXCIjZmZmZmZmXCIpLGQ9by5jc3MudG9Db2xvcihcIiMwMDAwMDBcIiksXz1vLmNzcy50b0NvbG9yKFwiI2ZmZmZmZlwiKSx1PW8uY3NzLnRvQ29sb3IoXCIjMDAwMDAwXCIpLGY9e2NzczpcInJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zKVwiLHJnYmE6NDI5NDk2NzExN307dC5ERUZBVUxUX0FOU0lfQ09MT1JTPU9iamVjdC5mcmVlemUoKCgpPT57Y29uc3QgZT1bby5jc3MudG9Db2xvcihcIiMyZTM0MzZcIiksby5jc3MudG9Db2xvcihcIiNjYzAwMDBcIiksby5jc3MudG9Db2xvcihcIiM0ZTlhMDZcIiksby5jc3MudG9Db2xvcihcIiNjNGEwMDBcIiksby5jc3MudG9Db2xvcihcIiMzNDY1YTRcIiksby5jc3MudG9Db2xvcihcIiM3NTUwN2JcIiksby5jc3MudG9Db2xvcihcIiMwNjk4OWFcIiksby5jc3MudG9Db2xvcihcIiNkM2Q3Y2ZcIiksby5jc3MudG9Db2xvcihcIiM1NTU3NTNcIiksby5jc3MudG9Db2xvcihcIiNlZjI5MjlcIiksby5jc3MudG9Db2xvcihcIiM4YWUyMzRcIiksby5jc3MudG9Db2xvcihcIiNmY2U5NGZcIiksby5jc3MudG9Db2xvcihcIiM3MjlmY2ZcIiksby5jc3MudG9Db2xvcihcIiNhZDdmYThcIiksby5jc3MudG9Db2xvcihcIiMzNGUyZTJcIiksby5jc3MudG9Db2xvcihcIiNlZWVlZWNcIildLHQ9WzAsOTUsMTM1LDE3NSwyMTUsMjU1XTtmb3IobGV0IGk9MDtpPDIxNjtpKyspe2NvbnN0IHM9dFtpLzM2JTZ8MF0scj10W2kvNiU2fDBdLG49dFtpJTZdO2UucHVzaCh7Y3NzOm8uY2hhbm5lbHMudG9Dc3MocyxyLG4pLHJnYmE6by5jaGFubmVscy50b1JnYmEocyxyLG4pfSl9Zm9yKGxldCB0PTA7dDwyNDt0Kyspe2NvbnN0IGk9OCsxMCp0O2UucHVzaCh7Y3NzOm8uY2hhbm5lbHMudG9Dc3MoaSxpLGkpLHJnYmE6by5jaGFubmVscy50b1JnYmEoaSxpLGkpfSl9cmV0dXJuIGV9KSgpKTtsZXQgdj1jbGFzcyBleHRlbmRzIGguRGlzcG9zYWJsZXtjb25zdHJ1Y3RvcihlKXtzdXBlcigpLHRoaXMuX29wdGlvbnNTZXJ2aWNlPWUsdGhpcy5fb25DaGFuZ2VDb2xvcnM9dGhpcy5yZWdpc3RlcihuZXcgYS5FdmVudEVtaXR0ZXIpLHRoaXMub25DaGFuZ2VDb2xvcnM9dGhpcy5fb25DaGFuZ2VDb2xvcnMuZXZlbnQsdGhpcy5fY29udHJhc3RDYWNoZT1uZXcgbi5Db2xvckNvbnRyYXN0Q2FjaGUsdGhpcy5fY29sb3JzPXtmb3JlZ3JvdW5kOmwsYmFja2dyb3VuZDpkLGN1cnNvcjpfLGN1cnNvckFjY2VudDp1LHNlbGVjdGlvbkZvcmVncm91bmQ6dm9pZCAwLHNlbGVjdGlvbkJhY2tncm91bmRUcmFuc3BhcmVudDpmLHNlbGVjdGlvbkJhY2tncm91bmRPcGFxdWU6by5jb2xvci5ibGVuZChkLGYpLHNlbGVjdGlvbkluYWN0aXZlQmFja2dyb3VuZFRyYW5zcGFyZW50OmYsc2VsZWN0aW9uSW5hY3RpdmVCYWNrZ3JvdW5kT3BhcXVlOm8uY29sb3IuYmxlbmQoZCxmKSxhbnNpOnQuREVGQVVMVF9BTlNJX0NPTE9SUy5zbGljZSgpLGNvbnRyYXN0Q2FjaGU6dGhpcy5fY29udHJhc3RDYWNoZX0sdGhpcy5fdXBkYXRlUmVzdG9yZUNvbG9ycygpLHRoaXMuX3NldFRoZW1lKHRoaXMuX29wdGlvbnNTZXJ2aWNlLnJhd09wdGlvbnMudGhlbWUpLHRoaXMucmVnaXN0ZXIodGhpcy5fb3B0aW9uc1NlcnZpY2Uub25TcGVjaWZpY09wdGlvbkNoYW5nZShcIm1pbmltdW1Db250cmFzdFJhdGlvXCIsKCgpPT50aGlzLl9jb250cmFzdENhY2hlLmNsZWFyKCkpKSksdGhpcy5yZWdpc3Rlcih0aGlzLl9vcHRpb25zU2VydmljZS5vblNwZWNpZmljT3B0aW9uQ2hhbmdlKFwidGhlbWVcIiwoKCk9PnRoaXMuX3NldFRoZW1lKHRoaXMuX29wdGlvbnNTZXJ2aWNlLnJhd09wdGlvbnMudGhlbWUpKSkpfWdldCBjb2xvcnMoKXtyZXR1cm4gdGhpcy5fY29sb3JzfV9zZXRUaGVtZShlPXt9KXtjb25zdCBpPXRoaXMuX2NvbG9ycztpZihpLmZvcmVncm91bmQ9ZyhlLmZvcmVncm91bmQsbCksaS5iYWNrZ3JvdW5kPWcoZS5iYWNrZ3JvdW5kLGQpLGkuY3Vyc29yPWcoZS5jdXJzb3IsXyksaS5jdXJzb3JBY2NlbnQ9ZyhlLmN1cnNvckFjY2VudCx1KSxpLnNlbGVjdGlvbkJhY2tncm91bmRUcmFuc3BhcmVudD1nKGUuc2VsZWN0aW9uQmFja2dyb3VuZCxmKSxpLnNlbGVjdGlvbkJhY2tncm91bmRPcGFxdWU9by5jb2xvci5ibGVuZChpLmJhY2tncm91bmQsaS5zZWxlY3Rpb25CYWNrZ3JvdW5kVHJhbnNwYXJlbnQpLGkuc2VsZWN0aW9uSW5hY3RpdmVCYWNrZ3JvdW5kVHJhbnNwYXJlbnQ9ZyhlLnNlbGVjdGlvbkluYWN0aXZlQmFja2dyb3VuZCxpLnNlbGVjdGlvbkJhY2tncm91bmRUcmFuc3BhcmVudCksaS5zZWxlY3Rpb25JbmFjdGl2ZUJhY2tncm91bmRPcGFxdWU9by5jb2xvci5ibGVuZChpLmJhY2tncm91bmQsaS5zZWxlY3Rpb25JbmFjdGl2ZUJhY2tncm91bmRUcmFuc3BhcmVudCksaS5zZWxlY3Rpb25Gb3JlZ3JvdW5kPWUuc2VsZWN0aW9uRm9yZWdyb3VuZD9nKGUuc2VsZWN0aW9uRm9yZWdyb3VuZCxvLk5VTExfQ09MT1IpOnZvaWQgMCxpLnNlbGVjdGlvbkZvcmVncm91bmQ9PT1vLk5VTExfQ09MT1ImJihpLnNlbGVjdGlvbkZvcmVncm91bmQ9dm9pZCAwKSxvLmNvbG9yLmlzT3BhcXVlKGkuc2VsZWN0aW9uQmFja2dyb3VuZFRyYW5zcGFyZW50KSl7Y29uc3QgZT0uMztpLnNlbGVjdGlvbkJhY2tncm91bmRUcmFuc3BhcmVudD1vLmNvbG9yLm9wYWNpdHkoaS5zZWxlY3Rpb25CYWNrZ3JvdW5kVHJhbnNwYXJlbnQsZSl9aWYoby5jb2xvci5pc09wYXF1ZShpLnNlbGVjdGlvbkluYWN0aXZlQmFja2dyb3VuZFRyYW5zcGFyZW50KSl7Y29uc3QgZT0uMztpLnNlbGVjdGlvbkluYWN0aXZlQmFja2dyb3VuZFRyYW5zcGFyZW50PW8uY29sb3Iub3BhY2l0eShpLnNlbGVjdGlvbkluYWN0aXZlQmFja2dyb3VuZFRyYW5zcGFyZW50LGUpfWlmKGkuYW5zaT10LkRFRkFVTFRfQU5TSV9DT0xPUlMuc2xpY2UoKSxpLmFuc2lbMF09ZyhlLmJsYWNrLHQuREVGQVVMVF9BTlNJX0NPTE9SU1swXSksaS5hbnNpWzFdPWcoZS5yZWQsdC5ERUZBVUxUX0FOU0lfQ09MT1JTWzFdKSxpLmFuc2lbMl09ZyhlLmdyZWVuLHQuREVGQVVMVF9BTlNJX0NPTE9SU1syXSksaS5hbnNpWzNdPWcoZS55ZWxsb3csdC5ERUZBVUxUX0FOU0lfQ09MT1JTWzNdKSxpLmFuc2lbNF09ZyhlLmJsdWUsdC5ERUZBVUxUX0FOU0lfQ09MT1JTWzRdKSxpLmFuc2lbNV09ZyhlLm1hZ2VudGEsdC5ERUZBVUxUX0FOU0lfQ09MT1JTWzVdKSxpLmFuc2lbNl09ZyhlLmN5YW4sdC5ERUZBVUxUX0FOU0lfQ09MT1JTWzZdKSxpLmFuc2lbN109ZyhlLndoaXRlLHQuREVGQVVMVF9BTlNJX0NPTE9SU1s3XSksaS5hbnNpWzhdPWcoZS5icmlnaHRCbGFjayx0LkRFRkFVTFRfQU5TSV9DT0xPUlNbOF0pLGkuYW5zaVs5XT1nKGUuYnJpZ2h0UmVkLHQuREVGQVVMVF9BTlNJX0NPTE9SU1s5XSksaS5hbnNpWzEwXT1nKGUuYnJpZ2h0R3JlZW4sdC5ERUZBVUxUX0FOU0lfQ09MT1JTWzEwXSksaS5hbnNpWzExXT1nKGUuYnJpZ2h0WWVsbG93LHQuREVGQVVMVF9BTlNJX0NPTE9SU1sxMV0pLGkuYW5zaVsxMl09ZyhlLmJyaWdodEJsdWUsdC5ERUZBVUxUX0FOU0lfQ09MT1JTWzEyXSksaS5hbnNpWzEzXT1nKGUuYnJpZ2h0TWFnZW50YSx0LkRFRkFVTFRfQU5TSV9DT0xPUlNbMTNdKSxpLmFuc2lbMTRdPWcoZS5icmlnaHRDeWFuLHQuREVGQVVMVF9BTlNJX0NPTE9SU1sxNF0pLGkuYW5zaVsxNV09ZyhlLmJyaWdodFdoaXRlLHQuREVGQVVMVF9BTlNJX0NPTE9SU1sxNV0pLGUuZXh0ZW5kZWRBbnNpKXtjb25zdCBzPU1hdGgubWluKGkuYW5zaS5sZW5ndGgtMTYsZS5leHRlbmRlZEFuc2kubGVuZ3RoKTtmb3IobGV0IHI9MDtyPHM7cisrKWkuYW5zaVtyKzE2XT1nKGUuZXh0ZW5kZWRBbnNpW3JdLHQuREVGQVVMVF9BTlNJX0NPTE9SU1tyKzE2XSl9dGhpcy5fY29udHJhc3RDYWNoZS5jbGVhcigpLHRoaXMuX3VwZGF0ZVJlc3RvcmVDb2xvcnMoKSx0aGlzLl9vbkNoYW5nZUNvbG9ycy5maXJlKHRoaXMuY29sb3JzKX1yZXN0b3JlQ29sb3IoZSl7dGhpcy5fcmVzdG9yZUNvbG9yKGUpLHRoaXMuX29uQ2hhbmdlQ29sb3JzLmZpcmUodGhpcy5jb2xvcnMpfV9yZXN0b3JlQ29sb3IoZSl7aWYodm9pZCAwIT09ZSlzd2l0Y2goZSl7Y2FzZSAyNTY6dGhpcy5fY29sb3JzLmZvcmVncm91bmQ9dGhpcy5fcmVzdG9yZUNvbG9ycy5mb3JlZ3JvdW5kO2JyZWFrO2Nhc2UgMjU3OnRoaXMuX2NvbG9ycy5iYWNrZ3JvdW5kPXRoaXMuX3Jlc3RvcmVDb2xvcnMuYmFja2dyb3VuZDticmVhaztjYXNlIDI1ODp0aGlzLl9jb2xvcnMuY3Vyc29yPXRoaXMuX3Jlc3RvcmVDb2xvcnMuY3Vyc29yO2JyZWFrO2RlZmF1bHQ6dGhpcy5fY29sb3JzLmFuc2lbZV09dGhpcy5fcmVzdG9yZUNvbG9ycy5hbnNpW2VdfWVsc2UgZm9yKGxldCBlPTA7ZTx0aGlzLl9yZXN0b3JlQ29sb3JzLmFuc2kubGVuZ3RoOysrZSl0aGlzLl9jb2xvcnMuYW5zaVtlXT10aGlzLl9yZXN0b3JlQ29sb3JzLmFuc2lbZV19bW9kaWZ5Q29sb3JzKGUpe2UodGhpcy5fY29sb3JzKSx0aGlzLl9vbkNoYW5nZUNvbG9ycy5maXJlKHRoaXMuY29sb3JzKX1fdXBkYXRlUmVzdG9yZUNvbG9ycygpe3RoaXMuX3Jlc3RvcmVDb2xvcnM9e2ZvcmVncm91bmQ6dGhpcy5fY29sb3JzLmZvcmVncm91bmQsYmFja2dyb3VuZDp0aGlzLl9jb2xvcnMuYmFja2dyb3VuZCxjdXJzb3I6dGhpcy5fY29sb3JzLmN1cnNvcixhbnNpOnRoaXMuX2NvbG9ycy5hbnNpLnNsaWNlKCl9fX07ZnVuY3Rpb24gZyhlLHQpe2lmKHZvaWQgMCE9PWUpdHJ5e3JldHVybiBvLmNzcy50b0NvbG9yKGUpfWNhdGNoKGUpe31yZXR1cm4gdH12PXMoW3IoMCxjLklPcHRpb25zU2VydmljZSldLHYpLHQuVGhlbWVTZXJ2aWNlPXZ9LDYzNDk6KGUsdCxpKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuQ2lyY3VsYXJMaXN0PXZvaWQgMDtjb25zdCBzPWkoODQ2MCkscj1pKDg0NCk7Y2xhc3MgbiBleHRlbmRzIHIuRGlzcG9zYWJsZXtjb25zdHJ1Y3RvcihlKXtzdXBlcigpLHRoaXMuX21heExlbmd0aD1lLHRoaXMub25EZWxldGVFbWl0dGVyPXRoaXMucmVnaXN0ZXIobmV3IHMuRXZlbnRFbWl0dGVyKSx0aGlzLm9uRGVsZXRlPXRoaXMub25EZWxldGVFbWl0dGVyLmV2ZW50LHRoaXMub25JbnNlcnRFbWl0dGVyPXRoaXMucmVnaXN0ZXIobmV3IHMuRXZlbnRFbWl0dGVyKSx0aGlzLm9uSW5zZXJ0PXRoaXMub25JbnNlcnRFbWl0dGVyLmV2ZW50LHRoaXMub25UcmltRW1pdHRlcj10aGlzLnJlZ2lzdGVyKG5ldyBzLkV2ZW50RW1pdHRlciksdGhpcy5vblRyaW09dGhpcy5vblRyaW1FbWl0dGVyLmV2ZW50LHRoaXMuX2FycmF5PW5ldyBBcnJheSh0aGlzLl9tYXhMZW5ndGgpLHRoaXMuX3N0YXJ0SW5kZXg9MCx0aGlzLl9sZW5ndGg9MH1nZXQgbWF4TGVuZ3RoKCl7cmV0dXJuIHRoaXMuX21heExlbmd0aH1zZXQgbWF4TGVuZ3RoKGUpe2lmKHRoaXMuX21heExlbmd0aD09PWUpcmV0dXJuO2NvbnN0IHQ9bmV3IEFycmF5KGUpO2ZvcihsZXQgaT0wO2k8TWF0aC5taW4oZSx0aGlzLmxlbmd0aCk7aSsrKXRbaV09dGhpcy5fYXJyYXlbdGhpcy5fZ2V0Q3ljbGljSW5kZXgoaSldO3RoaXMuX2FycmF5PXQsdGhpcy5fbWF4TGVuZ3RoPWUsdGhpcy5fc3RhcnRJbmRleD0wfWdldCBsZW5ndGgoKXtyZXR1cm4gdGhpcy5fbGVuZ3RofXNldCBsZW5ndGgoZSl7aWYoZT50aGlzLl9sZW5ndGgpZm9yKGxldCB0PXRoaXMuX2xlbmd0aDt0PGU7dCsrKXRoaXMuX2FycmF5W3RdPXZvaWQgMDt0aGlzLl9sZW5ndGg9ZX1nZXQoZSl7cmV0dXJuIHRoaXMuX2FycmF5W3RoaXMuX2dldEN5Y2xpY0luZGV4KGUpXX1zZXQoZSx0KXt0aGlzLl9hcnJheVt0aGlzLl9nZXRDeWNsaWNJbmRleChlKV09dH1wdXNoKGUpe3RoaXMuX2FycmF5W3RoaXMuX2dldEN5Y2xpY0luZGV4KHRoaXMuX2xlbmd0aCldPWUsdGhpcy5fbGVuZ3RoPT09dGhpcy5fbWF4TGVuZ3RoPyh0aGlzLl9zdGFydEluZGV4PSsrdGhpcy5fc3RhcnRJbmRleCV0aGlzLl9tYXhMZW5ndGgsdGhpcy5vblRyaW1FbWl0dGVyLmZpcmUoMSkpOnRoaXMuX2xlbmd0aCsrfXJlY3ljbGUoKXtpZih0aGlzLl9sZW5ndGghPT10aGlzLl9tYXhMZW5ndGgpdGhyb3cgbmV3IEVycm9yKFwiQ2FuIG9ubHkgcmVjeWNsZSB3aGVuIHRoZSBidWZmZXIgaXMgZnVsbFwiKTtyZXR1cm4gdGhpcy5fc3RhcnRJbmRleD0rK3RoaXMuX3N0YXJ0SW5kZXgldGhpcy5fbWF4TGVuZ3RoLHRoaXMub25UcmltRW1pdHRlci5maXJlKDEpLHRoaXMuX2FycmF5W3RoaXMuX2dldEN5Y2xpY0luZGV4KHRoaXMuX2xlbmd0aC0xKV19Z2V0IGlzRnVsbCgpe3JldHVybiB0aGlzLl9sZW5ndGg9PT10aGlzLl9tYXhMZW5ndGh9cG9wKCl7cmV0dXJuIHRoaXMuX2FycmF5W3RoaXMuX2dldEN5Y2xpY0luZGV4KHRoaXMuX2xlbmd0aC0tLTEpXX1zcGxpY2UoZSx0LC4uLmkpe2lmKHQpe2ZvcihsZXQgaT1lO2k8dGhpcy5fbGVuZ3RoLXQ7aSsrKXRoaXMuX2FycmF5W3RoaXMuX2dldEN5Y2xpY0luZGV4KGkpXT10aGlzLl9hcnJheVt0aGlzLl9nZXRDeWNsaWNJbmRleChpK3QpXTt0aGlzLl9sZW5ndGgtPXQsdGhpcy5vbkRlbGV0ZUVtaXR0ZXIuZmlyZSh7aW5kZXg6ZSxhbW91bnQ6dH0pfWZvcihsZXQgdD10aGlzLl9sZW5ndGgtMTt0Pj1lO3QtLSl0aGlzLl9hcnJheVt0aGlzLl9nZXRDeWNsaWNJbmRleCh0K2kubGVuZ3RoKV09dGhpcy5fYXJyYXlbdGhpcy5fZ2V0Q3ljbGljSW5kZXgodCldO2ZvcihsZXQgdD0wO3Q8aS5sZW5ndGg7dCsrKXRoaXMuX2FycmF5W3RoaXMuX2dldEN5Y2xpY0luZGV4KGUrdCldPWlbdF07aWYoaS5sZW5ndGgmJnRoaXMub25JbnNlcnRFbWl0dGVyLmZpcmUoe2luZGV4OmUsYW1vdW50OmkubGVuZ3RofSksdGhpcy5fbGVuZ3RoK2kubGVuZ3RoPnRoaXMuX21heExlbmd0aCl7Y29uc3QgZT10aGlzLl9sZW5ndGgraS5sZW5ndGgtdGhpcy5fbWF4TGVuZ3RoO3RoaXMuX3N0YXJ0SW5kZXgrPWUsdGhpcy5fbGVuZ3RoPXRoaXMuX21heExlbmd0aCx0aGlzLm9uVHJpbUVtaXR0ZXIuZmlyZShlKX1lbHNlIHRoaXMuX2xlbmd0aCs9aS5sZW5ndGh9dHJpbVN0YXJ0KGUpe2U+dGhpcy5fbGVuZ3RoJiYoZT10aGlzLl9sZW5ndGgpLHRoaXMuX3N0YXJ0SW5kZXgrPWUsdGhpcy5fbGVuZ3RoLT1lLHRoaXMub25UcmltRW1pdHRlci5maXJlKGUpfXNoaWZ0RWxlbWVudHMoZSx0LGkpe2lmKCEodDw9MCkpe2lmKGU8MHx8ZT49dGhpcy5fbGVuZ3RoKXRocm93IG5ldyBFcnJvcihcInN0YXJ0IGFyZ3VtZW50IG91dCBvZiByYW5nZVwiKTtpZihlK2k8MCl0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3Qgc2hpZnQgZWxlbWVudHMgaW4gbGlzdCBiZXlvbmQgaW5kZXggMFwiKTtpZihpPjApe2ZvcihsZXQgcz10LTE7cz49MDtzLS0pdGhpcy5zZXQoZStzK2ksdGhpcy5nZXQoZStzKSk7Y29uc3Qgcz1lK3QraS10aGlzLl9sZW5ndGg7aWYocz4wKWZvcih0aGlzLl9sZW5ndGgrPXM7dGhpcy5fbGVuZ3RoPnRoaXMuX21heExlbmd0aDspdGhpcy5fbGVuZ3RoLS0sdGhpcy5fc3RhcnRJbmRleCsrLHRoaXMub25UcmltRW1pdHRlci5maXJlKDEpfWVsc2UgZm9yKGxldCBzPTA7czx0O3MrKyl0aGlzLnNldChlK3MraSx0aGlzLmdldChlK3MpKX19X2dldEN5Y2xpY0luZGV4KGUpe3JldHVybih0aGlzLl9zdGFydEluZGV4K2UpJXRoaXMuX21heExlbmd0aH19dC5DaXJjdWxhckxpc3Q9bn0sMTQzOTooZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuY2xvbmU9dm9pZCAwLHQuY2xvbmU9ZnVuY3Rpb24gZSh0LGk9NSl7aWYoXCJvYmplY3RcIiE9dHlwZW9mIHQpcmV0dXJuIHQ7Y29uc3Qgcz1BcnJheS5pc0FycmF5KHQpP1tdOnt9O2Zvcihjb25zdCByIGluIHQpc1tyXT1pPD0xP3Rbcl06dFtyXSYmZSh0W3JdLGktMSk7cmV0dXJuIHN9fSw4MDU1OihlLHQsaSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmNvbnRyYXN0UmF0aW89dC50b1BhZGRlZEhleD10LnJnYmE9dC5yZ2I9dC5jc3M9dC5jb2xvcj10LmNoYW5uZWxzPXQuTlVMTF9DT0xPUj12b2lkIDA7Y29uc3Qgcz1pKDYxMTQpO2xldCByPTAsbj0wLG89MCxhPTA7dmFyIGgsYyxsO2Z1bmN0aW9uIGQoZSl7Y29uc3QgdD1lLnRvU3RyaW5nKDE2KTtyZXR1cm4gdC5sZW5ndGg8Mj9cIjBcIit0OnR9ZnVuY3Rpb24gXyhlLHQpe3JldHVybiBlPHQ/KHQrLjA1KS8oZSsuMDUpOihlKy4wNSkvKHQrLjA1KX10Lk5VTExfQ09MT1I9e2NzczpcIiMwMDAwMDAwMFwiLHJnYmE6MH0sZnVuY3Rpb24oZSl7ZS50b0Nzcz1mdW5jdGlvbihlLHQsaSxzKXtyZXR1cm4gdm9pZCAwIT09cz9gIyR7ZChlKX0ke2QodCl9JHtkKGkpfSR7ZChzKX1gOmAjJHtkKGUpfSR7ZCh0KX0ke2QoaSl9YH0sZS50b1JnYmE9ZnVuY3Rpb24oZSx0LGkscz0yNTUpe3JldHVybihlPDwyNHx0PDwxNnxpPDw4fHMpPj4+MH19KGg9dC5jaGFubmVsc3x8KHQuY2hhbm5lbHM9e30pKSxmdW5jdGlvbihlKXtmdW5jdGlvbiB0KGUsdCl7cmV0dXJuIGE9TWF0aC5yb3VuZCgyNTUqdCksW3IsbixvXT1sLnRvQ2hhbm5lbHMoZS5yZ2JhKSx7Y3NzOmgudG9Dc3MocixuLG8sYSkscmdiYTpoLnRvUmdiYShyLG4sbyxhKX19ZS5ibGVuZD1mdW5jdGlvbihlLHQpe2lmKGE9KDI1NSZ0LnJnYmEpLzI1NSwxPT09YSlyZXR1cm57Y3NzOnQuY3NzLHJnYmE6dC5yZ2JhfTtjb25zdCBpPXQucmdiYT4+MjQmMjU1LHM9dC5yZ2JhPj4xNiYyNTUsYz10LnJnYmE+PjgmMjU1LGw9ZS5yZ2JhPj4yNCYyNTUsZD1lLnJnYmE+PjE2JjI1NSxfPWUucmdiYT4+OCYyNTU7cmV0dXJuIHI9bCtNYXRoLnJvdW5kKChpLWwpKmEpLG49ZCtNYXRoLnJvdW5kKChzLWQpKmEpLG89XytNYXRoLnJvdW5kKChjLV8pKmEpLHtjc3M6aC50b0NzcyhyLG4sbykscmdiYTpoLnRvUmdiYShyLG4sbyl9fSxlLmlzT3BhcXVlPWZ1bmN0aW9uKGUpe3JldHVybiAyNTU9PSgyNTUmZS5yZ2JhKX0sZS5lbnN1cmVDb250cmFzdFJhdGlvPWZ1bmN0aW9uKGUsdCxpKXtjb25zdCBzPWwuZW5zdXJlQ29udHJhc3RSYXRpbyhlLnJnYmEsdC5yZ2JhLGkpO2lmKHMpcmV0dXJuIGwudG9Db2xvcihzPj4yNCYyNTUscz4+MTYmMjU1LHM+PjgmMjU1KX0sZS5vcGFxdWU9ZnVuY3Rpb24oZSl7Y29uc3QgdD0oMjU1fGUucmdiYSk+Pj4wO3JldHVybltyLG4sb109bC50b0NoYW5uZWxzKHQpLHtjc3M6aC50b0NzcyhyLG4sbykscmdiYTp0fX0sZS5vcGFjaXR5PXQsZS5tdWx0aXBseU9wYWNpdHk9ZnVuY3Rpb24oZSxpKXtyZXR1cm4gYT0yNTUmZS5yZ2JhLHQoZSxhKmkvMjU1KX0sZS50b0NvbG9yUkdCPWZ1bmN0aW9uKGUpe3JldHVybltlLnJnYmE+PjI0JjI1NSxlLnJnYmE+PjE2JjI1NSxlLnJnYmE+PjgmMjU1XX19KHQuY29sb3J8fCh0LmNvbG9yPXt9KSksZnVuY3Rpb24oZSl7bGV0IHQsaTtpZighcy5pc05vZGUpe2NvbnN0IGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImNhbnZhc1wiKTtlLndpZHRoPTEsZS5oZWlnaHQ9MTtjb25zdCBzPWUuZ2V0Q29udGV4dChcIjJkXCIse3dpbGxSZWFkRnJlcXVlbnRseTohMH0pO3MmJih0PXMsdC5nbG9iYWxDb21wb3NpdGVPcGVyYXRpb249XCJjb3B5XCIsaT10LmNyZWF0ZUxpbmVhckdyYWRpZW50KDAsMCwxLDEpKX1lLnRvQ29sb3I9ZnVuY3Rpb24oZSl7aWYoZS5tYXRjaCgvI1tcXGRhLWZdezMsOH0vaSkpc3dpdGNoKGUubGVuZ3RoKXtjYXNlIDQ6cmV0dXJuIHI9cGFyc2VJbnQoZS5zbGljZSgxLDIpLnJlcGVhdCgyKSwxNiksbj1wYXJzZUludChlLnNsaWNlKDIsMykucmVwZWF0KDIpLDE2KSxvPXBhcnNlSW50KGUuc2xpY2UoMyw0KS5yZXBlYXQoMiksMTYpLGwudG9Db2xvcihyLG4sbyk7Y2FzZSA1OnJldHVybiByPXBhcnNlSW50KGUuc2xpY2UoMSwyKS5yZXBlYXQoMiksMTYpLG49cGFyc2VJbnQoZS5zbGljZSgyLDMpLnJlcGVhdCgyKSwxNiksbz1wYXJzZUludChlLnNsaWNlKDMsNCkucmVwZWF0KDIpLDE2KSxhPXBhcnNlSW50KGUuc2xpY2UoNCw1KS5yZXBlYXQoMiksMTYpLGwudG9Db2xvcihyLG4sbyxhKTtjYXNlIDc6cmV0dXJue2NzczplLHJnYmE6KHBhcnNlSW50KGUuc2xpY2UoMSksMTYpPDw4fDI1NSk+Pj4wfTtjYXNlIDk6cmV0dXJue2NzczplLHJnYmE6cGFyc2VJbnQoZS5zbGljZSgxKSwxNik+Pj4wfX1jb25zdCBzPWUubWF0Y2goL3JnYmE/XFwoXFxzKihcXGR7MSwzfSlcXHMqLFxccyooXFxkezEsM30pXFxzKixcXHMqKFxcZHsxLDN9KVxccyooLFxccyooMHwxfFxcZD9cXC4oXFxkKykpXFxzKik/XFwpLyk7aWYocylyZXR1cm4gcj1wYXJzZUludChzWzFdKSxuPXBhcnNlSW50KHNbMl0pLG89cGFyc2VJbnQoc1szXSksYT1NYXRoLnJvdW5kKDI1NSoodm9pZCAwPT09c1s1XT8xOnBhcnNlRmxvYXQoc1s1XSkpKSxsLnRvQ29sb3IocixuLG8sYSk7aWYoIXR8fCFpKXRocm93IG5ldyBFcnJvcihcImNzcy50b0NvbG9yOiBVbnN1cHBvcnRlZCBjc3MgZm9ybWF0XCIpO2lmKHQuZmlsbFN0eWxlPWksdC5maWxsU3R5bGU9ZSxcInN0cmluZ1wiIT10eXBlb2YgdC5maWxsU3R5bGUpdGhyb3cgbmV3IEVycm9yKFwiY3NzLnRvQ29sb3I6IFVuc3VwcG9ydGVkIGNzcyBmb3JtYXRcIik7aWYodC5maWxsUmVjdCgwLDAsMSwxKSxbcixuLG8sYV09dC5nZXRJbWFnZURhdGEoMCwwLDEsMSkuZGF0YSwyNTUhPT1hKXRocm93IG5ldyBFcnJvcihcImNzcy50b0NvbG9yOiBVbnN1cHBvcnRlZCBjc3MgZm9ybWF0XCIpO3JldHVybntyZ2JhOmgudG9SZ2JhKHIsbixvLGEpLGNzczplfX19KHQuY3NzfHwodC5jc3M9e30pKSxmdW5jdGlvbihlKXtmdW5jdGlvbiB0KGUsdCxpKXtjb25zdCBzPWUvMjU1LHI9dC8yNTUsbj1pLzI1NTtyZXR1cm4uMjEyNiooczw9LjAzOTI4P3MvMTIuOTI6TWF0aC5wb3coKHMrLjA1NSkvMS4wNTUsMi40KSkrLjcxNTIqKHI8PS4wMzkyOD9yLzEyLjkyOk1hdGgucG93KChyKy4wNTUpLzEuMDU1LDIuNCkpKy4wNzIyKihuPD0uMDM5Mjg/bi8xMi45MjpNYXRoLnBvdygobisuMDU1KS8xLjA1NSwyLjQpKX1lLnJlbGF0aXZlTHVtaW5hbmNlPWZ1bmN0aW9uKGUpe3JldHVybiB0KGU+PjE2JjI1NSxlPj44JjI1NSwyNTUmZSl9LGUucmVsYXRpdmVMdW1pbmFuY2UyPXR9KGM9dC5yZ2J8fCh0LnJnYj17fSkpLGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSx0LGkpe2NvbnN0IHM9ZT4+MjQmMjU1LHI9ZT4+MTYmMjU1LG49ZT4+OCYyNTU7bGV0IG89dD4+MjQmMjU1LGE9dD4+MTYmMjU1LGg9dD4+OCYyNTUsbD1fKGMucmVsYXRpdmVMdW1pbmFuY2UyKG8sYSxoKSxjLnJlbGF0aXZlTHVtaW5hbmNlMihzLHIsbikpO2Zvcig7bDxpJiYobz4wfHxhPjB8fGg+MCk7KW8tPU1hdGgubWF4KDAsTWF0aC5jZWlsKC4xKm8pKSxhLT1NYXRoLm1heCgwLE1hdGguY2VpbCguMSphKSksaC09TWF0aC5tYXgoMCxNYXRoLmNlaWwoLjEqaCkpLGw9XyhjLnJlbGF0aXZlTHVtaW5hbmNlMihvLGEsaCksYy5yZWxhdGl2ZUx1bWluYW5jZTIocyxyLG4pKTtyZXR1cm4obzw8MjR8YTw8MTZ8aDw8OHwyNTUpPj4+MH1mdW5jdGlvbiBpKGUsdCxpKXtjb25zdCBzPWU+PjI0JjI1NSxyPWU+PjE2JjI1NSxuPWU+PjgmMjU1O2xldCBvPXQ+PjI0JjI1NSxhPXQ+PjE2JjI1NSxoPXQ+PjgmMjU1LGw9XyhjLnJlbGF0aXZlTHVtaW5hbmNlMihvLGEsaCksYy5yZWxhdGl2ZUx1bWluYW5jZTIocyxyLG4pKTtmb3IoO2w8aSYmKG88MjU1fHxhPDI1NXx8aDwyNTUpOylvPU1hdGgubWluKDI1NSxvK01hdGguY2VpbCguMSooMjU1LW8pKSksYT1NYXRoLm1pbigyNTUsYStNYXRoLmNlaWwoLjEqKDI1NS1hKSkpLGg9TWF0aC5taW4oMjU1LGgrTWF0aC5jZWlsKC4xKigyNTUtaCkpKSxsPV8oYy5yZWxhdGl2ZUx1bWluYW5jZTIobyxhLGgpLGMucmVsYXRpdmVMdW1pbmFuY2UyKHMscixuKSk7cmV0dXJuKG88PDI0fGE8PDE2fGg8PDh8MjU1KT4+PjB9ZS5lbnN1cmVDb250cmFzdFJhdGlvPWZ1bmN0aW9uKGUscyxyKXtjb25zdCBuPWMucmVsYXRpdmVMdW1pbmFuY2UoZT4+OCksbz1jLnJlbGF0aXZlTHVtaW5hbmNlKHM+PjgpO2lmKF8obixvKTxyKXtpZihvPG4pe2NvbnN0IG89dChlLHMsciksYT1fKG4sYy5yZWxhdGl2ZUx1bWluYW5jZShvPj44KSk7aWYoYTxyKXtjb25zdCB0PWkoZSxzLHIpO3JldHVybiBhPl8obixjLnJlbGF0aXZlTHVtaW5hbmNlKHQ+PjgpKT9vOnR9cmV0dXJuIG99Y29uc3QgYT1pKGUscyxyKSxoPV8obixjLnJlbGF0aXZlTHVtaW5hbmNlKGE+PjgpKTtpZihoPHIpe2NvbnN0IGk9dChlLHMscik7cmV0dXJuIGg+XyhuLGMucmVsYXRpdmVMdW1pbmFuY2UoaT4+OCkpP2E6aX1yZXR1cm4gYX19LGUucmVkdWNlTHVtaW5hbmNlPXQsZS5pbmNyZWFzZUx1bWluYW5jZT1pLGUudG9DaGFubmVscz1mdW5jdGlvbihlKXtyZXR1cm5bZT4+MjQmMjU1LGU+PjE2JjI1NSxlPj44JjI1NSwyNTUmZV19LGUudG9Db2xvcj1mdW5jdGlvbihlLHQsaSxzKXtyZXR1cm57Y3NzOmgudG9Dc3MoZSx0LGkscykscmdiYTpoLnRvUmdiYShlLHQsaSxzKX19fShsPXQucmdiYXx8KHQucmdiYT17fSkpLHQudG9QYWRkZWRIZXg9ZCx0LmNvbnRyYXN0UmF0aW89X30sODk2OTooZSx0LGkpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5Db3JlVGVybWluYWw9dm9pZCAwO2NvbnN0IHM9aSg4NDQpLHI9aSgyNTg1KSxuPWkoNDM0OCksbz1pKDc4NjYpLGE9aSg3NDQpLGg9aSg3MzAyKSxjPWkoNjk3NSksbD1pKDg0NjApLGQ9aSgxNzUzKSxfPWkoMTQ4MCksdT1pKDc5OTQpLGY9aSg5MjgyKSx2PWkoNTQzNSksZz1pKDU5ODEpLHA9aSgyNjYwKTtsZXQgUz0hMTtjbGFzcyBtIGV4dGVuZHMgcy5EaXNwb3NhYmxle2NvbnN0cnVjdG9yKGUpe3N1cGVyKCksdGhpcy5fb25CaW5hcnk9dGhpcy5yZWdpc3RlcihuZXcgbC5FdmVudEVtaXR0ZXIpLHRoaXMub25CaW5hcnk9dGhpcy5fb25CaW5hcnkuZXZlbnQsdGhpcy5fb25EYXRhPXRoaXMucmVnaXN0ZXIobmV3IGwuRXZlbnRFbWl0dGVyKSx0aGlzLm9uRGF0YT10aGlzLl9vbkRhdGEuZXZlbnQsdGhpcy5fb25MaW5lRmVlZD10aGlzLnJlZ2lzdGVyKG5ldyBsLkV2ZW50RW1pdHRlciksdGhpcy5vbkxpbmVGZWVkPXRoaXMuX29uTGluZUZlZWQuZXZlbnQsdGhpcy5fb25SZXNpemU9dGhpcy5yZWdpc3RlcihuZXcgbC5FdmVudEVtaXR0ZXIpLHRoaXMub25SZXNpemU9dGhpcy5fb25SZXNpemUuZXZlbnQsdGhpcy5fb25Xcml0ZVBhcnNlZD10aGlzLnJlZ2lzdGVyKG5ldyBsLkV2ZW50RW1pdHRlciksdGhpcy5vbldyaXRlUGFyc2VkPXRoaXMuX29uV3JpdGVQYXJzZWQuZXZlbnQsdGhpcy5fb25TY3JvbGw9dGhpcy5yZWdpc3RlcihuZXcgbC5FdmVudEVtaXR0ZXIpLHRoaXMuX2luc3RhbnRpYXRpb25TZXJ2aWNlPW5ldyBuLkluc3RhbnRpYXRpb25TZXJ2aWNlLHRoaXMub3B0aW9uc1NlcnZpY2U9dGhpcy5yZWdpc3RlcihuZXcgaC5PcHRpb25zU2VydmljZShlKSksdGhpcy5faW5zdGFudGlhdGlvblNlcnZpY2Uuc2V0U2VydmljZShyLklPcHRpb25zU2VydmljZSx0aGlzLm9wdGlvbnNTZXJ2aWNlKSx0aGlzLl9idWZmZXJTZXJ2aWNlPXRoaXMucmVnaXN0ZXIodGhpcy5faW5zdGFudGlhdGlvblNlcnZpY2UuY3JlYXRlSW5zdGFuY2UoYS5CdWZmZXJTZXJ2aWNlKSksdGhpcy5faW5zdGFudGlhdGlvblNlcnZpY2Uuc2V0U2VydmljZShyLklCdWZmZXJTZXJ2aWNlLHRoaXMuX2J1ZmZlclNlcnZpY2UpLHRoaXMuX2xvZ1NlcnZpY2U9dGhpcy5yZWdpc3Rlcih0aGlzLl9pbnN0YW50aWF0aW9uU2VydmljZS5jcmVhdGVJbnN0YW5jZShvLkxvZ1NlcnZpY2UpKSx0aGlzLl9pbnN0YW50aWF0aW9uU2VydmljZS5zZXRTZXJ2aWNlKHIuSUxvZ1NlcnZpY2UsdGhpcy5fbG9nU2VydmljZSksdGhpcy5jb3JlU2VydmljZT10aGlzLnJlZ2lzdGVyKHRoaXMuX2luc3RhbnRpYXRpb25TZXJ2aWNlLmNyZWF0ZUluc3RhbmNlKGMuQ29yZVNlcnZpY2UpKSx0aGlzLl9pbnN0YW50aWF0aW9uU2VydmljZS5zZXRTZXJ2aWNlKHIuSUNvcmVTZXJ2aWNlLHRoaXMuY29yZVNlcnZpY2UpLHRoaXMuY29yZU1vdXNlU2VydmljZT10aGlzLnJlZ2lzdGVyKHRoaXMuX2luc3RhbnRpYXRpb25TZXJ2aWNlLmNyZWF0ZUluc3RhbmNlKGQuQ29yZU1vdXNlU2VydmljZSkpLHRoaXMuX2luc3RhbnRpYXRpb25TZXJ2aWNlLnNldFNlcnZpY2Uoci5JQ29yZU1vdXNlU2VydmljZSx0aGlzLmNvcmVNb3VzZVNlcnZpY2UpLHRoaXMudW5pY29kZVNlcnZpY2U9dGhpcy5yZWdpc3Rlcih0aGlzLl9pbnN0YW50aWF0aW9uU2VydmljZS5jcmVhdGVJbnN0YW5jZShfLlVuaWNvZGVTZXJ2aWNlKSksdGhpcy5faW5zdGFudGlhdGlvblNlcnZpY2Uuc2V0U2VydmljZShyLklVbmljb2RlU2VydmljZSx0aGlzLnVuaWNvZGVTZXJ2aWNlKSx0aGlzLl9jaGFyc2V0U2VydmljZT10aGlzLl9pbnN0YW50aWF0aW9uU2VydmljZS5jcmVhdGVJbnN0YW5jZSh1LkNoYXJzZXRTZXJ2aWNlKSx0aGlzLl9pbnN0YW50aWF0aW9uU2VydmljZS5zZXRTZXJ2aWNlKHIuSUNoYXJzZXRTZXJ2aWNlLHRoaXMuX2NoYXJzZXRTZXJ2aWNlKSx0aGlzLl9vc2NMaW5rU2VydmljZT10aGlzLl9pbnN0YW50aWF0aW9uU2VydmljZS5jcmVhdGVJbnN0YW5jZShwLk9zY0xpbmtTZXJ2aWNlKSx0aGlzLl9pbnN0YW50aWF0aW9uU2VydmljZS5zZXRTZXJ2aWNlKHIuSU9zY0xpbmtTZXJ2aWNlLHRoaXMuX29zY0xpbmtTZXJ2aWNlKSx0aGlzLl9pbnB1dEhhbmRsZXI9dGhpcy5yZWdpc3RlcihuZXcgdi5JbnB1dEhhbmRsZXIodGhpcy5fYnVmZmVyU2VydmljZSx0aGlzLl9jaGFyc2V0U2VydmljZSx0aGlzLmNvcmVTZXJ2aWNlLHRoaXMuX2xvZ1NlcnZpY2UsdGhpcy5vcHRpb25zU2VydmljZSx0aGlzLl9vc2NMaW5rU2VydmljZSx0aGlzLmNvcmVNb3VzZVNlcnZpY2UsdGhpcy51bmljb2RlU2VydmljZSkpLHRoaXMucmVnaXN0ZXIoKDAsbC5mb3J3YXJkRXZlbnQpKHRoaXMuX2lucHV0SGFuZGxlci5vbkxpbmVGZWVkLHRoaXMuX29uTGluZUZlZWQpKSx0aGlzLnJlZ2lzdGVyKHRoaXMuX2lucHV0SGFuZGxlciksdGhpcy5yZWdpc3RlcigoMCxsLmZvcndhcmRFdmVudCkodGhpcy5fYnVmZmVyU2VydmljZS5vblJlc2l6ZSx0aGlzLl9vblJlc2l6ZSkpLHRoaXMucmVnaXN0ZXIoKDAsbC5mb3J3YXJkRXZlbnQpKHRoaXMuY29yZVNlcnZpY2Uub25EYXRhLHRoaXMuX29uRGF0YSkpLHRoaXMucmVnaXN0ZXIoKDAsbC5mb3J3YXJkRXZlbnQpKHRoaXMuY29yZVNlcnZpY2Uub25CaW5hcnksdGhpcy5fb25CaW5hcnkpKSx0aGlzLnJlZ2lzdGVyKHRoaXMuY29yZVNlcnZpY2Uub25SZXF1ZXN0U2Nyb2xsVG9Cb3R0b20oKCgpPT50aGlzLnNjcm9sbFRvQm90dG9tKCkpKSksdGhpcy5yZWdpc3Rlcih0aGlzLmNvcmVTZXJ2aWNlLm9uVXNlcklucHV0KCgoKT0+dGhpcy5fd3JpdGVCdWZmZXIuaGFuZGxlVXNlcklucHV0KCkpKSksdGhpcy5yZWdpc3Rlcih0aGlzLm9wdGlvbnNTZXJ2aWNlLm9uTXVsdGlwbGVPcHRpb25DaGFuZ2UoW1wid2luZG93c01vZGVcIixcIndpbmRvd3NQdHlcIl0sKCgpPT50aGlzLl9oYW5kbGVXaW5kb3dzUHR5T3B0aW9uQ2hhbmdlKCkpKSksdGhpcy5yZWdpc3Rlcih0aGlzLl9idWZmZXJTZXJ2aWNlLm9uU2Nyb2xsKChlPT57dGhpcy5fb25TY3JvbGwuZmlyZSh7cG9zaXRpb246dGhpcy5fYnVmZmVyU2VydmljZS5idWZmZXIueWRpc3Asc291cmNlOjB9KSx0aGlzLl9pbnB1dEhhbmRsZXIubWFya1JhbmdlRGlydHkodGhpcy5fYnVmZmVyU2VydmljZS5idWZmZXIuc2Nyb2xsVG9wLHRoaXMuX2J1ZmZlclNlcnZpY2UuYnVmZmVyLnNjcm9sbEJvdHRvbSl9KSkpLHRoaXMucmVnaXN0ZXIodGhpcy5faW5wdXRIYW5kbGVyLm9uU2Nyb2xsKChlPT57dGhpcy5fb25TY3JvbGwuZmlyZSh7cG9zaXRpb246dGhpcy5fYnVmZmVyU2VydmljZS5idWZmZXIueWRpc3Asc291cmNlOjB9KSx0aGlzLl9pbnB1dEhhbmRsZXIubWFya1JhbmdlRGlydHkodGhpcy5fYnVmZmVyU2VydmljZS5idWZmZXIuc2Nyb2xsVG9wLHRoaXMuX2J1ZmZlclNlcnZpY2UuYnVmZmVyLnNjcm9sbEJvdHRvbSl9KSkpLHRoaXMuX3dyaXRlQnVmZmVyPXRoaXMucmVnaXN0ZXIobmV3IGcuV3JpdGVCdWZmZXIoKChlLHQpPT50aGlzLl9pbnB1dEhhbmRsZXIucGFyc2UoZSx0KSkpKSx0aGlzLnJlZ2lzdGVyKCgwLGwuZm9yd2FyZEV2ZW50KSh0aGlzLl93cml0ZUJ1ZmZlci5vbldyaXRlUGFyc2VkLHRoaXMuX29uV3JpdGVQYXJzZWQpKSx0aGlzLnJlZ2lzdGVyKCgwLHMudG9EaXNwb3NhYmxlKSgoKCk9Pnt2YXIgZTtudWxsPT09KGU9dGhpcy5fd2luZG93c1dyYXBwaW5nSGV1cmlzdGljcyl8fHZvaWQgMD09PWV8fGUuZGlzcG9zZSgpLHRoaXMuX3dpbmRvd3NXcmFwcGluZ0hldXJpc3RpY3M9dm9pZCAwfSkpKX1nZXQgb25TY3JvbGwoKXtyZXR1cm4gdGhpcy5fb25TY3JvbGxBcGl8fCh0aGlzLl9vblNjcm9sbEFwaT10aGlzLnJlZ2lzdGVyKG5ldyBsLkV2ZW50RW1pdHRlciksdGhpcy5fb25TY3JvbGwuZXZlbnQoKGU9Pnt2YXIgdDtudWxsPT09KHQ9dGhpcy5fb25TY3JvbGxBcGkpfHx2b2lkIDA9PT10fHx0LmZpcmUoZS5wb3NpdGlvbil9KSkpLHRoaXMuX29uU2Nyb2xsQXBpLmV2ZW50fWdldCBjb2xzKCl7cmV0dXJuIHRoaXMuX2J1ZmZlclNlcnZpY2UuY29sc31nZXQgcm93cygpe3JldHVybiB0aGlzLl9idWZmZXJTZXJ2aWNlLnJvd3N9Z2V0IGJ1ZmZlcnMoKXtyZXR1cm4gdGhpcy5fYnVmZmVyU2VydmljZS5idWZmZXJzfWdldCBvcHRpb25zKCl7cmV0dXJuIHRoaXMub3B0aW9uc1NlcnZpY2Uub3B0aW9uc31zZXQgb3B0aW9ucyhlKXtmb3IoY29uc3QgdCBpbiBlKXRoaXMub3B0aW9uc1NlcnZpY2Uub3B0aW9uc1t0XT1lW3RdfXdyaXRlKGUsdCl7dGhpcy5fd3JpdGVCdWZmZXIud3JpdGUoZSx0KX13cml0ZVN5bmMoZSx0KXt0aGlzLl9sb2dTZXJ2aWNlLmxvZ0xldmVsPD1yLkxvZ0xldmVsRW51bS5XQVJOJiYhUyYmKHRoaXMuX2xvZ1NlcnZpY2Uud2FybihcIndyaXRlU3luYyBpcyB1bnJlbGlhYmxlIGFuZCB3aWxsIGJlIHJlbW92ZWQgc29vbi5cIiksUz0hMCksdGhpcy5fd3JpdGVCdWZmZXIud3JpdGVTeW5jKGUsdCl9cmVzaXplKGUsdCl7aXNOYU4oZSl8fGlzTmFOKHQpfHwoZT1NYXRoLm1heChlLGEuTUlOSU1VTV9DT0xTKSx0PU1hdGgubWF4KHQsYS5NSU5JTVVNX1JPV1MpLHRoaXMuX2J1ZmZlclNlcnZpY2UucmVzaXplKGUsdCkpfXNjcm9sbChlLHQ9ITEpe3RoaXMuX2J1ZmZlclNlcnZpY2Uuc2Nyb2xsKGUsdCl9c2Nyb2xsTGluZXMoZSx0LGkpe3RoaXMuX2J1ZmZlclNlcnZpY2Uuc2Nyb2xsTGluZXMoZSx0LGkpfXNjcm9sbFBhZ2VzKGUpe3RoaXMuX2J1ZmZlclNlcnZpY2Uuc2Nyb2xsUGFnZXMoZSl9c2Nyb2xsVG9Ub3AoKXt0aGlzLl9idWZmZXJTZXJ2aWNlLnNjcm9sbFRvVG9wKCl9c2Nyb2xsVG9Cb3R0b20oKXt0aGlzLl9idWZmZXJTZXJ2aWNlLnNjcm9sbFRvQm90dG9tKCl9c2Nyb2xsVG9MaW5lKGUpe3RoaXMuX2J1ZmZlclNlcnZpY2Uuc2Nyb2xsVG9MaW5lKGUpfXJlZ2lzdGVyRXNjSGFuZGxlcihlLHQpe3JldHVybiB0aGlzLl9pbnB1dEhhbmRsZXIucmVnaXN0ZXJFc2NIYW5kbGVyKGUsdCl9cmVnaXN0ZXJEY3NIYW5kbGVyKGUsdCl7cmV0dXJuIHRoaXMuX2lucHV0SGFuZGxlci5yZWdpc3RlckRjc0hhbmRsZXIoZSx0KX1yZWdpc3RlckNzaUhhbmRsZXIoZSx0KXtyZXR1cm4gdGhpcy5faW5wdXRIYW5kbGVyLnJlZ2lzdGVyQ3NpSGFuZGxlcihlLHQpfXJlZ2lzdGVyT3NjSGFuZGxlcihlLHQpe3JldHVybiB0aGlzLl9pbnB1dEhhbmRsZXIucmVnaXN0ZXJPc2NIYW5kbGVyKGUsdCl9X3NldHVwKCl7dGhpcy5faGFuZGxlV2luZG93c1B0eU9wdGlvbkNoYW5nZSgpfXJlc2V0KCl7dGhpcy5faW5wdXRIYW5kbGVyLnJlc2V0KCksdGhpcy5fYnVmZmVyU2VydmljZS5yZXNldCgpLHRoaXMuX2NoYXJzZXRTZXJ2aWNlLnJlc2V0KCksdGhpcy5jb3JlU2VydmljZS5yZXNldCgpLHRoaXMuY29yZU1vdXNlU2VydmljZS5yZXNldCgpfV9oYW5kbGVXaW5kb3dzUHR5T3B0aW9uQ2hhbmdlKCl7dmFyIGU7bGV0IHQ9ITE7Y29uc3QgaT10aGlzLm9wdGlvbnNTZXJ2aWNlLnJhd09wdGlvbnMud2luZG93c1B0eTtpJiZ2b2lkIDAhPT1pLmJ1aWxkTnVtYmVyJiZ2b2lkIDAhPT1pLmJ1aWxkTnVtYmVyP3Q9ISEoXCJjb25wdHlcIj09PWkuYmFja2VuZCYmaS5idWlsZE51bWJlcjwyMTM3Nik6dGhpcy5vcHRpb25zU2VydmljZS5yYXdPcHRpb25zLndpbmRvd3NNb2RlJiYodD0hMCksdD90aGlzLl9lbmFibGVXaW5kb3dzV3JhcHBpbmdIZXVyaXN0aWNzKCk6KG51bGw9PT0oZT10aGlzLl93aW5kb3dzV3JhcHBpbmdIZXVyaXN0aWNzKXx8dm9pZCAwPT09ZXx8ZS5kaXNwb3NlKCksdGhpcy5fd2luZG93c1dyYXBwaW5nSGV1cmlzdGljcz12b2lkIDApfV9lbmFibGVXaW5kb3dzV3JhcHBpbmdIZXVyaXN0aWNzKCl7aWYoIXRoaXMuX3dpbmRvd3NXcmFwcGluZ0hldXJpc3RpY3Mpe2NvbnN0IGU9W107ZS5wdXNoKHRoaXMub25MaW5lRmVlZChmLnVwZGF0ZVdpbmRvd3NNb2RlV3JhcHBlZFN0YXRlLmJpbmQobnVsbCx0aGlzLl9idWZmZXJTZXJ2aWNlKSkpLGUucHVzaCh0aGlzLnJlZ2lzdGVyQ3NpSGFuZGxlcih7ZmluYWw6XCJIXCJ9LCgoKT0+KCgwLGYudXBkYXRlV2luZG93c01vZGVXcmFwcGVkU3RhdGUpKHRoaXMuX2J1ZmZlclNlcnZpY2UpLCExKSkpKSx0aGlzLl93aW5kb3dzV3JhcHBpbmdIZXVyaXN0aWNzPSgwLHMudG9EaXNwb3NhYmxlKSgoKCk9Pntmb3IoY29uc3QgdCBvZiBlKXQuZGlzcG9zZSgpfSkpfX19dC5Db3JlVGVybWluYWw9bX0sODQ2MDooZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZm9yd2FyZEV2ZW50PXQuRXZlbnRFbWl0dGVyPXZvaWQgMCx0LkV2ZW50RW1pdHRlcj1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMuX2xpc3RlbmVycz1bXSx0aGlzLl9kaXNwb3NlZD0hMX1nZXQgZXZlbnQoKXtyZXR1cm4gdGhpcy5fZXZlbnR8fCh0aGlzLl9ldmVudD1lPT4odGhpcy5fbGlzdGVuZXJzLnB1c2goZSkse2Rpc3Bvc2U6KCk9PntpZighdGhpcy5fZGlzcG9zZWQpZm9yKGxldCB0PTA7dDx0aGlzLl9saXN0ZW5lcnMubGVuZ3RoO3QrKylpZih0aGlzLl9saXN0ZW5lcnNbdF09PT1lKXJldHVybiB2b2lkIHRoaXMuX2xpc3RlbmVycy5zcGxpY2UodCwxKX19KSksdGhpcy5fZXZlbnR9ZmlyZShlLHQpe2NvbnN0IGk9W107Zm9yKGxldCBlPTA7ZTx0aGlzLl9saXN0ZW5lcnMubGVuZ3RoO2UrKylpLnB1c2godGhpcy5fbGlzdGVuZXJzW2VdKTtmb3IobGV0IHM9MDtzPGkubGVuZ3RoO3MrKylpW3NdLmNhbGwodm9pZCAwLGUsdCl9ZGlzcG9zZSgpe3RoaXMuX2xpc3RlbmVycyYmKHRoaXMuX2xpc3RlbmVycy5sZW5ndGg9MCksdGhpcy5fZGlzcG9zZWQ9ITB9fSx0LmZvcndhcmRFdmVudD1mdW5jdGlvbihlLHQpe3JldHVybiBlKChlPT50LmZpcmUoZSkpKX19LDU0MzU6ZnVuY3Rpb24oZSx0LGkpe3ZhciBzPXRoaXMmJnRoaXMuX19kZWNvcmF0ZXx8ZnVuY3Rpb24oZSx0LGkscyl7dmFyIHIsbj1hcmd1bWVudHMubGVuZ3RoLG89bjwzP3Q6bnVsbD09PXM/cz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsaSk6cztpZihcIm9iamVjdFwiPT10eXBlb2YgUmVmbGVjdCYmXCJmdW5jdGlvblwiPT10eXBlb2YgUmVmbGVjdC5kZWNvcmF0ZSlvPVJlZmxlY3QuZGVjb3JhdGUoZSx0LGkscyk7ZWxzZSBmb3IodmFyIGE9ZS5sZW5ndGgtMTthPj0wO2EtLSkocj1lW2FdKSYmKG89KG48Mz9yKG8pOm4+Mz9yKHQsaSxvKTpyKHQsaSkpfHxvKTtyZXR1cm4gbj4zJiZvJiZPYmplY3QuZGVmaW5lUHJvcGVydHkodCxpLG8pLG99LHI9dGhpcyYmdGhpcy5fX3BhcmFtfHxmdW5jdGlvbihlLHQpe3JldHVybiBmdW5jdGlvbihpLHMpe3QoaSxzLGUpfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5JbnB1dEhhbmRsZXI9dC5XaW5kb3dzT3B0aW9uc1JlcG9ydFR5cGU9dm9pZCAwO2NvbnN0IG49aSgyNTg0KSxvPWkoNzExNiksYT1pKDIwMTUpLGg9aSg4NDQpLGM9aSg0ODIpLGw9aSg4NDM3KSxkPWkoODQ2MCksXz1pKDY0MyksdT1pKDUxMSksZj1pKDM3MzQpLHY9aSgyNTg1KSxnPWkoNjI0MikscD1pKDYzNTEpLFM9aSg1OTQxKSxtPXtcIihcIjowLFwiKVwiOjEsXCIqXCI6MixcIitcIjozLFwiLVwiOjEsXCIuXCI6Mn0sQz0xMzEwNzI7ZnVuY3Rpb24gYihlLHQpe2lmKGU+MjQpcmV0dXJuIHQuc2V0V2luTGluZXN8fCExO3N3aXRjaChlKXtjYXNlIDE6cmV0dXJuISF0LnJlc3RvcmVXaW47Y2FzZSAyOnJldHVybiEhdC5taW5pbWl6ZVdpbjtjYXNlIDM6cmV0dXJuISF0LnNldFdpblBvc2l0aW9uO2Nhc2UgNDpyZXR1cm4hIXQuc2V0V2luU2l6ZVBpeGVscztjYXNlIDU6cmV0dXJuISF0LnJhaXNlV2luO2Nhc2UgNjpyZXR1cm4hIXQubG93ZXJXaW47Y2FzZSA3OnJldHVybiEhdC5yZWZyZXNoV2luO2Nhc2UgODpyZXR1cm4hIXQuc2V0V2luU2l6ZUNoYXJzO2Nhc2UgOTpyZXR1cm4hIXQubWF4aW1pemVXaW47Y2FzZSAxMDpyZXR1cm4hIXQuZnVsbHNjcmVlbldpbjtjYXNlIDExOnJldHVybiEhdC5nZXRXaW5TdGF0ZTtjYXNlIDEzOnJldHVybiEhdC5nZXRXaW5Qb3NpdGlvbjtjYXNlIDE0OnJldHVybiEhdC5nZXRXaW5TaXplUGl4ZWxzO2Nhc2UgMTU6cmV0dXJuISF0LmdldFNjcmVlblNpemVQaXhlbHM7Y2FzZSAxNjpyZXR1cm4hIXQuZ2V0Q2VsbFNpemVQaXhlbHM7Y2FzZSAxODpyZXR1cm4hIXQuZ2V0V2luU2l6ZUNoYXJzO2Nhc2UgMTk6cmV0dXJuISF0LmdldFNjcmVlblNpemVDaGFycztjYXNlIDIwOnJldHVybiEhdC5nZXRJY29uVGl0bGU7Y2FzZSAyMTpyZXR1cm4hIXQuZ2V0V2luVGl0bGU7Y2FzZSAyMjpyZXR1cm4hIXQucHVzaFRpdGxlO2Nhc2UgMjM6cmV0dXJuISF0LnBvcFRpdGxlO2Nhc2UgMjQ6cmV0dXJuISF0LnNldFdpbkxpbmVzfXJldHVybiExfXZhciB5OyFmdW5jdGlvbihlKXtlW2UuR0VUX1dJTl9TSVpFX1BJWEVMUz0wXT1cIkdFVF9XSU5fU0laRV9QSVhFTFNcIixlW2UuR0VUX0NFTExfU0laRV9QSVhFTFM9MV09XCJHRVRfQ0VMTF9TSVpFX1BJWEVMU1wifSh5PXQuV2luZG93c09wdGlvbnNSZXBvcnRUeXBlfHwodC5XaW5kb3dzT3B0aW9uc1JlcG9ydFR5cGU9e30pKTtsZXQgdz0wO2NsYXNzIEUgZXh0ZW5kcyBoLkRpc3Bvc2FibGV7Y29uc3RydWN0b3IoZSx0LGkscyxyLGgsXyxmLHY9bmV3IGEuRXNjYXBlU2VxdWVuY2VQYXJzZXIpe3N1cGVyKCksdGhpcy5fYnVmZmVyU2VydmljZT1lLHRoaXMuX2NoYXJzZXRTZXJ2aWNlPXQsdGhpcy5fY29yZVNlcnZpY2U9aSx0aGlzLl9sb2dTZXJ2aWNlPXMsdGhpcy5fb3B0aW9uc1NlcnZpY2U9cix0aGlzLl9vc2NMaW5rU2VydmljZT1oLHRoaXMuX2NvcmVNb3VzZVNlcnZpY2U9Xyx0aGlzLl91bmljb2RlU2VydmljZT1mLHRoaXMuX3BhcnNlcj12LHRoaXMuX3BhcnNlQnVmZmVyPW5ldyBVaW50MzJBcnJheSg0MDk2KSx0aGlzLl9zdHJpbmdEZWNvZGVyPW5ldyBjLlN0cmluZ1RvVXRmMzIsdGhpcy5fdXRmOERlY29kZXI9bmV3IGMuVXRmOFRvVXRmMzIsdGhpcy5fd29ya0NlbGw9bmV3IHUuQ2VsbERhdGEsdGhpcy5fd2luZG93VGl0bGU9XCJcIix0aGlzLl9pY29uTmFtZT1cIlwiLHRoaXMuX3dpbmRvd1RpdGxlU3RhY2s9W10sdGhpcy5faWNvbk5hbWVTdGFjaz1bXSx0aGlzLl9jdXJBdHRyRGF0YT1sLkRFRkFVTFRfQVRUUl9EQVRBLmNsb25lKCksdGhpcy5fZXJhc2VBdHRyRGF0YUludGVybmFsPWwuREVGQVVMVF9BVFRSX0RBVEEuY2xvbmUoKSx0aGlzLl9vblJlcXVlc3RCZWxsPXRoaXMucmVnaXN0ZXIobmV3IGQuRXZlbnRFbWl0dGVyKSx0aGlzLm9uUmVxdWVzdEJlbGw9dGhpcy5fb25SZXF1ZXN0QmVsbC5ldmVudCx0aGlzLl9vblJlcXVlc3RSZWZyZXNoUm93cz10aGlzLnJlZ2lzdGVyKG5ldyBkLkV2ZW50RW1pdHRlciksdGhpcy5vblJlcXVlc3RSZWZyZXNoUm93cz10aGlzLl9vblJlcXVlc3RSZWZyZXNoUm93cy5ldmVudCx0aGlzLl9vblJlcXVlc3RSZXNldD10aGlzLnJlZ2lzdGVyKG5ldyBkLkV2ZW50RW1pdHRlciksdGhpcy5vblJlcXVlc3RSZXNldD10aGlzLl9vblJlcXVlc3RSZXNldC5ldmVudCx0aGlzLl9vblJlcXVlc3RTZW5kRm9jdXM9dGhpcy5yZWdpc3RlcihuZXcgZC5FdmVudEVtaXR0ZXIpLHRoaXMub25SZXF1ZXN0U2VuZEZvY3VzPXRoaXMuX29uUmVxdWVzdFNlbmRGb2N1cy5ldmVudCx0aGlzLl9vblJlcXVlc3RTeW5jU2Nyb2xsQmFyPXRoaXMucmVnaXN0ZXIobmV3IGQuRXZlbnRFbWl0dGVyKSx0aGlzLm9uUmVxdWVzdFN5bmNTY3JvbGxCYXI9dGhpcy5fb25SZXF1ZXN0U3luY1Njcm9sbEJhci5ldmVudCx0aGlzLl9vblJlcXVlc3RXaW5kb3dzT3B0aW9uc1JlcG9ydD10aGlzLnJlZ2lzdGVyKG5ldyBkLkV2ZW50RW1pdHRlciksdGhpcy5vblJlcXVlc3RXaW5kb3dzT3B0aW9uc1JlcG9ydD10aGlzLl9vblJlcXVlc3RXaW5kb3dzT3B0aW9uc1JlcG9ydC5ldmVudCx0aGlzLl9vbkExMXlDaGFyPXRoaXMucmVnaXN0ZXIobmV3IGQuRXZlbnRFbWl0dGVyKSx0aGlzLm9uQTExeUNoYXI9dGhpcy5fb25BMTF5Q2hhci5ldmVudCx0aGlzLl9vbkExMXlUYWI9dGhpcy5yZWdpc3RlcihuZXcgZC5FdmVudEVtaXR0ZXIpLHRoaXMub25BMTF5VGFiPXRoaXMuX29uQTExeVRhYi5ldmVudCx0aGlzLl9vbkN1cnNvck1vdmU9dGhpcy5yZWdpc3RlcihuZXcgZC5FdmVudEVtaXR0ZXIpLHRoaXMub25DdXJzb3JNb3ZlPXRoaXMuX29uQ3Vyc29yTW92ZS5ldmVudCx0aGlzLl9vbkxpbmVGZWVkPXRoaXMucmVnaXN0ZXIobmV3IGQuRXZlbnRFbWl0dGVyKSx0aGlzLm9uTGluZUZlZWQ9dGhpcy5fb25MaW5lRmVlZC5ldmVudCx0aGlzLl9vblNjcm9sbD10aGlzLnJlZ2lzdGVyKG5ldyBkLkV2ZW50RW1pdHRlciksdGhpcy5vblNjcm9sbD10aGlzLl9vblNjcm9sbC5ldmVudCx0aGlzLl9vblRpdGxlQ2hhbmdlPXRoaXMucmVnaXN0ZXIobmV3IGQuRXZlbnRFbWl0dGVyKSx0aGlzLm9uVGl0bGVDaGFuZ2U9dGhpcy5fb25UaXRsZUNoYW5nZS5ldmVudCx0aGlzLl9vbkNvbG9yPXRoaXMucmVnaXN0ZXIobmV3IGQuRXZlbnRFbWl0dGVyKSx0aGlzLm9uQ29sb3I9dGhpcy5fb25Db2xvci5ldmVudCx0aGlzLl9wYXJzZVN0YWNrPXtwYXVzZWQ6ITEsY3Vyc29yU3RhcnRYOjAsY3Vyc29yU3RhcnRZOjAsZGVjb2RlZExlbmd0aDowLHBvc2l0aW9uOjB9LHRoaXMuX3NwZWNpYWxDb2xvcnM9WzI1NiwyNTcsMjU4XSx0aGlzLnJlZ2lzdGVyKHRoaXMuX3BhcnNlciksdGhpcy5fZGlydHlSb3dUcmFja2VyPW5ldyBMKHRoaXMuX2J1ZmZlclNlcnZpY2UpLHRoaXMuX2FjdGl2ZUJ1ZmZlcj10aGlzLl9idWZmZXJTZXJ2aWNlLmJ1ZmZlcix0aGlzLnJlZ2lzdGVyKHRoaXMuX2J1ZmZlclNlcnZpY2UuYnVmZmVycy5vbkJ1ZmZlckFjdGl2YXRlKChlPT50aGlzLl9hY3RpdmVCdWZmZXI9ZS5hY3RpdmVCdWZmZXIpKSksdGhpcy5fcGFyc2VyLnNldENzaUhhbmRsZXJGYWxsYmFjaygoKGUsdCk9Pnt0aGlzLl9sb2dTZXJ2aWNlLmRlYnVnKFwiVW5rbm93biBDU0kgY29kZTogXCIse2lkZW50aWZpZXI6dGhpcy5fcGFyc2VyLmlkZW50VG9TdHJpbmcoZSkscGFyYW1zOnQudG9BcnJheSgpfSl9KSksdGhpcy5fcGFyc2VyLnNldEVzY0hhbmRsZXJGYWxsYmFjaygoZT0+e3RoaXMuX2xvZ1NlcnZpY2UuZGVidWcoXCJVbmtub3duIEVTQyBjb2RlOiBcIix7aWRlbnRpZmllcjp0aGlzLl9wYXJzZXIuaWRlbnRUb1N0cmluZyhlKX0pfSkpLHRoaXMuX3BhcnNlci5zZXRFeGVjdXRlSGFuZGxlckZhbGxiYWNrKChlPT57dGhpcy5fbG9nU2VydmljZS5kZWJ1ZyhcIlVua25vd24gRVhFQ1VURSBjb2RlOiBcIix7Y29kZTplfSl9KSksdGhpcy5fcGFyc2VyLnNldE9zY0hhbmRsZXJGYWxsYmFjaygoKGUsdCxpKT0+e3RoaXMuX2xvZ1NlcnZpY2UuZGVidWcoXCJVbmtub3duIE9TQyBjb2RlOiBcIix7aWRlbnRpZmllcjplLGFjdGlvbjp0LGRhdGE6aX0pfSkpLHRoaXMuX3BhcnNlci5zZXREY3NIYW5kbGVyRmFsbGJhY2soKChlLHQsaSk9PntcIkhPT0tcIj09PXQmJihpPWkudG9BcnJheSgpKSx0aGlzLl9sb2dTZXJ2aWNlLmRlYnVnKFwiVW5rbm93biBEQ1MgY29kZTogXCIse2lkZW50aWZpZXI6dGhpcy5fcGFyc2VyLmlkZW50VG9TdHJpbmcoZSksYWN0aW9uOnQscGF5bG9hZDppfSl9KSksdGhpcy5fcGFyc2VyLnNldFByaW50SGFuZGxlcigoKGUsdCxpKT0+dGhpcy5wcmludChlLHQsaSkpKSx0aGlzLl9wYXJzZXIucmVnaXN0ZXJDc2lIYW5kbGVyKHtmaW5hbDpcIkBcIn0sKGU9PnRoaXMuaW5zZXJ0Q2hhcnMoZSkpKSx0aGlzLl9wYXJzZXIucmVnaXN0ZXJDc2lIYW5kbGVyKHtpbnRlcm1lZGlhdGVzOlwiIFwiLGZpbmFsOlwiQFwifSwoZT0+dGhpcy5zY3JvbGxMZWZ0KGUpKSksdGhpcy5fcGFyc2VyLnJlZ2lzdGVyQ3NpSGFuZGxlcih7ZmluYWw6XCJBXCJ9LChlPT50aGlzLmN1cnNvclVwKGUpKSksdGhpcy5fcGFyc2VyLnJlZ2lzdGVyQ3NpSGFuZGxlcih7aW50ZXJtZWRpYXRlczpcIiBcIixmaW5hbDpcIkFcIn0sKGU9PnRoaXMuc2Nyb2xsUmlnaHQoZSkpKSx0aGlzLl9wYXJzZXIucmVnaXN0ZXJDc2lIYW5kbGVyKHtmaW5hbDpcIkJcIn0sKGU9PnRoaXMuY3Vyc29yRG93bihlKSkpLHRoaXMuX3BhcnNlci5yZWdpc3RlckNzaUhhbmRsZXIoe2ZpbmFsOlwiQ1wifSwoZT0+dGhpcy5jdXJzb3JGb3J3YXJkKGUpKSksdGhpcy5fcGFyc2VyLnJlZ2lzdGVyQ3NpSGFuZGxlcih7ZmluYWw6XCJEXCJ9LChlPT50aGlzLmN1cnNvckJhY2t3YXJkKGUpKSksdGhpcy5fcGFyc2VyLnJlZ2lzdGVyQ3NpSGFuZGxlcih7ZmluYWw6XCJFXCJ9LChlPT50aGlzLmN1cnNvck5leHRMaW5lKGUpKSksdGhpcy5fcGFyc2VyLnJlZ2lzdGVyQ3NpSGFuZGxlcih7ZmluYWw6XCJGXCJ9LChlPT50aGlzLmN1cnNvclByZWNlZGluZ0xpbmUoZSkpKSx0aGlzLl9wYXJzZXIucmVnaXN0ZXJDc2lIYW5kbGVyKHtmaW5hbDpcIkdcIn0sKGU9PnRoaXMuY3Vyc29yQ2hhckFic29sdXRlKGUpKSksdGhpcy5fcGFyc2VyLnJlZ2lzdGVyQ3NpSGFuZGxlcih7ZmluYWw6XCJIXCJ9LChlPT50aGlzLmN1cnNvclBvc2l0aW9uKGUpKSksdGhpcy5fcGFyc2VyLnJlZ2lzdGVyQ3NpSGFuZGxlcih7ZmluYWw6XCJJXCJ9LChlPT50aGlzLmN1cnNvckZvcndhcmRUYWIoZSkpKSx0aGlzLl9wYXJzZXIucmVnaXN0ZXJDc2lIYW5kbGVyKHtmaW5hbDpcIkpcIn0sKGU9PnRoaXMuZXJhc2VJbkRpc3BsYXkoZSwhMSkpKSx0aGlzLl9wYXJzZXIucmVnaXN0ZXJDc2lIYW5kbGVyKHtwcmVmaXg6XCI/XCIsZmluYWw6XCJKXCJ9LChlPT50aGlzLmVyYXNlSW5EaXNwbGF5KGUsITApKSksdGhpcy5fcGFyc2VyLnJlZ2lzdGVyQ3NpSGFuZGxlcih7ZmluYWw6XCJLXCJ9LChlPT50aGlzLmVyYXNlSW5MaW5lKGUsITEpKSksdGhpcy5fcGFyc2VyLnJlZ2lzdGVyQ3NpSGFuZGxlcih7cHJlZml4OlwiP1wiLGZpbmFsOlwiS1wifSwoZT0+dGhpcy5lcmFzZUluTGluZShlLCEwKSkpLHRoaXMuX3BhcnNlci5yZWdpc3RlckNzaUhhbmRsZXIoe2ZpbmFsOlwiTFwifSwoZT0+dGhpcy5pbnNlcnRMaW5lcyhlKSkpLHRoaXMuX3BhcnNlci5yZWdpc3RlckNzaUhhbmRsZXIoe2ZpbmFsOlwiTVwifSwoZT0+dGhpcy5kZWxldGVMaW5lcyhlKSkpLHRoaXMuX3BhcnNlci5yZWdpc3RlckNzaUhhbmRsZXIoe2ZpbmFsOlwiUFwifSwoZT0+dGhpcy5kZWxldGVDaGFycyhlKSkpLHRoaXMuX3BhcnNlci5yZWdpc3RlckNzaUhhbmRsZXIoe2ZpbmFsOlwiU1wifSwoZT0+dGhpcy5zY3JvbGxVcChlKSkpLHRoaXMuX3BhcnNlci5yZWdpc3RlckNzaUhhbmRsZXIoe2ZpbmFsOlwiVFwifSwoZT0+dGhpcy5zY3JvbGxEb3duKGUpKSksdGhpcy5fcGFyc2VyLnJlZ2lzdGVyQ3NpSGFuZGxlcih7ZmluYWw6XCJYXCJ9LChlPT50aGlzLmVyYXNlQ2hhcnMoZSkpKSx0aGlzLl9wYXJzZXIucmVnaXN0ZXJDc2lIYW5kbGVyKHtmaW5hbDpcIlpcIn0sKGU9PnRoaXMuY3Vyc29yQmFja3dhcmRUYWIoZSkpKSx0aGlzLl9wYXJzZXIucmVnaXN0ZXJDc2lIYW5kbGVyKHtmaW5hbDpcImBcIn0sKGU9PnRoaXMuY2hhclBvc0Fic29sdXRlKGUpKSksdGhpcy5fcGFyc2VyLnJlZ2lzdGVyQ3NpSGFuZGxlcih7ZmluYWw6XCJhXCJ9LChlPT50aGlzLmhQb3NpdGlvblJlbGF0aXZlKGUpKSksdGhpcy5fcGFyc2VyLnJlZ2lzdGVyQ3NpSGFuZGxlcih7ZmluYWw6XCJiXCJ9LChlPT50aGlzLnJlcGVhdFByZWNlZGluZ0NoYXJhY3RlcihlKSkpLHRoaXMuX3BhcnNlci5yZWdpc3RlckNzaUhhbmRsZXIoe2ZpbmFsOlwiY1wifSwoZT0+dGhpcy5zZW5kRGV2aWNlQXR0cmlidXRlc1ByaW1hcnkoZSkpKSx0aGlzLl9wYXJzZXIucmVnaXN0ZXJDc2lIYW5kbGVyKHtwcmVmaXg6XCI+XCIsZmluYWw6XCJjXCJ9LChlPT50aGlzLnNlbmREZXZpY2VBdHRyaWJ1dGVzU2Vjb25kYXJ5KGUpKSksdGhpcy5fcGFyc2VyLnJlZ2lzdGVyQ3NpSGFuZGxlcih7ZmluYWw6XCJkXCJ9LChlPT50aGlzLmxpbmVQb3NBYnNvbHV0ZShlKSkpLHRoaXMuX3BhcnNlci5yZWdpc3RlckNzaUhhbmRsZXIoe2ZpbmFsOlwiZVwifSwoZT0+dGhpcy52UG9zaXRpb25SZWxhdGl2ZShlKSkpLHRoaXMuX3BhcnNlci5yZWdpc3RlckNzaUhhbmRsZXIoe2ZpbmFsOlwiZlwifSwoZT0+dGhpcy5oVlBvc2l0aW9uKGUpKSksdGhpcy5fcGFyc2VyLnJlZ2lzdGVyQ3NpSGFuZGxlcih7ZmluYWw6XCJnXCJ9LChlPT50aGlzLnRhYkNsZWFyKGUpKSksdGhpcy5fcGFyc2VyLnJlZ2lzdGVyQ3NpSGFuZGxlcih7ZmluYWw6XCJoXCJ9LChlPT50aGlzLnNldE1vZGUoZSkpKSx0aGlzLl9wYXJzZXIucmVnaXN0ZXJDc2lIYW5kbGVyKHtwcmVmaXg6XCI/XCIsZmluYWw6XCJoXCJ9LChlPT50aGlzLnNldE1vZGVQcml2YXRlKGUpKSksdGhpcy5fcGFyc2VyLnJlZ2lzdGVyQ3NpSGFuZGxlcih7ZmluYWw6XCJsXCJ9LChlPT50aGlzLnJlc2V0TW9kZShlKSkpLHRoaXMuX3BhcnNlci5yZWdpc3RlckNzaUhhbmRsZXIoe3ByZWZpeDpcIj9cIixmaW5hbDpcImxcIn0sKGU9PnRoaXMucmVzZXRNb2RlUHJpdmF0ZShlKSkpLHRoaXMuX3BhcnNlci5yZWdpc3RlckNzaUhhbmRsZXIoe2ZpbmFsOlwibVwifSwoZT0+dGhpcy5jaGFyQXR0cmlidXRlcyhlKSkpLHRoaXMuX3BhcnNlci5yZWdpc3RlckNzaUhhbmRsZXIoe2ZpbmFsOlwiblwifSwoZT0+dGhpcy5kZXZpY2VTdGF0dXMoZSkpKSx0aGlzLl9wYXJzZXIucmVnaXN0ZXJDc2lIYW5kbGVyKHtwcmVmaXg6XCI/XCIsZmluYWw6XCJuXCJ9LChlPT50aGlzLmRldmljZVN0YXR1c1ByaXZhdGUoZSkpKSx0aGlzLl9wYXJzZXIucmVnaXN0ZXJDc2lIYW5kbGVyKHtpbnRlcm1lZGlhdGVzOlwiIVwiLGZpbmFsOlwicFwifSwoZT0+dGhpcy5zb2Z0UmVzZXQoZSkpKSx0aGlzLl9wYXJzZXIucmVnaXN0ZXJDc2lIYW5kbGVyKHtpbnRlcm1lZGlhdGVzOlwiIFwiLGZpbmFsOlwicVwifSwoZT0+dGhpcy5zZXRDdXJzb3JTdHlsZShlKSkpLHRoaXMuX3BhcnNlci5yZWdpc3RlckNzaUhhbmRsZXIoe2ZpbmFsOlwiclwifSwoZT0+dGhpcy5zZXRTY3JvbGxSZWdpb24oZSkpKSx0aGlzLl9wYXJzZXIucmVnaXN0ZXJDc2lIYW5kbGVyKHtmaW5hbDpcInNcIn0sKGU9PnRoaXMuc2F2ZUN1cnNvcihlKSkpLHRoaXMuX3BhcnNlci5yZWdpc3RlckNzaUhhbmRsZXIoe2ZpbmFsOlwidFwifSwoZT0+dGhpcy53aW5kb3dPcHRpb25zKGUpKSksdGhpcy5fcGFyc2VyLnJlZ2lzdGVyQ3NpSGFuZGxlcih7ZmluYWw6XCJ1XCJ9LChlPT50aGlzLnJlc3RvcmVDdXJzb3IoZSkpKSx0aGlzLl9wYXJzZXIucmVnaXN0ZXJDc2lIYW5kbGVyKHtpbnRlcm1lZGlhdGVzOlwiJ1wiLGZpbmFsOlwifVwifSwoZT0+dGhpcy5pbnNlcnRDb2x1bW5zKGUpKSksdGhpcy5fcGFyc2VyLnJlZ2lzdGVyQ3NpSGFuZGxlcih7aW50ZXJtZWRpYXRlczpcIidcIixmaW5hbDpcIn5cIn0sKGU9PnRoaXMuZGVsZXRlQ29sdW1ucyhlKSkpLHRoaXMuX3BhcnNlci5yZWdpc3RlckNzaUhhbmRsZXIoe2ludGVybWVkaWF0ZXM6J1wiJyxmaW5hbDpcInFcIn0sKGU9PnRoaXMuc2VsZWN0UHJvdGVjdGVkKGUpKSksdGhpcy5fcGFyc2VyLnJlZ2lzdGVyQ3NpSGFuZGxlcih7aW50ZXJtZWRpYXRlczpcIiRcIixmaW5hbDpcInBcIn0sKGU9PnRoaXMucmVxdWVzdE1vZGUoZSwhMCkpKSx0aGlzLl9wYXJzZXIucmVnaXN0ZXJDc2lIYW5kbGVyKHtwcmVmaXg6XCI/XCIsaW50ZXJtZWRpYXRlczpcIiRcIixmaW5hbDpcInBcIn0sKGU9PnRoaXMucmVxdWVzdE1vZGUoZSwhMSkpKSx0aGlzLl9wYXJzZXIuc2V0RXhlY3V0ZUhhbmRsZXIobi5DMC5CRUwsKCgpPT50aGlzLmJlbGwoKSkpLHRoaXMuX3BhcnNlci5zZXRFeGVjdXRlSGFuZGxlcihuLkMwLkxGLCgoKT0+dGhpcy5saW5lRmVlZCgpKSksdGhpcy5fcGFyc2VyLnNldEV4ZWN1dGVIYW5kbGVyKG4uQzAuVlQsKCgpPT50aGlzLmxpbmVGZWVkKCkpKSx0aGlzLl9wYXJzZXIuc2V0RXhlY3V0ZUhhbmRsZXIobi5DMC5GRiwoKCk9PnRoaXMubGluZUZlZWQoKSkpLHRoaXMuX3BhcnNlci5zZXRFeGVjdXRlSGFuZGxlcihuLkMwLkNSLCgoKT0+dGhpcy5jYXJyaWFnZVJldHVybigpKSksdGhpcy5fcGFyc2VyLnNldEV4ZWN1dGVIYW5kbGVyKG4uQzAuQlMsKCgpPT50aGlzLmJhY2tzcGFjZSgpKSksdGhpcy5fcGFyc2VyLnNldEV4ZWN1dGVIYW5kbGVyKG4uQzAuSFQsKCgpPT50aGlzLnRhYigpKSksdGhpcy5fcGFyc2VyLnNldEV4ZWN1dGVIYW5kbGVyKG4uQzAuU08sKCgpPT50aGlzLnNoaWZ0T3V0KCkpKSx0aGlzLl9wYXJzZXIuc2V0RXhlY3V0ZUhhbmRsZXIobi5DMC5TSSwoKCk9PnRoaXMuc2hpZnRJbigpKSksdGhpcy5fcGFyc2VyLnNldEV4ZWN1dGVIYW5kbGVyKG4uQzEuSU5ELCgoKT0+dGhpcy5pbmRleCgpKSksdGhpcy5fcGFyc2VyLnNldEV4ZWN1dGVIYW5kbGVyKG4uQzEuTkVMLCgoKT0+dGhpcy5uZXh0TGluZSgpKSksdGhpcy5fcGFyc2VyLnNldEV4ZWN1dGVIYW5kbGVyKG4uQzEuSFRTLCgoKT0+dGhpcy50YWJTZXQoKSkpLHRoaXMuX3BhcnNlci5yZWdpc3Rlck9zY0hhbmRsZXIoMCxuZXcgZy5Pc2NIYW5kbGVyKChlPT4odGhpcy5zZXRUaXRsZShlKSx0aGlzLnNldEljb25OYW1lKGUpLCEwKSkpKSx0aGlzLl9wYXJzZXIucmVnaXN0ZXJPc2NIYW5kbGVyKDEsbmV3IGcuT3NjSGFuZGxlcigoZT0+dGhpcy5zZXRJY29uTmFtZShlKSkpKSx0aGlzLl9wYXJzZXIucmVnaXN0ZXJPc2NIYW5kbGVyKDIsbmV3IGcuT3NjSGFuZGxlcigoZT0+dGhpcy5zZXRUaXRsZShlKSkpKSx0aGlzLl9wYXJzZXIucmVnaXN0ZXJPc2NIYW5kbGVyKDQsbmV3IGcuT3NjSGFuZGxlcigoZT0+dGhpcy5zZXRPclJlcG9ydEluZGV4ZWRDb2xvcihlKSkpKSx0aGlzLl9wYXJzZXIucmVnaXN0ZXJPc2NIYW5kbGVyKDgsbmV3IGcuT3NjSGFuZGxlcigoZT0+dGhpcy5zZXRIeXBlcmxpbmsoZSkpKSksdGhpcy5fcGFyc2VyLnJlZ2lzdGVyT3NjSGFuZGxlcigxMCxuZXcgZy5Pc2NIYW5kbGVyKChlPT50aGlzLnNldE9yUmVwb3J0RmdDb2xvcihlKSkpKSx0aGlzLl9wYXJzZXIucmVnaXN0ZXJPc2NIYW5kbGVyKDExLG5ldyBnLk9zY0hhbmRsZXIoKGU9PnRoaXMuc2V0T3JSZXBvcnRCZ0NvbG9yKGUpKSkpLHRoaXMuX3BhcnNlci5yZWdpc3Rlck9zY0hhbmRsZXIoMTIsbmV3IGcuT3NjSGFuZGxlcigoZT0+dGhpcy5zZXRPclJlcG9ydEN1cnNvckNvbG9yKGUpKSkpLHRoaXMuX3BhcnNlci5yZWdpc3Rlck9zY0hhbmRsZXIoMTA0LG5ldyBnLk9zY0hhbmRsZXIoKGU9PnRoaXMucmVzdG9yZUluZGV4ZWRDb2xvcihlKSkpKSx0aGlzLl9wYXJzZXIucmVnaXN0ZXJPc2NIYW5kbGVyKDExMCxuZXcgZy5Pc2NIYW5kbGVyKChlPT50aGlzLnJlc3RvcmVGZ0NvbG9yKGUpKSkpLHRoaXMuX3BhcnNlci5yZWdpc3Rlck9zY0hhbmRsZXIoMTExLG5ldyBnLk9zY0hhbmRsZXIoKGU9PnRoaXMucmVzdG9yZUJnQ29sb3IoZSkpKSksdGhpcy5fcGFyc2VyLnJlZ2lzdGVyT3NjSGFuZGxlcigxMTIsbmV3IGcuT3NjSGFuZGxlcigoZT0+dGhpcy5yZXN0b3JlQ3Vyc29yQ29sb3IoZSkpKSksdGhpcy5fcGFyc2VyLnJlZ2lzdGVyRXNjSGFuZGxlcih7ZmluYWw6XCI3XCJ9LCgoKT0+dGhpcy5zYXZlQ3Vyc29yKCkpKSx0aGlzLl9wYXJzZXIucmVnaXN0ZXJFc2NIYW5kbGVyKHtmaW5hbDpcIjhcIn0sKCgpPT50aGlzLnJlc3RvcmVDdXJzb3IoKSkpLHRoaXMuX3BhcnNlci5yZWdpc3RlckVzY0hhbmRsZXIoe2ZpbmFsOlwiRFwifSwoKCk9PnRoaXMuaW5kZXgoKSkpLHRoaXMuX3BhcnNlci5yZWdpc3RlckVzY0hhbmRsZXIoe2ZpbmFsOlwiRVwifSwoKCk9PnRoaXMubmV4dExpbmUoKSkpLHRoaXMuX3BhcnNlci5yZWdpc3RlckVzY0hhbmRsZXIoe2ZpbmFsOlwiSFwifSwoKCk9PnRoaXMudGFiU2V0KCkpKSx0aGlzLl9wYXJzZXIucmVnaXN0ZXJFc2NIYW5kbGVyKHtmaW5hbDpcIk1cIn0sKCgpPT50aGlzLnJldmVyc2VJbmRleCgpKSksdGhpcy5fcGFyc2VyLnJlZ2lzdGVyRXNjSGFuZGxlcih7ZmluYWw6XCI9XCJ9LCgoKT0+dGhpcy5rZXlwYWRBcHBsaWNhdGlvbk1vZGUoKSkpLHRoaXMuX3BhcnNlci5yZWdpc3RlckVzY0hhbmRsZXIoe2ZpbmFsOlwiPlwifSwoKCk9PnRoaXMua2V5cGFkTnVtZXJpY01vZGUoKSkpLHRoaXMuX3BhcnNlci5yZWdpc3RlckVzY0hhbmRsZXIoe2ZpbmFsOlwiY1wifSwoKCk9PnRoaXMuZnVsbFJlc2V0KCkpKSx0aGlzLl9wYXJzZXIucmVnaXN0ZXJFc2NIYW5kbGVyKHtmaW5hbDpcIm5cIn0sKCgpPT50aGlzLnNldGdMZXZlbCgyKSkpLHRoaXMuX3BhcnNlci5yZWdpc3RlckVzY0hhbmRsZXIoe2ZpbmFsOlwib1wifSwoKCk9PnRoaXMuc2V0Z0xldmVsKDMpKSksdGhpcy5fcGFyc2VyLnJlZ2lzdGVyRXNjSGFuZGxlcih7ZmluYWw6XCJ8XCJ9LCgoKT0+dGhpcy5zZXRnTGV2ZWwoMykpKSx0aGlzLl9wYXJzZXIucmVnaXN0ZXJFc2NIYW5kbGVyKHtmaW5hbDpcIn1cIn0sKCgpPT50aGlzLnNldGdMZXZlbCgyKSkpLHRoaXMuX3BhcnNlci5yZWdpc3RlckVzY0hhbmRsZXIoe2ZpbmFsOlwiflwifSwoKCk9PnRoaXMuc2V0Z0xldmVsKDEpKSksdGhpcy5fcGFyc2VyLnJlZ2lzdGVyRXNjSGFuZGxlcih7aW50ZXJtZWRpYXRlczpcIiVcIixmaW5hbDpcIkBcIn0sKCgpPT50aGlzLnNlbGVjdERlZmF1bHRDaGFyc2V0KCkpKSx0aGlzLl9wYXJzZXIucmVnaXN0ZXJFc2NIYW5kbGVyKHtpbnRlcm1lZGlhdGVzOlwiJVwiLGZpbmFsOlwiR1wifSwoKCk9PnRoaXMuc2VsZWN0RGVmYXVsdENoYXJzZXQoKSkpO2Zvcihjb25zdCBlIGluIG8uQ0hBUlNFVFMpdGhpcy5fcGFyc2VyLnJlZ2lzdGVyRXNjSGFuZGxlcih7aW50ZXJtZWRpYXRlczpcIihcIixmaW5hbDplfSwoKCk9PnRoaXMuc2VsZWN0Q2hhcnNldChcIihcIitlKSkpLHRoaXMuX3BhcnNlci5yZWdpc3RlckVzY0hhbmRsZXIoe2ludGVybWVkaWF0ZXM6XCIpXCIsZmluYWw6ZX0sKCgpPT50aGlzLnNlbGVjdENoYXJzZXQoXCIpXCIrZSkpKSx0aGlzLl9wYXJzZXIucmVnaXN0ZXJFc2NIYW5kbGVyKHtpbnRlcm1lZGlhdGVzOlwiKlwiLGZpbmFsOmV9LCgoKT0+dGhpcy5zZWxlY3RDaGFyc2V0KFwiKlwiK2UpKSksdGhpcy5fcGFyc2VyLnJlZ2lzdGVyRXNjSGFuZGxlcih7aW50ZXJtZWRpYXRlczpcIitcIixmaW5hbDplfSwoKCk9PnRoaXMuc2VsZWN0Q2hhcnNldChcIitcIitlKSkpLHRoaXMuX3BhcnNlci5yZWdpc3RlckVzY0hhbmRsZXIoe2ludGVybWVkaWF0ZXM6XCItXCIsZmluYWw6ZX0sKCgpPT50aGlzLnNlbGVjdENoYXJzZXQoXCItXCIrZSkpKSx0aGlzLl9wYXJzZXIucmVnaXN0ZXJFc2NIYW5kbGVyKHtpbnRlcm1lZGlhdGVzOlwiLlwiLGZpbmFsOmV9LCgoKT0+dGhpcy5zZWxlY3RDaGFyc2V0KFwiLlwiK2UpKSksdGhpcy5fcGFyc2VyLnJlZ2lzdGVyRXNjSGFuZGxlcih7aW50ZXJtZWRpYXRlczpcIi9cIixmaW5hbDplfSwoKCk9PnRoaXMuc2VsZWN0Q2hhcnNldChcIi9cIitlKSkpO3RoaXMuX3BhcnNlci5yZWdpc3RlckVzY0hhbmRsZXIoe2ludGVybWVkaWF0ZXM6XCIjXCIsZmluYWw6XCI4XCJ9LCgoKT0+dGhpcy5zY3JlZW5BbGlnbm1lbnRQYXR0ZXJuKCkpKSx0aGlzLl9wYXJzZXIuc2V0RXJyb3JIYW5kbGVyKChlPT4odGhpcy5fbG9nU2VydmljZS5lcnJvcihcIlBhcnNpbmcgZXJyb3I6IFwiLGUpLGUpKSksdGhpcy5fcGFyc2VyLnJlZ2lzdGVyRGNzSGFuZGxlcih7aW50ZXJtZWRpYXRlczpcIiRcIixmaW5hbDpcInFcIn0sbmV3IHAuRGNzSGFuZGxlcigoKGUsdCk9PnRoaXMucmVxdWVzdFN0YXR1c1N0cmluZyhlLHQpKSkpfWdldEF0dHJEYXRhKCl7cmV0dXJuIHRoaXMuX2N1ckF0dHJEYXRhfV9wcmVzZXJ2ZVN0YWNrKGUsdCxpLHMpe3RoaXMuX3BhcnNlU3RhY2sucGF1c2VkPSEwLHRoaXMuX3BhcnNlU3RhY2suY3Vyc29yU3RhcnRYPWUsdGhpcy5fcGFyc2VTdGFjay5jdXJzb3JTdGFydFk9dCx0aGlzLl9wYXJzZVN0YWNrLmRlY29kZWRMZW5ndGg9aSx0aGlzLl9wYXJzZVN0YWNrLnBvc2l0aW9uPXN9X2xvZ1Nsb3dSZXNvbHZpbmdBc3luYyhlKXt0aGlzLl9sb2dTZXJ2aWNlLmxvZ0xldmVsPD12LkxvZ0xldmVsRW51bS5XQVJOJiZQcm9taXNlLnJhY2UoW2UsbmV3IFByb21pc2UoKChlLHQpPT5zZXRUaW1lb3V0KCgoKT0+dChcIiNTTE9XX1RJTUVPVVRcIikpLDVlMykpKV0pLmNhdGNoKChlPT57aWYoXCIjU0xPV19USU1FT1VUXCIhPT1lKXRocm93IGU7Y29uc29sZS53YXJuKFwiYXN5bmMgcGFyc2VyIGhhbmRsZXIgdGFraW5nIGxvbmdlciB0aGFuIDUwMDAgbXNcIil9KSl9X2dldEN1cnJlbnRMaW5rSWQoKXtyZXR1cm4gdGhpcy5fY3VyQXR0ckRhdGEuZXh0ZW5kZWQudXJsSWR9cGFyc2UoZSx0KXtsZXQgaSxzPXRoaXMuX2FjdGl2ZUJ1ZmZlci54LHI9dGhpcy5fYWN0aXZlQnVmZmVyLnksbj0wO2NvbnN0IG89dGhpcy5fcGFyc2VTdGFjay5wYXVzZWQ7aWYobyl7aWYoaT10aGlzLl9wYXJzZXIucGFyc2UodGhpcy5fcGFyc2VCdWZmZXIsdGhpcy5fcGFyc2VTdGFjay5kZWNvZGVkTGVuZ3RoLHQpKXJldHVybiB0aGlzLl9sb2dTbG93UmVzb2x2aW5nQXN5bmMoaSksaTtzPXRoaXMuX3BhcnNlU3RhY2suY3Vyc29yU3RhcnRYLHI9dGhpcy5fcGFyc2VTdGFjay5jdXJzb3JTdGFydFksdGhpcy5fcGFyc2VTdGFjay5wYXVzZWQ9ITEsZS5sZW5ndGg+QyYmKG49dGhpcy5fcGFyc2VTdGFjay5wb3NpdGlvbitDKX1pZih0aGlzLl9sb2dTZXJ2aWNlLmxvZ0xldmVsPD12LkxvZ0xldmVsRW51bS5ERUJVRyYmdGhpcy5fbG9nU2VydmljZS5kZWJ1ZyhcInBhcnNpbmcgZGF0YVwiKyhcInN0cmluZ1wiPT10eXBlb2YgZT9gIFwiJHtlfVwiYDpgIFwiJHtBcnJheS5wcm90b3R5cGUubWFwLmNhbGwoZSwoZT0+U3RyaW5nLmZyb21DaGFyQ29kZShlKSkpLmpvaW4oXCJcIil9XCJgKSxcInN0cmluZ1wiPT10eXBlb2YgZT9lLnNwbGl0KFwiXCIpLm1hcCgoZT0+ZS5jaGFyQ29kZUF0KDApKSk6ZSksdGhpcy5fcGFyc2VCdWZmZXIubGVuZ3RoPGUubGVuZ3RoJiZ0aGlzLl9wYXJzZUJ1ZmZlci5sZW5ndGg8QyYmKHRoaXMuX3BhcnNlQnVmZmVyPW5ldyBVaW50MzJBcnJheShNYXRoLm1pbihlLmxlbmd0aCxDKSkpLG98fHRoaXMuX2RpcnR5Um93VHJhY2tlci5jbGVhclJhbmdlKCksZS5sZW5ndGg+Qylmb3IobGV0IHQ9bjt0PGUubGVuZ3RoO3QrPUMpe2NvbnN0IG49dCtDPGUubGVuZ3RoP3QrQzplLmxlbmd0aCxvPVwic3RyaW5nXCI9PXR5cGVvZiBlP3RoaXMuX3N0cmluZ0RlY29kZXIuZGVjb2RlKGUuc3Vic3RyaW5nKHQsbiksdGhpcy5fcGFyc2VCdWZmZXIpOnRoaXMuX3V0ZjhEZWNvZGVyLmRlY29kZShlLnN1YmFycmF5KHQsbiksdGhpcy5fcGFyc2VCdWZmZXIpO2lmKGk9dGhpcy5fcGFyc2VyLnBhcnNlKHRoaXMuX3BhcnNlQnVmZmVyLG8pKXJldHVybiB0aGlzLl9wcmVzZXJ2ZVN0YWNrKHMscixvLHQpLHRoaXMuX2xvZ1Nsb3dSZXNvbHZpbmdBc3luYyhpKSxpfWVsc2UgaWYoIW8pe2NvbnN0IHQ9XCJzdHJpbmdcIj09dHlwZW9mIGU/dGhpcy5fc3RyaW5nRGVjb2Rlci5kZWNvZGUoZSx0aGlzLl9wYXJzZUJ1ZmZlcik6dGhpcy5fdXRmOERlY29kZXIuZGVjb2RlKGUsdGhpcy5fcGFyc2VCdWZmZXIpO2lmKGk9dGhpcy5fcGFyc2VyLnBhcnNlKHRoaXMuX3BhcnNlQnVmZmVyLHQpKXJldHVybiB0aGlzLl9wcmVzZXJ2ZVN0YWNrKHMscix0LDApLHRoaXMuX2xvZ1Nsb3dSZXNvbHZpbmdBc3luYyhpKSxpfXRoaXMuX2FjdGl2ZUJ1ZmZlci54PT09cyYmdGhpcy5fYWN0aXZlQnVmZmVyLnk9PT1yfHx0aGlzLl9vbkN1cnNvck1vdmUuZmlyZSgpLHRoaXMuX29uUmVxdWVzdFJlZnJlc2hSb3dzLmZpcmUodGhpcy5fZGlydHlSb3dUcmFja2VyLnN0YXJ0LHRoaXMuX2RpcnR5Um93VHJhY2tlci5lbmQpfXByaW50KGUsdCxpKXtsZXQgcyxyO2NvbnN0IG49dGhpcy5fY2hhcnNldFNlcnZpY2UuY2hhcnNldCxvPXRoaXMuX29wdGlvbnNTZXJ2aWNlLnJhd09wdGlvbnMuc2NyZWVuUmVhZGVyTW9kZSxhPXRoaXMuX2J1ZmZlclNlcnZpY2UuY29scyxoPXRoaXMuX2NvcmVTZXJ2aWNlLmRlY1ByaXZhdGVNb2Rlcy53cmFwYXJvdW5kLGw9dGhpcy5fY29yZVNlcnZpY2UubW9kZXMuaW5zZXJ0TW9kZSxkPXRoaXMuX2N1ckF0dHJEYXRhO2xldCB1PXRoaXMuX2FjdGl2ZUJ1ZmZlci5saW5lcy5nZXQodGhpcy5fYWN0aXZlQnVmZmVyLnliYXNlK3RoaXMuX2FjdGl2ZUJ1ZmZlci55KTt0aGlzLl9kaXJ0eVJvd1RyYWNrZXIubWFya0RpcnR5KHRoaXMuX2FjdGl2ZUJ1ZmZlci55KSx0aGlzLl9hY3RpdmVCdWZmZXIueCYmaS10PjAmJjI9PT11LmdldFdpZHRoKHRoaXMuX2FjdGl2ZUJ1ZmZlci54LTEpJiZ1LnNldENlbGxGcm9tQ29kZVBvaW50KHRoaXMuX2FjdGl2ZUJ1ZmZlci54LTEsMCwxLGQuZmcsZC5iZyxkLmV4dGVuZGVkKTtmb3IobGV0IGY9dDtmPGk7KytmKXtpZihzPWVbZl0scj10aGlzLl91bmljb2RlU2VydmljZS53Y3dpZHRoKHMpLHM8MTI3JiZuKXtjb25zdCBlPW5bU3RyaW5nLmZyb21DaGFyQ29kZShzKV07ZSYmKHM9ZS5jaGFyQ29kZUF0KDApKX1pZihvJiZ0aGlzLl9vbkExMXlDaGFyLmZpcmUoKDAsYy5zdHJpbmdGcm9tQ29kZVBvaW50KShzKSksdGhpcy5fZ2V0Q3VycmVudExpbmtJZCgpJiZ0aGlzLl9vc2NMaW5rU2VydmljZS5hZGRMaW5lVG9MaW5rKHRoaXMuX2dldEN1cnJlbnRMaW5rSWQoKSx0aGlzLl9hY3RpdmVCdWZmZXIueWJhc2UrdGhpcy5fYWN0aXZlQnVmZmVyLnkpLHJ8fCF0aGlzLl9hY3RpdmVCdWZmZXIueCl7aWYodGhpcy5fYWN0aXZlQnVmZmVyLngrci0xPj1hKWlmKGgpe2Zvcig7dGhpcy5fYWN0aXZlQnVmZmVyLng8YTspdS5zZXRDZWxsRnJvbUNvZGVQb2ludCh0aGlzLl9hY3RpdmVCdWZmZXIueCsrLDAsMSxkLmZnLGQuYmcsZC5leHRlbmRlZCk7dGhpcy5fYWN0aXZlQnVmZmVyLng9MCx0aGlzLl9hY3RpdmVCdWZmZXIueSsrLHRoaXMuX2FjdGl2ZUJ1ZmZlci55PT09dGhpcy5fYWN0aXZlQnVmZmVyLnNjcm9sbEJvdHRvbSsxPyh0aGlzLl9hY3RpdmVCdWZmZXIueS0tLHRoaXMuX2J1ZmZlclNlcnZpY2Uuc2Nyb2xsKHRoaXMuX2VyYXNlQXR0ckRhdGEoKSwhMCkpOih0aGlzLl9hY3RpdmVCdWZmZXIueT49dGhpcy5fYnVmZmVyU2VydmljZS5yb3dzJiYodGhpcy5fYWN0aXZlQnVmZmVyLnk9dGhpcy5fYnVmZmVyU2VydmljZS5yb3dzLTEpLHRoaXMuX2FjdGl2ZUJ1ZmZlci5saW5lcy5nZXQodGhpcy5fYWN0aXZlQnVmZmVyLnliYXNlK3RoaXMuX2FjdGl2ZUJ1ZmZlci55KS5pc1dyYXBwZWQ9ITApLHU9dGhpcy5fYWN0aXZlQnVmZmVyLmxpbmVzLmdldCh0aGlzLl9hY3RpdmVCdWZmZXIueWJhc2UrdGhpcy5fYWN0aXZlQnVmZmVyLnkpfWVsc2UgaWYodGhpcy5fYWN0aXZlQnVmZmVyLng9YS0xLDI9PT1yKWNvbnRpbnVlO2lmKGwmJih1Lmluc2VydENlbGxzKHRoaXMuX2FjdGl2ZUJ1ZmZlci54LHIsdGhpcy5fYWN0aXZlQnVmZmVyLmdldE51bGxDZWxsKGQpLGQpLDI9PT11LmdldFdpZHRoKGEtMSkmJnUuc2V0Q2VsbEZyb21Db2RlUG9pbnQoYS0xLF8uTlVMTF9DRUxMX0NPREUsXy5OVUxMX0NFTExfV0lEVEgsZC5mZyxkLmJnLGQuZXh0ZW5kZWQpKSx1LnNldENlbGxGcm9tQ29kZVBvaW50KHRoaXMuX2FjdGl2ZUJ1ZmZlci54KysscyxyLGQuZmcsZC5iZyxkLmV4dGVuZGVkKSxyPjApZm9yKDstLXI7KXUuc2V0Q2VsbEZyb21Db2RlUG9pbnQodGhpcy5fYWN0aXZlQnVmZmVyLngrKywwLDAsZC5mZyxkLmJnLGQuZXh0ZW5kZWQpfWVsc2UgdS5nZXRXaWR0aCh0aGlzLl9hY3RpdmVCdWZmZXIueC0xKT91LmFkZENvZGVwb2ludFRvQ2VsbCh0aGlzLl9hY3RpdmVCdWZmZXIueC0xLHMpOnUuYWRkQ29kZXBvaW50VG9DZWxsKHRoaXMuX2FjdGl2ZUJ1ZmZlci54LTIscyl9aS10PjAmJih1LmxvYWRDZWxsKHRoaXMuX2FjdGl2ZUJ1ZmZlci54LTEsdGhpcy5fd29ya0NlbGwpLDI9PT10aGlzLl93b3JrQ2VsbC5nZXRXaWR0aCgpfHx0aGlzLl93b3JrQ2VsbC5nZXRDb2RlKCk+NjU1MzU/dGhpcy5fcGFyc2VyLnByZWNlZGluZ0NvZGVwb2ludD0wOnRoaXMuX3dvcmtDZWxsLmlzQ29tYmluZWQoKT90aGlzLl9wYXJzZXIucHJlY2VkaW5nQ29kZXBvaW50PXRoaXMuX3dvcmtDZWxsLmdldENoYXJzKCkuY2hhckNvZGVBdCgwKTp0aGlzLl9wYXJzZXIucHJlY2VkaW5nQ29kZXBvaW50PXRoaXMuX3dvcmtDZWxsLmNvbnRlbnQpLHRoaXMuX2FjdGl2ZUJ1ZmZlci54PGEmJmktdD4wJiYwPT09dS5nZXRXaWR0aCh0aGlzLl9hY3RpdmVCdWZmZXIueCkmJiF1Lmhhc0NvbnRlbnQodGhpcy5fYWN0aXZlQnVmZmVyLngpJiZ1LnNldENlbGxGcm9tQ29kZVBvaW50KHRoaXMuX2FjdGl2ZUJ1ZmZlci54LDAsMSxkLmZnLGQuYmcsZC5leHRlbmRlZCksdGhpcy5fZGlydHlSb3dUcmFja2VyLm1hcmtEaXJ0eSh0aGlzLl9hY3RpdmVCdWZmZXIueSl9cmVnaXN0ZXJDc2lIYW5kbGVyKGUsdCl7cmV0dXJuXCJ0XCIhPT1lLmZpbmFsfHxlLnByZWZpeHx8ZS5pbnRlcm1lZGlhdGVzP3RoaXMuX3BhcnNlci5yZWdpc3RlckNzaUhhbmRsZXIoZSx0KTp0aGlzLl9wYXJzZXIucmVnaXN0ZXJDc2lIYW5kbGVyKGUsKGU9PiFiKGUucGFyYW1zWzBdLHRoaXMuX29wdGlvbnNTZXJ2aWNlLnJhd09wdGlvbnMud2luZG93T3B0aW9ucyl8fHQoZSkpKX1yZWdpc3RlckRjc0hhbmRsZXIoZSx0KXtyZXR1cm4gdGhpcy5fcGFyc2VyLnJlZ2lzdGVyRGNzSGFuZGxlcihlLG5ldyBwLkRjc0hhbmRsZXIodCkpfXJlZ2lzdGVyRXNjSGFuZGxlcihlLHQpe3JldHVybiB0aGlzLl9wYXJzZXIucmVnaXN0ZXJFc2NIYW5kbGVyKGUsdCl9cmVnaXN0ZXJPc2NIYW5kbGVyKGUsdCl7cmV0dXJuIHRoaXMuX3BhcnNlci5yZWdpc3Rlck9zY0hhbmRsZXIoZSxuZXcgZy5Pc2NIYW5kbGVyKHQpKX1iZWxsKCl7cmV0dXJuIHRoaXMuX29uUmVxdWVzdEJlbGwuZmlyZSgpLCEwfWxpbmVGZWVkKCl7cmV0dXJuIHRoaXMuX2RpcnR5Um93VHJhY2tlci5tYXJrRGlydHkodGhpcy5fYWN0aXZlQnVmZmVyLnkpLHRoaXMuX29wdGlvbnNTZXJ2aWNlLnJhd09wdGlvbnMuY29udmVydEVvbCYmKHRoaXMuX2FjdGl2ZUJ1ZmZlci54PTApLHRoaXMuX2FjdGl2ZUJ1ZmZlci55KyssdGhpcy5fYWN0aXZlQnVmZmVyLnk9PT10aGlzLl9hY3RpdmVCdWZmZXIuc2Nyb2xsQm90dG9tKzE/KHRoaXMuX2FjdGl2ZUJ1ZmZlci55LS0sdGhpcy5fYnVmZmVyU2VydmljZS5zY3JvbGwodGhpcy5fZXJhc2VBdHRyRGF0YSgpKSk6dGhpcy5fYWN0aXZlQnVmZmVyLnk+PXRoaXMuX2J1ZmZlclNlcnZpY2Uucm93cz90aGlzLl9hY3RpdmVCdWZmZXIueT10aGlzLl9idWZmZXJTZXJ2aWNlLnJvd3MtMTp0aGlzLl9hY3RpdmVCdWZmZXIubGluZXMuZ2V0KHRoaXMuX2FjdGl2ZUJ1ZmZlci55YmFzZSt0aGlzLl9hY3RpdmVCdWZmZXIueSkuaXNXcmFwcGVkPSExLHRoaXMuX2FjdGl2ZUJ1ZmZlci54Pj10aGlzLl9idWZmZXJTZXJ2aWNlLmNvbHMmJnRoaXMuX2FjdGl2ZUJ1ZmZlci54LS0sdGhpcy5fZGlydHlSb3dUcmFja2VyLm1hcmtEaXJ0eSh0aGlzLl9hY3RpdmVCdWZmZXIueSksdGhpcy5fb25MaW5lRmVlZC5maXJlKCksITB9Y2FycmlhZ2VSZXR1cm4oKXtyZXR1cm4gdGhpcy5fYWN0aXZlQnVmZmVyLng9MCwhMH1iYWNrc3BhY2UoKXt2YXIgZTtpZighdGhpcy5fY29yZVNlcnZpY2UuZGVjUHJpdmF0ZU1vZGVzLnJldmVyc2VXcmFwYXJvdW5kKXJldHVybiB0aGlzLl9yZXN0cmljdEN1cnNvcigpLHRoaXMuX2FjdGl2ZUJ1ZmZlci54PjAmJnRoaXMuX2FjdGl2ZUJ1ZmZlci54LS0sITA7aWYodGhpcy5fcmVzdHJpY3RDdXJzb3IodGhpcy5fYnVmZmVyU2VydmljZS5jb2xzKSx0aGlzLl9hY3RpdmVCdWZmZXIueD4wKXRoaXMuX2FjdGl2ZUJ1ZmZlci54LS07ZWxzZSBpZigwPT09dGhpcy5fYWN0aXZlQnVmZmVyLngmJnRoaXMuX2FjdGl2ZUJ1ZmZlci55PnRoaXMuX2FjdGl2ZUJ1ZmZlci5zY3JvbGxUb3AmJnRoaXMuX2FjdGl2ZUJ1ZmZlci55PD10aGlzLl9hY3RpdmVCdWZmZXIuc2Nyb2xsQm90dG9tJiYobnVsbD09PShlPXRoaXMuX2FjdGl2ZUJ1ZmZlci5saW5lcy5nZXQodGhpcy5fYWN0aXZlQnVmZmVyLnliYXNlK3RoaXMuX2FjdGl2ZUJ1ZmZlci55KSl8fHZvaWQgMD09PWU/dm9pZCAwOmUuaXNXcmFwcGVkKSl7dGhpcy5fYWN0aXZlQnVmZmVyLmxpbmVzLmdldCh0aGlzLl9hY3RpdmVCdWZmZXIueWJhc2UrdGhpcy5fYWN0aXZlQnVmZmVyLnkpLmlzV3JhcHBlZD0hMSx0aGlzLl9hY3RpdmVCdWZmZXIueS0tLHRoaXMuX2FjdGl2ZUJ1ZmZlci54PXRoaXMuX2J1ZmZlclNlcnZpY2UuY29scy0xO2NvbnN0IGU9dGhpcy5fYWN0aXZlQnVmZmVyLmxpbmVzLmdldCh0aGlzLl9hY3RpdmVCdWZmZXIueWJhc2UrdGhpcy5fYWN0aXZlQnVmZmVyLnkpO2UuaGFzV2lkdGgodGhpcy5fYWN0aXZlQnVmZmVyLngpJiYhZS5oYXNDb250ZW50KHRoaXMuX2FjdGl2ZUJ1ZmZlci54KSYmdGhpcy5fYWN0aXZlQnVmZmVyLngtLX1yZXR1cm4gdGhpcy5fcmVzdHJpY3RDdXJzb3IoKSwhMH10YWIoKXtpZih0aGlzLl9hY3RpdmVCdWZmZXIueD49dGhpcy5fYnVmZmVyU2VydmljZS5jb2xzKXJldHVybiEwO2NvbnN0IGU9dGhpcy5fYWN0aXZlQnVmZmVyLng7cmV0dXJuIHRoaXMuX2FjdGl2ZUJ1ZmZlci54PXRoaXMuX2FjdGl2ZUJ1ZmZlci5uZXh0U3RvcCgpLHRoaXMuX29wdGlvbnNTZXJ2aWNlLnJhd09wdGlvbnMuc2NyZWVuUmVhZGVyTW9kZSYmdGhpcy5fb25BMTF5VGFiLmZpcmUodGhpcy5fYWN0aXZlQnVmZmVyLngtZSksITB9c2hpZnRPdXQoKXtyZXR1cm4gdGhpcy5fY2hhcnNldFNlcnZpY2Uuc2V0Z0xldmVsKDEpLCEwfXNoaWZ0SW4oKXtyZXR1cm4gdGhpcy5fY2hhcnNldFNlcnZpY2Uuc2V0Z0xldmVsKDApLCEwfV9yZXN0cmljdEN1cnNvcihlPXRoaXMuX2J1ZmZlclNlcnZpY2UuY29scy0xKXt0aGlzLl9hY3RpdmVCdWZmZXIueD1NYXRoLm1pbihlLE1hdGgubWF4KDAsdGhpcy5fYWN0aXZlQnVmZmVyLngpKSx0aGlzLl9hY3RpdmVCdWZmZXIueT10aGlzLl9jb3JlU2VydmljZS5kZWNQcml2YXRlTW9kZXMub3JpZ2luP01hdGgubWluKHRoaXMuX2FjdGl2ZUJ1ZmZlci5zY3JvbGxCb3R0b20sTWF0aC5tYXgodGhpcy5fYWN0aXZlQnVmZmVyLnNjcm9sbFRvcCx0aGlzLl9hY3RpdmVCdWZmZXIueSkpOk1hdGgubWluKHRoaXMuX2J1ZmZlclNlcnZpY2Uucm93cy0xLE1hdGgubWF4KDAsdGhpcy5fYWN0aXZlQnVmZmVyLnkpKSx0aGlzLl9kaXJ0eVJvd1RyYWNrZXIubWFya0RpcnR5KHRoaXMuX2FjdGl2ZUJ1ZmZlci55KX1fc2V0Q3Vyc29yKGUsdCl7dGhpcy5fZGlydHlSb3dUcmFja2VyLm1hcmtEaXJ0eSh0aGlzLl9hY3RpdmVCdWZmZXIueSksdGhpcy5fY29yZVNlcnZpY2UuZGVjUHJpdmF0ZU1vZGVzLm9yaWdpbj8odGhpcy5fYWN0aXZlQnVmZmVyLng9ZSx0aGlzLl9hY3RpdmVCdWZmZXIueT10aGlzLl9hY3RpdmVCdWZmZXIuc2Nyb2xsVG9wK3QpOih0aGlzLl9hY3RpdmVCdWZmZXIueD1lLHRoaXMuX2FjdGl2ZUJ1ZmZlci55PXQpLHRoaXMuX3Jlc3RyaWN0Q3Vyc29yKCksdGhpcy5fZGlydHlSb3dUcmFja2VyLm1hcmtEaXJ0eSh0aGlzLl9hY3RpdmVCdWZmZXIueSl9X21vdmVDdXJzb3IoZSx0KXt0aGlzLl9yZXN0cmljdEN1cnNvcigpLHRoaXMuX3NldEN1cnNvcih0aGlzLl9hY3RpdmVCdWZmZXIueCtlLHRoaXMuX2FjdGl2ZUJ1ZmZlci55K3QpfWN1cnNvclVwKGUpe2NvbnN0IHQ9dGhpcy5fYWN0aXZlQnVmZmVyLnktdGhpcy5fYWN0aXZlQnVmZmVyLnNjcm9sbFRvcDtyZXR1cm4gdD49MD90aGlzLl9tb3ZlQ3Vyc29yKDAsLU1hdGgubWluKHQsZS5wYXJhbXNbMF18fDEpKTp0aGlzLl9tb3ZlQ3Vyc29yKDAsLShlLnBhcmFtc1swXXx8MSkpLCEwfWN1cnNvckRvd24oZSl7Y29uc3QgdD10aGlzLl9hY3RpdmVCdWZmZXIuc2Nyb2xsQm90dG9tLXRoaXMuX2FjdGl2ZUJ1ZmZlci55O3JldHVybiB0Pj0wP3RoaXMuX21vdmVDdXJzb3IoMCxNYXRoLm1pbih0LGUucGFyYW1zWzBdfHwxKSk6dGhpcy5fbW92ZUN1cnNvcigwLGUucGFyYW1zWzBdfHwxKSwhMH1jdXJzb3JGb3J3YXJkKGUpe3JldHVybiB0aGlzLl9tb3ZlQ3Vyc29yKGUucGFyYW1zWzBdfHwxLDApLCEwfWN1cnNvckJhY2t3YXJkKGUpe3JldHVybiB0aGlzLl9tb3ZlQ3Vyc29yKC0oZS5wYXJhbXNbMF18fDEpLDApLCEwfWN1cnNvck5leHRMaW5lKGUpe3JldHVybiB0aGlzLmN1cnNvckRvd24oZSksdGhpcy5fYWN0aXZlQnVmZmVyLng9MCwhMH1jdXJzb3JQcmVjZWRpbmdMaW5lKGUpe3JldHVybiB0aGlzLmN1cnNvclVwKGUpLHRoaXMuX2FjdGl2ZUJ1ZmZlci54PTAsITB9Y3Vyc29yQ2hhckFic29sdXRlKGUpe3JldHVybiB0aGlzLl9zZXRDdXJzb3IoKGUucGFyYW1zWzBdfHwxKS0xLHRoaXMuX2FjdGl2ZUJ1ZmZlci55KSwhMH1jdXJzb3JQb3NpdGlvbihlKXtyZXR1cm4gdGhpcy5fc2V0Q3Vyc29yKGUubGVuZ3RoPj0yPyhlLnBhcmFtc1sxXXx8MSktMTowLChlLnBhcmFtc1swXXx8MSktMSksITB9Y2hhclBvc0Fic29sdXRlKGUpe3JldHVybiB0aGlzLl9zZXRDdXJzb3IoKGUucGFyYW1zWzBdfHwxKS0xLHRoaXMuX2FjdGl2ZUJ1ZmZlci55KSwhMH1oUG9zaXRpb25SZWxhdGl2ZShlKXtyZXR1cm4gdGhpcy5fbW92ZUN1cnNvcihlLnBhcmFtc1swXXx8MSwwKSwhMH1saW5lUG9zQWJzb2x1dGUoZSl7cmV0dXJuIHRoaXMuX3NldEN1cnNvcih0aGlzLl9hY3RpdmVCdWZmZXIueCwoZS5wYXJhbXNbMF18fDEpLTEpLCEwfXZQb3NpdGlvblJlbGF0aXZlKGUpe3JldHVybiB0aGlzLl9tb3ZlQ3Vyc29yKDAsZS5wYXJhbXNbMF18fDEpLCEwfWhWUG9zaXRpb24oZSl7cmV0dXJuIHRoaXMuY3Vyc29yUG9zaXRpb24oZSksITB9dGFiQ2xlYXIoZSl7Y29uc3QgdD1lLnBhcmFtc1swXTtyZXR1cm4gMD09PXQ/ZGVsZXRlIHRoaXMuX2FjdGl2ZUJ1ZmZlci50YWJzW3RoaXMuX2FjdGl2ZUJ1ZmZlci54XTozPT09dCYmKHRoaXMuX2FjdGl2ZUJ1ZmZlci50YWJzPXt9KSwhMH1jdXJzb3JGb3J3YXJkVGFiKGUpe2lmKHRoaXMuX2FjdGl2ZUJ1ZmZlci54Pj10aGlzLl9idWZmZXJTZXJ2aWNlLmNvbHMpcmV0dXJuITA7bGV0IHQ9ZS5wYXJhbXNbMF18fDE7Zm9yKDt0LS07KXRoaXMuX2FjdGl2ZUJ1ZmZlci54PXRoaXMuX2FjdGl2ZUJ1ZmZlci5uZXh0U3RvcCgpO3JldHVybiEwfWN1cnNvckJhY2t3YXJkVGFiKGUpe2lmKHRoaXMuX2FjdGl2ZUJ1ZmZlci54Pj10aGlzLl9idWZmZXJTZXJ2aWNlLmNvbHMpcmV0dXJuITA7bGV0IHQ9ZS5wYXJhbXNbMF18fDE7Zm9yKDt0LS07KXRoaXMuX2FjdGl2ZUJ1ZmZlci54PXRoaXMuX2FjdGl2ZUJ1ZmZlci5wcmV2U3RvcCgpO3JldHVybiEwfXNlbGVjdFByb3RlY3RlZChlKXtjb25zdCB0PWUucGFyYW1zWzBdO3JldHVybiAxPT09dCYmKHRoaXMuX2N1ckF0dHJEYXRhLmJnfD01MzY4NzA5MTIpLDIhPT10JiYwIT09dHx8KHRoaXMuX2N1ckF0dHJEYXRhLmJnJj0tNTM2ODcwOTEzKSwhMH1fZXJhc2VJbkJ1ZmZlckxpbmUoZSx0LGkscz0hMSxyPSExKXtjb25zdCBuPXRoaXMuX2FjdGl2ZUJ1ZmZlci5saW5lcy5nZXQodGhpcy5fYWN0aXZlQnVmZmVyLnliYXNlK2UpO24ucmVwbGFjZUNlbGxzKHQsaSx0aGlzLl9hY3RpdmVCdWZmZXIuZ2V0TnVsbENlbGwodGhpcy5fZXJhc2VBdHRyRGF0YSgpKSx0aGlzLl9lcmFzZUF0dHJEYXRhKCkscikscyYmKG4uaXNXcmFwcGVkPSExKX1fcmVzZXRCdWZmZXJMaW5lKGUsdD0hMSl7Y29uc3QgaT10aGlzLl9hY3RpdmVCdWZmZXIubGluZXMuZ2V0KHRoaXMuX2FjdGl2ZUJ1ZmZlci55YmFzZStlKTtpJiYoaS5maWxsKHRoaXMuX2FjdGl2ZUJ1ZmZlci5nZXROdWxsQ2VsbCh0aGlzLl9lcmFzZUF0dHJEYXRhKCkpLHQpLHRoaXMuX2J1ZmZlclNlcnZpY2UuYnVmZmVyLmNsZWFyTWFya2Vycyh0aGlzLl9hY3RpdmVCdWZmZXIueWJhc2UrZSksaS5pc1dyYXBwZWQ9ITEpfWVyYXNlSW5EaXNwbGF5KGUsdD0hMSl7bGV0IGk7c3dpdGNoKHRoaXMuX3Jlc3RyaWN0Q3Vyc29yKHRoaXMuX2J1ZmZlclNlcnZpY2UuY29scyksZS5wYXJhbXNbMF0pe2Nhc2UgMDpmb3IoaT10aGlzLl9hY3RpdmVCdWZmZXIueSx0aGlzLl9kaXJ0eVJvd1RyYWNrZXIubWFya0RpcnR5KGkpLHRoaXMuX2VyYXNlSW5CdWZmZXJMaW5lKGkrKyx0aGlzLl9hY3RpdmVCdWZmZXIueCx0aGlzLl9idWZmZXJTZXJ2aWNlLmNvbHMsMD09PXRoaXMuX2FjdGl2ZUJ1ZmZlci54LHQpO2k8dGhpcy5fYnVmZmVyU2VydmljZS5yb3dzO2krKyl0aGlzLl9yZXNldEJ1ZmZlckxpbmUoaSx0KTt0aGlzLl9kaXJ0eVJvd1RyYWNrZXIubWFya0RpcnR5KGkpO2JyZWFrO2Nhc2UgMTpmb3IoaT10aGlzLl9hY3RpdmVCdWZmZXIueSx0aGlzLl9kaXJ0eVJvd1RyYWNrZXIubWFya0RpcnR5KGkpLHRoaXMuX2VyYXNlSW5CdWZmZXJMaW5lKGksMCx0aGlzLl9hY3RpdmVCdWZmZXIueCsxLCEwLHQpLHRoaXMuX2FjdGl2ZUJ1ZmZlci54KzE+PXRoaXMuX2J1ZmZlclNlcnZpY2UuY29scyYmKHRoaXMuX2FjdGl2ZUJ1ZmZlci5saW5lcy5nZXQoaSsxKS5pc1dyYXBwZWQ9ITEpO2ktLTspdGhpcy5fcmVzZXRCdWZmZXJMaW5lKGksdCk7dGhpcy5fZGlydHlSb3dUcmFja2VyLm1hcmtEaXJ0eSgwKTticmVhaztjYXNlIDI6Zm9yKGk9dGhpcy5fYnVmZmVyU2VydmljZS5yb3dzLHRoaXMuX2RpcnR5Um93VHJhY2tlci5tYXJrRGlydHkoaS0xKTtpLS07KXRoaXMuX3Jlc2V0QnVmZmVyTGluZShpLHQpO3RoaXMuX2RpcnR5Um93VHJhY2tlci5tYXJrRGlydHkoMCk7YnJlYWs7Y2FzZSAzOmNvbnN0IGU9dGhpcy5fYWN0aXZlQnVmZmVyLmxpbmVzLmxlbmd0aC10aGlzLl9idWZmZXJTZXJ2aWNlLnJvd3M7ZT4wJiYodGhpcy5fYWN0aXZlQnVmZmVyLmxpbmVzLnRyaW1TdGFydChlKSx0aGlzLl9hY3RpdmVCdWZmZXIueWJhc2U9TWF0aC5tYXgodGhpcy5fYWN0aXZlQnVmZmVyLnliYXNlLWUsMCksdGhpcy5fYWN0aXZlQnVmZmVyLnlkaXNwPU1hdGgubWF4KHRoaXMuX2FjdGl2ZUJ1ZmZlci55ZGlzcC1lLDApLHRoaXMuX29uU2Nyb2xsLmZpcmUoMCkpfXJldHVybiEwfWVyYXNlSW5MaW5lKGUsdD0hMSl7c3dpdGNoKHRoaXMuX3Jlc3RyaWN0Q3Vyc29yKHRoaXMuX2J1ZmZlclNlcnZpY2UuY29scyksZS5wYXJhbXNbMF0pe2Nhc2UgMDp0aGlzLl9lcmFzZUluQnVmZmVyTGluZSh0aGlzLl9hY3RpdmVCdWZmZXIueSx0aGlzLl9hY3RpdmVCdWZmZXIueCx0aGlzLl9idWZmZXJTZXJ2aWNlLmNvbHMsMD09PXRoaXMuX2FjdGl2ZUJ1ZmZlci54LHQpO2JyZWFrO2Nhc2UgMTp0aGlzLl9lcmFzZUluQnVmZmVyTGluZSh0aGlzLl9hY3RpdmVCdWZmZXIueSwwLHRoaXMuX2FjdGl2ZUJ1ZmZlci54KzEsITEsdCk7YnJlYWs7Y2FzZSAyOnRoaXMuX2VyYXNlSW5CdWZmZXJMaW5lKHRoaXMuX2FjdGl2ZUJ1ZmZlci55LDAsdGhpcy5fYnVmZmVyU2VydmljZS5jb2xzLCEwLHQpfXJldHVybiB0aGlzLl9kaXJ0eVJvd1RyYWNrZXIubWFya0RpcnR5KHRoaXMuX2FjdGl2ZUJ1ZmZlci55KSwhMH1pbnNlcnRMaW5lcyhlKXt0aGlzLl9yZXN0cmljdEN1cnNvcigpO2xldCB0PWUucGFyYW1zWzBdfHwxO2lmKHRoaXMuX2FjdGl2ZUJ1ZmZlci55PnRoaXMuX2FjdGl2ZUJ1ZmZlci5zY3JvbGxCb3R0b218fHRoaXMuX2FjdGl2ZUJ1ZmZlci55PHRoaXMuX2FjdGl2ZUJ1ZmZlci5zY3JvbGxUb3ApcmV0dXJuITA7Y29uc3QgaT10aGlzLl9hY3RpdmVCdWZmZXIueWJhc2UrdGhpcy5fYWN0aXZlQnVmZmVyLnkscz10aGlzLl9idWZmZXJTZXJ2aWNlLnJvd3MtMS10aGlzLl9hY3RpdmVCdWZmZXIuc2Nyb2xsQm90dG9tLHI9dGhpcy5fYnVmZmVyU2VydmljZS5yb3dzLTErdGhpcy5fYWN0aXZlQnVmZmVyLnliYXNlLXMrMTtmb3IoO3QtLTspdGhpcy5fYWN0aXZlQnVmZmVyLmxpbmVzLnNwbGljZShyLTEsMSksdGhpcy5fYWN0aXZlQnVmZmVyLmxpbmVzLnNwbGljZShpLDAsdGhpcy5fYWN0aXZlQnVmZmVyLmdldEJsYW5rTGluZSh0aGlzLl9lcmFzZUF0dHJEYXRhKCkpKTtyZXR1cm4gdGhpcy5fZGlydHlSb3dUcmFja2VyLm1hcmtSYW5nZURpcnR5KHRoaXMuX2FjdGl2ZUJ1ZmZlci55LHRoaXMuX2FjdGl2ZUJ1ZmZlci5zY3JvbGxCb3R0b20pLHRoaXMuX2FjdGl2ZUJ1ZmZlci54PTAsITB9ZGVsZXRlTGluZXMoZSl7dGhpcy5fcmVzdHJpY3RDdXJzb3IoKTtsZXQgdD1lLnBhcmFtc1swXXx8MTtpZih0aGlzLl9hY3RpdmVCdWZmZXIueT50aGlzLl9hY3RpdmVCdWZmZXIuc2Nyb2xsQm90dG9tfHx0aGlzLl9hY3RpdmVCdWZmZXIueTx0aGlzLl9hY3RpdmVCdWZmZXIuc2Nyb2xsVG9wKXJldHVybiEwO2NvbnN0IGk9dGhpcy5fYWN0aXZlQnVmZmVyLnliYXNlK3RoaXMuX2FjdGl2ZUJ1ZmZlci55O2xldCBzO2ZvcihzPXRoaXMuX2J1ZmZlclNlcnZpY2Uucm93cy0xLXRoaXMuX2FjdGl2ZUJ1ZmZlci5zY3JvbGxCb3R0b20scz10aGlzLl9idWZmZXJTZXJ2aWNlLnJvd3MtMSt0aGlzLl9hY3RpdmVCdWZmZXIueWJhc2Utczt0LS07KXRoaXMuX2FjdGl2ZUJ1ZmZlci5saW5lcy5zcGxpY2UoaSwxKSx0aGlzLl9hY3RpdmVCdWZmZXIubGluZXMuc3BsaWNlKHMsMCx0aGlzLl9hY3RpdmVCdWZmZXIuZ2V0QmxhbmtMaW5lKHRoaXMuX2VyYXNlQXR0ckRhdGEoKSkpO3JldHVybiB0aGlzLl9kaXJ0eVJvd1RyYWNrZXIubWFya1JhbmdlRGlydHkodGhpcy5fYWN0aXZlQnVmZmVyLnksdGhpcy5fYWN0aXZlQnVmZmVyLnNjcm9sbEJvdHRvbSksdGhpcy5fYWN0aXZlQnVmZmVyLng9MCwhMH1pbnNlcnRDaGFycyhlKXt0aGlzLl9yZXN0cmljdEN1cnNvcigpO2NvbnN0IHQ9dGhpcy5fYWN0aXZlQnVmZmVyLmxpbmVzLmdldCh0aGlzLl9hY3RpdmVCdWZmZXIueWJhc2UrdGhpcy5fYWN0aXZlQnVmZmVyLnkpO3JldHVybiB0JiYodC5pbnNlcnRDZWxscyh0aGlzLl9hY3RpdmVCdWZmZXIueCxlLnBhcmFtc1swXXx8MSx0aGlzLl9hY3RpdmVCdWZmZXIuZ2V0TnVsbENlbGwodGhpcy5fZXJhc2VBdHRyRGF0YSgpKSx0aGlzLl9lcmFzZUF0dHJEYXRhKCkpLHRoaXMuX2RpcnR5Um93VHJhY2tlci5tYXJrRGlydHkodGhpcy5fYWN0aXZlQnVmZmVyLnkpKSwhMH1kZWxldGVDaGFycyhlKXt0aGlzLl9yZXN0cmljdEN1cnNvcigpO2NvbnN0IHQ9dGhpcy5fYWN0aXZlQnVmZmVyLmxpbmVzLmdldCh0aGlzLl9hY3RpdmVCdWZmZXIueWJhc2UrdGhpcy5fYWN0aXZlQnVmZmVyLnkpO3JldHVybiB0JiYodC5kZWxldGVDZWxscyh0aGlzLl9hY3RpdmVCdWZmZXIueCxlLnBhcmFtc1swXXx8MSx0aGlzLl9hY3RpdmVCdWZmZXIuZ2V0TnVsbENlbGwodGhpcy5fZXJhc2VBdHRyRGF0YSgpKSx0aGlzLl9lcmFzZUF0dHJEYXRhKCkpLHRoaXMuX2RpcnR5Um93VHJhY2tlci5tYXJrRGlydHkodGhpcy5fYWN0aXZlQnVmZmVyLnkpKSwhMH1zY3JvbGxVcChlKXtsZXQgdD1lLnBhcmFtc1swXXx8MTtmb3IoO3QtLTspdGhpcy5fYWN0aXZlQnVmZmVyLmxpbmVzLnNwbGljZSh0aGlzLl9hY3RpdmVCdWZmZXIueWJhc2UrdGhpcy5fYWN0aXZlQnVmZmVyLnNjcm9sbFRvcCwxKSx0aGlzLl9hY3RpdmVCdWZmZXIubGluZXMuc3BsaWNlKHRoaXMuX2FjdGl2ZUJ1ZmZlci55YmFzZSt0aGlzLl9hY3RpdmVCdWZmZXIuc2Nyb2xsQm90dG9tLDAsdGhpcy5fYWN0aXZlQnVmZmVyLmdldEJsYW5rTGluZSh0aGlzLl9lcmFzZUF0dHJEYXRhKCkpKTtyZXR1cm4gdGhpcy5fZGlydHlSb3dUcmFja2VyLm1hcmtSYW5nZURpcnR5KHRoaXMuX2FjdGl2ZUJ1ZmZlci5zY3JvbGxUb3AsdGhpcy5fYWN0aXZlQnVmZmVyLnNjcm9sbEJvdHRvbSksITB9c2Nyb2xsRG93bihlKXtsZXQgdD1lLnBhcmFtc1swXXx8MTtmb3IoO3QtLTspdGhpcy5fYWN0aXZlQnVmZmVyLmxpbmVzLnNwbGljZSh0aGlzLl9hY3RpdmVCdWZmZXIueWJhc2UrdGhpcy5fYWN0aXZlQnVmZmVyLnNjcm9sbEJvdHRvbSwxKSx0aGlzLl9hY3RpdmVCdWZmZXIubGluZXMuc3BsaWNlKHRoaXMuX2FjdGl2ZUJ1ZmZlci55YmFzZSt0aGlzLl9hY3RpdmVCdWZmZXIuc2Nyb2xsVG9wLDAsdGhpcy5fYWN0aXZlQnVmZmVyLmdldEJsYW5rTGluZShsLkRFRkFVTFRfQVRUUl9EQVRBKSk7cmV0dXJuIHRoaXMuX2RpcnR5Um93VHJhY2tlci5tYXJrUmFuZ2VEaXJ0eSh0aGlzLl9hY3RpdmVCdWZmZXIuc2Nyb2xsVG9wLHRoaXMuX2FjdGl2ZUJ1ZmZlci5zY3JvbGxCb3R0b20pLCEwfXNjcm9sbExlZnQoZSl7aWYodGhpcy5fYWN0aXZlQnVmZmVyLnk+dGhpcy5fYWN0aXZlQnVmZmVyLnNjcm9sbEJvdHRvbXx8dGhpcy5fYWN0aXZlQnVmZmVyLnk8dGhpcy5fYWN0aXZlQnVmZmVyLnNjcm9sbFRvcClyZXR1cm4hMDtjb25zdCB0PWUucGFyYW1zWzBdfHwxO2ZvcihsZXQgZT10aGlzLl9hY3RpdmVCdWZmZXIuc2Nyb2xsVG9wO2U8PXRoaXMuX2FjdGl2ZUJ1ZmZlci5zY3JvbGxCb3R0b207KytlKXtjb25zdCBpPXRoaXMuX2FjdGl2ZUJ1ZmZlci5saW5lcy5nZXQodGhpcy5fYWN0aXZlQnVmZmVyLnliYXNlK2UpO2kuZGVsZXRlQ2VsbHMoMCx0LHRoaXMuX2FjdGl2ZUJ1ZmZlci5nZXROdWxsQ2VsbCh0aGlzLl9lcmFzZUF0dHJEYXRhKCkpLHRoaXMuX2VyYXNlQXR0ckRhdGEoKSksaS5pc1dyYXBwZWQ9ITF9cmV0dXJuIHRoaXMuX2RpcnR5Um93VHJhY2tlci5tYXJrUmFuZ2VEaXJ0eSh0aGlzLl9hY3RpdmVCdWZmZXIuc2Nyb2xsVG9wLHRoaXMuX2FjdGl2ZUJ1ZmZlci5zY3JvbGxCb3R0b20pLCEwfXNjcm9sbFJpZ2h0KGUpe2lmKHRoaXMuX2FjdGl2ZUJ1ZmZlci55PnRoaXMuX2FjdGl2ZUJ1ZmZlci5zY3JvbGxCb3R0b218fHRoaXMuX2FjdGl2ZUJ1ZmZlci55PHRoaXMuX2FjdGl2ZUJ1ZmZlci5zY3JvbGxUb3ApcmV0dXJuITA7Y29uc3QgdD1lLnBhcmFtc1swXXx8MTtmb3IobGV0IGU9dGhpcy5fYWN0aXZlQnVmZmVyLnNjcm9sbFRvcDtlPD10aGlzLl9hY3RpdmVCdWZmZXIuc2Nyb2xsQm90dG9tOysrZSl7Y29uc3QgaT10aGlzLl9hY3RpdmVCdWZmZXIubGluZXMuZ2V0KHRoaXMuX2FjdGl2ZUJ1ZmZlci55YmFzZStlKTtpLmluc2VydENlbGxzKDAsdCx0aGlzLl9hY3RpdmVCdWZmZXIuZ2V0TnVsbENlbGwodGhpcy5fZXJhc2VBdHRyRGF0YSgpKSx0aGlzLl9lcmFzZUF0dHJEYXRhKCkpLGkuaXNXcmFwcGVkPSExfXJldHVybiB0aGlzLl9kaXJ0eVJvd1RyYWNrZXIubWFya1JhbmdlRGlydHkodGhpcy5fYWN0aXZlQnVmZmVyLnNjcm9sbFRvcCx0aGlzLl9hY3RpdmVCdWZmZXIuc2Nyb2xsQm90dG9tKSwhMH1pbnNlcnRDb2x1bW5zKGUpe2lmKHRoaXMuX2FjdGl2ZUJ1ZmZlci55PnRoaXMuX2FjdGl2ZUJ1ZmZlci5zY3JvbGxCb3R0b218fHRoaXMuX2FjdGl2ZUJ1ZmZlci55PHRoaXMuX2FjdGl2ZUJ1ZmZlci5zY3JvbGxUb3ApcmV0dXJuITA7Y29uc3QgdD1lLnBhcmFtc1swXXx8MTtmb3IobGV0IGU9dGhpcy5fYWN0aXZlQnVmZmVyLnNjcm9sbFRvcDtlPD10aGlzLl9hY3RpdmVCdWZmZXIuc2Nyb2xsQm90dG9tOysrZSl7Y29uc3QgaT10aGlzLl9hY3RpdmVCdWZmZXIubGluZXMuZ2V0KHRoaXMuX2FjdGl2ZUJ1ZmZlci55YmFzZStlKTtpLmluc2VydENlbGxzKHRoaXMuX2FjdGl2ZUJ1ZmZlci54LHQsdGhpcy5fYWN0aXZlQnVmZmVyLmdldE51bGxDZWxsKHRoaXMuX2VyYXNlQXR0ckRhdGEoKSksdGhpcy5fZXJhc2VBdHRyRGF0YSgpKSxpLmlzV3JhcHBlZD0hMX1yZXR1cm4gdGhpcy5fZGlydHlSb3dUcmFja2VyLm1hcmtSYW5nZURpcnR5KHRoaXMuX2FjdGl2ZUJ1ZmZlci5zY3JvbGxUb3AsdGhpcy5fYWN0aXZlQnVmZmVyLnNjcm9sbEJvdHRvbSksITB9ZGVsZXRlQ29sdW1ucyhlKXtpZih0aGlzLl9hY3RpdmVCdWZmZXIueT50aGlzLl9hY3RpdmVCdWZmZXIuc2Nyb2xsQm90dG9tfHx0aGlzLl9hY3RpdmVCdWZmZXIueTx0aGlzLl9hY3RpdmVCdWZmZXIuc2Nyb2xsVG9wKXJldHVybiEwO2NvbnN0IHQ9ZS5wYXJhbXNbMF18fDE7Zm9yKGxldCBlPXRoaXMuX2FjdGl2ZUJ1ZmZlci5zY3JvbGxUb3A7ZTw9dGhpcy5fYWN0aXZlQnVmZmVyLnNjcm9sbEJvdHRvbTsrK2Upe2NvbnN0IGk9dGhpcy5fYWN0aXZlQnVmZmVyLmxpbmVzLmdldCh0aGlzLl9hY3RpdmVCdWZmZXIueWJhc2UrZSk7aS5kZWxldGVDZWxscyh0aGlzLl9hY3RpdmVCdWZmZXIueCx0LHRoaXMuX2FjdGl2ZUJ1ZmZlci5nZXROdWxsQ2VsbCh0aGlzLl9lcmFzZUF0dHJEYXRhKCkpLHRoaXMuX2VyYXNlQXR0ckRhdGEoKSksaS5pc1dyYXBwZWQ9ITF9cmV0dXJuIHRoaXMuX2RpcnR5Um93VHJhY2tlci5tYXJrUmFuZ2VEaXJ0eSh0aGlzLl9hY3RpdmVCdWZmZXIuc2Nyb2xsVG9wLHRoaXMuX2FjdGl2ZUJ1ZmZlci5zY3JvbGxCb3R0b20pLCEwfWVyYXNlQ2hhcnMoZSl7dGhpcy5fcmVzdHJpY3RDdXJzb3IoKTtjb25zdCB0PXRoaXMuX2FjdGl2ZUJ1ZmZlci5saW5lcy5nZXQodGhpcy5fYWN0aXZlQnVmZmVyLnliYXNlK3RoaXMuX2FjdGl2ZUJ1ZmZlci55KTtyZXR1cm4gdCYmKHQucmVwbGFjZUNlbGxzKHRoaXMuX2FjdGl2ZUJ1ZmZlci54LHRoaXMuX2FjdGl2ZUJ1ZmZlci54KyhlLnBhcmFtc1swXXx8MSksdGhpcy5fYWN0aXZlQnVmZmVyLmdldE51bGxDZWxsKHRoaXMuX2VyYXNlQXR0ckRhdGEoKSksdGhpcy5fZXJhc2VBdHRyRGF0YSgpKSx0aGlzLl9kaXJ0eVJvd1RyYWNrZXIubWFya0RpcnR5KHRoaXMuX2FjdGl2ZUJ1ZmZlci55KSksITB9cmVwZWF0UHJlY2VkaW5nQ2hhcmFjdGVyKGUpe2lmKCF0aGlzLl9wYXJzZXIucHJlY2VkaW5nQ29kZXBvaW50KXJldHVybiEwO2NvbnN0IHQ9ZS5wYXJhbXNbMF18fDEsaT1uZXcgVWludDMyQXJyYXkodCk7Zm9yKGxldCBlPTA7ZTx0OysrZSlpW2VdPXRoaXMuX3BhcnNlci5wcmVjZWRpbmdDb2RlcG9pbnQ7cmV0dXJuIHRoaXMucHJpbnQoaSwwLGkubGVuZ3RoKSwhMH1zZW5kRGV2aWNlQXR0cmlidXRlc1ByaW1hcnkoZSl7cmV0dXJuIGUucGFyYW1zWzBdPjB8fCh0aGlzLl9pcyhcInh0ZXJtXCIpfHx0aGlzLl9pcyhcInJ4dnQtdW5pY29kZVwiKXx8dGhpcy5faXMoXCJzY3JlZW5cIik/dGhpcy5fY29yZVNlcnZpY2UudHJpZ2dlckRhdGFFdmVudChuLkMwLkVTQytcIls/MTsyY1wiKTp0aGlzLl9pcyhcImxpbnV4XCIpJiZ0aGlzLl9jb3JlU2VydmljZS50cmlnZ2VyRGF0YUV2ZW50KG4uQzAuRVNDK1wiWz82Y1wiKSksITB9c2VuZERldmljZUF0dHJpYnV0ZXNTZWNvbmRhcnkoZSl7cmV0dXJuIGUucGFyYW1zWzBdPjB8fCh0aGlzLl9pcyhcInh0ZXJtXCIpP3RoaXMuX2NvcmVTZXJ2aWNlLnRyaWdnZXJEYXRhRXZlbnQobi5DMC5FU0MrXCJbPjA7Mjc2OzBjXCIpOnRoaXMuX2lzKFwicnh2dC11bmljb2RlXCIpP3RoaXMuX2NvcmVTZXJ2aWNlLnRyaWdnZXJEYXRhRXZlbnQobi5DMC5FU0MrXCJbPjg1Ozk1OzBjXCIpOnRoaXMuX2lzKFwibGludXhcIik/dGhpcy5fY29yZVNlcnZpY2UudHJpZ2dlckRhdGFFdmVudChlLnBhcmFtc1swXStcImNcIik6dGhpcy5faXMoXCJzY3JlZW5cIikmJnRoaXMuX2NvcmVTZXJ2aWNlLnRyaWdnZXJEYXRhRXZlbnQobi5DMC5FU0MrXCJbPjgzOzQwMDAzOzBjXCIpKSwhMH1faXMoZSl7cmV0dXJuIDA9PT0odGhpcy5fb3B0aW9uc1NlcnZpY2UucmF3T3B0aW9ucy50ZXJtTmFtZStcIlwiKS5pbmRleE9mKGUpfXNldE1vZGUoZSl7Zm9yKGxldCB0PTA7dDxlLmxlbmd0aDt0Kyspc3dpdGNoKGUucGFyYW1zW3RdKXtjYXNlIDQ6dGhpcy5fY29yZVNlcnZpY2UubW9kZXMuaW5zZXJ0TW9kZT0hMDticmVhaztjYXNlIDIwOnRoaXMuX29wdGlvbnNTZXJ2aWNlLm9wdGlvbnMuY29udmVydEVvbD0hMH1yZXR1cm4hMH1zZXRNb2RlUHJpdmF0ZShlKXtmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKylzd2l0Y2goZS5wYXJhbXNbdF0pe2Nhc2UgMTp0aGlzLl9jb3JlU2VydmljZS5kZWNQcml2YXRlTW9kZXMuYXBwbGljYXRpb25DdXJzb3JLZXlzPSEwO2JyZWFrO2Nhc2UgMjp0aGlzLl9jaGFyc2V0U2VydmljZS5zZXRnQ2hhcnNldCgwLG8uREVGQVVMVF9DSEFSU0VUKSx0aGlzLl9jaGFyc2V0U2VydmljZS5zZXRnQ2hhcnNldCgxLG8uREVGQVVMVF9DSEFSU0VUKSx0aGlzLl9jaGFyc2V0U2VydmljZS5zZXRnQ2hhcnNldCgyLG8uREVGQVVMVF9DSEFSU0VUKSx0aGlzLl9jaGFyc2V0U2VydmljZS5zZXRnQ2hhcnNldCgzLG8uREVGQVVMVF9DSEFSU0VUKTticmVhaztjYXNlIDM6dGhpcy5fb3B0aW9uc1NlcnZpY2UucmF3T3B0aW9ucy53aW5kb3dPcHRpb25zLnNldFdpbkxpbmVzJiYodGhpcy5fYnVmZmVyU2VydmljZS5yZXNpemUoMTMyLHRoaXMuX2J1ZmZlclNlcnZpY2Uucm93cyksdGhpcy5fb25SZXF1ZXN0UmVzZXQuZmlyZSgpKTticmVhaztjYXNlIDY6dGhpcy5fY29yZVNlcnZpY2UuZGVjUHJpdmF0ZU1vZGVzLm9yaWdpbj0hMCx0aGlzLl9zZXRDdXJzb3IoMCwwKTticmVhaztjYXNlIDc6dGhpcy5fY29yZVNlcnZpY2UuZGVjUHJpdmF0ZU1vZGVzLndyYXBhcm91bmQ9ITA7YnJlYWs7Y2FzZSAxMjp0aGlzLl9vcHRpb25zU2VydmljZS5vcHRpb25zLmN1cnNvckJsaW5rPSEwO2JyZWFrO2Nhc2UgNDU6dGhpcy5fY29yZVNlcnZpY2UuZGVjUHJpdmF0ZU1vZGVzLnJldmVyc2VXcmFwYXJvdW5kPSEwO2JyZWFrO2Nhc2UgNjY6dGhpcy5fbG9nU2VydmljZS5kZWJ1ZyhcIlNlcmlhbCBwb3J0IHJlcXVlc3RlZCBhcHBsaWNhdGlvbiBrZXlwYWQuXCIpLHRoaXMuX2NvcmVTZXJ2aWNlLmRlY1ByaXZhdGVNb2Rlcy5hcHBsaWNhdGlvbktleXBhZD0hMCx0aGlzLl9vblJlcXVlc3RTeW5jU2Nyb2xsQmFyLmZpcmUoKTticmVhaztjYXNlIDk6dGhpcy5fY29yZU1vdXNlU2VydmljZS5hY3RpdmVQcm90b2NvbD1cIlgxMFwiO2JyZWFrO2Nhc2UgMWUzOnRoaXMuX2NvcmVNb3VzZVNlcnZpY2UuYWN0aXZlUHJvdG9jb2w9XCJWVDIwMFwiO2JyZWFrO2Nhc2UgMTAwMjp0aGlzLl9jb3JlTW91c2VTZXJ2aWNlLmFjdGl2ZVByb3RvY29sPVwiRFJBR1wiO2JyZWFrO2Nhc2UgMTAwMzp0aGlzLl9jb3JlTW91c2VTZXJ2aWNlLmFjdGl2ZVByb3RvY29sPVwiQU5ZXCI7YnJlYWs7Y2FzZSAxMDA0OnRoaXMuX2NvcmVTZXJ2aWNlLmRlY1ByaXZhdGVNb2Rlcy5zZW5kRm9jdXM9ITAsdGhpcy5fb25SZXF1ZXN0U2VuZEZvY3VzLmZpcmUoKTticmVhaztjYXNlIDEwMDU6dGhpcy5fbG9nU2VydmljZS5kZWJ1ZyhcIkRFQ1NFVCAxMDA1IG5vdCBzdXBwb3J0ZWQgKHNlZSAjMjUwNylcIik7YnJlYWs7Y2FzZSAxMDA2OnRoaXMuX2NvcmVNb3VzZVNlcnZpY2UuYWN0aXZlRW5jb2Rpbmc9XCJTR1JcIjticmVhaztjYXNlIDEwMTU6dGhpcy5fbG9nU2VydmljZS5kZWJ1ZyhcIkRFQ1NFVCAxMDE1IG5vdCBzdXBwb3J0ZWQgKHNlZSAjMjUwNylcIik7YnJlYWs7Y2FzZSAxMDE2OnRoaXMuX2NvcmVNb3VzZVNlcnZpY2UuYWN0aXZlRW5jb2Rpbmc9XCJTR1JfUElYRUxTXCI7YnJlYWs7Y2FzZSAyNTp0aGlzLl9jb3JlU2VydmljZS5pc0N1cnNvckhpZGRlbj0hMTticmVhaztjYXNlIDEwNDg6dGhpcy5zYXZlQ3Vyc29yKCk7YnJlYWs7Y2FzZSAxMDQ5OnRoaXMuc2F2ZUN1cnNvcigpO2Nhc2UgNDc6Y2FzZSAxMDQ3OnRoaXMuX2J1ZmZlclNlcnZpY2UuYnVmZmVycy5hY3RpdmF0ZUFsdEJ1ZmZlcih0aGlzLl9lcmFzZUF0dHJEYXRhKCkpLHRoaXMuX2NvcmVTZXJ2aWNlLmlzQ3Vyc29ySW5pdGlhbGl6ZWQ9ITAsdGhpcy5fb25SZXF1ZXN0UmVmcmVzaFJvd3MuZmlyZSgwLHRoaXMuX2J1ZmZlclNlcnZpY2Uucm93cy0xKSx0aGlzLl9vblJlcXVlc3RTeW5jU2Nyb2xsQmFyLmZpcmUoKTticmVhaztjYXNlIDIwMDQ6dGhpcy5fY29yZVNlcnZpY2UuZGVjUHJpdmF0ZU1vZGVzLmJyYWNrZXRlZFBhc3RlTW9kZT0hMH1yZXR1cm4hMH1yZXNldE1vZGUoZSl7Zm9yKGxldCB0PTA7dDxlLmxlbmd0aDt0Kyspc3dpdGNoKGUucGFyYW1zW3RdKXtjYXNlIDQ6dGhpcy5fY29yZVNlcnZpY2UubW9kZXMuaW5zZXJ0TW9kZT0hMTticmVhaztjYXNlIDIwOnRoaXMuX29wdGlvbnNTZXJ2aWNlLm9wdGlvbnMuY29udmVydEVvbD0hMX1yZXR1cm4hMH1yZXNldE1vZGVQcml2YXRlKGUpe2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKXN3aXRjaChlLnBhcmFtc1t0XSl7Y2FzZSAxOnRoaXMuX2NvcmVTZXJ2aWNlLmRlY1ByaXZhdGVNb2Rlcy5hcHBsaWNhdGlvbkN1cnNvcktleXM9ITE7YnJlYWs7Y2FzZSAzOnRoaXMuX29wdGlvbnNTZXJ2aWNlLnJhd09wdGlvbnMud2luZG93T3B0aW9ucy5zZXRXaW5MaW5lcyYmKHRoaXMuX2J1ZmZlclNlcnZpY2UucmVzaXplKDgwLHRoaXMuX2J1ZmZlclNlcnZpY2Uucm93cyksdGhpcy5fb25SZXF1ZXN0UmVzZXQuZmlyZSgpKTticmVhaztjYXNlIDY6dGhpcy5fY29yZVNlcnZpY2UuZGVjUHJpdmF0ZU1vZGVzLm9yaWdpbj0hMSx0aGlzLl9zZXRDdXJzb3IoMCwwKTticmVhaztjYXNlIDc6dGhpcy5fY29yZVNlcnZpY2UuZGVjUHJpdmF0ZU1vZGVzLndyYXBhcm91bmQ9ITE7YnJlYWs7Y2FzZSAxMjp0aGlzLl9vcHRpb25zU2VydmljZS5vcHRpb25zLmN1cnNvckJsaW5rPSExO2JyZWFrO2Nhc2UgNDU6dGhpcy5fY29yZVNlcnZpY2UuZGVjUHJpdmF0ZU1vZGVzLnJldmVyc2VXcmFwYXJvdW5kPSExO2JyZWFrO2Nhc2UgNjY6dGhpcy5fbG9nU2VydmljZS5kZWJ1ZyhcIlN3aXRjaGluZyBiYWNrIHRvIG5vcm1hbCBrZXlwYWQuXCIpLHRoaXMuX2NvcmVTZXJ2aWNlLmRlY1ByaXZhdGVNb2Rlcy5hcHBsaWNhdGlvbktleXBhZD0hMSx0aGlzLl9vblJlcXVlc3RTeW5jU2Nyb2xsQmFyLmZpcmUoKTticmVhaztjYXNlIDk6Y2FzZSAxZTM6Y2FzZSAxMDAyOmNhc2UgMTAwMzp0aGlzLl9jb3JlTW91c2VTZXJ2aWNlLmFjdGl2ZVByb3RvY29sPVwiTk9ORVwiO2JyZWFrO2Nhc2UgMTAwNDp0aGlzLl9jb3JlU2VydmljZS5kZWNQcml2YXRlTW9kZXMuc2VuZEZvY3VzPSExO2JyZWFrO2Nhc2UgMTAwNTp0aGlzLl9sb2dTZXJ2aWNlLmRlYnVnKFwiREVDUlNUIDEwMDUgbm90IHN1cHBvcnRlZCAoc2VlICMyNTA3KVwiKTticmVhaztjYXNlIDEwMDY6Y2FzZSAxMDE2OnRoaXMuX2NvcmVNb3VzZVNlcnZpY2UuYWN0aXZlRW5jb2Rpbmc9XCJERUZBVUxUXCI7YnJlYWs7Y2FzZSAxMDE1OnRoaXMuX2xvZ1NlcnZpY2UuZGVidWcoXCJERUNSU1QgMTAxNSBub3Qgc3VwcG9ydGVkIChzZWUgIzI1MDcpXCIpO2JyZWFrO2Nhc2UgMjU6dGhpcy5fY29yZVNlcnZpY2UuaXNDdXJzb3JIaWRkZW49ITA7YnJlYWs7Y2FzZSAxMDQ4OnRoaXMucmVzdG9yZUN1cnNvcigpO2JyZWFrO2Nhc2UgMTA0OTpjYXNlIDQ3OmNhc2UgMTA0Nzp0aGlzLl9idWZmZXJTZXJ2aWNlLmJ1ZmZlcnMuYWN0aXZhdGVOb3JtYWxCdWZmZXIoKSwxMDQ5PT09ZS5wYXJhbXNbdF0mJnRoaXMucmVzdG9yZUN1cnNvcigpLHRoaXMuX2NvcmVTZXJ2aWNlLmlzQ3Vyc29ySW5pdGlhbGl6ZWQ9ITAsdGhpcy5fb25SZXF1ZXN0UmVmcmVzaFJvd3MuZmlyZSgwLHRoaXMuX2J1ZmZlclNlcnZpY2Uucm93cy0xKSx0aGlzLl9vblJlcXVlc3RTeW5jU2Nyb2xsQmFyLmZpcmUoKTticmVhaztjYXNlIDIwMDQ6dGhpcy5fY29yZVNlcnZpY2UuZGVjUHJpdmF0ZU1vZGVzLmJyYWNrZXRlZFBhc3RlTW9kZT0hMX1yZXR1cm4hMH1yZXF1ZXN0TW9kZShlLHQpe2NvbnN0IGk9dGhpcy5fY29yZVNlcnZpY2UuZGVjUHJpdmF0ZU1vZGVzLHthY3RpdmVQcm90b2NvbDpzLGFjdGl2ZUVuY29kaW5nOnJ9PXRoaXMuX2NvcmVNb3VzZVNlcnZpY2Usbz10aGlzLl9jb3JlU2VydmljZSx7YnVmZmVyczphLGNvbHM6aH09dGhpcy5fYnVmZmVyU2VydmljZSx7YWN0aXZlOmMsYWx0Omx9PWEsZD10aGlzLl9vcHRpb25zU2VydmljZS5yYXdPcHRpb25zLF89ZT0+ZT8xOjIsdT1lLnBhcmFtc1swXTtyZXR1cm4gZj11LHY9dD8yPT09dT80OjQ9PT11P18oby5tb2Rlcy5pbnNlcnRNb2RlKToxMj09PXU/MzoyMD09PXU/XyhkLmNvbnZlcnRFb2wpOjA6MT09PXU/XyhpLmFwcGxpY2F0aW9uQ3Vyc29yS2V5cyk6Mz09PXU/ZC53aW5kb3dPcHRpb25zLnNldFdpbkxpbmVzPzgwPT09aD8yOjEzMj09PWg/MTowOjA6Nj09PXU/XyhpLm9yaWdpbik6Nz09PXU/XyhpLndyYXBhcm91bmQpOjg9PT11PzM6OT09PXU/XyhcIlgxMFwiPT09cyk6MTI9PT11P18oZC5jdXJzb3JCbGluayk6MjU9PT11P18oIW8uaXNDdXJzb3JIaWRkZW4pOjQ1PT09dT9fKGkucmV2ZXJzZVdyYXBhcm91bmQpOjY2PT09dT9fKGkuYXBwbGljYXRpb25LZXlwYWQpOjY3PT09dT80OjFlMz09PXU/XyhcIlZUMjAwXCI9PT1zKToxMDAyPT09dT9fKFwiRFJBR1wiPT09cyk6MTAwMz09PXU/XyhcIkFOWVwiPT09cyk6MTAwND09PXU/XyhpLnNlbmRGb2N1cyk6MTAwNT09PXU/NDoxMDA2PT09dT9fKFwiU0dSXCI9PT1yKToxMDE1PT09dT80OjEwMTY9PT11P18oXCJTR1JfUElYRUxTXCI9PT1yKToxMDQ4PT09dT8xOjQ3PT09dXx8MTA0Nz09PXV8fDEwNDk9PT11P18oYz09PWwpOjIwMDQ9PT11P18oaS5icmFja2V0ZWRQYXN0ZU1vZGUpOjAsby50cmlnZ2VyRGF0YUV2ZW50KGAke24uQzAuRVNDfVske3Q/XCJcIjpcIj9cIn0ke2Z9OyR7dn0keWApLCEwO3ZhciBmLHZ9X3VwZGF0ZUF0dHJDb2xvcihlLHQsaSxzLHIpe3JldHVybiAyPT09dD8oZXw9NTAzMzE2NDgsZSY9LTE2Nzc3MjE2LGV8PWYuQXR0cmlidXRlRGF0YS5mcm9tQ29sb3JSR0IoW2kscyxyXSkpOjU9PT10JiYoZSY9LTUwMzMxOTA0LGV8PTMzNTU0NDMyfDI1NSZpKSxlfV9leHRyYWN0Q29sb3IoZSx0LGkpe2NvbnN0IHM9WzAsMCwtMSwwLDAsMF07bGV0IHI9MCxuPTA7ZG97aWYoc1tuK3JdPWUucGFyYW1zW3Qrbl0sZS5oYXNTdWJQYXJhbXModCtuKSl7Y29uc3QgaT1lLmdldFN1YlBhcmFtcyh0K24pO2xldCBvPTA7ZG97NT09PXNbMV0mJihyPTEpLHNbbitvKzErcl09aVtvXX13aGlsZSgrK288aS5sZW5ndGgmJm8rbisxK3I8cy5sZW5ndGgpO2JyZWFrfWlmKDU9PT1zWzFdJiZuK3I+PTJ8fDI9PT1zWzFdJiZuK3I+PTUpYnJlYWs7c1sxXSYmKHI9MSl9d2hpbGUoKytuK3Q8ZS5sZW5ndGgmJm4rcjxzLmxlbmd0aCk7Zm9yKGxldCBlPTI7ZTxzLmxlbmd0aDsrK2UpLTE9PT1zW2VdJiYoc1tlXT0wKTtzd2l0Y2goc1swXSl7Y2FzZSAzODppLmZnPXRoaXMuX3VwZGF0ZUF0dHJDb2xvcihpLmZnLHNbMV0sc1szXSxzWzRdLHNbNV0pO2JyZWFrO2Nhc2UgNDg6aS5iZz10aGlzLl91cGRhdGVBdHRyQ29sb3IoaS5iZyxzWzFdLHNbM10sc1s0XSxzWzVdKTticmVhaztjYXNlIDU4OmkuZXh0ZW5kZWQ9aS5leHRlbmRlZC5jbG9uZSgpLGkuZXh0ZW5kZWQudW5kZXJsaW5lQ29sb3I9dGhpcy5fdXBkYXRlQXR0ckNvbG9yKGkuZXh0ZW5kZWQudW5kZXJsaW5lQ29sb3Isc1sxXSxzWzNdLHNbNF0sc1s1XSl9cmV0dXJuIG59X3Byb2Nlc3NVbmRlcmxpbmUoZSx0KXt0LmV4dGVuZGVkPXQuZXh0ZW5kZWQuY2xvbmUoKSwoIX5lfHxlPjUpJiYoZT0xKSx0LmV4dGVuZGVkLnVuZGVybGluZVN0eWxlPWUsdC5mZ3w9MjY4NDM1NDU2LDA9PT1lJiYodC5mZyY9LTI2ODQzNTQ1NyksdC51cGRhdGVFeHRlbmRlZCgpfV9wcm9jZXNzU0dSMChlKXtlLmZnPWwuREVGQVVMVF9BVFRSX0RBVEEuZmcsZS5iZz1sLkRFRkFVTFRfQVRUUl9EQVRBLmJnLGUuZXh0ZW5kZWQ9ZS5leHRlbmRlZC5jbG9uZSgpLGUuZXh0ZW5kZWQudW5kZXJsaW5lU3R5bGU9MCxlLmV4dGVuZGVkLnVuZGVybGluZUNvbG9yJj0tNjcxMDg4NjQsZS51cGRhdGVFeHRlbmRlZCgpfWNoYXJBdHRyaWJ1dGVzKGUpe2lmKDE9PT1lLmxlbmd0aCYmMD09PWUucGFyYW1zWzBdKXJldHVybiB0aGlzLl9wcm9jZXNzU0dSMCh0aGlzLl9jdXJBdHRyRGF0YSksITA7Y29uc3QgdD1lLmxlbmd0aDtsZXQgaTtjb25zdCBzPXRoaXMuX2N1ckF0dHJEYXRhO2ZvcihsZXQgcj0wO3I8dDtyKyspaT1lLnBhcmFtc1tyXSxpPj0zMCYmaTw9Mzc/KHMuZmcmPS01MDMzMTkwNCxzLmZnfD0xNjc3NzIxNnxpLTMwKTppPj00MCYmaTw9NDc/KHMuYmcmPS01MDMzMTkwNCxzLmJnfD0xNjc3NzIxNnxpLTQwKTppPj05MCYmaTw9OTc/KHMuZmcmPS01MDMzMTkwNCxzLmZnfD0xNjc3NzIyNHxpLTkwKTppPj0xMDAmJmk8PTEwNz8ocy5iZyY9LTUwMzMxOTA0LHMuYmd8PTE2Nzc3MjI0fGktMTAwKTowPT09aT90aGlzLl9wcm9jZXNzU0dSMChzKToxPT09aT9zLmZnfD0xMzQyMTc3Mjg6Mz09PWk/cy5iZ3w9NjcxMDg4NjQ6ND09PWk/KHMuZmd8PTI2ODQzNTQ1Nix0aGlzLl9wcm9jZXNzVW5kZXJsaW5lKGUuaGFzU3ViUGFyYW1zKHIpP2UuZ2V0U3ViUGFyYW1zKHIpWzBdOjEscykpOjU9PT1pP3MuZmd8PTUzNjg3MDkxMjo3PT09aT9zLmZnfD02NzEwODg2NDo4PT09aT9zLmZnfD0xMDczNzQxODI0Ojk9PT1pP3MuZmd8PTIxNDc0ODM2NDg6Mj09PWk/cy5iZ3w9MTM0MjE3NzI4OjIxPT09aT90aGlzLl9wcm9jZXNzVW5kZXJsaW5lKDIscyk6MjI9PT1pPyhzLmZnJj0tMTM0MjE3NzI5LHMuYmcmPS0xMzQyMTc3MjkpOjIzPT09aT9zLmJnJj0tNjcxMDg4NjU6MjQ9PT1pPyhzLmZnJj0tMjY4NDM1NDU3LHRoaXMuX3Byb2Nlc3NVbmRlcmxpbmUoMCxzKSk6MjU9PT1pP3MuZmcmPS01MzY4NzA5MTM6Mjc9PT1pP3MuZmcmPS02NzEwODg2NToyOD09PWk/cy5mZyY9LTEwNzM3NDE4MjU6Mjk9PT1pP3MuZmcmPTIxNDc0ODM2NDc6Mzk9PT1pPyhzLmZnJj0tNjcxMDg4NjQscy5mZ3w9MTY3NzcyMTUmbC5ERUZBVUxUX0FUVFJfREFUQS5mZyk6NDk9PT1pPyhzLmJnJj0tNjcxMDg4NjQscy5iZ3w9MTY3NzcyMTUmbC5ERUZBVUxUX0FUVFJfREFUQS5iZyk6Mzg9PT1pfHw0OD09PWl8fDU4PT09aT9yKz10aGlzLl9leHRyYWN0Q29sb3IoZSxyLHMpOjUzPT09aT9zLmJnfD0xMDczNzQxODI0OjU1PT09aT9zLmJnJj0tMTA3Mzc0MTgyNTo1OT09PWk/KHMuZXh0ZW5kZWQ9cy5leHRlbmRlZC5jbG9uZSgpLHMuZXh0ZW5kZWQudW5kZXJsaW5lQ29sb3I9LTEscy51cGRhdGVFeHRlbmRlZCgpKToxMDA9PT1pPyhzLmZnJj0tNjcxMDg4NjQscy5mZ3w9MTY3NzcyMTUmbC5ERUZBVUxUX0FUVFJfREFUQS5mZyxzLmJnJj0tNjcxMDg4NjQscy5iZ3w9MTY3NzcyMTUmbC5ERUZBVUxUX0FUVFJfREFUQS5iZyk6dGhpcy5fbG9nU2VydmljZS5kZWJ1ZyhcIlVua25vd24gU0dSIGF0dHJpYnV0ZTogJWQuXCIsaSk7cmV0dXJuITB9ZGV2aWNlU3RhdHVzKGUpe3N3aXRjaChlLnBhcmFtc1swXSl7Y2FzZSA1OnRoaXMuX2NvcmVTZXJ2aWNlLnRyaWdnZXJEYXRhRXZlbnQoYCR7bi5DMC5FU0N9WzBuYCk7YnJlYWs7Y2FzZSA2OmNvbnN0IGU9dGhpcy5fYWN0aXZlQnVmZmVyLnkrMSx0PXRoaXMuX2FjdGl2ZUJ1ZmZlci54KzE7dGhpcy5fY29yZVNlcnZpY2UudHJpZ2dlckRhdGFFdmVudChgJHtuLkMwLkVTQ31bJHtlfTske3R9UmApfXJldHVybiEwfWRldmljZVN0YXR1c1ByaXZhdGUoZSl7aWYoNj09PWUucGFyYW1zWzBdKXtjb25zdCBlPXRoaXMuX2FjdGl2ZUJ1ZmZlci55KzEsdD10aGlzLl9hY3RpdmVCdWZmZXIueCsxO3RoaXMuX2NvcmVTZXJ2aWNlLnRyaWdnZXJEYXRhRXZlbnQoYCR7bi5DMC5FU0N9Wz8ke2V9OyR7dH1SYCl9cmV0dXJuITB9c29mdFJlc2V0KGUpe3JldHVybiB0aGlzLl9jb3JlU2VydmljZS5pc0N1cnNvckhpZGRlbj0hMSx0aGlzLl9vblJlcXVlc3RTeW5jU2Nyb2xsQmFyLmZpcmUoKSx0aGlzLl9hY3RpdmVCdWZmZXIuc2Nyb2xsVG9wPTAsdGhpcy5fYWN0aXZlQnVmZmVyLnNjcm9sbEJvdHRvbT10aGlzLl9idWZmZXJTZXJ2aWNlLnJvd3MtMSx0aGlzLl9jdXJBdHRyRGF0YT1sLkRFRkFVTFRfQVRUUl9EQVRBLmNsb25lKCksdGhpcy5fY29yZVNlcnZpY2UucmVzZXQoKSx0aGlzLl9jaGFyc2V0U2VydmljZS5yZXNldCgpLHRoaXMuX2FjdGl2ZUJ1ZmZlci5zYXZlZFg9MCx0aGlzLl9hY3RpdmVCdWZmZXIuc2F2ZWRZPXRoaXMuX2FjdGl2ZUJ1ZmZlci55YmFzZSx0aGlzLl9hY3RpdmVCdWZmZXIuc2F2ZWRDdXJBdHRyRGF0YS5mZz10aGlzLl9jdXJBdHRyRGF0YS5mZyx0aGlzLl9hY3RpdmVCdWZmZXIuc2F2ZWRDdXJBdHRyRGF0YS5iZz10aGlzLl9jdXJBdHRyRGF0YS5iZyx0aGlzLl9hY3RpdmVCdWZmZXIuc2F2ZWRDaGFyc2V0PXRoaXMuX2NoYXJzZXRTZXJ2aWNlLmNoYXJzZXQsdGhpcy5fY29yZVNlcnZpY2UuZGVjUHJpdmF0ZU1vZGVzLm9yaWdpbj0hMSwhMH1zZXRDdXJzb3JTdHlsZShlKXtjb25zdCB0PWUucGFyYW1zWzBdfHwxO3N3aXRjaCh0KXtjYXNlIDE6Y2FzZSAyOnRoaXMuX29wdGlvbnNTZXJ2aWNlLm9wdGlvbnMuY3Vyc29yU3R5bGU9XCJibG9ja1wiO2JyZWFrO2Nhc2UgMzpjYXNlIDQ6dGhpcy5fb3B0aW9uc1NlcnZpY2Uub3B0aW9ucy5jdXJzb3JTdHlsZT1cInVuZGVybGluZVwiO2JyZWFrO2Nhc2UgNTpjYXNlIDY6dGhpcy5fb3B0aW9uc1NlcnZpY2Uub3B0aW9ucy5jdXJzb3JTdHlsZT1cImJhclwifWNvbnN0IGk9dCUyPT0xO3JldHVybiB0aGlzLl9vcHRpb25zU2VydmljZS5vcHRpb25zLmN1cnNvckJsaW5rPWksITB9c2V0U2Nyb2xsUmVnaW9uKGUpe2NvbnN0IHQ9ZS5wYXJhbXNbMF18fDE7bGV0IGk7cmV0dXJuKGUubGVuZ3RoPDJ8fChpPWUucGFyYW1zWzFdKT50aGlzLl9idWZmZXJTZXJ2aWNlLnJvd3N8fDA9PT1pKSYmKGk9dGhpcy5fYnVmZmVyU2VydmljZS5yb3dzKSxpPnQmJih0aGlzLl9hY3RpdmVCdWZmZXIuc2Nyb2xsVG9wPXQtMSx0aGlzLl9hY3RpdmVCdWZmZXIuc2Nyb2xsQm90dG9tPWktMSx0aGlzLl9zZXRDdXJzb3IoMCwwKSksITB9d2luZG93T3B0aW9ucyhlKXtpZighYihlLnBhcmFtc1swXSx0aGlzLl9vcHRpb25zU2VydmljZS5yYXdPcHRpb25zLndpbmRvd09wdGlvbnMpKXJldHVybiEwO2NvbnN0IHQ9ZS5sZW5ndGg+MT9lLnBhcmFtc1sxXTowO3N3aXRjaChlLnBhcmFtc1swXSl7Y2FzZSAxNDoyIT09dCYmdGhpcy5fb25SZXF1ZXN0V2luZG93c09wdGlvbnNSZXBvcnQuZmlyZSh5LkdFVF9XSU5fU0laRV9QSVhFTFMpO2JyZWFrO2Nhc2UgMTY6dGhpcy5fb25SZXF1ZXN0V2luZG93c09wdGlvbnNSZXBvcnQuZmlyZSh5LkdFVF9DRUxMX1NJWkVfUElYRUxTKTticmVhaztjYXNlIDE4OnRoaXMuX2J1ZmZlclNlcnZpY2UmJnRoaXMuX2NvcmVTZXJ2aWNlLnRyaWdnZXJEYXRhRXZlbnQoYCR7bi5DMC5FU0N9Wzg7JHt0aGlzLl9idWZmZXJTZXJ2aWNlLnJvd3N9OyR7dGhpcy5fYnVmZmVyU2VydmljZS5jb2xzfXRgKTticmVhaztjYXNlIDIyOjAhPT10JiYyIT09dHx8KHRoaXMuX3dpbmRvd1RpdGxlU3RhY2sucHVzaCh0aGlzLl93aW5kb3dUaXRsZSksdGhpcy5fd2luZG93VGl0bGVTdGFjay5sZW5ndGg+MTAmJnRoaXMuX3dpbmRvd1RpdGxlU3RhY2suc2hpZnQoKSksMCE9PXQmJjEhPT10fHwodGhpcy5faWNvbk5hbWVTdGFjay5wdXNoKHRoaXMuX2ljb25OYW1lKSx0aGlzLl9pY29uTmFtZVN0YWNrLmxlbmd0aD4xMCYmdGhpcy5faWNvbk5hbWVTdGFjay5zaGlmdCgpKTticmVhaztjYXNlIDIzOjAhPT10JiYyIT09dHx8dGhpcy5fd2luZG93VGl0bGVTdGFjay5sZW5ndGgmJnRoaXMuc2V0VGl0bGUodGhpcy5fd2luZG93VGl0bGVTdGFjay5wb3AoKSksMCE9PXQmJjEhPT10fHx0aGlzLl9pY29uTmFtZVN0YWNrLmxlbmd0aCYmdGhpcy5zZXRJY29uTmFtZSh0aGlzLl9pY29uTmFtZVN0YWNrLnBvcCgpKX1yZXR1cm4hMH1zYXZlQ3Vyc29yKGUpe3JldHVybiB0aGlzLl9hY3RpdmVCdWZmZXIuc2F2ZWRYPXRoaXMuX2FjdGl2ZUJ1ZmZlci54LHRoaXMuX2FjdGl2ZUJ1ZmZlci5zYXZlZFk9dGhpcy5fYWN0aXZlQnVmZmVyLnliYXNlK3RoaXMuX2FjdGl2ZUJ1ZmZlci55LHRoaXMuX2FjdGl2ZUJ1ZmZlci5zYXZlZEN1ckF0dHJEYXRhLmZnPXRoaXMuX2N1ckF0dHJEYXRhLmZnLHRoaXMuX2FjdGl2ZUJ1ZmZlci5zYXZlZEN1ckF0dHJEYXRhLmJnPXRoaXMuX2N1ckF0dHJEYXRhLmJnLHRoaXMuX2FjdGl2ZUJ1ZmZlci5zYXZlZENoYXJzZXQ9dGhpcy5fY2hhcnNldFNlcnZpY2UuY2hhcnNldCwhMH1yZXN0b3JlQ3Vyc29yKGUpe3JldHVybiB0aGlzLl9hY3RpdmVCdWZmZXIueD10aGlzLl9hY3RpdmVCdWZmZXIuc2F2ZWRYfHwwLHRoaXMuX2FjdGl2ZUJ1ZmZlci55PU1hdGgubWF4KHRoaXMuX2FjdGl2ZUJ1ZmZlci5zYXZlZFktdGhpcy5fYWN0aXZlQnVmZmVyLnliYXNlLDApLHRoaXMuX2N1ckF0dHJEYXRhLmZnPXRoaXMuX2FjdGl2ZUJ1ZmZlci5zYXZlZEN1ckF0dHJEYXRhLmZnLHRoaXMuX2N1ckF0dHJEYXRhLmJnPXRoaXMuX2FjdGl2ZUJ1ZmZlci5zYXZlZEN1ckF0dHJEYXRhLmJnLHRoaXMuX2NoYXJzZXRTZXJ2aWNlLmNoYXJzZXQ9dGhpcy5fc2F2ZWRDaGFyc2V0LHRoaXMuX2FjdGl2ZUJ1ZmZlci5zYXZlZENoYXJzZXQmJih0aGlzLl9jaGFyc2V0U2VydmljZS5jaGFyc2V0PXRoaXMuX2FjdGl2ZUJ1ZmZlci5zYXZlZENoYXJzZXQpLHRoaXMuX3Jlc3RyaWN0Q3Vyc29yKCksITB9c2V0VGl0bGUoZSl7cmV0dXJuIHRoaXMuX3dpbmRvd1RpdGxlPWUsdGhpcy5fb25UaXRsZUNoYW5nZS5maXJlKGUpLCEwfXNldEljb25OYW1lKGUpe3JldHVybiB0aGlzLl9pY29uTmFtZT1lLCEwfXNldE9yUmVwb3J0SW5kZXhlZENvbG9yKGUpe2NvbnN0IHQ9W10saT1lLnNwbGl0KFwiO1wiKTtmb3IoO2kubGVuZ3RoPjE7KXtjb25zdCBlPWkuc2hpZnQoKSxzPWkuc2hpZnQoKTtpZigvXlxcZCskLy5leGVjKGUpKXtjb25zdCBpPXBhcnNlSW50KGUpO2lmKDA8PWkmJmk8MjU2KWlmKFwiP1wiPT09cyl0LnB1c2goe3R5cGU6MCxpbmRleDppfSk7ZWxzZXtjb25zdCBlPSgwLFMucGFyc2VDb2xvcikocyk7ZSYmdC5wdXNoKHt0eXBlOjEsaW5kZXg6aSxjb2xvcjplfSl9fX1yZXR1cm4gdC5sZW5ndGgmJnRoaXMuX29uQ29sb3IuZmlyZSh0KSwhMH1zZXRIeXBlcmxpbmsoZSl7Y29uc3QgdD1lLnNwbGl0KFwiO1wiKTtyZXR1cm4hKHQubGVuZ3RoPDIpJiYodFsxXT90aGlzLl9jcmVhdGVIeXBlcmxpbmsodFswXSx0WzFdKTohdFswXSYmdGhpcy5fZmluaXNoSHlwZXJsaW5rKCkpfV9jcmVhdGVIeXBlcmxpbmsoZSx0KXt0aGlzLl9nZXRDdXJyZW50TGlua0lkKCkmJnRoaXMuX2ZpbmlzaEh5cGVybGluaygpO2NvbnN0IGk9ZS5zcGxpdChcIjpcIik7bGV0IHM7Y29uc3Qgcj1pLmZpbmRJbmRleCgoZT0+ZS5zdGFydHNXaXRoKFwiaWQ9XCIpKSk7cmV0dXJuLTEhPT1yJiYocz1pW3JdLnNsaWNlKDMpfHx2b2lkIDApLHRoaXMuX2N1ckF0dHJEYXRhLmV4dGVuZGVkPXRoaXMuX2N1ckF0dHJEYXRhLmV4dGVuZGVkLmNsb25lKCksdGhpcy5fY3VyQXR0ckRhdGEuZXh0ZW5kZWQudXJsSWQ9dGhpcy5fb3NjTGlua1NlcnZpY2UucmVnaXN0ZXJMaW5rKHtpZDpzLHVyaTp0fSksdGhpcy5fY3VyQXR0ckRhdGEudXBkYXRlRXh0ZW5kZWQoKSwhMH1fZmluaXNoSHlwZXJsaW5rKCl7cmV0dXJuIHRoaXMuX2N1ckF0dHJEYXRhLmV4dGVuZGVkPXRoaXMuX2N1ckF0dHJEYXRhLmV4dGVuZGVkLmNsb25lKCksdGhpcy5fY3VyQXR0ckRhdGEuZXh0ZW5kZWQudXJsSWQ9MCx0aGlzLl9jdXJBdHRyRGF0YS51cGRhdGVFeHRlbmRlZCgpLCEwfV9zZXRPclJlcG9ydFNwZWNpYWxDb2xvcihlLHQpe2NvbnN0IGk9ZS5zcGxpdChcIjtcIik7Zm9yKGxldCBlPTA7ZTxpLmxlbmd0aCYmISh0Pj10aGlzLl9zcGVjaWFsQ29sb3JzLmxlbmd0aCk7KytlLCsrdClpZihcIj9cIj09PWlbZV0pdGhpcy5fb25Db2xvci5maXJlKFt7dHlwZTowLGluZGV4OnRoaXMuX3NwZWNpYWxDb2xvcnNbdF19XSk7ZWxzZXtjb25zdCBzPSgwLFMucGFyc2VDb2xvcikoaVtlXSk7cyYmdGhpcy5fb25Db2xvci5maXJlKFt7dHlwZToxLGluZGV4OnRoaXMuX3NwZWNpYWxDb2xvcnNbdF0sY29sb3I6c31dKX1yZXR1cm4hMH1zZXRPclJlcG9ydEZnQ29sb3IoZSl7cmV0dXJuIHRoaXMuX3NldE9yUmVwb3J0U3BlY2lhbENvbG9yKGUsMCl9c2V0T3JSZXBvcnRCZ0NvbG9yKGUpe3JldHVybiB0aGlzLl9zZXRPclJlcG9ydFNwZWNpYWxDb2xvcihlLDEpfXNldE9yUmVwb3J0Q3Vyc29yQ29sb3IoZSl7cmV0dXJuIHRoaXMuX3NldE9yUmVwb3J0U3BlY2lhbENvbG9yKGUsMil9cmVzdG9yZUluZGV4ZWRDb2xvcihlKXtpZighZSlyZXR1cm4gdGhpcy5fb25Db2xvci5maXJlKFt7dHlwZToyfV0pLCEwO2NvbnN0IHQ9W10saT1lLnNwbGl0KFwiO1wiKTtmb3IobGV0IGU9MDtlPGkubGVuZ3RoOysrZSlpZigvXlxcZCskLy5leGVjKGlbZV0pKXtjb25zdCBzPXBhcnNlSW50KGlbZV0pOzA8PXMmJnM8MjU2JiZ0LnB1c2goe3R5cGU6MixpbmRleDpzfSl9cmV0dXJuIHQubGVuZ3RoJiZ0aGlzLl9vbkNvbG9yLmZpcmUodCksITB9cmVzdG9yZUZnQ29sb3IoZSl7cmV0dXJuIHRoaXMuX29uQ29sb3IuZmlyZShbe3R5cGU6MixpbmRleDoyNTZ9XSksITB9cmVzdG9yZUJnQ29sb3IoZSl7cmV0dXJuIHRoaXMuX29uQ29sb3IuZmlyZShbe3R5cGU6MixpbmRleDoyNTd9XSksITB9cmVzdG9yZUN1cnNvckNvbG9yKGUpe3JldHVybiB0aGlzLl9vbkNvbG9yLmZpcmUoW3t0eXBlOjIsaW5kZXg6MjU4fV0pLCEwfW5leHRMaW5lKCl7cmV0dXJuIHRoaXMuX2FjdGl2ZUJ1ZmZlci54PTAsdGhpcy5pbmRleCgpLCEwfWtleXBhZEFwcGxpY2F0aW9uTW9kZSgpe3JldHVybiB0aGlzLl9sb2dTZXJ2aWNlLmRlYnVnKFwiU2VyaWFsIHBvcnQgcmVxdWVzdGVkIGFwcGxpY2F0aW9uIGtleXBhZC5cIiksdGhpcy5fY29yZVNlcnZpY2UuZGVjUHJpdmF0ZU1vZGVzLmFwcGxpY2F0aW9uS2V5cGFkPSEwLHRoaXMuX29uUmVxdWVzdFN5bmNTY3JvbGxCYXIuZmlyZSgpLCEwfWtleXBhZE51bWVyaWNNb2RlKCl7cmV0dXJuIHRoaXMuX2xvZ1NlcnZpY2UuZGVidWcoXCJTd2l0Y2hpbmcgYmFjayB0byBub3JtYWwga2V5cGFkLlwiKSx0aGlzLl9jb3JlU2VydmljZS5kZWNQcml2YXRlTW9kZXMuYXBwbGljYXRpb25LZXlwYWQ9ITEsdGhpcy5fb25SZXF1ZXN0U3luY1Njcm9sbEJhci5maXJlKCksITB9c2VsZWN0RGVmYXVsdENoYXJzZXQoKXtyZXR1cm4gdGhpcy5fY2hhcnNldFNlcnZpY2Uuc2V0Z0xldmVsKDApLHRoaXMuX2NoYXJzZXRTZXJ2aWNlLnNldGdDaGFyc2V0KDAsby5ERUZBVUxUX0NIQVJTRVQpLCEwfXNlbGVjdENoYXJzZXQoZSl7cmV0dXJuIDIhPT1lLmxlbmd0aD8odGhpcy5zZWxlY3REZWZhdWx0Q2hhcnNldCgpLCEwKTooXCIvXCI9PT1lWzBdfHx0aGlzLl9jaGFyc2V0U2VydmljZS5zZXRnQ2hhcnNldChtW2VbMF1dLG8uQ0hBUlNFVFNbZVsxXV18fG8uREVGQVVMVF9DSEFSU0VUKSwhMCl9aW5kZXgoKXtyZXR1cm4gdGhpcy5fcmVzdHJpY3RDdXJzb3IoKSx0aGlzLl9hY3RpdmVCdWZmZXIueSsrLHRoaXMuX2FjdGl2ZUJ1ZmZlci55PT09dGhpcy5fYWN0aXZlQnVmZmVyLnNjcm9sbEJvdHRvbSsxPyh0aGlzLl9hY3RpdmVCdWZmZXIueS0tLHRoaXMuX2J1ZmZlclNlcnZpY2Uuc2Nyb2xsKHRoaXMuX2VyYXNlQXR0ckRhdGEoKSkpOnRoaXMuX2FjdGl2ZUJ1ZmZlci55Pj10aGlzLl9idWZmZXJTZXJ2aWNlLnJvd3MmJih0aGlzLl9hY3RpdmVCdWZmZXIueT10aGlzLl9idWZmZXJTZXJ2aWNlLnJvd3MtMSksdGhpcy5fcmVzdHJpY3RDdXJzb3IoKSwhMH10YWJTZXQoKXtyZXR1cm4gdGhpcy5fYWN0aXZlQnVmZmVyLnRhYnNbdGhpcy5fYWN0aXZlQnVmZmVyLnhdPSEwLCEwfXJldmVyc2VJbmRleCgpe2lmKHRoaXMuX3Jlc3RyaWN0Q3Vyc29yKCksdGhpcy5fYWN0aXZlQnVmZmVyLnk9PT10aGlzLl9hY3RpdmVCdWZmZXIuc2Nyb2xsVG9wKXtjb25zdCBlPXRoaXMuX2FjdGl2ZUJ1ZmZlci5zY3JvbGxCb3R0b20tdGhpcy5fYWN0aXZlQnVmZmVyLnNjcm9sbFRvcDt0aGlzLl9hY3RpdmVCdWZmZXIubGluZXMuc2hpZnRFbGVtZW50cyh0aGlzLl9hY3RpdmVCdWZmZXIueWJhc2UrdGhpcy5fYWN0aXZlQnVmZmVyLnksZSwxKSx0aGlzLl9hY3RpdmVCdWZmZXIubGluZXMuc2V0KHRoaXMuX2FjdGl2ZUJ1ZmZlci55YmFzZSt0aGlzLl9hY3RpdmVCdWZmZXIueSx0aGlzLl9hY3RpdmVCdWZmZXIuZ2V0QmxhbmtMaW5lKHRoaXMuX2VyYXNlQXR0ckRhdGEoKSkpLHRoaXMuX2RpcnR5Um93VHJhY2tlci5tYXJrUmFuZ2VEaXJ0eSh0aGlzLl9hY3RpdmVCdWZmZXIuc2Nyb2xsVG9wLHRoaXMuX2FjdGl2ZUJ1ZmZlci5zY3JvbGxCb3R0b20pfWVsc2UgdGhpcy5fYWN0aXZlQnVmZmVyLnktLSx0aGlzLl9yZXN0cmljdEN1cnNvcigpO3JldHVybiEwfWZ1bGxSZXNldCgpe3JldHVybiB0aGlzLl9wYXJzZXIucmVzZXQoKSx0aGlzLl9vblJlcXVlc3RSZXNldC5maXJlKCksITB9cmVzZXQoKXt0aGlzLl9jdXJBdHRyRGF0YT1sLkRFRkFVTFRfQVRUUl9EQVRBLmNsb25lKCksdGhpcy5fZXJhc2VBdHRyRGF0YUludGVybmFsPWwuREVGQVVMVF9BVFRSX0RBVEEuY2xvbmUoKX1fZXJhc2VBdHRyRGF0YSgpe3JldHVybiB0aGlzLl9lcmFzZUF0dHJEYXRhSW50ZXJuYWwuYmcmPS02NzEwODg2NCx0aGlzLl9lcmFzZUF0dHJEYXRhSW50ZXJuYWwuYmd8PTY3MTA4ODYzJnRoaXMuX2N1ckF0dHJEYXRhLmJnLHRoaXMuX2VyYXNlQXR0ckRhdGFJbnRlcm5hbH1zZXRnTGV2ZWwoZSl7cmV0dXJuIHRoaXMuX2NoYXJzZXRTZXJ2aWNlLnNldGdMZXZlbChlKSwhMH1zY3JlZW5BbGlnbm1lbnRQYXR0ZXJuKCl7Y29uc3QgZT1uZXcgdS5DZWxsRGF0YTtlLmNvbnRlbnQ9MTw8MjJ8XCJFXCIuY2hhckNvZGVBdCgwKSxlLmZnPXRoaXMuX2N1ckF0dHJEYXRhLmZnLGUuYmc9dGhpcy5fY3VyQXR0ckRhdGEuYmcsdGhpcy5fc2V0Q3Vyc29yKDAsMCk7Zm9yKGxldCB0PTA7dDx0aGlzLl9idWZmZXJTZXJ2aWNlLnJvd3M7Kyt0KXtjb25zdCBpPXRoaXMuX2FjdGl2ZUJ1ZmZlci55YmFzZSt0aGlzLl9hY3RpdmVCdWZmZXIueSt0LHM9dGhpcy5fYWN0aXZlQnVmZmVyLmxpbmVzLmdldChpKTtzJiYocy5maWxsKGUpLHMuaXNXcmFwcGVkPSExKX1yZXR1cm4gdGhpcy5fZGlydHlSb3dUcmFja2VyLm1hcmtBbGxEaXJ0eSgpLHRoaXMuX3NldEN1cnNvcigwLDApLCEwfXJlcXVlc3RTdGF0dXNTdHJpbmcoZSx0KXtjb25zdCBpPXRoaXMuX2J1ZmZlclNlcnZpY2UuYnVmZmVyLHM9dGhpcy5fb3B0aW9uc1NlcnZpY2UucmF3T3B0aW9ucztyZXR1cm4oZT0+KHRoaXMuX2NvcmVTZXJ2aWNlLnRyaWdnZXJEYXRhRXZlbnQoYCR7bi5DMC5FU0N9JHtlfSR7bi5DMC5FU0N9XFxcXGApLCEwKSkoJ1wicSc9PT1lP2BQMSRyJHt0aGlzLl9jdXJBdHRyRGF0YS5pc1Byb3RlY3RlZCgpPzE6MH1cInFgOidcInAnPT09ZT8nUDEkcjYxOzFcInAnOlwiclwiPT09ZT9gUDEkciR7aS5zY3JvbGxUb3ArMX07JHtpLnNjcm9sbEJvdHRvbSsxfXJgOlwibVwiPT09ZT9cIlAxJHIwbVwiOlwiIHFcIj09PWU/YFAxJHIke3tibG9jazoyLHVuZGVybGluZTo0LGJhcjo2fVtzLmN1cnNvclN0eWxlXS0ocy5jdXJzb3JCbGluaz8xOjApfSBxYDpcIlAwJHJcIil9bWFya1JhbmdlRGlydHkoZSx0KXt0aGlzLl9kaXJ0eVJvd1RyYWNrZXIubWFya1JhbmdlRGlydHkoZSx0KX19dC5JbnB1dEhhbmRsZXI9RTtsZXQgTD1jbGFzc3tjb25zdHJ1Y3RvcihlKXt0aGlzLl9idWZmZXJTZXJ2aWNlPWUsdGhpcy5jbGVhclJhbmdlKCl9Y2xlYXJSYW5nZSgpe3RoaXMuc3RhcnQ9dGhpcy5fYnVmZmVyU2VydmljZS5idWZmZXIueSx0aGlzLmVuZD10aGlzLl9idWZmZXJTZXJ2aWNlLmJ1ZmZlci55fW1hcmtEaXJ0eShlKXtlPHRoaXMuc3RhcnQ/dGhpcy5zdGFydD1lOmU+dGhpcy5lbmQmJih0aGlzLmVuZD1lKX1tYXJrUmFuZ2VEaXJ0eShlLHQpe2U+dCYmKHc9ZSxlPXQsdD13KSxlPHRoaXMuc3RhcnQmJih0aGlzLnN0YXJ0PWUpLHQ+dGhpcy5lbmQmJih0aGlzLmVuZD10KX1tYXJrQWxsRGlydHkoKXt0aGlzLm1hcmtSYW5nZURpcnR5KDAsdGhpcy5fYnVmZmVyU2VydmljZS5yb3dzLTEpfX07TD1zKFtyKDAsdi5JQnVmZmVyU2VydmljZSldLEwpfSw4NDQ6KGUsdCk9PntmdW5jdGlvbiBpKGUpe2Zvcihjb25zdCB0IG9mIGUpdC5kaXNwb3NlKCk7ZS5sZW5ndGg9MH1PYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmdldERpc3Bvc2VBcnJheURpc3Bvc2FibGU9dC5kaXNwb3NlQXJyYXk9dC50b0Rpc3Bvc2FibGU9dC5EaXNwb3NhYmxlPXZvaWQgMCx0LkRpc3Bvc2FibGU9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLl9kaXNwb3NhYmxlcz1bXSx0aGlzLl9pc0Rpc3Bvc2VkPSExfWRpc3Bvc2UoKXt0aGlzLl9pc0Rpc3Bvc2VkPSEwO2Zvcihjb25zdCBlIG9mIHRoaXMuX2Rpc3Bvc2FibGVzKWUuZGlzcG9zZSgpO3RoaXMuX2Rpc3Bvc2FibGVzLmxlbmd0aD0wfXJlZ2lzdGVyKGUpe3JldHVybiB0aGlzLl9kaXNwb3NhYmxlcy5wdXNoKGUpLGV9dW5yZWdpc3RlcihlKXtjb25zdCB0PXRoaXMuX2Rpc3Bvc2FibGVzLmluZGV4T2YoZSk7LTEhPT10JiZ0aGlzLl9kaXNwb3NhYmxlcy5zcGxpY2UodCwxKX19LHQudG9EaXNwb3NhYmxlPWZ1bmN0aW9uKGUpe3JldHVybntkaXNwb3NlOmV9fSx0LmRpc3Bvc2VBcnJheT1pLHQuZ2V0RGlzcG9zZUFycmF5RGlzcG9zYWJsZT1mdW5jdGlvbihlKXtyZXR1cm57ZGlzcG9zZTooKT0+aShlKX19fSwxNTA1OihlLHQpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5Gb3VyS2V5TWFwPXQuVHdvS2V5TWFwPXZvaWQgMDtjbGFzcyBpe2NvbnN0cnVjdG9yKCl7dGhpcy5fZGF0YT17fX1zZXQoZSx0LGkpe3RoaXMuX2RhdGFbZV18fCh0aGlzLl9kYXRhW2VdPXt9KSx0aGlzLl9kYXRhW2VdW3RdPWl9Z2V0KGUsdCl7cmV0dXJuIHRoaXMuX2RhdGFbZV0/dGhpcy5fZGF0YVtlXVt0XTp2b2lkIDB9Y2xlYXIoKXt0aGlzLl9kYXRhPXt9fX10LlR3b0tleU1hcD1pLHQuRm91cktleU1hcD1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMuX2RhdGE9bmV3IGl9c2V0KGUsdCxzLHIsbil7dGhpcy5fZGF0YS5nZXQoZSx0KXx8dGhpcy5fZGF0YS5zZXQoZSx0LG5ldyBpKSx0aGlzLl9kYXRhLmdldChlLHQpLnNldChzLHIsbil9Z2V0KGUsdCxpLHMpe3ZhciByO3JldHVybiBudWxsPT09KHI9dGhpcy5fZGF0YS5nZXQoZSx0KSl8fHZvaWQgMD09PXI/dm9pZCAwOnIuZ2V0KGkscyl9Y2xlYXIoKXt0aGlzLl9kYXRhLmNsZWFyKCl9fX0sNjExNDooZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuaXNDaHJvbWVPUz10LmlzTGludXg9dC5pc1dpbmRvd3M9dC5pc0lwaG9uZT10LmlzSXBhZD10LmlzTWFjPXQuZ2V0U2FmYXJpVmVyc2lvbj10LmlzU2FmYXJpPXQuaXNMZWdhY3lFZGdlPXQuaXNGaXJlZm94PXQuaXNOb2RlPXZvaWQgMCx0LmlzTm9kZT1cInVuZGVmaW5lZFwiPT10eXBlb2YgbmF2aWdhdG9yO2NvbnN0IGk9dC5pc05vZGU/XCJub2RlXCI6bmF2aWdhdG9yLnVzZXJBZ2VudCxzPXQuaXNOb2RlP1wibm9kZVwiOm5hdmlnYXRvci5wbGF0Zm9ybTt0LmlzRmlyZWZveD1pLmluY2x1ZGVzKFwiRmlyZWZveFwiKSx0LmlzTGVnYWN5RWRnZT1pLmluY2x1ZGVzKFwiRWRnZVwiKSx0LmlzU2FmYXJpPS9eKCg/IWNocm9tZXxhbmRyb2lkKS4pKnNhZmFyaS9pLnRlc3QoaSksdC5nZXRTYWZhcmlWZXJzaW9uPWZ1bmN0aW9uKCl7aWYoIXQuaXNTYWZhcmkpcmV0dXJuIDA7Y29uc3QgZT1pLm1hdGNoKC9WZXJzaW9uXFwvKFxcZCspLyk7cmV0dXJuIG51bGw9PT1lfHxlLmxlbmd0aDwyPzA6cGFyc2VJbnQoZVsxXSl9LHQuaXNNYWM9W1wiTWFjaW50b3NoXCIsXCJNYWNJbnRlbFwiLFwiTWFjUFBDXCIsXCJNYWM2OEtcIl0uaW5jbHVkZXMocyksdC5pc0lwYWQ9XCJpUGFkXCI9PT1zLHQuaXNJcGhvbmU9XCJpUGhvbmVcIj09PXMsdC5pc1dpbmRvd3M9W1wiV2luZG93c1wiLFwiV2luMTZcIixcIldpbjMyXCIsXCJXaW5DRVwiXS5pbmNsdWRlcyhzKSx0LmlzTGludXg9cy5pbmRleE9mKFwiTGludXhcIik+PTAsdC5pc0Nocm9tZU9TPS9cXGJDck9TXFxiLy50ZXN0KGkpfSw2MTA2OihlLHQpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5Tb3J0ZWRMaXN0PXZvaWQgMDtsZXQgaT0wO3QuU29ydGVkTGlzdD1jbGFzc3tjb25zdHJ1Y3RvcihlKXt0aGlzLl9nZXRLZXk9ZSx0aGlzLl9hcnJheT1bXX1jbGVhcigpe3RoaXMuX2FycmF5Lmxlbmd0aD0wfWluc2VydChlKXswIT09dGhpcy5fYXJyYXkubGVuZ3RoPyhpPXRoaXMuX3NlYXJjaCh0aGlzLl9nZXRLZXkoZSksMCx0aGlzLl9hcnJheS5sZW5ndGgtMSksdGhpcy5fYXJyYXkuc3BsaWNlKGksMCxlKSk6dGhpcy5fYXJyYXkucHVzaChlKX1kZWxldGUoZSl7aWYoMD09PXRoaXMuX2FycmF5Lmxlbmd0aClyZXR1cm4hMTtjb25zdCB0PXRoaXMuX2dldEtleShlKTtpZih2b2lkIDA9PT10KXJldHVybiExO2lmKGk9dGhpcy5fc2VhcmNoKHQsMCx0aGlzLl9hcnJheS5sZW5ndGgtMSksLTE9PT1pKXJldHVybiExO2lmKHRoaXMuX2dldEtleSh0aGlzLl9hcnJheVtpXSkhPT10KXJldHVybiExO2Rve2lmKHRoaXMuX2FycmF5W2ldPT09ZSlyZXR1cm4gdGhpcy5fYXJyYXkuc3BsaWNlKGksMSksITB9d2hpbGUoKytpPHRoaXMuX2FycmF5Lmxlbmd0aCYmdGhpcy5fZ2V0S2V5KHRoaXMuX2FycmF5W2ldKT09PXQpO3JldHVybiExfSpnZXRLZXlJdGVyYXRvcihlKXtpZigwIT09dGhpcy5fYXJyYXkubGVuZ3RoJiYoaT10aGlzLl9zZWFyY2goZSwwLHRoaXMuX2FycmF5Lmxlbmd0aC0xKSwhKGk8MHx8aT49dGhpcy5fYXJyYXkubGVuZ3RoKSYmdGhpcy5fZ2V0S2V5KHRoaXMuX2FycmF5W2ldKT09PWUpKWRve3lpZWxkIHRoaXMuX2FycmF5W2ldfXdoaWxlKCsraTx0aGlzLl9hcnJheS5sZW5ndGgmJnRoaXMuX2dldEtleSh0aGlzLl9hcnJheVtpXSk9PT1lKX1mb3JFYWNoQnlLZXkoZSx0KXtpZigwIT09dGhpcy5fYXJyYXkubGVuZ3RoJiYoaT10aGlzLl9zZWFyY2goZSwwLHRoaXMuX2FycmF5Lmxlbmd0aC0xKSwhKGk8MHx8aT49dGhpcy5fYXJyYXkubGVuZ3RoKSYmdGhpcy5fZ2V0S2V5KHRoaXMuX2FycmF5W2ldKT09PWUpKWRve3QodGhpcy5fYXJyYXlbaV0pfXdoaWxlKCsraTx0aGlzLl9hcnJheS5sZW5ndGgmJnRoaXMuX2dldEtleSh0aGlzLl9hcnJheVtpXSk9PT1lKX12YWx1ZXMoKXtyZXR1cm4gdGhpcy5fYXJyYXkudmFsdWVzKCl9X3NlYXJjaChlLHQsaSl7aWYoaTx0KXJldHVybiB0O2xldCBzPU1hdGguZmxvb3IoKHQraSkvMik7Y29uc3Qgcj10aGlzLl9nZXRLZXkodGhpcy5fYXJyYXlbc10pO2lmKHI+ZSlyZXR1cm4gdGhpcy5fc2VhcmNoKGUsdCxzLTEpO2lmKHI8ZSlyZXR1cm4gdGhpcy5fc2VhcmNoKGUscysxLGkpO2Zvcig7cz4wJiZ0aGlzLl9nZXRLZXkodGhpcy5fYXJyYXlbcy0xXSk9PT1lOylzLS07cmV0dXJuIHN9fX0sNzIyNjooZSx0LGkpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5EZWJvdW5jZWRJZGxlVGFzaz10LklkbGVUYXNrUXVldWU9dC5Qcmlvcml0eVRhc2tRdWV1ZT12b2lkIDA7Y29uc3Qgcz1pKDYxMTQpO2NsYXNzIHJ7Y29uc3RydWN0b3IoKXt0aGlzLl90YXNrcz1bXSx0aGlzLl9pPTB9ZW5xdWV1ZShlKXt0aGlzLl90YXNrcy5wdXNoKGUpLHRoaXMuX3N0YXJ0KCl9Zmx1c2goKXtmb3IoO3RoaXMuX2k8dGhpcy5fdGFza3MubGVuZ3RoOyl0aGlzLl90YXNrc1t0aGlzLl9pXSgpfHx0aGlzLl9pKys7dGhpcy5jbGVhcigpfWNsZWFyKCl7dGhpcy5faWRsZUNhbGxiYWNrJiYodGhpcy5fY2FuY2VsQ2FsbGJhY2sodGhpcy5faWRsZUNhbGxiYWNrKSx0aGlzLl9pZGxlQ2FsbGJhY2s9dm9pZCAwKSx0aGlzLl9pPTAsdGhpcy5fdGFza3MubGVuZ3RoPTB9X3N0YXJ0KCl7dGhpcy5faWRsZUNhbGxiYWNrfHwodGhpcy5faWRsZUNhbGxiYWNrPXRoaXMuX3JlcXVlc3RDYWxsYmFjayh0aGlzLl9wcm9jZXNzLmJpbmQodGhpcykpKX1fcHJvY2VzcyhlKXt0aGlzLl9pZGxlQ2FsbGJhY2s9dm9pZCAwO2xldCB0PTAsaT0wLHM9ZS50aW1lUmVtYWluaW5nKCkscj0wO2Zvcig7dGhpcy5faTx0aGlzLl90YXNrcy5sZW5ndGg7KXtpZih0PURhdGUubm93KCksdGhpcy5fdGFza3NbdGhpcy5faV0oKXx8dGhpcy5faSsrLHQ9TWF0aC5tYXgoMSxEYXRlLm5vdygpLXQpLGk9TWF0aC5tYXgodCxpKSxyPWUudGltZVJlbWFpbmluZygpLDEuNSppPnIpcmV0dXJuIHMtdDwtMjAmJmNvbnNvbGUud2FybihgdGFzayBxdWV1ZSBleGNlZWRlZCBhbGxvdHRlZCBkZWFkbGluZSBieSAke01hdGguYWJzKE1hdGgucm91bmQocy10KSl9bXNgKSx2b2lkIHRoaXMuX3N0YXJ0KCk7cz1yfXRoaXMuY2xlYXIoKX19Y2xhc3MgbiBleHRlbmRzIHJ7X3JlcXVlc3RDYWxsYmFjayhlKXtyZXR1cm4gc2V0VGltZW91dCgoKCk9PmUodGhpcy5fY3JlYXRlRGVhZGxpbmUoMTYpKSkpfV9jYW5jZWxDYWxsYmFjayhlKXtjbGVhclRpbWVvdXQoZSl9X2NyZWF0ZURlYWRsaW5lKGUpe2NvbnN0IHQ9RGF0ZS5ub3coKStlO3JldHVybnt0aW1lUmVtYWluaW5nOigpPT5NYXRoLm1heCgwLHQtRGF0ZS5ub3coKSl9fX10LlByaW9yaXR5VGFza1F1ZXVlPW4sdC5JZGxlVGFza1F1ZXVlPSFzLmlzTm9kZSYmXCJyZXF1ZXN0SWRsZUNhbGxiYWNrXCJpbiB3aW5kb3c/Y2xhc3MgZXh0ZW5kcyBye19yZXF1ZXN0Q2FsbGJhY2soZSl7cmV0dXJuIHJlcXVlc3RJZGxlQ2FsbGJhY2soZSl9X2NhbmNlbENhbGxiYWNrKGUpe2NhbmNlbElkbGVDYWxsYmFjayhlKX19Om4sdC5EZWJvdW5jZWRJZGxlVGFzaz1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMuX3F1ZXVlPW5ldyB0LklkbGVUYXNrUXVldWV9c2V0KGUpe3RoaXMuX3F1ZXVlLmNsZWFyKCksdGhpcy5fcXVldWUuZW5xdWV1ZShlKX1mbHVzaCgpe3RoaXMuX3F1ZXVlLmZsdXNoKCl9fX0sOTI4MjooZSx0LGkpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC51cGRhdGVXaW5kb3dzTW9kZVdyYXBwZWRTdGF0ZT12b2lkIDA7Y29uc3Qgcz1pKDY0Myk7dC51cGRhdGVXaW5kb3dzTW9kZVdyYXBwZWRTdGF0ZT1mdW5jdGlvbihlKXtjb25zdCB0PWUuYnVmZmVyLmxpbmVzLmdldChlLmJ1ZmZlci55YmFzZStlLmJ1ZmZlci55LTEpLGk9bnVsbD09dD92b2lkIDA6dC5nZXQoZS5jb2xzLTEpLHI9ZS5idWZmZXIubGluZXMuZ2V0KGUuYnVmZmVyLnliYXNlK2UuYnVmZmVyLnkpO3ImJmkmJihyLmlzV3JhcHBlZD1pW3MuQ0hBUl9EQVRBX0NPREVfSU5ERVhdIT09cy5OVUxMX0NFTExfQ09ERSYmaVtzLkNIQVJfREFUQV9DT0RFX0lOREVYXSE9PXMuV0hJVEVTUEFDRV9DRUxMX0NPREUpfX0sMzczNDooZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuRXh0ZW5kZWRBdHRycz10LkF0dHJpYnV0ZURhdGE9dm9pZCAwO2NsYXNzIGl7Y29uc3RydWN0b3IoKXt0aGlzLmZnPTAsdGhpcy5iZz0wLHRoaXMuZXh0ZW5kZWQ9bmV3IHN9c3RhdGljIHRvQ29sb3JSR0IoZSl7cmV0dXJuW2U+Pj4xNiYyNTUsZT4+PjgmMjU1LDI1NSZlXX1zdGF0aWMgZnJvbUNvbG9yUkdCKGUpe3JldHVybigyNTUmZVswXSk8PDE2fCgyNTUmZVsxXSk8PDh8MjU1JmVbMl19Y2xvbmUoKXtjb25zdCBlPW5ldyBpO3JldHVybiBlLmZnPXRoaXMuZmcsZS5iZz10aGlzLmJnLGUuZXh0ZW5kZWQ9dGhpcy5leHRlbmRlZC5jbG9uZSgpLGV9aXNJbnZlcnNlKCl7cmV0dXJuIDY3MTA4ODY0JnRoaXMuZmd9aXNCb2xkKCl7cmV0dXJuIDEzNDIxNzcyOCZ0aGlzLmZnfWlzVW5kZXJsaW5lKCl7cmV0dXJuIHRoaXMuaGFzRXh0ZW5kZWRBdHRycygpJiYwIT09dGhpcy5leHRlbmRlZC51bmRlcmxpbmVTdHlsZT8xOjI2ODQzNTQ1NiZ0aGlzLmZnfWlzQmxpbmsoKXtyZXR1cm4gNTM2ODcwOTEyJnRoaXMuZmd9aXNJbnZpc2libGUoKXtyZXR1cm4gMTA3Mzc0MTgyNCZ0aGlzLmZnfWlzSXRhbGljKCl7cmV0dXJuIDY3MTA4ODY0JnRoaXMuYmd9aXNEaW0oKXtyZXR1cm4gMTM0MjE3NzI4JnRoaXMuYmd9aXNTdHJpa2V0aHJvdWdoKCl7cmV0dXJuIDIxNDc0ODM2NDgmdGhpcy5mZ31pc1Byb3RlY3RlZCgpe3JldHVybiA1MzY4NzA5MTImdGhpcy5iZ31pc092ZXJsaW5lKCl7cmV0dXJuIDEwNzM3NDE4MjQmdGhpcy5iZ31nZXRGZ0NvbG9yTW9kZSgpe3JldHVybiA1MDMzMTY0OCZ0aGlzLmZnfWdldEJnQ29sb3JNb2RlKCl7cmV0dXJuIDUwMzMxNjQ4JnRoaXMuYmd9aXNGZ1JHQigpe3JldHVybiA1MDMzMTY0OD09KDUwMzMxNjQ4JnRoaXMuZmcpfWlzQmdSR0IoKXtyZXR1cm4gNTAzMzE2NDg9PSg1MDMzMTY0OCZ0aGlzLmJnKX1pc0ZnUGFsZXR0ZSgpe3JldHVybiAxNjc3NzIxNj09KDUwMzMxNjQ4JnRoaXMuZmcpfHwzMzU1NDQzMj09KDUwMzMxNjQ4JnRoaXMuZmcpfWlzQmdQYWxldHRlKCl7cmV0dXJuIDE2Nzc3MjE2PT0oNTAzMzE2NDgmdGhpcy5iZyl8fDMzNTU0NDMyPT0oNTAzMzE2NDgmdGhpcy5iZyl9aXNGZ0RlZmF1bHQoKXtyZXR1cm4gMD09KDUwMzMxNjQ4JnRoaXMuZmcpfWlzQmdEZWZhdWx0KCl7cmV0dXJuIDA9PSg1MDMzMTY0OCZ0aGlzLmJnKX1pc0F0dHJpYnV0ZURlZmF1bHQoKXtyZXR1cm4gMD09PXRoaXMuZmcmJjA9PT10aGlzLmJnfWdldEZnQ29sb3IoKXtzd2l0Y2goNTAzMzE2NDgmdGhpcy5mZyl7Y2FzZSAxNjc3NzIxNjpjYXNlIDMzNTU0NDMyOnJldHVybiAyNTUmdGhpcy5mZztjYXNlIDUwMzMxNjQ4OnJldHVybiAxNjc3NzIxNSZ0aGlzLmZnO2RlZmF1bHQ6cmV0dXJuLTF9fWdldEJnQ29sb3IoKXtzd2l0Y2goNTAzMzE2NDgmdGhpcy5iZyl7Y2FzZSAxNjc3NzIxNjpjYXNlIDMzNTU0NDMyOnJldHVybiAyNTUmdGhpcy5iZztjYXNlIDUwMzMxNjQ4OnJldHVybiAxNjc3NzIxNSZ0aGlzLmJnO2RlZmF1bHQ6cmV0dXJuLTF9fWhhc0V4dGVuZGVkQXR0cnMoKXtyZXR1cm4gMjY4NDM1NDU2JnRoaXMuYmd9dXBkYXRlRXh0ZW5kZWQoKXt0aGlzLmV4dGVuZGVkLmlzRW1wdHkoKT90aGlzLmJnJj0tMjY4NDM1NDU3OnRoaXMuYmd8PTI2ODQzNTQ1Nn1nZXRVbmRlcmxpbmVDb2xvcigpe2lmKDI2ODQzNTQ1NiZ0aGlzLmJnJiZ+dGhpcy5leHRlbmRlZC51bmRlcmxpbmVDb2xvcilzd2l0Y2goNTAzMzE2NDgmdGhpcy5leHRlbmRlZC51bmRlcmxpbmVDb2xvcil7Y2FzZSAxNjc3NzIxNjpjYXNlIDMzNTU0NDMyOnJldHVybiAyNTUmdGhpcy5leHRlbmRlZC51bmRlcmxpbmVDb2xvcjtjYXNlIDUwMzMxNjQ4OnJldHVybiAxNjc3NzIxNSZ0aGlzLmV4dGVuZGVkLnVuZGVybGluZUNvbG9yO2RlZmF1bHQ6cmV0dXJuIHRoaXMuZ2V0RmdDb2xvcigpfXJldHVybiB0aGlzLmdldEZnQ29sb3IoKX1nZXRVbmRlcmxpbmVDb2xvck1vZGUoKXtyZXR1cm4gMjY4NDM1NDU2JnRoaXMuYmcmJn50aGlzLmV4dGVuZGVkLnVuZGVybGluZUNvbG9yPzUwMzMxNjQ4JnRoaXMuZXh0ZW5kZWQudW5kZXJsaW5lQ29sb3I6dGhpcy5nZXRGZ0NvbG9yTW9kZSgpfWlzVW5kZXJsaW5lQ29sb3JSR0IoKXtyZXR1cm4gMjY4NDM1NDU2JnRoaXMuYmcmJn50aGlzLmV4dGVuZGVkLnVuZGVybGluZUNvbG9yPzUwMzMxNjQ4PT0oNTAzMzE2NDgmdGhpcy5leHRlbmRlZC51bmRlcmxpbmVDb2xvcik6dGhpcy5pc0ZnUkdCKCl9aXNVbmRlcmxpbmVDb2xvclBhbGV0dGUoKXtyZXR1cm4gMjY4NDM1NDU2JnRoaXMuYmcmJn50aGlzLmV4dGVuZGVkLnVuZGVybGluZUNvbG9yPzE2Nzc3MjE2PT0oNTAzMzE2NDgmdGhpcy5leHRlbmRlZC51bmRlcmxpbmVDb2xvcil8fDMzNTU0NDMyPT0oNTAzMzE2NDgmdGhpcy5leHRlbmRlZC51bmRlcmxpbmVDb2xvcik6dGhpcy5pc0ZnUGFsZXR0ZSgpfWlzVW5kZXJsaW5lQ29sb3JEZWZhdWx0KCl7cmV0dXJuIDI2ODQzNTQ1NiZ0aGlzLmJnJiZ+dGhpcy5leHRlbmRlZC51bmRlcmxpbmVDb2xvcj8wPT0oNTAzMzE2NDgmdGhpcy5leHRlbmRlZC51bmRlcmxpbmVDb2xvcik6dGhpcy5pc0ZnRGVmYXVsdCgpfWdldFVuZGVybGluZVN0eWxlKCl7cmV0dXJuIDI2ODQzNTQ1NiZ0aGlzLmZnPzI2ODQzNTQ1NiZ0aGlzLmJnP3RoaXMuZXh0ZW5kZWQudW5kZXJsaW5lU3R5bGU6MTowfX10LkF0dHJpYnV0ZURhdGE9aTtjbGFzcyBze2NvbnN0cnVjdG9yKGU9MCx0PTApe3RoaXMuX2V4dD0wLHRoaXMuX3VybElkPTAsdGhpcy5fZXh0PWUsdGhpcy5fdXJsSWQ9dH1nZXQgZXh0KCl7cmV0dXJuIHRoaXMuX3VybElkPy00Njk3NjIwNDkmdGhpcy5fZXh0fHRoaXMudW5kZXJsaW5lU3R5bGU8PDI2OnRoaXMuX2V4dH1zZXQgZXh0KGUpe3RoaXMuX2V4dD1lfWdldCB1bmRlcmxpbmVTdHlsZSgpe3JldHVybiB0aGlzLl91cmxJZD81Oig0Njk3NjIwNDgmdGhpcy5fZXh0KT4+MjZ9c2V0IHVuZGVybGluZVN0eWxlKGUpe3RoaXMuX2V4dCY9LTQ2OTc2MjA0OSx0aGlzLl9leHR8PWU8PDI2JjQ2OTc2MjA0OH1nZXQgdW5kZXJsaW5lQ29sb3IoKXtyZXR1cm4gNjcxMDg4NjMmdGhpcy5fZXh0fXNldCB1bmRlcmxpbmVDb2xvcihlKXt0aGlzLl9leHQmPS02NzEwODg2NCx0aGlzLl9leHR8PTY3MTA4ODYzJmV9Z2V0IHVybElkKCl7cmV0dXJuIHRoaXMuX3VybElkfXNldCB1cmxJZChlKXt0aGlzLl91cmxJZD1lfWNsb25lKCl7cmV0dXJuIG5ldyBzKHRoaXMuX2V4dCx0aGlzLl91cmxJZCl9aXNFbXB0eSgpe3JldHVybiAwPT09dGhpcy51bmRlcmxpbmVTdHlsZSYmMD09PXRoaXMuX3VybElkfX10LkV4dGVuZGVkQXR0cnM9c30sOTA5MjooZSx0LGkpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5CdWZmZXI9dC5NQVhfQlVGRkVSX1NJWkU9dm9pZCAwO2NvbnN0IHM9aSg2MzQ5KSxyPWkoODQzNyksbj1pKDUxMSksbz1pKDY0MyksYT1pKDQ2MzQpLGg9aSg0ODYzKSxjPWkoNzExNiksbD1pKDM3MzQpLGQ9aSg3MjI2KTt0Lk1BWF9CVUZGRVJfU0laRT00Mjk0OTY3Mjk1LHQuQnVmZmVyPWNsYXNze2NvbnN0cnVjdG9yKGUsdCxpKXt0aGlzLl9oYXNTY3JvbGxiYWNrPWUsdGhpcy5fb3B0aW9uc1NlcnZpY2U9dCx0aGlzLl9idWZmZXJTZXJ2aWNlPWksdGhpcy55ZGlzcD0wLHRoaXMueWJhc2U9MCx0aGlzLnk9MCx0aGlzLng9MCx0aGlzLnRhYnM9e30sdGhpcy5zYXZlZFk9MCx0aGlzLnNhdmVkWD0wLHRoaXMuc2F2ZWRDdXJBdHRyRGF0YT1yLkRFRkFVTFRfQVRUUl9EQVRBLmNsb25lKCksdGhpcy5zYXZlZENoYXJzZXQ9Yy5ERUZBVUxUX0NIQVJTRVQsdGhpcy5tYXJrZXJzPVtdLHRoaXMuX251bGxDZWxsPW4uQ2VsbERhdGEuZnJvbUNoYXJEYXRhKFswLG8uTlVMTF9DRUxMX0NIQVIsby5OVUxMX0NFTExfV0lEVEgsby5OVUxMX0NFTExfQ09ERV0pLHRoaXMuX3doaXRlc3BhY2VDZWxsPW4uQ2VsbERhdGEuZnJvbUNoYXJEYXRhKFswLG8uV0hJVEVTUEFDRV9DRUxMX0NIQVIsby5XSElURVNQQUNFX0NFTExfV0lEVEgsby5XSElURVNQQUNFX0NFTExfQ09ERV0pLHRoaXMuX2lzQ2xlYXJpbmc9ITEsdGhpcy5fbWVtb3J5Q2xlYW51cFF1ZXVlPW5ldyBkLklkbGVUYXNrUXVldWUsdGhpcy5fbWVtb3J5Q2xlYW51cFBvc2l0aW9uPTAsdGhpcy5fY29scz10aGlzLl9idWZmZXJTZXJ2aWNlLmNvbHMsdGhpcy5fcm93cz10aGlzLl9idWZmZXJTZXJ2aWNlLnJvd3MsdGhpcy5saW5lcz1uZXcgcy5DaXJjdWxhckxpc3QodGhpcy5fZ2V0Q29ycmVjdEJ1ZmZlckxlbmd0aCh0aGlzLl9yb3dzKSksdGhpcy5zY3JvbGxUb3A9MCx0aGlzLnNjcm9sbEJvdHRvbT10aGlzLl9yb3dzLTEsdGhpcy5zZXR1cFRhYlN0b3BzKCl9Z2V0TnVsbENlbGwoZSl7cmV0dXJuIGU/KHRoaXMuX251bGxDZWxsLmZnPWUuZmcsdGhpcy5fbnVsbENlbGwuYmc9ZS5iZyx0aGlzLl9udWxsQ2VsbC5leHRlbmRlZD1lLmV4dGVuZGVkKToodGhpcy5fbnVsbENlbGwuZmc9MCx0aGlzLl9udWxsQ2VsbC5iZz0wLHRoaXMuX251bGxDZWxsLmV4dGVuZGVkPW5ldyBsLkV4dGVuZGVkQXR0cnMpLHRoaXMuX251bGxDZWxsfWdldFdoaXRlc3BhY2VDZWxsKGUpe3JldHVybiBlPyh0aGlzLl93aGl0ZXNwYWNlQ2VsbC5mZz1lLmZnLHRoaXMuX3doaXRlc3BhY2VDZWxsLmJnPWUuYmcsdGhpcy5fd2hpdGVzcGFjZUNlbGwuZXh0ZW5kZWQ9ZS5leHRlbmRlZCk6KHRoaXMuX3doaXRlc3BhY2VDZWxsLmZnPTAsdGhpcy5fd2hpdGVzcGFjZUNlbGwuYmc9MCx0aGlzLl93aGl0ZXNwYWNlQ2VsbC5leHRlbmRlZD1uZXcgbC5FeHRlbmRlZEF0dHJzKSx0aGlzLl93aGl0ZXNwYWNlQ2VsbH1nZXRCbGFua0xpbmUoZSx0KXtyZXR1cm4gbmV3IHIuQnVmZmVyTGluZSh0aGlzLl9idWZmZXJTZXJ2aWNlLmNvbHMsdGhpcy5nZXROdWxsQ2VsbChlKSx0KX1nZXQgaGFzU2Nyb2xsYmFjaygpe3JldHVybiB0aGlzLl9oYXNTY3JvbGxiYWNrJiZ0aGlzLmxpbmVzLm1heExlbmd0aD50aGlzLl9yb3dzfWdldCBpc0N1cnNvckluVmlld3BvcnQoKXtjb25zdCBlPXRoaXMueWJhc2UrdGhpcy55LXRoaXMueWRpc3A7cmV0dXJuIGU+PTAmJmU8dGhpcy5fcm93c31fZ2V0Q29ycmVjdEJ1ZmZlckxlbmd0aChlKXtpZighdGhpcy5faGFzU2Nyb2xsYmFjaylyZXR1cm4gZTtjb25zdCBpPWUrdGhpcy5fb3B0aW9uc1NlcnZpY2UucmF3T3B0aW9ucy5zY3JvbGxiYWNrO3JldHVybiBpPnQuTUFYX0JVRkZFUl9TSVpFP3QuTUFYX0JVRkZFUl9TSVpFOml9ZmlsbFZpZXdwb3J0Um93cyhlKXtpZigwPT09dGhpcy5saW5lcy5sZW5ndGgpe3ZvaWQgMD09PWUmJihlPXIuREVGQVVMVF9BVFRSX0RBVEEpO2xldCB0PXRoaXMuX3Jvd3M7Zm9yKDt0LS07KXRoaXMubGluZXMucHVzaCh0aGlzLmdldEJsYW5rTGluZShlKSl9fWNsZWFyKCl7dGhpcy55ZGlzcD0wLHRoaXMueWJhc2U9MCx0aGlzLnk9MCx0aGlzLng9MCx0aGlzLmxpbmVzPW5ldyBzLkNpcmN1bGFyTGlzdCh0aGlzLl9nZXRDb3JyZWN0QnVmZmVyTGVuZ3RoKHRoaXMuX3Jvd3MpKSx0aGlzLnNjcm9sbFRvcD0wLHRoaXMuc2Nyb2xsQm90dG9tPXRoaXMuX3Jvd3MtMSx0aGlzLnNldHVwVGFiU3RvcHMoKX1yZXNpemUoZSx0KXtjb25zdCBpPXRoaXMuZ2V0TnVsbENlbGwoci5ERUZBVUxUX0FUVFJfREFUQSk7bGV0IHM9MDtjb25zdCBuPXRoaXMuX2dldENvcnJlY3RCdWZmZXJMZW5ndGgodCk7aWYobj50aGlzLmxpbmVzLm1heExlbmd0aCYmKHRoaXMubGluZXMubWF4TGVuZ3RoPW4pLHRoaXMubGluZXMubGVuZ3RoPjApe2lmKHRoaXMuX2NvbHM8ZSlmb3IobGV0IHQ9MDt0PHRoaXMubGluZXMubGVuZ3RoO3QrKylzKz0rdGhpcy5saW5lcy5nZXQodCkucmVzaXplKGUsaSk7bGV0IG89MDtpZih0aGlzLl9yb3dzPHQpZm9yKGxldCBzPXRoaXMuX3Jvd3M7czx0O3MrKyl0aGlzLmxpbmVzLmxlbmd0aDx0K3RoaXMueWJhc2UmJih0aGlzLl9vcHRpb25zU2VydmljZS5yYXdPcHRpb25zLndpbmRvd3NNb2RlfHx2b2lkIDAhPT10aGlzLl9vcHRpb25zU2VydmljZS5yYXdPcHRpb25zLndpbmRvd3NQdHkuYmFja2VuZHx8dm9pZCAwIT09dGhpcy5fb3B0aW9uc1NlcnZpY2UucmF3T3B0aW9ucy53aW5kb3dzUHR5LmJ1aWxkTnVtYmVyP3RoaXMubGluZXMucHVzaChuZXcgci5CdWZmZXJMaW5lKGUsaSkpOnRoaXMueWJhc2U+MCYmdGhpcy5saW5lcy5sZW5ndGg8PXRoaXMueWJhc2UrdGhpcy55K28rMT8odGhpcy55YmFzZS0tLG8rKyx0aGlzLnlkaXNwPjAmJnRoaXMueWRpc3AtLSk6dGhpcy5saW5lcy5wdXNoKG5ldyByLkJ1ZmZlckxpbmUoZSxpKSkpO2Vsc2UgZm9yKGxldCBlPXRoaXMuX3Jvd3M7ZT50O2UtLSl0aGlzLmxpbmVzLmxlbmd0aD50K3RoaXMueWJhc2UmJih0aGlzLmxpbmVzLmxlbmd0aD50aGlzLnliYXNlK3RoaXMueSsxP3RoaXMubGluZXMucG9wKCk6KHRoaXMueWJhc2UrKyx0aGlzLnlkaXNwKyspKTtpZihuPHRoaXMubGluZXMubWF4TGVuZ3RoKXtjb25zdCBlPXRoaXMubGluZXMubGVuZ3RoLW47ZT4wJiYodGhpcy5saW5lcy50cmltU3RhcnQoZSksdGhpcy55YmFzZT1NYXRoLm1heCh0aGlzLnliYXNlLWUsMCksdGhpcy55ZGlzcD1NYXRoLm1heCh0aGlzLnlkaXNwLWUsMCksdGhpcy5zYXZlZFk9TWF0aC5tYXgodGhpcy5zYXZlZFktZSwwKSksdGhpcy5saW5lcy5tYXhMZW5ndGg9bn10aGlzLng9TWF0aC5taW4odGhpcy54LGUtMSksdGhpcy55PU1hdGgubWluKHRoaXMueSx0LTEpLG8mJih0aGlzLnkrPW8pLHRoaXMuc2F2ZWRYPU1hdGgubWluKHRoaXMuc2F2ZWRYLGUtMSksdGhpcy5zY3JvbGxUb3A9MH1pZih0aGlzLnNjcm9sbEJvdHRvbT10LTEsdGhpcy5faXNSZWZsb3dFbmFibGVkJiYodGhpcy5fcmVmbG93KGUsdCksdGhpcy5fY29scz5lKSlmb3IobGV0IHQ9MDt0PHRoaXMubGluZXMubGVuZ3RoO3QrKylzKz0rdGhpcy5saW5lcy5nZXQodCkucmVzaXplKGUsaSk7dGhpcy5fY29scz1lLHRoaXMuX3Jvd3M9dCx0aGlzLl9tZW1vcnlDbGVhbnVwUXVldWUuY2xlYXIoKSxzPi4xKnRoaXMubGluZXMubGVuZ3RoJiYodGhpcy5fbWVtb3J5Q2xlYW51cFBvc2l0aW9uPTAsdGhpcy5fbWVtb3J5Q2xlYW51cFF1ZXVlLmVucXVldWUoKCgpPT50aGlzLl9iYXRjaGVkTWVtb3J5Q2xlYW51cCgpKSkpfV9iYXRjaGVkTWVtb3J5Q2xlYW51cCgpe2xldCBlPSEwO3RoaXMuX21lbW9yeUNsZWFudXBQb3NpdGlvbj49dGhpcy5saW5lcy5sZW5ndGgmJih0aGlzLl9tZW1vcnlDbGVhbnVwUG9zaXRpb249MCxlPSExKTtsZXQgdD0wO2Zvcig7dGhpcy5fbWVtb3J5Q2xlYW51cFBvc2l0aW9uPHRoaXMubGluZXMubGVuZ3RoOylpZih0Kz10aGlzLmxpbmVzLmdldCh0aGlzLl9tZW1vcnlDbGVhbnVwUG9zaXRpb24rKykuY2xlYW51cE1lbW9yeSgpLHQ+MTAwKXJldHVybiEwO3JldHVybiBlfWdldCBfaXNSZWZsb3dFbmFibGVkKCl7Y29uc3QgZT10aGlzLl9vcHRpb25zU2VydmljZS5yYXdPcHRpb25zLndpbmRvd3NQdHk7cmV0dXJuIGUmJmUuYnVpbGROdW1iZXI/dGhpcy5faGFzU2Nyb2xsYmFjayYmXCJjb25wdHlcIj09PWUuYmFja2VuZCYmZS5idWlsZE51bWJlcj49MjEzNzY6dGhpcy5faGFzU2Nyb2xsYmFjayYmIXRoaXMuX29wdGlvbnNTZXJ2aWNlLnJhd09wdGlvbnMud2luZG93c01vZGV9X3JlZmxvdyhlLHQpe3RoaXMuX2NvbHMhPT1lJiYoZT50aGlzLl9jb2xzP3RoaXMuX3JlZmxvd0xhcmdlcihlLHQpOnRoaXMuX3JlZmxvd1NtYWxsZXIoZSx0KSl9X3JlZmxvd0xhcmdlcihlLHQpe2NvbnN0IGk9KDAsYS5yZWZsb3dMYXJnZXJHZXRMaW5lc1RvUmVtb3ZlKSh0aGlzLmxpbmVzLHRoaXMuX2NvbHMsZSx0aGlzLnliYXNlK3RoaXMueSx0aGlzLmdldE51bGxDZWxsKHIuREVGQVVMVF9BVFRSX0RBVEEpKTtpZihpLmxlbmd0aD4wKXtjb25zdCBzPSgwLGEucmVmbG93TGFyZ2VyQ3JlYXRlTmV3TGF5b3V0KSh0aGlzLmxpbmVzLGkpOygwLGEucmVmbG93TGFyZ2VyQXBwbHlOZXdMYXlvdXQpKHRoaXMubGluZXMscy5sYXlvdXQpLHRoaXMuX3JlZmxvd0xhcmdlckFkanVzdFZpZXdwb3J0KGUsdCxzLmNvdW50UmVtb3ZlZCl9fV9yZWZsb3dMYXJnZXJBZGp1c3RWaWV3cG9ydChlLHQsaSl7Y29uc3Qgcz10aGlzLmdldE51bGxDZWxsKHIuREVGQVVMVF9BVFRSX0RBVEEpO2xldCBuPWk7Zm9yKDtuLS0gPjA7KTA9PT10aGlzLnliYXNlPyh0aGlzLnk+MCYmdGhpcy55LS0sdGhpcy5saW5lcy5sZW5ndGg8dCYmdGhpcy5saW5lcy5wdXNoKG5ldyByLkJ1ZmZlckxpbmUoZSxzKSkpOih0aGlzLnlkaXNwPT09dGhpcy55YmFzZSYmdGhpcy55ZGlzcC0tLHRoaXMueWJhc2UtLSk7dGhpcy5zYXZlZFk9TWF0aC5tYXgodGhpcy5zYXZlZFktaSwwKX1fcmVmbG93U21hbGxlcihlLHQpe2NvbnN0IGk9dGhpcy5nZXROdWxsQ2VsbChyLkRFRkFVTFRfQVRUUl9EQVRBKSxzPVtdO2xldCBuPTA7Zm9yKGxldCBvPXRoaXMubGluZXMubGVuZ3RoLTE7bz49MDtvLS0pe2xldCBoPXRoaXMubGluZXMuZ2V0KG8pO2lmKCFofHwhaC5pc1dyYXBwZWQmJmguZ2V0VHJpbW1lZExlbmd0aCgpPD1lKWNvbnRpbnVlO2NvbnN0IGM9W2hdO2Zvcig7aC5pc1dyYXBwZWQmJm8+MDspaD10aGlzLmxpbmVzLmdldCgtLW8pLGMudW5zaGlmdChoKTtjb25zdCBsPXRoaXMueWJhc2UrdGhpcy55O2lmKGw+PW8mJmw8bytjLmxlbmd0aCljb250aW51ZTtjb25zdCBkPWNbYy5sZW5ndGgtMV0uZ2V0VHJpbW1lZExlbmd0aCgpLF89KDAsYS5yZWZsb3dTbWFsbGVyR2V0TmV3TGluZUxlbmd0aHMpKGMsdGhpcy5fY29scyxlKSx1PV8ubGVuZ3RoLWMubGVuZ3RoO2xldCBmO2Y9MD09PXRoaXMueWJhc2UmJnRoaXMueSE9PXRoaXMubGluZXMubGVuZ3RoLTE/TWF0aC5tYXgoMCx0aGlzLnktdGhpcy5saW5lcy5tYXhMZW5ndGgrdSk6TWF0aC5tYXgoMCx0aGlzLmxpbmVzLmxlbmd0aC10aGlzLmxpbmVzLm1heExlbmd0aCt1KTtjb25zdCB2PVtdO2ZvcihsZXQgZT0wO2U8dTtlKyspe2NvbnN0IGU9dGhpcy5nZXRCbGFua0xpbmUoci5ERUZBVUxUX0FUVFJfREFUQSwhMCk7di5wdXNoKGUpfXYubGVuZ3RoPjAmJihzLnB1c2goe3N0YXJ0Om8rYy5sZW5ndGgrbixuZXdMaW5lczp2fSksbis9di5sZW5ndGgpLGMucHVzaCguLi52KTtsZXQgZz1fLmxlbmd0aC0xLHA9X1tnXTswPT09cCYmKGctLSxwPV9bZ10pO2xldCBTPWMubGVuZ3RoLXUtMSxtPWQ7Zm9yKDtTPj0wOyl7Y29uc3QgZT1NYXRoLm1pbihtLHApO2lmKHZvaWQgMD09PWNbZ10pYnJlYWs7aWYoY1tnXS5jb3B5Q2VsbHNGcm9tKGNbU10sbS1lLHAtZSxlLCEwKSxwLT1lLDA9PT1wJiYoZy0tLHA9X1tnXSksbS09ZSwwPT09bSl7Uy0tO2NvbnN0IGU9TWF0aC5tYXgoUywwKTttPSgwLGEuZ2V0V3JhcHBlZExpbmVUcmltbWVkTGVuZ3RoKShjLGUsdGhpcy5fY29scyl9fWZvcihsZXQgdD0wO3Q8Yy5sZW5ndGg7dCsrKV9bdF08ZSYmY1t0XS5zZXRDZWxsKF9bdF0saSk7bGV0IEM9dS1mO2Zvcig7Qy0tID4wOykwPT09dGhpcy55YmFzZT90aGlzLnk8dC0xPyh0aGlzLnkrKyx0aGlzLmxpbmVzLnBvcCgpKToodGhpcy55YmFzZSsrLHRoaXMueWRpc3ArKyk6dGhpcy55YmFzZTxNYXRoLm1pbih0aGlzLmxpbmVzLm1heExlbmd0aCx0aGlzLmxpbmVzLmxlbmd0aCtuKS10JiYodGhpcy55YmFzZT09PXRoaXMueWRpc3AmJnRoaXMueWRpc3ArKyx0aGlzLnliYXNlKyspO3RoaXMuc2F2ZWRZPU1hdGgubWluKHRoaXMuc2F2ZWRZK3UsdGhpcy55YmFzZSt0LTEpfWlmKHMubGVuZ3RoPjApe2NvbnN0IGU9W10sdD1bXTtmb3IobGV0IGU9MDtlPHRoaXMubGluZXMubGVuZ3RoO2UrKyl0LnB1c2godGhpcy5saW5lcy5nZXQoZSkpO2NvbnN0IGk9dGhpcy5saW5lcy5sZW5ndGg7bGV0IHI9aS0xLG89MCxhPXNbb107dGhpcy5saW5lcy5sZW5ndGg9TWF0aC5taW4odGhpcy5saW5lcy5tYXhMZW5ndGgsdGhpcy5saW5lcy5sZW5ndGgrbik7bGV0IGg9MDtmb3IobGV0IGM9TWF0aC5taW4odGhpcy5saW5lcy5tYXhMZW5ndGgtMSxpK24tMSk7Yz49MDtjLS0paWYoYSYmYS5zdGFydD5yK2gpe2ZvcihsZXQgZT1hLm5ld0xpbmVzLmxlbmd0aC0xO2U+PTA7ZS0tKXRoaXMubGluZXMuc2V0KGMtLSxhLm5ld0xpbmVzW2VdKTtjKyssZS5wdXNoKHtpbmRleDpyKzEsYW1vdW50OmEubmV3TGluZXMubGVuZ3RofSksaCs9YS5uZXdMaW5lcy5sZW5ndGgsYT1zWysrb119ZWxzZSB0aGlzLmxpbmVzLnNldChjLHRbci0tXSk7bGV0IGM9MDtmb3IobGV0IHQ9ZS5sZW5ndGgtMTt0Pj0wO3QtLSllW3RdLmluZGV4Kz1jLHRoaXMubGluZXMub25JbnNlcnRFbWl0dGVyLmZpcmUoZVt0XSksYys9ZVt0XS5hbW91bnQ7Y29uc3QgbD1NYXRoLm1heCgwLGkrbi10aGlzLmxpbmVzLm1heExlbmd0aCk7bD4wJiZ0aGlzLmxpbmVzLm9uVHJpbUVtaXR0ZXIuZmlyZShsKX19dHJhbnNsYXRlQnVmZmVyTGluZVRvU3RyaW5nKGUsdCxpPTAscyl7Y29uc3Qgcj10aGlzLmxpbmVzLmdldChlKTtyZXR1cm4gcj9yLnRyYW5zbGF0ZVRvU3RyaW5nKHQsaSxzKTpcIlwifWdldFdyYXBwZWRSYW5nZUZvckxpbmUoZSl7bGV0IHQ9ZSxpPWU7Zm9yKDt0PjAmJnRoaXMubGluZXMuZ2V0KHQpLmlzV3JhcHBlZDspdC0tO2Zvcig7aSsxPHRoaXMubGluZXMubGVuZ3RoJiZ0aGlzLmxpbmVzLmdldChpKzEpLmlzV3JhcHBlZDspaSsrO3JldHVybntmaXJzdDp0LGxhc3Q6aX19c2V0dXBUYWJTdG9wcyhlKXtmb3IobnVsbCE9ZT90aGlzLnRhYnNbZV18fChlPXRoaXMucHJldlN0b3AoZSkpOih0aGlzLnRhYnM9e30sZT0wKTtlPHRoaXMuX2NvbHM7ZSs9dGhpcy5fb3B0aW9uc1NlcnZpY2UucmF3T3B0aW9ucy50YWJTdG9wV2lkdGgpdGhpcy50YWJzW2VdPSEwfXByZXZTdG9wKGUpe2ZvcihudWxsPT1lJiYoZT10aGlzLngpOyF0aGlzLnRhYnNbLS1lXSYmZT4wOyk7cmV0dXJuIGU+PXRoaXMuX2NvbHM/dGhpcy5fY29scy0xOmU8MD8wOmV9bmV4dFN0b3AoZSl7Zm9yKG51bGw9PWUmJihlPXRoaXMueCk7IXRoaXMudGFic1srK2VdJiZlPHRoaXMuX2NvbHM7KTtyZXR1cm4gZT49dGhpcy5fY29scz90aGlzLl9jb2xzLTE6ZTwwPzA6ZX1jbGVhck1hcmtlcnMoZSl7dGhpcy5faXNDbGVhcmluZz0hMDtmb3IobGV0IHQ9MDt0PHRoaXMubWFya2Vycy5sZW5ndGg7dCsrKXRoaXMubWFya2Vyc1t0XS5saW5lPT09ZSYmKHRoaXMubWFya2Vyc1t0XS5kaXNwb3NlKCksdGhpcy5tYXJrZXJzLnNwbGljZSh0LS0sMSkpO3RoaXMuX2lzQ2xlYXJpbmc9ITF9Y2xlYXJBbGxNYXJrZXJzKCl7dGhpcy5faXNDbGVhcmluZz0hMDtmb3IobGV0IGU9MDtlPHRoaXMubWFya2Vycy5sZW5ndGg7ZSsrKXRoaXMubWFya2Vyc1tlXS5kaXNwb3NlKCksdGhpcy5tYXJrZXJzLnNwbGljZShlLS0sMSk7dGhpcy5faXNDbGVhcmluZz0hMX1hZGRNYXJrZXIoZSl7Y29uc3QgdD1uZXcgaC5NYXJrZXIoZSk7cmV0dXJuIHRoaXMubWFya2Vycy5wdXNoKHQpLHQucmVnaXN0ZXIodGhpcy5saW5lcy5vblRyaW0oKGU9Pnt0LmxpbmUtPWUsdC5saW5lPDAmJnQuZGlzcG9zZSgpfSkpKSx0LnJlZ2lzdGVyKHRoaXMubGluZXMub25JbnNlcnQoKGU9Pnt0LmxpbmU+PWUuaW5kZXgmJih0LmxpbmUrPWUuYW1vdW50KX0pKSksdC5yZWdpc3Rlcih0aGlzLmxpbmVzLm9uRGVsZXRlKChlPT57dC5saW5lPj1lLmluZGV4JiZ0LmxpbmU8ZS5pbmRleCtlLmFtb3VudCYmdC5kaXNwb3NlKCksdC5saW5lPmUuaW5kZXgmJih0LmxpbmUtPWUuYW1vdW50KX0pKSksdC5yZWdpc3Rlcih0Lm9uRGlzcG9zZSgoKCk9PnRoaXMuX3JlbW92ZU1hcmtlcih0KSkpKSx0fV9yZW1vdmVNYXJrZXIoZSl7dGhpcy5faXNDbGVhcmluZ3x8dGhpcy5tYXJrZXJzLnNwbGljZSh0aGlzLm1hcmtlcnMuaW5kZXhPZihlKSwxKX19fSw4NDM3OihlLHQsaSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkJ1ZmZlckxpbmU9dC5ERUZBVUxUX0FUVFJfREFUQT12b2lkIDA7Y29uc3Qgcz1pKDQ4Mikscj1pKDY0Myksbj1pKDUxMSksbz1pKDM3MzQpO3QuREVGQVVMVF9BVFRSX0RBVEE9T2JqZWN0LmZyZWV6ZShuZXcgby5BdHRyaWJ1dGVEYXRhKTtsZXQgYT0wO2NsYXNzIGh7Y29uc3RydWN0b3IoZSx0LGk9ITEpe3RoaXMuaXNXcmFwcGVkPWksdGhpcy5fY29tYmluZWQ9e30sdGhpcy5fZXh0ZW5kZWRBdHRycz17fSx0aGlzLl9kYXRhPW5ldyBVaW50MzJBcnJheSgzKmUpO2NvbnN0IHM9dHx8bi5DZWxsRGF0YS5mcm9tQ2hhckRhdGEoWzAsci5OVUxMX0NFTExfQ0hBUixyLk5VTExfQ0VMTF9XSURUSCxyLk5VTExfQ0VMTF9DT0RFXSk7Zm9yKGxldCB0PTA7dDxlOysrdCl0aGlzLnNldENlbGwodCxzKTt0aGlzLmxlbmd0aD1lfWdldChlKXtjb25zdCB0PXRoaXMuX2RhdGFbMyplKzBdLGk9MjA5NzE1MSZ0O3JldHVyblt0aGlzLl9kYXRhWzMqZSsxXSwyMDk3MTUyJnQ/dGhpcy5fY29tYmluZWRbZV06aT8oMCxzLnN0cmluZ0Zyb21Db2RlUG9pbnQpKGkpOlwiXCIsdD4+MjIsMjA5NzE1MiZ0P3RoaXMuX2NvbWJpbmVkW2VdLmNoYXJDb2RlQXQodGhpcy5fY29tYmluZWRbZV0ubGVuZ3RoLTEpOmldfXNldChlLHQpe3RoaXMuX2RhdGFbMyplKzFdPXRbci5DSEFSX0RBVEFfQVRUUl9JTkRFWF0sdFtyLkNIQVJfREFUQV9DSEFSX0lOREVYXS5sZW5ndGg+MT8odGhpcy5fY29tYmluZWRbZV09dFsxXSx0aGlzLl9kYXRhWzMqZSswXT0yMDk3MTUyfGV8dFtyLkNIQVJfREFUQV9XSURUSF9JTkRFWF08PDIyKTp0aGlzLl9kYXRhWzMqZSswXT10W3IuQ0hBUl9EQVRBX0NIQVJfSU5ERVhdLmNoYXJDb2RlQXQoMCl8dFtyLkNIQVJfREFUQV9XSURUSF9JTkRFWF08PDIyfWdldFdpZHRoKGUpe3JldHVybiB0aGlzLl9kYXRhWzMqZSswXT4+MjJ9aGFzV2lkdGgoZSl7cmV0dXJuIDEyNTgyOTEyJnRoaXMuX2RhdGFbMyplKzBdfWdldEZnKGUpe3JldHVybiB0aGlzLl9kYXRhWzMqZSsxXX1nZXRCZyhlKXtyZXR1cm4gdGhpcy5fZGF0YVszKmUrMl19aGFzQ29udGVudChlKXtyZXR1cm4gNDE5NDMwMyZ0aGlzLl9kYXRhWzMqZSswXX1nZXRDb2RlUG9pbnQoZSl7Y29uc3QgdD10aGlzLl9kYXRhWzMqZSswXTtyZXR1cm4gMjA5NzE1MiZ0P3RoaXMuX2NvbWJpbmVkW2VdLmNoYXJDb2RlQXQodGhpcy5fY29tYmluZWRbZV0ubGVuZ3RoLTEpOjIwOTcxNTEmdH1pc0NvbWJpbmVkKGUpe3JldHVybiAyMDk3MTUyJnRoaXMuX2RhdGFbMyplKzBdfWdldFN0cmluZyhlKXtjb25zdCB0PXRoaXMuX2RhdGFbMyplKzBdO3JldHVybiAyMDk3MTUyJnQ/dGhpcy5fY29tYmluZWRbZV06MjA5NzE1MSZ0PygwLHMuc3RyaW5nRnJvbUNvZGVQb2ludCkoMjA5NzE1MSZ0KTpcIlwifWlzUHJvdGVjdGVkKGUpe3JldHVybiA1MzY4NzA5MTImdGhpcy5fZGF0YVszKmUrMl19bG9hZENlbGwoZSx0KXtyZXR1cm4gYT0zKmUsdC5jb250ZW50PXRoaXMuX2RhdGFbYSswXSx0LmZnPXRoaXMuX2RhdGFbYSsxXSx0LmJnPXRoaXMuX2RhdGFbYSsyXSwyMDk3MTUyJnQuY29udGVudCYmKHQuY29tYmluZWREYXRhPXRoaXMuX2NvbWJpbmVkW2VdKSwyNjg0MzU0NTYmdC5iZyYmKHQuZXh0ZW5kZWQ9dGhpcy5fZXh0ZW5kZWRBdHRyc1tlXSksdH1zZXRDZWxsKGUsdCl7MjA5NzE1MiZ0LmNvbnRlbnQmJih0aGlzLl9jb21iaW5lZFtlXT10LmNvbWJpbmVkRGF0YSksMjY4NDM1NDU2JnQuYmcmJih0aGlzLl9leHRlbmRlZEF0dHJzW2VdPXQuZXh0ZW5kZWQpLHRoaXMuX2RhdGFbMyplKzBdPXQuY29udGVudCx0aGlzLl9kYXRhWzMqZSsxXT10LmZnLHRoaXMuX2RhdGFbMyplKzJdPXQuYmd9c2V0Q2VsbEZyb21Db2RlUG9pbnQoZSx0LGkscyxyLG4pezI2ODQzNTQ1NiZyJiYodGhpcy5fZXh0ZW5kZWRBdHRyc1tlXT1uKSx0aGlzLl9kYXRhWzMqZSswXT10fGk8PDIyLHRoaXMuX2RhdGFbMyplKzFdPXMsdGhpcy5fZGF0YVszKmUrMl09cn1hZGRDb2RlcG9pbnRUb0NlbGwoZSx0KXtsZXQgaT10aGlzLl9kYXRhWzMqZSswXTsyMDk3MTUyJmk/dGhpcy5fY29tYmluZWRbZV0rPSgwLHMuc3RyaW5nRnJvbUNvZGVQb2ludCkodCk6KDIwOTcxNTEmaT8odGhpcy5fY29tYmluZWRbZV09KDAscy5zdHJpbmdGcm9tQ29kZVBvaW50KSgyMDk3MTUxJmkpKygwLHMuc3RyaW5nRnJvbUNvZGVQb2ludCkodCksaSY9LTIwOTcxNTIsaXw9MjA5NzE1Mik6aT10fDE8PDIyLHRoaXMuX2RhdGFbMyplKzBdPWkpfWluc2VydENlbGxzKGUsdCxpLHMpe2lmKChlJT10aGlzLmxlbmd0aCkmJjI9PT10aGlzLmdldFdpZHRoKGUtMSkmJnRoaXMuc2V0Q2VsbEZyb21Db2RlUG9pbnQoZS0xLDAsMSwobnVsbD09cz92b2lkIDA6cy5mZyl8fDAsKG51bGw9PXM/dm9pZCAwOnMuYmcpfHwwLChudWxsPT1zP3ZvaWQgMDpzLmV4dGVuZGVkKXx8bmV3IG8uRXh0ZW5kZWRBdHRycyksdDx0aGlzLmxlbmd0aC1lKXtjb25zdCBzPW5ldyBuLkNlbGxEYXRhO2ZvcihsZXQgaT10aGlzLmxlbmd0aC1lLXQtMTtpPj0wOy0taSl0aGlzLnNldENlbGwoZSt0K2ksdGhpcy5sb2FkQ2VsbChlK2kscykpO2ZvcihsZXQgcz0wO3M8dDsrK3MpdGhpcy5zZXRDZWxsKGUrcyxpKX1lbHNlIGZvcihsZXQgdD1lO3Q8dGhpcy5sZW5ndGg7Kyt0KXRoaXMuc2V0Q2VsbCh0LGkpOzI9PT10aGlzLmdldFdpZHRoKHRoaXMubGVuZ3RoLTEpJiZ0aGlzLnNldENlbGxGcm9tQ29kZVBvaW50KHRoaXMubGVuZ3RoLTEsMCwxLChudWxsPT1zP3ZvaWQgMDpzLmZnKXx8MCwobnVsbD09cz92b2lkIDA6cy5iZyl8fDAsKG51bGw9PXM/dm9pZCAwOnMuZXh0ZW5kZWQpfHxuZXcgby5FeHRlbmRlZEF0dHJzKX1kZWxldGVDZWxscyhlLHQsaSxzKXtpZihlJT10aGlzLmxlbmd0aCx0PHRoaXMubGVuZ3RoLWUpe2NvbnN0IHM9bmV3IG4uQ2VsbERhdGE7Zm9yKGxldCBpPTA7aTx0aGlzLmxlbmd0aC1lLXQ7KytpKXRoaXMuc2V0Q2VsbChlK2ksdGhpcy5sb2FkQ2VsbChlK3QraSxzKSk7Zm9yKGxldCBlPXRoaXMubGVuZ3RoLXQ7ZTx0aGlzLmxlbmd0aDsrK2UpdGhpcy5zZXRDZWxsKGUsaSl9ZWxzZSBmb3IobGV0IHQ9ZTt0PHRoaXMubGVuZ3RoOysrdCl0aGlzLnNldENlbGwodCxpKTtlJiYyPT09dGhpcy5nZXRXaWR0aChlLTEpJiZ0aGlzLnNldENlbGxGcm9tQ29kZVBvaW50KGUtMSwwLDEsKG51bGw9PXM/dm9pZCAwOnMuZmcpfHwwLChudWxsPT1zP3ZvaWQgMDpzLmJnKXx8MCwobnVsbD09cz92b2lkIDA6cy5leHRlbmRlZCl8fG5ldyBvLkV4dGVuZGVkQXR0cnMpLDAhPT10aGlzLmdldFdpZHRoKGUpfHx0aGlzLmhhc0NvbnRlbnQoZSl8fHRoaXMuc2V0Q2VsbEZyb21Db2RlUG9pbnQoZSwwLDEsKG51bGw9PXM/dm9pZCAwOnMuZmcpfHwwLChudWxsPT1zP3ZvaWQgMDpzLmJnKXx8MCwobnVsbD09cz92b2lkIDA6cy5leHRlbmRlZCl8fG5ldyBvLkV4dGVuZGVkQXR0cnMpfXJlcGxhY2VDZWxscyhlLHQsaSxzLHI9ITEpe2lmKHIpZm9yKGUmJjI9PT10aGlzLmdldFdpZHRoKGUtMSkmJiF0aGlzLmlzUHJvdGVjdGVkKGUtMSkmJnRoaXMuc2V0Q2VsbEZyb21Db2RlUG9pbnQoZS0xLDAsMSwobnVsbD09cz92b2lkIDA6cy5mZyl8fDAsKG51bGw9PXM/dm9pZCAwOnMuYmcpfHwwLChudWxsPT1zP3ZvaWQgMDpzLmV4dGVuZGVkKXx8bmV3IG8uRXh0ZW5kZWRBdHRycyksdDx0aGlzLmxlbmd0aCYmMj09PXRoaXMuZ2V0V2lkdGgodC0xKSYmIXRoaXMuaXNQcm90ZWN0ZWQodCkmJnRoaXMuc2V0Q2VsbEZyb21Db2RlUG9pbnQodCwwLDEsKG51bGw9PXM/dm9pZCAwOnMuZmcpfHwwLChudWxsPT1zP3ZvaWQgMDpzLmJnKXx8MCwobnVsbD09cz92b2lkIDA6cy5leHRlbmRlZCl8fG5ldyBvLkV4dGVuZGVkQXR0cnMpO2U8dCYmZTx0aGlzLmxlbmd0aDspdGhpcy5pc1Byb3RlY3RlZChlKXx8dGhpcy5zZXRDZWxsKGUsaSksZSsrO2Vsc2UgZm9yKGUmJjI9PT10aGlzLmdldFdpZHRoKGUtMSkmJnRoaXMuc2V0Q2VsbEZyb21Db2RlUG9pbnQoZS0xLDAsMSwobnVsbD09cz92b2lkIDA6cy5mZyl8fDAsKG51bGw9PXM/dm9pZCAwOnMuYmcpfHwwLChudWxsPT1zP3ZvaWQgMDpzLmV4dGVuZGVkKXx8bmV3IG8uRXh0ZW5kZWRBdHRycyksdDx0aGlzLmxlbmd0aCYmMj09PXRoaXMuZ2V0V2lkdGgodC0xKSYmdGhpcy5zZXRDZWxsRnJvbUNvZGVQb2ludCh0LDAsMSwobnVsbD09cz92b2lkIDA6cy5mZyl8fDAsKG51bGw9PXM/dm9pZCAwOnMuYmcpfHwwLChudWxsPT1zP3ZvaWQgMDpzLmV4dGVuZGVkKXx8bmV3IG8uRXh0ZW5kZWRBdHRycyk7ZTx0JiZlPHRoaXMubGVuZ3RoOyl0aGlzLnNldENlbGwoZSsrLGkpfXJlc2l6ZShlLHQpe2lmKGU9PT10aGlzLmxlbmd0aClyZXR1cm4gNCp0aGlzLl9kYXRhLmxlbmd0aCoyPHRoaXMuX2RhdGEuYnVmZmVyLmJ5dGVMZW5ndGg7Y29uc3QgaT0zKmU7aWYoZT50aGlzLmxlbmd0aCl7aWYodGhpcy5fZGF0YS5idWZmZXIuYnl0ZUxlbmd0aD49NCppKXRoaXMuX2RhdGE9bmV3IFVpbnQzMkFycmF5KHRoaXMuX2RhdGEuYnVmZmVyLDAsaSk7ZWxzZXtjb25zdCBlPW5ldyBVaW50MzJBcnJheShpKTtlLnNldCh0aGlzLl9kYXRhKSx0aGlzLl9kYXRhPWV9Zm9yKGxldCBpPXRoaXMubGVuZ3RoO2k8ZTsrK2kpdGhpcy5zZXRDZWxsKGksdCl9ZWxzZXt0aGlzLl9kYXRhPXRoaXMuX2RhdGEuc3ViYXJyYXkoMCxpKTtjb25zdCB0PU9iamVjdC5rZXlzKHRoaXMuX2NvbWJpbmVkKTtmb3IobGV0IGk9MDtpPHQubGVuZ3RoO2krKyl7Y29uc3Qgcz1wYXJzZUludCh0W2ldLDEwKTtzPj1lJiZkZWxldGUgdGhpcy5fY29tYmluZWRbc119Y29uc3Qgcz1PYmplY3Qua2V5cyh0aGlzLl9leHRlbmRlZEF0dHJzKTtmb3IobGV0IHQ9MDt0PHMubGVuZ3RoO3QrKyl7Y29uc3QgaT1wYXJzZUludChzW3RdLDEwKTtpPj1lJiZkZWxldGUgdGhpcy5fZXh0ZW5kZWRBdHRyc1tpXX19cmV0dXJuIHRoaXMubGVuZ3RoPWUsNCppKjI8dGhpcy5fZGF0YS5idWZmZXIuYnl0ZUxlbmd0aH1jbGVhbnVwTWVtb3J5KCl7aWYoNCp0aGlzLl9kYXRhLmxlbmd0aCoyPHRoaXMuX2RhdGEuYnVmZmVyLmJ5dGVMZW5ndGgpe2NvbnN0IGU9bmV3IFVpbnQzMkFycmF5KHRoaXMuX2RhdGEubGVuZ3RoKTtyZXR1cm4gZS5zZXQodGhpcy5fZGF0YSksdGhpcy5fZGF0YT1lLDF9cmV0dXJuIDB9ZmlsbChlLHQ9ITEpe2lmKHQpZm9yKGxldCB0PTA7dDx0aGlzLmxlbmd0aDsrK3QpdGhpcy5pc1Byb3RlY3RlZCh0KXx8dGhpcy5zZXRDZWxsKHQsZSk7ZWxzZXt0aGlzLl9jb21iaW5lZD17fSx0aGlzLl9leHRlbmRlZEF0dHJzPXt9O2ZvcihsZXQgdD0wO3Q8dGhpcy5sZW5ndGg7Kyt0KXRoaXMuc2V0Q2VsbCh0LGUpfX1jb3B5RnJvbShlKXt0aGlzLmxlbmd0aCE9PWUubGVuZ3RoP3RoaXMuX2RhdGE9bmV3IFVpbnQzMkFycmF5KGUuX2RhdGEpOnRoaXMuX2RhdGEuc2V0KGUuX2RhdGEpLHRoaXMubGVuZ3RoPWUubGVuZ3RoLHRoaXMuX2NvbWJpbmVkPXt9O2Zvcihjb25zdCB0IGluIGUuX2NvbWJpbmVkKXRoaXMuX2NvbWJpbmVkW3RdPWUuX2NvbWJpbmVkW3RdO3RoaXMuX2V4dGVuZGVkQXR0cnM9e307Zm9yKGNvbnN0IHQgaW4gZS5fZXh0ZW5kZWRBdHRycyl0aGlzLl9leHRlbmRlZEF0dHJzW3RdPWUuX2V4dGVuZGVkQXR0cnNbdF07dGhpcy5pc1dyYXBwZWQ9ZS5pc1dyYXBwZWR9Y2xvbmUoKXtjb25zdCBlPW5ldyBoKDApO2UuX2RhdGE9bmV3IFVpbnQzMkFycmF5KHRoaXMuX2RhdGEpLGUubGVuZ3RoPXRoaXMubGVuZ3RoO2Zvcihjb25zdCB0IGluIHRoaXMuX2NvbWJpbmVkKWUuX2NvbWJpbmVkW3RdPXRoaXMuX2NvbWJpbmVkW3RdO2Zvcihjb25zdCB0IGluIHRoaXMuX2V4dGVuZGVkQXR0cnMpZS5fZXh0ZW5kZWRBdHRyc1t0XT10aGlzLl9leHRlbmRlZEF0dHJzW3RdO3JldHVybiBlLmlzV3JhcHBlZD10aGlzLmlzV3JhcHBlZCxlfWdldFRyaW1tZWRMZW5ndGgoKXtmb3IobGV0IGU9dGhpcy5sZW5ndGgtMTtlPj0wOy0tZSlpZig0MTk0MzAzJnRoaXMuX2RhdGFbMyplKzBdKXJldHVybiBlKyh0aGlzLl9kYXRhWzMqZSswXT4+MjIpO3JldHVybiAwfWNvcHlDZWxsc0Zyb20oZSx0LGkscyxyKXtjb25zdCBuPWUuX2RhdGE7aWYocilmb3IobGV0IHI9cy0xO3I+PTA7ci0tKXtmb3IobGV0IGU9MDtlPDM7ZSsrKXRoaXMuX2RhdGFbMyooaStyKStlXT1uWzMqKHQrcikrZV07MjY4NDM1NDU2Jm5bMyoodCtyKSsyXSYmKHRoaXMuX2V4dGVuZGVkQXR0cnNbaStyXT1lLl9leHRlbmRlZEF0dHJzW3Qrcl0pfWVsc2UgZm9yKGxldCByPTA7cjxzO3IrKyl7Zm9yKGxldCBlPTA7ZTwzO2UrKyl0aGlzLl9kYXRhWzMqKGkrcikrZV09blszKih0K3IpK2VdOzI2ODQzNTQ1NiZuWzMqKHQrcikrMl0mJih0aGlzLl9leHRlbmRlZEF0dHJzW2krcl09ZS5fZXh0ZW5kZWRBdHRyc1t0K3JdKX1jb25zdCBvPU9iamVjdC5rZXlzKGUuX2NvbWJpbmVkKTtmb3IobGV0IHM9MDtzPG8ubGVuZ3RoO3MrKyl7Y29uc3Qgcj1wYXJzZUludChvW3NdLDEwKTtyPj10JiYodGhpcy5fY29tYmluZWRbci10K2ldPWUuX2NvbWJpbmVkW3JdKX19dHJhbnNsYXRlVG9TdHJpbmcoZT0hMSx0PTAsaT10aGlzLmxlbmd0aCl7ZSYmKGk9TWF0aC5taW4oaSx0aGlzLmdldFRyaW1tZWRMZW5ndGgoKSkpO2xldCBuPVwiXCI7Zm9yKDt0PGk7KXtjb25zdCBlPXRoaXMuX2RhdGFbMyp0KzBdLGk9MjA5NzE1MSZlO24rPTIwOTcxNTImZT90aGlzLl9jb21iaW5lZFt0XTppPygwLHMuc3RyaW5nRnJvbUNvZGVQb2ludCkoaSk6ci5XSElURVNQQUNFX0NFTExfQ0hBUix0Kz1lPj4yMnx8MX1yZXR1cm4gbn19dC5CdWZmZXJMaW5lPWh9LDQ4NDE6KGUsdCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmdldFJhbmdlTGVuZ3RoPXZvaWQgMCx0LmdldFJhbmdlTGVuZ3RoPWZ1bmN0aW9uKGUsdCl7aWYoZS5zdGFydC55PmUuZW5kLnkpdGhyb3cgbmV3IEVycm9yKGBCdWZmZXIgcmFuZ2UgZW5kICgke2UuZW5kLnh9LCAke2UuZW5kLnl9KSBjYW5ub3QgYmUgYmVmb3JlIHN0YXJ0ICgke2Uuc3RhcnQueH0sICR7ZS5zdGFydC55fSlgKTtyZXR1cm4gdCooZS5lbmQueS1lLnN0YXJ0LnkpKyhlLmVuZC54LWUuc3RhcnQueCsxKX19LDQ2MzQ6KGUsdCk9PntmdW5jdGlvbiBpKGUsdCxpKXtpZih0PT09ZS5sZW5ndGgtMSlyZXR1cm4gZVt0XS5nZXRUcmltbWVkTGVuZ3RoKCk7Y29uc3Qgcz0hZVt0XS5oYXNDb250ZW50KGktMSkmJjE9PT1lW3RdLmdldFdpZHRoKGktMSkscj0yPT09ZVt0KzFdLmdldFdpZHRoKDApO3JldHVybiBzJiZyP2ktMTppfU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZ2V0V3JhcHBlZExpbmVUcmltbWVkTGVuZ3RoPXQucmVmbG93U21hbGxlckdldE5ld0xpbmVMZW5ndGhzPXQucmVmbG93TGFyZ2VyQXBwbHlOZXdMYXlvdXQ9dC5yZWZsb3dMYXJnZXJDcmVhdGVOZXdMYXlvdXQ9dC5yZWZsb3dMYXJnZXJHZXRMaW5lc1RvUmVtb3ZlPXZvaWQgMCx0LnJlZmxvd0xhcmdlckdldExpbmVzVG9SZW1vdmU9ZnVuY3Rpb24oZSx0LHMscixuKXtjb25zdCBvPVtdO2ZvcihsZXQgYT0wO2E8ZS5sZW5ndGgtMTthKyspe2xldCBoPWEsYz1lLmdldCgrK2gpO2lmKCFjLmlzV3JhcHBlZCljb250aW51ZTtjb25zdCBsPVtlLmdldChhKV07Zm9yKDtoPGUubGVuZ3RoJiZjLmlzV3JhcHBlZDspbC5wdXNoKGMpLGM9ZS5nZXQoKytoKTtpZihyPj1hJiZyPGgpe2ErPWwubGVuZ3RoLTE7Y29udGludWV9bGV0IGQ9MCxfPWkobCxkLHQpLHU9MSxmPTA7Zm9yKDt1PGwubGVuZ3RoOyl7Y29uc3QgZT1pKGwsdSx0KSxyPWUtZixvPXMtXyxhPU1hdGgubWluKHIsbyk7bFtkXS5jb3B5Q2VsbHNGcm9tKGxbdV0sZixfLGEsITEpLF8rPWEsXz09PXMmJihkKyssXz0wKSxmKz1hLGY9PT1lJiYodSsrLGY9MCksMD09PV8mJjAhPT1kJiYyPT09bFtkLTFdLmdldFdpZHRoKHMtMSkmJihsW2RdLmNvcHlDZWxsc0Zyb20obFtkLTFdLHMtMSxfKyssMSwhMSksbFtkLTFdLnNldENlbGwocy0xLG4pKX1sW2RdLnJlcGxhY2VDZWxscyhfLHMsbik7bGV0IHY9MDtmb3IobGV0IGU9bC5sZW5ndGgtMTtlPjAmJihlPmR8fDA9PT1sW2VdLmdldFRyaW1tZWRMZW5ndGgoKSk7ZS0tKXYrKzt2PjAmJihvLnB1c2goYStsLmxlbmd0aC12KSxvLnB1c2godikpLGErPWwubGVuZ3RoLTF9cmV0dXJuIG99LHQucmVmbG93TGFyZ2VyQ3JlYXRlTmV3TGF5b3V0PWZ1bmN0aW9uKGUsdCl7Y29uc3QgaT1bXTtsZXQgcz0wLHI9dFtzXSxuPTA7Zm9yKGxldCBvPTA7bzxlLmxlbmd0aDtvKyspaWYocj09PW8pe2NvbnN0IGk9dFsrK3NdO2Uub25EZWxldGVFbWl0dGVyLmZpcmUoe2luZGV4Om8tbixhbW91bnQ6aX0pLG8rPWktMSxuKz1pLHI9dFsrK3NdfWVsc2UgaS5wdXNoKG8pO3JldHVybntsYXlvdXQ6aSxjb3VudFJlbW92ZWQ6bn19LHQucmVmbG93TGFyZ2VyQXBwbHlOZXdMYXlvdXQ9ZnVuY3Rpb24oZSx0KXtjb25zdCBpPVtdO2ZvcihsZXQgcz0wO3M8dC5sZW5ndGg7cysrKWkucHVzaChlLmdldCh0W3NdKSk7Zm9yKGxldCB0PTA7dDxpLmxlbmd0aDt0KyspZS5zZXQodCxpW3RdKTtlLmxlbmd0aD10Lmxlbmd0aH0sdC5yZWZsb3dTbWFsbGVyR2V0TmV3TGluZUxlbmd0aHM9ZnVuY3Rpb24oZSx0LHMpe2NvbnN0IHI9W10sbj1lLm1hcCgoKHMscik9PmkoZSxyLHQpKSkucmVkdWNlKCgoZSx0KT0+ZSt0KSk7bGV0IG89MCxhPTAsaD0wO2Zvcig7aDxuOyl7aWYobi1oPHMpe3IucHVzaChuLWgpO2JyZWFrfW8rPXM7Y29uc3QgYz1pKGUsYSx0KTtvPmMmJihvLT1jLGErKyk7Y29uc3QgbD0yPT09ZVthXS5nZXRXaWR0aChvLTEpO2wmJm8tLTtjb25zdCBkPWw/cy0xOnM7ci5wdXNoKGQpLGgrPWR9cmV0dXJuIHJ9LHQuZ2V0V3JhcHBlZExpbmVUcmltbWVkTGVuZ3RoPWl9LDUyOTU6KGUsdCxpKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuQnVmZmVyU2V0PXZvaWQgMDtjb25zdCBzPWkoOTA5Mikscj1pKDg0NjApLG49aSg4NDQpO2NsYXNzIG8gZXh0ZW5kcyBuLkRpc3Bvc2FibGV7Y29uc3RydWN0b3IoZSx0KXtzdXBlcigpLHRoaXMuX29wdGlvbnNTZXJ2aWNlPWUsdGhpcy5fYnVmZmVyU2VydmljZT10LHRoaXMuX29uQnVmZmVyQWN0aXZhdGU9dGhpcy5yZWdpc3RlcihuZXcgci5FdmVudEVtaXR0ZXIpLHRoaXMub25CdWZmZXJBY3RpdmF0ZT10aGlzLl9vbkJ1ZmZlckFjdGl2YXRlLmV2ZW50LHRoaXMucmVzZXQoKSx0aGlzLnJlZ2lzdGVyKHRoaXMuX29wdGlvbnNTZXJ2aWNlLm9uU3BlY2lmaWNPcHRpb25DaGFuZ2UoXCJzY3JvbGxiYWNrXCIsKCgpPT50aGlzLnJlc2l6ZSh0aGlzLl9idWZmZXJTZXJ2aWNlLmNvbHMsdGhpcy5fYnVmZmVyU2VydmljZS5yb3dzKSkpKSx0aGlzLnJlZ2lzdGVyKHRoaXMuX29wdGlvbnNTZXJ2aWNlLm9uU3BlY2lmaWNPcHRpb25DaGFuZ2UoXCJ0YWJTdG9wV2lkdGhcIiwoKCk9PnRoaXMuc2V0dXBUYWJTdG9wcygpKSkpfXJlc2V0KCl7dGhpcy5fbm9ybWFsPW5ldyBzLkJ1ZmZlcighMCx0aGlzLl9vcHRpb25zU2VydmljZSx0aGlzLl9idWZmZXJTZXJ2aWNlKSx0aGlzLl9ub3JtYWwuZmlsbFZpZXdwb3J0Um93cygpLHRoaXMuX2FsdD1uZXcgcy5CdWZmZXIoITEsdGhpcy5fb3B0aW9uc1NlcnZpY2UsdGhpcy5fYnVmZmVyU2VydmljZSksdGhpcy5fYWN0aXZlQnVmZmVyPXRoaXMuX25vcm1hbCx0aGlzLl9vbkJ1ZmZlckFjdGl2YXRlLmZpcmUoe2FjdGl2ZUJ1ZmZlcjp0aGlzLl9ub3JtYWwsaW5hY3RpdmVCdWZmZXI6dGhpcy5fYWx0fSksdGhpcy5zZXR1cFRhYlN0b3BzKCl9Z2V0IGFsdCgpe3JldHVybiB0aGlzLl9hbHR9Z2V0IGFjdGl2ZSgpe3JldHVybiB0aGlzLl9hY3RpdmVCdWZmZXJ9Z2V0IG5vcm1hbCgpe3JldHVybiB0aGlzLl9ub3JtYWx9YWN0aXZhdGVOb3JtYWxCdWZmZXIoKXt0aGlzLl9hY3RpdmVCdWZmZXIhPT10aGlzLl9ub3JtYWwmJih0aGlzLl9ub3JtYWwueD10aGlzLl9hbHQueCx0aGlzLl9ub3JtYWwueT10aGlzLl9hbHQueSx0aGlzLl9hbHQuY2xlYXJBbGxNYXJrZXJzKCksdGhpcy5fYWx0LmNsZWFyKCksdGhpcy5fYWN0aXZlQnVmZmVyPXRoaXMuX25vcm1hbCx0aGlzLl9vbkJ1ZmZlckFjdGl2YXRlLmZpcmUoe2FjdGl2ZUJ1ZmZlcjp0aGlzLl9ub3JtYWwsaW5hY3RpdmVCdWZmZXI6dGhpcy5fYWx0fSkpfWFjdGl2YXRlQWx0QnVmZmVyKGUpe3RoaXMuX2FjdGl2ZUJ1ZmZlciE9PXRoaXMuX2FsdCYmKHRoaXMuX2FsdC5maWxsVmlld3BvcnRSb3dzKGUpLHRoaXMuX2FsdC54PXRoaXMuX25vcm1hbC54LHRoaXMuX2FsdC55PXRoaXMuX25vcm1hbC55LHRoaXMuX2FjdGl2ZUJ1ZmZlcj10aGlzLl9hbHQsdGhpcy5fb25CdWZmZXJBY3RpdmF0ZS5maXJlKHthY3RpdmVCdWZmZXI6dGhpcy5fYWx0LGluYWN0aXZlQnVmZmVyOnRoaXMuX25vcm1hbH0pKX1yZXNpemUoZSx0KXt0aGlzLl9ub3JtYWwucmVzaXplKGUsdCksdGhpcy5fYWx0LnJlc2l6ZShlLHQpLHRoaXMuc2V0dXBUYWJTdG9wcyhlKX1zZXR1cFRhYlN0b3BzKGUpe3RoaXMuX25vcm1hbC5zZXR1cFRhYlN0b3BzKGUpLHRoaXMuX2FsdC5zZXR1cFRhYlN0b3BzKGUpfX10LkJ1ZmZlclNldD1vfSw1MTE6KGUsdCxpKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuQ2VsbERhdGE9dm9pZCAwO2NvbnN0IHM9aSg0ODIpLHI9aSg2NDMpLG49aSgzNzM0KTtjbGFzcyBvIGV4dGVuZHMgbi5BdHRyaWJ1dGVEYXRhe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLmNvbnRlbnQ9MCx0aGlzLmZnPTAsdGhpcy5iZz0wLHRoaXMuZXh0ZW5kZWQ9bmV3IG4uRXh0ZW5kZWRBdHRycyx0aGlzLmNvbWJpbmVkRGF0YT1cIlwifXN0YXRpYyBmcm9tQ2hhckRhdGEoZSl7Y29uc3QgdD1uZXcgbztyZXR1cm4gdC5zZXRGcm9tQ2hhckRhdGEoZSksdH1pc0NvbWJpbmVkKCl7cmV0dXJuIDIwOTcxNTImdGhpcy5jb250ZW50fWdldFdpZHRoKCl7cmV0dXJuIHRoaXMuY29udGVudD4+MjJ9Z2V0Q2hhcnMoKXtyZXR1cm4gMjA5NzE1MiZ0aGlzLmNvbnRlbnQ/dGhpcy5jb21iaW5lZERhdGE6MjA5NzE1MSZ0aGlzLmNvbnRlbnQ/KDAscy5zdHJpbmdGcm9tQ29kZVBvaW50KSgyMDk3MTUxJnRoaXMuY29udGVudCk6XCJcIn1nZXRDb2RlKCl7cmV0dXJuIHRoaXMuaXNDb21iaW5lZCgpP3RoaXMuY29tYmluZWREYXRhLmNoYXJDb2RlQXQodGhpcy5jb21iaW5lZERhdGEubGVuZ3RoLTEpOjIwOTcxNTEmdGhpcy5jb250ZW50fXNldEZyb21DaGFyRGF0YShlKXt0aGlzLmZnPWVbci5DSEFSX0RBVEFfQVRUUl9JTkRFWF0sdGhpcy5iZz0wO2xldCB0PSExO2lmKGVbci5DSEFSX0RBVEFfQ0hBUl9JTkRFWF0ubGVuZ3RoPjIpdD0hMDtlbHNlIGlmKDI9PT1lW3IuQ0hBUl9EQVRBX0NIQVJfSU5ERVhdLmxlbmd0aCl7Y29uc3QgaT1lW3IuQ0hBUl9EQVRBX0NIQVJfSU5ERVhdLmNoYXJDb2RlQXQoMCk7aWYoNTUyOTY8PWkmJmk8PTU2MzE5KXtjb25zdCBzPWVbci5DSEFSX0RBVEFfQ0hBUl9JTkRFWF0uY2hhckNvZGVBdCgxKTs1NjMyMDw9cyYmczw9NTczNDM/dGhpcy5jb250ZW50PTEwMjQqKGktNTUyOTYpK3MtNTYzMjArNjU1MzZ8ZVtyLkNIQVJfREFUQV9XSURUSF9JTkRFWF08PDIyOnQ9ITB9ZWxzZSB0PSEwfWVsc2UgdGhpcy5jb250ZW50PWVbci5DSEFSX0RBVEFfQ0hBUl9JTkRFWF0uY2hhckNvZGVBdCgwKXxlW3IuQ0hBUl9EQVRBX1dJRFRIX0lOREVYXTw8MjI7dCYmKHRoaXMuY29tYmluZWREYXRhPWVbci5DSEFSX0RBVEFfQ0hBUl9JTkRFWF0sdGhpcy5jb250ZW50PTIwOTcxNTJ8ZVtyLkNIQVJfREFUQV9XSURUSF9JTkRFWF08PDIyKX1nZXRBc0NoYXJEYXRhKCl7cmV0dXJuW3RoaXMuZmcsdGhpcy5nZXRDaGFycygpLHRoaXMuZ2V0V2lkdGgoKSx0aGlzLmdldENvZGUoKV19fXQuQ2VsbERhdGE9b30sNjQzOihlLHQpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5XSElURVNQQUNFX0NFTExfQ09ERT10LldISVRFU1BBQ0VfQ0VMTF9XSURUSD10LldISVRFU1BBQ0VfQ0VMTF9DSEFSPXQuTlVMTF9DRUxMX0NPREU9dC5OVUxMX0NFTExfV0lEVEg9dC5OVUxMX0NFTExfQ0hBUj10LkNIQVJfREFUQV9DT0RFX0lOREVYPXQuQ0hBUl9EQVRBX1dJRFRIX0lOREVYPXQuQ0hBUl9EQVRBX0NIQVJfSU5ERVg9dC5DSEFSX0RBVEFfQVRUUl9JTkRFWD10LkRFRkFVTFRfRVhUPXQuREVGQVVMVF9BVFRSPXQuREVGQVVMVF9DT0xPUj12b2lkIDAsdC5ERUZBVUxUX0NPTE9SPTAsdC5ERUZBVUxUX0FUVFI9MjU2fHQuREVGQVVMVF9DT0xPUjw8OSx0LkRFRkFVTFRfRVhUPTAsdC5DSEFSX0RBVEFfQVRUUl9JTkRFWD0wLHQuQ0hBUl9EQVRBX0NIQVJfSU5ERVg9MSx0LkNIQVJfREFUQV9XSURUSF9JTkRFWD0yLHQuQ0hBUl9EQVRBX0NPREVfSU5ERVg9Myx0Lk5VTExfQ0VMTF9DSEFSPVwiXCIsdC5OVUxMX0NFTExfV0lEVEg9MSx0Lk5VTExfQ0VMTF9DT0RFPTAsdC5XSElURVNQQUNFX0NFTExfQ0hBUj1cIiBcIix0LldISVRFU1BBQ0VfQ0VMTF9XSURUSD0xLHQuV0hJVEVTUEFDRV9DRUxMX0NPREU9MzJ9LDQ4NjM6KGUsdCxpKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuTWFya2VyPXZvaWQgMDtjb25zdCBzPWkoODQ2MCkscj1pKDg0NCk7Y2xhc3Mgbntjb25zdHJ1Y3RvcihlKXt0aGlzLmxpbmU9ZSx0aGlzLmlzRGlzcG9zZWQ9ITEsdGhpcy5fZGlzcG9zYWJsZXM9W10sdGhpcy5faWQ9bi5fbmV4dElkKyssdGhpcy5fb25EaXNwb3NlPXRoaXMucmVnaXN0ZXIobmV3IHMuRXZlbnRFbWl0dGVyKSx0aGlzLm9uRGlzcG9zZT10aGlzLl9vbkRpc3Bvc2UuZXZlbnR9Z2V0IGlkKCl7cmV0dXJuIHRoaXMuX2lkfWRpc3Bvc2UoKXt0aGlzLmlzRGlzcG9zZWR8fCh0aGlzLmlzRGlzcG9zZWQ9ITAsdGhpcy5saW5lPS0xLHRoaXMuX29uRGlzcG9zZS5maXJlKCksKDAsci5kaXNwb3NlQXJyYXkpKHRoaXMuX2Rpc3Bvc2FibGVzKSx0aGlzLl9kaXNwb3NhYmxlcy5sZW5ndGg9MCl9cmVnaXN0ZXIoZSl7cmV0dXJuIHRoaXMuX2Rpc3Bvc2FibGVzLnB1c2goZSksZX19dC5NYXJrZXI9bixuLl9uZXh0SWQ9MX0sNzExNjooZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuREVGQVVMVF9DSEFSU0VUPXQuQ0hBUlNFVFM9dm9pZCAwLHQuQ0hBUlNFVFM9e30sdC5ERUZBVUxUX0NIQVJTRVQ9dC5DSEFSU0VUUy5CLHQuQ0hBUlNFVFNbMF09e1wiYFwiOlwi4peGXCIsYTpcIuKWklwiLGI6XCLikIlcIixjOlwi4pCMXCIsZDpcIuKQjVwiLGU6XCLikIpcIixmOlwiwrBcIixnOlwiwrFcIixoOlwi4pCkXCIsaTpcIuKQi1wiLGo6XCLilJhcIixrOlwi4pSQXCIsbDpcIuKUjFwiLG06XCLilJRcIixuOlwi4pS8XCIsbzpcIuKOulwiLHA6XCLijrtcIixxOlwi4pSAXCIscjpcIuKOvFwiLHM6XCLijr1cIix0Olwi4pScXCIsdTpcIuKUpFwiLHY6XCLilLRcIix3Olwi4pSsXCIseDpcIuKUglwiLHk6XCLiiaRcIix6Olwi4omlXCIsXCJ7XCI6XCLPgFwiLFwifFwiOlwi4omgXCIsXCJ9XCI6XCLCo1wiLFwiflwiOlwiwrdcIn0sdC5DSEFSU0VUUy5BPXtcIiNcIjpcIsKjXCJ9LHQuQ0hBUlNFVFMuQj12b2lkIDAsdC5DSEFSU0VUU1s0XT17XCIjXCI6XCLCo1wiLFwiQFwiOlwiwr5cIixcIltcIjpcImlqXCIsXCJcXFxcXCI6XCLCvVwiLFwiXVwiOlwifFwiLFwie1wiOlwiwqhcIixcInxcIjpcImZcIixcIn1cIjpcIsK8XCIsXCJ+XCI6XCLCtFwifSx0LkNIQVJTRVRTLkM9dC5DSEFSU0VUU1s1XT17XCJbXCI6XCLDhFwiLFwiXFxcXFwiOlwiw5ZcIixcIl1cIjpcIsOFXCIsXCJeXCI6XCLDnFwiLFwiYFwiOlwiw6lcIixcIntcIjpcIsOkXCIsXCJ8XCI6XCLDtlwiLFwifVwiOlwiw6VcIixcIn5cIjpcIsO8XCJ9LHQuQ0hBUlNFVFMuUj17XCIjXCI6XCLCo1wiLFwiQFwiOlwiw6BcIixcIltcIjpcIsKwXCIsXCJcXFxcXCI6XCLDp1wiLFwiXVwiOlwiwqdcIixcIntcIjpcIsOpXCIsXCJ8XCI6XCLDuVwiLFwifVwiOlwiw6hcIixcIn5cIjpcIsKoXCJ9LHQuQ0hBUlNFVFMuUT17XCJAXCI6XCLDoFwiLFwiW1wiOlwiw6JcIixcIlxcXFxcIjpcIsOnXCIsXCJdXCI6XCLDqlwiLFwiXlwiOlwiw65cIixcImBcIjpcIsO0XCIsXCJ7XCI6XCLDqVwiLFwifFwiOlwiw7lcIixcIn1cIjpcIsOoXCIsXCJ+XCI6XCLDu1wifSx0LkNIQVJTRVRTLks9e1wiQFwiOlwiwqdcIixcIltcIjpcIsOEXCIsXCJcXFxcXCI6XCLDllwiLFwiXVwiOlwiw5xcIixcIntcIjpcIsOkXCIsXCJ8XCI6XCLDtlwiLFwifVwiOlwiw7xcIixcIn5cIjpcIsOfXCJ9LHQuQ0hBUlNFVFMuWT17XCIjXCI6XCLCo1wiLFwiQFwiOlwiwqdcIixcIltcIjpcIsKwXCIsXCJcXFxcXCI6XCLDp1wiLFwiXVwiOlwiw6lcIixcImBcIjpcIsO5XCIsXCJ7XCI6XCLDoFwiLFwifFwiOlwiw7JcIixcIn1cIjpcIsOoXCIsXCJ+XCI6XCLDrFwifSx0LkNIQVJTRVRTLkU9dC5DSEFSU0VUU1s2XT17XCJAXCI6XCLDhFwiLFwiW1wiOlwiw4ZcIixcIlxcXFxcIjpcIsOYXCIsXCJdXCI6XCLDhVwiLFwiXlwiOlwiw5xcIixcImBcIjpcIsOkXCIsXCJ7XCI6XCLDplwiLFwifFwiOlwiw7hcIixcIn1cIjpcIsOlXCIsXCJ+XCI6XCLDvFwifSx0LkNIQVJTRVRTLlo9e1wiI1wiOlwiwqNcIixcIkBcIjpcIsKnXCIsXCJbXCI6XCLCoVwiLFwiXFxcXFwiOlwiw5FcIixcIl1cIjpcIsK/XCIsXCJ7XCI6XCLCsFwiLFwifFwiOlwiw7FcIixcIn1cIjpcIsOnXCJ9LHQuQ0hBUlNFVFMuSD10LkNIQVJTRVRTWzddPXtcIkBcIjpcIsOJXCIsXCJbXCI6XCLDhFwiLFwiXFxcXFwiOlwiw5ZcIixcIl1cIjpcIsOFXCIsXCJeXCI6XCLDnFwiLFwiYFwiOlwiw6lcIixcIntcIjpcIsOkXCIsXCJ8XCI6XCLDtlwiLFwifVwiOlwiw6VcIixcIn5cIjpcIsO8XCJ9LHQuQ0hBUlNFVFNbXCI9XCJdPXtcIiNcIjpcIsO5XCIsXCJAXCI6XCLDoFwiLFwiW1wiOlwiw6lcIixcIlxcXFxcIjpcIsOnXCIsXCJdXCI6XCLDqlwiLFwiXlwiOlwiw65cIixfOlwiw6hcIixcImBcIjpcIsO0XCIsXCJ7XCI6XCLDpFwiLFwifFwiOlwiw7ZcIixcIn1cIjpcIsO8XCIsXCJ+XCI6XCLDu1wifX0sMjU4NDooZSx0KT0+e3ZhciBpLHM7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5DMV9FU0NBUEVEPXQuQzE9dC5DMD12b2lkIDAsZnVuY3Rpb24oZSl7ZS5OVUw9XCJcXDBcIixlLlNPSD1cIlx1MDAwMVwiLGUuU1RYPVwiXHUwMDAyXCIsZS5FVFg9XCJcdTAwMDNcIixlLkVPVD1cIlx1MDAwNFwiLGUuRU5RPVwiXHUwMDA1XCIsZS5BQ0s9XCJcdTAwMDZcIixlLkJFTD1cIlx1MDAwN1wiLGUuQlM9XCJcXGJcIixlLkhUPVwiXFx0XCIsZS5MRj1cIlxcblwiLGUuVlQ9XCJcXHZcIixlLkZGPVwiXFxmXCIsZS5DUj1cIlxcclwiLGUuU089XCJcdTAwMGVcIixlLlNJPVwiXHUwMDBmXCIsZS5ETEU9XCJcdTAwMTBcIixlLkRDMT1cIlx1MDAxMVwiLGUuREMyPVwiXHUwMDEyXCIsZS5EQzM9XCJcdTAwMTNcIixlLkRDND1cIlx1MDAxNFwiLGUuTkFLPVwiXHUwMDE1XCIsZS5TWU49XCJcdTAwMTZcIixlLkVUQj1cIlx1MDAxN1wiLGUuQ0FOPVwiXHUwMDE4XCIsZS5FTT1cIlx1MDAxOVwiLGUuU1VCPVwiXHUwMDFhXCIsZS5FU0M9XCJcdTAwMWJcIixlLkZTPVwiXHUwMDFjXCIsZS5HUz1cIlx1MDAxZFwiLGUuUlM9XCJcdTAwMWVcIixlLlVTPVwiXHUwMDFmXCIsZS5TUD1cIiBcIixlLkRFTD1cIn9cIn0oaT10LkMwfHwodC5DMD17fSkpLChzPXQuQzF8fCh0LkMxPXt9KSkuUEFEPVwiwoBcIixzLkhPUD1cIsKBXCIscy5CUEg9XCLCglwiLHMuTkJIPVwiwoNcIixzLklORD1cIsKEXCIscy5ORUw9XCLChVwiLHMuU1NBPVwiwoZcIixzLkVTQT1cIsKHXCIscy5IVFM9XCLCiFwiLHMuSFRKPVwiwolcIixzLlZUUz1cIsKKXCIscy5QTEQ9XCLCi1wiLHMuUExVPVwiwoxcIixzLlJJPVwiwo1cIixzLlNTMj1cIsKOXCIscy5TUzM9XCLCj1wiLHMuRENTPVwiwpBcIixzLlBVMT1cIsKRXCIscy5QVTI9XCLCklwiLHMuU1RTPVwiwpNcIixzLkNDSD1cIsKUXCIscy5NVz1cIsKVXCIscy5TUEE9XCLCllwiLHMuRVBBPVwiwpdcIixzLlNPUz1cIsKYXCIscy5TR0NJPVwiwplcIixzLlNDST1cIsKaXCIscy5DU0k9XCLCm1wiLHMuU1Q9XCLCnFwiLHMuT1NDPVwiwp1cIixzLlBNPVwiwp5cIixzLkFQQz1cIsKfXCIsKHQuQzFfRVNDQVBFRHx8KHQuQzFfRVNDQVBFRD17fSkpLlNUPWAke2kuRVNDfVxcXFxgfSw3Mzk5OihlLHQsaSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmV2YWx1YXRlS2V5Ym9hcmRFdmVudD12b2lkIDA7Y29uc3Qgcz1pKDI1ODQpLHI9ezQ4OltcIjBcIixcIilcIl0sNDk6W1wiMVwiLFwiIVwiXSw1MDpbXCIyXCIsXCJAXCJdLDUxOltcIjNcIixcIiNcIl0sNTI6W1wiNFwiLFwiJFwiXSw1MzpbXCI1XCIsXCIlXCJdLDU0OltcIjZcIixcIl5cIl0sNTU6W1wiN1wiLFwiJlwiXSw1NjpbXCI4XCIsXCIqXCJdLDU3OltcIjlcIixcIihcIl0sMTg2OltcIjtcIixcIjpcIl0sMTg3OltcIj1cIixcIitcIl0sMTg4OltcIixcIixcIjxcIl0sMTg5OltcIi1cIixcIl9cIl0sMTkwOltcIi5cIixcIj5cIl0sMTkxOltcIi9cIixcIj9cIl0sMTkyOltcImBcIixcIn5cIl0sMjE5OltcIltcIixcIntcIl0sMjIwOltcIlxcXFxcIixcInxcIl0sMjIxOltcIl1cIixcIn1cIl0sMjIyOltcIidcIiwnXCInXX07dC5ldmFsdWF0ZUtleWJvYXJkRXZlbnQ9ZnVuY3Rpb24oZSx0LGksbil7Y29uc3Qgbz17dHlwZTowLGNhbmNlbDohMSxrZXk6dm9pZCAwfSxhPShlLnNoaWZ0S2V5PzE6MCl8KGUuYWx0S2V5PzI6MCl8KGUuY3RybEtleT80OjApfChlLm1ldGFLZXk/ODowKTtzd2l0Y2goZS5rZXlDb2RlKXtjYXNlIDA6XCJVSUtleUlucHV0VXBBcnJvd1wiPT09ZS5rZXk/by5rZXk9dD9zLkMwLkVTQytcIk9BXCI6cy5DMC5FU0MrXCJbQVwiOlwiVUlLZXlJbnB1dExlZnRBcnJvd1wiPT09ZS5rZXk/by5rZXk9dD9zLkMwLkVTQytcIk9EXCI6cy5DMC5FU0MrXCJbRFwiOlwiVUlLZXlJbnB1dFJpZ2h0QXJyb3dcIj09PWUua2V5P28ua2V5PXQ/cy5DMC5FU0MrXCJPQ1wiOnMuQzAuRVNDK1wiW0NcIjpcIlVJS2V5SW5wdXREb3duQXJyb3dcIj09PWUua2V5JiYoby5rZXk9dD9zLkMwLkVTQytcIk9CXCI6cy5DMC5FU0MrXCJbQlwiKTticmVhaztjYXNlIDg6aWYoZS5hbHRLZXkpe28ua2V5PXMuQzAuRVNDK3MuQzAuREVMO2JyZWFrfW8ua2V5PXMuQzAuREVMO2JyZWFrO2Nhc2UgOTppZihlLnNoaWZ0S2V5KXtvLmtleT1zLkMwLkVTQytcIltaXCI7YnJlYWt9by5rZXk9cy5DMC5IVCxvLmNhbmNlbD0hMDticmVhaztjYXNlIDEzOm8ua2V5PWUuYWx0S2V5P3MuQzAuRVNDK3MuQzAuQ1I6cy5DMC5DUixvLmNhbmNlbD0hMDticmVhaztjYXNlIDI3Om8ua2V5PXMuQzAuRVNDLGUuYWx0S2V5JiYoby5rZXk9cy5DMC5FU0Mrcy5DMC5FU0MpLG8uY2FuY2VsPSEwO2JyZWFrO2Nhc2UgMzc6aWYoZS5tZXRhS2V5KWJyZWFrO2E/KG8ua2V5PXMuQzAuRVNDK1wiWzE7XCIrKGErMSkrXCJEXCIsby5rZXk9PT1zLkMwLkVTQytcIlsxOzNEXCImJihvLmtleT1zLkMwLkVTQysoaT9cImJcIjpcIlsxOzVEXCIpKSk6by5rZXk9dD9zLkMwLkVTQytcIk9EXCI6cy5DMC5FU0MrXCJbRFwiO2JyZWFrO2Nhc2UgMzk6aWYoZS5tZXRhS2V5KWJyZWFrO2E/KG8ua2V5PXMuQzAuRVNDK1wiWzE7XCIrKGErMSkrXCJDXCIsby5rZXk9PT1zLkMwLkVTQytcIlsxOzNDXCImJihvLmtleT1zLkMwLkVTQysoaT9cImZcIjpcIlsxOzVDXCIpKSk6by5rZXk9dD9zLkMwLkVTQytcIk9DXCI6cy5DMC5FU0MrXCJbQ1wiO2JyZWFrO2Nhc2UgMzg6aWYoZS5tZXRhS2V5KWJyZWFrO2E/KG8ua2V5PXMuQzAuRVNDK1wiWzE7XCIrKGErMSkrXCJBXCIsaXx8by5rZXkhPT1zLkMwLkVTQytcIlsxOzNBXCJ8fChvLmtleT1zLkMwLkVTQytcIlsxOzVBXCIpKTpvLmtleT10P3MuQzAuRVNDK1wiT0FcIjpzLkMwLkVTQytcIltBXCI7YnJlYWs7Y2FzZSA0MDppZihlLm1ldGFLZXkpYnJlYWs7YT8oby5rZXk9cy5DMC5FU0MrXCJbMTtcIisoYSsxKStcIkJcIixpfHxvLmtleSE9PXMuQzAuRVNDK1wiWzE7M0JcInx8KG8ua2V5PXMuQzAuRVNDK1wiWzE7NUJcIikpOm8ua2V5PXQ/cy5DMC5FU0MrXCJPQlwiOnMuQzAuRVNDK1wiW0JcIjticmVhaztjYXNlIDQ1OmUuc2hpZnRLZXl8fGUuY3RybEtleXx8KG8ua2V5PXMuQzAuRVNDK1wiWzJ+XCIpO2JyZWFrO2Nhc2UgNDY6by5rZXk9YT9zLkMwLkVTQytcIlszO1wiKyhhKzEpK1wiflwiOnMuQzAuRVNDK1wiWzN+XCI7YnJlYWs7Y2FzZSAzNjpvLmtleT1hP3MuQzAuRVNDK1wiWzE7XCIrKGErMSkrXCJIXCI6dD9zLkMwLkVTQytcIk9IXCI6cy5DMC5FU0MrXCJbSFwiO2JyZWFrO2Nhc2UgMzU6by5rZXk9YT9zLkMwLkVTQytcIlsxO1wiKyhhKzEpK1wiRlwiOnQ/cy5DMC5FU0MrXCJPRlwiOnMuQzAuRVNDK1wiW0ZcIjticmVhaztjYXNlIDMzOmUuc2hpZnRLZXk/by50eXBlPTI6ZS5jdHJsS2V5P28ua2V5PXMuQzAuRVNDK1wiWzU7XCIrKGErMSkrXCJ+XCI6by5rZXk9cy5DMC5FU0MrXCJbNX5cIjticmVhaztjYXNlIDM0OmUuc2hpZnRLZXk/by50eXBlPTM6ZS5jdHJsS2V5P28ua2V5PXMuQzAuRVNDK1wiWzY7XCIrKGErMSkrXCJ+XCI6by5rZXk9cy5DMC5FU0MrXCJbNn5cIjticmVhaztjYXNlIDExMjpvLmtleT1hP3MuQzAuRVNDK1wiWzE7XCIrKGErMSkrXCJQXCI6cy5DMC5FU0MrXCJPUFwiO2JyZWFrO2Nhc2UgMTEzOm8ua2V5PWE/cy5DMC5FU0MrXCJbMTtcIisoYSsxKStcIlFcIjpzLkMwLkVTQytcIk9RXCI7YnJlYWs7Y2FzZSAxMTQ6by5rZXk9YT9zLkMwLkVTQytcIlsxO1wiKyhhKzEpK1wiUlwiOnMuQzAuRVNDK1wiT1JcIjticmVhaztjYXNlIDExNTpvLmtleT1hP3MuQzAuRVNDK1wiWzE7XCIrKGErMSkrXCJTXCI6cy5DMC5FU0MrXCJPU1wiO2JyZWFrO2Nhc2UgMTE2Om8ua2V5PWE/cy5DMC5FU0MrXCJbMTU7XCIrKGErMSkrXCJ+XCI6cy5DMC5FU0MrXCJbMTV+XCI7YnJlYWs7Y2FzZSAxMTc6by5rZXk9YT9zLkMwLkVTQytcIlsxNztcIisoYSsxKStcIn5cIjpzLkMwLkVTQytcIlsxN35cIjticmVhaztjYXNlIDExODpvLmtleT1hP3MuQzAuRVNDK1wiWzE4O1wiKyhhKzEpK1wiflwiOnMuQzAuRVNDK1wiWzE4flwiO2JyZWFrO2Nhc2UgMTE5Om8ua2V5PWE/cy5DMC5FU0MrXCJbMTk7XCIrKGErMSkrXCJ+XCI6cy5DMC5FU0MrXCJbMTl+XCI7YnJlYWs7Y2FzZSAxMjA6by5rZXk9YT9zLkMwLkVTQytcIlsyMDtcIisoYSsxKStcIn5cIjpzLkMwLkVTQytcIlsyMH5cIjticmVhaztjYXNlIDEyMTpvLmtleT1hP3MuQzAuRVNDK1wiWzIxO1wiKyhhKzEpK1wiflwiOnMuQzAuRVNDK1wiWzIxflwiO2JyZWFrO2Nhc2UgMTIyOm8ua2V5PWE/cy5DMC5FU0MrXCJbMjM7XCIrKGErMSkrXCJ+XCI6cy5DMC5FU0MrXCJbMjN+XCI7YnJlYWs7Y2FzZSAxMjM6by5rZXk9YT9zLkMwLkVTQytcIlsyNDtcIisoYSsxKStcIn5cIjpzLkMwLkVTQytcIlsyNH5cIjticmVhaztkZWZhdWx0OmlmKCFlLmN0cmxLZXl8fGUuc2hpZnRLZXl8fGUuYWx0S2V5fHxlLm1ldGFLZXkpaWYoaSYmIW58fCFlLmFsdEtleXx8ZS5tZXRhS2V5KSFpfHxlLmFsdEtleXx8ZS5jdHJsS2V5fHxlLnNoaWZ0S2V5fHwhZS5tZXRhS2V5P2Uua2V5JiYhZS5jdHJsS2V5JiYhZS5hbHRLZXkmJiFlLm1ldGFLZXkmJmUua2V5Q29kZT49NDgmJjE9PT1lLmtleS5sZW5ndGg/by5rZXk9ZS5rZXk6ZS5rZXkmJmUuY3RybEtleSYmKFwiX1wiPT09ZS5rZXkmJihvLmtleT1zLkMwLlVTKSxcIkBcIj09PWUua2V5JiYoby5rZXk9cy5DMC5OVUwpKTo2NT09PWUua2V5Q29kZSYmKG8udHlwZT0xKTtlbHNle2NvbnN0IHQ9cltlLmtleUNvZGVdLGk9bnVsbD09dD92b2lkIDA6dFtlLnNoaWZ0S2V5PzE6MF07aWYoaSlvLmtleT1zLkMwLkVTQytpO2Vsc2UgaWYoZS5rZXlDb2RlPj02NSYmZS5rZXlDb2RlPD05MCl7Y29uc3QgdD1lLmN0cmxLZXk/ZS5rZXlDb2RlLTY0OmUua2V5Q29kZSszMjtsZXQgaT1TdHJpbmcuZnJvbUNoYXJDb2RlKHQpO2Uuc2hpZnRLZXkmJihpPWkudG9VcHBlckNhc2UoKSksby5rZXk9cy5DMC5FU0MraX1lbHNlIGlmKDMyPT09ZS5rZXlDb2RlKW8ua2V5PXMuQzAuRVNDKyhlLmN0cmxLZXk/cy5DMC5OVUw6XCIgXCIpO2Vsc2UgaWYoXCJEZWFkXCI9PT1lLmtleSYmZS5jb2RlLnN0YXJ0c1dpdGgoXCJLZXlcIikpe2xldCB0PWUuY29kZS5zbGljZSgzLDQpO2Uuc2hpZnRLZXl8fCh0PXQudG9Mb3dlckNhc2UoKSksby5rZXk9cy5DMC5FU0MrdCxvLmNhbmNlbD0hMH19ZWxzZSBlLmtleUNvZGU+PTY1JiZlLmtleUNvZGU8PTkwP28ua2V5PVN0cmluZy5mcm9tQ2hhckNvZGUoZS5rZXlDb2RlLTY0KTozMj09PWUua2V5Q29kZT9vLmtleT1zLkMwLk5VTDplLmtleUNvZGU+PTUxJiZlLmtleUNvZGU8PTU1P28ua2V5PVN0cmluZy5mcm9tQ2hhckNvZGUoZS5rZXlDb2RlLTUxKzI3KTo1Nj09PWUua2V5Q29kZT9vLmtleT1zLkMwLkRFTDoyMTk9PT1lLmtleUNvZGU/by5rZXk9cy5DMC5FU0M6MjIwPT09ZS5rZXlDb2RlP28ua2V5PXMuQzAuRlM6MjIxPT09ZS5rZXlDb2RlJiYoby5rZXk9cy5DMC5HUyl9cmV0dXJuIG99fSw0ODI6KGUsdCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LlV0ZjhUb1V0ZjMyPXQuU3RyaW5nVG9VdGYzMj10LnV0ZjMyVG9TdHJpbmc9dC5zdHJpbmdGcm9tQ29kZVBvaW50PXZvaWQgMCx0LnN0cmluZ0Zyb21Db2RlUG9pbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGU+NjU1MzU/KGUtPTY1NTM2LFN0cmluZy5mcm9tQ2hhckNvZGUoNTUyOTYrKGU+PjEwKSkrU3RyaW5nLmZyb21DaGFyQ29kZShlJTEwMjQrNTYzMjApKTpTdHJpbmcuZnJvbUNoYXJDb2RlKGUpfSx0LnV0ZjMyVG9TdHJpbmc9ZnVuY3Rpb24oZSx0PTAsaT1lLmxlbmd0aCl7bGV0IHM9XCJcIjtmb3IobGV0IHI9dDtyPGk7KytyKXtsZXQgdD1lW3JdO3Q+NjU1MzU/KHQtPTY1NTM2LHMrPVN0cmluZy5mcm9tQ2hhckNvZGUoNTUyOTYrKHQ+PjEwKSkrU3RyaW5nLmZyb21DaGFyQ29kZSh0JTEwMjQrNTYzMjApKTpzKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHQpfXJldHVybiBzfSx0LlN0cmluZ1RvVXRmMzI9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLl9pbnRlcmltPTB9Y2xlYXIoKXt0aGlzLl9pbnRlcmltPTB9ZGVjb2RlKGUsdCl7Y29uc3QgaT1lLmxlbmd0aDtpZighaSlyZXR1cm4gMDtsZXQgcz0wLHI9MDtpZih0aGlzLl9pbnRlcmltKXtjb25zdCBpPWUuY2hhckNvZGVBdChyKyspOzU2MzIwPD1pJiZpPD01NzM0Mz90W3MrK109MTAyNCoodGhpcy5faW50ZXJpbS01NTI5NikraS01NjMyMCs2NTUzNjoodFtzKytdPXRoaXMuX2ludGVyaW0sdFtzKytdPWkpLHRoaXMuX2ludGVyaW09MH1mb3IobGV0IG49cjtuPGk7KytuKXtjb25zdCByPWUuY2hhckNvZGVBdChuKTtpZig1NTI5Njw9ciYmcjw9NTYzMTkpe2lmKCsrbj49aSlyZXR1cm4gdGhpcy5faW50ZXJpbT1yLHM7Y29uc3Qgbz1lLmNoYXJDb2RlQXQobik7NTYzMjA8PW8mJm88PTU3MzQzP3RbcysrXT0xMDI0KihyLTU1Mjk2KStvLTU2MzIwKzY1NTM2Oih0W3MrK109cix0W3MrK109byl9ZWxzZSA2NTI3OSE9PXImJih0W3MrK109cil9cmV0dXJuIHN9fSx0LlV0ZjhUb1V0ZjMyPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5pbnRlcmltPW5ldyBVaW50OEFycmF5KDMpfWNsZWFyKCl7dGhpcy5pbnRlcmltLmZpbGwoMCl9ZGVjb2RlKGUsdCl7Y29uc3QgaT1lLmxlbmd0aDtpZighaSlyZXR1cm4gMDtsZXQgcyxyLG4sbyxhPTAsaD0wLGM9MDtpZih0aGlzLmludGVyaW1bMF0pe2xldCBzPSExLHI9dGhpcy5pbnRlcmltWzBdO3ImPTE5Mj09KDIyNCZyKT8zMToyMjQ9PSgyNDAmcik/MTU6NztsZXQgbixvPTA7Zm9yKDsobj02MyZ0aGlzLmludGVyaW1bKytvXSkmJm88NDspcjw8PTYscnw9bjtjb25zdCBoPTE5Mj09KDIyNCZ0aGlzLmludGVyaW1bMF0pPzI6MjI0PT0oMjQwJnRoaXMuaW50ZXJpbVswXSk/Mzo0LGw9aC1vO2Zvcig7YzxsOyl7aWYoYz49aSlyZXR1cm4gMDtpZihuPWVbYysrXSwxMjghPSgxOTImbikpe2MtLSxzPSEwO2JyZWFrfXRoaXMuaW50ZXJpbVtvKytdPW4scjw8PTYscnw9NjMmbn1zfHwoMj09PWg/cjwxMjg/Yy0tOnRbYSsrXT1yOjM9PT1oP3I8MjA0OHx8cj49NTUyOTYmJnI8PTU3MzQzfHw2NTI3OT09PXJ8fCh0W2ErK109cik6cjw2NTUzNnx8cj4xMTE0MTExfHwodFthKytdPXIpKSx0aGlzLmludGVyaW0uZmlsbCgwKX1jb25zdCBsPWktNDtsZXQgZD1jO2Zvcig7ZDxpOyl7Zm9yKDshKCEoZDxsKXx8MTI4JihzPWVbZF0pfHwxMjgmKHI9ZVtkKzFdKXx8MTI4JihuPWVbZCsyXSl8fDEyOCYobz1lW2QrM10pKTspdFthKytdPXMsdFthKytdPXIsdFthKytdPW4sdFthKytdPW8sZCs9NDtpZihzPWVbZCsrXSxzPDEyOCl0W2ErK109cztlbHNlIGlmKDE5Mj09KDIyNCZzKSl7aWYoZD49aSlyZXR1cm4gdGhpcy5pbnRlcmltWzBdPXMsYTtpZihyPWVbZCsrXSwxMjghPSgxOTImcikpe2QtLTtjb250aW51ZX1pZihoPSgzMSZzKTw8Nnw2MyZyLGg8MTI4KXtkLS07Y29udGludWV9dFthKytdPWh9ZWxzZSBpZigyMjQ9PSgyNDAmcykpe2lmKGQ+PWkpcmV0dXJuIHRoaXMuaW50ZXJpbVswXT1zLGE7aWYocj1lW2QrK10sMTI4IT0oMTkyJnIpKXtkLS07Y29udGludWV9aWYoZD49aSlyZXR1cm4gdGhpcy5pbnRlcmltWzBdPXMsdGhpcy5pbnRlcmltWzFdPXIsYTtpZihuPWVbZCsrXSwxMjghPSgxOTImbikpe2QtLTtjb250aW51ZX1pZihoPSgxNSZzKTw8MTJ8KDYzJnIpPDw2fDYzJm4saDwyMDQ4fHxoPj01NTI5NiYmaDw9NTczNDN8fDY1Mjc5PT09aCljb250aW51ZTt0W2ErK109aH1lbHNlIGlmKDI0MD09KDI0OCZzKSl7aWYoZD49aSlyZXR1cm4gdGhpcy5pbnRlcmltWzBdPXMsYTtpZihyPWVbZCsrXSwxMjghPSgxOTImcikpe2QtLTtjb250aW51ZX1pZihkPj1pKXJldHVybiB0aGlzLmludGVyaW1bMF09cyx0aGlzLmludGVyaW1bMV09cixhO2lmKG49ZVtkKytdLDEyOCE9KDE5MiZuKSl7ZC0tO2NvbnRpbnVlfWlmKGQ+PWkpcmV0dXJuIHRoaXMuaW50ZXJpbVswXT1zLHRoaXMuaW50ZXJpbVsxXT1yLHRoaXMuaW50ZXJpbVsyXT1uLGE7aWYobz1lW2QrK10sMTI4IT0oMTkyJm8pKXtkLS07Y29udGludWV9aWYoaD0oNyZzKTw8MTh8KDYzJnIpPDwxMnwoNjMmbik8PDZ8NjMmbyxoPDY1NTM2fHxoPjExMTQxMTEpY29udGludWU7dFthKytdPWh9fXJldHVybiBhfX19LDIyNTooZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuVW5pY29kZVY2PXZvaWQgMDtjb25zdCBpPVtbNzY4LDg3OV0sWzExNTUsMTE1OF0sWzExNjAsMTE2MV0sWzE0MjUsMTQ2OV0sWzE0NzEsMTQ3MV0sWzE0NzMsMTQ3NF0sWzE0NzYsMTQ3N10sWzE0NzksMTQ3OV0sWzE1MzYsMTUzOV0sWzE1NTIsMTU1N10sWzE2MTEsMTYzMF0sWzE2NDgsMTY0OF0sWzE3NTAsMTc2NF0sWzE3NjcsMTc2OF0sWzE3NzAsMTc3M10sWzE4MDcsMTgwN10sWzE4MDksMTgwOV0sWzE4NDAsMTg2Nl0sWzE5NTgsMTk2OF0sWzIwMjcsMjAzNV0sWzIzMDUsMjMwNl0sWzIzNjQsMjM2NF0sWzIzNjksMjM3Nl0sWzIzODEsMjM4MV0sWzIzODUsMjM4OF0sWzI0MDIsMjQwM10sWzI0MzMsMjQzM10sWzI0OTIsMjQ5Ml0sWzI0OTcsMjUwMF0sWzI1MDksMjUwOV0sWzI1MzAsMjUzMV0sWzI1NjEsMjU2Ml0sWzI2MjAsMjYyMF0sWzI2MjUsMjYyNl0sWzI2MzEsMjYzMl0sWzI2MzUsMjYzN10sWzI2NzIsMjY3M10sWzI2ODksMjY5MF0sWzI3NDgsMjc0OF0sWzI3NTMsMjc1N10sWzI3NTksMjc2MF0sWzI3NjUsMjc2NV0sWzI3ODYsMjc4N10sWzI4MTcsMjgxN10sWzI4NzYsMjg3Nl0sWzI4NzksMjg3OV0sWzI4ODEsMjg4M10sWzI4OTMsMjg5M10sWzI5MDIsMjkwMl0sWzI5NDYsMjk0Nl0sWzMwMDgsMzAwOF0sWzMwMjEsMzAyMV0sWzMxMzQsMzEzNl0sWzMxNDIsMzE0NF0sWzMxNDYsMzE0OV0sWzMxNTcsMzE1OF0sWzMyNjAsMzI2MF0sWzMyNjMsMzI2M10sWzMyNzAsMzI3MF0sWzMyNzYsMzI3N10sWzMyOTgsMzI5OV0sWzMzOTMsMzM5NV0sWzM0MDUsMzQwNV0sWzM1MzAsMzUzMF0sWzM1MzgsMzU0MF0sWzM1NDIsMzU0Ml0sWzM2MzMsMzYzM10sWzM2MzYsMzY0Ml0sWzM2NTUsMzY2Ml0sWzM3NjEsMzc2MV0sWzM3NjQsMzc2OV0sWzM3NzEsMzc3Ml0sWzM3ODQsMzc4OV0sWzM4NjQsMzg2NV0sWzM4OTMsMzg5M10sWzM4OTUsMzg5NV0sWzM4OTcsMzg5N10sWzM5NTMsMzk2Nl0sWzM5NjgsMzk3Ml0sWzM5NzQsMzk3NV0sWzM5ODQsMzk5MV0sWzM5OTMsNDAyOF0sWzQwMzgsNDAzOF0sWzQxNDEsNDE0NF0sWzQxNDYsNDE0Nl0sWzQxNTAsNDE1MV0sWzQxNTMsNDE1M10sWzQxODQsNDE4NV0sWzQ0NDgsNDYwN10sWzQ5NTksNDk1OV0sWzU5MDYsNTkwOF0sWzU5MzgsNTk0MF0sWzU5NzAsNTk3MV0sWzYwMDIsNjAwM10sWzYwNjgsNjA2OV0sWzYwNzEsNjA3N10sWzYwODYsNjA4Nl0sWzYwODksNjA5OV0sWzYxMDksNjEwOV0sWzYxNTUsNjE1N10sWzYzMTMsNjMxM10sWzY0MzIsNjQzNF0sWzY0MzksNjQ0MF0sWzY0NTAsNjQ1MF0sWzY0NTcsNjQ1OV0sWzY2NzksNjY4MF0sWzY5MTIsNjkxNV0sWzY5NjQsNjk2NF0sWzY5NjYsNjk3MF0sWzY5NzIsNjk3Ml0sWzY5NzgsNjk3OF0sWzcwMTksNzAyN10sWzc2MTYsNzYyNl0sWzc2NzgsNzY3OV0sWzgyMDMsODIwN10sWzgyMzQsODIzOF0sWzgyODgsODI5MV0sWzgyOTgsODMwM10sWzg0MDAsODQzMV0sWzEyMzMwLDEyMzM1XSxbMTI0NDEsMTI0NDJdLFs0MzAxNCw0MzAxNF0sWzQzMDE5LDQzMDE5XSxbNDMwNDUsNDMwNDZdLFs2NDI4Niw2NDI4Nl0sWzY1MDI0LDY1MDM5XSxbNjUwNTYsNjUwNTldLFs2NTI3OSw2NTI3OV0sWzY1NTI5LDY1NTMxXV0scz1bWzY4MDk3LDY4MDk5XSxbNjgxMDEsNjgxMDJdLFs2ODEwOCw2ODExMV0sWzY4MTUyLDY4MTU0XSxbNjgxNTksNjgxNTldLFsxMTkxNDMsMTE5MTQ1XSxbMTE5MTU1LDExOTE3MF0sWzExOTE3MywxMTkxNzldLFsxMTkyMTAsMTE5MjEzXSxbMTE5MzYyLDExOTM2NF0sWzkxNzUwNSw5MTc1MDVdLFs5MTc1MzYsOTE3NjMxXSxbOTE3NzYwLDkxNzk5OV1dO2xldCByO3QuVW5pY29kZVY2PWNsYXNze2NvbnN0cnVjdG9yKCl7aWYodGhpcy52ZXJzaW9uPVwiNlwiLCFyKXtyPW5ldyBVaW50OEFycmF5KDY1NTM2KSxyLmZpbGwoMSksclswXT0wLHIuZmlsbCgwLDEsMzIpLHIuZmlsbCgwLDEyNywxNjApLHIuZmlsbCgyLDQzNTIsNDQ0OCkscls5MDAxXT0yLHJbOTAwMl09MixyLmZpbGwoMiwxMTkwNCw0MjE5MiksclsxMjM1MV09MSxyLmZpbGwoMiw0NDAzMiw1NTIwNCksci5maWxsKDIsNjM3NDQsNjQyNTYpLHIuZmlsbCgyLDY1MDQwLDY1MDUwKSxyLmZpbGwoMiw2NTA3Miw2NTEzNiksci5maWxsKDIsNjUyODAsNjUzNzcpLHIuZmlsbCgyLDY1NTA0LDY1NTExKTtmb3IobGV0IGU9MDtlPGkubGVuZ3RoOysrZSlyLmZpbGwoMCxpW2VdWzBdLGlbZV1bMV0rMSl9fXdjd2lkdGgoZSl7cmV0dXJuIGU8MzI/MDplPDEyNz8xOmU8NjU1MzY/cltlXTpmdW5jdGlvbihlLHQpe2xldCBpLHM9MCxyPXQubGVuZ3RoLTE7aWYoZTx0WzBdWzBdfHxlPnRbcl1bMV0pcmV0dXJuITE7Zm9yKDtyPj1zOylpZihpPXMrcj4+MSxlPnRbaV1bMV0pcz1pKzE7ZWxzZXtpZighKGU8dFtpXVswXSkpcmV0dXJuITA7cj1pLTF9cmV0dXJuITF9KGUscyk/MDplPj0xMzEwNzImJmU8PTE5NjYwNXx8ZT49MTk2NjA4JiZlPD0yNjIxNDE/MjoxfX19LDU5ODE6KGUsdCxpKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuV3JpdGVCdWZmZXI9dm9pZCAwO2NvbnN0IHM9aSg4NDYwKSxyPWkoODQ0KTtjbGFzcyBuIGV4dGVuZHMgci5EaXNwb3NhYmxle2NvbnN0cnVjdG9yKGUpe3N1cGVyKCksdGhpcy5fYWN0aW9uPWUsdGhpcy5fd3JpdGVCdWZmZXI9W10sdGhpcy5fY2FsbGJhY2tzPVtdLHRoaXMuX3BlbmRpbmdEYXRhPTAsdGhpcy5fYnVmZmVyT2Zmc2V0PTAsdGhpcy5faXNTeW5jV3JpdGluZz0hMSx0aGlzLl9zeW5jQ2FsbHM9MCx0aGlzLl9kaWRVc2VySW5wdXQ9ITEsdGhpcy5fb25Xcml0ZVBhcnNlZD10aGlzLnJlZ2lzdGVyKG5ldyBzLkV2ZW50RW1pdHRlciksdGhpcy5vbldyaXRlUGFyc2VkPXRoaXMuX29uV3JpdGVQYXJzZWQuZXZlbnR9aGFuZGxlVXNlcklucHV0KCl7dGhpcy5fZGlkVXNlcklucHV0PSEwfXdyaXRlU3luYyhlLHQpe2lmKHZvaWQgMCE9PXQmJnRoaXMuX3N5bmNDYWxscz50KXJldHVybiB2b2lkKHRoaXMuX3N5bmNDYWxscz0wKTtpZih0aGlzLl9wZW5kaW5nRGF0YSs9ZS5sZW5ndGgsdGhpcy5fd3JpdGVCdWZmZXIucHVzaChlKSx0aGlzLl9jYWxsYmFja3MucHVzaCh2b2lkIDApLHRoaXMuX3N5bmNDYWxscysrLHRoaXMuX2lzU3luY1dyaXRpbmcpcmV0dXJuO2xldCBpO2Zvcih0aGlzLl9pc1N5bmNXcml0aW5nPSEwO2k9dGhpcy5fd3JpdGVCdWZmZXIuc2hpZnQoKTspe3RoaXMuX2FjdGlvbihpKTtjb25zdCBlPXRoaXMuX2NhbGxiYWNrcy5zaGlmdCgpO2UmJmUoKX10aGlzLl9wZW5kaW5nRGF0YT0wLHRoaXMuX2J1ZmZlck9mZnNldD0yMTQ3NDgzNjQ3LHRoaXMuX2lzU3luY1dyaXRpbmc9ITEsdGhpcy5fc3luY0NhbGxzPTB9d3JpdGUoZSx0KXtpZih0aGlzLl9wZW5kaW5nRGF0YT41ZTcpdGhyb3cgbmV3IEVycm9yKFwid3JpdGUgZGF0YSBkaXNjYXJkZWQsIHVzZSBmbG93IGNvbnRyb2wgdG8gYXZvaWQgbG9zaW5nIGRhdGFcIik7aWYoIXRoaXMuX3dyaXRlQnVmZmVyLmxlbmd0aCl7aWYodGhpcy5fYnVmZmVyT2Zmc2V0PTAsdGhpcy5fZGlkVXNlcklucHV0KXJldHVybiB0aGlzLl9kaWRVc2VySW5wdXQ9ITEsdGhpcy5fcGVuZGluZ0RhdGErPWUubGVuZ3RoLHRoaXMuX3dyaXRlQnVmZmVyLnB1c2goZSksdGhpcy5fY2FsbGJhY2tzLnB1c2godCksdm9pZCB0aGlzLl9pbm5lcldyaXRlKCk7c2V0VGltZW91dCgoKCk9PnRoaXMuX2lubmVyV3JpdGUoKSkpfXRoaXMuX3BlbmRpbmdEYXRhKz1lLmxlbmd0aCx0aGlzLl93cml0ZUJ1ZmZlci5wdXNoKGUpLHRoaXMuX2NhbGxiYWNrcy5wdXNoKHQpfV9pbm5lcldyaXRlKGU9MCx0PSEwKXtjb25zdCBpPWV8fERhdGUubm93KCk7Zm9yKDt0aGlzLl93cml0ZUJ1ZmZlci5sZW5ndGg+dGhpcy5fYnVmZmVyT2Zmc2V0Oyl7Y29uc3QgZT10aGlzLl93cml0ZUJ1ZmZlclt0aGlzLl9idWZmZXJPZmZzZXRdLHM9dGhpcy5fYWN0aW9uKGUsdCk7aWYocyl7Y29uc3QgZT1lPT5EYXRlLm5vdygpLWk+PTEyP3NldFRpbWVvdXQoKCgpPT50aGlzLl9pbm5lcldyaXRlKDAsZSkpKTp0aGlzLl9pbm5lcldyaXRlKGksZSk7cmV0dXJuIHZvaWQgcy5jYXRjaCgoZT0+KHF1ZXVlTWljcm90YXNrKCgoKT0+e3Rocm93IGV9KSksUHJvbWlzZS5yZXNvbHZlKCExKSkpKS50aGVuKGUpfWNvbnN0IHI9dGhpcy5fY2FsbGJhY2tzW3RoaXMuX2J1ZmZlck9mZnNldF07aWYociYmcigpLHRoaXMuX2J1ZmZlck9mZnNldCsrLHRoaXMuX3BlbmRpbmdEYXRhLT1lLmxlbmd0aCxEYXRlLm5vdygpLWk+PTEyKWJyZWFrfXRoaXMuX3dyaXRlQnVmZmVyLmxlbmd0aD50aGlzLl9idWZmZXJPZmZzZXQ/KHRoaXMuX2J1ZmZlck9mZnNldD41MCYmKHRoaXMuX3dyaXRlQnVmZmVyPXRoaXMuX3dyaXRlQnVmZmVyLnNsaWNlKHRoaXMuX2J1ZmZlck9mZnNldCksdGhpcy5fY2FsbGJhY2tzPXRoaXMuX2NhbGxiYWNrcy5zbGljZSh0aGlzLl9idWZmZXJPZmZzZXQpLHRoaXMuX2J1ZmZlck9mZnNldD0wKSxzZXRUaW1lb3V0KCgoKT0+dGhpcy5faW5uZXJXcml0ZSgpKSkpOih0aGlzLl93cml0ZUJ1ZmZlci5sZW5ndGg9MCx0aGlzLl9jYWxsYmFja3MubGVuZ3RoPTAsdGhpcy5fcGVuZGluZ0RhdGE9MCx0aGlzLl9idWZmZXJPZmZzZXQ9MCksdGhpcy5fb25Xcml0ZVBhcnNlZC5maXJlKCl9fXQuV3JpdGVCdWZmZXI9bn0sNTk0MTooZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQudG9SZ2JTdHJpbmc9dC5wYXJzZUNvbG9yPXZvaWQgMDtjb25zdCBpPS9eKFtcXGRhLWZdKVxcLyhbXFxkYS1mXSlcXC8oW1xcZGEtZl0pJHxeKFtcXGRhLWZdezJ9KVxcLyhbXFxkYS1mXXsyfSlcXC8oW1xcZGEtZl17Mn0pJHxeKFtcXGRhLWZdezN9KVxcLyhbXFxkYS1mXXszfSlcXC8oW1xcZGEtZl17M30pJHxeKFtcXGRhLWZdezR9KVxcLyhbXFxkYS1mXXs0fSlcXC8oW1xcZGEtZl17NH0pJC8scz0vXltcXGRhLWZdKyQvO2Z1bmN0aW9uIHIoZSx0KXtjb25zdCBpPWUudG9TdHJpbmcoMTYpLHM9aS5sZW5ndGg8Mj9cIjBcIitpOmk7c3dpdGNoKHQpe2Nhc2UgNDpyZXR1cm4gaVswXTtjYXNlIDg6cmV0dXJuIHM7Y2FzZSAxMjpyZXR1cm4ocytzKS5zbGljZSgwLDMpO2RlZmF1bHQ6cmV0dXJuIHMrc319dC5wYXJzZUNvbG9yPWZ1bmN0aW9uKGUpe2lmKCFlKXJldHVybjtsZXQgdD1lLnRvTG93ZXJDYXNlKCk7aWYoMD09PXQuaW5kZXhPZihcInJnYjpcIikpe3Q9dC5zbGljZSg0KTtjb25zdCBlPWkuZXhlYyh0KTtpZihlKXtjb25zdCB0PWVbMV0/MTU6ZVs0XT8yNTU6ZVs3XT80MDk1OjY1NTM1O3JldHVybltNYXRoLnJvdW5kKHBhcnNlSW50KGVbMV18fGVbNF18fGVbN118fGVbMTBdLDE2KS90KjI1NSksTWF0aC5yb3VuZChwYXJzZUludChlWzJdfHxlWzVdfHxlWzhdfHxlWzExXSwxNikvdCoyNTUpLE1hdGgucm91bmQocGFyc2VJbnQoZVszXXx8ZVs2XXx8ZVs5XXx8ZVsxMl0sMTYpL3QqMjU1KV19fWVsc2UgaWYoMD09PXQuaW5kZXhPZihcIiNcIikmJih0PXQuc2xpY2UoMSkscy5leGVjKHQpJiZbMyw2LDksMTJdLmluY2x1ZGVzKHQubGVuZ3RoKSkpe2NvbnN0IGU9dC5sZW5ndGgvMyxpPVswLDAsMF07Zm9yKGxldCBzPTA7czwzOysrcyl7Y29uc3Qgcj1wYXJzZUludCh0LnNsaWNlKGUqcyxlKnMrZSksMTYpO2lbc109MT09PWU/cjw8NDoyPT09ZT9yOjM9PT1lP3I+PjQ6cj4+OH1yZXR1cm4gaX19LHQudG9SZ2JTdHJpbmc9ZnVuY3Rpb24oZSx0PTE2KXtjb25zdFtpLHMsbl09ZTtyZXR1cm5gcmdiOiR7cihpLHQpfS8ke3Iocyx0KX0vJHtyKG4sdCl9YH19LDU3NzA6KGUsdCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LlBBWUxPQURfTElNSVQ9dm9pZCAwLHQuUEFZTE9BRF9MSU1JVD0xZTd9LDYzNTE6KGUsdCxpKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuRGNzSGFuZGxlcj10LkRjc1BhcnNlcj12b2lkIDA7Y29uc3Qgcz1pKDQ4Mikscj1pKDg3NDIpLG49aSg1NzcwKSxvPVtdO3QuRGNzUGFyc2VyPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5faGFuZGxlcnM9T2JqZWN0LmNyZWF0ZShudWxsKSx0aGlzLl9hY3RpdmU9byx0aGlzLl9pZGVudD0wLHRoaXMuX2hhbmRsZXJGYj0oKT0+e30sdGhpcy5fc3RhY2s9e3BhdXNlZDohMSxsb29wUG9zaXRpb246MCxmYWxsVGhyb3VnaDohMX19ZGlzcG9zZSgpe3RoaXMuX2hhbmRsZXJzPU9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5faGFuZGxlckZiPSgpPT57fSx0aGlzLl9hY3RpdmU9b31yZWdpc3RlckhhbmRsZXIoZSx0KXt2b2lkIDA9PT10aGlzLl9oYW5kbGVyc1tlXSYmKHRoaXMuX2hhbmRsZXJzW2VdPVtdKTtjb25zdCBpPXRoaXMuX2hhbmRsZXJzW2VdO3JldHVybiBpLnB1c2godCkse2Rpc3Bvc2U6KCk9Pntjb25zdCBlPWkuaW5kZXhPZih0KTstMSE9PWUmJmkuc3BsaWNlKGUsMSl9fX1jbGVhckhhbmRsZXIoZSl7dGhpcy5faGFuZGxlcnNbZV0mJmRlbGV0ZSB0aGlzLl9oYW5kbGVyc1tlXX1zZXRIYW5kbGVyRmFsbGJhY2soZSl7dGhpcy5faGFuZGxlckZiPWV9cmVzZXQoKXtpZih0aGlzLl9hY3RpdmUubGVuZ3RoKWZvcihsZXQgZT10aGlzLl9zdGFjay5wYXVzZWQ/dGhpcy5fc3RhY2subG9vcFBvc2l0aW9uLTE6dGhpcy5fYWN0aXZlLmxlbmd0aC0xO2U+PTA7LS1lKXRoaXMuX2FjdGl2ZVtlXS51bmhvb2soITEpO3RoaXMuX3N0YWNrLnBhdXNlZD0hMSx0aGlzLl9hY3RpdmU9byx0aGlzLl9pZGVudD0wfWhvb2soZSx0KXtpZih0aGlzLnJlc2V0KCksdGhpcy5faWRlbnQ9ZSx0aGlzLl9hY3RpdmU9dGhpcy5faGFuZGxlcnNbZV18fG8sdGhpcy5fYWN0aXZlLmxlbmd0aClmb3IobGV0IGU9dGhpcy5fYWN0aXZlLmxlbmd0aC0xO2U+PTA7ZS0tKXRoaXMuX2FjdGl2ZVtlXS5ob29rKHQpO2Vsc2UgdGhpcy5faGFuZGxlckZiKHRoaXMuX2lkZW50LFwiSE9PS1wiLHQpfXB1dChlLHQsaSl7aWYodGhpcy5fYWN0aXZlLmxlbmd0aClmb3IobGV0IHM9dGhpcy5fYWN0aXZlLmxlbmd0aC0xO3M+PTA7cy0tKXRoaXMuX2FjdGl2ZVtzXS5wdXQoZSx0LGkpO2Vsc2UgdGhpcy5faGFuZGxlckZiKHRoaXMuX2lkZW50LFwiUFVUXCIsKDAscy51dGYzMlRvU3RyaW5nKShlLHQsaSkpfXVuaG9vayhlLHQ9ITApe2lmKHRoaXMuX2FjdGl2ZS5sZW5ndGgpe2xldCBpPSExLHM9dGhpcy5fYWN0aXZlLmxlbmd0aC0xLHI9ITE7aWYodGhpcy5fc3RhY2sucGF1c2VkJiYocz10aGlzLl9zdGFjay5sb29wUG9zaXRpb24tMSxpPXQscj10aGlzLl9zdGFjay5mYWxsVGhyb3VnaCx0aGlzLl9zdGFjay5wYXVzZWQ9ITEpLCFyJiYhMT09PWkpe2Zvcig7cz49MCYmKGk9dGhpcy5fYWN0aXZlW3NdLnVuaG9vayhlKSwhMCE9PWkpO3MtLSlpZihpIGluc3RhbmNlb2YgUHJvbWlzZSlyZXR1cm4gdGhpcy5fc3RhY2sucGF1c2VkPSEwLHRoaXMuX3N0YWNrLmxvb3BQb3NpdGlvbj1zLHRoaXMuX3N0YWNrLmZhbGxUaHJvdWdoPSExLGk7cy0tfWZvcig7cz49MDtzLS0paWYoaT10aGlzLl9hY3RpdmVbc10udW5ob29rKCExKSxpIGluc3RhbmNlb2YgUHJvbWlzZSlyZXR1cm4gdGhpcy5fc3RhY2sucGF1c2VkPSEwLHRoaXMuX3N0YWNrLmxvb3BQb3NpdGlvbj1zLHRoaXMuX3N0YWNrLmZhbGxUaHJvdWdoPSEwLGl9ZWxzZSB0aGlzLl9oYW5kbGVyRmIodGhpcy5faWRlbnQsXCJVTkhPT0tcIixlKTt0aGlzLl9hY3RpdmU9byx0aGlzLl9pZGVudD0wfX07Y29uc3QgYT1uZXcgci5QYXJhbXM7YS5hZGRQYXJhbSgwKSx0LkRjc0hhbmRsZXI9Y2xhc3N7Y29uc3RydWN0b3IoZSl7dGhpcy5faGFuZGxlcj1lLHRoaXMuX2RhdGE9XCJcIix0aGlzLl9wYXJhbXM9YSx0aGlzLl9oaXRMaW1pdD0hMX1ob29rKGUpe3RoaXMuX3BhcmFtcz1lLmxlbmd0aD4xfHxlLnBhcmFtc1swXT9lLmNsb25lKCk6YSx0aGlzLl9kYXRhPVwiXCIsdGhpcy5faGl0TGltaXQ9ITF9cHV0KGUsdCxpKXt0aGlzLl9oaXRMaW1pdHx8KHRoaXMuX2RhdGErPSgwLHMudXRmMzJUb1N0cmluZykoZSx0LGkpLHRoaXMuX2RhdGEubGVuZ3RoPm4uUEFZTE9BRF9MSU1JVCYmKHRoaXMuX2RhdGE9XCJcIix0aGlzLl9oaXRMaW1pdD0hMCkpfXVuaG9vayhlKXtsZXQgdD0hMTtpZih0aGlzLl9oaXRMaW1pdCl0PSExO2Vsc2UgaWYoZSYmKHQ9dGhpcy5faGFuZGxlcih0aGlzLl9kYXRhLHRoaXMuX3BhcmFtcyksdCBpbnN0YW5jZW9mIFByb21pc2UpKXJldHVybiB0LnRoZW4oKGU9Pih0aGlzLl9wYXJhbXM9YSx0aGlzLl9kYXRhPVwiXCIsdGhpcy5faGl0TGltaXQ9ITEsZSkpKTtyZXR1cm4gdGhpcy5fcGFyYW1zPWEsdGhpcy5fZGF0YT1cIlwiLHRoaXMuX2hpdExpbWl0PSExLHR9fX0sMjAxNTooZSx0LGkpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5Fc2NhcGVTZXF1ZW5jZVBhcnNlcj10LlZUNTAwX1RSQU5TSVRJT05fVEFCTEU9dC5UcmFuc2l0aW9uVGFibGU9dm9pZCAwO2NvbnN0IHM9aSg4NDQpLHI9aSg4NzQyKSxuPWkoNjI0Miksbz1pKDYzNTEpO2NsYXNzIGF7Y29uc3RydWN0b3IoZSl7dGhpcy50YWJsZT1uZXcgVWludDhBcnJheShlKX1zZXREZWZhdWx0KGUsdCl7dGhpcy50YWJsZS5maWxsKGU8PDR8dCl9YWRkKGUsdCxpLHMpe3RoaXMudGFibGVbdDw8OHxlXT1pPDw0fHN9YWRkTWFueShlLHQsaSxzKXtmb3IobGV0IHI9MDtyPGUubGVuZ3RoO3IrKyl0aGlzLnRhYmxlW3Q8PDh8ZVtyXV09aTw8NHxzfX10LlRyYW5zaXRpb25UYWJsZT1hO2NvbnN0IGg9MTYwO3QuVlQ1MDBfVFJBTlNJVElPTl9UQUJMRT1mdW5jdGlvbigpe2NvbnN0IGU9bmV3IGEoNDA5NSksdD1BcnJheS5hcHBseShudWxsLEFycmF5KDI1NikpLm1hcCgoKGUsdCk9PnQpKSxpPShlLGkpPT50LnNsaWNlKGUsaSkscz1pKDMyLDEyNykscj1pKDAsMjQpO3IucHVzaCgyNSksci5wdXNoLmFwcGx5KHIsaSgyOCwzMikpO2NvbnN0IG49aSgwLDE0KTtsZXQgbztmb3IobyBpbiBlLnNldERlZmF1bHQoMSwwKSxlLmFkZE1hbnkocywwLDIsMCksbillLmFkZE1hbnkoWzI0LDI2LDE1MywxNTRdLG8sMywwKSxlLmFkZE1hbnkoaSgxMjgsMTQ0KSxvLDMsMCksZS5hZGRNYW55KGkoMTQ0LDE1MiksbywzLDApLGUuYWRkKDE1NixvLDAsMCksZS5hZGQoMjcsbywxMSwxKSxlLmFkZCgxNTcsbyw0LDgpLGUuYWRkTWFueShbMTUyLDE1OCwxNTldLG8sMCw3KSxlLmFkZCgxNTUsbywxMSwzKSxlLmFkZCgxNDQsbywxMSw5KTtyZXR1cm4gZS5hZGRNYW55KHIsMCwzLDApLGUuYWRkTWFueShyLDEsMywxKSxlLmFkZCgxMjcsMSwwLDEpLGUuYWRkTWFueShyLDgsMCw4KSxlLmFkZE1hbnkociwzLDMsMyksZS5hZGQoMTI3LDMsMCwzKSxlLmFkZE1hbnkociw0LDMsNCksZS5hZGQoMTI3LDQsMCw0KSxlLmFkZE1hbnkociw2LDMsNiksZS5hZGRNYW55KHIsNSwzLDUpLGUuYWRkKDEyNyw1LDAsNSksZS5hZGRNYW55KHIsMiwzLDIpLGUuYWRkKDEyNywyLDAsMiksZS5hZGQoOTMsMSw0LDgpLGUuYWRkTWFueShzLDgsNSw4KSxlLmFkZCgxMjcsOCw1LDgpLGUuYWRkTWFueShbMTU2LDI3LDI0LDI2LDddLDgsNiwwKSxlLmFkZE1hbnkoaSgyOCwzMiksOCwwLDgpLGUuYWRkTWFueShbODgsOTQsOTVdLDEsMCw3KSxlLmFkZE1hbnkocyw3LDAsNyksZS5hZGRNYW55KHIsNywwLDcpLGUuYWRkKDE1Niw3LDAsMCksZS5hZGQoMTI3LDcsMCw3KSxlLmFkZCg5MSwxLDExLDMpLGUuYWRkTWFueShpKDY0LDEyNyksMyw3LDApLGUuYWRkTWFueShpKDQ4LDYwKSwzLDgsNCksZS5hZGRNYW55KFs2MCw2MSw2Miw2M10sMyw5LDQpLGUuYWRkTWFueShpKDQ4LDYwKSw0LDgsNCksZS5hZGRNYW55KGkoNjQsMTI3KSw0LDcsMCksZS5hZGRNYW55KFs2MCw2MSw2Miw2M10sNCwwLDYpLGUuYWRkTWFueShpKDMyLDY0KSw2LDAsNiksZS5hZGQoMTI3LDYsMCw2KSxlLmFkZE1hbnkoaSg2NCwxMjcpLDYsMCwwKSxlLmFkZE1hbnkoaSgzMiw0OCksMyw5LDUpLGUuYWRkTWFueShpKDMyLDQ4KSw1LDksNSksZS5hZGRNYW55KGkoNDgsNjQpLDUsMCw2KSxlLmFkZE1hbnkoaSg2NCwxMjcpLDUsNywwKSxlLmFkZE1hbnkoaSgzMiw0OCksNCw5LDUpLGUuYWRkTWFueShpKDMyLDQ4KSwxLDksMiksZS5hZGRNYW55KGkoMzIsNDgpLDIsOSwyKSxlLmFkZE1hbnkoaSg0OCwxMjcpLDIsMTAsMCksZS5hZGRNYW55KGkoNDgsODApLDEsMTAsMCksZS5hZGRNYW55KGkoODEsODgpLDEsMTAsMCksZS5hZGRNYW55KFs4OSw5MCw5Ml0sMSwxMCwwKSxlLmFkZE1hbnkoaSg5NiwxMjcpLDEsMTAsMCksZS5hZGQoODAsMSwxMSw5KSxlLmFkZE1hbnkociw5LDAsOSksZS5hZGQoMTI3LDksMCw5KSxlLmFkZE1hbnkoaSgyOCwzMiksOSwwLDkpLGUuYWRkTWFueShpKDMyLDQ4KSw5LDksMTIpLGUuYWRkTWFueShpKDQ4LDYwKSw5LDgsMTApLGUuYWRkTWFueShbNjAsNjEsNjIsNjNdLDksOSwxMCksZS5hZGRNYW55KHIsMTEsMCwxMSksZS5hZGRNYW55KGkoMzIsMTI4KSwxMSwwLDExKSxlLmFkZE1hbnkoaSgyOCwzMiksMTEsMCwxMSksZS5hZGRNYW55KHIsMTAsMCwxMCksZS5hZGQoMTI3LDEwLDAsMTApLGUuYWRkTWFueShpKDI4LDMyKSwxMCwwLDEwKSxlLmFkZE1hbnkoaSg0OCw2MCksMTAsOCwxMCksZS5hZGRNYW55KFs2MCw2MSw2Miw2M10sMTAsMCwxMSksZS5hZGRNYW55KGkoMzIsNDgpLDEwLDksMTIpLGUuYWRkTWFueShyLDEyLDAsMTIpLGUuYWRkKDEyNywxMiwwLDEyKSxlLmFkZE1hbnkoaSgyOCwzMiksMTIsMCwxMiksZS5hZGRNYW55KGkoMzIsNDgpLDEyLDksMTIpLGUuYWRkTWFueShpKDQ4LDY0KSwxMiwwLDExKSxlLmFkZE1hbnkoaSg2NCwxMjcpLDEyLDEyLDEzKSxlLmFkZE1hbnkoaSg2NCwxMjcpLDEwLDEyLDEzKSxlLmFkZE1hbnkoaSg2NCwxMjcpLDksMTIsMTMpLGUuYWRkTWFueShyLDEzLDEzLDEzKSxlLmFkZE1hbnkocywxMywxMywxMyksZS5hZGQoMTI3LDEzLDAsMTMpLGUuYWRkTWFueShbMjcsMTU2LDI0LDI2XSwxMywxNCwwKSxlLmFkZChoLDAsMiwwKSxlLmFkZChoLDgsNSw4KSxlLmFkZChoLDYsMCw2KSxlLmFkZChoLDExLDAsMTEpLGUuYWRkKGgsMTMsMTMsMTMpLGV9KCk7Y2xhc3MgYyBleHRlbmRzIHMuRGlzcG9zYWJsZXtjb25zdHJ1Y3RvcihlPXQuVlQ1MDBfVFJBTlNJVElPTl9UQUJMRSl7c3VwZXIoKSx0aGlzLl90cmFuc2l0aW9ucz1lLHRoaXMuX3BhcnNlU3RhY2s9e3N0YXRlOjAsaGFuZGxlcnM6W10saGFuZGxlclBvczowLHRyYW5zaXRpb246MCxjaHVua1BvczowfSx0aGlzLmluaXRpYWxTdGF0ZT0wLHRoaXMuY3VycmVudFN0YXRlPXRoaXMuaW5pdGlhbFN0YXRlLHRoaXMuX3BhcmFtcz1uZXcgci5QYXJhbXMsdGhpcy5fcGFyYW1zLmFkZFBhcmFtKDApLHRoaXMuX2NvbGxlY3Q9MCx0aGlzLnByZWNlZGluZ0NvZGVwb2ludD0wLHRoaXMuX3ByaW50SGFuZGxlckZiPShlLHQsaSk9Pnt9LHRoaXMuX2V4ZWN1dGVIYW5kbGVyRmI9ZT0+e30sdGhpcy5fY3NpSGFuZGxlckZiPShlLHQpPT57fSx0aGlzLl9lc2NIYW5kbGVyRmI9ZT0+e30sdGhpcy5fZXJyb3JIYW5kbGVyRmI9ZT0+ZSx0aGlzLl9wcmludEhhbmRsZXI9dGhpcy5fcHJpbnRIYW5kbGVyRmIsdGhpcy5fZXhlY3V0ZUhhbmRsZXJzPU9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5fY3NpSGFuZGxlcnM9T2JqZWN0LmNyZWF0ZShudWxsKSx0aGlzLl9lc2NIYW5kbGVycz1PYmplY3QuY3JlYXRlKG51bGwpLHRoaXMucmVnaXN0ZXIoKDAscy50b0Rpc3Bvc2FibGUpKCgoKT0+e3RoaXMuX2NzaUhhbmRsZXJzPU9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5fZXhlY3V0ZUhhbmRsZXJzPU9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5fZXNjSGFuZGxlcnM9T2JqZWN0LmNyZWF0ZShudWxsKX0pKSksdGhpcy5fb3NjUGFyc2VyPXRoaXMucmVnaXN0ZXIobmV3IG4uT3NjUGFyc2VyKSx0aGlzLl9kY3NQYXJzZXI9dGhpcy5yZWdpc3RlcihuZXcgby5EY3NQYXJzZXIpLHRoaXMuX2Vycm9ySGFuZGxlcj10aGlzLl9lcnJvckhhbmRsZXJGYix0aGlzLnJlZ2lzdGVyRXNjSGFuZGxlcih7ZmluYWw6XCJcXFxcXCJ9LCgoKT0+ITApKX1faWRlbnRpZmllcihlLHQ9WzY0LDEyNl0pe2xldCBpPTA7aWYoZS5wcmVmaXgpe2lmKGUucHJlZml4Lmxlbmd0aD4xKXRocm93IG5ldyBFcnJvcihcIm9ubHkgb25lIGJ5dGUgYXMgcHJlZml4IHN1cHBvcnRlZFwiKTtpZihpPWUucHJlZml4LmNoYXJDb2RlQXQoMCksaSYmNjA+aXx8aT42Myl0aHJvdyBuZXcgRXJyb3IoXCJwcmVmaXggbXVzdCBiZSBpbiByYW5nZSAweDNjIC4uIDB4M2ZcIil9aWYoZS5pbnRlcm1lZGlhdGVzKXtpZihlLmludGVybWVkaWF0ZXMubGVuZ3RoPjIpdGhyb3cgbmV3IEVycm9yKFwib25seSB0d28gYnl0ZXMgYXMgaW50ZXJtZWRpYXRlcyBhcmUgc3VwcG9ydGVkXCIpO2ZvcihsZXQgdD0wO3Q8ZS5pbnRlcm1lZGlhdGVzLmxlbmd0aDsrK3Qpe2NvbnN0IHM9ZS5pbnRlcm1lZGlhdGVzLmNoYXJDb2RlQXQodCk7aWYoMzI+c3x8cz40Nyl0aHJvdyBuZXcgRXJyb3IoXCJpbnRlcm1lZGlhdGUgbXVzdCBiZSBpbiByYW5nZSAweDIwIC4uIDB4MmZcIik7aTw8PTgsaXw9c319aWYoMSE9PWUuZmluYWwubGVuZ3RoKXRocm93IG5ldyBFcnJvcihcImZpbmFsIG11c3QgYmUgYSBzaW5nbGUgYnl0ZVwiKTtjb25zdCBzPWUuZmluYWwuY2hhckNvZGVBdCgwKTtpZih0WzBdPnN8fHM+dFsxXSl0aHJvdyBuZXcgRXJyb3IoYGZpbmFsIG11c3QgYmUgaW4gcmFuZ2UgJHt0WzBdfSAuLiAke3RbMV19YCk7cmV0dXJuIGk8PD04LGl8PXMsaX1pZGVudFRvU3RyaW5nKGUpe2NvbnN0IHQ9W107Zm9yKDtlOyl0LnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZSgyNTUmZSkpLGU+Pj04O3JldHVybiB0LnJldmVyc2UoKS5qb2luKFwiXCIpfXNldFByaW50SGFuZGxlcihlKXt0aGlzLl9wcmludEhhbmRsZXI9ZX1jbGVhclByaW50SGFuZGxlcigpe3RoaXMuX3ByaW50SGFuZGxlcj10aGlzLl9wcmludEhhbmRsZXJGYn1yZWdpc3RlckVzY0hhbmRsZXIoZSx0KXtjb25zdCBpPXRoaXMuX2lkZW50aWZpZXIoZSxbNDgsMTI2XSk7dm9pZCAwPT09dGhpcy5fZXNjSGFuZGxlcnNbaV0mJih0aGlzLl9lc2NIYW5kbGVyc1tpXT1bXSk7Y29uc3Qgcz10aGlzLl9lc2NIYW5kbGVyc1tpXTtyZXR1cm4gcy5wdXNoKHQpLHtkaXNwb3NlOigpPT57Y29uc3QgZT1zLmluZGV4T2YodCk7LTEhPT1lJiZzLnNwbGljZShlLDEpfX19Y2xlYXJFc2NIYW5kbGVyKGUpe3RoaXMuX2VzY0hhbmRsZXJzW3RoaXMuX2lkZW50aWZpZXIoZSxbNDgsMTI2XSldJiZkZWxldGUgdGhpcy5fZXNjSGFuZGxlcnNbdGhpcy5faWRlbnRpZmllcihlLFs0OCwxMjZdKV19c2V0RXNjSGFuZGxlckZhbGxiYWNrKGUpe3RoaXMuX2VzY0hhbmRsZXJGYj1lfXNldEV4ZWN1dGVIYW5kbGVyKGUsdCl7dGhpcy5fZXhlY3V0ZUhhbmRsZXJzW2UuY2hhckNvZGVBdCgwKV09dH1jbGVhckV4ZWN1dGVIYW5kbGVyKGUpe3RoaXMuX2V4ZWN1dGVIYW5kbGVyc1tlLmNoYXJDb2RlQXQoMCldJiZkZWxldGUgdGhpcy5fZXhlY3V0ZUhhbmRsZXJzW2UuY2hhckNvZGVBdCgwKV19c2V0RXhlY3V0ZUhhbmRsZXJGYWxsYmFjayhlKXt0aGlzLl9leGVjdXRlSGFuZGxlckZiPWV9cmVnaXN0ZXJDc2lIYW5kbGVyKGUsdCl7Y29uc3QgaT10aGlzLl9pZGVudGlmaWVyKGUpO3ZvaWQgMD09PXRoaXMuX2NzaUhhbmRsZXJzW2ldJiYodGhpcy5fY3NpSGFuZGxlcnNbaV09W10pO2NvbnN0IHM9dGhpcy5fY3NpSGFuZGxlcnNbaV07cmV0dXJuIHMucHVzaCh0KSx7ZGlzcG9zZTooKT0+e2NvbnN0IGU9cy5pbmRleE9mKHQpOy0xIT09ZSYmcy5zcGxpY2UoZSwxKX19fWNsZWFyQ3NpSGFuZGxlcihlKXt0aGlzLl9jc2lIYW5kbGVyc1t0aGlzLl9pZGVudGlmaWVyKGUpXSYmZGVsZXRlIHRoaXMuX2NzaUhhbmRsZXJzW3RoaXMuX2lkZW50aWZpZXIoZSldfXNldENzaUhhbmRsZXJGYWxsYmFjayhlKXt0aGlzLl9jc2lIYW5kbGVyRmI9ZX1yZWdpc3RlckRjc0hhbmRsZXIoZSx0KXtyZXR1cm4gdGhpcy5fZGNzUGFyc2VyLnJlZ2lzdGVySGFuZGxlcih0aGlzLl9pZGVudGlmaWVyKGUpLHQpfWNsZWFyRGNzSGFuZGxlcihlKXt0aGlzLl9kY3NQYXJzZXIuY2xlYXJIYW5kbGVyKHRoaXMuX2lkZW50aWZpZXIoZSkpfXNldERjc0hhbmRsZXJGYWxsYmFjayhlKXt0aGlzLl9kY3NQYXJzZXIuc2V0SGFuZGxlckZhbGxiYWNrKGUpfXJlZ2lzdGVyT3NjSGFuZGxlcihlLHQpe3JldHVybiB0aGlzLl9vc2NQYXJzZXIucmVnaXN0ZXJIYW5kbGVyKGUsdCl9Y2xlYXJPc2NIYW5kbGVyKGUpe3RoaXMuX29zY1BhcnNlci5jbGVhckhhbmRsZXIoZSl9c2V0T3NjSGFuZGxlckZhbGxiYWNrKGUpe3RoaXMuX29zY1BhcnNlci5zZXRIYW5kbGVyRmFsbGJhY2soZSl9c2V0RXJyb3JIYW5kbGVyKGUpe3RoaXMuX2Vycm9ySGFuZGxlcj1lfWNsZWFyRXJyb3JIYW5kbGVyKCl7dGhpcy5fZXJyb3JIYW5kbGVyPXRoaXMuX2Vycm9ySGFuZGxlckZifXJlc2V0KCl7dGhpcy5jdXJyZW50U3RhdGU9dGhpcy5pbml0aWFsU3RhdGUsdGhpcy5fb3NjUGFyc2VyLnJlc2V0KCksdGhpcy5fZGNzUGFyc2VyLnJlc2V0KCksdGhpcy5fcGFyYW1zLnJlc2V0KCksdGhpcy5fcGFyYW1zLmFkZFBhcmFtKDApLHRoaXMuX2NvbGxlY3Q9MCx0aGlzLnByZWNlZGluZ0NvZGVwb2ludD0wLDAhPT10aGlzLl9wYXJzZVN0YWNrLnN0YXRlJiYodGhpcy5fcGFyc2VTdGFjay5zdGF0ZT0yLHRoaXMuX3BhcnNlU3RhY2suaGFuZGxlcnM9W10pfV9wcmVzZXJ2ZVN0YWNrKGUsdCxpLHMscil7dGhpcy5fcGFyc2VTdGFjay5zdGF0ZT1lLHRoaXMuX3BhcnNlU3RhY2suaGFuZGxlcnM9dCx0aGlzLl9wYXJzZVN0YWNrLmhhbmRsZXJQb3M9aSx0aGlzLl9wYXJzZVN0YWNrLnRyYW5zaXRpb249cyx0aGlzLl9wYXJzZVN0YWNrLmNodW5rUG9zPXJ9cGFyc2UoZSx0LGkpe2xldCBzLHI9MCxuPTAsbz0wO2lmKHRoaXMuX3BhcnNlU3RhY2suc3RhdGUpaWYoMj09PXRoaXMuX3BhcnNlU3RhY2suc3RhdGUpdGhpcy5fcGFyc2VTdGFjay5zdGF0ZT0wLG89dGhpcy5fcGFyc2VTdGFjay5jaHVua1BvcysxO2Vsc2V7aWYodm9pZCAwPT09aXx8MT09PXRoaXMuX3BhcnNlU3RhY2suc3RhdGUpdGhyb3cgdGhpcy5fcGFyc2VTdGFjay5zdGF0ZT0xLG5ldyBFcnJvcihcImltcHJvcGVyIGNvbnRpbnVhdGlvbiBkdWUgdG8gcHJldmlvdXMgYXN5bmMgaGFuZGxlciwgZ2l2aW5nIHVwIHBhcnNpbmdcIik7Y29uc3QgdD10aGlzLl9wYXJzZVN0YWNrLmhhbmRsZXJzO2xldCBuPXRoaXMuX3BhcnNlU3RhY2suaGFuZGxlclBvcy0xO3N3aXRjaCh0aGlzLl9wYXJzZVN0YWNrLnN0YXRlKXtjYXNlIDM6aWYoITE9PT1pJiZuPi0xKWZvcig7bj49MCYmKHM9dFtuXSh0aGlzLl9wYXJhbXMpLCEwIT09cyk7bi0tKWlmKHMgaW5zdGFuY2VvZiBQcm9taXNlKXJldHVybiB0aGlzLl9wYXJzZVN0YWNrLmhhbmRsZXJQb3M9bixzO3RoaXMuX3BhcnNlU3RhY2suaGFuZGxlcnM9W107YnJlYWs7Y2FzZSA0OmlmKCExPT09aSYmbj4tMSlmb3IoO24+PTAmJihzPXRbbl0oKSwhMCE9PXMpO24tLSlpZihzIGluc3RhbmNlb2YgUHJvbWlzZSlyZXR1cm4gdGhpcy5fcGFyc2VTdGFjay5oYW5kbGVyUG9zPW4sczt0aGlzLl9wYXJzZVN0YWNrLmhhbmRsZXJzPVtdO2JyZWFrO2Nhc2UgNjppZihyPWVbdGhpcy5fcGFyc2VTdGFjay5jaHVua1Bvc10scz10aGlzLl9kY3NQYXJzZXIudW5ob29rKDI0IT09ciYmMjYhPT1yLGkpLHMpcmV0dXJuIHM7Mjc9PT1yJiYodGhpcy5fcGFyc2VTdGFjay50cmFuc2l0aW9ufD0xKSx0aGlzLl9wYXJhbXMucmVzZXQoKSx0aGlzLl9wYXJhbXMuYWRkUGFyYW0oMCksdGhpcy5fY29sbGVjdD0wO2JyZWFrO2Nhc2UgNTppZihyPWVbdGhpcy5fcGFyc2VTdGFjay5jaHVua1Bvc10scz10aGlzLl9vc2NQYXJzZXIuZW5kKDI0IT09ciYmMjYhPT1yLGkpLHMpcmV0dXJuIHM7Mjc9PT1yJiYodGhpcy5fcGFyc2VTdGFjay50cmFuc2l0aW9ufD0xKSx0aGlzLl9wYXJhbXMucmVzZXQoKSx0aGlzLl9wYXJhbXMuYWRkUGFyYW0oMCksdGhpcy5fY29sbGVjdD0wfXRoaXMuX3BhcnNlU3RhY2suc3RhdGU9MCxvPXRoaXMuX3BhcnNlU3RhY2suY2h1bmtQb3MrMSx0aGlzLnByZWNlZGluZ0NvZGVwb2ludD0wLHRoaXMuY3VycmVudFN0YXRlPTE1JnRoaXMuX3BhcnNlU3RhY2sudHJhbnNpdGlvbn1mb3IobGV0IGk9bztpPHQ7KytpKXtzd2l0Y2gocj1lW2ldLG49dGhpcy5fdHJhbnNpdGlvbnMudGFibGVbdGhpcy5jdXJyZW50U3RhdGU8PDh8KHI8MTYwP3I6aCldLG4+PjQpe2Nhc2UgMjpmb3IobGV0IHM9aSsxOzsrK3Mpe2lmKHM+PXR8fChyPWVbc10pPDMyfHxyPjEyNiYmcjxoKXt0aGlzLl9wcmludEhhbmRsZXIoZSxpLHMpLGk9cy0xO2JyZWFrfWlmKCsrcz49dHx8KHI9ZVtzXSk8MzJ8fHI+MTI2JiZyPGgpe3RoaXMuX3ByaW50SGFuZGxlcihlLGkscyksaT1zLTE7YnJlYWt9aWYoKytzPj10fHwocj1lW3NdKTwzMnx8cj4xMjYmJnI8aCl7dGhpcy5fcHJpbnRIYW5kbGVyKGUsaSxzKSxpPXMtMTticmVha31pZigrK3M+PXR8fChyPWVbc10pPDMyfHxyPjEyNiYmcjxoKXt0aGlzLl9wcmludEhhbmRsZXIoZSxpLHMpLGk9cy0xO2JyZWFrfX1icmVhaztjYXNlIDM6dGhpcy5fZXhlY3V0ZUhhbmRsZXJzW3JdP3RoaXMuX2V4ZWN1dGVIYW5kbGVyc1tyXSgpOnRoaXMuX2V4ZWN1dGVIYW5kbGVyRmIociksdGhpcy5wcmVjZWRpbmdDb2RlcG9pbnQ9MDticmVhaztjYXNlIDA6YnJlYWs7Y2FzZSAxOmlmKHRoaXMuX2Vycm9ySGFuZGxlcih7cG9zaXRpb246aSxjb2RlOnIsY3VycmVudFN0YXRlOnRoaXMuY3VycmVudFN0YXRlLGNvbGxlY3Q6dGhpcy5fY29sbGVjdCxwYXJhbXM6dGhpcy5fcGFyYW1zLGFib3J0OiExfSkuYWJvcnQpcmV0dXJuO2JyZWFrO2Nhc2UgNzpjb25zdCBvPXRoaXMuX2NzaUhhbmRsZXJzW3RoaXMuX2NvbGxlY3Q8PDh8cl07bGV0IGE9bz9vLmxlbmd0aC0xOi0xO2Zvcig7YT49MCYmKHM9b1thXSh0aGlzLl9wYXJhbXMpLCEwIT09cyk7YS0tKWlmKHMgaW5zdGFuY2VvZiBQcm9taXNlKXJldHVybiB0aGlzLl9wcmVzZXJ2ZVN0YWNrKDMsbyxhLG4saSksczthPDAmJnRoaXMuX2NzaUhhbmRsZXJGYih0aGlzLl9jb2xsZWN0PDw4fHIsdGhpcy5fcGFyYW1zKSx0aGlzLnByZWNlZGluZ0NvZGVwb2ludD0wO2JyZWFrO2Nhc2UgODpkb3tzd2l0Y2gocil7Y2FzZSA1OTp0aGlzLl9wYXJhbXMuYWRkUGFyYW0oMCk7YnJlYWs7Y2FzZSA1ODp0aGlzLl9wYXJhbXMuYWRkU3ViUGFyYW0oLTEpO2JyZWFrO2RlZmF1bHQ6dGhpcy5fcGFyYW1zLmFkZERpZ2l0KHItNDgpfX13aGlsZSgrK2k8dCYmKHI9ZVtpXSk+NDcmJnI8NjApO2ktLTticmVhaztjYXNlIDk6dGhpcy5fY29sbGVjdDw8PTgsdGhpcy5fY29sbGVjdHw9cjticmVhaztjYXNlIDEwOmNvbnN0IGM9dGhpcy5fZXNjSGFuZGxlcnNbdGhpcy5fY29sbGVjdDw8OHxyXTtsZXQgbD1jP2MubGVuZ3RoLTE6LTE7Zm9yKDtsPj0wJiYocz1jW2xdKCksITAhPT1zKTtsLS0paWYocyBpbnN0YW5jZW9mIFByb21pc2UpcmV0dXJuIHRoaXMuX3ByZXNlcnZlU3RhY2soNCxjLGwsbixpKSxzO2w8MCYmdGhpcy5fZXNjSGFuZGxlckZiKHRoaXMuX2NvbGxlY3Q8PDh8ciksdGhpcy5wcmVjZWRpbmdDb2RlcG9pbnQ9MDticmVhaztjYXNlIDExOnRoaXMuX3BhcmFtcy5yZXNldCgpLHRoaXMuX3BhcmFtcy5hZGRQYXJhbSgwKSx0aGlzLl9jb2xsZWN0PTA7YnJlYWs7Y2FzZSAxMjp0aGlzLl9kY3NQYXJzZXIuaG9vayh0aGlzLl9jb2xsZWN0PDw4fHIsdGhpcy5fcGFyYW1zKTticmVhaztjYXNlIDEzOmZvcihsZXQgcz1pKzE7OysrcylpZihzPj10fHwyND09PShyPWVbc10pfHwyNj09PXJ8fDI3PT09cnx8cj4xMjcmJnI8aCl7dGhpcy5fZGNzUGFyc2VyLnB1dChlLGkscyksaT1zLTE7YnJlYWt9YnJlYWs7Y2FzZSAxNDppZihzPXRoaXMuX2Rjc1BhcnNlci51bmhvb2soMjQhPT1yJiYyNiE9PXIpLHMpcmV0dXJuIHRoaXMuX3ByZXNlcnZlU3RhY2soNixbXSwwLG4saSksczsyNz09PXImJihufD0xKSx0aGlzLl9wYXJhbXMucmVzZXQoKSx0aGlzLl9wYXJhbXMuYWRkUGFyYW0oMCksdGhpcy5fY29sbGVjdD0wLHRoaXMucHJlY2VkaW5nQ29kZXBvaW50PTA7YnJlYWs7Y2FzZSA0OnRoaXMuX29zY1BhcnNlci5zdGFydCgpO2JyZWFrO2Nhc2UgNTpmb3IobGV0IHM9aSsxOztzKyspaWYocz49dHx8KHI9ZVtzXSk8MzJ8fHI+MTI3JiZyPGgpe3RoaXMuX29zY1BhcnNlci5wdXQoZSxpLHMpLGk9cy0xO2JyZWFrfWJyZWFrO2Nhc2UgNjppZihzPXRoaXMuX29zY1BhcnNlci5lbmQoMjQhPT1yJiYyNiE9PXIpLHMpcmV0dXJuIHRoaXMuX3ByZXNlcnZlU3RhY2soNSxbXSwwLG4saSksczsyNz09PXImJihufD0xKSx0aGlzLl9wYXJhbXMucmVzZXQoKSx0aGlzLl9wYXJhbXMuYWRkUGFyYW0oMCksdGhpcy5fY29sbGVjdD0wLHRoaXMucHJlY2VkaW5nQ29kZXBvaW50PTB9dGhpcy5jdXJyZW50U3RhdGU9MTUmbn19fXQuRXNjYXBlU2VxdWVuY2VQYXJzZXI9Y30sNjI0MjooZSx0LGkpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5Pc2NIYW5kbGVyPXQuT3NjUGFyc2VyPXZvaWQgMDtjb25zdCBzPWkoNTc3MCkscj1pKDQ4Miksbj1bXTt0Lk9zY1BhcnNlcj1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMuX3N0YXRlPTAsdGhpcy5fYWN0aXZlPW4sdGhpcy5faWQ9LTEsdGhpcy5faGFuZGxlcnM9T2JqZWN0LmNyZWF0ZShudWxsKSx0aGlzLl9oYW5kbGVyRmI9KCk9Pnt9LHRoaXMuX3N0YWNrPXtwYXVzZWQ6ITEsbG9vcFBvc2l0aW9uOjAsZmFsbFRocm91Z2g6ITF9fXJlZ2lzdGVySGFuZGxlcihlLHQpe3ZvaWQgMD09PXRoaXMuX2hhbmRsZXJzW2VdJiYodGhpcy5faGFuZGxlcnNbZV09W10pO2NvbnN0IGk9dGhpcy5faGFuZGxlcnNbZV07cmV0dXJuIGkucHVzaCh0KSx7ZGlzcG9zZTooKT0+e2NvbnN0IGU9aS5pbmRleE9mKHQpOy0xIT09ZSYmaS5zcGxpY2UoZSwxKX19fWNsZWFySGFuZGxlcihlKXt0aGlzLl9oYW5kbGVyc1tlXSYmZGVsZXRlIHRoaXMuX2hhbmRsZXJzW2VdfXNldEhhbmRsZXJGYWxsYmFjayhlKXt0aGlzLl9oYW5kbGVyRmI9ZX1kaXNwb3NlKCl7dGhpcy5faGFuZGxlcnM9T2JqZWN0LmNyZWF0ZShudWxsKSx0aGlzLl9oYW5kbGVyRmI9KCk9Pnt9LHRoaXMuX2FjdGl2ZT1ufXJlc2V0KCl7aWYoMj09PXRoaXMuX3N0YXRlKWZvcihsZXQgZT10aGlzLl9zdGFjay5wYXVzZWQ/dGhpcy5fc3RhY2subG9vcFBvc2l0aW9uLTE6dGhpcy5fYWN0aXZlLmxlbmd0aC0xO2U+PTA7LS1lKXRoaXMuX2FjdGl2ZVtlXS5lbmQoITEpO3RoaXMuX3N0YWNrLnBhdXNlZD0hMSx0aGlzLl9hY3RpdmU9bix0aGlzLl9pZD0tMSx0aGlzLl9zdGF0ZT0wfV9zdGFydCgpe2lmKHRoaXMuX2FjdGl2ZT10aGlzLl9oYW5kbGVyc1t0aGlzLl9pZF18fG4sdGhpcy5fYWN0aXZlLmxlbmd0aClmb3IobGV0IGU9dGhpcy5fYWN0aXZlLmxlbmd0aC0xO2U+PTA7ZS0tKXRoaXMuX2FjdGl2ZVtlXS5zdGFydCgpO2Vsc2UgdGhpcy5faGFuZGxlckZiKHRoaXMuX2lkLFwiU1RBUlRcIil9X3B1dChlLHQsaSl7aWYodGhpcy5fYWN0aXZlLmxlbmd0aClmb3IobGV0IHM9dGhpcy5fYWN0aXZlLmxlbmd0aC0xO3M+PTA7cy0tKXRoaXMuX2FjdGl2ZVtzXS5wdXQoZSx0LGkpO2Vsc2UgdGhpcy5faGFuZGxlckZiKHRoaXMuX2lkLFwiUFVUXCIsKDAsci51dGYzMlRvU3RyaW5nKShlLHQsaSkpfXN0YXJ0KCl7dGhpcy5yZXNldCgpLHRoaXMuX3N0YXRlPTF9cHV0KGUsdCxpKXtpZigzIT09dGhpcy5fc3RhdGUpe2lmKDE9PT10aGlzLl9zdGF0ZSlmb3IoO3Q8aTspe2NvbnN0IGk9ZVt0KytdO2lmKDU5PT09aSl7dGhpcy5fc3RhdGU9Mix0aGlzLl9zdGFydCgpO2JyZWFrfWlmKGk8NDh8fDU3PGkpcmV0dXJuIHZvaWQodGhpcy5fc3RhdGU9Myk7LTE9PT10aGlzLl9pZCYmKHRoaXMuX2lkPTApLHRoaXMuX2lkPTEwKnRoaXMuX2lkK2ktNDh9Mj09PXRoaXMuX3N0YXRlJiZpLXQ+MCYmdGhpcy5fcHV0KGUsdCxpKX19ZW5kKGUsdD0hMCl7aWYoMCE9PXRoaXMuX3N0YXRlKXtpZigzIT09dGhpcy5fc3RhdGUpaWYoMT09PXRoaXMuX3N0YXRlJiZ0aGlzLl9zdGFydCgpLHRoaXMuX2FjdGl2ZS5sZW5ndGgpe2xldCBpPSExLHM9dGhpcy5fYWN0aXZlLmxlbmd0aC0xLHI9ITE7aWYodGhpcy5fc3RhY2sucGF1c2VkJiYocz10aGlzLl9zdGFjay5sb29wUG9zaXRpb24tMSxpPXQscj10aGlzLl9zdGFjay5mYWxsVGhyb3VnaCx0aGlzLl9zdGFjay5wYXVzZWQ9ITEpLCFyJiYhMT09PWkpe2Zvcig7cz49MCYmKGk9dGhpcy5fYWN0aXZlW3NdLmVuZChlKSwhMCE9PWkpO3MtLSlpZihpIGluc3RhbmNlb2YgUHJvbWlzZSlyZXR1cm4gdGhpcy5fc3RhY2sucGF1c2VkPSEwLHRoaXMuX3N0YWNrLmxvb3BQb3NpdGlvbj1zLHRoaXMuX3N0YWNrLmZhbGxUaHJvdWdoPSExLGk7cy0tfWZvcig7cz49MDtzLS0paWYoaT10aGlzLl9hY3RpdmVbc10uZW5kKCExKSxpIGluc3RhbmNlb2YgUHJvbWlzZSlyZXR1cm4gdGhpcy5fc3RhY2sucGF1c2VkPSEwLHRoaXMuX3N0YWNrLmxvb3BQb3NpdGlvbj1zLHRoaXMuX3N0YWNrLmZhbGxUaHJvdWdoPSEwLGl9ZWxzZSB0aGlzLl9oYW5kbGVyRmIodGhpcy5faWQsXCJFTkRcIixlKTt0aGlzLl9hY3RpdmU9bix0aGlzLl9pZD0tMSx0aGlzLl9zdGF0ZT0wfX19LHQuT3NjSGFuZGxlcj1jbGFzc3tjb25zdHJ1Y3RvcihlKXt0aGlzLl9oYW5kbGVyPWUsdGhpcy5fZGF0YT1cIlwiLHRoaXMuX2hpdExpbWl0PSExfXN0YXJ0KCl7dGhpcy5fZGF0YT1cIlwiLHRoaXMuX2hpdExpbWl0PSExfXB1dChlLHQsaSl7dGhpcy5faGl0TGltaXR8fCh0aGlzLl9kYXRhKz0oMCxyLnV0ZjMyVG9TdHJpbmcpKGUsdCxpKSx0aGlzLl9kYXRhLmxlbmd0aD5zLlBBWUxPQURfTElNSVQmJih0aGlzLl9kYXRhPVwiXCIsdGhpcy5faGl0TGltaXQ9ITApKX1lbmQoZSl7bGV0IHQ9ITE7aWYodGhpcy5faGl0TGltaXQpdD0hMTtlbHNlIGlmKGUmJih0PXRoaXMuX2hhbmRsZXIodGhpcy5fZGF0YSksdCBpbnN0YW5jZW9mIFByb21pc2UpKXJldHVybiB0LnRoZW4oKGU9Pih0aGlzLl9kYXRhPVwiXCIsdGhpcy5faGl0TGltaXQ9ITEsZSkpKTtyZXR1cm4gdGhpcy5fZGF0YT1cIlwiLHRoaXMuX2hpdExpbWl0PSExLHR9fX0sODc0MjooZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuUGFyYW1zPXZvaWQgMDtjb25zdCBpPTIxNDc0ODM2NDc7Y2xhc3Mgc3tjb25zdHJ1Y3RvcihlPTMyLHQ9MzIpe2lmKHRoaXMubWF4TGVuZ3RoPWUsdGhpcy5tYXhTdWJQYXJhbXNMZW5ndGg9dCx0PjI1Nil0aHJvdyBuZXcgRXJyb3IoXCJtYXhTdWJQYXJhbXNMZW5ndGggbXVzdCBub3QgYmUgZ3JlYXRlciB0aGFuIDI1NlwiKTt0aGlzLnBhcmFtcz1uZXcgSW50MzJBcnJheShlKSx0aGlzLmxlbmd0aD0wLHRoaXMuX3N1YlBhcmFtcz1uZXcgSW50MzJBcnJheSh0KSx0aGlzLl9zdWJQYXJhbXNMZW5ndGg9MCx0aGlzLl9zdWJQYXJhbXNJZHg9bmV3IFVpbnQxNkFycmF5KGUpLHRoaXMuX3JlamVjdERpZ2l0cz0hMSx0aGlzLl9yZWplY3RTdWJEaWdpdHM9ITEsdGhpcy5fZGlnaXRJc1N1Yj0hMX1zdGF0aWMgZnJvbUFycmF5KGUpe2NvbnN0IHQ9bmV3IHM7aWYoIWUubGVuZ3RoKXJldHVybiB0O2ZvcihsZXQgaT1BcnJheS5pc0FycmF5KGVbMF0pPzE6MDtpPGUubGVuZ3RoOysraSl7Y29uc3Qgcz1lW2ldO2lmKEFycmF5LmlzQXJyYXkocykpZm9yKGxldCBlPTA7ZTxzLmxlbmd0aDsrK2UpdC5hZGRTdWJQYXJhbShzW2VdKTtlbHNlIHQuYWRkUGFyYW0ocyl9cmV0dXJuIHR9Y2xvbmUoKXtjb25zdCBlPW5ldyBzKHRoaXMubWF4TGVuZ3RoLHRoaXMubWF4U3ViUGFyYW1zTGVuZ3RoKTtyZXR1cm4gZS5wYXJhbXMuc2V0KHRoaXMucGFyYW1zKSxlLmxlbmd0aD10aGlzLmxlbmd0aCxlLl9zdWJQYXJhbXMuc2V0KHRoaXMuX3N1YlBhcmFtcyksZS5fc3ViUGFyYW1zTGVuZ3RoPXRoaXMuX3N1YlBhcmFtc0xlbmd0aCxlLl9zdWJQYXJhbXNJZHguc2V0KHRoaXMuX3N1YlBhcmFtc0lkeCksZS5fcmVqZWN0RGlnaXRzPXRoaXMuX3JlamVjdERpZ2l0cyxlLl9yZWplY3RTdWJEaWdpdHM9dGhpcy5fcmVqZWN0U3ViRGlnaXRzLGUuX2RpZ2l0SXNTdWI9dGhpcy5fZGlnaXRJc1N1YixlfXRvQXJyYXkoKXtjb25zdCBlPVtdO2ZvcihsZXQgdD0wO3Q8dGhpcy5sZW5ndGg7Kyt0KXtlLnB1c2godGhpcy5wYXJhbXNbdF0pO2NvbnN0IGk9dGhpcy5fc3ViUGFyYW1zSWR4W3RdPj44LHM9MjU1JnRoaXMuX3N1YlBhcmFtc0lkeFt0XTtzLWk+MCYmZS5wdXNoKEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHRoaXMuX3N1YlBhcmFtcyxpLHMpKX1yZXR1cm4gZX1yZXNldCgpe3RoaXMubGVuZ3RoPTAsdGhpcy5fc3ViUGFyYW1zTGVuZ3RoPTAsdGhpcy5fcmVqZWN0RGlnaXRzPSExLHRoaXMuX3JlamVjdFN1YkRpZ2l0cz0hMSx0aGlzLl9kaWdpdElzU3ViPSExfWFkZFBhcmFtKGUpe2lmKHRoaXMuX2RpZ2l0SXNTdWI9ITEsdGhpcy5sZW5ndGg+PXRoaXMubWF4TGVuZ3RoKXRoaXMuX3JlamVjdERpZ2l0cz0hMDtlbHNle2lmKGU8LTEpdGhyb3cgbmV3IEVycm9yKFwidmFsdWVzIGxlc3NlciB0aGFuIC0xIGFyZSBub3QgYWxsb3dlZFwiKTt0aGlzLl9zdWJQYXJhbXNJZHhbdGhpcy5sZW5ndGhdPXRoaXMuX3N1YlBhcmFtc0xlbmd0aDw8OHx0aGlzLl9zdWJQYXJhbXNMZW5ndGgsdGhpcy5wYXJhbXNbdGhpcy5sZW5ndGgrK109ZT5pP2k6ZX19YWRkU3ViUGFyYW0oZSl7aWYodGhpcy5fZGlnaXRJc1N1Yj0hMCx0aGlzLmxlbmd0aClpZih0aGlzLl9yZWplY3REaWdpdHN8fHRoaXMuX3N1YlBhcmFtc0xlbmd0aD49dGhpcy5tYXhTdWJQYXJhbXNMZW5ndGgpdGhpcy5fcmVqZWN0U3ViRGlnaXRzPSEwO2Vsc2V7aWYoZTwtMSl0aHJvdyBuZXcgRXJyb3IoXCJ2YWx1ZXMgbGVzc2VyIHRoYW4gLTEgYXJlIG5vdCBhbGxvd2VkXCIpO3RoaXMuX3N1YlBhcmFtc1t0aGlzLl9zdWJQYXJhbXNMZW5ndGgrK109ZT5pP2k6ZSx0aGlzLl9zdWJQYXJhbXNJZHhbdGhpcy5sZW5ndGgtMV0rK319aGFzU3ViUGFyYW1zKGUpe3JldHVybigyNTUmdGhpcy5fc3ViUGFyYW1zSWR4W2VdKS0odGhpcy5fc3ViUGFyYW1zSWR4W2VdPj44KT4wfWdldFN1YlBhcmFtcyhlKXtjb25zdCB0PXRoaXMuX3N1YlBhcmFtc0lkeFtlXT4+OCxpPTI1NSZ0aGlzLl9zdWJQYXJhbXNJZHhbZV07cmV0dXJuIGktdD4wP3RoaXMuX3N1YlBhcmFtcy5zdWJhcnJheSh0LGkpOm51bGx9Z2V0U3ViUGFyYW1zQWxsKCl7Y29uc3QgZT17fTtmb3IobGV0IHQ9MDt0PHRoaXMubGVuZ3RoOysrdCl7Y29uc3QgaT10aGlzLl9zdWJQYXJhbXNJZHhbdF0+Pjgscz0yNTUmdGhpcy5fc3ViUGFyYW1zSWR4W3RdO3MtaT4wJiYoZVt0XT10aGlzLl9zdWJQYXJhbXMuc2xpY2UoaSxzKSl9cmV0dXJuIGV9YWRkRGlnaXQoZSl7bGV0IHQ7aWYodGhpcy5fcmVqZWN0RGlnaXRzfHwhKHQ9dGhpcy5fZGlnaXRJc1N1Yj90aGlzLl9zdWJQYXJhbXNMZW5ndGg6dGhpcy5sZW5ndGgpfHx0aGlzLl9kaWdpdElzU3ViJiZ0aGlzLl9yZWplY3RTdWJEaWdpdHMpcmV0dXJuO2NvbnN0IHM9dGhpcy5fZGlnaXRJc1N1Yj90aGlzLl9zdWJQYXJhbXM6dGhpcy5wYXJhbXMscj1zW3QtMV07c1t0LTFdPX5yP01hdGgubWluKDEwKnIrZSxpKTplfX10LlBhcmFtcz1zfSw1NzQxOihlLHQpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5BZGRvbk1hbmFnZXI9dm9pZCAwLHQuQWRkb25NYW5hZ2VyPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5fYWRkb25zPVtdfWRpc3Bvc2UoKXtmb3IobGV0IGU9dGhpcy5fYWRkb25zLmxlbmd0aC0xO2U+PTA7ZS0tKXRoaXMuX2FkZG9uc1tlXS5pbnN0YW5jZS5kaXNwb3NlKCl9bG9hZEFkZG9uKGUsdCl7Y29uc3QgaT17aW5zdGFuY2U6dCxkaXNwb3NlOnQuZGlzcG9zZSxpc0Rpc3Bvc2VkOiExfTt0aGlzLl9hZGRvbnMucHVzaChpKSx0LmRpc3Bvc2U9KCk9PnRoaXMuX3dyYXBwZWRBZGRvbkRpc3Bvc2UoaSksdC5hY3RpdmF0ZShlKX1fd3JhcHBlZEFkZG9uRGlzcG9zZShlKXtpZihlLmlzRGlzcG9zZWQpcmV0dXJuO2xldCB0PS0xO2ZvcihsZXQgaT0wO2k8dGhpcy5fYWRkb25zLmxlbmd0aDtpKyspaWYodGhpcy5fYWRkb25zW2ldPT09ZSl7dD1pO2JyZWFrfWlmKC0xPT09dCl0aHJvdyBuZXcgRXJyb3IoXCJDb3VsZCBub3QgZGlzcG9zZSBhbiBhZGRvbiB0aGF0IGhhcyBub3QgYmVlbiBsb2FkZWRcIik7ZS5pc0Rpc3Bvc2VkPSEwLGUuZGlzcG9zZS5hcHBseShlLmluc3RhbmNlKSx0aGlzLl9hZGRvbnMuc3BsaWNlKHQsMSl9fX0sODc3MTooZSx0LGkpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5CdWZmZXJBcGlWaWV3PXZvaWQgMDtjb25zdCBzPWkoMzc4NSkscj1pKDUxMSk7dC5CdWZmZXJBcGlWaWV3PWNsYXNze2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5fYnVmZmVyPWUsdGhpcy50eXBlPXR9aW5pdChlKXtyZXR1cm4gdGhpcy5fYnVmZmVyPWUsdGhpc31nZXQgY3Vyc29yWSgpe3JldHVybiB0aGlzLl9idWZmZXIueX1nZXQgY3Vyc29yWCgpe3JldHVybiB0aGlzLl9idWZmZXIueH1nZXQgdmlld3BvcnRZKCl7cmV0dXJuIHRoaXMuX2J1ZmZlci55ZGlzcH1nZXQgYmFzZVkoKXtyZXR1cm4gdGhpcy5fYnVmZmVyLnliYXNlfWdldCBsZW5ndGgoKXtyZXR1cm4gdGhpcy5fYnVmZmVyLmxpbmVzLmxlbmd0aH1nZXRMaW5lKGUpe2NvbnN0IHQ9dGhpcy5fYnVmZmVyLmxpbmVzLmdldChlKTtpZih0KXJldHVybiBuZXcgcy5CdWZmZXJMaW5lQXBpVmlldyh0KX1nZXROdWxsQ2VsbCgpe3JldHVybiBuZXcgci5DZWxsRGF0YX19fSwzNzg1OihlLHQsaSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkJ1ZmZlckxpbmVBcGlWaWV3PXZvaWQgMDtjb25zdCBzPWkoNTExKTt0LkJ1ZmZlckxpbmVBcGlWaWV3PWNsYXNze2NvbnN0cnVjdG9yKGUpe3RoaXMuX2xpbmU9ZX1nZXQgaXNXcmFwcGVkKCl7cmV0dXJuIHRoaXMuX2xpbmUuaXNXcmFwcGVkfWdldCBsZW5ndGgoKXtyZXR1cm4gdGhpcy5fbGluZS5sZW5ndGh9Z2V0Q2VsbChlLHQpe2lmKCEoZTwwfHxlPj10aGlzLl9saW5lLmxlbmd0aCkpcmV0dXJuIHQ/KHRoaXMuX2xpbmUubG9hZENlbGwoZSx0KSx0KTp0aGlzLl9saW5lLmxvYWRDZWxsKGUsbmV3IHMuQ2VsbERhdGEpfXRyYW5zbGF0ZVRvU3RyaW5nKGUsdCxpKXtyZXR1cm4gdGhpcy5fbGluZS50cmFuc2xhdGVUb1N0cmluZyhlLHQsaSl9fX0sODI4NTooZSx0LGkpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5CdWZmZXJOYW1lc3BhY2VBcGk9dm9pZCAwO2NvbnN0IHM9aSg4NzcxKSxyPWkoODQ2MCk7dC5CdWZmZXJOYW1lc3BhY2VBcGk9Y2xhc3N7Y29uc3RydWN0b3IoZSl7dGhpcy5fY29yZT1lLHRoaXMuX29uQnVmZmVyQ2hhbmdlPW5ldyByLkV2ZW50RW1pdHRlcix0aGlzLm9uQnVmZmVyQ2hhbmdlPXRoaXMuX29uQnVmZmVyQ2hhbmdlLmV2ZW50LHRoaXMuX25vcm1hbD1uZXcgcy5CdWZmZXJBcGlWaWV3KHRoaXMuX2NvcmUuYnVmZmVycy5ub3JtYWwsXCJub3JtYWxcIiksdGhpcy5fYWx0ZXJuYXRlPW5ldyBzLkJ1ZmZlckFwaVZpZXcodGhpcy5fY29yZS5idWZmZXJzLmFsdCxcImFsdGVybmF0ZVwiKSx0aGlzLl9jb3JlLmJ1ZmZlcnMub25CdWZmZXJBY3RpdmF0ZSgoKCk9PnRoaXMuX29uQnVmZmVyQ2hhbmdlLmZpcmUodGhpcy5hY3RpdmUpKSl9Z2V0IGFjdGl2ZSgpe2lmKHRoaXMuX2NvcmUuYnVmZmVycy5hY3RpdmU9PT10aGlzLl9jb3JlLmJ1ZmZlcnMubm9ybWFsKXJldHVybiB0aGlzLm5vcm1hbDtpZih0aGlzLl9jb3JlLmJ1ZmZlcnMuYWN0aXZlPT09dGhpcy5fY29yZS5idWZmZXJzLmFsdClyZXR1cm4gdGhpcy5hbHRlcm5hdGU7dGhyb3cgbmV3IEVycm9yKFwiQWN0aXZlIGJ1ZmZlciBpcyBuZWl0aGVyIG5vcm1hbCBub3IgYWx0ZXJuYXRlXCIpfWdldCBub3JtYWwoKXtyZXR1cm4gdGhpcy5fbm9ybWFsLmluaXQodGhpcy5fY29yZS5idWZmZXJzLm5vcm1hbCl9Z2V0IGFsdGVybmF0ZSgpe3JldHVybiB0aGlzLl9hbHRlcm5hdGUuaW5pdCh0aGlzLl9jb3JlLmJ1ZmZlcnMuYWx0KX19fSw3OTc1OihlLHQpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5QYXJzZXJBcGk9dm9pZCAwLHQuUGFyc2VyQXBpPWNsYXNze2NvbnN0cnVjdG9yKGUpe3RoaXMuX2NvcmU9ZX1yZWdpc3RlckNzaUhhbmRsZXIoZSx0KXtyZXR1cm4gdGhpcy5fY29yZS5yZWdpc3RlckNzaUhhbmRsZXIoZSwoZT0+dChlLnRvQXJyYXkoKSkpKX1hZGRDc2lIYW5kbGVyKGUsdCl7cmV0dXJuIHRoaXMucmVnaXN0ZXJDc2lIYW5kbGVyKGUsdCl9cmVnaXN0ZXJEY3NIYW5kbGVyKGUsdCl7cmV0dXJuIHRoaXMuX2NvcmUucmVnaXN0ZXJEY3NIYW5kbGVyKGUsKChlLGkpPT50KGUsaS50b0FycmF5KCkpKSl9YWRkRGNzSGFuZGxlcihlLHQpe3JldHVybiB0aGlzLnJlZ2lzdGVyRGNzSGFuZGxlcihlLHQpfXJlZ2lzdGVyRXNjSGFuZGxlcihlLHQpe3JldHVybiB0aGlzLl9jb3JlLnJlZ2lzdGVyRXNjSGFuZGxlcihlLHQpfWFkZEVzY0hhbmRsZXIoZSx0KXtyZXR1cm4gdGhpcy5yZWdpc3RlckVzY0hhbmRsZXIoZSx0KX1yZWdpc3Rlck9zY0hhbmRsZXIoZSx0KXtyZXR1cm4gdGhpcy5fY29yZS5yZWdpc3Rlck9zY0hhbmRsZXIoZSx0KX1hZGRPc2NIYW5kbGVyKGUsdCl7cmV0dXJuIHRoaXMucmVnaXN0ZXJPc2NIYW5kbGVyKGUsdCl9fX0sNzA5MDooZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuVW5pY29kZUFwaT12b2lkIDAsdC5Vbmljb2RlQXBpPWNsYXNze2NvbnN0cnVjdG9yKGUpe3RoaXMuX2NvcmU9ZX1yZWdpc3RlcihlKXt0aGlzLl9jb3JlLnVuaWNvZGVTZXJ2aWNlLnJlZ2lzdGVyKGUpfWdldCB2ZXJzaW9ucygpe3JldHVybiB0aGlzLl9jb3JlLnVuaWNvZGVTZXJ2aWNlLnZlcnNpb25zfWdldCBhY3RpdmVWZXJzaW9uKCl7cmV0dXJuIHRoaXMuX2NvcmUudW5pY29kZVNlcnZpY2UuYWN0aXZlVmVyc2lvbn1zZXQgYWN0aXZlVmVyc2lvbihlKXt0aGlzLl9jb3JlLnVuaWNvZGVTZXJ2aWNlLmFjdGl2ZVZlcnNpb249ZX19fSw3NDQ6ZnVuY3Rpb24oZSx0LGkpe3ZhciBzPXRoaXMmJnRoaXMuX19kZWNvcmF0ZXx8ZnVuY3Rpb24oZSx0LGkscyl7dmFyIHIsbj1hcmd1bWVudHMubGVuZ3RoLG89bjwzP3Q6bnVsbD09PXM/cz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsaSk6cztpZihcIm9iamVjdFwiPT10eXBlb2YgUmVmbGVjdCYmXCJmdW5jdGlvblwiPT10eXBlb2YgUmVmbGVjdC5kZWNvcmF0ZSlvPVJlZmxlY3QuZGVjb3JhdGUoZSx0LGkscyk7ZWxzZSBmb3IodmFyIGE9ZS5sZW5ndGgtMTthPj0wO2EtLSkocj1lW2FdKSYmKG89KG48Mz9yKG8pOm4+Mz9yKHQsaSxvKTpyKHQsaSkpfHxvKTtyZXR1cm4gbj4zJiZvJiZPYmplY3QuZGVmaW5lUHJvcGVydHkodCxpLG8pLG99LHI9dGhpcyYmdGhpcy5fX3BhcmFtfHxmdW5jdGlvbihlLHQpe3JldHVybiBmdW5jdGlvbihpLHMpe3QoaSxzLGUpfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5CdWZmZXJTZXJ2aWNlPXQuTUlOSU1VTV9ST1dTPXQuTUlOSU1VTV9DT0xTPXZvaWQgMDtjb25zdCBuPWkoMjU4NSksbz1pKDUyOTUpLGE9aSg4NDYwKSxoPWkoODQ0KTt0Lk1JTklNVU1fQ09MUz0yLHQuTUlOSU1VTV9ST1dTPTE7bGV0IGM9Y2xhc3MgZXh0ZW5kcyBoLkRpc3Bvc2FibGV7Y29uc3RydWN0b3IoZSl7c3VwZXIoKSx0aGlzLmlzVXNlclNjcm9sbGluZz0hMSx0aGlzLl9vblJlc2l6ZT10aGlzLnJlZ2lzdGVyKG5ldyBhLkV2ZW50RW1pdHRlciksdGhpcy5vblJlc2l6ZT10aGlzLl9vblJlc2l6ZS5ldmVudCx0aGlzLl9vblNjcm9sbD10aGlzLnJlZ2lzdGVyKG5ldyBhLkV2ZW50RW1pdHRlciksdGhpcy5vblNjcm9sbD10aGlzLl9vblNjcm9sbC5ldmVudCx0aGlzLmNvbHM9TWF0aC5tYXgoZS5yYXdPcHRpb25zLmNvbHN8fDAsdC5NSU5JTVVNX0NPTFMpLHRoaXMucm93cz1NYXRoLm1heChlLnJhd09wdGlvbnMucm93c3x8MCx0Lk1JTklNVU1fUk9XUyksdGhpcy5idWZmZXJzPXRoaXMucmVnaXN0ZXIobmV3IG8uQnVmZmVyU2V0KGUsdGhpcykpfWdldCBidWZmZXIoKXtyZXR1cm4gdGhpcy5idWZmZXJzLmFjdGl2ZX1yZXNpemUoZSx0KXt0aGlzLmNvbHM9ZSx0aGlzLnJvd3M9dCx0aGlzLmJ1ZmZlcnMucmVzaXplKGUsdCksdGhpcy5fb25SZXNpemUuZmlyZSh7Y29sczplLHJvd3M6dH0pfXJlc2V0KCl7dGhpcy5idWZmZXJzLnJlc2V0KCksdGhpcy5pc1VzZXJTY3JvbGxpbmc9ITF9c2Nyb2xsKGUsdD0hMSl7Y29uc3QgaT10aGlzLmJ1ZmZlcjtsZXQgcztzPXRoaXMuX2NhY2hlZEJsYW5rTGluZSxzJiZzLmxlbmd0aD09PXRoaXMuY29scyYmcy5nZXRGZygwKT09PWUuZmcmJnMuZ2V0QmcoMCk9PT1lLmJnfHwocz1pLmdldEJsYW5rTGluZShlLHQpLHRoaXMuX2NhY2hlZEJsYW5rTGluZT1zKSxzLmlzV3JhcHBlZD10O2NvbnN0IHI9aS55YmFzZStpLnNjcm9sbFRvcCxuPWkueWJhc2UraS5zY3JvbGxCb3R0b207aWYoMD09PWkuc2Nyb2xsVG9wKXtjb25zdCBlPWkubGluZXMuaXNGdWxsO249PT1pLmxpbmVzLmxlbmd0aC0xP2U/aS5saW5lcy5yZWN5Y2xlKCkuY29weUZyb20ocyk6aS5saW5lcy5wdXNoKHMuY2xvbmUoKSk6aS5saW5lcy5zcGxpY2UobisxLDAscy5jbG9uZSgpKSxlP3RoaXMuaXNVc2VyU2Nyb2xsaW5nJiYoaS55ZGlzcD1NYXRoLm1heChpLnlkaXNwLTEsMCkpOihpLnliYXNlKyssdGhpcy5pc1VzZXJTY3JvbGxpbmd8fGkueWRpc3ArKyl9ZWxzZXtjb25zdCBlPW4tcisxO2kubGluZXMuc2hpZnRFbGVtZW50cyhyKzEsZS0xLC0xKSxpLmxpbmVzLnNldChuLHMuY2xvbmUoKSl9dGhpcy5pc1VzZXJTY3JvbGxpbmd8fChpLnlkaXNwPWkueWJhc2UpLHRoaXMuX29uU2Nyb2xsLmZpcmUoaS55ZGlzcCl9c2Nyb2xsTGluZXMoZSx0LGkpe2NvbnN0IHM9dGhpcy5idWZmZXI7aWYoZTwwKXtpZigwPT09cy55ZGlzcClyZXR1cm47dGhpcy5pc1VzZXJTY3JvbGxpbmc9ITB9ZWxzZSBlK3MueWRpc3A+PXMueWJhc2UmJih0aGlzLmlzVXNlclNjcm9sbGluZz0hMSk7Y29uc3Qgcj1zLnlkaXNwO3MueWRpc3A9TWF0aC5tYXgoTWF0aC5taW4ocy55ZGlzcCtlLHMueWJhc2UpLDApLHIhPT1zLnlkaXNwJiYodHx8dGhpcy5fb25TY3JvbGwuZmlyZShzLnlkaXNwKSl9c2Nyb2xsUGFnZXMoZSl7dGhpcy5zY3JvbGxMaW5lcyhlKih0aGlzLnJvd3MtMSkpfXNjcm9sbFRvVG9wKCl7dGhpcy5zY3JvbGxMaW5lcygtdGhpcy5idWZmZXIueWRpc3ApfXNjcm9sbFRvQm90dG9tKCl7dGhpcy5zY3JvbGxMaW5lcyh0aGlzLmJ1ZmZlci55YmFzZS10aGlzLmJ1ZmZlci55ZGlzcCl9c2Nyb2xsVG9MaW5lKGUpe2NvbnN0IHQ9ZS10aGlzLmJ1ZmZlci55ZGlzcDswIT09dCYmdGhpcy5zY3JvbGxMaW5lcyh0KX19O2M9cyhbcigwLG4uSU9wdGlvbnNTZXJ2aWNlKV0sYyksdC5CdWZmZXJTZXJ2aWNlPWN9LDc5OTQ6KGUsdCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkNoYXJzZXRTZXJ2aWNlPXZvaWQgMCx0LkNoYXJzZXRTZXJ2aWNlPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5nbGV2ZWw9MCx0aGlzLl9jaGFyc2V0cz1bXX1yZXNldCgpe3RoaXMuY2hhcnNldD12b2lkIDAsdGhpcy5fY2hhcnNldHM9W10sdGhpcy5nbGV2ZWw9MH1zZXRnTGV2ZWwoZSl7dGhpcy5nbGV2ZWw9ZSx0aGlzLmNoYXJzZXQ9dGhpcy5fY2hhcnNldHNbZV19c2V0Z0NoYXJzZXQoZSx0KXt0aGlzLl9jaGFyc2V0c1tlXT10LHRoaXMuZ2xldmVsPT09ZSYmKHRoaXMuY2hhcnNldD10KX19fSwxNzUzOmZ1bmN0aW9uKGUsdCxpKXt2YXIgcz10aGlzJiZ0aGlzLl9fZGVjb3JhdGV8fGZ1bmN0aW9uKGUsdCxpLHMpe3ZhciByLG49YXJndW1lbnRzLmxlbmd0aCxvPW48Mz90Om51bGw9PT1zP3M9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LGkpOnM7aWYoXCJvYmplY3RcIj09dHlwZW9mIFJlZmxlY3QmJlwiZnVuY3Rpb25cIj09dHlwZW9mIFJlZmxlY3QuZGVjb3JhdGUpbz1SZWZsZWN0LmRlY29yYXRlKGUsdCxpLHMpO2Vsc2UgZm9yKHZhciBhPWUubGVuZ3RoLTE7YT49MDthLS0pKHI9ZVthXSkmJihvPShuPDM/cihvKTpuPjM/cih0LGksbyk6cih0LGkpKXx8byk7cmV0dXJuIG4+MyYmbyYmT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsaSxvKSxvfSxyPXRoaXMmJnRoaXMuX19wYXJhbXx8ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZnVuY3Rpb24oaSxzKXt0KGkscyxlKX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuQ29yZU1vdXNlU2VydmljZT12b2lkIDA7Y29uc3Qgbj1pKDI1ODUpLG89aSg4NDYwKSxhPWkoODQ0KSxoPXtOT05FOntldmVudHM6MCxyZXN0cmljdDooKT0+ITF9LFgxMDp7ZXZlbnRzOjEscmVzdHJpY3Q6ZT0+NCE9PWUuYnV0dG9uJiYxPT09ZS5hY3Rpb24mJihlLmN0cmw9ITEsZS5hbHQ9ITEsZS5zaGlmdD0hMSwhMCl9LFZUMjAwOntldmVudHM6MTkscmVzdHJpY3Q6ZT0+MzIhPT1lLmFjdGlvbn0sRFJBRzp7ZXZlbnRzOjIzLHJlc3RyaWN0OmU9PjMyIT09ZS5hY3Rpb258fDMhPT1lLmJ1dHRvbn0sQU5ZOntldmVudHM6MzEscmVzdHJpY3Q6ZT0+ITB9fTtmdW5jdGlvbiBjKGUsdCl7bGV0IGk9KGUuY3RybD8xNjowKXwoZS5zaGlmdD80OjApfChlLmFsdD84OjApO3JldHVybiA0PT09ZS5idXR0b24/KGl8PTY0LGl8PWUuYWN0aW9uKTooaXw9MyZlLmJ1dHRvbiw0JmUuYnV0dG9uJiYoaXw9NjQpLDgmZS5idXR0b24mJihpfD0xMjgpLDMyPT09ZS5hY3Rpb24/aXw9MzI6MCE9PWUuYWN0aW9ufHx0fHwoaXw9MykpLGl9Y29uc3QgbD1TdHJpbmcuZnJvbUNoYXJDb2RlLGQ9e0RFRkFVTFQ6ZT0+e2NvbnN0IHQ9W2MoZSwhMSkrMzIsZS5jb2wrMzIsZS5yb3crMzJdO3JldHVybiB0WzBdPjI1NXx8dFsxXT4yNTV8fHRbMl0+MjU1P1wiXCI6YFx1MDAxYltNJHtsKHRbMF0pfSR7bCh0WzFdKX0ke2wodFsyXSl9YH0sU0dSOmU9Pntjb25zdCB0PTA9PT1lLmFjdGlvbiYmNCE9PWUuYnV0dG9uP1wibVwiOlwiTVwiO3JldHVybmBcdTAwMWJbPCR7YyhlLCEwKX07JHtlLmNvbH07JHtlLnJvd30ke3R9YH0sU0dSX1BJWEVMUzplPT57Y29uc3QgdD0wPT09ZS5hY3Rpb24mJjQhPT1lLmJ1dHRvbj9cIm1cIjpcIk1cIjtyZXR1cm5gXHUwMDFiWzwke2MoZSwhMCl9OyR7ZS54fTske2UueX0ke3R9YH19O2xldCBfPWNsYXNzIGV4dGVuZHMgYS5EaXNwb3NhYmxle2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoKSx0aGlzLl9idWZmZXJTZXJ2aWNlPWUsdGhpcy5fY29yZVNlcnZpY2U9dCx0aGlzLl9wcm90b2NvbHM9e30sdGhpcy5fZW5jb2RpbmdzPXt9LHRoaXMuX2FjdGl2ZVByb3RvY29sPVwiXCIsdGhpcy5fYWN0aXZlRW5jb2Rpbmc9XCJcIix0aGlzLl9sYXN0RXZlbnQ9bnVsbCx0aGlzLl9vblByb3RvY29sQ2hhbmdlPXRoaXMucmVnaXN0ZXIobmV3IG8uRXZlbnRFbWl0dGVyKSx0aGlzLm9uUHJvdG9jb2xDaGFuZ2U9dGhpcy5fb25Qcm90b2NvbENoYW5nZS5ldmVudDtmb3IoY29uc3QgZSBvZiBPYmplY3Qua2V5cyhoKSl0aGlzLmFkZFByb3RvY29sKGUsaFtlXSk7Zm9yKGNvbnN0IGUgb2YgT2JqZWN0LmtleXMoZCkpdGhpcy5hZGRFbmNvZGluZyhlLGRbZV0pO3RoaXMucmVzZXQoKX1hZGRQcm90b2NvbChlLHQpe3RoaXMuX3Byb3RvY29sc1tlXT10fWFkZEVuY29kaW5nKGUsdCl7dGhpcy5fZW5jb2RpbmdzW2VdPXR9Z2V0IGFjdGl2ZVByb3RvY29sKCl7cmV0dXJuIHRoaXMuX2FjdGl2ZVByb3RvY29sfWdldCBhcmVNb3VzZUV2ZW50c0FjdGl2ZSgpe3JldHVybiAwIT09dGhpcy5fcHJvdG9jb2xzW3RoaXMuX2FjdGl2ZVByb3RvY29sXS5ldmVudHN9c2V0IGFjdGl2ZVByb3RvY29sKGUpe2lmKCF0aGlzLl9wcm90b2NvbHNbZV0pdGhyb3cgbmV3IEVycm9yKGB1bmtub3duIHByb3RvY29sIFwiJHtlfVwiYCk7dGhpcy5fYWN0aXZlUHJvdG9jb2w9ZSx0aGlzLl9vblByb3RvY29sQ2hhbmdlLmZpcmUodGhpcy5fcHJvdG9jb2xzW2VdLmV2ZW50cyl9Z2V0IGFjdGl2ZUVuY29kaW5nKCl7cmV0dXJuIHRoaXMuX2FjdGl2ZUVuY29kaW5nfXNldCBhY3RpdmVFbmNvZGluZyhlKXtpZighdGhpcy5fZW5jb2RpbmdzW2VdKXRocm93IG5ldyBFcnJvcihgdW5rbm93biBlbmNvZGluZyBcIiR7ZX1cImApO3RoaXMuX2FjdGl2ZUVuY29kaW5nPWV9cmVzZXQoKXt0aGlzLmFjdGl2ZVByb3RvY29sPVwiTk9ORVwiLHRoaXMuYWN0aXZlRW5jb2Rpbmc9XCJERUZBVUxUXCIsdGhpcy5fbGFzdEV2ZW50PW51bGx9dHJpZ2dlck1vdXNlRXZlbnQoZSl7aWYoZS5jb2w8MHx8ZS5jb2w+PXRoaXMuX2J1ZmZlclNlcnZpY2UuY29sc3x8ZS5yb3c8MHx8ZS5yb3c+PXRoaXMuX2J1ZmZlclNlcnZpY2Uucm93cylyZXR1cm4hMTtpZig0PT09ZS5idXR0b24mJjMyPT09ZS5hY3Rpb24pcmV0dXJuITE7aWYoMz09PWUuYnV0dG9uJiYzMiE9PWUuYWN0aW9uKXJldHVybiExO2lmKDQhPT1lLmJ1dHRvbiYmKDI9PT1lLmFjdGlvbnx8Mz09PWUuYWN0aW9uKSlyZXR1cm4hMTtpZihlLmNvbCsrLGUucm93KyssMzI9PT1lLmFjdGlvbiYmdGhpcy5fbGFzdEV2ZW50JiZ0aGlzLl9lcXVhbEV2ZW50cyh0aGlzLl9sYXN0RXZlbnQsZSxcIlNHUl9QSVhFTFNcIj09PXRoaXMuX2FjdGl2ZUVuY29kaW5nKSlyZXR1cm4hMTtpZighdGhpcy5fcHJvdG9jb2xzW3RoaXMuX2FjdGl2ZVByb3RvY29sXS5yZXN0cmljdChlKSlyZXR1cm4hMTtjb25zdCB0PXRoaXMuX2VuY29kaW5nc1t0aGlzLl9hY3RpdmVFbmNvZGluZ10oZSk7cmV0dXJuIHQmJihcIkRFRkFVTFRcIj09PXRoaXMuX2FjdGl2ZUVuY29kaW5nP3RoaXMuX2NvcmVTZXJ2aWNlLnRyaWdnZXJCaW5hcnlFdmVudCh0KTp0aGlzLl9jb3JlU2VydmljZS50cmlnZ2VyRGF0YUV2ZW50KHQsITApKSx0aGlzLl9sYXN0RXZlbnQ9ZSwhMH1leHBsYWluRXZlbnRzKGUpe3JldHVybntkb3duOiEhKDEmZSksdXA6ISEoMiZlKSxkcmFnOiEhKDQmZSksbW92ZTohISg4JmUpLHdoZWVsOiEhKDE2JmUpfX1fZXF1YWxFdmVudHMoZSx0LGkpe2lmKGkpe2lmKGUueCE9PXQueClyZXR1cm4hMTtpZihlLnkhPT10LnkpcmV0dXJuITF9ZWxzZXtpZihlLmNvbCE9PXQuY29sKXJldHVybiExO2lmKGUucm93IT09dC5yb3cpcmV0dXJuITF9cmV0dXJuIGUuYnV0dG9uPT09dC5idXR0b24mJmUuYWN0aW9uPT09dC5hY3Rpb24mJmUuY3RybD09PXQuY3RybCYmZS5hbHQ9PT10LmFsdCYmZS5zaGlmdD09PXQuc2hpZnR9fTtfPXMoW3IoMCxuLklCdWZmZXJTZXJ2aWNlKSxyKDEsbi5JQ29yZVNlcnZpY2UpXSxfKSx0LkNvcmVNb3VzZVNlcnZpY2U9X30sNjk3NTpmdW5jdGlvbihlLHQsaSl7dmFyIHM9dGhpcyYmdGhpcy5fX2RlY29yYXRlfHxmdW5jdGlvbihlLHQsaSxzKXt2YXIgcixuPWFyZ3VtZW50cy5sZW5ndGgsbz1uPDM/dDpudWxsPT09cz9zPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxpKTpzO2lmKFwib2JqZWN0XCI9PXR5cGVvZiBSZWZsZWN0JiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBSZWZsZWN0LmRlY29yYXRlKW89UmVmbGVjdC5kZWNvcmF0ZShlLHQsaSxzKTtlbHNlIGZvcih2YXIgYT1lLmxlbmd0aC0xO2E+PTA7YS0tKShyPWVbYV0pJiYobz0objwzP3Iobyk6bj4zP3IodCxpLG8pOnIodCxpKSl8fG8pO3JldHVybiBuPjMmJm8mJk9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGksbyksb30scj10aGlzJiZ0aGlzLl9fcGFyYW18fGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGkscyl7dChpLHMsZSl9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkNvcmVTZXJ2aWNlPXZvaWQgMDtjb25zdCBuPWkoMjU4NSksbz1pKDg0NjApLGE9aSgxNDM5KSxoPWkoODQ0KSxjPU9iamVjdC5mcmVlemUoe2luc2VydE1vZGU6ITF9KSxsPU9iamVjdC5mcmVlemUoe2FwcGxpY2F0aW9uQ3Vyc29yS2V5czohMSxhcHBsaWNhdGlvbktleXBhZDohMSxicmFja2V0ZWRQYXN0ZU1vZGU6ITEsb3JpZ2luOiExLHJldmVyc2VXcmFwYXJvdW5kOiExLHNlbmRGb2N1czohMSx3cmFwYXJvdW5kOiEwfSk7bGV0IGQ9Y2xhc3MgZXh0ZW5kcyBoLkRpc3Bvc2FibGV7Y29uc3RydWN0b3IoZSx0LGkpe3N1cGVyKCksdGhpcy5fYnVmZmVyU2VydmljZT1lLHRoaXMuX2xvZ1NlcnZpY2U9dCx0aGlzLl9vcHRpb25zU2VydmljZT1pLHRoaXMuaXNDdXJzb3JJbml0aWFsaXplZD0hMSx0aGlzLmlzQ3Vyc29ySGlkZGVuPSExLHRoaXMuX29uRGF0YT10aGlzLnJlZ2lzdGVyKG5ldyBvLkV2ZW50RW1pdHRlciksdGhpcy5vbkRhdGE9dGhpcy5fb25EYXRhLmV2ZW50LHRoaXMuX29uVXNlcklucHV0PXRoaXMucmVnaXN0ZXIobmV3IG8uRXZlbnRFbWl0dGVyKSx0aGlzLm9uVXNlcklucHV0PXRoaXMuX29uVXNlcklucHV0LmV2ZW50LHRoaXMuX29uQmluYXJ5PXRoaXMucmVnaXN0ZXIobmV3IG8uRXZlbnRFbWl0dGVyKSx0aGlzLm9uQmluYXJ5PXRoaXMuX29uQmluYXJ5LmV2ZW50LHRoaXMuX29uUmVxdWVzdFNjcm9sbFRvQm90dG9tPXRoaXMucmVnaXN0ZXIobmV3IG8uRXZlbnRFbWl0dGVyKSx0aGlzLm9uUmVxdWVzdFNjcm9sbFRvQm90dG9tPXRoaXMuX29uUmVxdWVzdFNjcm9sbFRvQm90dG9tLmV2ZW50LHRoaXMubW9kZXM9KDAsYS5jbG9uZSkoYyksdGhpcy5kZWNQcml2YXRlTW9kZXM9KDAsYS5jbG9uZSkobCl9cmVzZXQoKXt0aGlzLm1vZGVzPSgwLGEuY2xvbmUpKGMpLHRoaXMuZGVjUHJpdmF0ZU1vZGVzPSgwLGEuY2xvbmUpKGwpfXRyaWdnZXJEYXRhRXZlbnQoZSx0PSExKXtpZih0aGlzLl9vcHRpb25zU2VydmljZS5yYXdPcHRpb25zLmRpc2FibGVTdGRpbilyZXR1cm47Y29uc3QgaT10aGlzLl9idWZmZXJTZXJ2aWNlLmJ1ZmZlcjt0JiZ0aGlzLl9vcHRpb25zU2VydmljZS5yYXdPcHRpb25zLnNjcm9sbE9uVXNlcklucHV0JiZpLnliYXNlIT09aS55ZGlzcCYmdGhpcy5fb25SZXF1ZXN0U2Nyb2xsVG9Cb3R0b20uZmlyZSgpLHQmJnRoaXMuX29uVXNlcklucHV0LmZpcmUoKSx0aGlzLl9sb2dTZXJ2aWNlLmRlYnVnKGBzZW5kaW5nIGRhdGEgXCIke2V9XCJgLCgoKT0+ZS5zcGxpdChcIlwiKS5tYXAoKGU9PmUuY2hhckNvZGVBdCgwKSkpKSksdGhpcy5fb25EYXRhLmZpcmUoZSl9dHJpZ2dlckJpbmFyeUV2ZW50KGUpe3RoaXMuX29wdGlvbnNTZXJ2aWNlLnJhd09wdGlvbnMuZGlzYWJsZVN0ZGlufHwodGhpcy5fbG9nU2VydmljZS5kZWJ1Zyhgc2VuZGluZyBiaW5hcnkgXCIke2V9XCJgLCgoKT0+ZS5zcGxpdChcIlwiKS5tYXAoKGU9PmUuY2hhckNvZGVBdCgwKSkpKSksdGhpcy5fb25CaW5hcnkuZmlyZShlKSl9fTtkPXMoW3IoMCxuLklCdWZmZXJTZXJ2aWNlKSxyKDEsbi5JTG9nU2VydmljZSkscigyLG4uSU9wdGlvbnNTZXJ2aWNlKV0sZCksdC5Db3JlU2VydmljZT1kfSw5MDc0OihlLHQsaSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkRlY29yYXRpb25TZXJ2aWNlPXZvaWQgMDtjb25zdCBzPWkoODA1NSkscj1pKDg0NjApLG49aSg4NDQpLG89aSg2MTA2KTtsZXQgYT0wLGg9MDtjbGFzcyBjIGV4dGVuZHMgbi5EaXNwb3NhYmxle2NvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLl9kZWNvcmF0aW9ucz1uZXcgby5Tb3J0ZWRMaXN0KChlPT5udWxsPT1lP3ZvaWQgMDplLm1hcmtlci5saW5lKSksdGhpcy5fb25EZWNvcmF0aW9uUmVnaXN0ZXJlZD10aGlzLnJlZ2lzdGVyKG5ldyByLkV2ZW50RW1pdHRlciksdGhpcy5vbkRlY29yYXRpb25SZWdpc3RlcmVkPXRoaXMuX29uRGVjb3JhdGlvblJlZ2lzdGVyZWQuZXZlbnQsdGhpcy5fb25EZWNvcmF0aW9uUmVtb3ZlZD10aGlzLnJlZ2lzdGVyKG5ldyByLkV2ZW50RW1pdHRlciksdGhpcy5vbkRlY29yYXRpb25SZW1vdmVkPXRoaXMuX29uRGVjb3JhdGlvblJlbW92ZWQuZXZlbnQsdGhpcy5yZWdpc3RlcigoMCxuLnRvRGlzcG9zYWJsZSkoKCgpPT57Zm9yKGNvbnN0IGUgb2YgdGhpcy5fZGVjb3JhdGlvbnMudmFsdWVzKCkpdGhpcy5fb25EZWNvcmF0aW9uUmVtb3ZlZC5maXJlKGUpO3RoaXMucmVzZXQoKX0pKSl9Z2V0IGRlY29yYXRpb25zKCl7cmV0dXJuIHRoaXMuX2RlY29yYXRpb25zLnZhbHVlcygpfXJlZ2lzdGVyRGVjb3JhdGlvbihlKXtpZihlLm1hcmtlci5pc0Rpc3Bvc2VkKXJldHVybjtjb25zdCB0PW5ldyBsKGUpO2lmKHQpe2NvbnN0IGU9dC5tYXJrZXIub25EaXNwb3NlKCgoKT0+dC5kaXNwb3NlKCkpKTt0Lm9uRGlzcG9zZSgoKCk9Pnt0JiYodGhpcy5fZGVjb3JhdGlvbnMuZGVsZXRlKHQpJiZ0aGlzLl9vbkRlY29yYXRpb25SZW1vdmVkLmZpcmUodCksZS5kaXNwb3NlKCkpfSkpLHRoaXMuX2RlY29yYXRpb25zLmluc2VydCh0KSx0aGlzLl9vbkRlY29yYXRpb25SZWdpc3RlcmVkLmZpcmUodCl9cmV0dXJuIHR9cmVzZXQoKXtmb3IoY29uc3QgZSBvZiB0aGlzLl9kZWNvcmF0aW9ucy52YWx1ZXMoKSllLmRpc3Bvc2UoKTt0aGlzLl9kZWNvcmF0aW9ucy5jbGVhcigpfSpnZXREZWNvcmF0aW9uc0F0Q2VsbChlLHQsaSl7dmFyIHMscixuO2xldCBvPTAsYT0wO2Zvcihjb25zdCBoIG9mIHRoaXMuX2RlY29yYXRpb25zLmdldEtleUl0ZXJhdG9yKHQpKW89bnVsbCE9PShzPWgub3B0aW9ucy54KSYmdm9pZCAwIT09cz9zOjAsYT1vKyhudWxsIT09KHI9aC5vcHRpb25zLndpZHRoKSYmdm9pZCAwIT09cj9yOjEpLGU+PW8mJmU8YSYmKCFpfHwobnVsbCE9PShuPWgub3B0aW9ucy5sYXllcikmJnZvaWQgMCE9PW4/bjpcImJvdHRvbVwiKT09PWkpJiYoeWllbGQgaCl9Zm9yRWFjaERlY29yYXRpb25BdENlbGwoZSx0LGkscyl7dGhpcy5fZGVjb3JhdGlvbnMuZm9yRWFjaEJ5S2V5KHQsKHQ9Pnt2YXIgcixuLG87YT1udWxsIT09KHI9dC5vcHRpb25zLngpJiZ2b2lkIDAhPT1yP3I6MCxoPWErKG51bGwhPT0obj10Lm9wdGlvbnMud2lkdGgpJiZ2b2lkIDAhPT1uP246MSksZT49YSYmZTxoJiYoIWl8fChudWxsIT09KG89dC5vcHRpb25zLmxheWVyKSYmdm9pZCAwIT09bz9vOlwiYm90dG9tXCIpPT09aSkmJnModCl9KSl9ZGlzcG9zZSgpe2Zvcihjb25zdCBlIG9mIHRoaXMuX2RlY29yYXRpb25zLnZhbHVlcygpKXRoaXMuX29uRGVjb3JhdGlvblJlbW92ZWQuZmlyZShlKTt0aGlzLnJlc2V0KCl9fXQuRGVjb3JhdGlvblNlcnZpY2U9YztjbGFzcyBsIGV4dGVuZHMgbi5EaXNwb3NhYmxle2NvbnN0cnVjdG9yKGUpe3N1cGVyKCksdGhpcy5vcHRpb25zPWUsdGhpcy5vblJlbmRlckVtaXR0ZXI9dGhpcy5yZWdpc3RlcihuZXcgci5FdmVudEVtaXR0ZXIpLHRoaXMub25SZW5kZXI9dGhpcy5vblJlbmRlckVtaXR0ZXIuZXZlbnQsdGhpcy5fb25EaXNwb3NlPXRoaXMucmVnaXN0ZXIobmV3IHIuRXZlbnRFbWl0dGVyKSx0aGlzLm9uRGlzcG9zZT10aGlzLl9vbkRpc3Bvc2UuZXZlbnQsdGhpcy5fY2FjaGVkQmc9bnVsbCx0aGlzLl9jYWNoZWRGZz1udWxsLHRoaXMubWFya2VyPWUubWFya2VyLHRoaXMub3B0aW9ucy5vdmVydmlld1J1bGVyT3B0aW9ucyYmIXRoaXMub3B0aW9ucy5vdmVydmlld1J1bGVyT3B0aW9ucy5wb3NpdGlvbiYmKHRoaXMub3B0aW9ucy5vdmVydmlld1J1bGVyT3B0aW9ucy5wb3NpdGlvbj1cImZ1bGxcIil9Z2V0IGlzRGlzcG9zZWQoKXtyZXR1cm4gdGhpcy5faXNEaXNwb3NlZH1nZXQgYmFja2dyb3VuZENvbG9yUkdCKCl7cmV0dXJuIG51bGw9PT10aGlzLl9jYWNoZWRCZyYmKHRoaXMub3B0aW9ucy5iYWNrZ3JvdW5kQ29sb3I/dGhpcy5fY2FjaGVkQmc9cy5jc3MudG9Db2xvcih0aGlzLm9wdGlvbnMuYmFja2dyb3VuZENvbG9yKTp0aGlzLl9jYWNoZWRCZz12b2lkIDApLHRoaXMuX2NhY2hlZEJnfWdldCBmb3JlZ3JvdW5kQ29sb3JSR0IoKXtyZXR1cm4gbnVsbD09PXRoaXMuX2NhY2hlZEZnJiYodGhpcy5vcHRpb25zLmZvcmVncm91bmRDb2xvcj90aGlzLl9jYWNoZWRGZz1zLmNzcy50b0NvbG9yKHRoaXMub3B0aW9ucy5mb3JlZ3JvdW5kQ29sb3IpOnRoaXMuX2NhY2hlZEZnPXZvaWQgMCksdGhpcy5fY2FjaGVkRmd9ZGlzcG9zZSgpe3RoaXMuX29uRGlzcG9zZS5maXJlKCksc3VwZXIuZGlzcG9zZSgpfX19LDQzNDg6KGUsdCxpKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuSW5zdGFudGlhdGlvblNlcnZpY2U9dC5TZXJ2aWNlQ29sbGVjdGlvbj12b2lkIDA7Y29uc3Qgcz1pKDI1ODUpLHI9aSg4MzQzKTtjbGFzcyBue2NvbnN0cnVjdG9yKC4uLmUpe3RoaXMuX2VudHJpZXM9bmV3IE1hcDtmb3IoY29uc3RbdCxpXW9mIGUpdGhpcy5zZXQodCxpKX1zZXQoZSx0KXtjb25zdCBpPXRoaXMuX2VudHJpZXMuZ2V0KGUpO3JldHVybiB0aGlzLl9lbnRyaWVzLnNldChlLHQpLGl9Zm9yRWFjaChlKXtmb3IoY29uc3RbdCxpXW9mIHRoaXMuX2VudHJpZXMuZW50cmllcygpKWUodCxpKX1oYXMoZSl7cmV0dXJuIHRoaXMuX2VudHJpZXMuaGFzKGUpfWdldChlKXtyZXR1cm4gdGhpcy5fZW50cmllcy5nZXQoZSl9fXQuU2VydmljZUNvbGxlY3Rpb249bix0Lkluc3RhbnRpYXRpb25TZXJ2aWNlPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5fc2VydmljZXM9bmV3IG4sdGhpcy5fc2VydmljZXMuc2V0KHMuSUluc3RhbnRpYXRpb25TZXJ2aWNlLHRoaXMpfXNldFNlcnZpY2UoZSx0KXt0aGlzLl9zZXJ2aWNlcy5zZXQoZSx0KX1nZXRTZXJ2aWNlKGUpe3JldHVybiB0aGlzLl9zZXJ2aWNlcy5nZXQoZSl9Y3JlYXRlSW5zdGFuY2UoZSwuLi50KXtjb25zdCBpPSgwLHIuZ2V0U2VydmljZURlcGVuZGVuY2llcykoZSkuc29ydCgoKGUsdCk9PmUuaW5kZXgtdC5pbmRleCkpLHM9W107Zm9yKGNvbnN0IHQgb2YgaSl7Y29uc3QgaT10aGlzLl9zZXJ2aWNlcy5nZXQodC5pZCk7aWYoIWkpdGhyb3cgbmV3IEVycm9yKGBbY3JlYXRlSW5zdGFuY2VdICR7ZS5uYW1lfSBkZXBlbmRzIG9uIFVOS05PV04gc2VydmljZSAke3QuaWR9LmApO3MucHVzaChpKX1jb25zdCBuPWkubGVuZ3RoPjA/aVswXS5pbmRleDp0Lmxlbmd0aDtpZih0Lmxlbmd0aCE9PW4pdGhyb3cgbmV3IEVycm9yKGBbY3JlYXRlSW5zdGFuY2VdIEZpcnN0IHNlcnZpY2UgZGVwZW5kZW5jeSBvZiAke2UubmFtZX0gYXQgcG9zaXRpb24gJHtuKzF9IGNvbmZsaWN0cyB3aXRoICR7dC5sZW5ndGh9IHN0YXRpYyBhcmd1bWVudHNgKTtyZXR1cm4gbmV3IGUoLi4uWy4uLnQsLi4uc10pfX19LDc4NjY6ZnVuY3Rpb24oZSx0LGkpe3ZhciBzPXRoaXMmJnRoaXMuX19kZWNvcmF0ZXx8ZnVuY3Rpb24oZSx0LGkscyl7dmFyIHIsbj1hcmd1bWVudHMubGVuZ3RoLG89bjwzP3Q6bnVsbD09PXM/cz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsaSk6cztpZihcIm9iamVjdFwiPT10eXBlb2YgUmVmbGVjdCYmXCJmdW5jdGlvblwiPT10eXBlb2YgUmVmbGVjdC5kZWNvcmF0ZSlvPVJlZmxlY3QuZGVjb3JhdGUoZSx0LGkscyk7ZWxzZSBmb3IodmFyIGE9ZS5sZW5ndGgtMTthPj0wO2EtLSkocj1lW2FdKSYmKG89KG48Mz9yKG8pOm4+Mz9yKHQsaSxvKTpyKHQsaSkpfHxvKTtyZXR1cm4gbj4zJiZvJiZPYmplY3QuZGVmaW5lUHJvcGVydHkodCxpLG8pLG99LHI9dGhpcyYmdGhpcy5fX3BhcmFtfHxmdW5jdGlvbihlLHQpe3JldHVybiBmdW5jdGlvbihpLHMpe3QoaSxzLGUpfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5Mb2dTZXJ2aWNlPXZvaWQgMDtjb25zdCBuPWkoODQ0KSxvPWkoMjU4NSksYT17ZGVidWc6by5Mb2dMZXZlbEVudW0uREVCVUcsaW5mbzpvLkxvZ0xldmVsRW51bS5JTkZPLHdhcm46by5Mb2dMZXZlbEVudW0uV0FSTixlcnJvcjpvLkxvZ0xldmVsRW51bS5FUlJPUixvZmY6by5Mb2dMZXZlbEVudW0uT0ZGfTtsZXQgaD1jbGFzcyBleHRlbmRzIG4uRGlzcG9zYWJsZXtjb25zdHJ1Y3RvcihlKXtzdXBlcigpLHRoaXMuX29wdGlvbnNTZXJ2aWNlPWUsdGhpcy5sb2dMZXZlbD1vLkxvZ0xldmVsRW51bS5PRkYsdGhpcy5fdXBkYXRlTG9nTGV2ZWwoKSx0aGlzLnJlZ2lzdGVyKHRoaXMuX29wdGlvbnNTZXJ2aWNlLm9uU3BlY2lmaWNPcHRpb25DaGFuZ2UoXCJsb2dMZXZlbFwiLCgoKT0+dGhpcy5fdXBkYXRlTG9nTGV2ZWwoKSkpKX1fdXBkYXRlTG9nTGV2ZWwoKXt0aGlzLmxvZ0xldmVsPWFbdGhpcy5fb3B0aW9uc1NlcnZpY2UucmF3T3B0aW9ucy5sb2dMZXZlbF19X2V2YWxMYXp5T3B0aW9uYWxQYXJhbXMoZSl7Zm9yKGxldCB0PTA7dDxlLmxlbmd0aDt0KyspXCJmdW5jdGlvblwiPT10eXBlb2YgZVt0XSYmKGVbdF09ZVt0XSgpKX1fbG9nKGUsdCxpKXt0aGlzLl9ldmFsTGF6eU9wdGlvbmFsUGFyYW1zKGkpLGUuY2FsbChjb25zb2xlLFwieHRlcm0uanM6IFwiK3QsLi4uaSl9ZGVidWcoZSwuLi50KXt0aGlzLmxvZ0xldmVsPD1vLkxvZ0xldmVsRW51bS5ERUJVRyYmdGhpcy5fbG9nKGNvbnNvbGUubG9nLGUsdCl9aW5mbyhlLC4uLnQpe3RoaXMubG9nTGV2ZWw8PW8uTG9nTGV2ZWxFbnVtLklORk8mJnRoaXMuX2xvZyhjb25zb2xlLmluZm8sZSx0KX13YXJuKGUsLi4udCl7dGhpcy5sb2dMZXZlbDw9by5Mb2dMZXZlbEVudW0uV0FSTiYmdGhpcy5fbG9nKGNvbnNvbGUud2FybixlLHQpfWVycm9yKGUsLi4udCl7dGhpcy5sb2dMZXZlbDw9by5Mb2dMZXZlbEVudW0uRVJST1ImJnRoaXMuX2xvZyhjb25zb2xlLmVycm9yLGUsdCl9fTtoPXMoW3IoMCxvLklPcHRpb25zU2VydmljZSldLGgpLHQuTG9nU2VydmljZT1ofSw3MzAyOihlLHQsaSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0Lk9wdGlvbnNTZXJ2aWNlPXQuREVGQVVMVF9PUFRJT05TPXZvaWQgMDtjb25zdCBzPWkoODQ2MCkscj1pKDYxMTQpLG49aSg4NDQpO3QuREVGQVVMVF9PUFRJT05TPXtjb2xzOjgwLHJvd3M6MjQsY3Vyc29yQmxpbms6ITEsY3Vyc29yU3R5bGU6XCJibG9ja1wiLGN1cnNvcldpZHRoOjEsY3VzdG9tR2x5cGhzOiEwLGRyYXdCb2xkVGV4dEluQnJpZ2h0Q29sb3JzOiEwLGZhc3RTY3JvbGxNb2RpZmllcjpcImFsdFwiLGZhc3RTY3JvbGxTZW5zaXRpdml0eTo1LGZvbnRGYW1pbHk6XCJjb3VyaWVyLW5ldywgY291cmllciwgbW9ub3NwYWNlXCIsZm9udFNpemU6MTUsZm9udFdlaWdodDpcIm5vcm1hbFwiLGZvbnRXZWlnaHRCb2xkOlwiYm9sZFwiLGxpbmVIZWlnaHQ6MSxsZXR0ZXJTcGFjaW5nOjAsbGlua0hhbmRsZXI6bnVsbCxsb2dMZXZlbDpcImluZm9cIixzY3JvbGxiYWNrOjFlMyxzY3JvbGxPblVzZXJJbnB1dDohMCxzY3JvbGxTZW5zaXRpdml0eToxLHNjcmVlblJlYWRlck1vZGU6ITEsc21vb3RoU2Nyb2xsRHVyYXRpb246MCxtYWNPcHRpb25Jc01ldGE6ITEsbWFjT3B0aW9uQ2xpY2tGb3JjZXNTZWxlY3Rpb246ITEsbWluaW11bUNvbnRyYXN0UmF0aW86MSxkaXNhYmxlU3RkaW46ITEsYWxsb3dQcm9wb3NlZEFwaTohMSxhbGxvd1RyYW5zcGFyZW5jeTohMSx0YWJTdG9wV2lkdGg6OCx0aGVtZTp7fSxyaWdodENsaWNrU2VsZWN0c1dvcmQ6ci5pc01hYyx3aW5kb3dPcHRpb25zOnt9LHdpbmRvd3NNb2RlOiExLHdpbmRvd3NQdHk6e30sd29yZFNlcGFyYXRvcjpcIiAoKVtde30nLFxcXCJgXCIsYWx0Q2xpY2tNb3Zlc0N1cnNvcjohMCxjb252ZXJ0RW9sOiExLHRlcm1OYW1lOlwieHRlcm1cIixjYW5jZWxFdmVudHM6ITEsb3ZlcnZpZXdSdWxlcldpZHRoOjB9O2NvbnN0IG89W1wibm9ybWFsXCIsXCJib2xkXCIsXCIxMDBcIixcIjIwMFwiLFwiMzAwXCIsXCI0MDBcIixcIjUwMFwiLFwiNjAwXCIsXCI3MDBcIixcIjgwMFwiLFwiOTAwXCJdO2NsYXNzIGEgZXh0ZW5kcyBuLkRpc3Bvc2FibGV7Y29uc3RydWN0b3IoZSl7c3VwZXIoKSx0aGlzLl9vbk9wdGlvbkNoYW5nZT10aGlzLnJlZ2lzdGVyKG5ldyBzLkV2ZW50RW1pdHRlciksdGhpcy5vbk9wdGlvbkNoYW5nZT10aGlzLl9vbk9wdGlvbkNoYW5nZS5ldmVudDtjb25zdCBpPU9iamVjdC5hc3NpZ24oe30sdC5ERUZBVUxUX09QVElPTlMpO2Zvcihjb25zdCB0IGluIGUpaWYodCBpbiBpKXRyeXtjb25zdCBzPWVbdF07aVt0XT10aGlzLl9zYW5pdGl6ZUFuZFZhbGlkYXRlT3B0aW9uKHQscyl9Y2F0Y2goZSl7Y29uc29sZS5lcnJvcihlKX10aGlzLnJhd09wdGlvbnM9aSx0aGlzLm9wdGlvbnM9T2JqZWN0LmFzc2lnbih7fSxpKSx0aGlzLl9zZXR1cE9wdGlvbnMoKX1vblNwZWNpZmljT3B0aW9uQ2hhbmdlKGUsdCl7cmV0dXJuIHRoaXMub25PcHRpb25DaGFuZ2UoKGk9PntpPT09ZSYmdCh0aGlzLnJhd09wdGlvbnNbZV0pfSkpfW9uTXVsdGlwbGVPcHRpb25DaGFuZ2UoZSx0KXtyZXR1cm4gdGhpcy5vbk9wdGlvbkNoYW5nZSgoaT0+ey0xIT09ZS5pbmRleE9mKGkpJiZ0KCl9KSl9X3NldHVwT3B0aW9ucygpe2NvbnN0IGU9ZT0+e2lmKCEoZSBpbiB0LkRFRkFVTFRfT1BUSU9OUykpdGhyb3cgbmV3IEVycm9yKGBObyBvcHRpb24gd2l0aCBrZXkgXCIke2V9XCJgKTtyZXR1cm4gdGhpcy5yYXdPcHRpb25zW2VdfSxpPShlLGkpPT57aWYoIShlIGluIHQuREVGQVVMVF9PUFRJT05TKSl0aHJvdyBuZXcgRXJyb3IoYE5vIG9wdGlvbiB3aXRoIGtleSBcIiR7ZX1cImApO2k9dGhpcy5fc2FuaXRpemVBbmRWYWxpZGF0ZU9wdGlvbihlLGkpLHRoaXMucmF3T3B0aW9uc1tlXSE9PWkmJih0aGlzLnJhd09wdGlvbnNbZV09aSx0aGlzLl9vbk9wdGlvbkNoYW5nZS5maXJlKGUpKX07Zm9yKGNvbnN0IHQgaW4gdGhpcy5yYXdPcHRpb25zKXtjb25zdCBzPXtnZXQ6ZS5iaW5kKHRoaXMsdCksc2V0OmkuYmluZCh0aGlzLHQpfTtPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcy5vcHRpb25zLHQscyl9fV9zYW5pdGl6ZUFuZFZhbGlkYXRlT3B0aW9uKGUsaSl7c3dpdGNoKGUpe2Nhc2VcImN1cnNvclN0eWxlXCI6aWYoaXx8KGk9dC5ERUZBVUxUX09QVElPTlNbZV0pLCFmdW5jdGlvbihlKXtyZXR1cm5cImJsb2NrXCI9PT1lfHxcInVuZGVybGluZVwiPT09ZXx8XCJiYXJcIj09PWV9KGkpKXRocm93IG5ldyBFcnJvcihgXCIke2l9XCIgaXMgbm90IGEgdmFsaWQgdmFsdWUgZm9yICR7ZX1gKTticmVhaztjYXNlXCJ3b3JkU2VwYXJhdG9yXCI6aXx8KGk9dC5ERUZBVUxUX09QVElPTlNbZV0pO2JyZWFrO2Nhc2VcImZvbnRXZWlnaHRcIjpjYXNlXCJmb250V2VpZ2h0Qm9sZFwiOmlmKFwibnVtYmVyXCI9PXR5cGVvZiBpJiYxPD1pJiZpPD0xZTMpYnJlYWs7aT1vLmluY2x1ZGVzKGkpP2k6dC5ERUZBVUxUX09QVElPTlNbZV07YnJlYWs7Y2FzZVwiY3Vyc29yV2lkdGhcIjppPU1hdGguZmxvb3IoaSk7Y2FzZVwibGluZUhlaWdodFwiOmNhc2VcInRhYlN0b3BXaWR0aFwiOmlmKGk8MSl0aHJvdyBuZXcgRXJyb3IoYCR7ZX0gY2Fubm90IGJlIGxlc3MgdGhhbiAxLCB2YWx1ZTogJHtpfWApO2JyZWFrO2Nhc2VcIm1pbmltdW1Db250cmFzdFJhdGlvXCI6aT1NYXRoLm1heCgxLE1hdGgubWluKDIxLE1hdGgucm91bmQoMTAqaSkvMTApKTticmVhaztjYXNlXCJzY3JvbGxiYWNrXCI6aWYoKGk9TWF0aC5taW4oaSw0Mjk0OTY3Mjk1KSk8MCl0aHJvdyBuZXcgRXJyb3IoYCR7ZX0gY2Fubm90IGJlIGxlc3MgdGhhbiAwLCB2YWx1ZTogJHtpfWApO2JyZWFrO2Nhc2VcImZhc3RTY3JvbGxTZW5zaXRpdml0eVwiOmNhc2VcInNjcm9sbFNlbnNpdGl2aXR5XCI6aWYoaTw9MCl0aHJvdyBuZXcgRXJyb3IoYCR7ZX0gY2Fubm90IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAwLCB2YWx1ZTogJHtpfWApO2JyZWFrO2Nhc2VcInJvd3NcIjpjYXNlXCJjb2xzXCI6aWYoIWkmJjAhPT1pKXRocm93IG5ldyBFcnJvcihgJHtlfSBtdXN0IGJlIG51bWVyaWMsIHZhbHVlOiAke2l9YCk7YnJlYWs7Y2FzZVwid2luZG93c1B0eVwiOmk9bnVsbCE9aT9pOnt9fXJldHVybiBpfX10Lk9wdGlvbnNTZXJ2aWNlPWF9LDI2NjA6ZnVuY3Rpb24oZSx0LGkpe3ZhciBzPXRoaXMmJnRoaXMuX19kZWNvcmF0ZXx8ZnVuY3Rpb24oZSx0LGkscyl7dmFyIHIsbj1hcmd1bWVudHMubGVuZ3RoLG89bjwzP3Q6bnVsbD09PXM/cz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsaSk6cztpZihcIm9iamVjdFwiPT10eXBlb2YgUmVmbGVjdCYmXCJmdW5jdGlvblwiPT10eXBlb2YgUmVmbGVjdC5kZWNvcmF0ZSlvPVJlZmxlY3QuZGVjb3JhdGUoZSx0LGkscyk7ZWxzZSBmb3IodmFyIGE9ZS5sZW5ndGgtMTthPj0wO2EtLSkocj1lW2FdKSYmKG89KG48Mz9yKG8pOm4+Mz9yKHQsaSxvKTpyKHQsaSkpfHxvKTtyZXR1cm4gbj4zJiZvJiZPYmplY3QuZGVmaW5lUHJvcGVydHkodCxpLG8pLG99LHI9dGhpcyYmdGhpcy5fX3BhcmFtfHxmdW5jdGlvbihlLHQpe3JldHVybiBmdW5jdGlvbihpLHMpe3QoaSxzLGUpfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5Pc2NMaW5rU2VydmljZT12b2lkIDA7Y29uc3Qgbj1pKDI1ODUpO2xldCBvPWNsYXNze2NvbnN0cnVjdG9yKGUpe3RoaXMuX2J1ZmZlclNlcnZpY2U9ZSx0aGlzLl9uZXh0SWQ9MSx0aGlzLl9lbnRyaWVzV2l0aElkPW5ldyBNYXAsdGhpcy5fZGF0YUJ5TGlua0lkPW5ldyBNYXB9cmVnaXN0ZXJMaW5rKGUpe2NvbnN0IHQ9dGhpcy5fYnVmZmVyU2VydmljZS5idWZmZXI7aWYodm9pZCAwPT09ZS5pZCl7Y29uc3QgaT10LmFkZE1hcmtlcih0LnliYXNlK3QueSkscz17ZGF0YTplLGlkOnRoaXMuX25leHRJZCsrLGxpbmVzOltpXX07cmV0dXJuIGkub25EaXNwb3NlKCgoKT0+dGhpcy5fcmVtb3ZlTWFya2VyRnJvbUxpbmsocyxpKSkpLHRoaXMuX2RhdGFCeUxpbmtJZC5zZXQocy5pZCxzKSxzLmlkfWNvbnN0IGk9ZSxzPXRoaXMuX2dldEVudHJ5SWRLZXkoaSkscj10aGlzLl9lbnRyaWVzV2l0aElkLmdldChzKTtpZihyKXJldHVybiB0aGlzLmFkZExpbmVUb0xpbmsoci5pZCx0LnliYXNlK3QueSksci5pZDtjb25zdCBuPXQuYWRkTWFya2VyKHQueWJhc2UrdC55KSxvPXtpZDp0aGlzLl9uZXh0SWQrKyxrZXk6dGhpcy5fZ2V0RW50cnlJZEtleShpKSxkYXRhOmksbGluZXM6W25dfTtyZXR1cm4gbi5vbkRpc3Bvc2UoKCgpPT50aGlzLl9yZW1vdmVNYXJrZXJGcm9tTGluayhvLG4pKSksdGhpcy5fZW50cmllc1dpdGhJZC5zZXQoby5rZXksbyksdGhpcy5fZGF0YUJ5TGlua0lkLnNldChvLmlkLG8pLG8uaWR9YWRkTGluZVRvTGluayhlLHQpe2NvbnN0IGk9dGhpcy5fZGF0YUJ5TGlua0lkLmdldChlKTtpZihpJiZpLmxpbmVzLmV2ZXJ5KChlPT5lLmxpbmUhPT10KSkpe2NvbnN0IGU9dGhpcy5fYnVmZmVyU2VydmljZS5idWZmZXIuYWRkTWFya2VyKHQpO2kubGluZXMucHVzaChlKSxlLm9uRGlzcG9zZSgoKCk9PnRoaXMuX3JlbW92ZU1hcmtlckZyb21MaW5rKGksZSkpKX19Z2V0TGlua0RhdGEoZSl7dmFyIHQ7cmV0dXJuIG51bGw9PT0odD10aGlzLl9kYXRhQnlMaW5rSWQuZ2V0KGUpKXx8dm9pZCAwPT09dD92b2lkIDA6dC5kYXRhfV9nZXRFbnRyeUlkS2V5KGUpe3JldHVybmAke2UuaWR9Ozske2UudXJpfWB9X3JlbW92ZU1hcmtlckZyb21MaW5rKGUsdCl7Y29uc3QgaT1lLmxpbmVzLmluZGV4T2YodCk7LTEhPT1pJiYoZS5saW5lcy5zcGxpY2UoaSwxKSwwPT09ZS5saW5lcy5sZW5ndGgmJih2b2lkIDAhPT1lLmRhdGEuaWQmJnRoaXMuX2VudHJpZXNXaXRoSWQuZGVsZXRlKGUua2V5KSx0aGlzLl9kYXRhQnlMaW5rSWQuZGVsZXRlKGUuaWQpKSl9fTtvPXMoW3IoMCxuLklCdWZmZXJTZXJ2aWNlKV0sbyksdC5Pc2NMaW5rU2VydmljZT1vfSw4MzQzOihlLHQpPT57ZnVuY3Rpb24gaShlLHQsaSl7dC5kaSR0YXJnZXQ9PT10P3QuZGkkZGVwZW5kZW5jaWVzLnB1c2goe2lkOmUsaW5kZXg6aX0pOih0LmRpJGRlcGVuZGVuY2llcz1be2lkOmUsaW5kZXg6aX1dLHQuZGkkdGFyZ2V0PXQpfU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuY3JlYXRlRGVjb3JhdG9yPXQuZ2V0U2VydmljZURlcGVuZGVuY2llcz10LnNlcnZpY2VSZWdpc3RyeT12b2lkIDAsdC5zZXJ2aWNlUmVnaXN0cnk9bmV3IE1hcCx0LmdldFNlcnZpY2VEZXBlbmRlbmNpZXM9ZnVuY3Rpb24oZSl7cmV0dXJuIGUuZGkkZGVwZW5kZW5jaWVzfHxbXX0sdC5jcmVhdGVEZWNvcmF0b3I9ZnVuY3Rpb24oZSl7aWYodC5zZXJ2aWNlUmVnaXN0cnkuaGFzKGUpKXJldHVybiB0LnNlcnZpY2VSZWdpc3RyeS5nZXQoZSk7Y29uc3Qgcz1mdW5jdGlvbihlLHQscil7aWYoMyE9PWFyZ3VtZW50cy5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKFwiQElTZXJ2aWNlTmFtZS1kZWNvcmF0b3IgY2FuIG9ubHkgYmUgdXNlZCB0byBkZWNvcmF0ZSBhIHBhcmFtZXRlclwiKTtpKHMsZSxyKX07cmV0dXJuIHMudG9TdHJpbmc9KCk9PmUsdC5zZXJ2aWNlUmVnaXN0cnkuc2V0KGUscyksc319LDI1ODU6KGUsdCxpKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuSURlY29yYXRpb25TZXJ2aWNlPXQuSVVuaWNvZGVTZXJ2aWNlPXQuSU9zY0xpbmtTZXJ2aWNlPXQuSU9wdGlvbnNTZXJ2aWNlPXQuSUxvZ1NlcnZpY2U9dC5Mb2dMZXZlbEVudW09dC5JSW5zdGFudGlhdGlvblNlcnZpY2U9dC5JQ2hhcnNldFNlcnZpY2U9dC5JQ29yZVNlcnZpY2U9dC5JQ29yZU1vdXNlU2VydmljZT10LklCdWZmZXJTZXJ2aWNlPXZvaWQgMDtjb25zdCBzPWkoODM0Myk7dmFyIHI7dC5JQnVmZmVyU2VydmljZT0oMCxzLmNyZWF0ZURlY29yYXRvcikoXCJCdWZmZXJTZXJ2aWNlXCIpLHQuSUNvcmVNb3VzZVNlcnZpY2U9KDAscy5jcmVhdGVEZWNvcmF0b3IpKFwiQ29yZU1vdXNlU2VydmljZVwiKSx0LklDb3JlU2VydmljZT0oMCxzLmNyZWF0ZURlY29yYXRvcikoXCJDb3JlU2VydmljZVwiKSx0LklDaGFyc2V0U2VydmljZT0oMCxzLmNyZWF0ZURlY29yYXRvcikoXCJDaGFyc2V0U2VydmljZVwiKSx0LklJbnN0YW50aWF0aW9uU2VydmljZT0oMCxzLmNyZWF0ZURlY29yYXRvcikoXCJJbnN0YW50aWF0aW9uU2VydmljZVwiKSwocj10LkxvZ0xldmVsRW51bXx8KHQuTG9nTGV2ZWxFbnVtPXt9KSlbci5ERUJVRz0wXT1cIkRFQlVHXCIscltyLklORk89MV09XCJJTkZPXCIscltyLldBUk49Ml09XCJXQVJOXCIscltyLkVSUk9SPTNdPVwiRVJST1JcIixyW3IuT0ZGPTRdPVwiT0ZGXCIsdC5JTG9nU2VydmljZT0oMCxzLmNyZWF0ZURlY29yYXRvcikoXCJMb2dTZXJ2aWNlXCIpLHQuSU9wdGlvbnNTZXJ2aWNlPSgwLHMuY3JlYXRlRGVjb3JhdG9yKShcIk9wdGlvbnNTZXJ2aWNlXCIpLHQuSU9zY0xpbmtTZXJ2aWNlPSgwLHMuY3JlYXRlRGVjb3JhdG9yKShcIk9zY0xpbmtTZXJ2aWNlXCIpLHQuSVVuaWNvZGVTZXJ2aWNlPSgwLHMuY3JlYXRlRGVjb3JhdG9yKShcIlVuaWNvZGVTZXJ2aWNlXCIpLHQuSURlY29yYXRpb25TZXJ2aWNlPSgwLHMuY3JlYXRlRGVjb3JhdG9yKShcIkRlY29yYXRpb25TZXJ2aWNlXCIpfSwxNDgwOihlLHQsaSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LlVuaWNvZGVTZXJ2aWNlPXZvaWQgMDtjb25zdCBzPWkoODQ2MCkscj1pKDIyNSk7dC5Vbmljb2RlU2VydmljZT1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMuX3Byb3ZpZGVycz1PYmplY3QuY3JlYXRlKG51bGwpLHRoaXMuX2FjdGl2ZT1cIlwiLHRoaXMuX29uQ2hhbmdlPW5ldyBzLkV2ZW50RW1pdHRlcix0aGlzLm9uQ2hhbmdlPXRoaXMuX29uQ2hhbmdlLmV2ZW50O2NvbnN0IGU9bmV3IHIuVW5pY29kZVY2O3RoaXMucmVnaXN0ZXIoZSksdGhpcy5fYWN0aXZlPWUudmVyc2lvbix0aGlzLl9hY3RpdmVQcm92aWRlcj1lfWRpc3Bvc2UoKXt0aGlzLl9vbkNoYW5nZS5kaXNwb3NlKCl9Z2V0IHZlcnNpb25zKCl7cmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuX3Byb3ZpZGVycyl9Z2V0IGFjdGl2ZVZlcnNpb24oKXtyZXR1cm4gdGhpcy5fYWN0aXZlfXNldCBhY3RpdmVWZXJzaW9uKGUpe2lmKCF0aGlzLl9wcm92aWRlcnNbZV0pdGhyb3cgbmV3IEVycm9yKGB1bmtub3duIFVuaWNvZGUgdmVyc2lvbiBcIiR7ZX1cImApO3RoaXMuX2FjdGl2ZT1lLHRoaXMuX2FjdGl2ZVByb3ZpZGVyPXRoaXMuX3Byb3ZpZGVyc1tlXSx0aGlzLl9vbkNoYW5nZS5maXJlKGUpfXJlZ2lzdGVyKGUpe3RoaXMuX3Byb3ZpZGVyc1tlLnZlcnNpb25dPWV9d2N3aWR0aChlKXtyZXR1cm4gdGhpcy5fYWN0aXZlUHJvdmlkZXIud2N3aWR0aChlKX1nZXRTdHJpbmdDZWxsV2lkdGgoZSl7bGV0IHQ9MDtjb25zdCBpPWUubGVuZ3RoO2ZvcihsZXQgcz0wO3M8aTsrK3Mpe2xldCByPWUuY2hhckNvZGVBdChzKTtpZig1NTI5Njw9ciYmcjw9NTYzMTkpe2lmKCsrcz49aSlyZXR1cm4gdCt0aGlzLndjd2lkdGgocik7Y29uc3Qgbj1lLmNoYXJDb2RlQXQocyk7NTYzMjA8PW4mJm48PTU3MzQzP3I9MTAyNCooci01NTI5Nikrbi01NjMyMCs2NTUzNjp0Kz10aGlzLndjd2lkdGgobil9dCs9dGhpcy53Y3dpZHRoKHIpfXJldHVybiB0fX19fSx0PXt9O2Z1bmN0aW9uIGkocyl7dmFyIHI9dFtzXTtpZih2b2lkIDAhPT1yKXJldHVybiByLmV4cG9ydHM7dmFyIG49dFtzXT17ZXhwb3J0czp7fX07cmV0dXJuIGVbc10uY2FsbChuLmV4cG9ydHMsbixuLmV4cG9ydHMsaSksbi5leHBvcnRzfXZhciBzPXt9O3JldHVybigoKT0+e3ZhciBlPXM7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksZS5UZXJtaW5hbD12b2lkIDA7Y29uc3QgdD1pKDMyMzYpLHI9aSg5MDQyKSxuPWkoNzk3NSksbz1pKDcwOTApLGE9aSg1NzQxKSxoPWkoODI4NSksYz1bXCJjb2xzXCIsXCJyb3dzXCJdO2UuVGVybWluYWw9Y2xhc3N7Y29uc3RydWN0b3IoZSl7dGhpcy5fY29yZT1uZXcgdC5UZXJtaW5hbChlKSx0aGlzLl9hZGRvbk1hbmFnZXI9bmV3IGEuQWRkb25NYW5hZ2VyLHRoaXMuX3B1YmxpY09wdGlvbnM9T2JqZWN0LmFzc2lnbih7fSx0aGlzLl9jb3JlLm9wdGlvbnMpO2NvbnN0IGk9ZT0+dGhpcy5fY29yZS5vcHRpb25zW2VdLHM9KGUsdCk9Pnt0aGlzLl9jaGVja1JlYWRvbmx5T3B0aW9ucyhlKSx0aGlzLl9jb3JlLm9wdGlvbnNbZV09dH07Zm9yKGNvbnN0IGUgaW4gdGhpcy5fY29yZS5vcHRpb25zKXtjb25zdCB0PXtnZXQ6aS5iaW5kKHRoaXMsZSksc2V0OnMuYmluZCh0aGlzLGUpfTtPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcy5fcHVibGljT3B0aW9ucyxlLHQpfX1fY2hlY2tSZWFkb25seU9wdGlvbnMoZSl7aWYoYy5pbmNsdWRlcyhlKSl0aHJvdyBuZXcgRXJyb3IoYE9wdGlvbiBcIiR7ZX1cIiBjYW4gb25seSBiZSBzZXQgaW4gdGhlIGNvbnN0cnVjdG9yYCl9X2NoZWNrUHJvcG9zZWRBcGkoKXtpZighdGhpcy5fY29yZS5vcHRpb25zU2VydmljZS5yYXdPcHRpb25zLmFsbG93UHJvcG9zZWRBcGkpdGhyb3cgbmV3IEVycm9yKFwiWW91IG11c3Qgc2V0IHRoZSBhbGxvd1Byb3Bvc2VkQXBpIG9wdGlvbiB0byB0cnVlIHRvIHVzZSBwcm9wb3NlZCBBUElcIil9Z2V0IG9uQmVsbCgpe3JldHVybiB0aGlzLl9jb3JlLm9uQmVsbH1nZXQgb25CaW5hcnkoKXtyZXR1cm4gdGhpcy5fY29yZS5vbkJpbmFyeX1nZXQgb25DdXJzb3JNb3ZlKCl7cmV0dXJuIHRoaXMuX2NvcmUub25DdXJzb3JNb3ZlfWdldCBvbkRhdGEoKXtyZXR1cm4gdGhpcy5fY29yZS5vbkRhdGF9Z2V0IG9uS2V5KCl7cmV0dXJuIHRoaXMuX2NvcmUub25LZXl9Z2V0IG9uTGluZUZlZWQoKXtyZXR1cm4gdGhpcy5fY29yZS5vbkxpbmVGZWVkfWdldCBvblJlbmRlcigpe3JldHVybiB0aGlzLl9jb3JlLm9uUmVuZGVyfWdldCBvblJlc2l6ZSgpe3JldHVybiB0aGlzLl9jb3JlLm9uUmVzaXplfWdldCBvblNjcm9sbCgpe3JldHVybiB0aGlzLl9jb3JlLm9uU2Nyb2xsfWdldCBvblNlbGVjdGlvbkNoYW5nZSgpe3JldHVybiB0aGlzLl9jb3JlLm9uU2VsZWN0aW9uQ2hhbmdlfWdldCBvblRpdGxlQ2hhbmdlKCl7cmV0dXJuIHRoaXMuX2NvcmUub25UaXRsZUNoYW5nZX1nZXQgb25Xcml0ZVBhcnNlZCgpe3JldHVybiB0aGlzLl9jb3JlLm9uV3JpdGVQYXJzZWR9Z2V0IGVsZW1lbnQoKXtyZXR1cm4gdGhpcy5fY29yZS5lbGVtZW50fWdldCBwYXJzZXIoKXtyZXR1cm4gdGhpcy5fcGFyc2VyfHwodGhpcy5fcGFyc2VyPW5ldyBuLlBhcnNlckFwaSh0aGlzLl9jb3JlKSksdGhpcy5fcGFyc2VyfWdldCB1bmljb2RlKCl7cmV0dXJuIHRoaXMuX2NoZWNrUHJvcG9zZWRBcGkoKSxuZXcgby5Vbmljb2RlQXBpKHRoaXMuX2NvcmUpfWdldCB0ZXh0YXJlYSgpe3JldHVybiB0aGlzLl9jb3JlLnRleHRhcmVhfWdldCByb3dzKCl7cmV0dXJuIHRoaXMuX2NvcmUucm93c31nZXQgY29scygpe3JldHVybiB0aGlzLl9jb3JlLmNvbHN9Z2V0IGJ1ZmZlcigpe3JldHVybiB0aGlzLl9idWZmZXJ8fCh0aGlzLl9idWZmZXI9bmV3IGguQnVmZmVyTmFtZXNwYWNlQXBpKHRoaXMuX2NvcmUpKSx0aGlzLl9idWZmZXJ9Z2V0IG1hcmtlcnMoKXtyZXR1cm4gdGhpcy5fY2hlY2tQcm9wb3NlZEFwaSgpLHRoaXMuX2NvcmUubWFya2Vyc31nZXQgbW9kZXMoKXtjb25zdCBlPXRoaXMuX2NvcmUuY29yZVNlcnZpY2UuZGVjUHJpdmF0ZU1vZGVzO2xldCB0PVwibm9uZVwiO3N3aXRjaCh0aGlzLl9jb3JlLmNvcmVNb3VzZVNlcnZpY2UuYWN0aXZlUHJvdG9jb2wpe2Nhc2VcIlgxMFwiOnQ9XCJ4MTBcIjticmVhaztjYXNlXCJWVDIwMFwiOnQ9XCJ2dDIwMFwiO2JyZWFrO2Nhc2VcIkRSQUdcIjp0PVwiZHJhZ1wiO2JyZWFrO2Nhc2VcIkFOWVwiOnQ9XCJhbnlcIn1yZXR1cm57YXBwbGljYXRpb25DdXJzb3JLZXlzTW9kZTplLmFwcGxpY2F0aW9uQ3Vyc29yS2V5cyxhcHBsaWNhdGlvbktleXBhZE1vZGU6ZS5hcHBsaWNhdGlvbktleXBhZCxicmFja2V0ZWRQYXN0ZU1vZGU6ZS5icmFja2V0ZWRQYXN0ZU1vZGUsaW5zZXJ0TW9kZTp0aGlzLl9jb3JlLmNvcmVTZXJ2aWNlLm1vZGVzLmluc2VydE1vZGUsbW91c2VUcmFja2luZ01vZGU6dCxvcmlnaW5Nb2RlOmUub3JpZ2luLHJldmVyc2VXcmFwYXJvdW5kTW9kZTplLnJldmVyc2VXcmFwYXJvdW5kLHNlbmRGb2N1c01vZGU6ZS5zZW5kRm9jdXMsd3JhcGFyb3VuZE1vZGU6ZS53cmFwYXJvdW5kfX1nZXQgb3B0aW9ucygpe3JldHVybiB0aGlzLl9wdWJsaWNPcHRpb25zfXNldCBvcHRpb25zKGUpe2Zvcihjb25zdCB0IGluIGUpdGhpcy5fcHVibGljT3B0aW9uc1t0XT1lW3RdfWJsdXIoKXt0aGlzLl9jb3JlLmJsdXIoKX1mb2N1cygpe3RoaXMuX2NvcmUuZm9jdXMoKX1yZXNpemUoZSx0KXt0aGlzLl92ZXJpZnlJbnRlZ2VycyhlLHQpLHRoaXMuX2NvcmUucmVzaXplKGUsdCl9b3BlbihlKXt0aGlzLl9jb3JlLm9wZW4oZSl9YXR0YWNoQ3VzdG9tS2V5RXZlbnRIYW5kbGVyKGUpe3RoaXMuX2NvcmUuYXR0YWNoQ3VzdG9tS2V5RXZlbnRIYW5kbGVyKGUpfXJlZ2lzdGVyTGlua1Byb3ZpZGVyKGUpe3JldHVybiB0aGlzLl9jb3JlLnJlZ2lzdGVyTGlua1Byb3ZpZGVyKGUpfXJlZ2lzdGVyQ2hhcmFjdGVySm9pbmVyKGUpe3JldHVybiB0aGlzLl9jaGVja1Byb3Bvc2VkQXBpKCksdGhpcy5fY29yZS5yZWdpc3RlckNoYXJhY3RlckpvaW5lcihlKX1kZXJlZ2lzdGVyQ2hhcmFjdGVySm9pbmVyKGUpe3RoaXMuX2NoZWNrUHJvcG9zZWRBcGkoKSx0aGlzLl9jb3JlLmRlcmVnaXN0ZXJDaGFyYWN0ZXJKb2luZXIoZSl9cmVnaXN0ZXJNYXJrZXIoZT0wKXtyZXR1cm4gdGhpcy5fdmVyaWZ5SW50ZWdlcnMoZSksdGhpcy5fY29yZS5hZGRNYXJrZXIoZSl9cmVnaXN0ZXJEZWNvcmF0aW9uKGUpe3ZhciB0LGkscztyZXR1cm4gdGhpcy5fY2hlY2tQcm9wb3NlZEFwaSgpLHRoaXMuX3ZlcmlmeVBvc2l0aXZlSW50ZWdlcnMobnVsbCE9PSh0PWUueCkmJnZvaWQgMCE9PXQ/dDowLG51bGwhPT0oaT1lLndpZHRoKSYmdm9pZCAwIT09aT9pOjAsbnVsbCE9PShzPWUuaGVpZ2h0KSYmdm9pZCAwIT09cz9zOjApLHRoaXMuX2NvcmUucmVnaXN0ZXJEZWNvcmF0aW9uKGUpfWhhc1NlbGVjdGlvbigpe3JldHVybiB0aGlzLl9jb3JlLmhhc1NlbGVjdGlvbigpfXNlbGVjdChlLHQsaSl7dGhpcy5fdmVyaWZ5SW50ZWdlcnMoZSx0LGkpLHRoaXMuX2NvcmUuc2VsZWN0KGUsdCxpKX1nZXRTZWxlY3Rpb24oKXtyZXR1cm4gdGhpcy5fY29yZS5nZXRTZWxlY3Rpb24oKX1nZXRTZWxlY3Rpb25Qb3NpdGlvbigpe3JldHVybiB0aGlzLl9jb3JlLmdldFNlbGVjdGlvblBvc2l0aW9uKCl9Y2xlYXJTZWxlY3Rpb24oKXt0aGlzLl9jb3JlLmNsZWFyU2VsZWN0aW9uKCl9c2VsZWN0QWxsKCl7dGhpcy5fY29yZS5zZWxlY3RBbGwoKX1zZWxlY3RMaW5lcyhlLHQpe3RoaXMuX3ZlcmlmeUludGVnZXJzKGUsdCksdGhpcy5fY29yZS5zZWxlY3RMaW5lcyhlLHQpfWRpc3Bvc2UoKXt0aGlzLl9hZGRvbk1hbmFnZXIuZGlzcG9zZSgpLHRoaXMuX2NvcmUuZGlzcG9zZSgpfXNjcm9sbExpbmVzKGUpe3RoaXMuX3ZlcmlmeUludGVnZXJzKGUpLHRoaXMuX2NvcmUuc2Nyb2xsTGluZXMoZSl9c2Nyb2xsUGFnZXMoZSl7dGhpcy5fdmVyaWZ5SW50ZWdlcnMoZSksdGhpcy5fY29yZS5zY3JvbGxQYWdlcyhlKX1zY3JvbGxUb1RvcCgpe3RoaXMuX2NvcmUuc2Nyb2xsVG9Ub3AoKX1zY3JvbGxUb0JvdHRvbSgpe3RoaXMuX2NvcmUuc2Nyb2xsVG9Cb3R0b20oKX1zY3JvbGxUb0xpbmUoZSl7dGhpcy5fdmVyaWZ5SW50ZWdlcnMoZSksdGhpcy5fY29yZS5zY3JvbGxUb0xpbmUoZSl9Y2xlYXIoKXt0aGlzLl9jb3JlLmNsZWFyKCl9d3JpdGUoZSx0KXt0aGlzLl9jb3JlLndyaXRlKGUsdCl9d3JpdGVsbihlLHQpe3RoaXMuX2NvcmUud3JpdGUoZSksdGhpcy5fY29yZS53cml0ZShcIlxcclxcblwiLHQpfXBhc3RlKGUpe3RoaXMuX2NvcmUucGFzdGUoZSl9cmVmcmVzaChlLHQpe3RoaXMuX3ZlcmlmeUludGVnZXJzKGUsdCksdGhpcy5fY29yZS5yZWZyZXNoKGUsdCl9cmVzZXQoKXt0aGlzLl9jb3JlLnJlc2V0KCl9Y2xlYXJUZXh0dXJlQXRsYXMoKXt0aGlzLl9jb3JlLmNsZWFyVGV4dHVyZUF0bGFzKCl9bG9hZEFkZG9uKGUpe3JldHVybiB0aGlzLl9hZGRvbk1hbmFnZXIubG9hZEFkZG9uKHRoaXMsZSl9c3RhdGljIGdldCBzdHJpbmdzKCl7cmV0dXJuIHJ9X3ZlcmlmeUludGVnZXJzKC4uLmUpe2Zvcihjb25zdCB0IG9mIGUpaWYodD09PTEvMHx8aXNOYU4odCl8fHQlMSE9MCl0aHJvdyBuZXcgRXJyb3IoXCJUaGlzIEFQSSBvbmx5IGFjY2VwdHMgaW50ZWdlcnNcIil9X3ZlcmlmeVBvc2l0aXZlSW50ZWdlcnMoLi4uZSl7Zm9yKGNvbnN0IHQgb2YgZSlpZih0JiYodD09PTEvMHx8aXNOYU4odCl8fHQlMSE9MHx8dDwwKSl0aHJvdyBuZXcgRXJyb3IoXCJUaGlzIEFQSSBvbmx5IGFjY2VwdHMgcG9zaXRpdmUgaW50ZWdlcnNcIil9fX0pKCksc30pKCkpKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXh0ZXJtLmpzLm1hcCIsIi8vIFRoZSBtb2R1bGUgY2FjaGVcbnZhciBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18gPSB7fTtcblxuLy8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbmZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG5cdHZhciBjYWNoZWRNb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdO1xuXHRpZiAoY2FjaGVkTW9kdWxlICE9PSB1bmRlZmluZWQpIHtcblx0XHRyZXR1cm4gY2FjaGVkTW9kdWxlLmV4cG9ydHM7XG5cdH1cblx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcblx0dmFyIG1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF0gPSB7XG5cdFx0Ly8gbm8gbW9kdWxlLmlkIG5lZWRlZFxuXHRcdC8vIG5vIG1vZHVsZS5sb2FkZWQgbmVlZGVkXG5cdFx0ZXhwb3J0czoge31cblx0fTtcblxuXHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cblx0X193ZWJwYWNrX21vZHVsZXNfX1ttb2R1bGVJZF0obW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cblx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcblx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xufVxuXG4iLCJpbXBvcnQgeyBJVGVybWluYWxBZGRvbiwgSVRlcm1pbmFsT3B0aW9ucywgVGVybWluYWwgfSBmcm9tICd4dGVybSc7XHJcblxyXG5kZWNsYXJlIHZhciBEb3ROZXQ6IGFueTtcclxuXHJcbmludGVyZmFjZSBJVGVybWluYWxPYmplY3Qge1xyXG5cdHRlcm1pbmFsOiBUZXJtaW5hbCxcclxuXHRhZGRvbnM6IE1hcDxzdHJpbmcsIElUZXJtaW5hbEFkZG9uPixcclxuXHRjdXN0b21LZXlFdmVudEhhbmRsZXI6IChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4gYm9vbGVhblxyXG59XHJcblxyXG5jbGFzcyBYdGVybUJsYXpvciB7XHJcblx0cHJpdmF0ZSByZWFkb25seSBfQVNTRU1CTFlfTkFNRSA9ICdYdGVybUJsYXpvcic7XHJcblx0cHJpdmF0ZSByZWFkb25seSBfdGVybWluYWxzID0gbmV3IE1hcDxzdHJpbmcsIElUZXJtaW5hbE9iamVjdD4oKTtcclxuXHRwcml2YXRlIHJlYWRvbmx5IF9hZGRvbkxpc3QgPSBuZXcgTWFwPHN0cmluZywgSVRlcm1pbmFsQWRkb24+KCk7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFJlZ2lzdGVyIFRlcm1pbmFsXHJcblx0ICogQHBhcmFtIGlkXHJcblx0ICogQHBhcmFtIHJlZlxyXG5cdCAqIEBwYXJhbSBvcHRpb25zXHJcblx0ICogQHBhcmFtIGFkZG9uSWRzXHJcblx0ICovXHJcblx0cmVnaXN0ZXJUZXJtaW5hbChpZDogc3RyaW5nLCByZWY6IEhUTUxFbGVtZW50LCBvcHRpb25zOiBJVGVybWluYWxPcHRpb25zLCBhZGRvbklkczogc3RyaW5nW10pIHtcclxuXHRcdC8vIFNldHVwIHRoZSBYVGVybSB0ZXJtaW5hbFxyXG5cdFx0Y29uc3QgdGVybWluYWwgPSBuZXcgVGVybWluYWwob3B0aW9ucyk7XHJcblxyXG5cdFx0Ly8gQ3JlYXRlIExpc3RlbmVyc1x0XHJcblx0XHR0ZXJtaW5hbC5vbkJpbmFyeSgoZGF0YTogc3RyaW5nKSA9PiBEb3ROZXQuaW52b2tlTWV0aG9kQXN5bmModGhpcy5fQVNTRU1CTFlfTkFNRSwgJ09uQmluYXJ5JywgaWQsIGRhdGEpKTtcclxuXHRcdHRlcm1pbmFsLm9uQ3Vyc29yTW92ZSgoKSA9PiBEb3ROZXQuaW52b2tlTWV0aG9kQXN5bmModGhpcy5fQVNTRU1CTFlfTkFNRSwgJ09uQ3Vyc29yTW92ZScsIGlkKSk7XHJcblx0XHR0ZXJtaW5hbC5vbkRhdGEoKGRhdGE6IHN0cmluZykgPT4gRG90TmV0Lmludm9rZU1ldGhvZEFzeW5jKHRoaXMuX0FTU0VNQkxZX05BTUUsICdPbkRhdGEnLCBpZCwgZGF0YSkpO1xyXG5cdFx0dGVybWluYWwub25LZXkoKGV2ZW50OiB7IGtleTogc3RyaW5nLCBkb21FdmVudDogS2V5Ym9hcmRFdmVudCB9KSA9PiBEb3ROZXQuaW52b2tlTWV0aG9kQXN5bmModGhpcy5fQVNTRU1CTFlfTkFNRSwgJ09uS2V5JywgaWQsIHRoaXMuY29udmVydFRvQXJncyhldmVudC5kb21FdmVudCkpKTtcclxuXHRcdHRlcm1pbmFsLm9uTGluZUZlZWQoKCkgPT4gRG90TmV0Lmludm9rZU1ldGhvZEFzeW5jKHRoaXMuX0FTU0VNQkxZX05BTUUsICdPbkxpbmVGZWVkJywgaWQpKTtcclxuXHRcdHRlcm1pbmFsLm9uU2Nyb2xsKChuZXdQb3NpdGlvbjogbnVtYmVyKSA9PiBEb3ROZXQuaW52b2tlTWV0aG9kQXN5bmModGhpcy5fQVNTRU1CTFlfTkFNRSwgJ09uU2Nyb2xsJywgaWQsIG5ld1Bvc2l0aW9uKSk7XHJcblx0XHR0ZXJtaW5hbC5vblNlbGVjdGlvbkNoYW5nZSgoKSA9PiBEb3ROZXQuaW52b2tlTWV0aG9kQXN5bmModGhpcy5fQVNTRU1CTFlfTkFNRSwgJ09uU2VsZWN0aW9uQ2hhbmdlJywgaWQpKTtcclxuXHRcdHRlcm1pbmFsLm9uUmVuZGVyKChldmVudDogeyBzdGFydDogbnVtYmVyLCBlbmQ6IG51bWJlciB9KSA9PiBEb3ROZXQuaW52b2tlTWV0aG9kQXN5bmModGhpcy5fQVNTRU1CTFlfTkFNRSwgJ09uUmVuZGVyJywgaWQsIGV2ZW50KSk7XHJcblx0XHR0ZXJtaW5hbC5vblJlc2l6ZSgoZXZlbnQ6IHsgY29sczogbnVtYmVyLCByb3dzOiBudW1iZXIgfSkgPT4gRG90TmV0Lmludm9rZU1ldGhvZEFzeW5jKHRoaXMuX0FTU0VNQkxZX05BTUUsICdPblJlc2l6ZScsIGlkLCB7IGNvbHVtbnM6IGV2ZW50LmNvbHMsIHJvd3M6IGV2ZW50LnJvd3MgfSkpO1xyXG5cdFx0dGVybWluYWwub25UaXRsZUNoYW5nZSgodGl0bGU6IHN0cmluZykgPT4gRG90TmV0Lmludm9rZU1ldGhvZEFzeW5jKHRoaXMuX0FTU0VNQkxZX05BTUUsICdPblRpdGxlQ2hhbmdlJywgaWQsIHRpdGxlKSk7XHJcblx0XHR0ZXJtaW5hbC5vbkJlbGwoKCkgPT4gRG90TmV0Lmludm9rZU1ldGhvZEFzeW5jKHRoaXMuX0FTU0VNQkxZX05BTUUsICdPbkJlbGwnLCBpZCkpO1xyXG5cdFx0dGVybWluYWwuYXR0YWNoQ3VzdG9tS2V5RXZlbnRIYW5kbGVyKChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xyXG5cdFx0XHR0cnkge1xyXG5cdFx0XHRcdC8vIFN5bmNocm9ub3VzIGZvciBCbGF6b3IgV2ViQXNzZW1ibHkgYXBwcyBvbmx5LlxyXG5cdFx0XHRcdHJldHVybiBEb3ROZXQuaW52b2tlTWV0aG9kKHRoaXMuX0FTU0VNQkxZX05BTUUsICdBdHRhY2hDdXN0b21LZXlFdmVudEhhbmRsZXInLCBpZCwgdGhpcy5jb252ZXJ0VG9BcmdzKGV2ZW50KSk7XHJcblx0XHRcdH0gY2F0Y2gge1xyXG5cdFx0XHRcdC8vIEFzeW5jaHJvbm91cyBmb3IgYm90aCBCbGF6b3IgU2VydmVyIGFuZCBCbGF6b3IgV2ViQXNzZW1ibHkgYXBwcy5cclxuXHRcdFx0XHREb3ROZXQuaW52b2tlTWV0aG9kQXN5bmModGhpcy5fQVNTRU1CTFlfTkFNRSwgJ0F0dGFjaEN1c3RvbUtleUV2ZW50SGFuZGxlcicsIGlkLCB0aGlzLmNvbnZlcnRUb0FyZ3MoZXZlbnQpKTtcclxuXHRcdFx0XHRyZXR1cm4gdGhpcy5nZXRUZXJtaW5hbEJ5SWQoaWQpLmN1c3RvbUtleUV2ZW50SGFuZGxlcj8uY2FsbChldmVudCkgPz8gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuXHRcdC8vIExvYWQgYW5kIHNldCBhZGRvbnNcclxuXHRcdGNvbnN0IGFkZG9ucyA9IG5ldyBNYXA8c3RyaW5nLCBJVGVybWluYWxBZGRvbj4oKTtcclxuXHRcdGFkZG9uSWRzLmZvckVhY2goYWRkb25JZCA9PiB7XHJcblx0XHRcdGNvbnN0IGFkZG9uID0gT2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKE9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzLl9hZGRvbkxpc3QuZ2V0KGFkZG9uSWQpKSksIHRoaXMuX2FkZG9uTGlzdC5nZXQoYWRkb25JZCkpO1xyXG5cdFx0XHR0ZXJtaW5hbC5sb2FkQWRkb24oYWRkb24pO1xyXG5cdFx0XHRhZGRvbnMuc2V0KGFkZG9uSWQsIGFkZG9uKTtcclxuXHRcdH0pO1xyXG5cclxuXHRcdC8vIE9wZW5zIHRoZSB0ZXJtaW5hbFxyXG5cdFx0dGVybWluYWwub3BlbihyZWYpO1xyXG5cclxuXHRcdC8vIFNldCB0aGUgdGVybWluYWxcclxuXHRcdHRoaXMuX3Rlcm1pbmFscy5zZXQoaWQsIHtcclxuXHRcdFx0dGVybWluYWw6IHRlcm1pbmFsLFxyXG5cdFx0XHRhZGRvbnM6IGFkZG9ucyxcclxuXHRcdFx0Y3VzdG9tS2V5RXZlbnRIYW5kbGVyOiB1bmRlZmluZWQsXHJcblx0XHR9KTtcclxuXHJcblx0XHQvLyBJbnZva2UgT25GaXJzdFJlbmRlclxyXG5cdFx0RG90TmV0Lmludm9rZU1ldGhvZEFzeW5jKHRoaXMuX0FTU0VNQkxZX05BTUUsICdPbkZpcnN0UmVuZGVyJywgaWQpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogUmVnaXN0ZXIgQWRkb25cclxuXHQgKiBAcGFyYW0gYWRkb25JZFxyXG5cdCAqIEBwYXJhbSBhZGRvblxyXG5cdCAqL1xyXG5cdHJlZ2lzdGVyQWRkb24oYWRkb25JZDogc3RyaW5nLCBhZGRvbjogSVRlcm1pbmFsQWRkb24pIHtcclxuXHRcdHRoaXMuX2FkZG9uTGlzdC5zZXQoYWRkb25JZCwgYWRkb24pO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogUmVnaXN0ZXIgQWRkb25zXHJcblx0ICogQHBhcmFtIGFkZG9uc1xyXG5cdCAqL1xyXG5cdHJlZ2lzdGVyQWRkb25zKGFkZG9uczogeyBbaWQ6IHN0cmluZ106IElUZXJtaW5hbEFkZG9uIH0pIHtcclxuXHRcdE9iamVjdC5rZXlzKGFkZG9ucykuZm9yRWFjaChhZGRvbklkID0+IHRoaXMucmVnaXN0ZXJBZGRvbihhZGRvbklkLCBhZGRvbnNbYWRkb25JZF0pKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIERpc3Bvc2UgVGVybWluYWxcclxuXHQgKiBAcGFyYW0gaWRcclxuXHQgKi9cclxuXHRkaXNwb3NlVGVybWluYWwoaWQ6IHN0cmluZykge1xyXG5cdFx0dGhpcy5fdGVybWluYWxzLmdldChpZCk/LnRlcm1pbmFsLmRpc3Bvc2UoKTtcclxuXHRcdHRoaXMuX3Rlcm1pbmFscy5kZWxldGUoaWQpO1xyXG5cdH1cclxuXHJcblx0Ly8gWHRlcm0gRnVuY3Rpb25zXHJcblx0Z2V0Um93cyA9IChpZDogc3RyaW5nKSA9PiB0aGlzLmdldFRlcm1pbmFsQnlJZChpZCkudGVybWluYWwucm93cztcclxuXHRnZXRDb2xzID0gKGlkOiBzdHJpbmcpID0+IHRoaXMuZ2V0VGVybWluYWxCeUlkKGlkKS50ZXJtaW5hbC5jb2xzO1xyXG5cdGdldE9wdGlvbnMgPSAoaWQ6IHN0cmluZykgPT4gdGhpcy5nZXRUZXJtaW5hbEJ5SWQoaWQpLnRlcm1pbmFsLm9wdGlvbnM7XHJcblx0c2V0T3B0aW9ucyA9IChpZDogc3RyaW5nLCBvcHRpb25zOiBJVGVybWluYWxPcHRpb25zKSA9PiB0aGlzLmdldFRlcm1pbmFsQnlJZChpZCkudGVybWluYWwub3B0aW9ucyA9IG9wdGlvbnM7XHJcblx0Ymx1ciA9IChpZDogc3RyaW5nKSA9PiB0aGlzLmdldFRlcm1pbmFsQnlJZChpZCkudGVybWluYWwuYmx1cigpO1xyXG5cdGZvY3VzID0gKGlkOiBzdHJpbmcpID0+IHRoaXMuZ2V0VGVybWluYWxCeUlkKGlkKS50ZXJtaW5hbC5mb2N1cygpO1xyXG5cdHJlc2l6ZSA9IChpZDogc3RyaW5nLCBjb2x1bW5zOiBudW1iZXIsIHJvd3M6IG51bWJlcikgPT4gdGhpcy5nZXRUZXJtaW5hbEJ5SWQoaWQpLnRlcm1pbmFsLnJlc2l6ZShjb2x1bW5zLCByb3dzKTtcclxuXHRoYXNTZWxlY3Rpb24gPSAoaWQ6IHN0cmluZykgPT4gdGhpcy5nZXRUZXJtaW5hbEJ5SWQoaWQpLnRlcm1pbmFsLmhhc1NlbGVjdGlvbigpO1xyXG5cdGdldFNlbGVjdGlvbiA9IChpZDogc3RyaW5nKSA9PiB0aGlzLmdldFRlcm1pbmFsQnlJZChpZCkudGVybWluYWwuZ2V0U2VsZWN0aW9uKCk7XHJcblx0Z2V0U2VsZWN0aW9uUG9zaXRpb24gPSAoaWQ6IHN0cmluZykgPT4gdGhpcy5nZXRUZXJtaW5hbEJ5SWQoaWQpLnRlcm1pbmFsLmdldFNlbGVjdGlvblBvc2l0aW9uKCk7XHJcblx0Y2xlYXJTZWxlY3Rpb24gPSAoaWQ6IHN0cmluZykgPT4gdGhpcy5nZXRUZXJtaW5hbEJ5SWQoaWQpLnRlcm1pbmFsLmNsZWFyU2VsZWN0aW9uKCk7XHJcblx0c2VsZWN0ID0gKGlkOiBzdHJpbmcsIGNvbHVtbjogbnVtYmVyLCByb3c6IG51bWJlciwgbGVuZ3RoOiBudW1iZXIpID0+IHRoaXMuZ2V0VGVybWluYWxCeUlkKGlkKS50ZXJtaW5hbC5zZWxlY3QoY29sdW1uLCByb3csIGxlbmd0aCk7XHJcblx0c2VsZWN0QWxsID0gKGlkOiBzdHJpbmcpID0+IHRoaXMuZ2V0VGVybWluYWxCeUlkKGlkKS50ZXJtaW5hbC5zZWxlY3RBbGwoKTtcclxuXHRzZWxlY3RMaW5lcyA9IChpZDogc3RyaW5nLCBzdGFydDogbnVtYmVyLCBlbmQ6IG51bWJlcikgPT4gdGhpcy5nZXRUZXJtaW5hbEJ5SWQoaWQpLnRlcm1pbmFsLnNlbGVjdExpbmVzKHN0YXJ0LCBlbmQpO1xyXG5cdHNjcm9sbExpbmVzID0gKGlkOiBzdHJpbmcsIGFtb3VudDogbnVtYmVyKSA9PiB0aGlzLmdldFRlcm1pbmFsQnlJZChpZCkudGVybWluYWwuc2Nyb2xsTGluZXMoYW1vdW50KTtcclxuXHRzY3JvbGxQYWdlcyA9IChpZDogc3RyaW5nLCBwYWdlQ291bnQ6IG51bWJlcikgPT4gdGhpcy5nZXRUZXJtaW5hbEJ5SWQoaWQpLnRlcm1pbmFsLnNjcm9sbFBhZ2VzKHBhZ2VDb3VudCk7XHJcblx0c2Nyb2xsVG9Ub3AgPSAoaWQ6IHN0cmluZykgPT4gdGhpcy5nZXRUZXJtaW5hbEJ5SWQoaWQpLnRlcm1pbmFsLnNjcm9sbFRvVG9wKCk7XHJcblx0c2Nyb2xsVG9Cb3R0b20gPSAoaWQ6IHN0cmluZykgPT4gdGhpcy5nZXRUZXJtaW5hbEJ5SWQoaWQpLnRlcm1pbmFsLnNjcm9sbFRvQm90dG9tKCk7XHJcblx0c2Nyb2xsVG9MaW5lID0gKGlkOiBzdHJpbmcsIGxpbmU6IG51bWJlcikgPT4gdGhpcy5nZXRUZXJtaW5hbEJ5SWQoaWQpLnRlcm1pbmFsLnNjcm9sbFRvTGluZShsaW5lKTtcclxuXHRjbGVhciA9IChpZDogc3RyaW5nKSA9PiB0aGlzLmdldFRlcm1pbmFsQnlJZChpZCkudGVybWluYWwuY2xlYXIoKTtcclxuXHR3cml0ZSA9IChpZDogc3RyaW5nLCBkYXRhOiBzdHJpbmcpID0+IHRoaXMuZ2V0VGVybWluYWxCeUlkKGlkKS50ZXJtaW5hbC53cml0ZShkYXRhKTtcclxuXHR3cml0ZWxuID0gKGlkOiBzdHJpbmcsIGRhdGE6IHN0cmluZykgPT4gdGhpcy5nZXRUZXJtaW5hbEJ5SWQoaWQpLnRlcm1pbmFsLndyaXRlbG4oZGF0YSk7XHJcblx0cGFzdGUgPSAoaWQ6IHN0cmluZywgZGF0YTogc3RyaW5nKSA9PiB0aGlzLmdldFRlcm1pbmFsQnlJZChpZCkudGVybWluYWwucGFzdGUoZGF0YSk7XHJcblx0cmVmcmVzaCA9IChpZDogc3RyaW5nLCBzdGFydDogbnVtYmVyLCBlbmQ6IG51bWJlcikgPT4gdGhpcy5nZXRUZXJtaW5hbEJ5SWQoaWQpLnRlcm1pbmFsLnJlZnJlc2goc3RhcnQsIGVuZCk7XHJcblx0cmVzZXQgPSAoaWQ6IHN0cmluZykgPT4gdGhpcy5nZXRUZXJtaW5hbEJ5SWQoaWQpLnRlcm1pbmFsLnJlc2V0KCk7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEludm9rZSBhZGRvbiBmdW5jdGlvblxyXG5cdCAqIEBwYXJhbSBpZFxyXG5cdCAqIEBwYXJhbSBhZGRvbklkXHJcblx0ICogQHBhcmFtIGZ1bmN0aW9uTmFtZVxyXG5cdCAqL1xyXG5cdGludm9rZUFkZG9uRnVuY3Rpb24oaWQ6IHN0cmluZywgYWRkb25JZDogc3RyaW5nLCBmdW5jdGlvbk5hbWU6IHN0cmluZykge1xyXG5cdFx0cmV0dXJuIHRoaXMuZ2V0VGVybWluYWxCeUlkKGlkKS5hZGRvbnMuZ2V0KGFkZG9uSWQpW2Z1bmN0aW9uTmFtZV0oLi4uYXJndW1lbnRzWzNdKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEdldCBUZXJtaW5hbCBvYmplY3QgYnkgSWRcclxuXHQgKiBAcGFyYW0gaWRcclxuXHQgKi9cclxuXHRnZXRUZXJtaW5hbEJ5SWQoaWQ6IHN0cmluZyk6IElUZXJtaW5hbE9iamVjdCB7XHJcblx0XHRjb25zdCB0ZXJtaW5hbCA9IHRoaXMuX3Rlcm1pbmFscy5nZXQoaWQpO1xyXG5cclxuXHRcdGlmICghdGVybWluYWwpIHtcclxuXHRcdFx0dGhyb3cgbmV3IEVycm9yKCdGYWlsIHRvIGdldCB0ZXJtaW5hbCBieSByZWZlcmVuY2UgaWQnKTtcclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gdGVybWluYWw7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBDb252ZXJ0IHRvIE1pY3Jvc29mdC5Bc3BOZXRDb3JlLkNvbXBvbmVudHMuV2ViLktleWJvYXJkRXZlbnRBcmdzXHJcblx0ICogQHBhcmFtIGV2ZW50XHJcblx0ICovXHJcblx0cHJpdmF0ZSBjb252ZXJ0VG9BcmdzKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XHJcblx0XHRyZXR1cm4ge1xyXG5cdFx0XHRrZXk6IGV2ZW50LmtleSxcclxuXHRcdFx0Y29kZTogZXZlbnQuY29kZSxcclxuXHRcdFx0bG9jYXRpb246IGV2ZW50LmxvY2F0aW9uLFxyXG5cdFx0XHRyZXBlYXQ6IGV2ZW50LnJlcGVhdCxcclxuXHRcdFx0Y3RybEtleTogZXZlbnQuY3RybEtleSxcclxuXHRcdFx0c2hpZnRLZXk6IGV2ZW50LnNoaWZ0S2V5LFxyXG5cdFx0XHRhbHRLZXk6IGV2ZW50LmFsdEtleSxcclxuXHRcdFx0bWV0YUtleTogZXZlbnQubWV0YUtleSxcclxuXHRcdFx0dHlwZTogZXZlbnQudHlwZVxyXG5cdFx0fTtcclxuXHR9XHJcbn1cclxuXHJcbmRlY2xhcmUgZ2xvYmFsIHtcclxuXHRpbnRlcmZhY2UgV2luZG93IHtcclxuXHRcdFh0ZXJtQmxhem9yOiBYdGVybUJsYXpvcjtcclxuXHR9XHJcbn1cclxuXHJcbndpbmRvdy5YdGVybUJsYXpvciA9IG5ldyBYdGVybUJsYXpvcigpO1xyXG4iXSwibmFtZXMiOlsidCIsInNlbGYiLCJlIiwiaSIsInMiLCJ0aGlzIiwiX19kZWNvcmF0ZSIsInIiLCJuIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwibyIsIk9iamVjdCIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsIlJlZmxlY3QiLCJkZWNvcmF0ZSIsImEiLCJkZWZpbmVQcm9wZXJ0eSIsIl9fcGFyYW0iLCJ2YWx1ZSIsIkFjY2Vzc2liaWxpdHlNYW5hZ2VyIiwiaCIsImMiLCJsIiwiZCIsIl8iLCJEaXNwb3NhYmxlIiwiY29uc3RydWN0b3IiLCJzdXBlciIsIl90ZXJtaW5hbCIsIl9yZW5kZXJTZXJ2aWNlIiwiX2xpdmVSZWdpb25MaW5lQ291bnQiLCJfY2hhcnNUb0NvbnN1bWUiLCJfY2hhcnNUb0Fubm91bmNlIiwiX2FjY2Vzc2liaWxpdHlDb250YWluZXIiLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc0xpc3QiLCJhZGQiLCJfcm93Q29udGFpbmVyIiwic2V0QXR0cmlidXRlIiwiX3Jvd0VsZW1lbnRzIiwicm93cyIsIl9jcmVhdGVBY2Nlc3NpYmlsaXR5VHJlZU5vZGUiLCJhcHBlbmRDaGlsZCIsIl90b3BCb3VuZGFyeUZvY3VzTGlzdGVuZXIiLCJfaGFuZGxlQm91bmRhcnlGb2N1cyIsIl9ib3R0b21Cb3VuZGFyeUZvY3VzTGlzdGVuZXIiLCJhZGRFdmVudExpc3RlbmVyIiwiX3JlZnJlc2hSb3dzRGltZW5zaW9ucyIsIl9saXZlUmVnaW9uIiwiX2xpdmVSZWdpb25EZWJvdW5jZXIiLCJyZWdpc3RlciIsIlRpbWVCYXNlZERlYm91bmNlciIsIl9hbm5vdW5jZUNoYXJhY3RlcnMiLCJiaW5kIiwiZWxlbWVudCIsIkVycm9yIiwiaW5zZXJ0QWRqYWNlbnRFbGVtZW50Iiwib25SZXNpemUiLCJfaGFuZGxlUmVzaXplIiwib25SZW5kZXIiLCJfcmVmcmVzaFJvd3MiLCJzdGFydCIsImVuZCIsIm9uU2Nyb2xsIiwib25BMTF5Q2hhciIsIl9oYW5kbGVDaGFyIiwib25MaW5lRmVlZCIsIm9uQTExeVRhYiIsIl9oYW5kbGVUYWIiLCJvbktleSIsIl9oYW5kbGVLZXkiLCJrZXkiLCJvbkJsdXIiLCJfY2xlYXJMaXZlUmVnaW9uIiwib25EaW1lbnNpb25zQ2hhbmdlIiwiX3NjcmVlbkRwck1vbml0b3IiLCJTY3JlZW5EcHJNb25pdG9yIiwid2luZG93Iiwic2V0TGlzdGVuZXIiLCJhZGREaXNwb3NhYmxlRG9tTGlzdGVuZXIiLCJ0b0Rpc3Bvc2FibGUiLCJyZW1vdmUiLCJzaGlmdCIsInRleHRDb250ZW50IiwidG9vTXVjaE91dHB1dCIsImlzTWFjIiwicGFyZW50Tm9kZSIsInNldFRpbWVvdXQiLCJ0ZXN0IiwicHVzaCIsInJlZnJlc2giLCJ0YXJnZXQiLCJnZXRBdHRyaWJ1dGUiLCJidWZmZXIiLCJsaW5lcyIsInJlbGF0ZWRUYXJnZXQiLCJwb3AiLCJyZW1vdmVDaGlsZCIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJ1bnNoaWZ0Iiwic2Nyb2xsTGluZXMiLCJmb2N1cyIsInByZXZlbnREZWZhdWx0Iiwic3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uIiwiY2hpbGRyZW4iLCJ0YWJJbmRleCIsIl9yZWZyZXNoUm93RGltZW5zaW9ucyIsImRpbWVuc2lvbnMiLCJjc3MiLCJjZWxsIiwiaGVpZ2h0Iiwic3R5bGUiLCJ3aWR0aCIsImNhbnZhcyIsIklSZW5kZXJTZXJ2aWNlIiwicmVwbGFjZSIsImRlY1ByaXZhdGVNb2RlcyIsImJyYWNrZXRlZFBhc3RlTW9kZSIsInRyaWdnZXJEYXRhRXZlbnQiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJjbGllbnRYIiwibGVmdCIsImNsaWVudFkiLCJ0b3AiLCJ6SW5kZXgiLCJyaWdodENsaWNrSGFuZGxlciIsIm1vdmVUZXh0QXJlYVVuZGVyTW91c2VDdXJzb3IiLCJwYXN0ZSIsImhhbmRsZVBhc3RlRXZlbnQiLCJjb3B5SGFuZGxlciIsImJyYWNrZXRUZXh0Rm9yUGFzdGUiLCJwcmVwYXJlVGV4dEZvclRlcm1pbmFsIiwiY2xpcGJvYXJkRGF0YSIsInNldERhdGEiLCJzZWxlY3Rpb25UZXh0Iiwic3RvcFByb3BhZ2F0aW9uIiwiZ2V0RGF0YSIsInJpZ2h0Q2xpY2tTZWxlY3QiLCJzZWxlY3QiLCJDb2xvckNvbnRyYXN0Q2FjaGUiLCJfY29sb3IiLCJUd29LZXlNYXAiLCJfY3NzIiwic2V0Q3NzIiwic2V0IiwiZ2V0Q3NzIiwiZ2V0Iiwic2V0Q29sb3IiLCJnZXRDb2xvciIsImNsZWFyIiwiZGlzcG9zZSIsIkxpbmtpZmllcjIiLCJfYnVmZmVyU2VydmljZSIsIl9saW5rUHJvdmlkZXJzIiwiX2xpbmtDYWNoZURpc3Bvc2FibGVzIiwiX2lzTW91c2VPdXQiLCJfd2FzUmVzaXplZCIsIl9hY3RpdmVMaW5lIiwiX29uU2hvd0xpbmtVbmRlcmxpbmUiLCJFdmVudEVtaXR0ZXIiLCJvblNob3dMaW5rVW5kZXJsaW5lIiwiZXZlbnQiLCJfb25IaWRlTGlua1VuZGVybGluZSIsIm9uSGlkZUxpbmtVbmRlcmxpbmUiLCJnZXREaXNwb3NlQXJyYXlEaXNwb3NhYmxlIiwiX2xhc3RNb3VzZUV2ZW50IiwiX2NsZWFyQ3VycmVudExpbmsiLCJjdXJyZW50TGluayIsIl9jdXJyZW50TGluayIsInJlZ2lzdGVyTGlua1Byb3ZpZGVyIiwiaW5kZXhPZiIsInNwbGljZSIsImF0dGFjaFRvRG9tIiwiX2VsZW1lbnQiLCJfbW91c2VTZXJ2aWNlIiwiX2hhbmRsZU1vdXNlTW92ZSIsIl9oYW5kbGVNb3VzZURvd24iLCJfaGFuZGxlTW91c2VVcCIsIl9wb3NpdGlvbkZyb21Nb3VzZUV2ZW50IiwiY29tcG9zZWRQYXRoIiwiY29udGFpbnMiLCJfbGFzdEJ1ZmZlckNlbGwiLCJ4IiwieSIsIl9oYW5kbGVIb3ZlciIsIl9hc2tGb3JMaW5rIiwiX2xpbmtBdFBvc2l0aW9uIiwibGluayIsIl9hY3RpdmVQcm92aWRlclJlcGxpZXMiLCJmb3JFYWNoIiwiTWFwIiwiZW50cmllcyIsIl9jaGVja0xpbmtQcm92aWRlclJlc3VsdCIsInByb3ZpZGVMaW5rcyIsIm1hcCIsInNpemUiLCJfcmVtb3ZlSW50ZXJzZWN0aW5nTGlua3MiLCJTZXQiLCJyYW5nZSIsImNvbHMiLCJoYXMiLCJmaW5kIiwiX2hhbmRsZU5ld0xpbmsiLCJfbW91c2VEb3duTGluayIsImFjdGl2YXRlIiwidGV4dCIsIl9saW5rTGVhdmUiLCJkaXNwb3NlQXJyYXkiLCJzdGF0ZSIsImRlY29yYXRpb25zIiwidW5kZXJsaW5lIiwicG9pbnRlckN1cnNvciIsImlzSG92ZXJlZCIsIl9saW5rSG92ZXIiLCJkZWZpbmVQcm9wZXJ0aWVzIiwidG9nZ2xlIiwiX2ZpcmVVbmRlcmxpbmVFdmVudCIsIm9uUmVuZGVyZWRWaWV3cG9ydENoYW5nZSIsInlkaXNwIiwiaG92ZXIiLCJfY3JlYXRlTGlua1VuZGVybGluZUV2ZW50IiwiZmlyZSIsImxlYXZlIiwiZ2V0Q29vcmRzIiwieDEiLCJ5MSIsIngyIiwieTIiLCJmZyIsIklCdWZmZXJTZXJ2aWNlIiwicHJvbXB0TGFiZWwiLCJPc2NMaW5rUHJvdmlkZXIiLCJfb3B0aW9uc1NlcnZpY2UiLCJfb3NjTGlua1NlcnZpY2UiLCJyYXdPcHRpb25zIiwibGlua0hhbmRsZXIiLCJDZWxsRGF0YSIsImdldFRyaW1tZWRMZW5ndGgiLCJoYXNDb250ZW50IiwibG9hZENlbGwiLCJoYXNFeHRlbmRlZEF0dHJzIiwiZXh0ZW5kZWQiLCJ1cmxJZCIsImdldExpbmtEYXRhIiwidXJpIiwiYWxsb3dOb25IdHRwUHJvdG9jb2xzIiwiVVJMIiwiaW5jbHVkZXMiLCJwcm90b2NvbCIsImNhbGwiLCJjb25maXJtIiwib3BlbiIsIm9wZW5lciIsImxvY2F0aW9uIiwiaHJlZiIsImNvbnNvbGUiLCJ3YXJuIiwiSU9wdGlvbnNTZXJ2aWNlIiwiSU9zY0xpbmtTZXJ2aWNlIiwiUmVuZGVyRGVib3VuY2VyIiwiX3BhcmVudFdpbmRvdyIsIl9yZW5kZXJDYWxsYmFjayIsIl9yZWZyZXNoQ2FsbGJhY2tzIiwiX2FuaW1hdGlvbkZyYW1lIiwiY2FuY2VsQW5pbWF0aW9uRnJhbWUiLCJhZGRSZWZyZXNoQ2FsbGJhY2siLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJfaW5uZXJSZWZyZXNoIiwiX3Jvd0NvdW50IiwiX3Jvd1N0YXJ0IiwiTWF0aCIsIm1pbiIsIl9yb3dFbmQiLCJtYXgiLCJfcnVuUmVmcmVzaENhbGxiYWNrcyIsIl9jdXJyZW50RGV2aWNlUGl4ZWxSYXRpbyIsImRldmljZVBpeGVsUmF0aW8iLCJjbGVhckxpc3RlbmVyIiwiX2xpc3RlbmVyIiwiX291dGVyTGlzdGVuZXIiLCJfdXBkYXRlRHByIiwiX3Jlc29sdXRpb25NZWRpYU1hdGNoTGlzdCIsInJlbW92ZUxpc3RlbmVyIiwibWF0Y2hNZWRpYSIsImFkZExpc3RlbmVyIiwiVGVybWluYWwiLCJ1IiwiZiIsInYiLCJnIiwicCIsIlMiLCJtIiwiQyIsImIiLCJ3IiwiRSIsIkwiLCJrIiwiUiIsIkQiLCJBIiwiQiIsIlQiLCJNIiwiTyIsIkkiLCJDb3JlVGVybWluYWwiLCJicm93c2VyIiwiX2tleURvd25IYW5kbGVkIiwiX2tleURvd25TZWVuIiwiX2tleVByZXNzSGFuZGxlZCIsIl91bnByb2Nlc3NlZERlYWRLZXkiLCJfb25DdXJzb3JNb3ZlIiwib25DdXJzb3JNb3ZlIiwiX29uS2V5IiwiX29uUmVuZGVyIiwiX29uU2VsZWN0aW9uQ2hhbmdlIiwib25TZWxlY3Rpb25DaGFuZ2UiLCJfb25UaXRsZUNoYW5nZSIsIm9uVGl0bGVDaGFuZ2UiLCJfb25CZWxsIiwib25CZWxsIiwiX29uRm9jdXMiLCJfb25CbHVyIiwiX29uQTExeUNoYXJFbWl0dGVyIiwiX29uQTExeVRhYkVtaXR0ZXIiLCJfb25XaWxsT3BlbiIsIl9zZXR1cCIsImxpbmtpZmllcjIiLCJfaW5zdGFudGlhdGlvblNlcnZpY2UiLCJjcmVhdGVJbnN0YW5jZSIsIl9kZWNvcmF0aW9uU2VydmljZSIsIkRlY29yYXRpb25TZXJ2aWNlIiwic2V0U2VydmljZSIsIklEZWNvcmF0aW9uU2VydmljZSIsIl9pbnB1dEhhbmRsZXIiLCJvblJlcXVlc3RCZWxsIiwib25SZXF1ZXN0UmVmcmVzaFJvd3MiLCJvblJlcXVlc3RTZW5kRm9jdXMiLCJfcmVwb3J0Rm9jdXMiLCJvblJlcXVlc3RSZXNldCIsInJlc2V0Iiwib25SZXF1ZXN0V2luZG93c09wdGlvbnNSZXBvcnQiLCJfcmVwb3J0V2luZG93c09wdGlvbnMiLCJvbkNvbG9yIiwiX2hhbmRsZUNvbG9yRXZlbnQiLCJmb3J3YXJkRXZlbnQiLCJfYWZ0ZXJSZXNpemUiLCJfY3VzdG9tS2V5RXZlbnRIYW5kbGVyIiwib25Gb2N1cyIsIm9uV2lsbE9wZW4iLCJfdGhlbWVTZXJ2aWNlIiwiaW5kZXgiLCJ0eXBlIiwiY29sb3IiLCJ0b0NvbG9yUkdCIiwiY29sb3JzIiwiYW5zaSIsImNvcmVTZXJ2aWNlIiwiQzAiLCJFU0MiLCJ0b1JnYlN0cmluZyIsIkMxX0VTQ0FQRUQiLCJTVCIsIm1vZGlmeUNvbG9ycyIsInJnYmEiLCJ0b0NvbG9yIiwicmVzdG9yZUNvbG9yIiwiYnVmZmVycyIsImFjdGl2ZSIsInRleHRhcmVhIiwicHJldmVudFNjcm9sbCIsIl9oYW5kbGVTY3JlZW5SZWFkZXJNb2RlT3B0aW9uQ2hhbmdlIiwiX2FjY2Vzc2liaWxpdHlNYW5hZ2VyIiwiX2hhbmRsZVRleHRBcmVhRm9jdXMiLCJzZW5kRm9jdXMiLCJ1cGRhdGVDdXJzb3JTdHlsZSIsIl9zaG93Q3Vyc29yIiwiYmx1ciIsIl9oYW5kbGVUZXh0QXJlYUJsdXIiLCJfc3luY1RleHRBcmVhIiwiaXNDdXJzb3JJblZpZXdwb3J0IiwiX2NvbXBvc2l0aW9uSGVscGVyIiwiaXNDb21wb3NpbmciLCJ5YmFzZSIsImdldFdpZHRoIiwibGluZUhlaWdodCIsIl9pbml0R2xvYmFsIiwiX2JpbmRLZXlzIiwiaGFzU2VsZWN0aW9uIiwiX3NlbGVjdGlvblNlcnZpY2UiLCJpc0ZpcmVmb3giLCJidXR0b24iLCJzY3JlZW5FbGVtZW50Iiwib3B0aW9ucyIsInJpZ2h0Q2xpY2tTZWxlY3RzV29yZCIsImlzTGludXgiLCJfa2V5VXAiLCJfa2V5RG93biIsIl9rZXlQcmVzcyIsImNvbXBvc2l0aW9uc3RhcnQiLCJjb21wb3NpdGlvbnVwZGF0ZSIsImNvbXBvc2l0aW9uZW5kIiwiX2lucHV0RXZlbnQiLCJ1cGRhdGVDb21wb3NpdGlvbkVsZW1lbnRzIiwiaXNDb25uZWN0ZWQiLCJfbG9nU2VydmljZSIsImRlYnVnIiwiX2RvY3VtZW50Iiwib3duZXJEb2N1bWVudCIsImRpciIsImNyZWF0ZURvY3VtZW50RnJhZ21lbnQiLCJfdmlld3BvcnRFbGVtZW50IiwiX3ZpZXdwb3J0U2Nyb2xsQXJlYSIsIl9oZWxwZXJDb250YWluZXIiLCJpc0Nocm9tZU9TIiwiX2NvcmVCcm93c2VyU2VydmljZSIsIkNvcmVCcm93c2VyU2VydmljZSIsImRlZmF1bHRWaWV3IiwiSUNvcmVCcm93c2VyU2VydmljZSIsIl9jaGFyU2l6ZVNlcnZpY2UiLCJDaGFyU2l6ZVNlcnZpY2UiLCJJQ2hhclNpemVTZXJ2aWNlIiwiVGhlbWVTZXJ2aWNlIiwiSVRoZW1lU2VydmljZSIsIl9jaGFyYWN0ZXJKb2luZXJTZXJ2aWNlIiwiQ2hhcmFjdGVySm9pbmVyU2VydmljZSIsIklDaGFyYWN0ZXJKb2luZXJTZXJ2aWNlIiwiUmVuZGVyU2VydmljZSIsInJlc2l6ZSIsIl9jb21wb3NpdGlvblZpZXciLCJDb21wb3NpdGlvbkhlbHBlciIsImhhc1JlbmRlcmVyIiwic2V0UmVuZGVyZXIiLCJfY3JlYXRlUmVuZGVyZXIiLCJNb3VzZVNlcnZpY2UiLCJJTW91c2VTZXJ2aWNlIiwidmlld3BvcnQiLCJWaWV3cG9ydCIsIm9uUmVxdWVzdFN5bmNTY3JvbGxCYXIiLCJzeW5jU2Nyb2xsQXJlYSIsImhhbmRsZUN1cnNvck1vdmUiLCJoYW5kbGVSZXNpemUiLCJoYW5kbGVCbHVyIiwiaGFuZGxlRm9jdXMiLCJTZWxlY3Rpb25TZXJ2aWNlIiwiSVNlbGVjdGlvblNlcnZpY2UiLCJvblJlcXVlc3RTY3JvbGxMaW5lcyIsImFtb3VudCIsInN1cHByZXNzU2Nyb2xsRXZlbnQiLCJvblJlcXVlc3RSZWRyYXciLCJoYW5kbGVTZWxlY3Rpb25DaGFuZ2VkIiwiY29sdW1uU2VsZWN0TW9kZSIsIm9uTGludXhNb3VzZVNlbGVjdGlvbiIsIl9vblNjcm9sbCIsIkJ1ZmZlckRlY29yYXRpb25SZW5kZXJlciIsImhhbmRsZU1vdXNlRG93biIsImNvcmVNb3VzZVNlcnZpY2UiLCJhcmVNb3VzZUV2ZW50c0FjdGl2ZSIsImRpc2FibGUiLCJlbmFibGUiLCJzY3JlZW5SZWFkZXJNb2RlIiwib3B0aW9uc1NlcnZpY2UiLCJvblNwZWNpZmljT3B0aW9uQ2hhbmdlIiwib3ZlcnZpZXdSdWxlcldpZHRoIiwiX292ZXJ2aWV3UnVsZXJSZW5kZXJlciIsIk92ZXJ2aWV3UnVsZXJSZW5kZXJlciIsIm1lYXN1cmUiLCJiaW5kTW91c2UiLCJEb21SZW5kZXJlciIsImdldE1vdXNlUmVwb3J0Q29vcmRzIiwib3ZlcnJpZGVUeXBlIiwiYnV0dG9ucyIsImdldExpbmVzU2Nyb2xsZWQiLCJkZWx0YVkiLCJ0cmlnZ2VyTW91c2VFdmVudCIsImNvbCIsInJvdyIsImFjdGlvbiIsImN0cmwiLCJjdHJsS2V5IiwiYWx0IiwiYWx0S2V5Iiwic2hpZnRLZXkiLCJtb3VzZXVwIiwid2hlZWwiLCJtb3VzZWRyYWciLCJtb3VzZW1vdmUiLCJjYW5jZWwiLCJvblByb3RvY29sQ2hhbmdlIiwibG9nTGV2ZWwiLCJleHBsYWluRXZlbnRzIiwicGFzc2l2ZSIsImFjdGl2ZVByb3RvY29sIiwic2hvdWxkRm9yY2VTZWxlY3Rpb24iLCJoYXNTY3JvbGxiYWNrIiwiYXBwbGljYXRpb25DdXJzb3JLZXlzIiwiYWJzIiwiaGFuZGxlV2hlZWwiLCJoYW5kbGVUb3VjaFN0YXJ0IiwiaGFuZGxlVG91Y2hNb3ZlIiwicmVmcmVzaFJvd3MiLCJzaG91bGRDb2x1bW5TZWxlY3QiLCJpc0N1cnNvckluaXRpYWxpemVkIiwiYXR0YWNoQ3VzdG9tS2V5RXZlbnRIYW5kbGVyIiwicmVnaXN0ZXJDaGFyYWN0ZXJKb2luZXIiLCJkZXJlZ2lzdGVyQ2hhcmFjdGVySm9pbmVyIiwiZGVyZWdpc3RlciIsIm1hcmtlcnMiLCJhZGRNYXJrZXIiLCJyZWdpc3RlckRlY29yYXRpb24iLCJzZXRTZWxlY3Rpb24iLCJnZXRTZWxlY3Rpb24iLCJnZXRTZWxlY3Rpb25Qb3NpdGlvbiIsInNlbGVjdGlvblN0YXJ0Iiwic2VsZWN0aW9uRW5kIiwiY2xlYXJTZWxlY3Rpb24iLCJzZWxlY3RBbGwiLCJzZWxlY3RMaW5lcyIsIm1hY09wdGlvbklzTWV0YSIsImtleWRvd24iLCJzY3JvbGxPblVzZXJJbnB1dCIsInNjcm9sbFRvQm90dG9tIiwiZXZhbHVhdGVLZXlib2FyZEV2ZW50IiwiX2lzVGhpcmRMZXZlbFNoaWZ0IiwibWV0YUtleSIsImNoYXJDb2RlQXQiLCJFVFgiLCJDUiIsImRvbUV2ZW50IiwiaXNXaW5kb3dzIiwiZ2V0TW9kaWZpZXJTdGF0ZSIsImtleUNvZGUiLCJjaGFyQ29kZSIsIndoaWNoIiwiU3RyaW5nIiwiZnJvbUNoYXJDb2RlIiwiZGF0YSIsImlucHV0VHlwZSIsImNvbXBvc2VkIiwiaGFzVmFsaWRTaXplIiwiY2xlYXJBbGxNYXJrZXJzIiwiZ2V0QmxhbmtMaW5lIiwiREVGQVVMVF9BVFRSX0RBVEEiLCJwb3NpdGlvbiIsInNvdXJjZSIsImNsZWFyVGV4dHVyZUF0bGFzIiwiV2luZG93c09wdGlvbnNSZXBvcnRUeXBlIiwiR0VUX1dJTl9TSVpFX1BJWEVMUyIsInRvRml4ZWQiLCJHRVRfQ0VMTF9TSVpFX1BJWEVMUyIsImNhbmNlbEV2ZW50cyIsIl9kZWJvdW5jZVRocmVzaG9sZE1TIiwiX2xhc3RSZWZyZXNoTXMiLCJfYWRkaXRpb25hbFJlZnJlc2hSZXF1ZXN0ZWQiLCJfcmVmcmVzaFRpbWVvdXRJRCIsImNsZWFyVGltZW91dCIsIkRhdGUiLCJub3ciLCJfc2Nyb2xsTGluZXMiLCJfc2Nyb2xsQXJlYSIsInNjcm9sbEJhcldpZHRoIiwiX2N1cnJlbnRSb3dIZWlnaHQiLCJfY3VycmVudERldmljZUNlbGxIZWlnaHQiLCJfbGFzdFJlY29yZGVkQnVmZmVyTGVuZ3RoIiwiX2xhc3RSZWNvcmRlZFZpZXdwb3J0SGVpZ2h0IiwiX2xhc3RSZWNvcmRlZEJ1ZmZlckhlaWdodCIsIl9sYXN0VG91Y2hZIiwiX2xhc3RTY3JvbGxUb3AiLCJfd2hlZWxQYXJ0aWFsU2Nyb2xsIiwiX3JlZnJlc2hBbmltYXRpb25GcmFtZSIsIl9pZ25vcmVOZXh0U2Nyb2xsRXZlbnQiLCJfc21vb3RoU2Nyb2xsU3RhdGUiLCJzdGFydFRpbWUiLCJvcmlnaW4iLCJvZmZzZXRXaWR0aCIsIl9oYW5kbGVTY3JvbGwiLCJfYWN0aXZlQnVmZmVyIiwib25CdWZmZXJBY3RpdmF0ZSIsImFjdGl2ZUJ1ZmZlciIsIl9yZW5kZXJEaW1lbnNpb25zIiwiX2hhbmRsZVRoZW1lQ2hhbmdlIiwib25DaGFuZ2VDb2xvcnMiLCJiYWNrZ3JvdW5kQ29sb3IiLCJiYWNrZ3JvdW5kIiwiX3JlZnJlc2giLCJkZXZpY2UiLCJkcHIiLCJvZmZzZXRIZWlnaHQiLCJyb3VuZCIsInNjcm9sbFRvcCIsIm9mZnNldFBhcmVudCIsIl9zbW9vdGhTY3JvbGwiLCJfaXNEaXNwb3NlZCIsIl9zbW9vdGhTY3JvbGxQZXJjZW50IiwiX2NsZWFyU21vb3RoU2Nyb2xsU3RhdGUiLCJzbW9vdGhTY3JvbGxEdXJhdGlvbiIsIl9idWJibGVTY3JvbGwiLCJjYW5jZWxhYmxlIiwiX2dldFBpeGVsc1Njcm9sbGVkIiwic2Nyb2xsSGVpZ2h0IiwiX2FwcGx5U2Nyb2xsTW9kaWZpZXIiLCJkZWx0YU1vZGUiLCJXaGVlbEV2ZW50IiwiRE9NX0RFTFRBX0xJTkUiLCJET01fREVMVEFfUEFHRSIsImdldEJ1ZmZlckVsZW1lbnRzIiwiaXNXcmFwcGVkIiwidHJhbnNsYXRlVG9TdHJpbmciLCJidWZmZXJFbGVtZW50cyIsImN1cnNvckVsZW1lbnQiLCJET01fREVMVEFfUElYRUwiLCJmbG9vciIsImZhc3RTY3JvbGxNb2RpZmllciIsImZhc3RTY3JvbGxTZW5zaXRpdml0eSIsInNjcm9sbFNlbnNpdGl2aXR5IiwidG91Y2hlcyIsInBhZ2VZIiwiX3NjcmVlbkVsZW1lbnQiLCJfZGVjb3JhdGlvbkVsZW1lbnRzIiwiX2FsdEJ1ZmZlcklzQWN0aXZlIiwiX2RpbWVuc2lvbnNDaGFuZ2VkIiwiX2NvbnRhaW5lciIsIl9kb1JlZnJlc2hEZWNvcmF0aW9ucyIsIl9xdWV1ZVJlZnJlc2giLCJvbkRlY29yYXRpb25SZWdpc3RlcmVkIiwib25EZWNvcmF0aW9uUmVtb3ZlZCIsIl9yZW1vdmVEZWNvcmF0aW9uIiwiX3JlbmRlckRlY29yYXRpb24iLCJfcmVmcmVzaFN0eWxlIiwiX3JlZnJlc2hYUG9zaXRpb24iLCJfY3JlYXRlRWxlbWVudCIsImxheWVyIiwibWFya2VyIiwibGluZSIsImRpc3BsYXkiLCJvblJlbmRlckVtaXR0ZXIiLCJhbmNob3IiLCJyaWdodCIsImRlbGV0ZSIsIkNvbG9yWm9uZVN0b3JlIiwiX3pvbmVzIiwiX3pvbmVQb29sIiwiX3pvbmVQb29sSW5kZXgiLCJfbGluZVBhZGRpbmciLCJmdWxsIiwiY2VudGVyIiwiem9uZXMiLCJhZGREZWNvcmF0aW9uIiwib3ZlcnZpZXdSdWxlck9wdGlvbnMiLCJfbGluZUludGVyc2VjdHNab25lIiwiX2xpbmVBZGphY2VudFRvWm9uZSIsIl9hZGRMaW5lVG9ab25lIiwic3RhcnRCdWZmZXJMaW5lIiwiZW5kQnVmZmVyTGluZSIsInNldFBhZGRpbmciLCJfY29yZUJyb3dzZVNlcnZpY2UiLCJfY29sb3Jab25lU3RvcmUiLCJfc2hvdWxkVXBkYXRlRGltZW5zaW9ucyIsIl9zaG91bGRVcGRhdGVBbmNob3IiLCJfbGFzdEtub3duQnVmZmVyTGVuZ3RoIiwiX2NhbnZhcyIsIl9yZWZyZXNoQ2FudmFzRGltZW5zaW9ucyIsInBhcmVudEVsZW1lbnQiLCJpbnNlcnRCZWZvcmUiLCJnZXRDb250ZXh0IiwiX2N0eCIsIl9yZWdpc3RlckRlY29yYXRpb25MaXN0ZW5lcnMiLCJfcmVnaXN0ZXJCdWZmZXJDaGFuZ2VMaXN0ZW5lcnMiLCJfcmVnaXN0ZXJEaW1lbnNpb25DaGFuZ2VMaXN0ZW5lcnMiLCJfd2lkdGgiLCJub3JtYWwiLCJfcmVmcmVzaERyYXdIZWlnaHRDb25zdGFudHMiLCJfcmVmcmVzaENvbG9yWm9uZVBhZGRpbmciLCJfY29udGFpbmVySGVpZ2h0IiwiY2xpZW50SGVpZ2h0IiwiX3JlZnJlc2hEcmF3Q29uc3RhbnRzIiwiY2VpbCIsIl9yZWZyZXNoRGVjb3JhdGlvbnMiLCJjbGVhclJlY3QiLCJsaW5lV2lkdGgiLCJfcmVuZGVyQ29sb3Jab25lIiwiZmlsbFN0eWxlIiwiZmlsbFJlY3QiLCJfdGV4dGFyZWEiLCJfY29yZVNlcnZpY2UiLCJfaXNDb21wb3NpbmciLCJfaXNTZW5kaW5nQ29tcG9zaXRpb24iLCJfY29tcG9zaXRpb25Qb3NpdGlvbiIsIl9kYXRhQWxyZWFkeVNlbnQiLCJfZmluYWxpemVDb21wb3NpdGlvbiIsIl9oYW5kbGVBbnlUZXh0YXJlYUNoYW5nZXMiLCJzdWJzdHJpbmciLCJERUwiLCJmb250RmFtaWx5IiwiZm9udFNpemUiLCJJQ29yZVNlcnZpY2UiLCJnZXRDb21wdXRlZFN0eWxlIiwicGFyc2VJbnQiLCJnZXRQcm9wZXJ0eVZhbHVlIiwiZ2V0Q29vcmRzUmVsYXRpdmVUb0VsZW1lbnQiLCJtb3ZlVG9DZWxsU2VxdWVuY2UiLCJ0cmFuc2xhdGVCdWZmZXJMaW5lVG9TdHJpbmciLCJfbGlua2lmaWVyMiIsIl90ZXJtaW5hbENsYXNzIiwiX2NlbGxUb1Jvd0VsZW1lbnRzIiwiX3JlZnJlc2hSb3dFbGVtZW50cyIsIl9zZWxlY3Rpb25Db250YWluZXIiLCJjcmVhdGVSZW5kZXJEaW1lbnNpb25zIiwiX3VwZGF0ZURpbWVuc2lvbnMiLCJvbk9wdGlvbkNoYW5nZSIsIl9oYW5kbGVPcHRpb25zQ2hhbmdlZCIsIl9pbmplY3RDc3MiLCJfcm93RmFjdG9yeSIsIkRvbVJlbmRlcmVyUm93RmFjdG9yeSIsIl9oYW5kbGVMaW5rSG92ZXIiLCJfaGFuZGxlTGlua0xlYXZlIiwiX3RoZW1lU3R5bGVFbGVtZW50IiwiX2RpbWVuc2lvbnNTdHlsZUVsZW1lbnQiLCJjaGFyIiwibGV0dGVyU3BhY2luZyIsIm92ZXJmbG93IiwiX3Rlcm1pbmFsU2VsZWN0b3IiLCJmb3JlZ3JvdW5kIiwibXVsdGlwbHlPcGFjaXR5IiwiQk9MRF9DTEFTUyIsImZvbnRXZWlnaHQiLCJmb250V2VpZ2h0Qm9sZCIsIklUQUxJQ19DTEFTUyIsImN1cnNvciIsImN1cnNvckFjY2VudCIsIkNVUlNPUl9DTEFTUyIsIkNVUlNPUl9TVFlMRV9CTE9DS19DTEFTUyIsIkNVUlNPUl9TVFlMRV9CQVJfQ0xBU1MiLCJDVVJTT1JfU1RZTEVfVU5ERVJMSU5FX0NMQVNTIiwiQ1VSU09SX0JMSU5LX0NMQVNTIiwiY3Vyc29yV2lkdGgiLCJzZWxlY3Rpb25CYWNrZ3JvdW5kT3BhcXVlIiwic2VsZWN0aW9uSW5hY3RpdmVCYWNrZ3JvdW5kT3BhcXVlIiwiRElNX0NMQVNTIiwiSU5WRVJURURfREVGQVVMVF9DT0xPUiIsIm9wYXF1ZSIsImhhbmRsZURldmljZVBpeGVsUmF0aW9DaGFuZ2UiLCJoYW5kbGVDaGFyU2l6ZUNoYW5nZWQiLCJyZW5kZXJSb3dzIiwiX2NyZWF0ZVNlbGVjdGlvbkVsZW1lbnQiLCJyZXBsYWNlQ2hpbGRyZW4iLCJjdXJzb3JCbGluayIsImN1cnNvclN0eWxlIiwiSW50MTZBcnJheSIsImNyZWF0ZVJvdyIsIl9zZXRDZWxsVW5kZXJsaW5lIiwidGV4dERlY29yYXRpb24iLCJJSW5zdGFudGlhdGlvblNlcnZpY2UiLCJTVFJJS0VUSFJPVUdIX0NMQVNTIiwiT1ZFUkxJTkVfQ0xBU1MiLCJVTkRFUkxJTkVfQ0xBU1MiLCJfd29ya0NlbGwiLCJfY29sdW1uU2VsZWN0TW9kZSIsIl9zZWxlY3Rpb25TdGFydCIsIl9zZWxlY3Rpb25FbmQiLCJnZXRKb2luZWRDaGFyYWN0ZXJzIiwiZ2V0Q29kZSIsIk5VTExfQ0VMTF9DT0RFIiwiSm9pbmVkQ2VsbERhdGEiLCJpc0N1cnNvckhpZGRlbiIsImlzQm9sZCIsImlzSXRhbGljIiwiaXNEaW0iLCJpc0ludmlzaWJsZSIsIldISVRFU1BBQ0VfQ0VMTF9DSEFSIiwiZ2V0Q2hhcnMiLCJpc1VuZGVybGluZSIsInVuZGVybGluZVN0eWxlIiwiaXNVbmRlcmxpbmVDb2xvckRlZmF1bHQiLCJpc1VuZGVybGluZUNvbG9yUkdCIiwidGV4dERlY29yYXRpb25Db2xvciIsIkF0dHJpYnV0ZURhdGEiLCJnZXRVbmRlcmxpbmVDb2xvciIsImpvaW4iLCJkcmF3Qm9sZFRleHRJbkJyaWdodENvbG9ycyIsImlzT3ZlcmxpbmUiLCJpc1N0cmlrZXRocm91Z2giLCJnZXRGZ0NvbG9yIiwiZ2V0RmdDb2xvck1vZGUiLCJnZXRCZ0NvbG9yIiwiZ2V0QmdDb2xvck1vZGUiLCJpc0ludmVyc2UiLCJmb3JFYWNoRGVjb3JhdGlvbkF0Q2VsbCIsImJhY2tncm91bmRDb2xvclJHQiIsImZvcmVncm91bmRDb2xvclJHQiIsIl9pc0NlbGxJblNlbGVjdGlvbiIsInNlbGVjdGlvbkZvcmVncm91bmQiLCJpc0ZvY3VzZWQiLCJfYWRkU3R5bGUiLCJ0b1N0cmluZyIsIl9hcHBseU1pbmltdW1Db250cmFzdCIsInN1YmFycmF5IiwiZmlsbCIsIm1pbmltdW1Db250cmFzdFJhdGlvIiwiZXhjbHVkZUZyb21Db250cmFzdFJhdGlvRGVtYW5kcyIsImNvbnRyYXN0Q2FjaGUiLCJlbnN1cmVDb250cmFzdFJhdGlvIiwiVEVYVF9CQVNFTElORSIsIkRJTV9PUEFDSVRZIiwiaXNMZWdhY3lFZGdlIiwiaXNSZXN0cmljdGVkUG93ZXJsaW5lR2x5cGgiLCJpc1Bvd2VybGluZUdseXBoIiwidGhyb3dJZkZhbHN5IiwiU2VsZWN0aW9uTW9kZWwiLCJpc1NlbGVjdEFsbEFjdGl2ZSIsInNlbGVjdGlvblN0YXJ0TGVuZ3RoIiwiZmluYWxTZWxlY3Rpb25TdGFydCIsImFyZVNlbGVjdGlvblZhbHVlc1JldmVyc2VkIiwiZmluYWxTZWxlY3Rpb25FbmQiLCJoYW5kbGVUcmltIiwiX29uQ2hhclNpemVDaGFuZ2UiLCJvbkNoYXJTaXplQ2hhbmdlIiwiX21lYXN1cmVTdHJhdGVneSIsIm9uTXVsdGlwbGVPcHRpb25DaGFuZ2UiLCJfcGFyZW50RWxlbWVudCIsIl9yZXN1bHQiLCJfbWVhc3VyZUVsZW1lbnQiLCJjb250ZW50IiwiY29tYmluZWREYXRhIiwiYmciLCJpc0NvbWJpbmVkIiwic2V0RnJvbUNoYXJEYXRhIiwiZ2V0QXNDaGFyRGF0YSIsIl9jaGFyYWN0ZXJKb2luZXJzIiwiX25leHRDaGFyYWN0ZXJKb2luZXJJZCIsImlkIiwiaGFuZGxlciIsImdldEZnIiwiZ2V0QmciLCJfZ2V0Sm9pbmVkUmFuZ2VzIiwiZXJyb3IiLCJfbWVyZ2VSYW5nZXMiLCJfc3RyaW5nUmFuZ2VzVG9DZWxsUmFuZ2VzIiwiZ2V0U3RyaW5nIiwic3RhdGljIiwiX2lzRm9jdXNlZCIsIl9jYWNoZWRJc0ZvY3VzZWQiLCJoYXNGb2N1cyIsInF1ZXVlTWljcm90YXNrIiwiX3BhdXNlZFJlc2l6ZVRhc2siLCJEZWJvdW5jZWRJZGxlVGFzayIsIl9pc1BhdXNlZCIsIl9uZWVkc0Z1bGxSZWZyZXNoIiwiX2lzTmV4dFJlbmRlclJlZHJhd09ubHkiLCJfbmVlZHNTZWxlY3Rpb25SZWZyZXNoIiwiX2NhbnZhc1dpZHRoIiwiX2NhbnZhc0hlaWdodCIsIl9zZWxlY3Rpb25TdGF0ZSIsIl9vbkRpbWVuc2lvbnNDaGFuZ2UiLCJfb25SZW5kZXJlZFZpZXdwb3J0Q2hhbmdlIiwiX29uUmVmcmVzaFJlcXVlc3QiLCJvblJlZnJlc2hSZXF1ZXN0IiwiX3JlbmRlcmVyIiwiX3JlbmRlckRlYm91bmNlciIsIl9yZW5kZXJSb3dzIiwiX2Z1bGxSZWZyZXNoIiwiSW50ZXJzZWN0aW9uT2JzZXJ2ZXIiLCJfaGFuZGxlSW50ZXJzZWN0aW9uQ2hhbmdlIiwidGhyZXNob2xkIiwib2JzZXJ2ZSIsImRpc2Nvbm5lY3QiLCJpc0ludGVyc2VjdGluZyIsImludGVyc2VjdGlvblJhdGlvIiwiZmx1c2giLCJfZmlyZU9uQ2FudmFzUmVzaXplIiwiUmVnRXhwIiwiX2xpbmtpZmllciIsIl9kcmFnU2Nyb2xsQW1vdW50IiwiX2VuYWJsZWQiLCJfbW91c2VEb3duVGltZVN0YW1wIiwiX29sZEhhc1NlbGVjdGlvbiIsIl9vbGRTZWxlY3Rpb25TdGFydCIsIl9vbGRTZWxlY3Rpb25FbmQiLCJfb25MaW51eE1vdXNlU2VsZWN0aW9uIiwiX29uUmVkcmF3UmVxdWVzdCIsIl9vblJlcXVlc3RTY3JvbGxMaW5lcyIsIl9tb3VzZU1vdmVMaXN0ZW5lciIsIl9tb3VzZVVwTGlzdGVuZXIiLCJvblVzZXJJbnB1dCIsIl90cmltTGlzdGVuZXIiLCJvblRyaW0iLCJfaGFuZGxlVHJpbSIsIl9oYW5kbGVCdWZmZXJBY3RpdmF0ZSIsIl9tb2RlbCIsIl9hY3RpdmVTZWxlY3Rpb25Nb2RlIiwiX3JlbW92ZU1vdXNlRG93bkxpc3RlbmVycyIsIl9pc0NsaWNrSW5TZWxlY3Rpb24iLCJfZ2V0TW91c2VCdWZmZXJDb29yZHMiLCJfYXJlQ29vcmRzSW5TZWxlY3Rpb24iLCJpc0NlbGxJblNlbGVjdGlvbiIsIl9zZWxlY3RXb3JkQXRDdXJzb3IiLCJnZXRSYW5nZUxlbmd0aCIsIl9zZWxlY3RXb3JkQXQiLCJfZ2V0TW91c2VFdmVudFNjcm9sbEFtb3VudCIsIm1hY09wdGlvbkNsaWNrRm9yY2VzU2VsZWN0aW9uIiwidGltZVN0YW1wIiwiX2hhbmRsZUluY3JlbWVudGFsQ2xpY2siLCJkZXRhaWwiLCJfaGFuZGxlU2luZ2xlQ2xpY2siLCJfaGFuZGxlRG91YmxlQ2xpY2siLCJfaGFuZGxlVHJpcGxlQ2xpY2siLCJfYWRkTW91c2VEb3duTGlzdGVuZXJzIiwiX2RyYWdTY3JvbGxJbnRlcnZhbFRpbWVyIiwic2V0SW50ZXJ2YWwiLCJfZHJhZ1Njcm9sbCIsImNsZWFySW50ZXJ2YWwiLCJoYXNXaWR0aCIsIl9zZWxlY3RMaW5lQXQiLCJfc2VsZWN0VG9Xb3JkQXQiLCJhbHRDbGlja01vdmVzQ3Vyc29yIiwiX2ZpcmVFdmVudElmU2VsZWN0aW9uQ2hhbmdlZCIsIl9maXJlT25TZWxlY3Rpb25DaGFuZ2UiLCJfY29udmVydFZpZXdwb3J0Q29sVG9DaGFyYWN0ZXJJbmRleCIsIl9nZXRXb3JkQXQiLCJjaGFyQXQiLCJfaXNDaGFyV29yZFNlcGFyYXRvciIsInNsaWNlIiwidHJpbSIsImdldENvZGVQb2ludCIsIndvcmRTZXBhcmF0b3IiLCJnZXRXcmFwcGVkUmFuZ2VGb3JMaW5lIiwiZmlyc3QiLCJsYXN0IiwiY3JlYXRlRGVjb3JhdG9yIiwiREVGQVVMVF9BTlNJX0NPTE9SUyIsImZyZWV6ZSIsImNoYW5uZWxzIiwidG9Dc3MiLCJ0b1JnYmEiLCJfb25DaGFuZ2VDb2xvcnMiLCJfY29udHJhc3RDYWNoZSIsIl9jb2xvcnMiLCJzZWxlY3Rpb25CYWNrZ3JvdW5kVHJhbnNwYXJlbnQiLCJibGVuZCIsInNlbGVjdGlvbkluYWN0aXZlQmFja2dyb3VuZFRyYW5zcGFyZW50IiwiX3VwZGF0ZVJlc3RvcmVDb2xvcnMiLCJfc2V0VGhlbWUiLCJ0aGVtZSIsInNlbGVjdGlvbkJhY2tncm91bmQiLCJzZWxlY3Rpb25JbmFjdGl2ZUJhY2tncm91bmQiLCJOVUxMX0NPTE9SIiwiaXNPcGFxdWUiLCJvcGFjaXR5IiwiYmxhY2siLCJyZWQiLCJncmVlbiIsInllbGxvdyIsImJsdWUiLCJtYWdlbnRhIiwiY3lhbiIsIndoaXRlIiwiYnJpZ2h0QmxhY2siLCJicmlnaHRSZWQiLCJicmlnaHRHcmVlbiIsImJyaWdodFllbGxvdyIsImJyaWdodEJsdWUiLCJicmlnaHRNYWdlbnRhIiwiYnJpZ2h0Q3lhbiIsImJyaWdodFdoaXRlIiwiZXh0ZW5kZWRBbnNpIiwiX3Jlc3RvcmVDb2xvciIsIl9yZXN0b3JlQ29sb3JzIiwiQ2lyY3VsYXJMaXN0IiwiX21heExlbmd0aCIsIm9uRGVsZXRlRW1pdHRlciIsIm9uRGVsZXRlIiwib25JbnNlcnRFbWl0dGVyIiwib25JbnNlcnQiLCJvblRyaW1FbWl0dGVyIiwiX2FycmF5IiwiQXJyYXkiLCJfc3RhcnRJbmRleCIsIl9sZW5ndGgiLCJtYXhMZW5ndGgiLCJfZ2V0Q3ljbGljSW5kZXgiLCJyZWN5Y2xlIiwiaXNGdWxsIiwidHJpbVN0YXJ0Iiwic2hpZnRFbGVtZW50cyIsImNsb25lIiwiaXNBcnJheSIsImNvbnRyYXN0UmF0aW8iLCJ0b1BhZGRlZEhleCIsInJnYiIsInRvQ2hhbm5lbHMiLCJpc05vZGUiLCJ3aWxsUmVhZEZyZXF1ZW50bHkiLCJnbG9iYWxDb21wb3NpdGVPcGVyYXRpb24iLCJjcmVhdGVMaW5lYXJHcmFkaWVudCIsIm1hdGNoIiwicmVwZWF0IiwicGFyc2VGbG9hdCIsImdldEltYWdlRGF0YSIsInBvdyIsInJlbGF0aXZlTHVtaW5hbmNlIiwicmVsYXRpdmVMdW1pbmFuY2UyIiwicmVkdWNlTHVtaW5hbmNlIiwiaW5jcmVhc2VMdW1pbmFuY2UiLCJfb25CaW5hcnkiLCJvbkJpbmFyeSIsIl9vbkRhdGEiLCJvbkRhdGEiLCJfb25MaW5lRmVlZCIsIl9vblJlc2l6ZSIsIl9vbldyaXRlUGFyc2VkIiwib25Xcml0ZVBhcnNlZCIsIkluc3RhbnRpYXRpb25TZXJ2aWNlIiwiT3B0aW9uc1NlcnZpY2UiLCJCdWZmZXJTZXJ2aWNlIiwiTG9nU2VydmljZSIsIklMb2dTZXJ2aWNlIiwiQ29yZVNlcnZpY2UiLCJDb3JlTW91c2VTZXJ2aWNlIiwiSUNvcmVNb3VzZVNlcnZpY2UiLCJ1bmljb2RlU2VydmljZSIsIlVuaWNvZGVTZXJ2aWNlIiwiSVVuaWNvZGVTZXJ2aWNlIiwiX2NoYXJzZXRTZXJ2aWNlIiwiQ2hhcnNldFNlcnZpY2UiLCJJQ2hhcnNldFNlcnZpY2UiLCJPc2NMaW5rU2VydmljZSIsIklucHV0SGFuZGxlciIsIm9uUmVxdWVzdFNjcm9sbFRvQm90dG9tIiwiX3dyaXRlQnVmZmVyIiwiaGFuZGxlVXNlcklucHV0IiwiX2hhbmRsZVdpbmRvd3NQdHlPcHRpb25DaGFuZ2UiLCJtYXJrUmFuZ2VEaXJ0eSIsInNjcm9sbEJvdHRvbSIsIldyaXRlQnVmZmVyIiwicGFyc2UiLCJfd2luZG93c1dyYXBwaW5nSGV1cmlzdGljcyIsIl9vblNjcm9sbEFwaSIsIndyaXRlIiwid3JpdGVTeW5jIiwiTG9nTGV2ZWxFbnVtIiwiV0FSTiIsImlzTmFOIiwiTUlOSU1VTV9DT0xTIiwiTUlOSU1VTV9ST1dTIiwic2Nyb2xsIiwic2Nyb2xsUGFnZXMiLCJzY3JvbGxUb1RvcCIsInNjcm9sbFRvTGluZSIsInJlZ2lzdGVyRXNjSGFuZGxlciIsInJlZ2lzdGVyRGNzSGFuZGxlciIsInJlZ2lzdGVyQ3NpSGFuZGxlciIsInJlZ2lzdGVyT3NjSGFuZGxlciIsIndpbmRvd3NQdHkiLCJidWlsZE51bWJlciIsImJhY2tlbmQiLCJ3aW5kb3dzTW9kZSIsIl9lbmFibGVXaW5kb3dzV3JhcHBpbmdIZXVyaXN0aWNzIiwidXBkYXRlV2luZG93c01vZGVXcmFwcGVkU3RhdGUiLCJmaW5hbCIsIl9saXN0ZW5lcnMiLCJfZGlzcG9zZWQiLCJfZXZlbnQiLCJzZXRXaW5MaW5lcyIsInJlc3RvcmVXaW4iLCJtaW5pbWl6ZVdpbiIsInNldFdpblBvc2l0aW9uIiwic2V0V2luU2l6ZVBpeGVscyIsInJhaXNlV2luIiwibG93ZXJXaW4iLCJyZWZyZXNoV2luIiwic2V0V2luU2l6ZUNoYXJzIiwibWF4aW1pemVXaW4iLCJmdWxsc2NyZWVuV2luIiwiZ2V0V2luU3RhdGUiLCJnZXRXaW5Qb3NpdGlvbiIsImdldFdpblNpemVQaXhlbHMiLCJnZXRTY3JlZW5TaXplUGl4ZWxzIiwiZ2V0Q2VsbFNpemVQaXhlbHMiLCJnZXRXaW5TaXplQ2hhcnMiLCJnZXRTY3JlZW5TaXplQ2hhcnMiLCJnZXRJY29uVGl0bGUiLCJnZXRXaW5UaXRsZSIsInB1c2hUaXRsZSIsInBvcFRpdGxlIiwiRXNjYXBlU2VxdWVuY2VQYXJzZXIiLCJfY29yZU1vdXNlU2VydmljZSIsIl91bmljb2RlU2VydmljZSIsIl9wYXJzZXIiLCJfcGFyc2VCdWZmZXIiLCJVaW50MzJBcnJheSIsIl9zdHJpbmdEZWNvZGVyIiwiU3RyaW5nVG9VdGYzMiIsIl91dGY4RGVjb2RlciIsIlV0ZjhUb1V0ZjMyIiwiX3dpbmRvd1RpdGxlIiwiX2ljb25OYW1lIiwiX3dpbmRvd1RpdGxlU3RhY2siLCJfaWNvbk5hbWVTdGFjayIsIl9jdXJBdHRyRGF0YSIsIl9lcmFzZUF0dHJEYXRhSW50ZXJuYWwiLCJfb25SZXF1ZXN0QmVsbCIsIl9vblJlcXVlc3RSZWZyZXNoUm93cyIsIl9vblJlcXVlc3RSZXNldCIsIl9vblJlcXVlc3RTZW5kRm9jdXMiLCJfb25SZXF1ZXN0U3luY1Njcm9sbEJhciIsIl9vblJlcXVlc3RXaW5kb3dzT3B0aW9uc1JlcG9ydCIsIl9vbkExMXlDaGFyIiwiX29uQTExeVRhYiIsIl9vbkNvbG9yIiwiX3BhcnNlU3RhY2siLCJwYXVzZWQiLCJjdXJzb3JTdGFydFgiLCJjdXJzb3JTdGFydFkiLCJkZWNvZGVkTGVuZ3RoIiwiX3NwZWNpYWxDb2xvcnMiLCJfZGlydHlSb3dUcmFja2VyIiwic2V0Q3NpSGFuZGxlckZhbGxiYWNrIiwiaWRlbnRpZmllciIsImlkZW50VG9TdHJpbmciLCJwYXJhbXMiLCJ0b0FycmF5Iiwic2V0RXNjSGFuZGxlckZhbGxiYWNrIiwic2V0RXhlY3V0ZUhhbmRsZXJGYWxsYmFjayIsImNvZGUiLCJzZXRPc2NIYW5kbGVyRmFsbGJhY2siLCJzZXREY3NIYW5kbGVyRmFsbGJhY2siLCJwYXlsb2FkIiwic2V0UHJpbnRIYW5kbGVyIiwicHJpbnQiLCJpbnNlcnRDaGFycyIsImludGVybWVkaWF0ZXMiLCJzY3JvbGxMZWZ0IiwiY3Vyc29yVXAiLCJzY3JvbGxSaWdodCIsImN1cnNvckRvd24iLCJjdXJzb3JGb3J3YXJkIiwiY3Vyc29yQmFja3dhcmQiLCJjdXJzb3JOZXh0TGluZSIsImN1cnNvclByZWNlZGluZ0xpbmUiLCJjdXJzb3JDaGFyQWJzb2x1dGUiLCJjdXJzb3JQb3NpdGlvbiIsImN1cnNvckZvcndhcmRUYWIiLCJlcmFzZUluRGlzcGxheSIsInByZWZpeCIsImVyYXNlSW5MaW5lIiwiaW5zZXJ0TGluZXMiLCJkZWxldGVMaW5lcyIsImRlbGV0ZUNoYXJzIiwic2Nyb2xsVXAiLCJzY3JvbGxEb3duIiwiZXJhc2VDaGFycyIsImN1cnNvckJhY2t3YXJkVGFiIiwiY2hhclBvc0Fic29sdXRlIiwiaFBvc2l0aW9uUmVsYXRpdmUiLCJyZXBlYXRQcmVjZWRpbmdDaGFyYWN0ZXIiLCJzZW5kRGV2aWNlQXR0cmlidXRlc1ByaW1hcnkiLCJzZW5kRGV2aWNlQXR0cmlidXRlc1NlY29uZGFyeSIsImxpbmVQb3NBYnNvbHV0ZSIsInZQb3NpdGlvblJlbGF0aXZlIiwiaFZQb3NpdGlvbiIsInRhYkNsZWFyIiwic2V0TW9kZSIsInNldE1vZGVQcml2YXRlIiwicmVzZXRNb2RlIiwicmVzZXRNb2RlUHJpdmF0ZSIsImNoYXJBdHRyaWJ1dGVzIiwiZGV2aWNlU3RhdHVzIiwiZGV2aWNlU3RhdHVzUHJpdmF0ZSIsInNvZnRSZXNldCIsInNldEN1cnNvclN0eWxlIiwic2V0U2Nyb2xsUmVnaW9uIiwic2F2ZUN1cnNvciIsIndpbmRvd09wdGlvbnMiLCJyZXN0b3JlQ3Vyc29yIiwiaW5zZXJ0Q29sdW1ucyIsImRlbGV0ZUNvbHVtbnMiLCJzZWxlY3RQcm90ZWN0ZWQiLCJyZXF1ZXN0TW9kZSIsInNldEV4ZWN1dGVIYW5kbGVyIiwiQkVMIiwiYmVsbCIsIkxGIiwibGluZUZlZWQiLCJWVCIsIkZGIiwiY2FycmlhZ2VSZXR1cm4iLCJCUyIsImJhY2tzcGFjZSIsIkhUIiwidGFiIiwiU08iLCJzaGlmdE91dCIsIlNJIiwic2hpZnRJbiIsIkMxIiwiSU5EIiwiTkVMIiwibmV4dExpbmUiLCJIVFMiLCJ0YWJTZXQiLCJPc2NIYW5kbGVyIiwic2V0VGl0bGUiLCJzZXRJY29uTmFtZSIsInNldE9yUmVwb3J0SW5kZXhlZENvbG9yIiwic2V0SHlwZXJsaW5rIiwic2V0T3JSZXBvcnRGZ0NvbG9yIiwic2V0T3JSZXBvcnRCZ0NvbG9yIiwic2V0T3JSZXBvcnRDdXJzb3JDb2xvciIsInJlc3RvcmVJbmRleGVkQ29sb3IiLCJyZXN0b3JlRmdDb2xvciIsInJlc3RvcmVCZ0NvbG9yIiwicmVzdG9yZUN1cnNvckNvbG9yIiwicmV2ZXJzZUluZGV4Iiwia2V5cGFkQXBwbGljYXRpb25Nb2RlIiwia2V5cGFkTnVtZXJpY01vZGUiLCJmdWxsUmVzZXQiLCJzZXRnTGV2ZWwiLCJzZWxlY3REZWZhdWx0Q2hhcnNldCIsIkNIQVJTRVRTIiwic2VsZWN0Q2hhcnNldCIsInNjcmVlbkFsaWdubWVudFBhdHRlcm4iLCJzZXRFcnJvckhhbmRsZXIiLCJEY3NIYW5kbGVyIiwicmVxdWVzdFN0YXR1c1N0cmluZyIsImdldEF0dHJEYXRhIiwiX3ByZXNlcnZlU3RhY2siLCJfbG9nU2xvd1Jlc29sdmluZ0FzeW5jIiwiUHJvbWlzZSIsInJhY2UiLCJjYXRjaCIsIl9nZXRDdXJyZW50TGlua0lkIiwiREVCVUciLCJwcm90b3R5cGUiLCJzcGxpdCIsImNsZWFyUmFuZ2UiLCJkZWNvZGUiLCJjaGFyc2V0Iiwid3JhcGFyb3VuZCIsIm1vZGVzIiwiaW5zZXJ0TW9kZSIsIm1hcmtEaXJ0eSIsInNldENlbGxGcm9tQ29kZVBvaW50Iiwid2N3aWR0aCIsInN0cmluZ0Zyb21Db2RlUG9pbnQiLCJhZGRMaW5lVG9MaW5rIiwiX2VyYXNlQXR0ckRhdGEiLCJpbnNlcnRDZWxscyIsImdldE51bGxDZWxsIiwiTlVMTF9DRUxMX1dJRFRIIiwiYWRkQ29kZXBvaW50VG9DZWxsIiwicHJlY2VkaW5nQ29kZXBvaW50IiwiY29udmVydEVvbCIsInJldmVyc2VXcmFwYXJvdW5kIiwiX3Jlc3RyaWN0Q3Vyc29yIiwibmV4dFN0b3AiLCJfc2V0Q3Vyc29yIiwiX21vdmVDdXJzb3IiLCJ0YWJzIiwicHJldlN0b3AiLCJfZXJhc2VJbkJ1ZmZlckxpbmUiLCJyZXBsYWNlQ2VsbHMiLCJfcmVzZXRCdWZmZXJMaW5lIiwiY2xlYXJNYXJrZXJzIiwiZGVsZXRlQ2VsbHMiLCJfaXMiLCJ0ZXJtTmFtZSIsInNldGdDaGFyc2V0IiwiREVGQVVMVF9DSEFSU0VUIiwiYXBwbGljYXRpb25LZXlwYWQiLCJhY3RpdmVFbmNvZGluZyIsImFjdGl2YXRlQWx0QnVmZmVyIiwiYWN0aXZhdGVOb3JtYWxCdWZmZXIiLCJfdXBkYXRlQXR0ckNvbG9yIiwiZnJvbUNvbG9yUkdCIiwiX2V4dHJhY3RDb2xvciIsImhhc1N1YlBhcmFtcyIsImdldFN1YlBhcmFtcyIsInVuZGVybGluZUNvbG9yIiwiX3Byb2Nlc3NVbmRlcmxpbmUiLCJ1cGRhdGVFeHRlbmRlZCIsIl9wcm9jZXNzU0dSMCIsInNhdmVkWCIsInNhdmVkWSIsInNhdmVkQ3VyQXR0ckRhdGEiLCJzYXZlZENoYXJzZXQiLCJfc2F2ZWRDaGFyc2V0IiwiZXhlYyIsInBhcnNlQ29sb3IiLCJfY3JlYXRlSHlwZXJsaW5rIiwiX2ZpbmlzaEh5cGVybGluayIsImZpbmRJbmRleCIsInN0YXJ0c1dpdGgiLCJyZWdpc3RlckxpbmsiLCJfc2V0T3JSZXBvcnRTcGVjaWFsQ29sb3IiLCJtYXJrQWxsRGlydHkiLCJpc1Byb3RlY3RlZCIsImJsb2NrIiwiYmFyIiwiX2Rpc3Bvc2FibGVzIiwidW5yZWdpc3RlciIsIkZvdXJLZXlNYXAiLCJfZGF0YSIsImlzSXBob25lIiwiaXNJcGFkIiwiZ2V0U2FmYXJpVmVyc2lvbiIsImlzU2FmYXJpIiwibmF2aWdhdG9yIiwidXNlckFnZW50IiwicGxhdGZvcm0iLCJTb3J0ZWRMaXN0IiwiX2dldEtleSIsImluc2VydCIsIl9zZWFyY2giLCJmb3JFYWNoQnlLZXkiLCJ2YWx1ZXMiLCJJZGxlVGFza1F1ZXVlIiwiUHJpb3JpdHlUYXNrUXVldWUiLCJfdGFza3MiLCJfaSIsImVucXVldWUiLCJfc3RhcnQiLCJfaWRsZUNhbGxiYWNrIiwiX2NhbmNlbENhbGxiYWNrIiwiX3JlcXVlc3RDYWxsYmFjayIsIl9wcm9jZXNzIiwidGltZVJlbWFpbmluZyIsIl9jcmVhdGVEZWFkbGluZSIsInJlcXVlc3RJZGxlQ2FsbGJhY2siLCJjYW5jZWxJZGxlQ2FsbGJhY2siLCJfcXVldWUiLCJDSEFSX0RBVEFfQ09ERV9JTkRFWCIsIldISVRFU1BBQ0VfQ0VMTF9DT0RFIiwiRXh0ZW5kZWRBdHRycyIsImlzQmxpbmsiLCJpc0ZnUkdCIiwiaXNCZ1JHQiIsImlzRmdQYWxldHRlIiwiaXNCZ1BhbGV0dGUiLCJpc0ZnRGVmYXVsdCIsImlzQmdEZWZhdWx0IiwiaXNBdHRyaWJ1dGVEZWZhdWx0IiwiaXNFbXB0eSIsImdldFVuZGVybGluZUNvbG9yTW9kZSIsImlzVW5kZXJsaW5lQ29sb3JQYWxldHRlIiwiZ2V0VW5kZXJsaW5lU3R5bGUiLCJfZXh0IiwiX3VybElkIiwiZXh0IiwiQnVmZmVyIiwiTUFYX0JVRkZFUl9TSVpFIiwiX2hhc1Njcm9sbGJhY2siLCJfbnVsbENlbGwiLCJmcm9tQ2hhckRhdGEiLCJOVUxMX0NFTExfQ0hBUiIsIl93aGl0ZXNwYWNlQ2VsbCIsIldISVRFU1BBQ0VfQ0VMTF9XSURUSCIsIl9pc0NsZWFyaW5nIiwiX21lbW9yeUNsZWFudXBRdWV1ZSIsIl9tZW1vcnlDbGVhbnVwUG9zaXRpb24iLCJfY29scyIsIl9yb3dzIiwiX2dldENvcnJlY3RCdWZmZXJMZW5ndGgiLCJzZXR1cFRhYlN0b3BzIiwiZ2V0V2hpdGVzcGFjZUNlbGwiLCJCdWZmZXJMaW5lIiwic2Nyb2xsYmFjayIsImZpbGxWaWV3cG9ydFJvd3MiLCJfaXNSZWZsb3dFbmFibGVkIiwiX3JlZmxvdyIsIl9iYXRjaGVkTWVtb3J5Q2xlYW51cCIsImNsZWFudXBNZW1vcnkiLCJfcmVmbG93TGFyZ2VyIiwiX3JlZmxvd1NtYWxsZXIiLCJyZWZsb3dMYXJnZXJHZXRMaW5lc1RvUmVtb3ZlIiwicmVmbG93TGFyZ2VyQ3JlYXRlTmV3TGF5b3V0IiwicmVmbG93TGFyZ2VyQXBwbHlOZXdMYXlvdXQiLCJsYXlvdXQiLCJfcmVmbG93TGFyZ2VyQWRqdXN0Vmlld3BvcnQiLCJjb3VudFJlbW92ZWQiLCJyZWZsb3dTbWFsbGVyR2V0TmV3TGluZUxlbmd0aHMiLCJuZXdMaW5lcyIsImNvcHlDZWxsc0Zyb20iLCJnZXRXcmFwcGVkTGluZVRyaW1tZWRMZW5ndGgiLCJzZXRDZWxsIiwidGFiU3RvcFdpZHRoIiwiTWFya2VyIiwib25EaXNwb3NlIiwiX3JlbW92ZU1hcmtlciIsIl9jb21iaW5lZCIsIl9leHRlbmRlZEF0dHJzIiwiQ0hBUl9EQVRBX0FUVFJfSU5ERVgiLCJDSEFSX0RBVEFfQ0hBUl9JTkRFWCIsIkNIQVJfREFUQV9XSURUSF9JTkRFWCIsImJ5dGVMZW5ndGgiLCJrZXlzIiwiY29weUZyb20iLCJyZWR1Y2UiLCJCdWZmZXJTZXQiLCJfb25CdWZmZXJBY3RpdmF0ZSIsIl9ub3JtYWwiLCJfYWx0IiwiaW5hY3RpdmVCdWZmZXIiLCJERUZBVUxUX0VYVCIsIkRFRkFVTFRfQVRUUiIsIkRFRkFVTFRfQ09MT1IiLCJpc0Rpc3Bvc2VkIiwiX2lkIiwiX25leHRJZCIsIl9vbkRpc3Bvc2UiLCJqIiwicSIsInoiLCJRIiwiSyIsIlkiLCJaIiwiSCIsIk5VTCIsIlNPSCIsIlNUWCIsIkVPVCIsIkVOUSIsIkFDSyIsIkRMRSIsIkRDMSIsIkRDMiIsIkRDMyIsIkRDNCIsIk5BSyIsIlNZTiIsIkVUQiIsIkNBTiIsIkVNIiwiU1VCIiwiRlMiLCJHUyIsIlJTIiwiVVMiLCJTUCIsIlBBRCIsIkhPUCIsIkJQSCIsIk5CSCIsIlNTQSIsIkVTQSIsIkhUSiIsIlZUUyIsIlBMRCIsIlBMVSIsIlJJIiwiU1MyIiwiU1MzIiwiRENTIiwiUFUxIiwiUFUyIiwiU1RTIiwiQ0NIIiwiTVciLCJTUEEiLCJFUEEiLCJTT1MiLCJTR0NJIiwiU0NJIiwiQ1NJIiwiT1NDIiwiUE0iLCJBUEMiLCJ0b1VwcGVyQ2FzZSIsInRvTG93ZXJDYXNlIiwidXRmMzJUb1N0cmluZyIsIl9pbnRlcmltIiwiaW50ZXJpbSIsIlVpbnQ4QXJyYXkiLCJVbmljb2RlVjYiLCJ2ZXJzaW9uIiwiX2FjdGlvbiIsIl9jYWxsYmFja3MiLCJfcGVuZGluZ0RhdGEiLCJfYnVmZmVyT2Zmc2V0IiwiX2lzU3luY1dyaXRpbmciLCJfc3luY0NhbGxzIiwiX2RpZFVzZXJJbnB1dCIsIl9pbm5lcldyaXRlIiwicmVzb2x2ZSIsInRoZW4iLCJQQVlMT0FEX0xJTUlUIiwiRGNzUGFyc2VyIiwiX2hhbmRsZXJzIiwiY3JlYXRlIiwiX2FjdGl2ZSIsIl9pZGVudCIsIl9oYW5kbGVyRmIiLCJfc3RhY2siLCJsb29wUG9zaXRpb24iLCJmYWxsVGhyb3VnaCIsInJlZ2lzdGVySGFuZGxlciIsImNsZWFySGFuZGxlciIsInNldEhhbmRsZXJGYWxsYmFjayIsInVuaG9vayIsImhvb2siLCJwdXQiLCJQYXJhbXMiLCJhZGRQYXJhbSIsIl9oYW5kbGVyIiwiX3BhcmFtcyIsIl9oaXRMaW1pdCIsIlZUNTAwX1RSQU5TSVRJT05fVEFCTEUiLCJUcmFuc2l0aW9uVGFibGUiLCJ0YWJsZSIsInNldERlZmF1bHQiLCJhZGRNYW55IiwiYXBwbHkiLCJfdHJhbnNpdGlvbnMiLCJoYW5kbGVycyIsImhhbmRsZXJQb3MiLCJ0cmFuc2l0aW9uIiwiY2h1bmtQb3MiLCJpbml0aWFsU3RhdGUiLCJjdXJyZW50U3RhdGUiLCJfY29sbGVjdCIsIl9wcmludEhhbmRsZXJGYiIsIl9leGVjdXRlSGFuZGxlckZiIiwiX2NzaUhhbmRsZXJGYiIsIl9lc2NIYW5kbGVyRmIiLCJfZXJyb3JIYW5kbGVyRmIiLCJfcHJpbnRIYW5kbGVyIiwiX2V4ZWN1dGVIYW5kbGVycyIsIl9jc2lIYW5kbGVycyIsIl9lc2NIYW5kbGVycyIsIl9vc2NQYXJzZXIiLCJPc2NQYXJzZXIiLCJfZGNzUGFyc2VyIiwiX2Vycm9ySGFuZGxlciIsIl9pZGVudGlmaWVyIiwicmV2ZXJzZSIsImNsZWFyUHJpbnRIYW5kbGVyIiwiY2xlYXJFc2NIYW5kbGVyIiwiY2xlYXJFeGVjdXRlSGFuZGxlciIsImNsZWFyQ3NpSGFuZGxlciIsImNsZWFyRGNzSGFuZGxlciIsImNsZWFyT3NjSGFuZGxlciIsImNsZWFyRXJyb3JIYW5kbGVyIiwiY29sbGVjdCIsImFib3J0IiwiYWRkU3ViUGFyYW0iLCJhZGREaWdpdCIsIl9zdGF0ZSIsIl9wdXQiLCJtYXhTdWJQYXJhbXNMZW5ndGgiLCJJbnQzMkFycmF5IiwiX3N1YlBhcmFtcyIsIl9zdWJQYXJhbXNMZW5ndGgiLCJfc3ViUGFyYW1zSWR4IiwiVWludDE2QXJyYXkiLCJfcmVqZWN0RGlnaXRzIiwiX3JlamVjdFN1YkRpZ2l0cyIsIl9kaWdpdElzU3ViIiwiZ2V0U3ViUGFyYW1zQWxsIiwiQWRkb25NYW5hZ2VyIiwiX2FkZG9ucyIsImluc3RhbmNlIiwibG9hZEFkZG9uIiwiX3dyYXBwZWRBZGRvbkRpc3Bvc2UiLCJCdWZmZXJBcGlWaWV3IiwiX2J1ZmZlciIsImluaXQiLCJjdXJzb3JZIiwiY3Vyc29yWCIsInZpZXdwb3J0WSIsImJhc2VZIiwiZ2V0TGluZSIsIkJ1ZmZlckxpbmVBcGlWaWV3IiwiX2xpbmUiLCJnZXRDZWxsIiwiQnVmZmVyTmFtZXNwYWNlQXBpIiwiX2NvcmUiLCJfb25CdWZmZXJDaGFuZ2UiLCJvbkJ1ZmZlckNoYW5nZSIsIl9hbHRlcm5hdGUiLCJhbHRlcm5hdGUiLCJQYXJzZXJBcGkiLCJhZGRDc2lIYW5kbGVyIiwiYWRkRGNzSGFuZGxlciIsImFkZEVzY0hhbmRsZXIiLCJhZGRPc2NIYW5kbGVyIiwiVW5pY29kZUFwaSIsInZlcnNpb25zIiwiYWN0aXZlVmVyc2lvbiIsImlzVXNlclNjcm9sbGluZyIsIl9jYWNoZWRCbGFua0xpbmUiLCJnbGV2ZWwiLCJfY2hhcnNldHMiLCJOT05FIiwiZXZlbnRzIiwicmVzdHJpY3QiLCJYMTAiLCJWVDIwMCIsIkRSQUciLCJBTlkiLCJERUZBVUxUIiwiU0dSIiwiU0dSX1BJWEVMUyIsIl9wcm90b2NvbHMiLCJfZW5jb2RpbmdzIiwiX2FjdGl2ZVByb3RvY29sIiwiX2FjdGl2ZUVuY29kaW5nIiwiX2xhc3RFdmVudCIsIl9vblByb3RvY29sQ2hhbmdlIiwiYWRkUHJvdG9jb2wiLCJhZGRFbmNvZGluZyIsIl9lcXVhbEV2ZW50cyIsInRyaWdnZXJCaW5hcnlFdmVudCIsImRvd24iLCJ1cCIsImRyYWciLCJtb3ZlIiwiX29uVXNlcklucHV0IiwiX29uUmVxdWVzdFNjcm9sbFRvQm90dG9tIiwiZGlzYWJsZVN0ZGluIiwiX2RlY29yYXRpb25zIiwiX29uRGVjb3JhdGlvblJlZ2lzdGVyZWQiLCJfb25EZWNvcmF0aW9uUmVtb3ZlZCIsImdldEtleUl0ZXJhdG9yIiwiX2NhY2hlZEJnIiwiX2NhY2hlZEZnIiwiZm9yZWdyb3VuZENvbG9yIiwiU2VydmljZUNvbGxlY3Rpb24iLCJfZW50cmllcyIsIl9zZXJ2aWNlcyIsImdldFNlcnZpY2UiLCJnZXRTZXJ2aWNlRGVwZW5kZW5jaWVzIiwic29ydCIsIm5hbWUiLCJpbmZvIiwiSU5GTyIsIkVSUk9SIiwib2ZmIiwiT0ZGIiwiX3VwZGF0ZUxvZ0xldmVsIiwiX2V2YWxMYXp5T3B0aW9uYWxQYXJhbXMiLCJfbG9nIiwibG9nIiwiREVGQVVMVF9PUFRJT05TIiwiY3VzdG9tR2x5cGhzIiwiYWxsb3dQcm9wb3NlZEFwaSIsImFsbG93VHJhbnNwYXJlbmN5IiwiX29uT3B0aW9uQ2hhbmdlIiwiYXNzaWduIiwiX3Nhbml0aXplQW5kVmFsaWRhdGVPcHRpb24iLCJfc2V0dXBPcHRpb25zIiwiX2VudHJpZXNXaXRoSWQiLCJfZGF0YUJ5TGlua0lkIiwiX3JlbW92ZU1hcmtlckZyb21MaW5rIiwiX2dldEVudHJ5SWRLZXkiLCJldmVyeSIsInNlcnZpY2VSZWdpc3RyeSIsImRpJGRlcGVuZGVuY2llcyIsImRpJHRhcmdldCIsIl9wcm92aWRlcnMiLCJfb25DaGFuZ2UiLCJvbkNoYW5nZSIsIl9hY3RpdmVQcm92aWRlciIsImdldFN0cmluZ0NlbGxXaWR0aCIsImV4cG9ydHMiLCJfYWRkb25NYW5hZ2VyIiwiX3B1YmxpY09wdGlvbnMiLCJfY2hlY2tSZWFkb25seU9wdGlvbnMiLCJfY2hlY2tQcm9wb3NlZEFwaSIsInBhcnNlciIsInVuaWNvZGUiLCJhcHBsaWNhdGlvbkN1cnNvcktleXNNb2RlIiwiYXBwbGljYXRpb25LZXlwYWRNb2RlIiwibW91c2VUcmFja2luZ01vZGUiLCJvcmlnaW5Nb2RlIiwicmV2ZXJzZVdyYXBhcm91bmRNb2RlIiwic2VuZEZvY3VzTW9kZSIsIndyYXBhcm91bmRNb2RlIiwiX3ZlcmlmeUludGVnZXJzIiwicmVnaXN0ZXJNYXJrZXIiLCJfdmVyaWZ5UG9zaXRpdmVJbnRlZ2VycyIsIndyaXRlbG4iLCJzdHJpbmdzIiwibW9kdWxlIiwiX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fIiwiX193ZWJwYWNrX3JlcXVpcmVfXyIsIm1vZHVsZUlkIiwiY2FjaGVkTW9kdWxlIiwidW5kZWZpbmVkIiwiX193ZWJwYWNrX21vZHVsZXNfXyIsIl9BU1NFTUJMWV9OQU1FIiwiX3Rlcm1pbmFscyIsIl9hZGRvbkxpc3QiLCJnZXRSb3dzIiwiZ2V0VGVybWluYWxCeUlkIiwidGVybWluYWwiLCJnZXRDb2xzIiwiZ2V0T3B0aW9ucyIsInNldE9wdGlvbnMiLCJjb2x1bW5zIiwiY29sdW1uIiwicGFnZUNvdW50IiwicmVnaXN0ZXJUZXJtaW5hbCIsInJlZiIsImFkZG9uSWRzIiwiRG90TmV0IiwiaW52b2tlTWV0aG9kQXN5bmMiLCJjb252ZXJ0VG9BcmdzIiwibmV3UG9zaXRpb24iLCJ0aXRsZSIsImludm9rZU1ldGhvZCIsImN1c3RvbUtleUV2ZW50SGFuZGxlciIsImFkZG9ucyIsImFkZG9uSWQiLCJhZGRvbiIsImdldFByb3RvdHlwZU9mIiwicmVnaXN0ZXJBZGRvbiIsInJlZ2lzdGVyQWRkb25zIiwiZGlzcG9zZVRlcm1pbmFsIiwiaW52b2tlQWRkb25GdW5jdGlvbiIsImZ1bmN0aW9uTmFtZSIsIlh0ZXJtQmxhem9yIl0sInNvdXJjZVJvb3QiOiIifQ== \ No newline at end of file +(()=>{var e={320:e=>{var t;self,t=()=>(()=>{"use strict";var e={4567:function(e,t,i){var s=this&&this.__decorate||function(e,t,i,s){var r,n=arguments.length,o=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,i):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,s);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(n<3?r(o):n>3?r(t,i,o):r(t,i))||o);return n>3&&o&&Object.defineProperty(t,i,o),o},r=this&&this.__param||function(e,t){return function(i,s){t(i,s,e)}};Object.defineProperty(t,"__esModule",{value:!0}),t.AccessibilityManager=void 0;const n=i(9042),o=i(6114),a=i(9924),h=i(844),c=i(5596),l=i(4725),d=i(3656);let _=t.AccessibilityManager=class extends h.Disposable{constructor(e,t){super(),this._terminal=e,this._renderService=t,this._liveRegionLineCount=0,this._charsToConsume=[],this._charsToAnnounce="",this._accessibilityContainer=document.createElement("div"),this._accessibilityContainer.classList.add("xterm-accessibility"),this._rowContainer=document.createElement("div"),this._rowContainer.setAttribute("role","list"),this._rowContainer.classList.add("xterm-accessibility-tree"),this._rowElements=[];for(let e=0;ethis._handleBoundaryFocus(e,0),this._bottomBoundaryFocusListener=e=>this._handleBoundaryFocus(e,1),this._rowElements[0].addEventListener("focus",this._topBoundaryFocusListener),this._rowElements[this._rowElements.length-1].addEventListener("focus",this._bottomBoundaryFocusListener),this._refreshRowsDimensions(),this._accessibilityContainer.appendChild(this._rowContainer),this._liveRegion=document.createElement("div"),this._liveRegion.classList.add("live-region"),this._liveRegion.setAttribute("aria-live","assertive"),this._accessibilityContainer.appendChild(this._liveRegion),this._liveRegionDebouncer=this.register(new a.TimeBasedDebouncer(this._renderRows.bind(this))),!this._terminal.element)throw new Error("Cannot enable accessibility before Terminal.open");this._terminal.element.insertAdjacentElement("afterbegin",this._accessibilityContainer),this.register(this._terminal.onResize((e=>this._handleResize(e.rows)))),this.register(this._terminal.onRender((e=>this._refreshRows(e.start,e.end)))),this.register(this._terminal.onScroll((()=>this._refreshRows()))),this.register(this._terminal.onA11yChar((e=>this._handleChar(e)))),this.register(this._terminal.onLineFeed((()=>this._handleChar("\n")))),this.register(this._terminal.onA11yTab((e=>this._handleTab(e)))),this.register(this._terminal.onKey((e=>this._handleKey(e.key)))),this.register(this._terminal.onBlur((()=>this._clearLiveRegion()))),this.register(this._renderService.onDimensionsChange((()=>this._refreshRowsDimensions()))),this._screenDprMonitor=new c.ScreenDprMonitor(window),this.register(this._screenDprMonitor),this._screenDprMonitor.setListener((()=>this._refreshRowsDimensions())),this.register((0,d.addDisposableDomListener)(window,"resize",(()=>this._refreshRowsDimensions()))),this._refreshRows(),this.register((0,h.toDisposable)((()=>{this._accessibilityContainer.remove(),this._rowElements.length=0})))}_handleTab(e){for(let t=0;t0?this._charsToConsume.shift()!==e&&(this._charsToAnnounce+=e):this._charsToAnnounce+=e,"\n"===e&&(this._liveRegionLineCount++,21===this._liveRegionLineCount&&(this._liveRegion.textContent+=n.tooMuchOutput)),o.isMac&&this._liveRegion.textContent&&this._liveRegion.textContent.length>0&&!this._liveRegion.parentNode&&setTimeout((()=>{this._accessibilityContainer.appendChild(this._liveRegion)}),0))}_clearLiveRegion(){this._liveRegion.textContent="",this._liveRegionLineCount=0,o.isMac&&this._liveRegion.remove()}_handleKey(e){this._clearLiveRegion(),/\p{Control}/u.test(e)||this._charsToConsume.push(e)}_refreshRows(e,t){this._liveRegionDebouncer.refresh(e,t,this._terminal.rows)}_renderRows(e,t){const i=this._terminal.buffer,s=i.lines.length.toString();for(let r=e;r<=t;r++){const e=i.translateBufferLineToString(i.ydisp+r,!0),t=(i.ydisp+r+1).toString(),n=this._rowElements[r];n&&(0===e.length?n.innerText=" ":n.textContent=e,n.setAttribute("aria-posinset",t),n.setAttribute("aria-setsize",s))}this._announceCharacters()}_announceCharacters(){0!==this._charsToAnnounce.length&&(this._liveRegion.textContent+=this._charsToAnnounce,this._charsToAnnounce="")}_handleBoundaryFocus(e,t){const i=e.target,s=this._rowElements[0===t?1:this._rowElements.length-2];if(i.getAttribute("aria-posinset")===(0===t?"1":`${this._terminal.buffer.lines.length}`))return;if(e.relatedTarget!==s)return;let r,n;if(0===t?(r=i,n=this._rowElements.pop(),this._rowContainer.removeChild(n)):(r=this._rowElements.shift(),n=i,this._rowContainer.removeChild(r)),r.removeEventListener("focus",this._topBoundaryFocusListener),n.removeEventListener("focus",this._bottomBoundaryFocusListener),0===t){const e=this._createAccessibilityTreeNode();this._rowElements.unshift(e),this._rowContainer.insertAdjacentElement("afterbegin",e)}else{const e=this._createAccessibilityTreeNode();this._rowElements.push(e),this._rowContainer.appendChild(e)}this._rowElements[0].addEventListener("focus",this._topBoundaryFocusListener),this._rowElements[this._rowElements.length-1].addEventListener("focus",this._bottomBoundaryFocusListener),this._terminal.scrollLines(0===t?-1:1),this._rowElements[0===t?1:this._rowElements.length-2].focus(),e.preventDefault(),e.stopImmediatePropagation()}_handleResize(e){this._rowElements[this._rowElements.length-1].removeEventListener("focus",this._bottomBoundaryFocusListener);for(let e=this._rowContainer.children.length;ee;)this._rowContainer.removeChild(this._rowElements.pop());this._rowElements[this._rowElements.length-1].addEventListener("focus",this._bottomBoundaryFocusListener),this._refreshRowsDimensions()}_createAccessibilityTreeNode(){const e=document.createElement("div");return e.setAttribute("role","listitem"),e.tabIndex=-1,this._refreshRowDimensions(e),e}_refreshRowsDimensions(){if(this._renderService.dimensions.css.cell.height){this._accessibilityContainer.style.width=`${this._renderService.dimensions.css.canvas.width}px`,this._rowElements.length!==this._terminal.rows&&this._handleResize(this._terminal.rows);for(let e=0;e{function i(e){return e.replace(/\r?\n/g,"\r")}function s(e,t){return t?"[200~"+e+"[201~":e}function r(e,t,r,n){e=s(e=i(e),r.decPrivateModes.bracketedPasteMode&&!0!==n.rawOptions.ignoreBracketedPasteMode),r.triggerDataEvent(e,!0),t.value=""}function n(e,t,i){const s=i.getBoundingClientRect(),r=e.clientX-s.left-10,n=e.clientY-s.top-10;t.style.width="20px",t.style.height="20px",t.style.left=`${r}px`,t.style.top=`${n}px`,t.style.zIndex="1000",t.focus()}Object.defineProperty(t,"__esModule",{value:!0}),t.rightClickHandler=t.moveTextAreaUnderMouseCursor=t.paste=t.handlePasteEvent=t.copyHandler=t.bracketTextForPaste=t.prepareTextForTerminal=void 0,t.prepareTextForTerminal=i,t.bracketTextForPaste=s,t.copyHandler=function(e,t){e.clipboardData&&e.clipboardData.setData("text/plain",t.selectionText),e.preventDefault()},t.handlePasteEvent=function(e,t,i,s){e.stopPropagation(),e.clipboardData&&r(e.clipboardData.getData("text/plain"),t,i,s)},t.paste=r,t.moveTextAreaUnderMouseCursor=n,t.rightClickHandler=function(e,t,i,s,r){n(e,t,i),r&&s.rightClickSelect(e),t.value=s.selectionText,t.select()}},7239:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ColorContrastCache=void 0;const s=i(1505);t.ColorContrastCache=class{constructor(){this._color=new s.TwoKeyMap,this._css=new s.TwoKeyMap}setCss(e,t,i){this._css.set(e,t,i)}getCss(e,t){return this._css.get(e,t)}setColor(e,t,i){this._color.set(e,t,i)}getColor(e,t){return this._color.get(e,t)}clear(){this._color.clear(),this._css.clear()}}},3656:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.addDisposableDomListener=void 0,t.addDisposableDomListener=function(e,t,i,s){e.addEventListener(t,i,s);let r=!1;return{dispose:()=>{r||(r=!0,e.removeEventListener(t,i,s))}}}},6465:function(e,t,i){var s=this&&this.__decorate||function(e,t,i,s){var r,n=arguments.length,o=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,i):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,s);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(n<3?r(o):n>3?r(t,i,o):r(t,i))||o);return n>3&&o&&Object.defineProperty(t,i,o),o},r=this&&this.__param||function(e,t){return function(i,s){t(i,s,e)}};Object.defineProperty(t,"__esModule",{value:!0}),t.Linkifier2=void 0;const n=i(3656),o=i(8460),a=i(844),h=i(2585);let c=t.Linkifier2=class extends a.Disposable{get currentLink(){return this._currentLink}constructor(e){super(),this._bufferService=e,this._linkProviders=[],this._linkCacheDisposables=[],this._isMouseOut=!0,this._wasResized=!1,this._activeLine=-1,this._onShowLinkUnderline=this.register(new o.EventEmitter),this.onShowLinkUnderline=this._onShowLinkUnderline.event,this._onHideLinkUnderline=this.register(new o.EventEmitter),this.onHideLinkUnderline=this._onHideLinkUnderline.event,this.register((0,a.getDisposeArrayDisposable)(this._linkCacheDisposables)),this.register((0,a.toDisposable)((()=>{this._lastMouseEvent=void 0}))),this.register(this._bufferService.onResize((()=>{this._clearCurrentLink(),this._wasResized=!0})))}registerLinkProvider(e){return this._linkProviders.push(e),{dispose:()=>{const t=this._linkProviders.indexOf(e);-1!==t&&this._linkProviders.splice(t,1)}}}attachToDom(e,t,i){this._element=e,this._mouseService=t,this._renderService=i,this.register((0,n.addDisposableDomListener)(this._element,"mouseleave",(()=>{this._isMouseOut=!0,this._clearCurrentLink()}))),this.register((0,n.addDisposableDomListener)(this._element,"mousemove",this._handleMouseMove.bind(this))),this.register((0,n.addDisposableDomListener)(this._element,"mousedown",this._handleMouseDown.bind(this))),this.register((0,n.addDisposableDomListener)(this._element,"mouseup",this._handleMouseUp.bind(this)))}_handleMouseMove(e){if(this._lastMouseEvent=e,!this._element||!this._mouseService)return;const t=this._positionFromMouseEvent(e,this._element,this._mouseService);if(!t)return;this._isMouseOut=!1;const i=e.composedPath();for(let e=0;e{null==e||e.forEach((e=>{e.link.dispose&&e.link.dispose()}))})),this._activeProviderReplies=new Map,this._activeLine=e.y);let r=!1;for(const[i,n]of this._linkProviders.entries())t?(null===(s=this._activeProviderReplies)||void 0===s?void 0:s.get(i))&&(r=this._checkLinkProviderResult(i,e,r)):n.provideLinks(e.y,(t=>{var s,n;if(this._isMouseOut)return;const o=null==t?void 0:t.map((e=>({link:e})));null===(s=this._activeProviderReplies)||void 0===s||s.set(i,o),r=this._checkLinkProviderResult(i,e,r),(null===(n=this._activeProviderReplies)||void 0===n?void 0:n.size)===this._linkProviders.length&&this._removeIntersectingLinks(e.y,this._activeProviderReplies)}))}_removeIntersectingLinks(e,t){const i=new Set;for(let s=0;se?this._bufferService.cols:s.link.range.end.x;for(let e=n;e<=o;e++){if(i.has(e)){r.splice(t--,1);break}i.add(e)}}}}_checkLinkProviderResult(e,t,i){var s;if(!this._activeProviderReplies)return i;const r=this._activeProviderReplies.get(e);let n=!1;for(let t=0;tthis._linkAtPosition(e.link,t)));e&&(i=!0,this._handleNewLink(e))}if(this._activeProviderReplies.size===this._linkProviders.length&&!i)for(let e=0;ethis._linkAtPosition(e.link,t)));if(r){i=!0,this._handleNewLink(r);break}}return i}_handleMouseDown(){this._mouseDownLink=this._currentLink}_handleMouseUp(e){if(!this._element||!this._mouseService||!this._currentLink)return;const t=this._positionFromMouseEvent(e,this._element,this._mouseService);t&&this._mouseDownLink===this._currentLink&&this._linkAtPosition(this._currentLink.link,t)&&this._currentLink.link.activate(e,this._currentLink.link.text)}_clearCurrentLink(e,t){this._element&&this._currentLink&&this._lastMouseEvent&&(!e||!t||this._currentLink.link.range.start.y>=e&&this._currentLink.link.range.end.y<=t)&&(this._linkLeave(this._element,this._currentLink.link,this._lastMouseEvent),this._currentLink=void 0,(0,a.disposeArray)(this._linkCacheDisposables))}_handleNewLink(e){if(!this._element||!this._lastMouseEvent||!this._mouseService)return;const t=this._positionFromMouseEvent(this._lastMouseEvent,this._element,this._mouseService);t&&this._linkAtPosition(e.link,t)&&(this._currentLink=e,this._currentLink.state={decorations:{underline:void 0===e.link.decorations||e.link.decorations.underline,pointerCursor:void 0===e.link.decorations||e.link.decorations.pointerCursor},isHovered:!0},this._linkHover(this._element,e.link,this._lastMouseEvent),e.link.decorations={},Object.defineProperties(e.link.decorations,{pointerCursor:{get:()=>{var e,t;return null===(t=null===(e=this._currentLink)||void 0===e?void 0:e.state)||void 0===t?void 0:t.decorations.pointerCursor},set:e=>{var t,i;(null===(t=this._currentLink)||void 0===t?void 0:t.state)&&this._currentLink.state.decorations.pointerCursor!==e&&(this._currentLink.state.decorations.pointerCursor=e,this._currentLink.state.isHovered&&(null===(i=this._element)||void 0===i||i.classList.toggle("xterm-cursor-pointer",e)))}},underline:{get:()=>{var e,t;return null===(t=null===(e=this._currentLink)||void 0===e?void 0:e.state)||void 0===t?void 0:t.decorations.underline},set:t=>{var i,s,r;(null===(i=this._currentLink)||void 0===i?void 0:i.state)&&(null===(r=null===(s=this._currentLink)||void 0===s?void 0:s.state)||void 0===r?void 0:r.decorations.underline)!==t&&(this._currentLink.state.decorations.underline=t,this._currentLink.state.isHovered&&this._fireUnderlineEvent(e.link,t))}}}),this._renderService&&this._linkCacheDisposables.push(this._renderService.onRenderedViewportChange((e=>{if(!this._currentLink)return;const t=0===e.start?0:e.start+1+this._bufferService.buffer.ydisp,i=this._bufferService.buffer.ydisp+1+e.end;if(this._currentLink.link.range.start.y>=t&&this._currentLink.link.range.end.y<=i&&(this._clearCurrentLink(t,i),this._lastMouseEvent&&this._element)){const e=this._positionFromMouseEvent(this._lastMouseEvent,this._element,this._mouseService);e&&this._askForLink(e,!1)}}))))}_linkHover(e,t,i){var s;(null===(s=this._currentLink)||void 0===s?void 0:s.state)&&(this._currentLink.state.isHovered=!0,this._currentLink.state.decorations.underline&&this._fireUnderlineEvent(t,!0),this._currentLink.state.decorations.pointerCursor&&e.classList.add("xterm-cursor-pointer")),t.hover&&t.hover(i,t.text)}_fireUnderlineEvent(e,t){const i=e.range,s=this._bufferService.buffer.ydisp,r=this._createLinkUnderlineEvent(i.start.x-1,i.start.y-s-1,i.end.x,i.end.y-s-1,void 0);(t?this._onShowLinkUnderline:this._onHideLinkUnderline).fire(r)}_linkLeave(e,t,i){var s;(null===(s=this._currentLink)||void 0===s?void 0:s.state)&&(this._currentLink.state.isHovered=!1,this._currentLink.state.decorations.underline&&this._fireUnderlineEvent(t,!1),this._currentLink.state.decorations.pointerCursor&&e.classList.remove("xterm-cursor-pointer")),t.leave&&t.leave(i,t.text)}_linkAtPosition(e,t){const i=e.range.start.y*this._bufferService.cols+e.range.start.x,s=e.range.end.y*this._bufferService.cols+e.range.end.x,r=t.y*this._bufferService.cols+t.x;return i<=r&&r<=s}_positionFromMouseEvent(e,t,i){const s=i.getCoords(e,t,this._bufferService.cols,this._bufferService.rows);if(s)return{x:s[0],y:s[1]+this._bufferService.buffer.ydisp}}_createLinkUnderlineEvent(e,t,i,s,r){return{x1:e,y1:t,x2:i,y2:s,cols:this._bufferService.cols,fg:r}}};t.Linkifier2=c=s([r(0,h.IBufferService)],c)},9042:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.tooMuchOutput=t.promptLabel=void 0,t.promptLabel="Terminal input",t.tooMuchOutput="Too much output to announce, navigate to rows manually to read"},3730:function(e,t,i){var s=this&&this.__decorate||function(e,t,i,s){var r,n=arguments.length,o=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,i):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,s);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(n<3?r(o):n>3?r(t,i,o):r(t,i))||o);return n>3&&o&&Object.defineProperty(t,i,o),o},r=this&&this.__param||function(e,t){return function(i,s){t(i,s,e)}};Object.defineProperty(t,"__esModule",{value:!0}),t.OscLinkProvider=void 0;const n=i(511),o=i(2585);let a=t.OscLinkProvider=class{constructor(e,t,i){this._bufferService=e,this._optionsService=t,this._oscLinkService=i}provideLinks(e,t){var i;const s=this._bufferService.buffer.lines.get(e-1);if(!s)return void t(void 0);const r=[],o=this._optionsService.rawOptions.linkHandler,a=new n.CellData,c=s.getTrimmedLength();let l=-1,d=-1,_=!1;for(let t=0;to?o.activate(e,t,i):h(0,t),hover:(e,t)=>{var s;return null===(s=null==o?void 0:o.hover)||void 0===s?void 0:s.call(o,e,t,i)},leave:(e,t)=>{var s;return null===(s=null==o?void 0:o.leave)||void 0===s?void 0:s.call(o,e,t,i)}})}_=!1,a.hasExtendedAttrs()&&a.extended.urlId?(d=t,l=a.extended.urlId):(d=-1,l=-1)}}t(r)}};function h(e,t){if(confirm(`Do you want to navigate to ${t}?\n\nWARNING: This link could potentially be dangerous`)){const i=window.open();if(i){try{i.opener=null}catch(e){}i.location.href=t}else console.warn("Opening link blocked as opener could not be cleared")}}t.OscLinkProvider=a=s([r(0,o.IBufferService),r(1,o.IOptionsService),r(2,o.IOscLinkService)],a)},6193:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.RenderDebouncer=void 0,t.RenderDebouncer=class{constructor(e,t){this._parentWindow=e,this._renderCallback=t,this._refreshCallbacks=[]}dispose(){this._animationFrame&&(this._parentWindow.cancelAnimationFrame(this._animationFrame),this._animationFrame=void 0)}addRefreshCallback(e){return this._refreshCallbacks.push(e),this._animationFrame||(this._animationFrame=this._parentWindow.requestAnimationFrame((()=>this._innerRefresh()))),this._animationFrame}refresh(e,t,i){this._rowCount=i,e=void 0!==e?e:0,t=void 0!==t?t:this._rowCount-1,this._rowStart=void 0!==this._rowStart?Math.min(this._rowStart,e):e,this._rowEnd=void 0!==this._rowEnd?Math.max(this._rowEnd,t):t,this._animationFrame||(this._animationFrame=this._parentWindow.requestAnimationFrame((()=>this._innerRefresh())))}_innerRefresh(){if(this._animationFrame=void 0,void 0===this._rowStart||void 0===this._rowEnd||void 0===this._rowCount)return void this._runRefreshCallbacks();const e=Math.max(this._rowStart,0),t=Math.min(this._rowEnd,this._rowCount-1);this._rowStart=void 0,this._rowEnd=void 0,this._renderCallback(e,t),this._runRefreshCallbacks()}_runRefreshCallbacks(){for(const e of this._refreshCallbacks)e(0);this._refreshCallbacks=[]}}},5596:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ScreenDprMonitor=void 0;const s=i(844);class r extends s.Disposable{constructor(e){super(),this._parentWindow=e,this._currentDevicePixelRatio=this._parentWindow.devicePixelRatio,this.register((0,s.toDisposable)((()=>{this.clearListener()})))}setListener(e){this._listener&&this.clearListener(),this._listener=e,this._outerListener=()=>{this._listener&&(this._listener(this._parentWindow.devicePixelRatio,this._currentDevicePixelRatio),this._updateDpr())},this._updateDpr()}_updateDpr(){var e;this._outerListener&&(null===(e=this._resolutionMediaMatchList)||void 0===e||e.removeListener(this._outerListener),this._currentDevicePixelRatio=this._parentWindow.devicePixelRatio,this._resolutionMediaMatchList=this._parentWindow.matchMedia(`screen and (resolution: ${this._parentWindow.devicePixelRatio}dppx)`),this._resolutionMediaMatchList.addListener(this._outerListener))}clearListener(){this._resolutionMediaMatchList&&this._listener&&this._outerListener&&(this._resolutionMediaMatchList.removeListener(this._outerListener),this._resolutionMediaMatchList=void 0,this._listener=void 0,this._outerListener=void 0)}}t.ScreenDprMonitor=r},3236:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.Terminal=void 0;const s=i(3614),r=i(3656),n=i(6465),o=i(9042),a=i(3730),h=i(1680),c=i(3107),l=i(5744),d=i(2950),_=i(1296),u=i(428),f=i(4269),v=i(5114),g=i(8934),p=i(3230),m=i(9312),S=i(4725),C=i(6731),b=i(8055),y=i(8969),w=i(8460),E=i(844),k=i(6114),L=i(8437),D=i(2584),R=i(7399),A=i(5941),B=i(9074),x=i(2585),T=i(5435),M=i(4567),O="undefined"!=typeof window?window.document:null;class P extends y.CoreTerminal{get onFocus(){return this._onFocus.event}get onBlur(){return this._onBlur.event}get onA11yChar(){return this._onA11yCharEmitter.event}get onA11yTab(){return this._onA11yTabEmitter.event}get onWillOpen(){return this._onWillOpen.event}constructor(e={}){super(e),this.browser=k,this._keyDownHandled=!1,this._keyDownSeen=!1,this._keyPressHandled=!1,this._unprocessedDeadKey=!1,this._accessibilityManager=this.register(new E.MutableDisposable),this._onCursorMove=this.register(new w.EventEmitter),this.onCursorMove=this._onCursorMove.event,this._onKey=this.register(new w.EventEmitter),this.onKey=this._onKey.event,this._onRender=this.register(new w.EventEmitter),this.onRender=this._onRender.event,this._onSelectionChange=this.register(new w.EventEmitter),this.onSelectionChange=this._onSelectionChange.event,this._onTitleChange=this.register(new w.EventEmitter),this.onTitleChange=this._onTitleChange.event,this._onBell=this.register(new w.EventEmitter),this.onBell=this._onBell.event,this._onFocus=this.register(new w.EventEmitter),this._onBlur=this.register(new w.EventEmitter),this._onA11yCharEmitter=this.register(new w.EventEmitter),this._onA11yTabEmitter=this.register(new w.EventEmitter),this._onWillOpen=this.register(new w.EventEmitter),this._setup(),this.linkifier2=this.register(this._instantiationService.createInstance(n.Linkifier2)),this.linkifier2.registerLinkProvider(this._instantiationService.createInstance(a.OscLinkProvider)),this._decorationService=this._instantiationService.createInstance(B.DecorationService),this._instantiationService.setService(x.IDecorationService,this._decorationService),this.register(this._inputHandler.onRequestBell((()=>this._onBell.fire()))),this.register(this._inputHandler.onRequestRefreshRows(((e,t)=>this.refresh(e,t)))),this.register(this._inputHandler.onRequestSendFocus((()=>this._reportFocus()))),this.register(this._inputHandler.onRequestReset((()=>this.reset()))),this.register(this._inputHandler.onRequestWindowsOptionsReport((e=>this._reportWindowsOptions(e)))),this.register(this._inputHandler.onColor((e=>this._handleColorEvent(e)))),this.register((0,w.forwardEvent)(this._inputHandler.onCursorMove,this._onCursorMove)),this.register((0,w.forwardEvent)(this._inputHandler.onTitleChange,this._onTitleChange)),this.register((0,w.forwardEvent)(this._inputHandler.onA11yChar,this._onA11yCharEmitter)),this.register((0,w.forwardEvent)(this._inputHandler.onA11yTab,this._onA11yTabEmitter)),this.register(this._bufferService.onResize((e=>this._afterResize(e.cols,e.rows)))),this.register((0,E.toDisposable)((()=>{var e,t;this._customKeyEventHandler=void 0,null===(t=null===(e=this.element)||void 0===e?void 0:e.parentNode)||void 0===t||t.removeChild(this.element)})))}_handleColorEvent(e){if(this._themeService)for(const t of e){let e,i="";switch(t.index){case 256:e="foreground",i="10";break;case 257:e="background",i="11";break;case 258:e="cursor",i="12";break;default:e="ansi",i="4;"+t.index}switch(t.type){case 0:const s=b.color.toColorRGB("ansi"===e?this._themeService.colors.ansi[t.index]:this._themeService.colors[e]);this.coreService.triggerDataEvent(`${D.C0.ESC}]${i};${(0,A.toRgbString)(s)}${D.C1_ESCAPED.ST}`);break;case 1:if("ansi"===e)this._themeService.modifyColors((e=>e.ansi[t.index]=b.rgba.toColor(...t.color)));else{const i=e;this._themeService.modifyColors((e=>e[i]=b.rgba.toColor(...t.color)))}break;case 2:this._themeService.restoreColor(t.index)}}}_setup(){super._setup(),this._customKeyEventHandler=void 0}get buffer(){return this.buffers.active}focus(){this.textarea&&this.textarea.focus({preventScroll:!0})}_handleScreenReaderModeOptionChange(e){e?!this._accessibilityManager.value&&this._renderService&&(this._accessibilityManager.value=this._instantiationService.createInstance(M.AccessibilityManager,this)):this._accessibilityManager.clear()}_handleTextAreaFocus(e){this.coreService.decPrivateModes.sendFocus&&this.coreService.triggerDataEvent(D.C0.ESC+"[I"),this.updateCursorStyle(e),this.element.classList.add("focus"),this._showCursor(),this._onFocus.fire()}blur(){var e;return null===(e=this.textarea)||void 0===e?void 0:e.blur()}_handleTextAreaBlur(){this.textarea.value="",this.refresh(this.buffer.y,this.buffer.y),this.coreService.decPrivateModes.sendFocus&&this.coreService.triggerDataEvent(D.C0.ESC+"[O"),this.element.classList.remove("focus"),this._onBlur.fire()}_syncTextArea(){if(!this.textarea||!this.buffer.isCursorInViewport||this._compositionHelper.isComposing||!this._renderService)return;const e=this.buffer.ybase+this.buffer.y,t=this.buffer.lines.get(e);if(!t)return;const i=Math.min(this.buffer.x,this.cols-1),s=this._renderService.dimensions.css.cell.height,r=t.getWidth(i),n=this._renderService.dimensions.css.cell.width*r,o=this.buffer.y*this._renderService.dimensions.css.cell.height,a=i*this._renderService.dimensions.css.cell.width;this.textarea.style.left=a+"px",this.textarea.style.top=o+"px",this.textarea.style.width=n+"px",this.textarea.style.height=s+"px",this.textarea.style.lineHeight=s+"px",this.textarea.style.zIndex="-5"}_initGlobal(){this._bindKeys(),this.register((0,r.addDisposableDomListener)(this.element,"copy",(e=>{this.hasSelection()&&(0,s.copyHandler)(e,this._selectionService)})));const e=e=>(0,s.handlePasteEvent)(e,this.textarea,this.coreService,this.optionsService);this.register((0,r.addDisposableDomListener)(this.textarea,"paste",e)),this.register((0,r.addDisposableDomListener)(this.element,"paste",e)),k.isFirefox?this.register((0,r.addDisposableDomListener)(this.element,"mousedown",(e=>{2===e.button&&(0,s.rightClickHandler)(e,this.textarea,this.screenElement,this._selectionService,this.options.rightClickSelectsWord)}))):this.register((0,r.addDisposableDomListener)(this.element,"contextmenu",(e=>{(0,s.rightClickHandler)(e,this.textarea,this.screenElement,this._selectionService,this.options.rightClickSelectsWord)}))),k.isLinux&&this.register((0,r.addDisposableDomListener)(this.element,"auxclick",(e=>{1===e.button&&(0,s.moveTextAreaUnderMouseCursor)(e,this.textarea,this.screenElement)})))}_bindKeys(){this.register((0,r.addDisposableDomListener)(this.textarea,"keyup",(e=>this._keyUp(e)),!0)),this.register((0,r.addDisposableDomListener)(this.textarea,"keydown",(e=>this._keyDown(e)),!0)),this.register((0,r.addDisposableDomListener)(this.textarea,"keypress",(e=>this._keyPress(e)),!0)),this.register((0,r.addDisposableDomListener)(this.textarea,"compositionstart",(()=>this._compositionHelper.compositionstart()))),this.register((0,r.addDisposableDomListener)(this.textarea,"compositionupdate",(e=>this._compositionHelper.compositionupdate(e)))),this.register((0,r.addDisposableDomListener)(this.textarea,"compositionend",(()=>this._compositionHelper.compositionend()))),this.register((0,r.addDisposableDomListener)(this.textarea,"input",(e=>this._inputEvent(e)),!0)),this.register(this.onRender((()=>this._compositionHelper.updateCompositionElements())))}open(e){var t;if(!e)throw new Error("Terminal requires a parent element.");e.isConnected||this._logService.debug("Terminal.open was called on an element that was not attached to the DOM"),this._document=e.ownerDocument,this.element=this._document.createElement("div"),this.element.dir="ltr",this.element.classList.add("terminal"),this.element.classList.add("xterm"),e.appendChild(this.element);const i=O.createDocumentFragment();this._viewportElement=O.createElement("div"),this._viewportElement.classList.add("xterm-viewport"),i.appendChild(this._viewportElement),this._viewportScrollArea=O.createElement("div"),this._viewportScrollArea.classList.add("xterm-scroll-area"),this._viewportElement.appendChild(this._viewportScrollArea),this.screenElement=O.createElement("div"),this.screenElement.classList.add("xterm-screen"),this._helperContainer=O.createElement("div"),this._helperContainer.classList.add("xterm-helpers"),this.screenElement.appendChild(this._helperContainer),i.appendChild(this.screenElement),this.textarea=O.createElement("textarea"),this.textarea.classList.add("xterm-helper-textarea"),this.textarea.setAttribute("aria-label",o.promptLabel),k.isChromeOS||this.textarea.setAttribute("aria-multiline","false"),this.textarea.setAttribute("autocorrect","off"),this.textarea.setAttribute("autocapitalize","off"),this.textarea.setAttribute("spellcheck","false"),this.textarea.tabIndex=0,this._coreBrowserService=this._instantiationService.createInstance(v.CoreBrowserService,this.textarea,null!==(t=this._document.defaultView)&&void 0!==t?t:window),this._instantiationService.setService(S.ICoreBrowserService,this._coreBrowserService),this.register((0,r.addDisposableDomListener)(this.textarea,"focus",(e=>this._handleTextAreaFocus(e)))),this.register((0,r.addDisposableDomListener)(this.textarea,"blur",(()=>this._handleTextAreaBlur()))),this._helperContainer.appendChild(this.textarea),this._charSizeService=this._instantiationService.createInstance(u.CharSizeService,this._document,this._helperContainer),this._instantiationService.setService(S.ICharSizeService,this._charSizeService),this._themeService=this._instantiationService.createInstance(C.ThemeService),this._instantiationService.setService(S.IThemeService,this._themeService),this._characterJoinerService=this._instantiationService.createInstance(f.CharacterJoinerService),this._instantiationService.setService(S.ICharacterJoinerService,this._characterJoinerService),this._renderService=this.register(this._instantiationService.createInstance(p.RenderService,this.rows,this.screenElement)),this._instantiationService.setService(S.IRenderService,this._renderService),this.register(this._renderService.onRenderedViewportChange((e=>this._onRender.fire(e)))),this.onResize((e=>this._renderService.resize(e.cols,e.rows))),this._compositionView=O.createElement("div"),this._compositionView.classList.add("composition-view"),this._compositionHelper=this._instantiationService.createInstance(d.CompositionHelper,this.textarea,this._compositionView),this._helperContainer.appendChild(this._compositionView),this.element.appendChild(i);try{this._onWillOpen.fire(this.element)}catch(e){}this._renderService.hasRenderer()||this._renderService.setRenderer(this._createRenderer()),this._mouseService=this._instantiationService.createInstance(g.MouseService),this._instantiationService.setService(S.IMouseService,this._mouseService),this.viewport=this._instantiationService.createInstance(h.Viewport,this._viewportElement,this._viewportScrollArea),this.viewport.onRequestScrollLines((e=>this.scrollLines(e.amount,e.suppressScrollEvent,1))),this.register(this._inputHandler.onRequestSyncScrollBar((()=>this.viewport.syncScrollArea()))),this.register(this.viewport),this.register(this.onCursorMove((()=>{this._renderService.handleCursorMove(),this._syncTextArea()}))),this.register(this.onResize((()=>this._renderService.handleResize(this.cols,this.rows)))),this.register(this.onBlur((()=>this._renderService.handleBlur()))),this.register(this.onFocus((()=>this._renderService.handleFocus()))),this.register(this._renderService.onDimensionsChange((()=>this.viewport.syncScrollArea()))),this._selectionService=this.register(this._instantiationService.createInstance(m.SelectionService,this.element,this.screenElement,this.linkifier2)),this._instantiationService.setService(S.ISelectionService,this._selectionService),this.register(this._selectionService.onRequestScrollLines((e=>this.scrollLines(e.amount,e.suppressScrollEvent)))),this.register(this._selectionService.onSelectionChange((()=>this._onSelectionChange.fire()))),this.register(this._selectionService.onRequestRedraw((e=>this._renderService.handleSelectionChanged(e.start,e.end,e.columnSelectMode)))),this.register(this._selectionService.onLinuxMouseSelection((e=>{this.textarea.value=e,this.textarea.focus(),this.textarea.select()}))),this.register(this._onScroll.event((e=>{this.viewport.syncScrollArea(),this._selectionService.refresh()}))),this.register((0,r.addDisposableDomListener)(this._viewportElement,"scroll",(()=>this._selectionService.refresh()))),this.linkifier2.attachToDom(this.screenElement,this._mouseService,this._renderService),this.register(this._instantiationService.createInstance(c.BufferDecorationRenderer,this.screenElement)),this.register((0,r.addDisposableDomListener)(this.element,"mousedown",(e=>this._selectionService.handleMouseDown(e)))),this.coreMouseService.areMouseEventsActive?(this._selectionService.disable(),this.element.classList.add("enable-mouse-events")):this._selectionService.enable(),this.options.screenReaderMode&&(this._accessibilityManager.value=this._instantiationService.createInstance(M.AccessibilityManager,this)),this.register(this.optionsService.onSpecificOptionChange("screenReaderMode",(e=>this._handleScreenReaderModeOptionChange(e)))),this.options.overviewRulerWidth&&(this._overviewRulerRenderer=this.register(this._instantiationService.createInstance(l.OverviewRulerRenderer,this._viewportElement,this.screenElement))),this.optionsService.onSpecificOptionChange("overviewRulerWidth",(e=>{!this._overviewRulerRenderer&&e&&this._viewportElement&&this.screenElement&&(this._overviewRulerRenderer=this.register(this._instantiationService.createInstance(l.OverviewRulerRenderer,this._viewportElement,this.screenElement)))})),this._charSizeService.measure(),this.refresh(0,this.rows-1),this._initGlobal(),this.bindMouse()}_createRenderer(){return this._instantiationService.createInstance(_.DomRenderer,this.element,this.screenElement,this._viewportElement,this.linkifier2)}bindMouse(){const e=this,t=this.element;function i(t){const i=e._mouseService.getMouseReportCoords(t,e.screenElement);if(!i)return!1;let s,r;switch(t.overrideType||t.type){case"mousemove":r=32,void 0===t.buttons?(s=3,void 0!==t.button&&(s=t.button<3?t.button:3)):s=1&t.buttons?0:4&t.buttons?1:2&t.buttons?2:3;break;case"mouseup":r=0,s=t.button<3?t.button:3;break;case"mousedown":r=1,s=t.button<3?t.button:3;break;case"wheel":if(0===e.viewport.getLinesScrolled(t))return!1;r=t.deltaY<0?0:1,s=4;break;default:return!1}return!(void 0===r||void 0===s||s>4)&&e.coreMouseService.triggerMouseEvent({col:i.col,row:i.row,x:i.x,y:i.y,button:s,action:r,ctrl:t.ctrlKey,alt:t.altKey,shift:t.shiftKey})}const s={mouseup:null,wheel:null,mousedrag:null,mousemove:null},n={mouseup:e=>(i(e),e.buttons||(this._document.removeEventListener("mouseup",s.mouseup),s.mousedrag&&this._document.removeEventListener("mousemove",s.mousedrag)),this.cancel(e)),wheel:e=>(i(e),this.cancel(e,!0)),mousedrag:e=>{e.buttons&&i(e)},mousemove:e=>{e.buttons||i(e)}};this.register(this.coreMouseService.onProtocolChange((e=>{e?("debug"===this.optionsService.rawOptions.logLevel&&this._logService.debug("Binding to mouse events:",this.coreMouseService.explainEvents(e)),this.element.classList.add("enable-mouse-events"),this._selectionService.disable()):(this._logService.debug("Unbinding from mouse events."),this.element.classList.remove("enable-mouse-events"),this._selectionService.enable()),8&e?s.mousemove||(t.addEventListener("mousemove",n.mousemove),s.mousemove=n.mousemove):(t.removeEventListener("mousemove",s.mousemove),s.mousemove=null),16&e?s.wheel||(t.addEventListener("wheel",n.wheel,{passive:!1}),s.wheel=n.wheel):(t.removeEventListener("wheel",s.wheel),s.wheel=null),2&e?s.mouseup||(t.addEventListener("mouseup",n.mouseup),s.mouseup=n.mouseup):(this._document.removeEventListener("mouseup",s.mouseup),t.removeEventListener("mouseup",s.mouseup),s.mouseup=null),4&e?s.mousedrag||(s.mousedrag=n.mousedrag):(this._document.removeEventListener("mousemove",s.mousedrag),s.mousedrag=null)}))),this.coreMouseService.activeProtocol=this.coreMouseService.activeProtocol,this.register((0,r.addDisposableDomListener)(t,"mousedown",(e=>{if(e.preventDefault(),this.focus(),this.coreMouseService.areMouseEventsActive&&!this._selectionService.shouldForceSelection(e))return i(e),s.mouseup&&this._document.addEventListener("mouseup",s.mouseup),s.mousedrag&&this._document.addEventListener("mousemove",s.mousedrag),this.cancel(e)}))),this.register((0,r.addDisposableDomListener)(t,"wheel",(e=>{if(!s.wheel){if(!this.buffer.hasScrollback){const t=this.viewport.getLinesScrolled(e);if(0===t)return;const i=D.C0.ESC+(this.coreService.decPrivateModes.applicationCursorKeys?"O":"[")+(e.deltaY<0?"A":"B");let s="";for(let e=0;e{if(!this.coreMouseService.areMouseEventsActive)return this.viewport.handleTouchStart(e),this.cancel(e)}),{passive:!0})),this.register((0,r.addDisposableDomListener)(t,"touchmove",(e=>{if(!this.coreMouseService.areMouseEventsActive)return this.viewport.handleTouchMove(e)?void 0:this.cancel(e)}),{passive:!1}))}refresh(e,t){var i;null===(i=this._renderService)||void 0===i||i.refreshRows(e,t)}updateCursorStyle(e){var t;(null===(t=this._selectionService)||void 0===t?void 0:t.shouldColumnSelect(e))?this.element.classList.add("column-select"):this.element.classList.remove("column-select")}_showCursor(){this.coreService.isCursorInitialized||(this.coreService.isCursorInitialized=!0,this.refresh(this.buffer.y,this.buffer.y))}scrollLines(e,t,i=0){var s;1===i?(super.scrollLines(e,t,i),this.refresh(0,this.rows-1)):null===(s=this.viewport)||void 0===s||s.scrollLines(e)}paste(e){(0,s.paste)(e,this.textarea,this.coreService,this.optionsService)}attachCustomKeyEventHandler(e){this._customKeyEventHandler=e}registerLinkProvider(e){return this.linkifier2.registerLinkProvider(e)}registerCharacterJoiner(e){if(!this._characterJoinerService)throw new Error("Terminal must be opened first");const t=this._characterJoinerService.register(e);return this.refresh(0,this.rows-1),t}deregisterCharacterJoiner(e){if(!this._characterJoinerService)throw new Error("Terminal must be opened first");this._characterJoinerService.deregister(e)&&this.refresh(0,this.rows-1)}get markers(){return this.buffer.markers}registerMarker(e){return this.buffer.addMarker(this.buffer.ybase+this.buffer.y+e)}registerDecoration(e){return this._decorationService.registerDecoration(e)}hasSelection(){return!!this._selectionService&&this._selectionService.hasSelection}select(e,t,i){this._selectionService.setSelection(e,t,i)}getSelection(){return this._selectionService?this._selectionService.selectionText:""}getSelectionPosition(){if(this._selectionService&&this._selectionService.hasSelection)return{start:{x:this._selectionService.selectionStart[0],y:this._selectionService.selectionStart[1]},end:{x:this._selectionService.selectionEnd[0],y:this._selectionService.selectionEnd[1]}}}clearSelection(){var e;null===(e=this._selectionService)||void 0===e||e.clearSelection()}selectAll(){var e;null===(e=this._selectionService)||void 0===e||e.selectAll()}selectLines(e,t){var i;null===(i=this._selectionService)||void 0===i||i.selectLines(e,t)}_keyDown(e){if(this._keyDownHandled=!1,this._keyDownSeen=!0,this._customKeyEventHandler&&!1===this._customKeyEventHandler(e))return!1;const t=this.browser.isMac&&this.options.macOptionIsMeta&&e.altKey;if(!t&&!this._compositionHelper.keydown(e))return this.options.scrollOnUserInput&&this.buffer.ybase!==this.buffer.ydisp&&this.scrollToBottom(),!1;t||"Dead"!==e.key&&"AltGraph"!==e.key||(this._unprocessedDeadKey=!0);const i=(0,R.evaluateKeyboardEvent)(e,this.coreService.decPrivateModes.applicationCursorKeys,this.browser.isMac,this.options.macOptionIsMeta);if(this.updateCursorStyle(e),3===i.type||2===i.type){const t=this.rows-1;return this.scrollLines(2===i.type?-t:t),this.cancel(e,!0)}return 1===i.type&&this.selectAll(),!!this._isThirdLevelShift(this.browser,e)||(i.cancel&&this.cancel(e,!0),!i.key||!!(e.key&&!e.ctrlKey&&!e.altKey&&!e.metaKey&&1===e.key.length&&e.key.charCodeAt(0)>=65&&e.key.charCodeAt(0)<=90)||(this._unprocessedDeadKey?(this._unprocessedDeadKey=!1,!0):(i.key!==D.C0.ETX&&i.key!==D.C0.CR||(this.textarea.value=""),this._onKey.fire({key:i.key,domEvent:e}),this._showCursor(),this.coreService.triggerDataEvent(i.key,!0),!this.optionsService.rawOptions.screenReaderMode||e.altKey||e.ctrlKey?this.cancel(e,!0):void(this._keyDownHandled=!0))))}_isThirdLevelShift(e,t){const i=e.isMac&&!this.options.macOptionIsMeta&&t.altKey&&!t.ctrlKey&&!t.metaKey||e.isWindows&&t.altKey&&t.ctrlKey&&!t.metaKey||e.isWindows&&t.getModifierState("AltGraph");return"keypress"===t.type?i:i&&(!t.keyCode||t.keyCode>47)}_keyUp(e){this._keyDownSeen=!1,this._customKeyEventHandler&&!1===this._customKeyEventHandler(e)||(function(e){return 16===e.keyCode||17===e.keyCode||18===e.keyCode}(e)||this.focus(),this.updateCursorStyle(e),this._keyPressHandled=!1)}_keyPress(e){let t;if(this._keyPressHandled=!1,this._keyDownHandled)return!1;if(this._customKeyEventHandler&&!1===this._customKeyEventHandler(e))return!1;if(this.cancel(e),e.charCode)t=e.charCode;else if(null===e.which||void 0===e.which)t=e.keyCode;else{if(0===e.which||0===e.charCode)return!1;t=e.which}return!(!t||(e.altKey||e.ctrlKey||e.metaKey)&&!this._isThirdLevelShift(this.browser,e)||(t=String.fromCharCode(t),this._onKey.fire({key:t,domEvent:e}),this._showCursor(),this.coreService.triggerDataEvent(t,!0),this._keyPressHandled=!0,this._unprocessedDeadKey=!1,0))}_inputEvent(e){if(e.data&&"insertText"===e.inputType&&(!e.composed||!this._keyDownSeen)&&!this.optionsService.rawOptions.screenReaderMode){if(this._keyPressHandled)return!1;this._unprocessedDeadKey=!1;const t=e.data;return this.coreService.triggerDataEvent(t,!0),this.cancel(e),!0}return!1}resize(e,t){e!==this.cols||t!==this.rows?super.resize(e,t):this._charSizeService&&!this._charSizeService.hasValidSize&&this._charSizeService.measure()}_afterResize(e,t){var i,s;null===(i=this._charSizeService)||void 0===i||i.measure(),null===(s=this.viewport)||void 0===s||s.syncScrollArea(!0)}clear(){var e;if(0!==this.buffer.ybase||0!==this.buffer.y){this.buffer.clearAllMarkers(),this.buffer.lines.set(0,this.buffer.lines.get(this.buffer.ybase+this.buffer.y)),this.buffer.lines.length=1,this.buffer.ydisp=0,this.buffer.ybase=0,this.buffer.y=0;for(let e=1;e{Object.defineProperty(t,"__esModule",{value:!0}),t.TimeBasedDebouncer=void 0,t.TimeBasedDebouncer=class{constructor(e,t=1e3){this._renderCallback=e,this._debounceThresholdMS=t,this._lastRefreshMs=0,this._additionalRefreshRequested=!1}dispose(){this._refreshTimeoutID&&clearTimeout(this._refreshTimeoutID)}refresh(e,t,i){this._rowCount=i,e=void 0!==e?e:0,t=void 0!==t?t:this._rowCount-1,this._rowStart=void 0!==this._rowStart?Math.min(this._rowStart,e):e,this._rowEnd=void 0!==this._rowEnd?Math.max(this._rowEnd,t):t;const s=Date.now();if(s-this._lastRefreshMs>=this._debounceThresholdMS)this._lastRefreshMs=s,this._innerRefresh();else if(!this._additionalRefreshRequested){const e=s-this._lastRefreshMs,t=this._debounceThresholdMS-e;this._additionalRefreshRequested=!0,this._refreshTimeoutID=window.setTimeout((()=>{this._lastRefreshMs=Date.now(),this._innerRefresh(),this._additionalRefreshRequested=!1,this._refreshTimeoutID=void 0}),t)}}_innerRefresh(){if(void 0===this._rowStart||void 0===this._rowEnd||void 0===this._rowCount)return;const e=Math.max(this._rowStart,0),t=Math.min(this._rowEnd,this._rowCount-1);this._rowStart=void 0,this._rowEnd=void 0,this._renderCallback(e,t)}}},1680:function(e,t,i){var s=this&&this.__decorate||function(e,t,i,s){var r,n=arguments.length,o=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,i):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,s);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(n<3?r(o):n>3?r(t,i,o):r(t,i))||o);return n>3&&o&&Object.defineProperty(t,i,o),o},r=this&&this.__param||function(e,t){return function(i,s){t(i,s,e)}};Object.defineProperty(t,"__esModule",{value:!0}),t.Viewport=void 0;const n=i(3656),o=i(4725),a=i(8460),h=i(844),c=i(2585);let l=t.Viewport=class extends h.Disposable{constructor(e,t,i,s,r,o,h,c){super(),this._viewportElement=e,this._scrollArea=t,this._bufferService=i,this._optionsService=s,this._charSizeService=r,this._renderService=o,this._coreBrowserService=h,this.scrollBarWidth=0,this._currentRowHeight=0,this._currentDeviceCellHeight=0,this._lastRecordedBufferLength=0,this._lastRecordedViewportHeight=0,this._lastRecordedBufferHeight=0,this._lastTouchY=0,this._lastScrollTop=0,this._wheelPartialScroll=0,this._refreshAnimationFrame=null,this._ignoreNextScrollEvent=!1,this._smoothScrollState={startTime:0,origin:-1,target:-1},this._onRequestScrollLines=this.register(new a.EventEmitter),this.onRequestScrollLines=this._onRequestScrollLines.event,this.scrollBarWidth=this._viewportElement.offsetWidth-this._scrollArea.offsetWidth||15,this.register((0,n.addDisposableDomListener)(this._viewportElement,"scroll",this._handleScroll.bind(this))),this._activeBuffer=this._bufferService.buffer,this.register(this._bufferService.buffers.onBufferActivate((e=>this._activeBuffer=e.activeBuffer))),this._renderDimensions=this._renderService.dimensions,this.register(this._renderService.onDimensionsChange((e=>this._renderDimensions=e))),this._handleThemeChange(c.colors),this.register(c.onChangeColors((e=>this._handleThemeChange(e)))),this.register(this._optionsService.onSpecificOptionChange("scrollback",(()=>this.syncScrollArea()))),setTimeout((()=>this.syncScrollArea()))}_handleThemeChange(e){this._viewportElement.style.backgroundColor=e.background.css}reset(){this._currentRowHeight=0,this._currentDeviceCellHeight=0,this._lastRecordedBufferLength=0,this._lastRecordedViewportHeight=0,this._lastRecordedBufferHeight=0,this._lastTouchY=0,this._lastScrollTop=0,this._coreBrowserService.window.requestAnimationFrame((()=>this.syncScrollArea()))}_refresh(e){if(e)return this._innerRefresh(),void(null!==this._refreshAnimationFrame&&this._coreBrowserService.window.cancelAnimationFrame(this._refreshAnimationFrame));null===this._refreshAnimationFrame&&(this._refreshAnimationFrame=this._coreBrowserService.window.requestAnimationFrame((()=>this._innerRefresh())))}_innerRefresh(){if(this._charSizeService.height>0){this._currentRowHeight=this._renderService.dimensions.device.cell.height/this._coreBrowserService.dpr,this._currentDeviceCellHeight=this._renderService.dimensions.device.cell.height,this._lastRecordedViewportHeight=this._viewportElement.offsetHeight;const e=Math.round(this._currentRowHeight*this._lastRecordedBufferLength)+(this._lastRecordedViewportHeight-this._renderService.dimensions.css.canvas.height);this._lastRecordedBufferHeight!==e&&(this._lastRecordedBufferHeight=e,this._scrollArea.style.height=this._lastRecordedBufferHeight+"px")}const e=this._bufferService.buffer.ydisp*this._currentRowHeight;this._viewportElement.scrollTop!==e&&(this._ignoreNextScrollEvent=!0,this._viewportElement.scrollTop=e),this._refreshAnimationFrame=null}syncScrollArea(e=!1){if(this._lastRecordedBufferLength!==this._bufferService.buffer.lines.length)return this._lastRecordedBufferLength=this._bufferService.buffer.lines.length,void this._refresh(e);this._lastRecordedViewportHeight===this._renderService.dimensions.css.canvas.height&&this._lastScrollTop===this._activeBuffer.ydisp*this._currentRowHeight&&this._renderDimensions.device.cell.height===this._currentDeviceCellHeight||this._refresh(e)}_handleScroll(e){if(this._lastScrollTop=this._viewportElement.scrollTop,!this._viewportElement.offsetParent)return;if(this._ignoreNextScrollEvent)return this._ignoreNextScrollEvent=!1,void this._onRequestScrollLines.fire({amount:0,suppressScrollEvent:!0});const t=Math.round(this._lastScrollTop/this._currentRowHeight)-this._bufferService.buffer.ydisp;this._onRequestScrollLines.fire({amount:t,suppressScrollEvent:!0})}_smoothScroll(){if(this._isDisposed||-1===this._smoothScrollState.origin||-1===this._smoothScrollState.target)return;const e=this._smoothScrollPercent();this._viewportElement.scrollTop=this._smoothScrollState.origin+Math.round(e*(this._smoothScrollState.target-this._smoothScrollState.origin)),e<1?this._coreBrowserService.window.requestAnimationFrame((()=>this._smoothScroll())):this._clearSmoothScrollState()}_smoothScrollPercent(){return this._optionsService.rawOptions.smoothScrollDuration&&this._smoothScrollState.startTime?Math.max(Math.min((Date.now()-this._smoothScrollState.startTime)/this._optionsService.rawOptions.smoothScrollDuration,1),0):1}_clearSmoothScrollState(){this._smoothScrollState.startTime=0,this._smoothScrollState.origin=-1,this._smoothScrollState.target=-1}_bubbleScroll(e,t){const i=this._viewportElement.scrollTop+this._lastRecordedViewportHeight;return!(t<0&&0!==this._viewportElement.scrollTop||t>0&&i0&&(s=e),r=""}}return{bufferElements:n,cursorElement:s}}getLinesScrolled(e){if(0===e.deltaY||e.shiftKey)return 0;let t=this._applyScrollModifier(e.deltaY,e);return e.deltaMode===WheelEvent.DOM_DELTA_PIXEL?(t/=this._currentRowHeight+0,this._wheelPartialScroll+=t,t=Math.floor(Math.abs(this._wheelPartialScroll))*(this._wheelPartialScroll>0?1:-1),this._wheelPartialScroll%=1):e.deltaMode===WheelEvent.DOM_DELTA_PAGE&&(t*=this._bufferService.rows),t}_applyScrollModifier(e,t){const i=this._optionsService.rawOptions.fastScrollModifier;return"alt"===i&&t.altKey||"ctrl"===i&&t.ctrlKey||"shift"===i&&t.shiftKey?e*this._optionsService.rawOptions.fastScrollSensitivity*this._optionsService.rawOptions.scrollSensitivity:e*this._optionsService.rawOptions.scrollSensitivity}handleTouchStart(e){this._lastTouchY=e.touches[0].pageY}handleTouchMove(e){const t=this._lastTouchY-e.touches[0].pageY;return this._lastTouchY=e.touches[0].pageY,0!==t&&(this._viewportElement.scrollTop+=t,this._bubbleScroll(e,t))}};t.Viewport=l=s([r(2,c.IBufferService),r(3,c.IOptionsService),r(4,o.ICharSizeService),r(5,o.IRenderService),r(6,o.ICoreBrowserService),r(7,o.IThemeService)],l)},3107:function(e,t,i){var s=this&&this.__decorate||function(e,t,i,s){var r,n=arguments.length,o=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,i):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,s);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(n<3?r(o):n>3?r(t,i,o):r(t,i))||o);return n>3&&o&&Object.defineProperty(t,i,o),o},r=this&&this.__param||function(e,t){return function(i,s){t(i,s,e)}};Object.defineProperty(t,"__esModule",{value:!0}),t.BufferDecorationRenderer=void 0;const n=i(3656),o=i(4725),a=i(844),h=i(2585);let c=t.BufferDecorationRenderer=class extends a.Disposable{constructor(e,t,i,s){super(),this._screenElement=e,this._bufferService=t,this._decorationService=i,this._renderService=s,this._decorationElements=new Map,this._altBufferIsActive=!1,this._dimensionsChanged=!1,this._container=document.createElement("div"),this._container.classList.add("xterm-decoration-container"),this._screenElement.appendChild(this._container),this.register(this._renderService.onRenderedViewportChange((()=>this._doRefreshDecorations()))),this.register(this._renderService.onDimensionsChange((()=>{this._dimensionsChanged=!0,this._queueRefresh()}))),this.register((0,n.addDisposableDomListener)(window,"resize",(()=>this._queueRefresh()))),this.register(this._bufferService.buffers.onBufferActivate((()=>{this._altBufferIsActive=this._bufferService.buffer===this._bufferService.buffers.alt}))),this.register(this._decorationService.onDecorationRegistered((()=>this._queueRefresh()))),this.register(this._decorationService.onDecorationRemoved((e=>this._removeDecoration(e)))),this.register((0,a.toDisposable)((()=>{this._container.remove(),this._decorationElements.clear()})))}_queueRefresh(){void 0===this._animationFrame&&(this._animationFrame=this._renderService.addRefreshCallback((()=>{this._doRefreshDecorations(),this._animationFrame=void 0})))}_doRefreshDecorations(){for(const e of this._decorationService.decorations)this._renderDecoration(e);this._dimensionsChanged=!1}_renderDecoration(e){this._refreshStyle(e),this._dimensionsChanged&&this._refreshXPosition(e)}_createElement(e){var t,i;const s=document.createElement("div");s.classList.add("xterm-decoration"),s.classList.toggle("xterm-decoration-top-layer","top"===(null===(t=null==e?void 0:e.options)||void 0===t?void 0:t.layer)),s.style.width=`${Math.round((e.options.width||1)*this._renderService.dimensions.css.cell.width)}px`,s.style.height=(e.options.height||1)*this._renderService.dimensions.css.cell.height+"px",s.style.top=(e.marker.line-this._bufferService.buffers.active.ydisp)*this._renderService.dimensions.css.cell.height+"px",s.style.lineHeight=`${this._renderService.dimensions.css.cell.height}px`;const r=null!==(i=e.options.x)&&void 0!==i?i:0;return r&&r>this._bufferService.cols&&(s.style.display="none"),this._refreshXPosition(e,s),s}_refreshStyle(e){const t=e.marker.line-this._bufferService.buffers.active.ydisp;if(t<0||t>=this._bufferService.rows)e.element&&(e.element.style.display="none",e.onRenderEmitter.fire(e.element));else{let i=this._decorationElements.get(e);i||(i=this._createElement(e),e.element=i,this._decorationElements.set(e,i),this._container.appendChild(i),e.onDispose((()=>{this._decorationElements.delete(e),i.remove()}))),i.style.top=t*this._renderService.dimensions.css.cell.height+"px",i.style.display=this._altBufferIsActive?"none":"block",e.onRenderEmitter.fire(i)}}_refreshXPosition(e,t=e.element){var i;if(!t)return;const s=null!==(i=e.options.x)&&void 0!==i?i:0;"right"===(e.options.anchor||"left")?t.style.right=s?s*this._renderService.dimensions.css.cell.width+"px":"":t.style.left=s?s*this._renderService.dimensions.css.cell.width+"px":""}_removeDecoration(e){var t;null===(t=this._decorationElements.get(e))||void 0===t||t.remove(),this._decorationElements.delete(e),e.dispose()}};t.BufferDecorationRenderer=c=s([r(1,h.IBufferService),r(2,h.IDecorationService),r(3,o.IRenderService)],c)},5871:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ColorZoneStore=void 0,t.ColorZoneStore=class{constructor(){this._zones=[],this._zonePool=[],this._zonePoolIndex=0,this._linePadding={full:0,left:0,center:0,right:0}}get zones(){return this._zonePool.length=Math.min(this._zonePool.length,this._zones.length),this._zones}clear(){this._zones.length=0,this._zonePoolIndex=0}addDecoration(e){if(e.options.overviewRulerOptions){for(const t of this._zones)if(t.color===e.options.overviewRulerOptions.color&&t.position===e.options.overviewRulerOptions.position){if(this._lineIntersectsZone(t,e.marker.line))return;if(this._lineAdjacentToZone(t,e.marker.line,e.options.overviewRulerOptions.position))return void this._addLineToZone(t,e.marker.line)}if(this._zonePoolIndex=e.startBufferLine&&t<=e.endBufferLine}_lineAdjacentToZone(e,t,i){return t>=e.startBufferLine-this._linePadding[i||"full"]&&t<=e.endBufferLine+this._linePadding[i||"full"]}_addLineToZone(e,t){e.startBufferLine=Math.min(e.startBufferLine,t),e.endBufferLine=Math.max(e.endBufferLine,t)}}},5744:function(e,t,i){var s=this&&this.__decorate||function(e,t,i,s){var r,n=arguments.length,o=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,i):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,s);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(n<3?r(o):n>3?r(t,i,o):r(t,i))||o);return n>3&&o&&Object.defineProperty(t,i,o),o},r=this&&this.__param||function(e,t){return function(i,s){t(i,s,e)}};Object.defineProperty(t,"__esModule",{value:!0}),t.OverviewRulerRenderer=void 0;const n=i(5871),o=i(3656),a=i(4725),h=i(844),c=i(2585),l={full:0,left:0,center:0,right:0},d={full:0,left:0,center:0,right:0},_={full:0,left:0,center:0,right:0};let u=t.OverviewRulerRenderer=class extends h.Disposable{get _width(){return this._optionsService.options.overviewRulerWidth||0}constructor(e,t,i,s,r,o,a){var c;super(),this._viewportElement=e,this._screenElement=t,this._bufferService=i,this._decorationService=s,this._renderService=r,this._optionsService=o,this._coreBrowseService=a,this._colorZoneStore=new n.ColorZoneStore,this._shouldUpdateDimensions=!0,this._shouldUpdateAnchor=!0,this._lastKnownBufferLength=0,this._canvas=document.createElement("canvas"),this._canvas.classList.add("xterm-decoration-overview-ruler"),this._refreshCanvasDimensions(),null===(c=this._viewportElement.parentElement)||void 0===c||c.insertBefore(this._canvas,this._viewportElement);const l=this._canvas.getContext("2d");if(!l)throw new Error("Ctx cannot be null");this._ctx=l,this._registerDecorationListeners(),this._registerBufferChangeListeners(),this._registerDimensionChangeListeners(),this.register((0,h.toDisposable)((()=>{var e;null===(e=this._canvas)||void 0===e||e.remove()})))}_registerDecorationListeners(){this.register(this._decorationService.onDecorationRegistered((()=>this._queueRefresh(void 0,!0)))),this.register(this._decorationService.onDecorationRemoved((()=>this._queueRefresh(void 0,!0))))}_registerBufferChangeListeners(){this.register(this._renderService.onRenderedViewportChange((()=>this._queueRefresh()))),this.register(this._bufferService.buffers.onBufferActivate((()=>{this._canvas.style.display=this._bufferService.buffer===this._bufferService.buffers.alt?"none":"block"}))),this.register(this._bufferService.onScroll((()=>{this._lastKnownBufferLength!==this._bufferService.buffers.normal.lines.length&&(this._refreshDrawHeightConstants(),this._refreshColorZonePadding())})))}_registerDimensionChangeListeners(){this.register(this._renderService.onRender((()=>{this._containerHeight&&this._containerHeight===this._screenElement.clientHeight||(this._queueRefresh(!0),this._containerHeight=this._screenElement.clientHeight)}))),this.register(this._optionsService.onSpecificOptionChange("overviewRulerWidth",(()=>this._queueRefresh(!0)))),this.register((0,o.addDisposableDomListener)(this._coreBrowseService.window,"resize",(()=>this._queueRefresh(!0)))),this._queueRefresh(!0)}_refreshDrawConstants(){const e=Math.floor(this._canvas.width/3),t=Math.ceil(this._canvas.width/3);d.full=this._canvas.width,d.left=e,d.center=t,d.right=e,this._refreshDrawHeightConstants(),_.full=0,_.left=0,_.center=d.left,_.right=d.left+d.center}_refreshDrawHeightConstants(){l.full=Math.round(2*this._coreBrowseService.dpr);const e=this._canvas.height/this._bufferService.buffer.lines.length,t=Math.round(Math.max(Math.min(e,12),6)*this._coreBrowseService.dpr);l.left=t,l.center=t,l.right=t}_refreshColorZonePadding(){this._colorZoneStore.setPadding({full:Math.floor(this._bufferService.buffers.active.lines.length/(this._canvas.height-1)*l.full),left:Math.floor(this._bufferService.buffers.active.lines.length/(this._canvas.height-1)*l.left),center:Math.floor(this._bufferService.buffers.active.lines.length/(this._canvas.height-1)*l.center),right:Math.floor(this._bufferService.buffers.active.lines.length/(this._canvas.height-1)*l.right)}),this._lastKnownBufferLength=this._bufferService.buffers.normal.lines.length}_refreshCanvasDimensions(){this._canvas.style.width=`${this._width}px`,this._canvas.width=Math.round(this._width*this._coreBrowseService.dpr),this._canvas.style.height=`${this._screenElement.clientHeight}px`,this._canvas.height=Math.round(this._screenElement.clientHeight*this._coreBrowseService.dpr),this._refreshDrawConstants(),this._refreshColorZonePadding()}_refreshDecorations(){this._shouldUpdateDimensions&&this._refreshCanvasDimensions(),this._ctx.clearRect(0,0,this._canvas.width,this._canvas.height),this._colorZoneStore.clear();for(const e of this._decorationService.decorations)this._colorZoneStore.addDecoration(e);this._ctx.lineWidth=1;const e=this._colorZoneStore.zones;for(const t of e)"full"!==t.position&&this._renderColorZone(t);for(const t of e)"full"===t.position&&this._renderColorZone(t);this._shouldUpdateDimensions=!1,this._shouldUpdateAnchor=!1}_renderColorZone(e){this._ctx.fillStyle=e.color,this._ctx.fillRect(_[e.position||"full"],Math.round((this._canvas.height-1)*(e.startBufferLine/this._bufferService.buffers.active.lines.length)-l[e.position||"full"]/2),d[e.position||"full"],Math.round((this._canvas.height-1)*((e.endBufferLine-e.startBufferLine)/this._bufferService.buffers.active.lines.length)+l[e.position||"full"]))}_queueRefresh(e,t){this._shouldUpdateDimensions=e||this._shouldUpdateDimensions,this._shouldUpdateAnchor=t||this._shouldUpdateAnchor,void 0===this._animationFrame&&(this._animationFrame=this._coreBrowseService.window.requestAnimationFrame((()=>{this._refreshDecorations(),this._animationFrame=void 0})))}};t.OverviewRulerRenderer=u=s([r(2,c.IBufferService),r(3,c.IDecorationService),r(4,a.IRenderService),r(5,c.IOptionsService),r(6,a.ICoreBrowserService)],u)},2950:function(e,t,i){var s=this&&this.__decorate||function(e,t,i,s){var r,n=arguments.length,o=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,i):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,s);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(n<3?r(o):n>3?r(t,i,o):r(t,i))||o);return n>3&&o&&Object.defineProperty(t,i,o),o},r=this&&this.__param||function(e,t){return function(i,s){t(i,s,e)}};Object.defineProperty(t,"__esModule",{value:!0}),t.CompositionHelper=void 0;const n=i(4725),o=i(2585),a=i(2584);let h=t.CompositionHelper=class{get isComposing(){return this._isComposing}constructor(e,t,i,s,r,n){this._textarea=e,this._compositionView=t,this._bufferService=i,this._optionsService=s,this._coreService=r,this._renderService=n,this._isComposing=!1,this._isSendingComposition=!1,this._compositionPosition={start:0,end:0},this._dataAlreadySent=""}compositionstart(){this._isComposing=!0,this._compositionPosition.start=this._textarea.value.length,this._compositionView.textContent="",this._dataAlreadySent="",this._compositionView.classList.add("active")}compositionupdate(e){this._compositionView.textContent=e.data,this.updateCompositionElements(),setTimeout((()=>{this._compositionPosition.end=this._textarea.value.length}),0)}compositionend(){this._finalizeComposition(!0)}keydown(e){if(this._isComposing||this._isSendingComposition){if(229===e.keyCode)return!1;if(16===e.keyCode||17===e.keyCode||18===e.keyCode)return!1;this._finalizeComposition(!1)}return 229!==e.keyCode||(this._handleAnyTextareaChanges(),!1)}_finalizeComposition(e){if(this._compositionView.classList.remove("active"),this._isComposing=!1,e){const e={start:this._compositionPosition.start,end:this._compositionPosition.end};this._isSendingComposition=!0,setTimeout((()=>{if(this._isSendingComposition){let t;this._isSendingComposition=!1,e.start+=this._dataAlreadySent.length,t=this._isComposing?this._textarea.value.substring(e.start,e.end):this._textarea.value.substring(e.start),t.length>0&&this._coreService.triggerDataEvent(t,!0)}}),0)}else{this._isSendingComposition=!1;const e=this._textarea.value.substring(this._compositionPosition.start,this._compositionPosition.end);this._coreService.triggerDataEvent(e,!0)}}_handleAnyTextareaChanges(){const e=this._textarea.value;setTimeout((()=>{if(!this._isComposing){const t=this._textarea.value,i=t.replace(e,"");this._dataAlreadySent=i,t.length>e.length?this._coreService.triggerDataEvent(i,!0):t.lengththis.updateCompositionElements(!0)),0)}}};t.CompositionHelper=h=s([r(2,o.IBufferService),r(3,o.IOptionsService),r(4,o.ICoreService),r(5,n.IRenderService)],h)},9806:(e,t)=>{function i(e,t,i){const s=i.getBoundingClientRect(),r=e.getComputedStyle(i),n=parseInt(r.getPropertyValue("padding-left")),o=parseInt(r.getPropertyValue("padding-top"));return[t.clientX-s.left-n,t.clientY-s.top-o]}Object.defineProperty(t,"__esModule",{value:!0}),t.getCoords=t.getCoordsRelativeToElement=void 0,t.getCoordsRelativeToElement=i,t.getCoords=function(e,t,s,r,n,o,a,h,c){if(!o)return;const l=i(e,t,s);return l?(l[0]=Math.ceil((l[0]+(c?a/2:0))/a),l[1]=Math.ceil(l[1]/h),l[0]=Math.min(Math.max(l[0],1),r+(c?1:0)),l[1]=Math.min(Math.max(l[1],1),n),l):void 0}},9504:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.moveToCellSequence=void 0;const s=i(2584);function r(e,t,i,s){const r=e-n(e,i),a=t-n(t,i),l=Math.abs(r-a)-function(e,t,i){let s=0;const r=e-n(e,i),a=t-n(t,i);for(let n=0;n=0&&et?"A":"B"}function a(e,t,i,s,r,n){let o=e,a=t,h="";for(;o!==i||a!==s;)o+=r?1:-1,r&&o>n.cols-1?(h+=n.buffer.translateBufferLineToString(a,!1,e,o),o=0,e=0,a++):!r&&o<0&&(h+=n.buffer.translateBufferLineToString(a,!1,0,e+1),o=n.cols-1,e=o,a--);return h+n.buffer.translateBufferLineToString(a,!1,e,o)}function h(e,t){const i=t?"O":"[";return s.C0.ESC+i+e}function c(e,t){e=Math.floor(e);let i="";for(let s=0;s0?s-n(s,o):t;const _=s,u=function(e,t,i,s,o,a){let h;return h=r(i,s,o,a).length>0?s-n(s,o):t,e=i&&he?"D":"C",c(Math.abs(o-e),h(d,s));d=l>t?"D":"C";const _=Math.abs(l-t);return c(function(e,t){return t.cols-e}(l>t?e:o,i)+(_-1)*i.cols+1+((l>t?o:e)-1),h(d,s))}},1296:function(e,t,i){var s=this&&this.__decorate||function(e,t,i,s){var r,n=arguments.length,o=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,i):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,s);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(n<3?r(o):n>3?r(t,i,o):r(t,i))||o);return n>3&&o&&Object.defineProperty(t,i,o),o},r=this&&this.__param||function(e,t){return function(i,s){t(i,s,e)}};Object.defineProperty(t,"__esModule",{value:!0}),t.DomRenderer=void 0;const n=i(3787),o=i(2550),a=i(2223),h=i(6171),c=i(4725),l=i(8055),d=i(8460),_=i(844),u=i(2585),f="xterm-dom-renderer-owner-",v="xterm-rows",g="xterm-fg-",p="xterm-bg-",m="xterm-focus",S="xterm-selection";let C=1,b=t.DomRenderer=class extends _.Disposable{constructor(e,t,i,s,r,a,c,l,u,g){super(),this._element=e,this._screenElement=t,this._viewportElement=i,this._linkifier2=s,this._charSizeService=a,this._optionsService=c,this._bufferService=l,this._coreBrowserService=u,this._themeService=g,this._terminalClass=C++,this._rowElements=[],this.onRequestRedraw=this.register(new d.EventEmitter).event,this._rowContainer=document.createElement("div"),this._rowContainer.classList.add(v),this._rowContainer.style.lineHeight="normal",this._rowContainer.setAttribute("aria-hidden","true"),this._refreshRowElements(this._bufferService.cols,this._bufferService.rows),this._selectionContainer=document.createElement("div"),this._selectionContainer.classList.add(S),this._selectionContainer.setAttribute("aria-hidden","true"),this.dimensions=(0,h.createRenderDimensions)(),this._updateDimensions(),this.register(this._optionsService.onOptionChange((()=>this._handleOptionsChanged()))),this.register(this._themeService.onChangeColors((e=>this._injectCss(e)))),this._injectCss(this._themeService.colors),this._rowFactory=r.createInstance(n.DomRendererRowFactory,document),this._element.classList.add(f+this._terminalClass),this._screenElement.appendChild(this._rowContainer),this._screenElement.appendChild(this._selectionContainer),this.register(this._linkifier2.onShowLinkUnderline((e=>this._handleLinkHover(e)))),this.register(this._linkifier2.onHideLinkUnderline((e=>this._handleLinkLeave(e)))),this.register((0,_.toDisposable)((()=>{this._element.classList.remove(f+this._terminalClass),this._rowContainer.remove(),this._selectionContainer.remove(),this._widthCache.dispose(),this._themeStyleElement.remove(),this._dimensionsStyleElement.remove()}))),this._widthCache=new o.WidthCache(document),this._widthCache.setFont(this._optionsService.rawOptions.fontFamily,this._optionsService.rawOptions.fontSize,this._optionsService.rawOptions.fontWeight,this._optionsService.rawOptions.fontWeightBold),this._setDefaultSpacing()}_updateDimensions(){const e=this._coreBrowserService.dpr;this.dimensions.device.char.width=this._charSizeService.width*e,this.dimensions.device.char.height=Math.ceil(this._charSizeService.height*e),this.dimensions.device.cell.width=this.dimensions.device.char.width+Math.round(this._optionsService.rawOptions.letterSpacing),this.dimensions.device.cell.height=Math.floor(this.dimensions.device.char.height*this._optionsService.rawOptions.lineHeight),this.dimensions.device.char.left=0,this.dimensions.device.char.top=0,this.dimensions.device.canvas.width=this.dimensions.device.cell.width*this._bufferService.cols,this.dimensions.device.canvas.height=this.dimensions.device.cell.height*this._bufferService.rows,this.dimensions.css.canvas.width=Math.round(this.dimensions.device.canvas.width/e),this.dimensions.css.canvas.height=Math.round(this.dimensions.device.canvas.height/e),this.dimensions.css.cell.width=this.dimensions.css.canvas.width/this._bufferService.cols,this.dimensions.css.cell.height=this.dimensions.css.canvas.height/this._bufferService.rows;for(const e of this._rowElements)e.style.width=`${this.dimensions.css.canvas.width}px`,e.style.height=`${this.dimensions.css.cell.height}px`,e.style.lineHeight=`${this.dimensions.css.cell.height}px`,e.style.overflow="hidden";this._dimensionsStyleElement||(this._dimensionsStyleElement=document.createElement("style"),this._screenElement.appendChild(this._dimensionsStyleElement));const t=`${this._terminalSelector} .${v} span { display: inline-block; height: 100%; vertical-align: top;}`;this._dimensionsStyleElement.textContent=t,this._selectionContainer.style.height=this._viewportElement.style.height,this._screenElement.style.width=`${this.dimensions.css.canvas.width}px`,this._screenElement.style.height=`${this.dimensions.css.canvas.height}px`}_injectCss(e){this._themeStyleElement||(this._themeStyleElement=document.createElement("style"),this._screenElement.appendChild(this._themeStyleElement));let t=`${this._terminalSelector} .${v} { color: ${e.foreground.css}; font-family: ${this._optionsService.rawOptions.fontFamily}; font-size: ${this._optionsService.rawOptions.fontSize}px; font-kerning: none; white-space: pre}`;t+=`${this._terminalSelector} .${v} .xterm-dim { color: ${l.color.multiplyOpacity(e.foreground,.5).css};}`,t+=`${this._terminalSelector} span:not(.xterm-bold) { font-weight: ${this._optionsService.rawOptions.fontWeight};}${this._terminalSelector} span.xterm-bold { font-weight: ${this._optionsService.rawOptions.fontWeightBold};}${this._terminalSelector} span.xterm-italic { font-style: italic;}`,t+="@keyframes blink_box_shadow_"+this._terminalClass+" { 50% { border-bottom-style: hidden; }}",t+="@keyframes blink_block_"+this._terminalClass+" { 0% {"+` background-color: ${e.cursor.css};`+` color: ${e.cursorAccent.css}; } 50% { background-color: inherit;`+` color: ${e.cursor.css}; }}`,t+=`${this._terminalSelector} .${v}.${m} .xterm-cursor.xterm-cursor-blink:not(.xterm-cursor-block) { animation: blink_box_shadow_`+this._terminalClass+" 1s step-end infinite;}"+`${this._terminalSelector} .${v}.${m} .xterm-cursor.xterm-cursor-blink.xterm-cursor-block { animation: blink_block_`+this._terminalClass+" 1s step-end infinite;}"+`${this._terminalSelector} .${v} .xterm-cursor.xterm-cursor-block {`+` background-color: ${e.cursor.css};`+` color: ${e.cursorAccent.css};}`+`${this._terminalSelector} .${v} .xterm-cursor.xterm-cursor-outline {`+` outline: 1px solid ${e.cursor.css}; outline-offset: -1px;}`+`${this._terminalSelector} .${v} .xterm-cursor.xterm-cursor-bar {`+` box-shadow: ${this._optionsService.rawOptions.cursorWidth}px 0 0 ${e.cursor.css} inset;}`+`${this._terminalSelector} .${v} .xterm-cursor.xterm-cursor-underline {`+` border-bottom: 1px ${e.cursor.css}; border-bottom-style: solid; height: calc(100% - 1px);}`,t+=`${this._terminalSelector} .${S} { position: absolute; top: 0; left: 0; z-index: 1; pointer-events: none;}${this._terminalSelector}.focus .${S} div { position: absolute; background-color: ${e.selectionBackgroundOpaque.css};}${this._terminalSelector} .${S} div { position: absolute; background-color: ${e.selectionInactiveBackgroundOpaque.css};}`;for(const[i,s]of e.ansi.entries())t+=`${this._terminalSelector} .${g}${i} { color: ${s.css}; }${this._terminalSelector} .${g}${i}.xterm-dim { color: ${l.color.multiplyOpacity(s,.5).css}; }${this._terminalSelector} .${p}${i} { background-color: ${s.css}; }`;t+=`${this._terminalSelector} .${g}${a.INVERTED_DEFAULT_COLOR} { color: ${l.color.opaque(e.background).css}; }${this._terminalSelector} .${g}${a.INVERTED_DEFAULT_COLOR}.xterm-dim { color: ${l.color.multiplyOpacity(l.color.opaque(e.background),.5).css}; }${this._terminalSelector} .${p}${a.INVERTED_DEFAULT_COLOR} { background-color: ${e.foreground.css}; }`,this._themeStyleElement.textContent=t}_setDefaultSpacing(){const e=this.dimensions.css.cell.width-this._widthCache.get("W",!1,!1);this._rowContainer.style.letterSpacing=`${e}px`,this._rowFactory.defaultSpacing=e}handleDevicePixelRatioChange(){this._updateDimensions(),this._widthCache.clear(),this._setDefaultSpacing()}_refreshRowElements(e,t){for(let e=this._rowElements.length;e<=t;e++){const e=document.createElement("div");this._rowContainer.appendChild(e),this._rowElements.push(e)}for(;this._rowElements.length>t;)this._rowContainer.removeChild(this._rowElements.pop())}handleResize(e,t){this._refreshRowElements(e,t),this._updateDimensions()}handleCharSizeChanged(){this._updateDimensions(),this._widthCache.clear(),this._setDefaultSpacing()}handleBlur(){this._rowContainer.classList.remove(m)}handleFocus(){this._rowContainer.classList.add(m),this.renderRows(this._bufferService.buffer.y,this._bufferService.buffer.y)}handleSelectionChanged(e,t,i){if(this._selectionContainer.replaceChildren(),this._rowFactory.handleSelectionChanged(e,t,i),this.renderRows(0,this._bufferService.rows-1),!e||!t)return;const s=e[1]-this._bufferService.buffer.ydisp,r=t[1]-this._bufferService.buffer.ydisp,n=Math.max(s,0),o=Math.min(r,this._bufferService.rows-1);if(n>=this._bufferService.rows||o<0)return;const a=document.createDocumentFragment();if(i){const i=e[0]>t[0];a.appendChild(this._createSelectionElement(n,i?t[0]:e[0],i?e[0]:t[0],o-n+1))}else{const i=s===n?e[0]:0,h=n===r?t[0]:this._bufferService.cols;a.appendChild(this._createSelectionElement(n,i,h));const c=o-n-1;if(a.appendChild(this._createSelectionElement(n+1,0,this._bufferService.cols,c)),n!==o){const e=r===o?t[0]:this._bufferService.cols;a.appendChild(this._createSelectionElement(o,0,e))}}this._selectionContainer.appendChild(a)}_createSelectionElement(e,t,i,s=1){const r=document.createElement("div");return r.style.height=s*this.dimensions.css.cell.height+"px",r.style.top=e*this.dimensions.css.cell.height+"px",r.style.left=t*this.dimensions.css.cell.width+"px",r.style.width=this.dimensions.css.cell.width*(i-t)+"px",r}handleCursorMove(){}_handleOptionsChanged(){this._updateDimensions(),this._injectCss(this._themeService.colors),this._widthCache.setFont(this._optionsService.rawOptions.fontFamily,this._optionsService.rawOptions.fontSize,this._optionsService.rawOptions.fontWeight,this._optionsService.rawOptions.fontWeightBold),this._setDefaultSpacing()}clear(){for(const e of this._rowElements)e.replaceChildren()}renderRows(e,t){const i=this._bufferService.buffer,s=i.ybase+i.y,r=Math.min(i.x,this._bufferService.cols-1),n=this._optionsService.rawOptions.cursorBlink,o=this._optionsService.rawOptions.cursorStyle,a=this._optionsService.rawOptions.cursorInactiveStyle;for(let h=e;h<=t;h++){const e=h+i.ydisp,t=this._rowElements[h],c=i.lines.get(e);if(!t||!c)break;t.replaceChildren(...this._rowFactory.createRow(c,e,e===s,o,a,r,n,this.dimensions.css.cell.width,this._widthCache,-1,-1))}}get _terminalSelector(){return`.${f}${this._terminalClass}`}_handleLinkHover(e){this._setCellUnderline(e.x1,e.x2,e.y1,e.y2,e.cols,!0)}_handleLinkLeave(e){this._setCellUnderline(e.x1,e.x2,e.y1,e.y2,e.cols,!1)}_setCellUnderline(e,t,i,s,r,n){i<0&&(e=0),s<0&&(t=0);const o=this._bufferService.rows-1;i=Math.max(Math.min(i,o),0),s=Math.max(Math.min(s,o),0),r=Math.min(r,this._bufferService.cols);const a=this._bufferService.buffer,h=a.ybase+a.y,c=Math.min(a.x,r-1),l=this._optionsService.rawOptions.cursorBlink,d=this._optionsService.rawOptions.cursorStyle,_=this._optionsService.rawOptions.cursorInactiveStyle;for(let o=i;o<=s;++o){const u=o+a.ydisp,f=this._rowElements[o],v=a.lines.get(u);if(!f||!v)break;f.replaceChildren(...this._rowFactory.createRow(v,u,u===h,d,_,c,l,this.dimensions.css.cell.width,this._widthCache,n?o===i?e:0:-1,n?(o===s?t:r)-1:-1))}}};t.DomRenderer=b=s([r(4,u.IInstantiationService),r(5,c.ICharSizeService),r(6,u.IOptionsService),r(7,u.IBufferService),r(8,c.ICoreBrowserService),r(9,c.IThemeService)],b)},3787:function(e,t,i){var s=this&&this.__decorate||function(e,t,i,s){var r,n=arguments.length,o=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,i):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,s);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(n<3?r(o):n>3?r(t,i,o):r(t,i))||o);return n>3&&o&&Object.defineProperty(t,i,o),o},r=this&&this.__param||function(e,t){return function(i,s){t(i,s,e)}};Object.defineProperty(t,"__esModule",{value:!0}),t.DomRendererRowFactory=void 0;const n=i(2223),o=i(643),a=i(511),h=i(2585),c=i(8055),l=i(4725),d=i(4269),_=i(6171),u=i(3734);let f=t.DomRendererRowFactory=class{constructor(e,t,i,s,r,n,o){this._document=e,this._characterJoinerService=t,this._optionsService=i,this._coreBrowserService=s,this._coreService=r,this._decorationService=n,this._themeService=o,this._workCell=new a.CellData,this._columnSelectMode=!1,this.defaultSpacing=0}handleSelectionChanged(e,t,i){this._selectionStart=e,this._selectionEnd=t,this._columnSelectMode=i}createRow(e,t,i,s,r,a,h,l,_,f,g){const p=[],m=this._characterJoinerService.getJoinedCharacters(t),S=this._themeService.colors;let C,b=e.getNoBgTrimmedLength();i&&b0&&M===m[0][0]){O=!0;const t=m.shift();I=new d.JoinedCellData(this._workCell,e.translateToString(!0,t[0],t[1]),t[1]-t[0]),P=t[1]-1,b=I.getWidth()}const H=this._isCellInSelection(M,t),F=i&&M===a,W=T&&M>=f&&M<=g;let N=!1;this._decorationService.forEachDecorationAtCell(M,t,void 0,(e=>{N=!0}));let U=I.getChars()||o.WHITESPACE_CELL_CHAR;if(" "===U&&(I.isUnderline()||I.isOverline())&&(U=" "),B=b*l-_.get(U,I.isBold(),I.isItalic()),C){if(y&&(H&&A||!H&&!A&&I.bg===E)&&(H&&A&&S.selectionForeground||I.fg===k)&&I.extended.ext===L&&W===D&&B===R&&!F&&!O&&!N){w+=U,y++;continue}y&&(C.textContent=w),C=this._document.createElement("span"),y=0,w=""}else C=this._document.createElement("span");if(E=I.bg,k=I.fg,L=I.extended.ext,D=W,R=B,A=H,O&&a>=M&&a<=P&&(a=M),!this._coreService.isCursorHidden&&F)if(x.push("xterm-cursor"),this._coreBrowserService.isFocused)h&&x.push("xterm-cursor-blink"),x.push("bar"===s?"xterm-cursor-bar":"underline"===s?"xterm-cursor-underline":"xterm-cursor-block");else if(r)switch(r){case"outline":x.push("xterm-cursor-outline");break;case"block":x.push("xterm-cursor-block");break;case"bar":x.push("xterm-cursor-bar");break;case"underline":x.push("xterm-cursor-underline")}if(I.isBold()&&x.push("xterm-bold"),I.isItalic()&&x.push("xterm-italic"),I.isDim()&&x.push("xterm-dim"),w=I.isInvisible()?o.WHITESPACE_CELL_CHAR:I.getChars()||o.WHITESPACE_CELL_CHAR,I.isUnderline()&&(x.push(`xterm-underline-${I.extended.underlineStyle}`)," "===w&&(w=" "),!I.isUnderlineColorDefault()))if(I.isUnderlineColorRGB())C.style.textDecorationColor=`rgb(${u.AttributeData.toColorRGB(I.getUnderlineColor()).join(",")})`;else{let e=I.getUnderlineColor();this._optionsService.rawOptions.drawBoldTextInBrightColors&&I.isBold()&&e<8&&(e+=8),C.style.textDecorationColor=S.ansi[e].css}I.isOverline()&&(x.push("xterm-overline")," "===w&&(w=" ")),I.isStrikethrough()&&x.push("xterm-strikethrough"),W&&(C.style.textDecoration="underline");let $=I.getFgColor(),j=I.getFgColorMode(),z=I.getBgColor(),K=I.getBgColorMode();const q=!!I.isInverse();if(q){const e=$;$=z,z=e;const t=j;j=K,K=t}let V,G,X,Y=!1;switch(this._decorationService.forEachDecorationAtCell(M,t,void 0,(e=>{"top"!==e.options.layer&&Y||(e.backgroundColorRGB&&(K=50331648,z=e.backgroundColorRGB.rgba>>8&16777215,V=e.backgroundColorRGB),e.foregroundColorRGB&&(j=50331648,$=e.foregroundColorRGB.rgba>>8&16777215,G=e.foregroundColorRGB),Y="top"===e.options.layer)})),!Y&&H&&(V=this._coreBrowserService.isFocused?S.selectionBackgroundOpaque:S.selectionInactiveBackgroundOpaque,z=V.rgba>>8&16777215,K=50331648,Y=!0,S.selectionForeground&&(j=50331648,$=S.selectionForeground.rgba>>8&16777215,G=S.selectionForeground)),Y&&x.push("xterm-decoration-top"),K){case 16777216:case 33554432:X=S.ansi[z],x.push(`xterm-bg-${z}`);break;case 50331648:X=c.rgba.toColor(z>>16,z>>8&255,255&z),this._addStyle(C,`background-color:#${v((z>>>0).toString(16),"0",6)}`);break;default:q?(X=S.foreground,x.push(`xterm-bg-${n.INVERTED_DEFAULT_COLOR}`)):X=S.background}switch(V||I.isDim()&&(V=c.color.multiplyOpacity(X,.5)),j){case 16777216:case 33554432:I.isBold()&&$<8&&this._optionsService.rawOptions.drawBoldTextInBrightColors&&($+=8),this._applyMinimumContrast(C,X,S.ansi[$],I,V,void 0)||x.push(`xterm-fg-${$}`);break;case 50331648:const e=c.rgba.toColor($>>16&255,$>>8&255,255&$);this._applyMinimumContrast(C,X,e,I,V,G)||this._addStyle(C,`color:#${v($.toString(16),"0",6)}`);break;default:this._applyMinimumContrast(C,X,S.foreground,I,V,void 0)||q&&x.push(`xterm-fg-${n.INVERTED_DEFAULT_COLOR}`)}x.length&&(C.className=x.join(" "),x.length=0),F||O||N?C.textContent=w:y++,B!==this.defaultSpacing&&(C.style.letterSpacing=`${B}px`),p.push(C),M=P}return C&&y&&(C.textContent=w),p}_applyMinimumContrast(e,t,i,s,r,n){if(1===this._optionsService.rawOptions.minimumContrastRatio||(0,_.excludeFromContrastRatioDemands)(s.getCode()))return!1;const o=this._getContrastCache(s);let a;if(r||n||(a=o.getColor(t.rgba,i.rgba)),void 0===a){const e=this._optionsService.rawOptions.minimumContrastRatio/(s.isDim()?2:1);a=c.color.ensureContrastRatio(r||t,n||i,e),o.setColor((r||t).rgba,(n||i).rgba,null!=a?a:null)}return!!a&&(this._addStyle(e,`color:${a.css}`),!0)}_getContrastCache(e){return e.isDim()?this._themeService.colors.halfContrastCache:this._themeService.colors.contrastCache}_addStyle(e,t){e.setAttribute("style",`${e.getAttribute("style")||""}${t};`)}_isCellInSelection(e,t){const i=this._selectionStart,s=this._selectionEnd;return!(!i||!s)&&(this._columnSelectMode?i[0]<=s[0]?e>=i[0]&&t>=i[1]&&e=i[1]&&e>=s[0]&&t<=s[1]:t>i[1]&&t=i[0]&&e=i[0])}};function v(e,t,i){for(;e.length{Object.defineProperty(t,"__esModule",{value:!0}),t.WidthCache=void 0,t.WidthCache=class{constructor(e){this._flat=new Float32Array(256),this._font="",this._fontSize=0,this._weight="normal",this._weightBold="bold",this._measureElements=[],this._container=e.createElement("div"),this._container.style.position="absolute",this._container.style.top="-50000px",this._container.style.width="50000px",this._container.style.whiteSpace="pre",this._container.style.fontKerning="none";const t=e.createElement("span"),i=e.createElement("span");i.style.fontWeight="bold";const s=e.createElement("span");s.style.fontStyle="italic";const r=e.createElement("span");r.style.fontWeight="bold",r.style.fontStyle="italic",this._measureElements=[t,i,s,r],this._container.appendChild(t),this._container.appendChild(i),this._container.appendChild(s),this._container.appendChild(r),e.body.appendChild(this._container),this.clear()}dispose(){this._container.remove(),this._measureElements.length=0,this._holey=void 0}clear(){this._flat.fill(-9999),this._holey=new Map}setFont(e,t,i,s){e===this._font&&t===this._fontSize&&i===this._weight&&s===this._weightBold||(this._font=e,this._fontSize=t,this._weight=i,this._weightBold=s,this._container.style.fontFamily=this._font,this._container.style.fontSize=`${this._fontSize}px`,this._measureElements[0].style.fontWeight=`${i}`,this._measureElements[1].style.fontWeight=`${s}`,this._measureElements[2].style.fontWeight=`${i}`,this._measureElements[3].style.fontWeight=`${s}`,this.clear())}get(e,t,i){let s=0;if(!t&&!i&&1===e.length&&(s=e.charCodeAt(0))<256)return-9999!==this._flat[s]?this._flat[s]:this._flat[s]=this._measure(e,0);let r=e;t&&(r+="B"),i&&(r+="I");let n=this._holey.get(r);if(void 0===n){let s=0;t&&(s|=1),i&&(s|=2),n=this._measure(e,s),this._holey.set(r,n)}return n}_measure(e,t){const i=this._measureElements[t];return i.textContent=e.repeat(32),i.offsetWidth/32}}},2223:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.TEXT_BASELINE=t.DIM_OPACITY=t.INVERTED_DEFAULT_COLOR=void 0;const s=i(6114);t.INVERTED_DEFAULT_COLOR=257,t.DIM_OPACITY=.5,t.TEXT_BASELINE=s.isFirefox||s.isLegacyEdge?"bottom":"ideographic"},6171:(e,t)=>{function i(e){return 57508<=e&&e<=57558}Object.defineProperty(t,"__esModule",{value:!0}),t.createRenderDimensions=t.excludeFromContrastRatioDemands=t.isRestrictedPowerlineGlyph=t.isPowerlineGlyph=t.throwIfFalsy=void 0,t.throwIfFalsy=function(e){if(!e)throw new Error("value must not be falsy");return e},t.isPowerlineGlyph=i,t.isRestrictedPowerlineGlyph=function(e){return 57520<=e&&e<=57527},t.excludeFromContrastRatioDemands=function(e){return i(e)||function(e){return 9472<=e&&e<=9631}(e)},t.createRenderDimensions=function(){return{css:{canvas:{width:0,height:0},cell:{width:0,height:0}},device:{canvas:{width:0,height:0},cell:{width:0,height:0},char:{width:0,height:0,left:0,top:0}}}}},456:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SelectionModel=void 0,t.SelectionModel=class{constructor(e){this._bufferService=e,this.isSelectAllActive=!1,this.selectionStartLength=0}clearSelection(){this.selectionStart=void 0,this.selectionEnd=void 0,this.isSelectAllActive=!1,this.selectionStartLength=0}get finalSelectionStart(){return this.isSelectAllActive?[0,0]:this.selectionEnd&&this.selectionStart&&this.areSelectionValuesReversed()?this.selectionEnd:this.selectionStart}get finalSelectionEnd(){if(this.isSelectAllActive)return[this._bufferService.cols,this._bufferService.buffer.ybase+this._bufferService.rows-1];if(this.selectionStart){if(!this.selectionEnd||this.areSelectionValuesReversed()){const e=this.selectionStart[0]+this.selectionStartLength;return e>this._bufferService.cols?e%this._bufferService.cols==0?[this._bufferService.cols,this.selectionStart[1]+Math.floor(e/this._bufferService.cols)-1]:[e%this._bufferService.cols,this.selectionStart[1]+Math.floor(e/this._bufferService.cols)]:[e,this.selectionStart[1]]}if(this.selectionStartLength&&this.selectionEnd[1]===this.selectionStart[1]){const e=this.selectionStart[0]+this.selectionStartLength;return e>this._bufferService.cols?[e%this._bufferService.cols,this.selectionStart[1]+Math.floor(e/this._bufferService.cols)]:[Math.max(e,this.selectionEnd[0]),this.selectionEnd[1]]}return this.selectionEnd}}areSelectionValuesReversed(){const e=this.selectionStart,t=this.selectionEnd;return!(!e||!t)&&(e[1]>t[1]||e[1]===t[1]&&e[0]>t[0])}handleTrim(e){return this.selectionStart&&(this.selectionStart[1]-=e),this.selectionEnd&&(this.selectionEnd[1]-=e),this.selectionEnd&&this.selectionEnd[1]<0?(this.clearSelection(),!0):(this.selectionStart&&this.selectionStart[1]<0&&(this.selectionStart[1]=0),!1)}}},428:function(e,t,i){var s=this&&this.__decorate||function(e,t,i,s){var r,n=arguments.length,o=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,i):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,s);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(n<3?r(o):n>3?r(t,i,o):r(t,i))||o);return n>3&&o&&Object.defineProperty(t,i,o),o},r=this&&this.__param||function(e,t){return function(i,s){t(i,s,e)}};Object.defineProperty(t,"__esModule",{value:!0}),t.CharSizeService=void 0;const n=i(2585),o=i(8460),a=i(844);let h=t.CharSizeService=class extends a.Disposable{get hasValidSize(){return this.width>0&&this.height>0}constructor(e,t,i){super(),this._optionsService=i,this.width=0,this.height=0,this._onCharSizeChange=this.register(new o.EventEmitter),this.onCharSizeChange=this._onCharSizeChange.event,this._measureStrategy=new c(e,t,this._optionsService),this.register(this._optionsService.onMultipleOptionChange(["fontFamily","fontSize"],(()=>this.measure())))}measure(){const e=this._measureStrategy.measure();e.width===this.width&&e.height===this.height||(this.width=e.width,this.height=e.height,this._onCharSizeChange.fire())}};t.CharSizeService=h=s([r(2,n.IOptionsService)],h);class c{constructor(e,t,i){this._document=e,this._parentElement=t,this._optionsService=i,this._result={width:0,height:0},this._measureElement=this._document.createElement("span"),this._measureElement.classList.add("xterm-char-measure-element"),this._measureElement.textContent="W".repeat(32),this._measureElement.setAttribute("aria-hidden","true"),this._measureElement.style.whiteSpace="pre",this._measureElement.style.fontKerning="none",this._parentElement.appendChild(this._measureElement)}measure(){this._measureElement.style.fontFamily=this._optionsService.rawOptions.fontFamily,this._measureElement.style.fontSize=`${this._optionsService.rawOptions.fontSize}px`;const e={height:Number(this._measureElement.offsetHeight),width:Number(this._measureElement.offsetWidth)};return 0!==e.width&&0!==e.height&&(this._result.width=e.width/32,this._result.height=Math.ceil(e.height)),this._result}}},4269:function(e,t,i){var s=this&&this.__decorate||function(e,t,i,s){var r,n=arguments.length,o=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,i):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,s);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(n<3?r(o):n>3?r(t,i,o):r(t,i))||o);return n>3&&o&&Object.defineProperty(t,i,o),o},r=this&&this.__param||function(e,t){return function(i,s){t(i,s,e)}};Object.defineProperty(t,"__esModule",{value:!0}),t.CharacterJoinerService=t.JoinedCellData=void 0;const n=i(3734),o=i(643),a=i(511),h=i(2585);class c extends n.AttributeData{constructor(e,t,i){super(),this.content=0,this.combinedData="",this.fg=e.fg,this.bg=e.bg,this.combinedData=t,this._width=i}isCombined(){return 2097152}getWidth(){return this._width}getChars(){return this.combinedData}getCode(){return 2097151}setFromCharData(e){throw new Error("not implemented")}getAsCharData(){return[this.fg,this.getChars(),this.getWidth(),this.getCode()]}}t.JoinedCellData=c;let l=t.CharacterJoinerService=class e{constructor(e){this._bufferService=e,this._characterJoiners=[],this._nextCharacterJoinerId=0,this._workCell=new a.CellData}register(e){const t={id:this._nextCharacterJoinerId++,handler:e};return this._characterJoiners.push(t),t.id}deregister(e){for(let t=0;t1){const e=this._getJoinedRanges(s,a,n,t,r);for(let t=0;t1){const e=this._getJoinedRanges(s,a,n,t,r);for(let t=0;t{Object.defineProperty(t,"__esModule",{value:!0}),t.CoreBrowserService=void 0,t.CoreBrowserService=class{constructor(e,t){this._textarea=e,this.window=t,this._isFocused=!1,this._cachedIsFocused=void 0,this._textarea.addEventListener("focus",(()=>this._isFocused=!0)),this._textarea.addEventListener("blur",(()=>this._isFocused=!1))}get dpr(){return this.window.devicePixelRatio}get isFocused(){return void 0===this._cachedIsFocused&&(this._cachedIsFocused=this._isFocused&&this._textarea.ownerDocument.hasFocus(),queueMicrotask((()=>this._cachedIsFocused=void 0))),this._cachedIsFocused}}},8934:function(e,t,i){var s=this&&this.__decorate||function(e,t,i,s){var r,n=arguments.length,o=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,i):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,s);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(n<3?r(o):n>3?r(t,i,o):r(t,i))||o);return n>3&&o&&Object.defineProperty(t,i,o),o},r=this&&this.__param||function(e,t){return function(i,s){t(i,s,e)}};Object.defineProperty(t,"__esModule",{value:!0}),t.MouseService=void 0;const n=i(4725),o=i(9806);let a=t.MouseService=class{constructor(e,t){this._renderService=e,this._charSizeService=t}getCoords(e,t,i,s,r){return(0,o.getCoords)(window,e,t,i,s,this._charSizeService.hasValidSize,this._renderService.dimensions.css.cell.width,this._renderService.dimensions.css.cell.height,r)}getMouseReportCoords(e,t){const i=(0,o.getCoordsRelativeToElement)(window,e,t);if(this._charSizeService.hasValidSize)return i[0]=Math.min(Math.max(i[0],0),this._renderService.dimensions.css.canvas.width-1),i[1]=Math.min(Math.max(i[1],0),this._renderService.dimensions.css.canvas.height-1),{col:Math.floor(i[0]/this._renderService.dimensions.css.cell.width),row:Math.floor(i[1]/this._renderService.dimensions.css.cell.height),x:Math.floor(i[0]),y:Math.floor(i[1])}}};t.MouseService=a=s([r(0,n.IRenderService),r(1,n.ICharSizeService)],a)},3230:function(e,t,i){var s=this&&this.__decorate||function(e,t,i,s){var r,n=arguments.length,o=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,i):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,s);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(n<3?r(o):n>3?r(t,i,o):r(t,i))||o);return n>3&&o&&Object.defineProperty(t,i,o),o},r=this&&this.__param||function(e,t){return function(i,s){t(i,s,e)}};Object.defineProperty(t,"__esModule",{value:!0}),t.RenderService=void 0;const n=i(3656),o=i(6193),a=i(5596),h=i(4725),c=i(8460),l=i(844),d=i(7226),_=i(2585);let u=t.RenderService=class extends l.Disposable{get dimensions(){return this._renderer.value.dimensions}constructor(e,t,i,s,r,h,_,u){if(super(),this._rowCount=e,this._charSizeService=s,this._renderer=this.register(new l.MutableDisposable),this._pausedResizeTask=new d.DebouncedIdleTask,this._isPaused=!1,this._needsFullRefresh=!1,this._isNextRenderRedrawOnly=!0,this._needsSelectionRefresh=!1,this._canvasWidth=0,this._canvasHeight=0,this._selectionState={start:void 0,end:void 0,columnSelectMode:!1},this._onDimensionsChange=this.register(new c.EventEmitter),this.onDimensionsChange=this._onDimensionsChange.event,this._onRenderedViewportChange=this.register(new c.EventEmitter),this.onRenderedViewportChange=this._onRenderedViewportChange.event,this._onRender=this.register(new c.EventEmitter),this.onRender=this._onRender.event,this._onRefreshRequest=this.register(new c.EventEmitter),this.onRefreshRequest=this._onRefreshRequest.event,this._renderDebouncer=new o.RenderDebouncer(_.window,((e,t)=>this._renderRows(e,t))),this.register(this._renderDebouncer),this._screenDprMonitor=new a.ScreenDprMonitor(_.window),this._screenDprMonitor.setListener((()=>this.handleDevicePixelRatioChange())),this.register(this._screenDprMonitor),this.register(h.onResize((()=>this._fullRefresh()))),this.register(h.buffers.onBufferActivate((()=>{var e;return null===(e=this._renderer.value)||void 0===e?void 0:e.clear()}))),this.register(i.onOptionChange((()=>this._handleOptionsChanged()))),this.register(this._charSizeService.onCharSizeChange((()=>this.handleCharSizeChanged()))),this.register(r.onDecorationRegistered((()=>this._fullRefresh()))),this.register(r.onDecorationRemoved((()=>this._fullRefresh()))),this.register(i.onMultipleOptionChange(["customGlyphs","drawBoldTextInBrightColors","letterSpacing","lineHeight","fontFamily","fontSize","fontWeight","fontWeightBold","minimumContrastRatio"],(()=>{this.clear(),this.handleResize(h.cols,h.rows),this._fullRefresh()}))),this.register(i.onMultipleOptionChange(["cursorBlink","cursorStyle"],(()=>this.refreshRows(h.buffer.y,h.buffer.y,!0)))),this.register((0,n.addDisposableDomListener)(_.window,"resize",(()=>this.handleDevicePixelRatioChange()))),this.register(u.onChangeColors((()=>this._fullRefresh()))),"IntersectionObserver"in _.window){const e=new _.window.IntersectionObserver((e=>this._handleIntersectionChange(e[e.length-1])),{threshold:0});e.observe(t),this.register({dispose:()=>e.disconnect()})}}_handleIntersectionChange(e){this._isPaused=void 0===e.isIntersecting?0===e.intersectionRatio:!e.isIntersecting,this._isPaused||this._charSizeService.hasValidSize||this._charSizeService.measure(),!this._isPaused&&this._needsFullRefresh&&(this._pausedResizeTask.flush(),this.refreshRows(0,this._rowCount-1),this._needsFullRefresh=!1)}refreshRows(e,t,i=!1){this._isPaused?this._needsFullRefresh=!0:(i||(this._isNextRenderRedrawOnly=!1),this._renderDebouncer.refresh(e,t,this._rowCount))}_renderRows(e,t){this._renderer.value&&(e=Math.min(e,this._rowCount-1),t=Math.min(t,this._rowCount-1),this._renderer.value.renderRows(e,t),this._needsSelectionRefresh&&(this._renderer.value.handleSelectionChanged(this._selectionState.start,this._selectionState.end,this._selectionState.columnSelectMode),this._needsSelectionRefresh=!1),this._isNextRenderRedrawOnly||this._onRenderedViewportChange.fire({start:e,end:t}),this._onRender.fire({start:e,end:t}),this._isNextRenderRedrawOnly=!0)}resize(e,t){this._rowCount=t,this._fireOnCanvasResize()}_handleOptionsChanged(){this._renderer.value&&(this.refreshRows(0,this._rowCount-1),this._fireOnCanvasResize())}_fireOnCanvasResize(){this._renderer.value&&(this._renderer.value.dimensions.css.canvas.width===this._canvasWidth&&this._renderer.value.dimensions.css.canvas.height===this._canvasHeight||this._onDimensionsChange.fire(this._renderer.value.dimensions))}hasRenderer(){return!!this._renderer.value}setRenderer(e){this._renderer.value=e,this._renderer.value.onRequestRedraw((e=>this.refreshRows(e.start,e.end,!0))),this._needsSelectionRefresh=!0,this._fullRefresh()}addRefreshCallback(e){return this._renderDebouncer.addRefreshCallback(e)}_fullRefresh(){this._isPaused?this._needsFullRefresh=!0:this.refreshRows(0,this._rowCount-1)}clearTextureAtlas(){var e,t;this._renderer.value&&(null===(t=(e=this._renderer.value).clearTextureAtlas)||void 0===t||t.call(e),this._fullRefresh())}handleDevicePixelRatioChange(){this._charSizeService.measure(),this._renderer.value&&(this._renderer.value.handleDevicePixelRatioChange(),this.refreshRows(0,this._rowCount-1))}handleResize(e,t){this._renderer.value&&(this._isPaused?this._pausedResizeTask.set((()=>this._renderer.value.handleResize(e,t))):this._renderer.value.handleResize(e,t),this._fullRefresh())}handleCharSizeChanged(){var e;null===(e=this._renderer.value)||void 0===e||e.handleCharSizeChanged()}handleBlur(){var e;null===(e=this._renderer.value)||void 0===e||e.handleBlur()}handleFocus(){var e;null===(e=this._renderer.value)||void 0===e||e.handleFocus()}handleSelectionChanged(e,t,i){var s;this._selectionState.start=e,this._selectionState.end=t,this._selectionState.columnSelectMode=i,null===(s=this._renderer.value)||void 0===s||s.handleSelectionChanged(e,t,i)}handleCursorMove(){var e;null===(e=this._renderer.value)||void 0===e||e.handleCursorMove()}clear(){var e;null===(e=this._renderer.value)||void 0===e||e.clear()}};t.RenderService=u=s([r(2,_.IOptionsService),r(3,h.ICharSizeService),r(4,_.IDecorationService),r(5,_.IBufferService),r(6,h.ICoreBrowserService),r(7,h.IThemeService)],u)},9312:function(e,t,i){var s=this&&this.__decorate||function(e,t,i,s){var r,n=arguments.length,o=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,i):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,s);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(n<3?r(o):n>3?r(t,i,o):r(t,i))||o);return n>3&&o&&Object.defineProperty(t,i,o),o},r=this&&this.__param||function(e,t){return function(i,s){t(i,s,e)}};Object.defineProperty(t,"__esModule",{value:!0}),t.SelectionService=void 0;const n=i(9806),o=i(9504),a=i(456),h=i(4725),c=i(8460),l=i(844),d=i(6114),_=i(4841),u=i(511),f=i(2585),v=String.fromCharCode(160),g=new RegExp(v,"g");let p=t.SelectionService=class extends l.Disposable{constructor(e,t,i,s,r,n,o,h,d){super(),this._element=e,this._screenElement=t,this._linkifier=i,this._bufferService=s,this._coreService=r,this._mouseService=n,this._optionsService=o,this._renderService=h,this._coreBrowserService=d,this._dragScrollAmount=0,this._enabled=!0,this._workCell=new u.CellData,this._mouseDownTimeStamp=0,this._oldHasSelection=!1,this._oldSelectionStart=void 0,this._oldSelectionEnd=void 0,this._onLinuxMouseSelection=this.register(new c.EventEmitter),this.onLinuxMouseSelection=this._onLinuxMouseSelection.event,this._onRedrawRequest=this.register(new c.EventEmitter),this.onRequestRedraw=this._onRedrawRequest.event,this._onSelectionChange=this.register(new c.EventEmitter),this.onSelectionChange=this._onSelectionChange.event,this._onRequestScrollLines=this.register(new c.EventEmitter),this.onRequestScrollLines=this._onRequestScrollLines.event,this._mouseMoveListener=e=>this._handleMouseMove(e),this._mouseUpListener=e=>this._handleMouseUp(e),this._coreService.onUserInput((()=>{this.hasSelection&&this.clearSelection()})),this._trimListener=this._bufferService.buffer.lines.onTrim((e=>this._handleTrim(e))),this.register(this._bufferService.buffers.onBufferActivate((e=>this._handleBufferActivate(e)))),this.enable(),this._model=new a.SelectionModel(this._bufferService),this._activeSelectionMode=0,this.register((0,l.toDisposable)((()=>{this._removeMouseDownListeners()})))}reset(){this.clearSelection()}disable(){this.clearSelection(),this._enabled=!1}enable(){this._enabled=!0}get selectionStart(){return this._model.finalSelectionStart}get selectionEnd(){return this._model.finalSelectionEnd}get hasSelection(){const e=this._model.finalSelectionStart,t=this._model.finalSelectionEnd;return!(!e||!t||e[0]===t[0]&&e[1]===t[1])}get selectionText(){const e=this._model.finalSelectionStart,t=this._model.finalSelectionEnd;if(!e||!t)return"";const i=this._bufferService.buffer,s=[];if(3===this._activeSelectionMode){if(e[0]===t[0])return"";const r=e[0]e.replace(g," "))).join(d.isWindows?"\r\n":"\n")}clearSelection(){this._model.clearSelection(),this._removeMouseDownListeners(),this.refresh(),this._onSelectionChange.fire()}refresh(e){this._refreshAnimationFrame||(this._refreshAnimationFrame=this._coreBrowserService.window.requestAnimationFrame((()=>this._refresh()))),d.isLinux&&e&&this.selectionText.length&&this._onLinuxMouseSelection.fire(this.selectionText)}_refresh(){this._refreshAnimationFrame=void 0,this._onRedrawRequest.fire({start:this._model.finalSelectionStart,end:this._model.finalSelectionEnd,columnSelectMode:3===this._activeSelectionMode})}_isClickInSelection(e){const t=this._getMouseBufferCoords(e),i=this._model.finalSelectionStart,s=this._model.finalSelectionEnd;return!!(i&&s&&t)&&this._areCoordsInSelection(t,i,s)}isCellInSelection(e,t){const i=this._model.finalSelectionStart,s=this._model.finalSelectionEnd;return!(!i||!s)&&this._areCoordsInSelection([e,t],i,s)}_areCoordsInSelection(e,t,i){return e[1]>t[1]&&e[1]=t[0]&&e[0]=t[0]}_selectWordAtCursor(e,t){var i,s;const r=null===(s=null===(i=this._linkifier.currentLink)||void 0===i?void 0:i.link)||void 0===s?void 0:s.range;if(r)return this._model.selectionStart=[r.start.x-1,r.start.y-1],this._model.selectionStartLength=(0,_.getRangeLength)(r,this._bufferService.cols),this._model.selectionEnd=void 0,!0;const n=this._getMouseBufferCoords(e);return!!n&&(this._selectWordAt(n,t),this._model.selectionEnd=void 0,!0)}selectAll(){this._model.isSelectAllActive=!0,this.refresh(),this._onSelectionChange.fire()}selectLines(e,t){this._model.clearSelection(),e=Math.max(e,0),t=Math.min(t,this._bufferService.buffer.lines.length-1),this._model.selectionStart=[0,e],this._model.selectionEnd=[this._bufferService.cols,t],this.refresh(),this._onSelectionChange.fire()}_handleTrim(e){this._model.handleTrim(e)&&this.refresh()}_getMouseBufferCoords(e){const t=this._mouseService.getCoords(e,this._screenElement,this._bufferService.cols,this._bufferService.rows,!0);if(t)return t[0]--,t[1]--,t[1]+=this._bufferService.buffer.ydisp,t}_getMouseEventScrollAmount(e){let t=(0,n.getCoordsRelativeToElement)(this._coreBrowserService.window,e,this._screenElement)[1];const i=this._renderService.dimensions.css.canvas.height;return t>=0&&t<=i?0:(t>i&&(t-=i),t=Math.min(Math.max(t,-50),50),t/=50,t/Math.abs(t)+Math.round(14*t))}shouldForceSelection(e){return d.isMac?e.altKey&&this._optionsService.rawOptions.macOptionClickForcesSelection:e.shiftKey}handleMouseDown(e){if(this._mouseDownTimeStamp=e.timeStamp,(2!==e.button||!this.hasSelection)&&0===e.button){if(!this._enabled){if(!this.shouldForceSelection(e))return;e.stopPropagation()}e.preventDefault(),this._dragScrollAmount=0,this._enabled&&e.shiftKey?this._handleIncrementalClick(e):1===e.detail?this._handleSingleClick(e):2===e.detail?this._handleDoubleClick(e):3===e.detail&&this._handleTripleClick(e),this._addMouseDownListeners(),this.refresh(!0)}}_addMouseDownListeners(){this._screenElement.ownerDocument&&(this._screenElement.ownerDocument.addEventListener("mousemove",this._mouseMoveListener),this._screenElement.ownerDocument.addEventListener("mouseup",this._mouseUpListener)),this._dragScrollIntervalTimer=this._coreBrowserService.window.setInterval((()=>this._dragScroll()),50)}_removeMouseDownListeners(){this._screenElement.ownerDocument&&(this._screenElement.ownerDocument.removeEventListener("mousemove",this._mouseMoveListener),this._screenElement.ownerDocument.removeEventListener("mouseup",this._mouseUpListener)),this._coreBrowserService.window.clearInterval(this._dragScrollIntervalTimer),this._dragScrollIntervalTimer=void 0}_handleIncrementalClick(e){this._model.selectionStart&&(this._model.selectionEnd=this._getMouseBufferCoords(e))}_handleSingleClick(e){if(this._model.selectionStartLength=0,this._model.isSelectAllActive=!1,this._activeSelectionMode=this.shouldColumnSelect(e)?3:0,this._model.selectionStart=this._getMouseBufferCoords(e),!this._model.selectionStart)return;this._model.selectionEnd=void 0;const t=this._bufferService.buffer.lines.get(this._model.selectionStart[1]);t&&t.length!==this._model.selectionStart[0]&&0===t.hasWidth(this._model.selectionStart[0])&&this._model.selectionStart[0]++}_handleDoubleClick(e){this._selectWordAtCursor(e,!0)&&(this._activeSelectionMode=1)}_handleTripleClick(e){const t=this._getMouseBufferCoords(e);t&&(this._activeSelectionMode=2,this._selectLineAt(t[1]))}shouldColumnSelect(e){return e.altKey&&!(d.isMac&&this._optionsService.rawOptions.macOptionClickForcesSelection)}_handleMouseMove(e){if(e.stopImmediatePropagation(),!this._model.selectionStart)return;const t=this._model.selectionEnd?[this._model.selectionEnd[0],this._model.selectionEnd[1]]:null;if(this._model.selectionEnd=this._getMouseBufferCoords(e),!this._model.selectionEnd)return void this.refresh(!0);2===this._activeSelectionMode?this._model.selectionEnd[1]0?this._model.selectionEnd[0]=this._bufferService.cols:this._dragScrollAmount<0&&(this._model.selectionEnd[0]=0));const i=this._bufferService.buffer;if(this._model.selectionEnd[1]0?(3!==this._activeSelectionMode&&(this._model.selectionEnd[0]=this._bufferService.cols),this._model.selectionEnd[1]=Math.min(e.ydisp+this._bufferService.rows,e.lines.length-1)):(3!==this._activeSelectionMode&&(this._model.selectionEnd[0]=0),this._model.selectionEnd[1]=e.ydisp),this.refresh()}}_handleMouseUp(e){const t=e.timeStamp-this._mouseDownTimeStamp;if(this._removeMouseDownListeners(),this.selectionText.length<=1&&t<500&&e.altKey&&this._optionsService.rawOptions.altClickMovesCursor){if(this._bufferService.buffer.ybase===this._bufferService.buffer.ydisp){const t=this._mouseService.getCoords(e,this._element,this._bufferService.cols,this._bufferService.rows,!1);if(t&&void 0!==t[0]&&void 0!==t[1]){const e=(0,o.moveToCellSequence)(t[0]-1,t[1]-1,this._bufferService,this._coreService.decPrivateModes.applicationCursorKeys);this._coreService.triggerDataEvent(e,!0)}}}else this._fireEventIfSelectionChanged()}_fireEventIfSelectionChanged(){const e=this._model.finalSelectionStart,t=this._model.finalSelectionEnd,i=!(!e||!t||e[0]===t[0]&&e[1]===t[1]);i?e&&t&&(this._oldSelectionStart&&this._oldSelectionEnd&&e[0]===this._oldSelectionStart[0]&&e[1]===this._oldSelectionStart[1]&&t[0]===this._oldSelectionEnd[0]&&t[1]===this._oldSelectionEnd[1]||this._fireOnSelectionChange(e,t,i)):this._oldHasSelection&&this._fireOnSelectionChange(e,t,i)}_fireOnSelectionChange(e,t,i){this._oldSelectionStart=e,this._oldSelectionEnd=t,this._oldHasSelection=i,this._onSelectionChange.fire()}_handleBufferActivate(e){this.clearSelection(),this._trimListener.dispose(),this._trimListener=e.activeBuffer.lines.onTrim((e=>this._handleTrim(e)))}_convertViewportColToCharacterIndex(e,t){let i=t;for(let s=0;t>=s;s++){const r=e.loadCell(s,this._workCell).getChars().length;0===this._workCell.getWidth()?i--:r>1&&t!==s&&(i+=r-1)}return i}setSelection(e,t,i){this._model.clearSelection(),this._removeMouseDownListeners(),this._model.selectionStart=[e,t],this._model.selectionStartLength=i,this.refresh(),this._fireEventIfSelectionChanged()}rightClickSelect(e){this._isClickInSelection(e)||(this._selectWordAtCursor(e,!1)&&this.refresh(!0),this._fireEventIfSelectionChanged())}_getWordAt(e,t,i=!0,s=!0){if(e[0]>=this._bufferService.cols)return;const r=this._bufferService.buffer,n=r.lines.get(e[1]);if(!n)return;const o=r.translateBufferLineToString(e[1],!1);let a=this._convertViewportColToCharacterIndex(n,e[0]),h=a;const c=e[0]-a;let l=0,d=0,_=0,u=0;if(" "===o.charAt(a)){for(;a>0&&" "===o.charAt(a-1);)a--;for(;h1&&(u+=s-1,h+=s-1);t>0&&a>0&&!this._isCharWordSeparator(n.loadCell(t-1,this._workCell));){n.loadCell(t-1,this._workCell);const e=this._workCell.getChars().length;0===this._workCell.getWidth()?(l++,t--):e>1&&(_+=e-1,a-=e-1),a--,t--}for(;i1&&(u+=e-1,h+=e-1),h++,i++}}h++;let f=a+c-l+_,v=Math.min(this._bufferService.cols,h-a+l+d-_-u);if(t||""!==o.slice(a,h).trim()){if(i&&0===f&&32!==n.getCodePoint(0)){const t=r.lines.get(e[1]-1);if(t&&n.isWrapped&&32!==t.getCodePoint(this._bufferService.cols-1)){const t=this._getWordAt([this._bufferService.cols-1,e[1]-1],!1,!0,!1);if(t){const e=this._bufferService.cols-t.start;f-=e,v+=e}}}if(s&&f+v===this._bufferService.cols&&32!==n.getCodePoint(this._bufferService.cols-1)){const t=r.lines.get(e[1]+1);if((null==t?void 0:t.isWrapped)&&32!==t.getCodePoint(0)){const t=this._getWordAt([0,e[1]+1],!1,!1,!0);t&&(v+=t.length)}}return{start:f,length:v}}}_selectWordAt(e,t){const i=this._getWordAt(e,t);if(i){for(;i.start<0;)i.start+=this._bufferService.cols,e[1]--;this._model.selectionStart=[i.start,e[1]],this._model.selectionStartLength=i.length}}_selectToWordAt(e){const t=this._getWordAt(e,!0);if(t){let i=e[1];for(;t.start<0;)t.start+=this._bufferService.cols,i--;if(!this._model.areSelectionValuesReversed())for(;t.start+t.length>this._bufferService.cols;)t.length-=this._bufferService.cols,i++;this._model.selectionEnd=[this._model.areSelectionValuesReversed()?t.start:t.start+t.length,i]}}_isCharWordSeparator(e){return 0!==e.getWidth()&&this._optionsService.rawOptions.wordSeparator.indexOf(e.getChars())>=0}_selectLineAt(e){const t=this._bufferService.buffer.getWrappedRangeForLine(e),i={start:{x:0,y:t.first},end:{x:this._bufferService.cols-1,y:t.last}};this._model.selectionStart=[0,t.first],this._model.selectionEnd=void 0,this._model.selectionStartLength=(0,_.getRangeLength)(i,this._bufferService.cols)}};t.SelectionService=p=s([r(3,f.IBufferService),r(4,f.ICoreService),r(5,h.IMouseService),r(6,f.IOptionsService),r(7,h.IRenderService),r(8,h.ICoreBrowserService)],p)},4725:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.IThemeService=t.ICharacterJoinerService=t.ISelectionService=t.IRenderService=t.IMouseService=t.ICoreBrowserService=t.ICharSizeService=void 0;const s=i(8343);t.ICharSizeService=(0,s.createDecorator)("CharSizeService"),t.ICoreBrowserService=(0,s.createDecorator)("CoreBrowserService"),t.IMouseService=(0,s.createDecorator)("MouseService"),t.IRenderService=(0,s.createDecorator)("RenderService"),t.ISelectionService=(0,s.createDecorator)("SelectionService"),t.ICharacterJoinerService=(0,s.createDecorator)("CharacterJoinerService"),t.IThemeService=(0,s.createDecorator)("ThemeService")},6731:function(e,t,i){var s=this&&this.__decorate||function(e,t,i,s){var r,n=arguments.length,o=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,i):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,s);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(n<3?r(o):n>3?r(t,i,o):r(t,i))||o);return n>3&&o&&Object.defineProperty(t,i,o),o},r=this&&this.__param||function(e,t){return function(i,s){t(i,s,e)}};Object.defineProperty(t,"__esModule",{value:!0}),t.ThemeService=t.DEFAULT_ANSI_COLORS=void 0;const n=i(7239),o=i(8055),a=i(8460),h=i(844),c=i(2585),l=o.css.toColor("#ffffff"),d=o.css.toColor("#000000"),_=o.css.toColor("#ffffff"),u=o.css.toColor("#000000"),f={css:"rgba(255, 255, 255, 0.3)",rgba:4294967117};t.DEFAULT_ANSI_COLORS=Object.freeze((()=>{const e=[o.css.toColor("#2e3436"),o.css.toColor("#cc0000"),o.css.toColor("#4e9a06"),o.css.toColor("#c4a000"),o.css.toColor("#3465a4"),o.css.toColor("#75507b"),o.css.toColor("#06989a"),o.css.toColor("#d3d7cf"),o.css.toColor("#555753"),o.css.toColor("#ef2929"),o.css.toColor("#8ae234"),o.css.toColor("#fce94f"),o.css.toColor("#729fcf"),o.css.toColor("#ad7fa8"),o.css.toColor("#34e2e2"),o.css.toColor("#eeeeec")],t=[0,95,135,175,215,255];for(let i=0;i<216;i++){const s=t[i/36%6|0],r=t[i/6%6|0],n=t[i%6];e.push({css:o.channels.toCss(s,r,n),rgba:o.channels.toRgba(s,r,n)})}for(let t=0;t<24;t++){const i=8+10*t;e.push({css:o.channels.toCss(i,i,i),rgba:o.channels.toRgba(i,i,i)})}return e})());let v=t.ThemeService=class extends h.Disposable{get colors(){return this._colors}constructor(e){super(),this._optionsService=e,this._contrastCache=new n.ColorContrastCache,this._halfContrastCache=new n.ColorContrastCache,this._onChangeColors=this.register(new a.EventEmitter),this.onChangeColors=this._onChangeColors.event,this._colors={foreground:l,background:d,cursor:_,cursorAccent:u,selectionForeground:void 0,selectionBackgroundTransparent:f,selectionBackgroundOpaque:o.color.blend(d,f),selectionInactiveBackgroundTransparent:f,selectionInactiveBackgroundOpaque:o.color.blend(d,f),ansi:t.DEFAULT_ANSI_COLORS.slice(),contrastCache:this._contrastCache,halfContrastCache:this._halfContrastCache},this._updateRestoreColors(),this._setTheme(this._optionsService.rawOptions.theme),this.register(this._optionsService.onSpecificOptionChange("minimumContrastRatio",(()=>this._contrastCache.clear()))),this.register(this._optionsService.onSpecificOptionChange("theme",(()=>this._setTheme(this._optionsService.rawOptions.theme))))}_setTheme(e={}){const i=this._colors;if(i.foreground=g(e.foreground,l),i.background=g(e.background,d),i.cursor=g(e.cursor,_),i.cursorAccent=g(e.cursorAccent,u),i.selectionBackgroundTransparent=g(e.selectionBackground,f),i.selectionBackgroundOpaque=o.color.blend(i.background,i.selectionBackgroundTransparent),i.selectionInactiveBackgroundTransparent=g(e.selectionInactiveBackground,i.selectionBackgroundTransparent),i.selectionInactiveBackgroundOpaque=o.color.blend(i.background,i.selectionInactiveBackgroundTransparent),i.selectionForeground=e.selectionForeground?g(e.selectionForeground,o.NULL_COLOR):void 0,i.selectionForeground===o.NULL_COLOR&&(i.selectionForeground=void 0),o.color.isOpaque(i.selectionBackgroundTransparent)){const e=.3;i.selectionBackgroundTransparent=o.color.opacity(i.selectionBackgroundTransparent,e)}if(o.color.isOpaque(i.selectionInactiveBackgroundTransparent)){const e=.3;i.selectionInactiveBackgroundTransparent=o.color.opacity(i.selectionInactiveBackgroundTransparent,e)}if(i.ansi=t.DEFAULT_ANSI_COLORS.slice(),i.ansi[0]=g(e.black,t.DEFAULT_ANSI_COLORS[0]),i.ansi[1]=g(e.red,t.DEFAULT_ANSI_COLORS[1]),i.ansi[2]=g(e.green,t.DEFAULT_ANSI_COLORS[2]),i.ansi[3]=g(e.yellow,t.DEFAULT_ANSI_COLORS[3]),i.ansi[4]=g(e.blue,t.DEFAULT_ANSI_COLORS[4]),i.ansi[5]=g(e.magenta,t.DEFAULT_ANSI_COLORS[5]),i.ansi[6]=g(e.cyan,t.DEFAULT_ANSI_COLORS[6]),i.ansi[7]=g(e.white,t.DEFAULT_ANSI_COLORS[7]),i.ansi[8]=g(e.brightBlack,t.DEFAULT_ANSI_COLORS[8]),i.ansi[9]=g(e.brightRed,t.DEFAULT_ANSI_COLORS[9]),i.ansi[10]=g(e.brightGreen,t.DEFAULT_ANSI_COLORS[10]),i.ansi[11]=g(e.brightYellow,t.DEFAULT_ANSI_COLORS[11]),i.ansi[12]=g(e.brightBlue,t.DEFAULT_ANSI_COLORS[12]),i.ansi[13]=g(e.brightMagenta,t.DEFAULT_ANSI_COLORS[13]),i.ansi[14]=g(e.brightCyan,t.DEFAULT_ANSI_COLORS[14]),i.ansi[15]=g(e.brightWhite,t.DEFAULT_ANSI_COLORS[15]),e.extendedAnsi){const s=Math.min(i.ansi.length-16,e.extendedAnsi.length);for(let r=0;r{Object.defineProperty(t,"__esModule",{value:!0}),t.CircularList=void 0;const s=i(8460),r=i(844);class n extends r.Disposable{constructor(e){super(),this._maxLength=e,this.onDeleteEmitter=this.register(new s.EventEmitter),this.onDelete=this.onDeleteEmitter.event,this.onInsertEmitter=this.register(new s.EventEmitter),this.onInsert=this.onInsertEmitter.event,this.onTrimEmitter=this.register(new s.EventEmitter),this.onTrim=this.onTrimEmitter.event,this._array=new Array(this._maxLength),this._startIndex=0,this._length=0}get maxLength(){return this._maxLength}set maxLength(e){if(this._maxLength===e)return;const t=new Array(e);for(let i=0;ithis._length)for(let t=this._length;t=e;t--)this._array[this._getCyclicIndex(t+i.length)]=this._array[this._getCyclicIndex(t)];for(let t=0;tthis._maxLength){const e=this._length+i.length-this._maxLength;this._startIndex+=e,this._length=this._maxLength,this.onTrimEmitter.fire(e)}else this._length+=i.length}trimStart(e){e>this._length&&(e=this._length),this._startIndex+=e,this._length-=e,this.onTrimEmitter.fire(e)}shiftElements(e,t,i){if(!(t<=0)){if(e<0||e>=this._length)throw new Error("start argument out of range");if(e+i<0)throw new Error("Cannot shift elements in list beyond index 0");if(i>0){for(let s=t-1;s>=0;s--)this.set(e+s+i,this.get(e+s));const s=e+t+i-this._length;if(s>0)for(this._length+=s;this._length>this._maxLength;)this._length--,this._startIndex++,this.onTrimEmitter.fire(1)}else for(let s=0;s{Object.defineProperty(t,"__esModule",{value:!0}),t.clone=void 0,t.clone=function e(t,i=5){if("object"!=typeof t)return t;const s=Array.isArray(t)?[]:{};for(const r in t)s[r]=i<=1?t[r]:t[r]&&e(t[r],i-1);return s}},8055:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.contrastRatio=t.toPaddedHex=t.rgba=t.rgb=t.css=t.color=t.channels=t.NULL_COLOR=void 0;const s=i(6114);let r=0,n=0,o=0,a=0;var h,c,l,d,_;function u(e){const t=e.toString(16);return t.length<2?"0"+t:t}function f(e,t){return e>>0}}(h||(t.channels=h={})),function(e){function t(e,t){return a=Math.round(255*t),[r,n,o]=_.toChannels(e.rgba),{css:h.toCss(r,n,o,a),rgba:h.toRgba(r,n,o,a)}}e.blend=function(e,t){if(a=(255&t.rgba)/255,1===a)return{css:t.css,rgba:t.rgba};const i=t.rgba>>24&255,s=t.rgba>>16&255,c=t.rgba>>8&255,l=e.rgba>>24&255,d=e.rgba>>16&255,_=e.rgba>>8&255;return r=l+Math.round((i-l)*a),n=d+Math.round((s-d)*a),o=_+Math.round((c-_)*a),{css:h.toCss(r,n,o),rgba:h.toRgba(r,n,o)}},e.isOpaque=function(e){return 255==(255&e.rgba)},e.ensureContrastRatio=function(e,t,i){const s=_.ensureContrastRatio(e.rgba,t.rgba,i);if(s)return _.toColor(s>>24&255,s>>16&255,s>>8&255)},e.opaque=function(e){const t=(255|e.rgba)>>>0;return[r,n,o]=_.toChannels(t),{css:h.toCss(r,n,o),rgba:t}},e.opacity=t,e.multiplyOpacity=function(e,i){return a=255&e.rgba,t(e,a*i/255)},e.toColorRGB=function(e){return[e.rgba>>24&255,e.rgba>>16&255,e.rgba>>8&255]}}(c||(t.color=c={})),function(e){let t,i;if(!s.isNode){const e=document.createElement("canvas");e.width=1,e.height=1;const s=e.getContext("2d",{willReadFrequently:!0});s&&(t=s,t.globalCompositeOperation="copy",i=t.createLinearGradient(0,0,1,1))}e.toColor=function(e){if(e.match(/#[\da-f]{3,8}/i))switch(e.length){case 4:return r=parseInt(e.slice(1,2).repeat(2),16),n=parseInt(e.slice(2,3).repeat(2),16),o=parseInt(e.slice(3,4).repeat(2),16),_.toColor(r,n,o);case 5:return r=parseInt(e.slice(1,2).repeat(2),16),n=parseInt(e.slice(2,3).repeat(2),16),o=parseInt(e.slice(3,4).repeat(2),16),a=parseInt(e.slice(4,5).repeat(2),16),_.toColor(r,n,o,a);case 7:return{css:e,rgba:(parseInt(e.slice(1),16)<<8|255)>>>0};case 9:return{css:e,rgba:parseInt(e.slice(1),16)>>>0}}const s=e.match(/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(,\s*(0|1|\d?\.(\d+))\s*)?\)/);if(s)return r=parseInt(s[1]),n=parseInt(s[2]),o=parseInt(s[3]),a=Math.round(255*(void 0===s[5]?1:parseFloat(s[5]))),_.toColor(r,n,o,a);if(!t||!i)throw new Error("css.toColor: Unsupported css format");if(t.fillStyle=i,t.fillStyle=e,"string"!=typeof t.fillStyle)throw new Error("css.toColor: Unsupported css format");if(t.fillRect(0,0,1,1),[r,n,o,a]=t.getImageData(0,0,1,1).data,255!==a)throw new Error("css.toColor: Unsupported css format");return{rgba:h.toRgba(r,n,o,a),css:e}}}(l||(t.css=l={})),function(e){function t(e,t,i){const s=e/255,r=t/255,n=i/255;return.2126*(s<=.03928?s/12.92:Math.pow((s+.055)/1.055,2.4))+.7152*(r<=.03928?r/12.92:Math.pow((r+.055)/1.055,2.4))+.0722*(n<=.03928?n/12.92:Math.pow((n+.055)/1.055,2.4))}e.relativeLuminance=function(e){return t(e>>16&255,e>>8&255,255&e)},e.relativeLuminance2=t}(d||(t.rgb=d={})),function(e){function t(e,t,i){const s=e>>24&255,r=e>>16&255,n=e>>8&255;let o=t>>24&255,a=t>>16&255,h=t>>8&255,c=f(d.relativeLuminance2(o,a,h),d.relativeLuminance2(s,r,n));for(;c0||a>0||h>0);)o-=Math.max(0,Math.ceil(.1*o)),a-=Math.max(0,Math.ceil(.1*a)),h-=Math.max(0,Math.ceil(.1*h)),c=f(d.relativeLuminance2(o,a,h),d.relativeLuminance2(s,r,n));return(o<<24|a<<16|h<<8|255)>>>0}function i(e,t,i){const s=e>>24&255,r=e>>16&255,n=e>>8&255;let o=t>>24&255,a=t>>16&255,h=t>>8&255,c=f(d.relativeLuminance2(o,a,h),d.relativeLuminance2(s,r,n));for(;c>>0}e.ensureContrastRatio=function(e,s,r){const n=d.relativeLuminance(e>>8),o=d.relativeLuminance(s>>8);if(f(n,o)>8));if(af(n,d.relativeLuminance(t>>8))?o:t}return o}const a=i(e,s,r),h=f(n,d.relativeLuminance(a>>8));if(hf(n,d.relativeLuminance(i>>8))?a:i}return a}},e.reduceLuminance=t,e.increaseLuminance=i,e.toChannels=function(e){return[e>>24&255,e>>16&255,e>>8&255,255&e]},e.toColor=function(e,t,i,s){return{css:h.toCss(e,t,i,s),rgba:h.toRgba(e,t,i,s)}}}(_||(t.rgba=_={})),t.toPaddedHex=u,t.contrastRatio=f},8969:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.CoreTerminal=void 0;const s=i(844),r=i(2585),n=i(4348),o=i(7866),a=i(744),h=i(7302),c=i(6975),l=i(8460),d=i(1753),_=i(1480),u=i(7994),f=i(9282),v=i(5435),g=i(5981),p=i(2660);let m=!1;class S extends s.Disposable{get onScroll(){return this._onScrollApi||(this._onScrollApi=this.register(new l.EventEmitter),this._onScroll.event((e=>{var t;null===(t=this._onScrollApi)||void 0===t||t.fire(e.position)}))),this._onScrollApi.event}get cols(){return this._bufferService.cols}get rows(){return this._bufferService.rows}get buffers(){return this._bufferService.buffers}get options(){return this.optionsService.options}set options(e){for(const t in e)this.optionsService.options[t]=e[t]}constructor(e){super(),this._windowsWrappingHeuristics=this.register(new s.MutableDisposable),this._onBinary=this.register(new l.EventEmitter),this.onBinary=this._onBinary.event,this._onData=this.register(new l.EventEmitter),this.onData=this._onData.event,this._onLineFeed=this.register(new l.EventEmitter),this.onLineFeed=this._onLineFeed.event,this._onResize=this.register(new l.EventEmitter),this.onResize=this._onResize.event,this._onWriteParsed=this.register(new l.EventEmitter),this.onWriteParsed=this._onWriteParsed.event,this._onScroll=this.register(new l.EventEmitter),this._instantiationService=new n.InstantiationService,this.optionsService=this.register(new h.OptionsService(e)),this._instantiationService.setService(r.IOptionsService,this.optionsService),this._bufferService=this.register(this._instantiationService.createInstance(a.BufferService)),this._instantiationService.setService(r.IBufferService,this._bufferService),this._logService=this.register(this._instantiationService.createInstance(o.LogService)),this._instantiationService.setService(r.ILogService,this._logService),this.coreService=this.register(this._instantiationService.createInstance(c.CoreService)),this._instantiationService.setService(r.ICoreService,this.coreService),this.coreMouseService=this.register(this._instantiationService.createInstance(d.CoreMouseService)),this._instantiationService.setService(r.ICoreMouseService,this.coreMouseService),this.unicodeService=this.register(this._instantiationService.createInstance(_.UnicodeService)),this._instantiationService.setService(r.IUnicodeService,this.unicodeService),this._charsetService=this._instantiationService.createInstance(u.CharsetService),this._instantiationService.setService(r.ICharsetService,this._charsetService),this._oscLinkService=this._instantiationService.createInstance(p.OscLinkService),this._instantiationService.setService(r.IOscLinkService,this._oscLinkService),this._inputHandler=this.register(new v.InputHandler(this._bufferService,this._charsetService,this.coreService,this._logService,this.optionsService,this._oscLinkService,this.coreMouseService,this.unicodeService)),this.register((0,l.forwardEvent)(this._inputHandler.onLineFeed,this._onLineFeed)),this.register(this._inputHandler),this.register((0,l.forwardEvent)(this._bufferService.onResize,this._onResize)),this.register((0,l.forwardEvent)(this.coreService.onData,this._onData)),this.register((0,l.forwardEvent)(this.coreService.onBinary,this._onBinary)),this.register(this.coreService.onRequestScrollToBottom((()=>this.scrollToBottom()))),this.register(this.coreService.onUserInput((()=>this._writeBuffer.handleUserInput()))),this.register(this.optionsService.onMultipleOptionChange(["windowsMode","windowsPty"],(()=>this._handleWindowsPtyOptionChange()))),this.register(this._bufferService.onScroll((e=>{this._onScroll.fire({position:this._bufferService.buffer.ydisp,source:0}),this._inputHandler.markRangeDirty(this._bufferService.buffer.scrollTop,this._bufferService.buffer.scrollBottom)}))),this.register(this._inputHandler.onScroll((e=>{this._onScroll.fire({position:this._bufferService.buffer.ydisp,source:0}),this._inputHandler.markRangeDirty(this._bufferService.buffer.scrollTop,this._bufferService.buffer.scrollBottom)}))),this._writeBuffer=this.register(new g.WriteBuffer(((e,t)=>this._inputHandler.parse(e,t)))),this.register((0,l.forwardEvent)(this._writeBuffer.onWriteParsed,this._onWriteParsed))}write(e,t){this._writeBuffer.write(e,t)}writeSync(e,t){this._logService.logLevel<=r.LogLevelEnum.WARN&&!m&&(this._logService.warn("writeSync is unreliable and will be removed soon."),m=!0),this._writeBuffer.writeSync(e,t)}resize(e,t){isNaN(e)||isNaN(t)||(e=Math.max(e,a.MINIMUM_COLS),t=Math.max(t,a.MINIMUM_ROWS),this._bufferService.resize(e,t))}scroll(e,t=!1){this._bufferService.scroll(e,t)}scrollLines(e,t,i){this._bufferService.scrollLines(e,t,i)}scrollPages(e){this.scrollLines(e*(this.rows-1))}scrollToTop(){this.scrollLines(-this._bufferService.buffer.ydisp)}scrollToBottom(){this.scrollLines(this._bufferService.buffer.ybase-this._bufferService.buffer.ydisp)}scrollToLine(e){const t=e-this._bufferService.buffer.ydisp;0!==t&&this.scrollLines(t)}registerEscHandler(e,t){return this._inputHandler.registerEscHandler(e,t)}registerDcsHandler(e,t){return this._inputHandler.registerDcsHandler(e,t)}registerCsiHandler(e,t){return this._inputHandler.registerCsiHandler(e,t)}registerOscHandler(e,t){return this._inputHandler.registerOscHandler(e,t)}_setup(){this._handleWindowsPtyOptionChange()}reset(){this._inputHandler.reset(),this._bufferService.reset(),this._charsetService.reset(),this.coreService.reset(),this.coreMouseService.reset()}_handleWindowsPtyOptionChange(){let e=!1;const t=this.optionsService.rawOptions.windowsPty;t&&void 0!==t.buildNumber&&void 0!==t.buildNumber?e=!!("conpty"===t.backend&&t.buildNumber<21376):this.optionsService.rawOptions.windowsMode&&(e=!0),e?this._enableWindowsWrappingHeuristics():this._windowsWrappingHeuristics.clear()}_enableWindowsWrappingHeuristics(){if(!this._windowsWrappingHeuristics.value){const e=[];e.push(this.onLineFeed(f.updateWindowsModeWrappedState.bind(null,this._bufferService))),e.push(this.registerCsiHandler({final:"H"},(()=>((0,f.updateWindowsModeWrappedState)(this._bufferService),!1)))),this._windowsWrappingHeuristics.value=(0,s.toDisposable)((()=>{for(const t of e)t.dispose()}))}}}t.CoreTerminal=S},8460:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.forwardEvent=t.EventEmitter=void 0,t.EventEmitter=class{constructor(){this._listeners=[],this._disposed=!1}get event(){return this._event||(this._event=e=>(this._listeners.push(e),{dispose:()=>{if(!this._disposed)for(let t=0;tt.fire(e)))}},5435:function(e,t,i){var s=this&&this.__decorate||function(e,t,i,s){var r,n=arguments.length,o=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,i):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,s);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(n<3?r(o):n>3?r(t,i,o):r(t,i))||o);return n>3&&o&&Object.defineProperty(t,i,o),o},r=this&&this.__param||function(e,t){return function(i,s){t(i,s,e)}};Object.defineProperty(t,"__esModule",{value:!0}),t.InputHandler=t.WindowsOptionsReportType=void 0;const n=i(2584),o=i(7116),a=i(2015),h=i(844),c=i(482),l=i(8437),d=i(8460),_=i(643),u=i(511),f=i(3734),v=i(2585),g=i(6242),p=i(6351),m=i(5941),S={"(":0,")":1,"*":2,"+":3,"-":1,".":2},C=131072;function b(e,t){if(e>24)return t.setWinLines||!1;switch(e){case 1:return!!t.restoreWin;case 2:return!!t.minimizeWin;case 3:return!!t.setWinPosition;case 4:return!!t.setWinSizePixels;case 5:return!!t.raiseWin;case 6:return!!t.lowerWin;case 7:return!!t.refreshWin;case 8:return!!t.setWinSizeChars;case 9:return!!t.maximizeWin;case 10:return!!t.fullscreenWin;case 11:return!!t.getWinState;case 13:return!!t.getWinPosition;case 14:return!!t.getWinSizePixels;case 15:return!!t.getScreenSizePixels;case 16:return!!t.getCellSizePixels;case 18:return!!t.getWinSizeChars;case 19:return!!t.getScreenSizeChars;case 20:return!!t.getIconTitle;case 21:return!!t.getWinTitle;case 22:return!!t.pushTitle;case 23:return!!t.popTitle;case 24:return!!t.setWinLines}return!1}var y;!function(e){e[e.GET_WIN_SIZE_PIXELS=0]="GET_WIN_SIZE_PIXELS",e[e.GET_CELL_SIZE_PIXELS=1]="GET_CELL_SIZE_PIXELS"}(y||(t.WindowsOptionsReportType=y={}));let w=0;class E extends h.Disposable{getAttrData(){return this._curAttrData}constructor(e,t,i,s,r,h,_,f,v=new a.EscapeSequenceParser){super(),this._bufferService=e,this._charsetService=t,this._coreService=i,this._logService=s,this._optionsService=r,this._oscLinkService=h,this._coreMouseService=_,this._unicodeService=f,this._parser=v,this._parseBuffer=new Uint32Array(4096),this._stringDecoder=new c.StringToUtf32,this._utf8Decoder=new c.Utf8ToUtf32,this._workCell=new u.CellData,this._windowTitle="",this._iconName="",this._windowTitleStack=[],this._iconNameStack=[],this._curAttrData=l.DEFAULT_ATTR_DATA.clone(),this._eraseAttrDataInternal=l.DEFAULT_ATTR_DATA.clone(),this._onRequestBell=this.register(new d.EventEmitter),this.onRequestBell=this._onRequestBell.event,this._onRequestRefreshRows=this.register(new d.EventEmitter),this.onRequestRefreshRows=this._onRequestRefreshRows.event,this._onRequestReset=this.register(new d.EventEmitter),this.onRequestReset=this._onRequestReset.event,this._onRequestSendFocus=this.register(new d.EventEmitter),this.onRequestSendFocus=this._onRequestSendFocus.event,this._onRequestSyncScrollBar=this.register(new d.EventEmitter),this.onRequestSyncScrollBar=this._onRequestSyncScrollBar.event,this._onRequestWindowsOptionsReport=this.register(new d.EventEmitter),this.onRequestWindowsOptionsReport=this._onRequestWindowsOptionsReport.event,this._onA11yChar=this.register(new d.EventEmitter),this.onA11yChar=this._onA11yChar.event,this._onA11yTab=this.register(new d.EventEmitter),this.onA11yTab=this._onA11yTab.event,this._onCursorMove=this.register(new d.EventEmitter),this.onCursorMove=this._onCursorMove.event,this._onLineFeed=this.register(new d.EventEmitter),this.onLineFeed=this._onLineFeed.event,this._onScroll=this.register(new d.EventEmitter),this.onScroll=this._onScroll.event,this._onTitleChange=this.register(new d.EventEmitter),this.onTitleChange=this._onTitleChange.event,this._onColor=this.register(new d.EventEmitter),this.onColor=this._onColor.event,this._parseStack={paused:!1,cursorStartX:0,cursorStartY:0,decodedLength:0,position:0},this._specialColors=[256,257,258],this.register(this._parser),this._dirtyRowTracker=new k(this._bufferService),this._activeBuffer=this._bufferService.buffer,this.register(this._bufferService.buffers.onBufferActivate((e=>this._activeBuffer=e.activeBuffer))),this._parser.setCsiHandlerFallback(((e,t)=>{this._logService.debug("Unknown CSI code: ",{identifier:this._parser.identToString(e),params:t.toArray()})})),this._parser.setEscHandlerFallback((e=>{this._logService.debug("Unknown ESC code: ",{identifier:this._parser.identToString(e)})})),this._parser.setExecuteHandlerFallback((e=>{this._logService.debug("Unknown EXECUTE code: ",{code:e})})),this._parser.setOscHandlerFallback(((e,t,i)=>{this._logService.debug("Unknown OSC code: ",{identifier:e,action:t,data:i})})),this._parser.setDcsHandlerFallback(((e,t,i)=>{"HOOK"===t&&(i=i.toArray()),this._logService.debug("Unknown DCS code: ",{identifier:this._parser.identToString(e),action:t,payload:i})})),this._parser.setPrintHandler(((e,t,i)=>this.print(e,t,i))),this._parser.registerCsiHandler({final:"@"},(e=>this.insertChars(e))),this._parser.registerCsiHandler({intermediates:" ",final:"@"},(e=>this.scrollLeft(e))),this._parser.registerCsiHandler({final:"A"},(e=>this.cursorUp(e))),this._parser.registerCsiHandler({intermediates:" ",final:"A"},(e=>this.scrollRight(e))),this._parser.registerCsiHandler({final:"B"},(e=>this.cursorDown(e))),this._parser.registerCsiHandler({final:"C"},(e=>this.cursorForward(e))),this._parser.registerCsiHandler({final:"D"},(e=>this.cursorBackward(e))),this._parser.registerCsiHandler({final:"E"},(e=>this.cursorNextLine(e))),this._parser.registerCsiHandler({final:"F"},(e=>this.cursorPrecedingLine(e))),this._parser.registerCsiHandler({final:"G"},(e=>this.cursorCharAbsolute(e))),this._parser.registerCsiHandler({final:"H"},(e=>this.cursorPosition(e))),this._parser.registerCsiHandler({final:"I"},(e=>this.cursorForwardTab(e))),this._parser.registerCsiHandler({final:"J"},(e=>this.eraseInDisplay(e,!1))),this._parser.registerCsiHandler({prefix:"?",final:"J"},(e=>this.eraseInDisplay(e,!0))),this._parser.registerCsiHandler({final:"K"},(e=>this.eraseInLine(e,!1))),this._parser.registerCsiHandler({prefix:"?",final:"K"},(e=>this.eraseInLine(e,!0))),this._parser.registerCsiHandler({final:"L"},(e=>this.insertLines(e))),this._parser.registerCsiHandler({final:"M"},(e=>this.deleteLines(e))),this._parser.registerCsiHandler({final:"P"},(e=>this.deleteChars(e))),this._parser.registerCsiHandler({final:"S"},(e=>this.scrollUp(e))),this._parser.registerCsiHandler({final:"T"},(e=>this.scrollDown(e))),this._parser.registerCsiHandler({final:"X"},(e=>this.eraseChars(e))),this._parser.registerCsiHandler({final:"Z"},(e=>this.cursorBackwardTab(e))),this._parser.registerCsiHandler({final:"`"},(e=>this.charPosAbsolute(e))),this._parser.registerCsiHandler({final:"a"},(e=>this.hPositionRelative(e))),this._parser.registerCsiHandler({final:"b"},(e=>this.repeatPrecedingCharacter(e))),this._parser.registerCsiHandler({final:"c"},(e=>this.sendDeviceAttributesPrimary(e))),this._parser.registerCsiHandler({prefix:">",final:"c"},(e=>this.sendDeviceAttributesSecondary(e))),this._parser.registerCsiHandler({final:"d"},(e=>this.linePosAbsolute(e))),this._parser.registerCsiHandler({final:"e"},(e=>this.vPositionRelative(e))),this._parser.registerCsiHandler({final:"f"},(e=>this.hVPosition(e))),this._parser.registerCsiHandler({final:"g"},(e=>this.tabClear(e))),this._parser.registerCsiHandler({final:"h"},(e=>this.setMode(e))),this._parser.registerCsiHandler({prefix:"?",final:"h"},(e=>this.setModePrivate(e))),this._parser.registerCsiHandler({final:"l"},(e=>this.resetMode(e))),this._parser.registerCsiHandler({prefix:"?",final:"l"},(e=>this.resetModePrivate(e))),this._parser.registerCsiHandler({final:"m"},(e=>this.charAttributes(e))),this._parser.registerCsiHandler({final:"n"},(e=>this.deviceStatus(e))),this._parser.registerCsiHandler({prefix:"?",final:"n"},(e=>this.deviceStatusPrivate(e))),this._parser.registerCsiHandler({intermediates:"!",final:"p"},(e=>this.softReset(e))),this._parser.registerCsiHandler({intermediates:" ",final:"q"},(e=>this.setCursorStyle(e))),this._parser.registerCsiHandler({final:"r"},(e=>this.setScrollRegion(e))),this._parser.registerCsiHandler({final:"s"},(e=>this.saveCursor(e))),this._parser.registerCsiHandler({final:"t"},(e=>this.windowOptions(e))),this._parser.registerCsiHandler({final:"u"},(e=>this.restoreCursor(e))),this._parser.registerCsiHandler({intermediates:"'",final:"}"},(e=>this.insertColumns(e))),this._parser.registerCsiHandler({intermediates:"'",final:"~"},(e=>this.deleteColumns(e))),this._parser.registerCsiHandler({intermediates:'"',final:"q"},(e=>this.selectProtected(e))),this._parser.registerCsiHandler({intermediates:"$",final:"p"},(e=>this.requestMode(e,!0))),this._parser.registerCsiHandler({prefix:"?",intermediates:"$",final:"p"},(e=>this.requestMode(e,!1))),this._parser.setExecuteHandler(n.C0.BEL,(()=>this.bell())),this._parser.setExecuteHandler(n.C0.LF,(()=>this.lineFeed())),this._parser.setExecuteHandler(n.C0.VT,(()=>this.lineFeed())),this._parser.setExecuteHandler(n.C0.FF,(()=>this.lineFeed())),this._parser.setExecuteHandler(n.C0.CR,(()=>this.carriageReturn())),this._parser.setExecuteHandler(n.C0.BS,(()=>this.backspace())),this._parser.setExecuteHandler(n.C0.HT,(()=>this.tab())),this._parser.setExecuteHandler(n.C0.SO,(()=>this.shiftOut())),this._parser.setExecuteHandler(n.C0.SI,(()=>this.shiftIn())),this._parser.setExecuteHandler(n.C1.IND,(()=>this.index())),this._parser.setExecuteHandler(n.C1.NEL,(()=>this.nextLine())),this._parser.setExecuteHandler(n.C1.HTS,(()=>this.tabSet())),this._parser.registerOscHandler(0,new g.OscHandler((e=>(this.setTitle(e),this.setIconName(e),!0)))),this._parser.registerOscHandler(1,new g.OscHandler((e=>this.setIconName(e)))),this._parser.registerOscHandler(2,new g.OscHandler((e=>this.setTitle(e)))),this._parser.registerOscHandler(4,new g.OscHandler((e=>this.setOrReportIndexedColor(e)))),this._parser.registerOscHandler(8,new g.OscHandler((e=>this.setHyperlink(e)))),this._parser.registerOscHandler(10,new g.OscHandler((e=>this.setOrReportFgColor(e)))),this._parser.registerOscHandler(11,new g.OscHandler((e=>this.setOrReportBgColor(e)))),this._parser.registerOscHandler(12,new g.OscHandler((e=>this.setOrReportCursorColor(e)))),this._parser.registerOscHandler(104,new g.OscHandler((e=>this.restoreIndexedColor(e)))),this._parser.registerOscHandler(110,new g.OscHandler((e=>this.restoreFgColor(e)))),this._parser.registerOscHandler(111,new g.OscHandler((e=>this.restoreBgColor(e)))),this._parser.registerOscHandler(112,new g.OscHandler((e=>this.restoreCursorColor(e)))),this._parser.registerEscHandler({final:"7"},(()=>this.saveCursor())),this._parser.registerEscHandler({final:"8"},(()=>this.restoreCursor())),this._parser.registerEscHandler({final:"D"},(()=>this.index())),this._parser.registerEscHandler({final:"E"},(()=>this.nextLine())),this._parser.registerEscHandler({final:"H"},(()=>this.tabSet())),this._parser.registerEscHandler({final:"M"},(()=>this.reverseIndex())),this._parser.registerEscHandler({final:"="},(()=>this.keypadApplicationMode())),this._parser.registerEscHandler({final:">"},(()=>this.keypadNumericMode())),this._parser.registerEscHandler({final:"c"},(()=>this.fullReset())),this._parser.registerEscHandler({final:"n"},(()=>this.setgLevel(2))),this._parser.registerEscHandler({final:"o"},(()=>this.setgLevel(3))),this._parser.registerEscHandler({final:"|"},(()=>this.setgLevel(3))),this._parser.registerEscHandler({final:"}"},(()=>this.setgLevel(2))),this._parser.registerEscHandler({final:"~"},(()=>this.setgLevel(1))),this._parser.registerEscHandler({intermediates:"%",final:"@"},(()=>this.selectDefaultCharset())),this._parser.registerEscHandler({intermediates:"%",final:"G"},(()=>this.selectDefaultCharset()));for(const e in o.CHARSETS)this._parser.registerEscHandler({intermediates:"(",final:e},(()=>this.selectCharset("("+e))),this._parser.registerEscHandler({intermediates:")",final:e},(()=>this.selectCharset(")"+e))),this._parser.registerEscHandler({intermediates:"*",final:e},(()=>this.selectCharset("*"+e))),this._parser.registerEscHandler({intermediates:"+",final:e},(()=>this.selectCharset("+"+e))),this._parser.registerEscHandler({intermediates:"-",final:e},(()=>this.selectCharset("-"+e))),this._parser.registerEscHandler({intermediates:".",final:e},(()=>this.selectCharset("."+e))),this._parser.registerEscHandler({intermediates:"/",final:e},(()=>this.selectCharset("/"+e)));this._parser.registerEscHandler({intermediates:"#",final:"8"},(()=>this.screenAlignmentPattern())),this._parser.setErrorHandler((e=>(this._logService.error("Parsing error: ",e),e))),this._parser.registerDcsHandler({intermediates:"$",final:"q"},new p.DcsHandler(((e,t)=>this.requestStatusString(e,t))))}_preserveStack(e,t,i,s){this._parseStack.paused=!0,this._parseStack.cursorStartX=e,this._parseStack.cursorStartY=t,this._parseStack.decodedLength=i,this._parseStack.position=s}_logSlowResolvingAsync(e){this._logService.logLevel<=v.LogLevelEnum.WARN&&Promise.race([e,new Promise(((e,t)=>setTimeout((()=>t("#SLOW_TIMEOUT")),5e3)))]).catch((e=>{if("#SLOW_TIMEOUT"!==e)throw e;console.warn("async parser handler taking longer than 5000 ms")}))}_getCurrentLinkId(){return this._curAttrData.extended.urlId}parse(e,t){let i,s=this._activeBuffer.x,r=this._activeBuffer.y,n=0;const o=this._parseStack.paused;if(o){if(i=this._parser.parse(this._parseBuffer,this._parseStack.decodedLength,t))return this._logSlowResolvingAsync(i),i;s=this._parseStack.cursorStartX,r=this._parseStack.cursorStartY,this._parseStack.paused=!1,e.length>C&&(n=this._parseStack.position+C)}if(this._logService.logLevel<=v.LogLevelEnum.DEBUG&&this._logService.debug("parsing data"+("string"==typeof e?` "${e}"`:` "${Array.prototype.map.call(e,(e=>String.fromCharCode(e))).join("")}"`),"string"==typeof e?e.split("").map((e=>e.charCodeAt(0))):e),this._parseBuffer.lengthC)for(let t=n;t0&&2===u.getWidth(this._activeBuffer.x-1)&&u.setCellFromCodePoint(this._activeBuffer.x-1,0,1,d.fg,d.bg,d.extended);for(let f=t;f=a)if(h){for(;this._activeBuffer.x=this._bufferService.rows&&(this._activeBuffer.y=this._bufferService.rows-1),this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y).isWrapped=!0),u=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y)}else if(this._activeBuffer.x=a-1,2===r)continue;if(l&&(u.insertCells(this._activeBuffer.x,r,this._activeBuffer.getNullCell(d),d),2===u.getWidth(a-1)&&u.setCellFromCodePoint(a-1,_.NULL_CELL_CODE,_.NULL_CELL_WIDTH,d.fg,d.bg,d.extended)),u.setCellFromCodePoint(this._activeBuffer.x++,s,r,d.fg,d.bg,d.extended),r>0)for(;--r;)u.setCellFromCodePoint(this._activeBuffer.x++,0,0,d.fg,d.bg,d.extended)}else u.getWidth(this._activeBuffer.x-1)?u.addCodepointToCell(this._activeBuffer.x-1,s):u.addCodepointToCell(this._activeBuffer.x-2,s)}i-t>0&&(u.loadCell(this._activeBuffer.x-1,this._workCell),2===this._workCell.getWidth()||this._workCell.getCode()>65535?this._parser.precedingCodepoint=0:this._workCell.isCombined()?this._parser.precedingCodepoint=this._workCell.getChars().charCodeAt(0):this._parser.precedingCodepoint=this._workCell.content),this._activeBuffer.x0&&0===u.getWidth(this._activeBuffer.x)&&!u.hasContent(this._activeBuffer.x)&&u.setCellFromCodePoint(this._activeBuffer.x,0,1,d.fg,d.bg,d.extended),this._dirtyRowTracker.markDirty(this._activeBuffer.y)}registerCsiHandler(e,t){return"t"!==e.final||e.prefix||e.intermediates?this._parser.registerCsiHandler(e,t):this._parser.registerCsiHandler(e,(e=>!b(e.params[0],this._optionsService.rawOptions.windowOptions)||t(e)))}registerDcsHandler(e,t){return this._parser.registerDcsHandler(e,new p.DcsHandler(t))}registerEscHandler(e,t){return this._parser.registerEscHandler(e,t)}registerOscHandler(e,t){return this._parser.registerOscHandler(e,new g.OscHandler(t))}bell(){return this._onRequestBell.fire(),!0}lineFeed(){return this._dirtyRowTracker.markDirty(this._activeBuffer.y),this._optionsService.rawOptions.convertEol&&(this._activeBuffer.x=0),this._activeBuffer.y++,this._activeBuffer.y===this._activeBuffer.scrollBottom+1?(this._activeBuffer.y--,this._bufferService.scroll(this._eraseAttrData())):this._activeBuffer.y>=this._bufferService.rows?this._activeBuffer.y=this._bufferService.rows-1:this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y).isWrapped=!1,this._activeBuffer.x>=this._bufferService.cols&&this._activeBuffer.x--,this._dirtyRowTracker.markDirty(this._activeBuffer.y),this._onLineFeed.fire(),!0}carriageReturn(){return this._activeBuffer.x=0,!0}backspace(){var e;if(!this._coreService.decPrivateModes.reverseWraparound)return this._restrictCursor(),this._activeBuffer.x>0&&this._activeBuffer.x--,!0;if(this._restrictCursor(this._bufferService.cols),this._activeBuffer.x>0)this._activeBuffer.x--;else if(0===this._activeBuffer.x&&this._activeBuffer.y>this._activeBuffer.scrollTop&&this._activeBuffer.y<=this._activeBuffer.scrollBottom&&(null===(e=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y))||void 0===e?void 0:e.isWrapped)){this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y).isWrapped=!1,this._activeBuffer.y--,this._activeBuffer.x=this._bufferService.cols-1;const e=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y);e.hasWidth(this._activeBuffer.x)&&!e.hasContent(this._activeBuffer.x)&&this._activeBuffer.x--}return this._restrictCursor(),!0}tab(){if(this._activeBuffer.x>=this._bufferService.cols)return!0;const e=this._activeBuffer.x;return this._activeBuffer.x=this._activeBuffer.nextStop(),this._optionsService.rawOptions.screenReaderMode&&this._onA11yTab.fire(this._activeBuffer.x-e),!0}shiftOut(){return this._charsetService.setgLevel(1),!0}shiftIn(){return this._charsetService.setgLevel(0),!0}_restrictCursor(e=this._bufferService.cols-1){this._activeBuffer.x=Math.min(e,Math.max(0,this._activeBuffer.x)),this._activeBuffer.y=this._coreService.decPrivateModes.origin?Math.min(this._activeBuffer.scrollBottom,Math.max(this._activeBuffer.scrollTop,this._activeBuffer.y)):Math.min(this._bufferService.rows-1,Math.max(0,this._activeBuffer.y)),this._dirtyRowTracker.markDirty(this._activeBuffer.y)}_setCursor(e,t){this._dirtyRowTracker.markDirty(this._activeBuffer.y),this._coreService.decPrivateModes.origin?(this._activeBuffer.x=e,this._activeBuffer.y=this._activeBuffer.scrollTop+t):(this._activeBuffer.x=e,this._activeBuffer.y=t),this._restrictCursor(),this._dirtyRowTracker.markDirty(this._activeBuffer.y)}_moveCursor(e,t){this._restrictCursor(),this._setCursor(this._activeBuffer.x+e,this._activeBuffer.y+t)}cursorUp(e){const t=this._activeBuffer.y-this._activeBuffer.scrollTop;return t>=0?this._moveCursor(0,-Math.min(t,e.params[0]||1)):this._moveCursor(0,-(e.params[0]||1)),!0}cursorDown(e){const t=this._activeBuffer.scrollBottom-this._activeBuffer.y;return t>=0?this._moveCursor(0,Math.min(t,e.params[0]||1)):this._moveCursor(0,e.params[0]||1),!0}cursorForward(e){return this._moveCursor(e.params[0]||1,0),!0}cursorBackward(e){return this._moveCursor(-(e.params[0]||1),0),!0}cursorNextLine(e){return this.cursorDown(e),this._activeBuffer.x=0,!0}cursorPrecedingLine(e){return this.cursorUp(e),this._activeBuffer.x=0,!0}cursorCharAbsolute(e){return this._setCursor((e.params[0]||1)-1,this._activeBuffer.y),!0}cursorPosition(e){return this._setCursor(e.length>=2?(e.params[1]||1)-1:0,(e.params[0]||1)-1),!0}charPosAbsolute(e){return this._setCursor((e.params[0]||1)-1,this._activeBuffer.y),!0}hPositionRelative(e){return this._moveCursor(e.params[0]||1,0),!0}linePosAbsolute(e){return this._setCursor(this._activeBuffer.x,(e.params[0]||1)-1),!0}vPositionRelative(e){return this._moveCursor(0,e.params[0]||1),!0}hVPosition(e){return this.cursorPosition(e),!0}tabClear(e){const t=e.params[0];return 0===t?delete this._activeBuffer.tabs[this._activeBuffer.x]:3===t&&(this._activeBuffer.tabs={}),!0}cursorForwardTab(e){if(this._activeBuffer.x>=this._bufferService.cols)return!0;let t=e.params[0]||1;for(;t--;)this._activeBuffer.x=this._activeBuffer.nextStop();return!0}cursorBackwardTab(e){if(this._activeBuffer.x>=this._bufferService.cols)return!0;let t=e.params[0]||1;for(;t--;)this._activeBuffer.x=this._activeBuffer.prevStop();return!0}selectProtected(e){const t=e.params[0];return 1===t&&(this._curAttrData.bg|=536870912),2!==t&&0!==t||(this._curAttrData.bg&=-536870913),!0}_eraseInBufferLine(e,t,i,s=!1,r=!1){const n=this._activeBuffer.lines.get(this._activeBuffer.ybase+e);n.replaceCells(t,i,this._activeBuffer.getNullCell(this._eraseAttrData()),this._eraseAttrData(),r),s&&(n.isWrapped=!1)}_resetBufferLine(e,t=!1){const i=this._activeBuffer.lines.get(this._activeBuffer.ybase+e);i&&(i.fill(this._activeBuffer.getNullCell(this._eraseAttrData()),t),this._bufferService.buffer.clearMarkers(this._activeBuffer.ybase+e),i.isWrapped=!1)}eraseInDisplay(e,t=!1){let i;switch(this._restrictCursor(this._bufferService.cols),e.params[0]){case 0:for(i=this._activeBuffer.y,this._dirtyRowTracker.markDirty(i),this._eraseInBufferLine(i++,this._activeBuffer.x,this._bufferService.cols,0===this._activeBuffer.x,t);i=this._bufferService.cols&&(this._activeBuffer.lines.get(i+1).isWrapped=!1);i--;)this._resetBufferLine(i,t);this._dirtyRowTracker.markDirty(0);break;case 2:for(i=this._bufferService.rows,this._dirtyRowTracker.markDirty(i-1);i--;)this._resetBufferLine(i,t);this._dirtyRowTracker.markDirty(0);break;case 3:const e=this._activeBuffer.lines.length-this._bufferService.rows;e>0&&(this._activeBuffer.lines.trimStart(e),this._activeBuffer.ybase=Math.max(this._activeBuffer.ybase-e,0),this._activeBuffer.ydisp=Math.max(this._activeBuffer.ydisp-e,0),this._onScroll.fire(0))}return!0}eraseInLine(e,t=!1){switch(this._restrictCursor(this._bufferService.cols),e.params[0]){case 0:this._eraseInBufferLine(this._activeBuffer.y,this._activeBuffer.x,this._bufferService.cols,0===this._activeBuffer.x,t);break;case 1:this._eraseInBufferLine(this._activeBuffer.y,0,this._activeBuffer.x+1,!1,t);break;case 2:this._eraseInBufferLine(this._activeBuffer.y,0,this._bufferService.cols,!0,t)}return this._dirtyRowTracker.markDirty(this._activeBuffer.y),!0}insertLines(e){this._restrictCursor();let t=e.params[0]||1;if(this._activeBuffer.y>this._activeBuffer.scrollBottom||this._activeBuffer.ythis._activeBuffer.scrollBottom||this._activeBuffer.ythis._activeBuffer.scrollBottom||this._activeBuffer.ythis._activeBuffer.scrollBottom||this._activeBuffer.ythis._activeBuffer.scrollBottom||this._activeBuffer.ythis._activeBuffer.scrollBottom||this._activeBuffer.y0||(this._is("xterm")||this._is("rxvt-unicode")||this._is("screen")?this._coreService.triggerDataEvent(n.C0.ESC+"[?1;2c"):this._is("linux")&&this._coreService.triggerDataEvent(n.C0.ESC+"[?6c")),!0}sendDeviceAttributesSecondary(e){return e.params[0]>0||(this._is("xterm")?this._coreService.triggerDataEvent(n.C0.ESC+"[>0;276;0c"):this._is("rxvt-unicode")?this._coreService.triggerDataEvent(n.C0.ESC+"[>85;95;0c"):this._is("linux")?this._coreService.triggerDataEvent(e.params[0]+"c"):this._is("screen")&&this._coreService.triggerDataEvent(n.C0.ESC+"[>83;40003;0c")),!0}_is(e){return 0===(this._optionsService.rawOptions.termName+"").indexOf(e)}setMode(e){for(let t=0;te?1:2,u=e.params[0];return f=u,v=t?2===u?4:4===u?_(o.modes.insertMode):12===u?3:20===u?_(d.convertEol):0:1===u?_(i.applicationCursorKeys):3===u?d.windowOptions.setWinLines?80===h?2:132===h?1:0:0:6===u?_(i.origin):7===u?_(i.wraparound):8===u?3:9===u?_("X10"===s):12===u?_(d.cursorBlink):25===u?_(!o.isCursorHidden):45===u?_(i.reverseWraparound):66===u?_(i.applicationKeypad):67===u?4:1e3===u?_("VT200"===s):1002===u?_("DRAG"===s):1003===u?_("ANY"===s):1004===u?_(i.sendFocus):1005===u?4:1006===u?_("SGR"===r):1015===u?4:1016===u?_("SGR_PIXELS"===r):1048===u?1:47===u||1047===u||1049===u?_(c===l):2004===u?_(i.bracketedPasteMode):0,o.triggerDataEvent(`${n.C0.ESC}[${t?"":"?"}${f};${v}$y`),!0;var f,v}_updateAttrColor(e,t,i,s,r){return 2===t?(e|=50331648,e&=-16777216,e|=f.AttributeData.fromColorRGB([i,s,r])):5===t&&(e&=-50331904,e|=33554432|255&i),e}_extractColor(e,t,i){const s=[0,0,-1,0,0,0];let r=0,n=0;do{if(s[n+r]=e.params[t+n],e.hasSubParams(t+n)){const i=e.getSubParams(t+n);let o=0;do{5===s[1]&&(r=1),s[n+o+1+r]=i[o]}while(++o=2||2===s[1]&&n+r>=5)break;s[1]&&(r=1)}while(++n+t5)&&(e=1),t.extended.underlineStyle=e,t.fg|=268435456,0===e&&(t.fg&=-268435457),t.updateExtended()}_processSGR0(e){e.fg=l.DEFAULT_ATTR_DATA.fg,e.bg=l.DEFAULT_ATTR_DATA.bg,e.extended=e.extended.clone(),e.extended.underlineStyle=0,e.extended.underlineColor&=-67108864,e.updateExtended()}charAttributes(e){if(1===e.length&&0===e.params[0])return this._processSGR0(this._curAttrData),!0;const t=e.length;let i;const s=this._curAttrData;for(let r=0;r=30&&i<=37?(s.fg&=-50331904,s.fg|=16777216|i-30):i>=40&&i<=47?(s.bg&=-50331904,s.bg|=16777216|i-40):i>=90&&i<=97?(s.fg&=-50331904,s.fg|=16777224|i-90):i>=100&&i<=107?(s.bg&=-50331904,s.bg|=16777224|i-100):0===i?this._processSGR0(s):1===i?s.fg|=134217728:3===i?s.bg|=67108864:4===i?(s.fg|=268435456,this._processUnderline(e.hasSubParams(r)?e.getSubParams(r)[0]:1,s)):5===i?s.fg|=536870912:7===i?s.fg|=67108864:8===i?s.fg|=1073741824:9===i?s.fg|=2147483648:2===i?s.bg|=134217728:21===i?this._processUnderline(2,s):22===i?(s.fg&=-134217729,s.bg&=-134217729):23===i?s.bg&=-67108865:24===i?(s.fg&=-268435457,this._processUnderline(0,s)):25===i?s.fg&=-536870913:27===i?s.fg&=-67108865:28===i?s.fg&=-1073741825:29===i?s.fg&=2147483647:39===i?(s.fg&=-67108864,s.fg|=16777215&l.DEFAULT_ATTR_DATA.fg):49===i?(s.bg&=-67108864,s.bg|=16777215&l.DEFAULT_ATTR_DATA.bg):38===i||48===i||58===i?r+=this._extractColor(e,r,s):53===i?s.bg|=1073741824:55===i?s.bg&=-1073741825:59===i?(s.extended=s.extended.clone(),s.extended.underlineColor=-1,s.updateExtended()):100===i?(s.fg&=-67108864,s.fg|=16777215&l.DEFAULT_ATTR_DATA.fg,s.bg&=-67108864,s.bg|=16777215&l.DEFAULT_ATTR_DATA.bg):this._logService.debug("Unknown SGR attribute: %d.",i);return!0}deviceStatus(e){switch(e.params[0]){case 5:this._coreService.triggerDataEvent(`${n.C0.ESC}[0n`);break;case 6:const e=this._activeBuffer.y+1,t=this._activeBuffer.x+1;this._coreService.triggerDataEvent(`${n.C0.ESC}[${e};${t}R`)}return!0}deviceStatusPrivate(e){if(6===e.params[0]){const e=this._activeBuffer.y+1,t=this._activeBuffer.x+1;this._coreService.triggerDataEvent(`${n.C0.ESC}[?${e};${t}R`)}return!0}softReset(e){return this._coreService.isCursorHidden=!1,this._onRequestSyncScrollBar.fire(),this._activeBuffer.scrollTop=0,this._activeBuffer.scrollBottom=this._bufferService.rows-1,this._curAttrData=l.DEFAULT_ATTR_DATA.clone(),this._coreService.reset(),this._charsetService.reset(),this._activeBuffer.savedX=0,this._activeBuffer.savedY=this._activeBuffer.ybase,this._activeBuffer.savedCurAttrData.fg=this._curAttrData.fg,this._activeBuffer.savedCurAttrData.bg=this._curAttrData.bg,this._activeBuffer.savedCharset=this._charsetService.charset,this._coreService.decPrivateModes.origin=!1,!0}setCursorStyle(e){const t=e.params[0]||1;switch(t){case 1:case 2:this._optionsService.options.cursorStyle="block";break;case 3:case 4:this._optionsService.options.cursorStyle="underline";break;case 5:case 6:this._optionsService.options.cursorStyle="bar"}const i=t%2==1;return this._optionsService.options.cursorBlink=i,!0}setScrollRegion(e){const t=e.params[0]||1;let i;return(e.length<2||(i=e.params[1])>this._bufferService.rows||0===i)&&(i=this._bufferService.rows),i>t&&(this._activeBuffer.scrollTop=t-1,this._activeBuffer.scrollBottom=i-1,this._setCursor(0,0)),!0}windowOptions(e){if(!b(e.params[0],this._optionsService.rawOptions.windowOptions))return!0;const t=e.length>1?e.params[1]:0;switch(e.params[0]){case 14:2!==t&&this._onRequestWindowsOptionsReport.fire(y.GET_WIN_SIZE_PIXELS);break;case 16:this._onRequestWindowsOptionsReport.fire(y.GET_CELL_SIZE_PIXELS);break;case 18:this._bufferService&&this._coreService.triggerDataEvent(`${n.C0.ESC}[8;${this._bufferService.rows};${this._bufferService.cols}t`);break;case 22:0!==t&&2!==t||(this._windowTitleStack.push(this._windowTitle),this._windowTitleStack.length>10&&this._windowTitleStack.shift()),0!==t&&1!==t||(this._iconNameStack.push(this._iconName),this._iconNameStack.length>10&&this._iconNameStack.shift());break;case 23:0!==t&&2!==t||this._windowTitleStack.length&&this.setTitle(this._windowTitleStack.pop()),0!==t&&1!==t||this._iconNameStack.length&&this.setIconName(this._iconNameStack.pop())}return!0}saveCursor(e){return this._activeBuffer.savedX=this._activeBuffer.x,this._activeBuffer.savedY=this._activeBuffer.ybase+this._activeBuffer.y,this._activeBuffer.savedCurAttrData.fg=this._curAttrData.fg,this._activeBuffer.savedCurAttrData.bg=this._curAttrData.bg,this._activeBuffer.savedCharset=this._charsetService.charset,!0}restoreCursor(e){return this._activeBuffer.x=this._activeBuffer.savedX||0,this._activeBuffer.y=Math.max(this._activeBuffer.savedY-this._activeBuffer.ybase,0),this._curAttrData.fg=this._activeBuffer.savedCurAttrData.fg,this._curAttrData.bg=this._activeBuffer.savedCurAttrData.bg,this._charsetService.charset=this._savedCharset,this._activeBuffer.savedCharset&&(this._charsetService.charset=this._activeBuffer.savedCharset),this._restrictCursor(),!0}setTitle(e){return this._windowTitle=e,this._onTitleChange.fire(e),!0}setIconName(e){return this._iconName=e,!0}setOrReportIndexedColor(e){const t=[],i=e.split(";");for(;i.length>1;){const e=i.shift(),s=i.shift();if(/^\d+$/.exec(e)){const i=parseInt(e);if(L(i))if("?"===s)t.push({type:0,index:i});else{const e=(0,m.parseColor)(s);e&&t.push({type:1,index:i,color:e})}}}return t.length&&this._onColor.fire(t),!0}setHyperlink(e){const t=e.split(";");return!(t.length<2)&&(t[1]?this._createHyperlink(t[0],t[1]):!t[0]&&this._finishHyperlink())}_createHyperlink(e,t){this._getCurrentLinkId()&&this._finishHyperlink();const i=e.split(":");let s;const r=i.findIndex((e=>e.startsWith("id=")));return-1!==r&&(s=i[r].slice(3)||void 0),this._curAttrData.extended=this._curAttrData.extended.clone(),this._curAttrData.extended.urlId=this._oscLinkService.registerLink({id:s,uri:t}),this._curAttrData.updateExtended(),!0}_finishHyperlink(){return this._curAttrData.extended=this._curAttrData.extended.clone(),this._curAttrData.extended.urlId=0,this._curAttrData.updateExtended(),!0}_setOrReportSpecialColor(e,t){const i=e.split(";");for(let e=0;e=this._specialColors.length);++e,++t)if("?"===i[e])this._onColor.fire([{type:0,index:this._specialColors[t]}]);else{const s=(0,m.parseColor)(i[e]);s&&this._onColor.fire([{type:1,index:this._specialColors[t],color:s}])}return!0}setOrReportFgColor(e){return this._setOrReportSpecialColor(e,0)}setOrReportBgColor(e){return this._setOrReportSpecialColor(e,1)}setOrReportCursorColor(e){return this._setOrReportSpecialColor(e,2)}restoreIndexedColor(e){if(!e)return this._onColor.fire([{type:2}]),!0;const t=[],i=e.split(";");for(let e=0;e=this._bufferService.rows&&(this._activeBuffer.y=this._bufferService.rows-1),this._restrictCursor(),!0}tabSet(){return this._activeBuffer.tabs[this._activeBuffer.x]=!0,!0}reverseIndex(){if(this._restrictCursor(),this._activeBuffer.y===this._activeBuffer.scrollTop){const e=this._activeBuffer.scrollBottom-this._activeBuffer.scrollTop;this._activeBuffer.lines.shiftElements(this._activeBuffer.ybase+this._activeBuffer.y,e,1),this._activeBuffer.lines.set(this._activeBuffer.ybase+this._activeBuffer.y,this._activeBuffer.getBlankLine(this._eraseAttrData())),this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom)}else this._activeBuffer.y--,this._restrictCursor();return!0}fullReset(){return this._parser.reset(),this._onRequestReset.fire(),!0}reset(){this._curAttrData=l.DEFAULT_ATTR_DATA.clone(),this._eraseAttrDataInternal=l.DEFAULT_ATTR_DATA.clone()}_eraseAttrData(){return this._eraseAttrDataInternal.bg&=-67108864,this._eraseAttrDataInternal.bg|=67108863&this._curAttrData.bg,this._eraseAttrDataInternal}setgLevel(e){return this._charsetService.setgLevel(e),!0}screenAlignmentPattern(){const e=new u.CellData;e.content=1<<22|"E".charCodeAt(0),e.fg=this._curAttrData.fg,e.bg=this._curAttrData.bg,this._setCursor(0,0);for(let t=0;t(this._coreService.triggerDataEvent(`${n.C0.ESC}${e}${n.C0.ESC}\\`),!0))('"q'===e?`P1$r${this._curAttrData.isProtected()?1:0}"q`:'"p'===e?'P1$r61;1"p':"r"===e?`P1$r${i.scrollTop+1};${i.scrollBottom+1}r`:"m"===e?"P1$r0m":" q"===e?`P1$r${{block:2,underline:4,bar:6}[s.cursorStyle]-(s.cursorBlink?1:0)} q`:"P0$r")}markRangeDirty(e,t){this._dirtyRowTracker.markRangeDirty(e,t)}}t.InputHandler=E;let k=class{constructor(e){this._bufferService=e,this.clearRange()}clearRange(){this.start=this._bufferService.buffer.y,this.end=this._bufferService.buffer.y}markDirty(e){ethis.end&&(this.end=e)}markRangeDirty(e,t){e>t&&(w=e,e=t,t=w),ethis.end&&(this.end=t)}markAllDirty(){this.markRangeDirty(0,this._bufferService.rows-1)}};function L(e){return 0<=e&&e<256}k=s([r(0,v.IBufferService)],k)},844:(e,t)=>{function i(e){for(const t of e)t.dispose();e.length=0}Object.defineProperty(t,"__esModule",{value:!0}),t.getDisposeArrayDisposable=t.disposeArray=t.toDisposable=t.MutableDisposable=t.Disposable=void 0,t.Disposable=class{constructor(){this._disposables=[],this._isDisposed=!1}dispose(){this._isDisposed=!0;for(const e of this._disposables)e.dispose();this._disposables.length=0}register(e){return this._disposables.push(e),e}unregister(e){const t=this._disposables.indexOf(e);-1!==t&&this._disposables.splice(t,1)}},t.MutableDisposable=class{constructor(){this._isDisposed=!1}get value(){return this._isDisposed?void 0:this._value}set value(e){var t;this._isDisposed||e===this._value||(null===(t=this._value)||void 0===t||t.dispose(),this._value=e)}clear(){this.value=void 0}dispose(){var e;this._isDisposed=!0,null===(e=this._value)||void 0===e||e.dispose(),this._value=void 0}},t.toDisposable=function(e){return{dispose:e}},t.disposeArray=i,t.getDisposeArrayDisposable=function(e){return{dispose:()=>i(e)}}},1505:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.FourKeyMap=t.TwoKeyMap=void 0;class i{constructor(){this._data={}}set(e,t,i){this._data[e]||(this._data[e]={}),this._data[e][t]=i}get(e,t){return this._data[e]?this._data[e][t]:void 0}clear(){this._data={}}}t.TwoKeyMap=i,t.FourKeyMap=class{constructor(){this._data=new i}set(e,t,s,r,n){this._data.get(e,t)||this._data.set(e,t,new i),this._data.get(e,t).set(s,r,n)}get(e,t,i,s){var r;return null===(r=this._data.get(e,t))||void 0===r?void 0:r.get(i,s)}clear(){this._data.clear()}}},6114:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.isChromeOS=t.isLinux=t.isWindows=t.isIphone=t.isIpad=t.isMac=t.getSafariVersion=t.isSafari=t.isLegacyEdge=t.isFirefox=t.isNode=void 0,t.isNode="undefined"==typeof navigator;const i=t.isNode?"node":navigator.userAgent,s=t.isNode?"node":navigator.platform;t.isFirefox=i.includes("Firefox"),t.isLegacyEdge=i.includes("Edge"),t.isSafari=/^((?!chrome|android).)*safari/i.test(i),t.getSafariVersion=function(){if(!t.isSafari)return 0;const e=i.match(/Version\/(\d+)/);return null===e||e.length<2?0:parseInt(e[1])},t.isMac=["Macintosh","MacIntel","MacPPC","Mac68K"].includes(s),t.isIpad="iPad"===s,t.isIphone="iPhone"===s,t.isWindows=["Windows","Win16","Win32","WinCE"].includes(s),t.isLinux=s.indexOf("Linux")>=0,t.isChromeOS=/\bCrOS\b/.test(i)},6106:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SortedList=void 0;let i=0;t.SortedList=class{constructor(e){this._getKey=e,this._array=[]}clear(){this._array.length=0}insert(e){0!==this._array.length?(i=this._search(this._getKey(e)),this._array.splice(i,0,e)):this._array.push(e)}delete(e){if(0===this._array.length)return!1;const t=this._getKey(e);if(void 0===t)return!1;if(i=this._search(t),-1===i)return!1;if(this._getKey(this._array[i])!==t)return!1;do{if(this._array[i]===e)return this._array.splice(i,1),!0}while(++i=this._array.length)&&this._getKey(this._array[i])===e))do{yield this._array[i]}while(++i=this._array.length)&&this._getKey(this._array[i])===e))do{t(this._array[i])}while(++i=t;){let s=t+i>>1;const r=this._getKey(this._array[s]);if(r>e)i=s-1;else{if(!(r0&&this._getKey(this._array[s-1])===e;)s--;return s}t=s+1}}return t}}},7226:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.DebouncedIdleTask=t.IdleTaskQueue=t.PriorityTaskQueue=void 0;const s=i(6114);class r{constructor(){this._tasks=[],this._i=0}enqueue(e){this._tasks.push(e),this._start()}flush(){for(;this._ir)return s-t<-20&&console.warn(`task queue exceeded allotted deadline by ${Math.abs(Math.round(s-t))}ms`),void this._start();s=r}this.clear()}}class n extends r{_requestCallback(e){return setTimeout((()=>e(this._createDeadline(16))))}_cancelCallback(e){clearTimeout(e)}_createDeadline(e){const t=Date.now()+e;return{timeRemaining:()=>Math.max(0,t-Date.now())}}}t.PriorityTaskQueue=n,t.IdleTaskQueue=!s.isNode&&"requestIdleCallback"in window?class extends r{_requestCallback(e){return requestIdleCallback(e)}_cancelCallback(e){cancelIdleCallback(e)}}:n,t.DebouncedIdleTask=class{constructor(){this._queue=new t.IdleTaskQueue}set(e){this._queue.clear(),this._queue.enqueue(e)}flush(){this._queue.flush()}}},9282:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.updateWindowsModeWrappedState=void 0;const s=i(643);t.updateWindowsModeWrappedState=function(e){const t=e.buffer.lines.get(e.buffer.ybase+e.buffer.y-1),i=null==t?void 0:t.get(e.cols-1),r=e.buffer.lines.get(e.buffer.ybase+e.buffer.y);r&&i&&(r.isWrapped=i[s.CHAR_DATA_CODE_INDEX]!==s.NULL_CELL_CODE&&i[s.CHAR_DATA_CODE_INDEX]!==s.WHITESPACE_CELL_CODE)}},3734:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ExtendedAttrs=t.AttributeData=void 0;class i{constructor(){this.fg=0,this.bg=0,this.extended=new s}static toColorRGB(e){return[e>>>16&255,e>>>8&255,255&e]}static fromColorRGB(e){return(255&e[0])<<16|(255&e[1])<<8|255&e[2]}clone(){const e=new i;return e.fg=this.fg,e.bg=this.bg,e.extended=this.extended.clone(),e}isInverse(){return 67108864&this.fg}isBold(){return 134217728&this.fg}isUnderline(){return this.hasExtendedAttrs()&&0!==this.extended.underlineStyle?1:268435456&this.fg}isBlink(){return 536870912&this.fg}isInvisible(){return 1073741824&this.fg}isItalic(){return 67108864&this.bg}isDim(){return 134217728&this.bg}isStrikethrough(){return 2147483648&this.fg}isProtected(){return 536870912&this.bg}isOverline(){return 1073741824&this.bg}getFgColorMode(){return 50331648&this.fg}getBgColorMode(){return 50331648&this.bg}isFgRGB(){return 50331648==(50331648&this.fg)}isBgRGB(){return 50331648==(50331648&this.bg)}isFgPalette(){return 16777216==(50331648&this.fg)||33554432==(50331648&this.fg)}isBgPalette(){return 16777216==(50331648&this.bg)||33554432==(50331648&this.bg)}isFgDefault(){return 0==(50331648&this.fg)}isBgDefault(){return 0==(50331648&this.bg)}isAttributeDefault(){return 0===this.fg&&0===this.bg}getFgColor(){switch(50331648&this.fg){case 16777216:case 33554432:return 255&this.fg;case 50331648:return 16777215&this.fg;default:return-1}}getBgColor(){switch(50331648&this.bg){case 16777216:case 33554432:return 255&this.bg;case 50331648:return 16777215&this.bg;default:return-1}}hasExtendedAttrs(){return 268435456&this.bg}updateExtended(){this.extended.isEmpty()?this.bg&=-268435457:this.bg|=268435456}getUnderlineColor(){if(268435456&this.bg&&~this.extended.underlineColor)switch(50331648&this.extended.underlineColor){case 16777216:case 33554432:return 255&this.extended.underlineColor;case 50331648:return 16777215&this.extended.underlineColor;default:return this.getFgColor()}return this.getFgColor()}getUnderlineColorMode(){return 268435456&this.bg&&~this.extended.underlineColor?50331648&this.extended.underlineColor:this.getFgColorMode()}isUnderlineColorRGB(){return 268435456&this.bg&&~this.extended.underlineColor?50331648==(50331648&this.extended.underlineColor):this.isFgRGB()}isUnderlineColorPalette(){return 268435456&this.bg&&~this.extended.underlineColor?16777216==(50331648&this.extended.underlineColor)||33554432==(50331648&this.extended.underlineColor):this.isFgPalette()}isUnderlineColorDefault(){return 268435456&this.bg&&~this.extended.underlineColor?0==(50331648&this.extended.underlineColor):this.isFgDefault()}getUnderlineStyle(){return 268435456&this.fg?268435456&this.bg?this.extended.underlineStyle:1:0}}t.AttributeData=i;class s{get ext(){return this._urlId?-469762049&this._ext|this.underlineStyle<<26:this._ext}set ext(e){this._ext=e}get underlineStyle(){return this._urlId?5:(469762048&this._ext)>>26}set underlineStyle(e){this._ext&=-469762049,this._ext|=e<<26&469762048}get underlineColor(){return 67108863&this._ext}set underlineColor(e){this._ext&=-67108864,this._ext|=67108863&e}get urlId(){return this._urlId}set urlId(e){this._urlId=e}constructor(e=0,t=0){this._ext=0,this._urlId=0,this._ext=e,this._urlId=t}clone(){return new s(this._ext,this._urlId)}isEmpty(){return 0===this.underlineStyle&&0===this._urlId}}t.ExtendedAttrs=s},9092:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.Buffer=t.MAX_BUFFER_SIZE=void 0;const s=i(6349),r=i(7226),n=i(3734),o=i(8437),a=i(4634),h=i(511),c=i(643),l=i(4863),d=i(7116);t.MAX_BUFFER_SIZE=4294967295,t.Buffer=class{constructor(e,t,i){this._hasScrollback=e,this._optionsService=t,this._bufferService=i,this.ydisp=0,this.ybase=0,this.y=0,this.x=0,this.tabs={},this.savedY=0,this.savedX=0,this.savedCurAttrData=o.DEFAULT_ATTR_DATA.clone(),this.savedCharset=d.DEFAULT_CHARSET,this.markers=[],this._nullCell=h.CellData.fromCharData([0,c.NULL_CELL_CHAR,c.NULL_CELL_WIDTH,c.NULL_CELL_CODE]),this._whitespaceCell=h.CellData.fromCharData([0,c.WHITESPACE_CELL_CHAR,c.WHITESPACE_CELL_WIDTH,c.WHITESPACE_CELL_CODE]),this._isClearing=!1,this._memoryCleanupQueue=new r.IdleTaskQueue,this._memoryCleanupPosition=0,this._cols=this._bufferService.cols,this._rows=this._bufferService.rows,this.lines=new s.CircularList(this._getCorrectBufferLength(this._rows)),this.scrollTop=0,this.scrollBottom=this._rows-1,this.setupTabStops()}getNullCell(e){return e?(this._nullCell.fg=e.fg,this._nullCell.bg=e.bg,this._nullCell.extended=e.extended):(this._nullCell.fg=0,this._nullCell.bg=0,this._nullCell.extended=new n.ExtendedAttrs),this._nullCell}getWhitespaceCell(e){return e?(this._whitespaceCell.fg=e.fg,this._whitespaceCell.bg=e.bg,this._whitespaceCell.extended=e.extended):(this._whitespaceCell.fg=0,this._whitespaceCell.bg=0,this._whitespaceCell.extended=new n.ExtendedAttrs),this._whitespaceCell}getBlankLine(e,t){return new o.BufferLine(this._bufferService.cols,this.getNullCell(e),t)}get hasScrollback(){return this._hasScrollback&&this.lines.maxLength>this._rows}get isCursorInViewport(){const e=this.ybase+this.y-this.ydisp;return e>=0&&et.MAX_BUFFER_SIZE?t.MAX_BUFFER_SIZE:i}fillViewportRows(e){if(0===this.lines.length){void 0===e&&(e=o.DEFAULT_ATTR_DATA);let t=this._rows;for(;t--;)this.lines.push(this.getBlankLine(e))}}clear(){this.ydisp=0,this.ybase=0,this.y=0,this.x=0,this.lines=new s.CircularList(this._getCorrectBufferLength(this._rows)),this.scrollTop=0,this.scrollBottom=this._rows-1,this.setupTabStops()}resize(e,t){const i=this.getNullCell(o.DEFAULT_ATTR_DATA);let s=0;const r=this._getCorrectBufferLength(t);if(r>this.lines.maxLength&&(this.lines.maxLength=r),this.lines.length>0){if(this._cols0&&this.lines.length<=this.ybase+this.y+n+1?(this.ybase--,n++,this.ydisp>0&&this.ydisp--):this.lines.push(new o.BufferLine(e,i)));else for(let e=this._rows;e>t;e--)this.lines.length>t+this.ybase&&(this.lines.length>this.ybase+this.y+1?this.lines.pop():(this.ybase++,this.ydisp++));if(r0&&(this.lines.trimStart(e),this.ybase=Math.max(this.ybase-e,0),this.ydisp=Math.max(this.ydisp-e,0),this.savedY=Math.max(this.savedY-e,0)),this.lines.maxLength=r}this.x=Math.min(this.x,e-1),this.y=Math.min(this.y,t-1),n&&(this.y+=n),this.savedX=Math.min(this.savedX,e-1),this.scrollTop=0}if(this.scrollBottom=t-1,this._isReflowEnabled&&(this._reflow(e,t),this._cols>e))for(let t=0;t.1*this.lines.length&&(this._memoryCleanupPosition=0,this._memoryCleanupQueue.enqueue((()=>this._batchedMemoryCleanup())))}_batchedMemoryCleanup(){let e=!0;this._memoryCleanupPosition>=this.lines.length&&(this._memoryCleanupPosition=0,e=!1);let t=0;for(;this._memoryCleanupPosition100)return!0;return e}get _isReflowEnabled(){const e=this._optionsService.rawOptions.windowsPty;return e&&e.buildNumber?this._hasScrollback&&"conpty"===e.backend&&e.buildNumber>=21376:this._hasScrollback&&!this._optionsService.rawOptions.windowsMode}_reflow(e,t){this._cols!==e&&(e>this._cols?this._reflowLarger(e,t):this._reflowSmaller(e,t))}_reflowLarger(e,t){const i=(0,a.reflowLargerGetLinesToRemove)(this.lines,this._cols,e,this.ybase+this.y,this.getNullCell(o.DEFAULT_ATTR_DATA));if(i.length>0){const s=(0,a.reflowLargerCreateNewLayout)(this.lines,i);(0,a.reflowLargerApplyNewLayout)(this.lines,s.layout),this._reflowLargerAdjustViewport(e,t,s.countRemoved)}}_reflowLargerAdjustViewport(e,t,i){const s=this.getNullCell(o.DEFAULT_ATTR_DATA);let r=i;for(;r-- >0;)0===this.ybase?(this.y>0&&this.y--,this.lines.length=0;n--){let h=this.lines.get(n);if(!h||!h.isWrapped&&h.getTrimmedLength()<=e)continue;const c=[h];for(;h.isWrapped&&n>0;)h=this.lines.get(--n),c.unshift(h);const l=this.ybase+this.y;if(l>=n&&l0&&(s.push({start:n+c.length+r,newLines:v}),r+=v.length),c.push(...v);let g=_.length-1,p=_[g];0===p&&(g--,p=_[g]);let m=c.length-u-1,S=d;for(;m>=0;){const e=Math.min(S,p);if(void 0===c[g])break;if(c[g].copyCellsFrom(c[m],S-e,p-e,e,!0),p-=e,0===p&&(g--,p=_[g]),S-=e,0===S){m--;const e=Math.max(m,0);S=(0,a.getWrappedLineTrimmedLength)(c,e,this._cols)}}for(let t=0;t0;)0===this.ybase?this.y0){const e=[],t=[];for(let e=0;e=0;c--)if(a&&a.start>n+h){for(let e=a.newLines.length-1;e>=0;e--)this.lines.set(c--,a.newLines[e]);c++,e.push({index:n+1,amount:a.newLines.length}),h+=a.newLines.length,a=s[++o]}else this.lines.set(c,t[n--]);let c=0;for(let t=e.length-1;t>=0;t--)e[t].index+=c,this.lines.onInsertEmitter.fire(e[t]),c+=e[t].amount;const l=Math.max(0,i+r-this.lines.maxLength);l>0&&this.lines.onTrimEmitter.fire(l)}}translateBufferLineToString(e,t,i=0,s){const r=this.lines.get(e);return r?r.translateToString(t,i,s):""}getWrappedRangeForLine(e){let t=e,i=e;for(;t>0&&this.lines.get(t).isWrapped;)t--;for(;i+10;);return e>=this._cols?this._cols-1:e<0?0:e}nextStop(e){for(null==e&&(e=this.x);!this.tabs[++e]&&e=this._cols?this._cols-1:e<0?0:e}clearMarkers(e){this._isClearing=!0;for(let t=0;t{t.line-=e,t.line<0&&t.dispose()}))),t.register(this.lines.onInsert((e=>{t.line>=e.index&&(t.line+=e.amount)}))),t.register(this.lines.onDelete((e=>{t.line>=e.index&&t.linee.index&&(t.line-=e.amount)}))),t.register(t.onDispose((()=>this._removeMarker(t)))),t}_removeMarker(e){this._isClearing||this.markers.splice(this.markers.indexOf(e),1)}}},8437:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.BufferLine=t.DEFAULT_ATTR_DATA=void 0;const s=i(3734),r=i(511),n=i(643),o=i(482);t.DEFAULT_ATTR_DATA=Object.freeze(new s.AttributeData);let a=0;class h{constructor(e,t,i=!1){this.isWrapped=i,this._combined={},this._extendedAttrs={},this._data=new Uint32Array(3*e);const s=t||r.CellData.fromCharData([0,n.NULL_CELL_CHAR,n.NULL_CELL_WIDTH,n.NULL_CELL_CODE]);for(let t=0;t>22,2097152&t?this._combined[e].charCodeAt(this._combined[e].length-1):i]}set(e,t){this._data[3*e+1]=t[n.CHAR_DATA_ATTR_INDEX],t[n.CHAR_DATA_CHAR_INDEX].length>1?(this._combined[e]=t[1],this._data[3*e+0]=2097152|e|t[n.CHAR_DATA_WIDTH_INDEX]<<22):this._data[3*e+0]=t[n.CHAR_DATA_CHAR_INDEX].charCodeAt(0)|t[n.CHAR_DATA_WIDTH_INDEX]<<22}getWidth(e){return this._data[3*e+0]>>22}hasWidth(e){return 12582912&this._data[3*e+0]}getFg(e){return this._data[3*e+1]}getBg(e){return this._data[3*e+2]}hasContent(e){return 4194303&this._data[3*e+0]}getCodePoint(e){const t=this._data[3*e+0];return 2097152&t?this._combined[e].charCodeAt(this._combined[e].length-1):2097151&t}isCombined(e){return 2097152&this._data[3*e+0]}getString(e){const t=this._data[3*e+0];return 2097152&t?this._combined[e]:2097151&t?(0,o.stringFromCodePoint)(2097151&t):""}isProtected(e){return 536870912&this._data[3*e+2]}loadCell(e,t){return a=3*e,t.content=this._data[a+0],t.fg=this._data[a+1],t.bg=this._data[a+2],2097152&t.content&&(t.combinedData=this._combined[e]),268435456&t.bg&&(t.extended=this._extendedAttrs[e]),t}setCell(e,t){2097152&t.content&&(this._combined[e]=t.combinedData),268435456&t.bg&&(this._extendedAttrs[e]=t.extended),this._data[3*e+0]=t.content,this._data[3*e+1]=t.fg,this._data[3*e+2]=t.bg}setCellFromCodePoint(e,t,i,s,r,n){268435456&r&&(this._extendedAttrs[e]=n),this._data[3*e+0]=t|i<<22,this._data[3*e+1]=s,this._data[3*e+2]=r}addCodepointToCell(e,t){let i=this._data[3*e+0];2097152&i?this._combined[e]+=(0,o.stringFromCodePoint)(t):(2097151&i?(this._combined[e]=(0,o.stringFromCodePoint)(2097151&i)+(0,o.stringFromCodePoint)(t),i&=-2097152,i|=2097152):i=t|1<<22,this._data[3*e+0]=i)}insertCells(e,t,i,n){if((e%=this.length)&&2===this.getWidth(e-1)&&this.setCellFromCodePoint(e-1,0,1,(null==n?void 0:n.fg)||0,(null==n?void 0:n.bg)||0,(null==n?void 0:n.extended)||new s.ExtendedAttrs),t=0;--i)this.setCell(e+t+i,this.loadCell(e+i,s));for(let s=0;sthis.length){if(this._data.buffer.byteLength>=4*i)this._data=new Uint32Array(this._data.buffer,0,i);else{const e=new Uint32Array(i);e.set(this._data),this._data=e}for(let i=this.length;i=e&&delete this._combined[s]}const s=Object.keys(this._extendedAttrs);for(let t=0;t=e&&delete this._extendedAttrs[i]}}return this.length=e,4*i*2=0;--e)if(4194303&this._data[3*e+0])return e+(this._data[3*e+0]>>22);return 0}getNoBgTrimmedLength(){for(let e=this.length-1;e>=0;--e)if(4194303&this._data[3*e+0]||50331648&this._data[3*e+2])return e+(this._data[3*e+0]>>22);return 0}copyCellsFrom(e,t,i,s,r){const n=e._data;if(r)for(let r=s-1;r>=0;r--){for(let e=0;e<3;e++)this._data[3*(i+r)+e]=n[3*(t+r)+e];268435456&n[3*(t+r)+2]&&(this._extendedAttrs[i+r]=e._extendedAttrs[t+r])}else for(let r=0;r=t&&(this._combined[r-t+i]=e._combined[r])}}translateToString(e=!1,t=0,i=this.length){e&&(i=Math.min(i,this.getTrimmedLength()));let s="";for(;t>22||1}return s}}t.BufferLine=h},4841:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.getRangeLength=void 0,t.getRangeLength=function(e,t){if(e.start.y>e.end.y)throw new Error(`Buffer range end (${e.end.x}, ${e.end.y}) cannot be before start (${e.start.x}, ${e.start.y})`);return t*(e.end.y-e.start.y)+(e.end.x-e.start.x+1)}},4634:(e,t)=>{function i(e,t,i){if(t===e.length-1)return e[t].getTrimmedLength();const s=!e[t].hasContent(i-1)&&1===e[t].getWidth(i-1),r=2===e[t+1].getWidth(0);return s&&r?i-1:i}Object.defineProperty(t,"__esModule",{value:!0}),t.getWrappedLineTrimmedLength=t.reflowSmallerGetNewLineLengths=t.reflowLargerApplyNewLayout=t.reflowLargerCreateNewLayout=t.reflowLargerGetLinesToRemove=void 0,t.reflowLargerGetLinesToRemove=function(e,t,s,r,n){const o=[];for(let a=0;a=a&&r0&&(e>d||0===l[e].getTrimmedLength());e--)v++;v>0&&(o.push(a+l.length-v),o.push(v)),a+=l.length-1}return o},t.reflowLargerCreateNewLayout=function(e,t){const i=[];let s=0,r=t[s],n=0;for(let o=0;oi(e,r,t))).reduce(((e,t)=>e+t));let o=0,a=0,h=0;for(;hc&&(o-=c,a++);const l=2===e[a].getWidth(o-1);l&&o--;const d=l?s-1:s;r.push(d),h+=d}return r},t.getWrappedLineTrimmedLength=i},5295:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.BufferSet=void 0;const s=i(8460),r=i(844),n=i(9092);class o extends r.Disposable{constructor(e,t){super(),this._optionsService=e,this._bufferService=t,this._onBufferActivate=this.register(new s.EventEmitter),this.onBufferActivate=this._onBufferActivate.event,this.reset(),this.register(this._optionsService.onSpecificOptionChange("scrollback",(()=>this.resize(this._bufferService.cols,this._bufferService.rows)))),this.register(this._optionsService.onSpecificOptionChange("tabStopWidth",(()=>this.setupTabStops())))}reset(){this._normal=new n.Buffer(!0,this._optionsService,this._bufferService),this._normal.fillViewportRows(),this._alt=new n.Buffer(!1,this._optionsService,this._bufferService),this._activeBuffer=this._normal,this._onBufferActivate.fire({activeBuffer:this._normal,inactiveBuffer:this._alt}),this.setupTabStops()}get alt(){return this._alt}get active(){return this._activeBuffer}get normal(){return this._normal}activateNormalBuffer(){this._activeBuffer!==this._normal&&(this._normal.x=this._alt.x,this._normal.y=this._alt.y,this._alt.clearAllMarkers(),this._alt.clear(),this._activeBuffer=this._normal,this._onBufferActivate.fire({activeBuffer:this._normal,inactiveBuffer:this._alt}))}activateAltBuffer(e){this._activeBuffer!==this._alt&&(this._alt.fillViewportRows(e),this._alt.x=this._normal.x,this._alt.y=this._normal.y,this._activeBuffer=this._alt,this._onBufferActivate.fire({activeBuffer:this._alt,inactiveBuffer:this._normal}))}resize(e,t){this._normal.resize(e,t),this._alt.resize(e,t),this.setupTabStops(e)}setupTabStops(e){this._normal.setupTabStops(e),this._alt.setupTabStops(e)}}t.BufferSet=o},511:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.CellData=void 0;const s=i(482),r=i(643),n=i(3734);class o extends n.AttributeData{constructor(){super(...arguments),this.content=0,this.fg=0,this.bg=0,this.extended=new n.ExtendedAttrs,this.combinedData=""}static fromCharData(e){const t=new o;return t.setFromCharData(e),t}isCombined(){return 2097152&this.content}getWidth(){return this.content>>22}getChars(){return 2097152&this.content?this.combinedData:2097151&this.content?(0,s.stringFromCodePoint)(2097151&this.content):""}getCode(){return this.isCombined()?this.combinedData.charCodeAt(this.combinedData.length-1):2097151&this.content}setFromCharData(e){this.fg=e[r.CHAR_DATA_ATTR_INDEX],this.bg=0;let t=!1;if(e[r.CHAR_DATA_CHAR_INDEX].length>2)t=!0;else if(2===e[r.CHAR_DATA_CHAR_INDEX].length){const i=e[r.CHAR_DATA_CHAR_INDEX].charCodeAt(0);if(55296<=i&&i<=56319){const s=e[r.CHAR_DATA_CHAR_INDEX].charCodeAt(1);56320<=s&&s<=57343?this.content=1024*(i-55296)+s-56320+65536|e[r.CHAR_DATA_WIDTH_INDEX]<<22:t=!0}else t=!0}else this.content=e[r.CHAR_DATA_CHAR_INDEX].charCodeAt(0)|e[r.CHAR_DATA_WIDTH_INDEX]<<22;t&&(this.combinedData=e[r.CHAR_DATA_CHAR_INDEX],this.content=2097152|e[r.CHAR_DATA_WIDTH_INDEX]<<22)}getAsCharData(){return[this.fg,this.getChars(),this.getWidth(),this.getCode()]}}t.CellData=o},643:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.WHITESPACE_CELL_CODE=t.WHITESPACE_CELL_WIDTH=t.WHITESPACE_CELL_CHAR=t.NULL_CELL_CODE=t.NULL_CELL_WIDTH=t.NULL_CELL_CHAR=t.CHAR_DATA_CODE_INDEX=t.CHAR_DATA_WIDTH_INDEX=t.CHAR_DATA_CHAR_INDEX=t.CHAR_DATA_ATTR_INDEX=t.DEFAULT_EXT=t.DEFAULT_ATTR=t.DEFAULT_COLOR=void 0,t.DEFAULT_COLOR=0,t.DEFAULT_ATTR=256|t.DEFAULT_COLOR<<9,t.DEFAULT_EXT=0,t.CHAR_DATA_ATTR_INDEX=0,t.CHAR_DATA_CHAR_INDEX=1,t.CHAR_DATA_WIDTH_INDEX=2,t.CHAR_DATA_CODE_INDEX=3,t.NULL_CELL_CHAR="",t.NULL_CELL_WIDTH=1,t.NULL_CELL_CODE=0,t.WHITESPACE_CELL_CHAR=" ",t.WHITESPACE_CELL_WIDTH=1,t.WHITESPACE_CELL_CODE=32},4863:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.Marker=void 0;const s=i(8460),r=i(844);class n{get id(){return this._id}constructor(e){this.line=e,this.isDisposed=!1,this._disposables=[],this._id=n._nextId++,this._onDispose=this.register(new s.EventEmitter),this.onDispose=this._onDispose.event}dispose(){this.isDisposed||(this.isDisposed=!0,this.line=-1,this._onDispose.fire(),(0,r.disposeArray)(this._disposables),this._disposables.length=0)}register(e){return this._disposables.push(e),e}}t.Marker=n,n._nextId=1},7116:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.DEFAULT_CHARSET=t.CHARSETS=void 0,t.CHARSETS={},t.DEFAULT_CHARSET=t.CHARSETS.B,t.CHARSETS[0]={"`":"◆",a:"▒",b:"␉",c:"␌",d:"␍",e:"␊",f:"°",g:"±",h:"␤",i:"␋",j:"┘",k:"┐",l:"┌",m:"└",n:"┼",o:"⎺",p:"⎻",q:"─",r:"⎼",s:"⎽",t:"├",u:"┤",v:"┴",w:"┬",x:"│",y:"≤",z:"≥","{":"π","|":"≠","}":"£","~":"·"},t.CHARSETS.A={"#":"£"},t.CHARSETS.B=void 0,t.CHARSETS[4]={"#":"£","@":"¾","[":"ij","\\":"½","]":"|","{":"¨","|":"f","}":"¼","~":"´"},t.CHARSETS.C=t.CHARSETS[5]={"[":"Ä","\\":"Ö","]":"Å","^":"Ü","`":"é","{":"ä","|":"ö","}":"å","~":"ü"},t.CHARSETS.R={"#":"£","@":"à","[":"°","\\":"ç","]":"§","{":"é","|":"ù","}":"è","~":"¨"},t.CHARSETS.Q={"@":"à","[":"â","\\":"ç","]":"ê","^":"î","`":"ô","{":"é","|":"ù","}":"è","~":"û"},t.CHARSETS.K={"@":"§","[":"Ä","\\":"Ö","]":"Ü","{":"ä","|":"ö","}":"ü","~":"ß"},t.CHARSETS.Y={"#":"£","@":"§","[":"°","\\":"ç","]":"é","`":"ù","{":"à","|":"ò","}":"è","~":"ì"},t.CHARSETS.E=t.CHARSETS[6]={"@":"Ä","[":"Æ","\\":"Ø","]":"Å","^":"Ü","`":"ä","{":"æ","|":"ø","}":"å","~":"ü"},t.CHARSETS.Z={"#":"£","@":"§","[":"¡","\\":"Ñ","]":"¿","{":"°","|":"ñ","}":"ç"},t.CHARSETS.H=t.CHARSETS[7]={"@":"É","[":"Ä","\\":"Ö","]":"Å","^":"Ü","`":"é","{":"ä","|":"ö","}":"å","~":"ü"},t.CHARSETS["="]={"#":"ù","@":"à","[":"é","\\":"ç","]":"ê","^":"î",_:"è","`":"ô","{":"ä","|":"ö","}":"ü","~":"û"}},2584:(e,t)=>{var i,s,r;Object.defineProperty(t,"__esModule",{value:!0}),t.C1_ESCAPED=t.C1=t.C0=void 0,function(e){e.NUL="\0",e.SOH="",e.STX="",e.ETX="",e.EOT="",e.ENQ="",e.ACK="",e.BEL="",e.BS="\b",e.HT="\t",e.LF="\n",e.VT="\v",e.FF="\f",e.CR="\r",e.SO="",e.SI="",e.DLE="",e.DC1="",e.DC2="",e.DC3="",e.DC4="",e.NAK="",e.SYN="",e.ETB="",e.CAN="",e.EM="",e.SUB="",e.ESC="",e.FS="",e.GS="",e.RS="",e.US="",e.SP=" ",e.DEL=""}(i||(t.C0=i={})),function(e){e.PAD="€",e.HOP="",e.BPH="‚",e.NBH="ƒ",e.IND="„",e.NEL="…",e.SSA="†",e.ESA="‡",e.HTS="ˆ",e.HTJ="‰",e.VTS="Š",e.PLD="‹",e.PLU="Œ",e.RI="",e.SS2="Ž",e.SS3="",e.DCS="",e.PU1="‘",e.PU2="’",e.STS="“",e.CCH="”",e.MW="•",e.SPA="–",e.EPA="—",e.SOS="˜",e.SGCI="™",e.SCI="š",e.CSI="›",e.ST="œ",e.OSC="",e.PM="ž",e.APC="Ÿ"}(s||(t.C1=s={})),function(e){e.ST=`${i.ESC}\\`}(r||(t.C1_ESCAPED=r={}))},7399:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.evaluateKeyboardEvent=void 0;const s=i(2584),r={48:["0",")"],49:["1","!"],50:["2","@"],51:["3","#"],52:["4","$"],53:["5","%"],54:["6","^"],55:["7","&"],56:["8","*"],57:["9","("],186:[";",":"],187:["=","+"],188:[",","<"],189:["-","_"],190:[".",">"],191:["/","?"],192:["`","~"],219:["[","{"],220:["\\","|"],221:["]","}"],222:["'",'"']};t.evaluateKeyboardEvent=function(e,t,i,n){const o={type:0,cancel:!1,key:void 0},a=(e.shiftKey?1:0)|(e.altKey?2:0)|(e.ctrlKey?4:0)|(e.metaKey?8:0);switch(e.keyCode){case 0:"UIKeyInputUpArrow"===e.key?o.key=t?s.C0.ESC+"OA":s.C0.ESC+"[A":"UIKeyInputLeftArrow"===e.key?o.key=t?s.C0.ESC+"OD":s.C0.ESC+"[D":"UIKeyInputRightArrow"===e.key?o.key=t?s.C0.ESC+"OC":s.C0.ESC+"[C":"UIKeyInputDownArrow"===e.key&&(o.key=t?s.C0.ESC+"OB":s.C0.ESC+"[B");break;case 8:if(e.altKey){o.key=s.C0.ESC+s.C0.DEL;break}o.key=s.C0.DEL;break;case 9:if(e.shiftKey){o.key=s.C0.ESC+"[Z";break}o.key=s.C0.HT,o.cancel=!0;break;case 13:o.key=e.altKey?s.C0.ESC+s.C0.CR:s.C0.CR,o.cancel=!0;break;case 27:o.key=s.C0.ESC,e.altKey&&(o.key=s.C0.ESC+s.C0.ESC),o.cancel=!0;break;case 37:if(e.metaKey)break;a?(o.key=s.C0.ESC+"[1;"+(a+1)+"D",o.key===s.C0.ESC+"[1;3D"&&(o.key=s.C0.ESC+(i?"b":"[1;5D"))):o.key=t?s.C0.ESC+"OD":s.C0.ESC+"[D";break;case 39:if(e.metaKey)break;a?(o.key=s.C0.ESC+"[1;"+(a+1)+"C",o.key===s.C0.ESC+"[1;3C"&&(o.key=s.C0.ESC+(i?"f":"[1;5C"))):o.key=t?s.C0.ESC+"OC":s.C0.ESC+"[C";break;case 38:if(e.metaKey)break;a?(o.key=s.C0.ESC+"[1;"+(a+1)+"A",i||o.key!==s.C0.ESC+"[1;3A"||(o.key=s.C0.ESC+"[1;5A")):o.key=t?s.C0.ESC+"OA":s.C0.ESC+"[A";break;case 40:if(e.metaKey)break;a?(o.key=s.C0.ESC+"[1;"+(a+1)+"B",i||o.key!==s.C0.ESC+"[1;3B"||(o.key=s.C0.ESC+"[1;5B")):o.key=t?s.C0.ESC+"OB":s.C0.ESC+"[B";break;case 45:e.shiftKey||e.ctrlKey||(o.key=s.C0.ESC+"[2~");break;case 46:o.key=a?s.C0.ESC+"[3;"+(a+1)+"~":s.C0.ESC+"[3~";break;case 36:o.key=a?s.C0.ESC+"[1;"+(a+1)+"H":t?s.C0.ESC+"OH":s.C0.ESC+"[H";break;case 35:o.key=a?s.C0.ESC+"[1;"+(a+1)+"F":t?s.C0.ESC+"OF":s.C0.ESC+"[F";break;case 33:e.shiftKey?o.type=2:e.ctrlKey?o.key=s.C0.ESC+"[5;"+(a+1)+"~":o.key=s.C0.ESC+"[5~";break;case 34:e.shiftKey?o.type=3:e.ctrlKey?o.key=s.C0.ESC+"[6;"+(a+1)+"~":o.key=s.C0.ESC+"[6~";break;case 112:o.key=a?s.C0.ESC+"[1;"+(a+1)+"P":s.C0.ESC+"OP";break;case 113:o.key=a?s.C0.ESC+"[1;"+(a+1)+"Q":s.C0.ESC+"OQ";break;case 114:o.key=a?s.C0.ESC+"[1;"+(a+1)+"R":s.C0.ESC+"OR";break;case 115:o.key=a?s.C0.ESC+"[1;"+(a+1)+"S":s.C0.ESC+"OS";break;case 116:o.key=a?s.C0.ESC+"[15;"+(a+1)+"~":s.C0.ESC+"[15~";break;case 117:o.key=a?s.C0.ESC+"[17;"+(a+1)+"~":s.C0.ESC+"[17~";break;case 118:o.key=a?s.C0.ESC+"[18;"+(a+1)+"~":s.C0.ESC+"[18~";break;case 119:o.key=a?s.C0.ESC+"[19;"+(a+1)+"~":s.C0.ESC+"[19~";break;case 120:o.key=a?s.C0.ESC+"[20;"+(a+1)+"~":s.C0.ESC+"[20~";break;case 121:o.key=a?s.C0.ESC+"[21;"+(a+1)+"~":s.C0.ESC+"[21~";break;case 122:o.key=a?s.C0.ESC+"[23;"+(a+1)+"~":s.C0.ESC+"[23~";break;case 123:o.key=a?s.C0.ESC+"[24;"+(a+1)+"~":s.C0.ESC+"[24~";break;default:if(!e.ctrlKey||e.shiftKey||e.altKey||e.metaKey)if(i&&!n||!e.altKey||e.metaKey)!i||e.altKey||e.ctrlKey||e.shiftKey||!e.metaKey?e.key&&!e.ctrlKey&&!e.altKey&&!e.metaKey&&e.keyCode>=48&&1===e.key.length?o.key=e.key:e.key&&e.ctrlKey&&("_"===e.key&&(o.key=s.C0.US),"@"===e.key&&(o.key=s.C0.NUL)):65===e.keyCode&&(o.type=1);else{const t=r[e.keyCode],i=null==t?void 0:t[e.shiftKey?1:0];if(i)o.key=s.C0.ESC+i;else if(e.keyCode>=65&&e.keyCode<=90){const t=e.ctrlKey?e.keyCode-64:e.keyCode+32;let i=String.fromCharCode(t);e.shiftKey&&(i=i.toUpperCase()),o.key=s.C0.ESC+i}else if(32===e.keyCode)o.key=s.C0.ESC+(e.ctrlKey?s.C0.NUL:" ");else if("Dead"===e.key&&e.code.startsWith("Key")){let t=e.code.slice(3,4);e.shiftKey||(t=t.toLowerCase()),o.key=s.C0.ESC+t,o.cancel=!0}}else e.keyCode>=65&&e.keyCode<=90?o.key=String.fromCharCode(e.keyCode-64):32===e.keyCode?o.key=s.C0.NUL:e.keyCode>=51&&e.keyCode<=55?o.key=String.fromCharCode(e.keyCode-51+27):56===e.keyCode?o.key=s.C0.DEL:219===e.keyCode?o.key=s.C0.ESC:220===e.keyCode?o.key=s.C0.FS:221===e.keyCode&&(o.key=s.C0.GS)}return o}},482:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.Utf8ToUtf32=t.StringToUtf32=t.utf32ToString=t.stringFromCodePoint=void 0,t.stringFromCodePoint=function(e){return e>65535?(e-=65536,String.fromCharCode(55296+(e>>10))+String.fromCharCode(e%1024+56320)):String.fromCharCode(e)},t.utf32ToString=function(e,t=0,i=e.length){let s="";for(let r=t;r65535?(t-=65536,s+=String.fromCharCode(55296+(t>>10))+String.fromCharCode(t%1024+56320)):s+=String.fromCharCode(t)}return s},t.StringToUtf32=class{constructor(){this._interim=0}clear(){this._interim=0}decode(e,t){const i=e.length;if(!i)return 0;let s=0,r=0;if(this._interim){const i=e.charCodeAt(r++);56320<=i&&i<=57343?t[s++]=1024*(this._interim-55296)+i-56320+65536:(t[s++]=this._interim,t[s++]=i),this._interim=0}for(let n=r;n=i)return this._interim=r,s;const o=e.charCodeAt(n);56320<=o&&o<=57343?t[s++]=1024*(r-55296)+o-56320+65536:(t[s++]=r,t[s++]=o)}else 65279!==r&&(t[s++]=r)}return s}},t.Utf8ToUtf32=class{constructor(){this.interim=new Uint8Array(3)}clear(){this.interim.fill(0)}decode(e,t){const i=e.length;if(!i)return 0;let s,r,n,o,a=0,h=0,c=0;if(this.interim[0]){let s=!1,r=this.interim[0];r&=192==(224&r)?31:224==(240&r)?15:7;let n,o=0;for(;(n=63&this.interim[++o])&&o<4;)r<<=6,r|=n;const h=192==(224&this.interim[0])?2:224==(240&this.interim[0])?3:4,l=h-o;for(;c=i)return 0;if(n=e[c++],128!=(192&n)){c--,s=!0;break}this.interim[o++]=n,r<<=6,r|=63&n}s||(2===h?r<128?c--:t[a++]=r:3===h?r<2048||r>=55296&&r<=57343||65279===r||(t[a++]=r):r<65536||r>1114111||(t[a++]=r)),this.interim.fill(0)}const l=i-4;let d=c;for(;d=i)return this.interim[0]=s,a;if(r=e[d++],128!=(192&r)){d--;continue}if(h=(31&s)<<6|63&r,h<128){d--;continue}t[a++]=h}else if(224==(240&s)){if(d>=i)return this.interim[0]=s,a;if(r=e[d++],128!=(192&r)){d--;continue}if(d>=i)return this.interim[0]=s,this.interim[1]=r,a;if(n=e[d++],128!=(192&n)){d--;continue}if(h=(15&s)<<12|(63&r)<<6|63&n,h<2048||h>=55296&&h<=57343||65279===h)continue;t[a++]=h}else if(240==(248&s)){if(d>=i)return this.interim[0]=s,a;if(r=e[d++],128!=(192&r)){d--;continue}if(d>=i)return this.interim[0]=s,this.interim[1]=r,a;if(n=e[d++],128!=(192&n)){d--;continue}if(d>=i)return this.interim[0]=s,this.interim[1]=r,this.interim[2]=n,a;if(o=e[d++],128!=(192&o)){d--;continue}if(h=(7&s)<<18|(63&r)<<12|(63&n)<<6|63&o,h<65536||h>1114111)continue;t[a++]=h}}return a}}},225:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.UnicodeV6=void 0;const i=[[768,879],[1155,1158],[1160,1161],[1425,1469],[1471,1471],[1473,1474],[1476,1477],[1479,1479],[1536,1539],[1552,1557],[1611,1630],[1648,1648],[1750,1764],[1767,1768],[1770,1773],[1807,1807],[1809,1809],[1840,1866],[1958,1968],[2027,2035],[2305,2306],[2364,2364],[2369,2376],[2381,2381],[2385,2388],[2402,2403],[2433,2433],[2492,2492],[2497,2500],[2509,2509],[2530,2531],[2561,2562],[2620,2620],[2625,2626],[2631,2632],[2635,2637],[2672,2673],[2689,2690],[2748,2748],[2753,2757],[2759,2760],[2765,2765],[2786,2787],[2817,2817],[2876,2876],[2879,2879],[2881,2883],[2893,2893],[2902,2902],[2946,2946],[3008,3008],[3021,3021],[3134,3136],[3142,3144],[3146,3149],[3157,3158],[3260,3260],[3263,3263],[3270,3270],[3276,3277],[3298,3299],[3393,3395],[3405,3405],[3530,3530],[3538,3540],[3542,3542],[3633,3633],[3636,3642],[3655,3662],[3761,3761],[3764,3769],[3771,3772],[3784,3789],[3864,3865],[3893,3893],[3895,3895],[3897,3897],[3953,3966],[3968,3972],[3974,3975],[3984,3991],[3993,4028],[4038,4038],[4141,4144],[4146,4146],[4150,4151],[4153,4153],[4184,4185],[4448,4607],[4959,4959],[5906,5908],[5938,5940],[5970,5971],[6002,6003],[6068,6069],[6071,6077],[6086,6086],[6089,6099],[6109,6109],[6155,6157],[6313,6313],[6432,6434],[6439,6440],[6450,6450],[6457,6459],[6679,6680],[6912,6915],[6964,6964],[6966,6970],[6972,6972],[6978,6978],[7019,7027],[7616,7626],[7678,7679],[8203,8207],[8234,8238],[8288,8291],[8298,8303],[8400,8431],[12330,12335],[12441,12442],[43014,43014],[43019,43019],[43045,43046],[64286,64286],[65024,65039],[65056,65059],[65279,65279],[65529,65531]],s=[[68097,68099],[68101,68102],[68108,68111],[68152,68154],[68159,68159],[119143,119145],[119155,119170],[119173,119179],[119210,119213],[119362,119364],[917505,917505],[917536,917631],[917760,917999]];let r;t.UnicodeV6=class{constructor(){if(this.version="6",!r){r=new Uint8Array(65536),r.fill(1),r[0]=0,r.fill(0,1,32),r.fill(0,127,160),r.fill(2,4352,4448),r[9001]=2,r[9002]=2,r.fill(2,11904,42192),r[12351]=1,r.fill(2,44032,55204),r.fill(2,63744,64256),r.fill(2,65040,65050),r.fill(2,65072,65136),r.fill(2,65280,65377),r.fill(2,65504,65511);for(let e=0;et[r][1])return!1;for(;r>=s;)if(i=s+r>>1,e>t[i][1])s=i+1;else{if(!(e=131072&&e<=196605||e>=196608&&e<=262141?2:1}}},5981:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.WriteBuffer=void 0;const s=i(8460),r=i(844);class n extends r.Disposable{constructor(e){super(),this._action=e,this._writeBuffer=[],this._callbacks=[],this._pendingData=0,this._bufferOffset=0,this._isSyncWriting=!1,this._syncCalls=0,this._didUserInput=!1,this._onWriteParsed=this.register(new s.EventEmitter),this.onWriteParsed=this._onWriteParsed.event}handleUserInput(){this._didUserInput=!0}writeSync(e,t){if(void 0!==t&&this._syncCalls>t)return void(this._syncCalls=0);if(this._pendingData+=e.length,this._writeBuffer.push(e),this._callbacks.push(void 0),this._syncCalls++,this._isSyncWriting)return;let i;for(this._isSyncWriting=!0;i=this._writeBuffer.shift();){this._action(i);const e=this._callbacks.shift();e&&e()}this._pendingData=0,this._bufferOffset=2147483647,this._isSyncWriting=!1,this._syncCalls=0}write(e,t){if(this._pendingData>5e7)throw new Error("write data discarded, use flow control to avoid losing data");if(!this._writeBuffer.length){if(this._bufferOffset=0,this._didUserInput)return this._didUserInput=!1,this._pendingData+=e.length,this._writeBuffer.push(e),this._callbacks.push(t),void this._innerWrite();setTimeout((()=>this._innerWrite()))}this._pendingData+=e.length,this._writeBuffer.push(e),this._callbacks.push(t)}_innerWrite(e=0,t=!0){const i=e||Date.now();for(;this._writeBuffer.length>this._bufferOffset;){const e=this._writeBuffer[this._bufferOffset],s=this._action(e,t);if(s){const e=e=>Date.now()-i>=12?setTimeout((()=>this._innerWrite(0,e))):this._innerWrite(i,e);return void s.catch((e=>(queueMicrotask((()=>{throw e})),Promise.resolve(!1)))).then(e)}const r=this._callbacks[this._bufferOffset];if(r&&r(),this._bufferOffset++,this._pendingData-=e.length,Date.now()-i>=12)break}this._writeBuffer.length>this._bufferOffset?(this._bufferOffset>50&&(this._writeBuffer=this._writeBuffer.slice(this._bufferOffset),this._callbacks=this._callbacks.slice(this._bufferOffset),this._bufferOffset=0),setTimeout((()=>this._innerWrite()))):(this._writeBuffer.length=0,this._callbacks.length=0,this._pendingData=0,this._bufferOffset=0),this._onWriteParsed.fire()}}t.WriteBuffer=n},5941:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.toRgbString=t.parseColor=void 0;const i=/^([\da-f])\/([\da-f])\/([\da-f])$|^([\da-f]{2})\/([\da-f]{2})\/([\da-f]{2})$|^([\da-f]{3})\/([\da-f]{3})\/([\da-f]{3})$|^([\da-f]{4})\/([\da-f]{4})\/([\da-f]{4})$/,s=/^[\da-f]+$/;function r(e,t){const i=e.toString(16),s=i.length<2?"0"+i:i;switch(t){case 4:return i[0];case 8:return s;case 12:return(s+s).slice(0,3);default:return s+s}}t.parseColor=function(e){if(!e)return;let t=e.toLowerCase();if(0===t.indexOf("rgb:")){t=t.slice(4);const e=i.exec(t);if(e){const t=e[1]?15:e[4]?255:e[7]?4095:65535;return[Math.round(parseInt(e[1]||e[4]||e[7]||e[10],16)/t*255),Math.round(parseInt(e[2]||e[5]||e[8]||e[11],16)/t*255),Math.round(parseInt(e[3]||e[6]||e[9]||e[12],16)/t*255)]}}else if(0===t.indexOf("#")&&(t=t.slice(1),s.exec(t)&&[3,6,9,12].includes(t.length))){const e=t.length/3,i=[0,0,0];for(let s=0;s<3;++s){const r=parseInt(t.slice(e*s,e*s+e),16);i[s]=1===e?r<<4:2===e?r:3===e?r>>4:r>>8}return i}},t.toRgbString=function(e,t=16){const[i,s,n]=e;return`rgb:${r(i,t)}/${r(s,t)}/${r(n,t)}`}},5770:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.PAYLOAD_LIMIT=void 0,t.PAYLOAD_LIMIT=1e7},6351:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.DcsHandler=t.DcsParser=void 0;const s=i(482),r=i(8742),n=i(5770),o=[];t.DcsParser=class{constructor(){this._handlers=Object.create(null),this._active=o,this._ident=0,this._handlerFb=()=>{},this._stack={paused:!1,loopPosition:0,fallThrough:!1}}dispose(){this._handlers=Object.create(null),this._handlerFb=()=>{},this._active=o}registerHandler(e,t){void 0===this._handlers[e]&&(this._handlers[e]=[]);const i=this._handlers[e];return i.push(t),{dispose:()=>{const e=i.indexOf(t);-1!==e&&i.splice(e,1)}}}clearHandler(e){this._handlers[e]&&delete this._handlers[e]}setHandlerFallback(e){this._handlerFb=e}reset(){if(this._active.length)for(let e=this._stack.paused?this._stack.loopPosition-1:this._active.length-1;e>=0;--e)this._active[e].unhook(!1);this._stack.paused=!1,this._active=o,this._ident=0}hook(e,t){if(this.reset(),this._ident=e,this._active=this._handlers[e]||o,this._active.length)for(let e=this._active.length-1;e>=0;e--)this._active[e].hook(t);else this._handlerFb(this._ident,"HOOK",t)}put(e,t,i){if(this._active.length)for(let s=this._active.length-1;s>=0;s--)this._active[s].put(e,t,i);else this._handlerFb(this._ident,"PUT",(0,s.utf32ToString)(e,t,i))}unhook(e,t=!0){if(this._active.length){let i=!1,s=this._active.length-1,r=!1;if(this._stack.paused&&(s=this._stack.loopPosition-1,i=t,r=this._stack.fallThrough,this._stack.paused=!1),!r&&!1===i){for(;s>=0&&(i=this._active[s].unhook(e),!0!==i);s--)if(i instanceof Promise)return this._stack.paused=!0,this._stack.loopPosition=s,this._stack.fallThrough=!1,i;s--}for(;s>=0;s--)if(i=this._active[s].unhook(!1),i instanceof Promise)return this._stack.paused=!0,this._stack.loopPosition=s,this._stack.fallThrough=!0,i}else this._handlerFb(this._ident,"UNHOOK",e);this._active=o,this._ident=0}};const a=new r.Params;a.addParam(0),t.DcsHandler=class{constructor(e){this._handler=e,this._data="",this._params=a,this._hitLimit=!1}hook(e){this._params=e.length>1||e.params[0]?e.clone():a,this._data="",this._hitLimit=!1}put(e,t,i){this._hitLimit||(this._data+=(0,s.utf32ToString)(e,t,i),this._data.length>n.PAYLOAD_LIMIT&&(this._data="",this._hitLimit=!0))}unhook(e){let t=!1;if(this._hitLimit)t=!1;else if(e&&(t=this._handler(this._data,this._params),t instanceof Promise))return t.then((e=>(this._params=a,this._data="",this._hitLimit=!1,e)));return this._params=a,this._data="",this._hitLimit=!1,t}}},2015:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.EscapeSequenceParser=t.VT500_TRANSITION_TABLE=t.TransitionTable=void 0;const s=i(844),r=i(8742),n=i(6242),o=i(6351);class a{constructor(e){this.table=new Uint8Array(e)}setDefault(e,t){this.table.fill(e<<4|t)}add(e,t,i,s){this.table[t<<8|e]=i<<4|s}addMany(e,t,i,s){for(let r=0;rt)),i=(e,i)=>t.slice(e,i),s=i(32,127),r=i(0,24);r.push(25),r.push.apply(r,i(28,32));const n=i(0,14);let o;for(o in e.setDefault(1,0),e.addMany(s,0,2,0),n)e.addMany([24,26,153,154],o,3,0),e.addMany(i(128,144),o,3,0),e.addMany(i(144,152),o,3,0),e.add(156,o,0,0),e.add(27,o,11,1),e.add(157,o,4,8),e.addMany([152,158,159],o,0,7),e.add(155,o,11,3),e.add(144,o,11,9);return e.addMany(r,0,3,0),e.addMany(r,1,3,1),e.add(127,1,0,1),e.addMany(r,8,0,8),e.addMany(r,3,3,3),e.add(127,3,0,3),e.addMany(r,4,3,4),e.add(127,4,0,4),e.addMany(r,6,3,6),e.addMany(r,5,3,5),e.add(127,5,0,5),e.addMany(r,2,3,2),e.add(127,2,0,2),e.add(93,1,4,8),e.addMany(s,8,5,8),e.add(127,8,5,8),e.addMany([156,27,24,26,7],8,6,0),e.addMany(i(28,32),8,0,8),e.addMany([88,94,95],1,0,7),e.addMany(s,7,0,7),e.addMany(r,7,0,7),e.add(156,7,0,0),e.add(127,7,0,7),e.add(91,1,11,3),e.addMany(i(64,127),3,7,0),e.addMany(i(48,60),3,8,4),e.addMany([60,61,62,63],3,9,4),e.addMany(i(48,60),4,8,4),e.addMany(i(64,127),4,7,0),e.addMany([60,61,62,63],4,0,6),e.addMany(i(32,64),6,0,6),e.add(127,6,0,6),e.addMany(i(64,127),6,0,0),e.addMany(i(32,48),3,9,5),e.addMany(i(32,48),5,9,5),e.addMany(i(48,64),5,0,6),e.addMany(i(64,127),5,7,0),e.addMany(i(32,48),4,9,5),e.addMany(i(32,48),1,9,2),e.addMany(i(32,48),2,9,2),e.addMany(i(48,127),2,10,0),e.addMany(i(48,80),1,10,0),e.addMany(i(81,88),1,10,0),e.addMany([89,90,92],1,10,0),e.addMany(i(96,127),1,10,0),e.add(80,1,11,9),e.addMany(r,9,0,9),e.add(127,9,0,9),e.addMany(i(28,32),9,0,9),e.addMany(i(32,48),9,9,12),e.addMany(i(48,60),9,8,10),e.addMany([60,61,62,63],9,9,10),e.addMany(r,11,0,11),e.addMany(i(32,128),11,0,11),e.addMany(i(28,32),11,0,11),e.addMany(r,10,0,10),e.add(127,10,0,10),e.addMany(i(28,32),10,0,10),e.addMany(i(48,60),10,8,10),e.addMany([60,61,62,63],10,0,11),e.addMany(i(32,48),10,9,12),e.addMany(r,12,0,12),e.add(127,12,0,12),e.addMany(i(28,32),12,0,12),e.addMany(i(32,48),12,9,12),e.addMany(i(48,64),12,0,11),e.addMany(i(64,127),12,12,13),e.addMany(i(64,127),10,12,13),e.addMany(i(64,127),9,12,13),e.addMany(r,13,13,13),e.addMany(s,13,13,13),e.add(127,13,0,13),e.addMany([27,156,24,26],13,14,0),e.add(h,0,2,0),e.add(h,8,5,8),e.add(h,6,0,6),e.add(h,11,0,11),e.add(h,13,13,13),e}();class c extends s.Disposable{constructor(e=t.VT500_TRANSITION_TABLE){super(),this._transitions=e,this._parseStack={state:0,handlers:[],handlerPos:0,transition:0,chunkPos:0},this.initialState=0,this.currentState=this.initialState,this._params=new r.Params,this._params.addParam(0),this._collect=0,this.precedingCodepoint=0,this._printHandlerFb=(e,t,i)=>{},this._executeHandlerFb=e=>{},this._csiHandlerFb=(e,t)=>{},this._escHandlerFb=e=>{},this._errorHandlerFb=e=>e,this._printHandler=this._printHandlerFb,this._executeHandlers=Object.create(null),this._csiHandlers=Object.create(null),this._escHandlers=Object.create(null),this.register((0,s.toDisposable)((()=>{this._csiHandlers=Object.create(null),this._executeHandlers=Object.create(null),this._escHandlers=Object.create(null)}))),this._oscParser=this.register(new n.OscParser),this._dcsParser=this.register(new o.DcsParser),this._errorHandler=this._errorHandlerFb,this.registerEscHandler({final:"\\"},(()=>!0))}_identifier(e,t=[64,126]){let i=0;if(e.prefix){if(e.prefix.length>1)throw new Error("only one byte as prefix supported");if(i=e.prefix.charCodeAt(0),i&&60>i||i>63)throw new Error("prefix must be in range 0x3c .. 0x3f")}if(e.intermediates){if(e.intermediates.length>2)throw new Error("only two bytes as intermediates are supported");for(let t=0;ts||s>47)throw new Error("intermediate must be in range 0x20 .. 0x2f");i<<=8,i|=s}}if(1!==e.final.length)throw new Error("final must be a single byte");const s=e.final.charCodeAt(0);if(t[0]>s||s>t[1])throw new Error(`final must be in range ${t[0]} .. ${t[1]}`);return i<<=8,i|=s,i}identToString(e){const t=[];for(;e;)t.push(String.fromCharCode(255&e)),e>>=8;return t.reverse().join("")}setPrintHandler(e){this._printHandler=e}clearPrintHandler(){this._printHandler=this._printHandlerFb}registerEscHandler(e,t){const i=this._identifier(e,[48,126]);void 0===this._escHandlers[i]&&(this._escHandlers[i]=[]);const s=this._escHandlers[i];return s.push(t),{dispose:()=>{const e=s.indexOf(t);-1!==e&&s.splice(e,1)}}}clearEscHandler(e){this._escHandlers[this._identifier(e,[48,126])]&&delete this._escHandlers[this._identifier(e,[48,126])]}setEscHandlerFallback(e){this._escHandlerFb=e}setExecuteHandler(e,t){this._executeHandlers[e.charCodeAt(0)]=t}clearExecuteHandler(e){this._executeHandlers[e.charCodeAt(0)]&&delete this._executeHandlers[e.charCodeAt(0)]}setExecuteHandlerFallback(e){this._executeHandlerFb=e}registerCsiHandler(e,t){const i=this._identifier(e);void 0===this._csiHandlers[i]&&(this._csiHandlers[i]=[]);const s=this._csiHandlers[i];return s.push(t),{dispose:()=>{const e=s.indexOf(t);-1!==e&&s.splice(e,1)}}}clearCsiHandler(e){this._csiHandlers[this._identifier(e)]&&delete this._csiHandlers[this._identifier(e)]}setCsiHandlerFallback(e){this._csiHandlerFb=e}registerDcsHandler(e,t){return this._dcsParser.registerHandler(this._identifier(e),t)}clearDcsHandler(e){this._dcsParser.clearHandler(this._identifier(e))}setDcsHandlerFallback(e){this._dcsParser.setHandlerFallback(e)}registerOscHandler(e,t){return this._oscParser.registerHandler(e,t)}clearOscHandler(e){this._oscParser.clearHandler(e)}setOscHandlerFallback(e){this._oscParser.setHandlerFallback(e)}setErrorHandler(e){this._errorHandler=e}clearErrorHandler(){this._errorHandler=this._errorHandlerFb}reset(){this.currentState=this.initialState,this._oscParser.reset(),this._dcsParser.reset(),this._params.reset(),this._params.addParam(0),this._collect=0,this.precedingCodepoint=0,0!==this._parseStack.state&&(this._parseStack.state=2,this._parseStack.handlers=[])}_preserveStack(e,t,i,s,r){this._parseStack.state=e,this._parseStack.handlers=t,this._parseStack.handlerPos=i,this._parseStack.transition=s,this._parseStack.chunkPos=r}parse(e,t,i){let s,r=0,n=0,o=0;if(this._parseStack.state)if(2===this._parseStack.state)this._parseStack.state=0,o=this._parseStack.chunkPos+1;else{if(void 0===i||1===this._parseStack.state)throw this._parseStack.state=1,new Error("improper continuation due to previous async handler, giving up parsing");const t=this._parseStack.handlers;let n=this._parseStack.handlerPos-1;switch(this._parseStack.state){case 3:if(!1===i&&n>-1)for(;n>=0&&(s=t[n](this._params),!0!==s);n--)if(s instanceof Promise)return this._parseStack.handlerPos=n,s;this._parseStack.handlers=[];break;case 4:if(!1===i&&n>-1)for(;n>=0&&(s=t[n](),!0!==s);n--)if(s instanceof Promise)return this._parseStack.handlerPos=n,s;this._parseStack.handlers=[];break;case 6:if(r=e[this._parseStack.chunkPos],s=this._dcsParser.unhook(24!==r&&26!==r,i),s)return s;27===r&&(this._parseStack.transition|=1),this._params.reset(),this._params.addParam(0),this._collect=0;break;case 5:if(r=e[this._parseStack.chunkPos],s=this._oscParser.end(24!==r&&26!==r,i),s)return s;27===r&&(this._parseStack.transition|=1),this._params.reset(),this._params.addParam(0),this._collect=0}this._parseStack.state=0,o=this._parseStack.chunkPos+1,this.precedingCodepoint=0,this.currentState=15&this._parseStack.transition}for(let i=o;i>4){case 2:for(let s=i+1;;++s){if(s>=t||(r=e[s])<32||r>126&&r=t||(r=e[s])<32||r>126&&r=t||(r=e[s])<32||r>126&&r=t||(r=e[s])<32||r>126&&r=0&&(s=o[a](this._params),!0!==s);a--)if(s instanceof Promise)return this._preserveStack(3,o,a,n,i),s;a<0&&this._csiHandlerFb(this._collect<<8|r,this._params),this.precedingCodepoint=0;break;case 8:do{switch(r){case 59:this._params.addParam(0);break;case 58:this._params.addSubParam(-1);break;default:this._params.addDigit(r-48)}}while(++i47&&r<60);i--;break;case 9:this._collect<<=8,this._collect|=r;break;case 10:const c=this._escHandlers[this._collect<<8|r];let l=c?c.length-1:-1;for(;l>=0&&(s=c[l](),!0!==s);l--)if(s instanceof Promise)return this._preserveStack(4,c,l,n,i),s;l<0&&this._escHandlerFb(this._collect<<8|r),this.precedingCodepoint=0;break;case 11:this._params.reset(),this._params.addParam(0),this._collect=0;break;case 12:this._dcsParser.hook(this._collect<<8|r,this._params);break;case 13:for(let s=i+1;;++s)if(s>=t||24===(r=e[s])||26===r||27===r||r>127&&r=t||(r=e[s])<32||r>127&&r{Object.defineProperty(t,"__esModule",{value:!0}),t.OscHandler=t.OscParser=void 0;const s=i(5770),r=i(482),n=[];t.OscParser=class{constructor(){this._state=0,this._active=n,this._id=-1,this._handlers=Object.create(null),this._handlerFb=()=>{},this._stack={paused:!1,loopPosition:0,fallThrough:!1}}registerHandler(e,t){void 0===this._handlers[e]&&(this._handlers[e]=[]);const i=this._handlers[e];return i.push(t),{dispose:()=>{const e=i.indexOf(t);-1!==e&&i.splice(e,1)}}}clearHandler(e){this._handlers[e]&&delete this._handlers[e]}setHandlerFallback(e){this._handlerFb=e}dispose(){this._handlers=Object.create(null),this._handlerFb=()=>{},this._active=n}reset(){if(2===this._state)for(let e=this._stack.paused?this._stack.loopPosition-1:this._active.length-1;e>=0;--e)this._active[e].end(!1);this._stack.paused=!1,this._active=n,this._id=-1,this._state=0}_start(){if(this._active=this._handlers[this._id]||n,this._active.length)for(let e=this._active.length-1;e>=0;e--)this._active[e].start();else this._handlerFb(this._id,"START")}_put(e,t,i){if(this._active.length)for(let s=this._active.length-1;s>=0;s--)this._active[s].put(e,t,i);else this._handlerFb(this._id,"PUT",(0,r.utf32ToString)(e,t,i))}start(){this.reset(),this._state=1}put(e,t,i){if(3!==this._state){if(1===this._state)for(;t0&&this._put(e,t,i)}}end(e,t=!0){if(0!==this._state){if(3!==this._state)if(1===this._state&&this._start(),this._active.length){let i=!1,s=this._active.length-1,r=!1;if(this._stack.paused&&(s=this._stack.loopPosition-1,i=t,r=this._stack.fallThrough,this._stack.paused=!1),!r&&!1===i){for(;s>=0&&(i=this._active[s].end(e),!0!==i);s--)if(i instanceof Promise)return this._stack.paused=!0,this._stack.loopPosition=s,this._stack.fallThrough=!1,i;s--}for(;s>=0;s--)if(i=this._active[s].end(!1),i instanceof Promise)return this._stack.paused=!0,this._stack.loopPosition=s,this._stack.fallThrough=!0,i}else this._handlerFb(this._id,"END",e);this._active=n,this._id=-1,this._state=0}}},t.OscHandler=class{constructor(e){this._handler=e,this._data="",this._hitLimit=!1}start(){this._data="",this._hitLimit=!1}put(e,t,i){this._hitLimit||(this._data+=(0,r.utf32ToString)(e,t,i),this._data.length>s.PAYLOAD_LIMIT&&(this._data="",this._hitLimit=!0))}end(e){let t=!1;if(this._hitLimit)t=!1;else if(e&&(t=this._handler(this._data),t instanceof Promise))return t.then((e=>(this._data="",this._hitLimit=!1,e)));return this._data="",this._hitLimit=!1,t}}},8742:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.Params=void 0;const i=2147483647;class s{static fromArray(e){const t=new s;if(!e.length)return t;for(let i=Array.isArray(e[0])?1:0;i256)throw new Error("maxSubParamsLength must not be greater than 256");this.params=new Int32Array(e),this.length=0,this._subParams=new Int32Array(t),this._subParamsLength=0,this._subParamsIdx=new Uint16Array(e),this._rejectDigits=!1,this._rejectSubDigits=!1,this._digitIsSub=!1}clone(){const e=new s(this.maxLength,this.maxSubParamsLength);return e.params.set(this.params),e.length=this.length,e._subParams.set(this._subParams),e._subParamsLength=this._subParamsLength,e._subParamsIdx.set(this._subParamsIdx),e._rejectDigits=this._rejectDigits,e._rejectSubDigits=this._rejectSubDigits,e._digitIsSub=this._digitIsSub,e}toArray(){const e=[];for(let t=0;t>8,s=255&this._subParamsIdx[t];s-i>0&&e.push(Array.prototype.slice.call(this._subParams,i,s))}return e}reset(){this.length=0,this._subParamsLength=0,this._rejectDigits=!1,this._rejectSubDigits=!1,this._digitIsSub=!1}addParam(e){if(this._digitIsSub=!1,this.length>=this.maxLength)this._rejectDigits=!0;else{if(e<-1)throw new Error("values lesser than -1 are not allowed");this._subParamsIdx[this.length]=this._subParamsLength<<8|this._subParamsLength,this.params[this.length++]=e>i?i:e}}addSubParam(e){if(this._digitIsSub=!0,this.length)if(this._rejectDigits||this._subParamsLength>=this.maxSubParamsLength)this._rejectSubDigits=!0;else{if(e<-1)throw new Error("values lesser than -1 are not allowed");this._subParams[this._subParamsLength++]=e>i?i:e,this._subParamsIdx[this.length-1]++}}hasSubParams(e){return(255&this._subParamsIdx[e])-(this._subParamsIdx[e]>>8)>0}getSubParams(e){const t=this._subParamsIdx[e]>>8,i=255&this._subParamsIdx[e];return i-t>0?this._subParams.subarray(t,i):null}getSubParamsAll(){const e={};for(let t=0;t>8,s=255&this._subParamsIdx[t];s-i>0&&(e[t]=this._subParams.slice(i,s))}return e}addDigit(e){let t;if(this._rejectDigits||!(t=this._digitIsSub?this._subParamsLength:this.length)||this._digitIsSub&&this._rejectSubDigits)return;const s=this._digitIsSub?this._subParams:this.params,r=s[t-1];s[t-1]=~r?Math.min(10*r+e,i):e}}t.Params=s},5741:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.AddonManager=void 0,t.AddonManager=class{constructor(){this._addons=[]}dispose(){for(let e=this._addons.length-1;e>=0;e--)this._addons[e].instance.dispose()}loadAddon(e,t){const i={instance:t,dispose:t.dispose,isDisposed:!1};this._addons.push(i),t.dispose=()=>this._wrappedAddonDispose(i),t.activate(e)}_wrappedAddonDispose(e){if(e.isDisposed)return;let t=-1;for(let i=0;i{Object.defineProperty(t,"__esModule",{value:!0}),t.BufferApiView=void 0;const s=i(3785),r=i(511);t.BufferApiView=class{constructor(e,t){this._buffer=e,this.type=t}init(e){return this._buffer=e,this}get cursorY(){return this._buffer.y}get cursorX(){return this._buffer.x}get viewportY(){return this._buffer.ydisp}get baseY(){return this._buffer.ybase}get length(){return this._buffer.lines.length}getLine(e){const t=this._buffer.lines.get(e);if(t)return new s.BufferLineApiView(t)}getNullCell(){return new r.CellData}}},3785:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.BufferLineApiView=void 0;const s=i(511);t.BufferLineApiView=class{constructor(e){this._line=e}get isWrapped(){return this._line.isWrapped}get length(){return this._line.length}getCell(e,t){if(!(e<0||e>=this._line.length))return t?(this._line.loadCell(e,t),t):this._line.loadCell(e,new s.CellData)}translateToString(e,t,i){return this._line.translateToString(e,t,i)}}},8285:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.BufferNamespaceApi=void 0;const s=i(8771),r=i(8460),n=i(844);class o extends n.Disposable{constructor(e){super(),this._core=e,this._onBufferChange=this.register(new r.EventEmitter),this.onBufferChange=this._onBufferChange.event,this._normal=new s.BufferApiView(this._core.buffers.normal,"normal"),this._alternate=new s.BufferApiView(this._core.buffers.alt,"alternate"),this._core.buffers.onBufferActivate((()=>this._onBufferChange.fire(this.active)))}get active(){if(this._core.buffers.active===this._core.buffers.normal)return this.normal;if(this._core.buffers.active===this._core.buffers.alt)return this.alternate;throw new Error("Active buffer is neither normal nor alternate")}get normal(){return this._normal.init(this._core.buffers.normal)}get alternate(){return this._alternate.init(this._core.buffers.alt)}}t.BufferNamespaceApi=o},7975:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ParserApi=void 0,t.ParserApi=class{constructor(e){this._core=e}registerCsiHandler(e,t){return this._core.registerCsiHandler(e,(e=>t(e.toArray())))}addCsiHandler(e,t){return this.registerCsiHandler(e,t)}registerDcsHandler(e,t){return this._core.registerDcsHandler(e,((e,i)=>t(e,i.toArray())))}addDcsHandler(e,t){return this.registerDcsHandler(e,t)}registerEscHandler(e,t){return this._core.registerEscHandler(e,t)}addEscHandler(e,t){return this.registerEscHandler(e,t)}registerOscHandler(e,t){return this._core.registerOscHandler(e,t)}addOscHandler(e,t){return this.registerOscHandler(e,t)}}},7090:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.UnicodeApi=void 0,t.UnicodeApi=class{constructor(e){this._core=e}register(e){this._core.unicodeService.register(e)}get versions(){return this._core.unicodeService.versions}get activeVersion(){return this._core.unicodeService.activeVersion}set activeVersion(e){this._core.unicodeService.activeVersion=e}}},744:function(e,t,i){var s=this&&this.__decorate||function(e,t,i,s){var r,n=arguments.length,o=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,i):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,s);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(n<3?r(o):n>3?r(t,i,o):r(t,i))||o);return n>3&&o&&Object.defineProperty(t,i,o),o},r=this&&this.__param||function(e,t){return function(i,s){t(i,s,e)}};Object.defineProperty(t,"__esModule",{value:!0}),t.BufferService=t.MINIMUM_ROWS=t.MINIMUM_COLS=void 0;const n=i(8460),o=i(844),a=i(5295),h=i(2585);t.MINIMUM_COLS=2,t.MINIMUM_ROWS=1;let c=t.BufferService=class extends o.Disposable{get buffer(){return this.buffers.active}constructor(e){super(),this.isUserScrolling=!1,this._onResize=this.register(new n.EventEmitter),this.onResize=this._onResize.event,this._onScroll=this.register(new n.EventEmitter),this.onScroll=this._onScroll.event,this.cols=Math.max(e.rawOptions.cols||0,t.MINIMUM_COLS),this.rows=Math.max(e.rawOptions.rows||0,t.MINIMUM_ROWS),this.buffers=this.register(new a.BufferSet(e,this))}resize(e,t){this.cols=e,this.rows=t,this.buffers.resize(e,t),this._onResize.fire({cols:e,rows:t})}reset(){this.buffers.reset(),this.isUserScrolling=!1}scroll(e,t=!1){const i=this.buffer;let s;s=this._cachedBlankLine,s&&s.length===this.cols&&s.getFg(0)===e.fg&&s.getBg(0)===e.bg||(s=i.getBlankLine(e,t),this._cachedBlankLine=s),s.isWrapped=t;const r=i.ybase+i.scrollTop,n=i.ybase+i.scrollBottom;if(0===i.scrollTop){const e=i.lines.isFull;n===i.lines.length-1?e?i.lines.recycle().copyFrom(s):i.lines.push(s.clone()):i.lines.splice(n+1,0,s.clone()),e?this.isUserScrolling&&(i.ydisp=Math.max(i.ydisp-1,0)):(i.ybase++,this.isUserScrolling||i.ydisp++)}else{const e=n-r+1;i.lines.shiftElements(r+1,e-1,-1),i.lines.set(n,s.clone())}this.isUserScrolling||(i.ydisp=i.ybase),this._onScroll.fire(i.ydisp)}scrollLines(e,t,i){const s=this.buffer;if(e<0){if(0===s.ydisp)return;this.isUserScrolling=!0}else e+s.ydisp>=s.ybase&&(this.isUserScrolling=!1);const r=s.ydisp;s.ydisp=Math.max(Math.min(s.ydisp+e,s.ybase),0),r!==s.ydisp&&(t||this._onScroll.fire(s.ydisp))}};t.BufferService=c=s([r(0,h.IOptionsService)],c)},7994:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.CharsetService=void 0,t.CharsetService=class{constructor(){this.glevel=0,this._charsets=[]}reset(){this.charset=void 0,this._charsets=[],this.glevel=0}setgLevel(e){this.glevel=e,this.charset=this._charsets[e]}setgCharset(e,t){this._charsets[e]=t,this.glevel===e&&(this.charset=t)}}},1753:function(e,t,i){var s=this&&this.__decorate||function(e,t,i,s){var r,n=arguments.length,o=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,i):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,s);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(n<3?r(o):n>3?r(t,i,o):r(t,i))||o);return n>3&&o&&Object.defineProperty(t,i,o),o},r=this&&this.__param||function(e,t){return function(i,s){t(i,s,e)}};Object.defineProperty(t,"__esModule",{value:!0}),t.CoreMouseService=void 0;const n=i(2585),o=i(8460),a=i(844),h={NONE:{events:0,restrict:()=>!1},X10:{events:1,restrict:e=>4!==e.button&&1===e.action&&(e.ctrl=!1,e.alt=!1,e.shift=!1,!0)},VT200:{events:19,restrict:e=>32!==e.action},DRAG:{events:23,restrict:e=>32!==e.action||3!==e.button},ANY:{events:31,restrict:e=>!0}};function c(e,t){let i=(e.ctrl?16:0)|(e.shift?4:0)|(e.alt?8:0);return 4===e.button?(i|=64,i|=e.action):(i|=3&e.button,4&e.button&&(i|=64),8&e.button&&(i|=128),32===e.action?i|=32:0!==e.action||t||(i|=3)),i}const l=String.fromCharCode,d={DEFAULT:e=>{const t=[c(e,!1)+32,e.col+32,e.row+32];return t[0]>255||t[1]>255||t[2]>255?"":`${l(t[0])}${l(t[1])}${l(t[2])}`},SGR:e=>{const t=0===e.action&&4!==e.button?"m":"M";return`[<${c(e,!0)};${e.col};${e.row}${t}`},SGR_PIXELS:e=>{const t=0===e.action&&4!==e.button?"m":"M";return`[<${c(e,!0)};${e.x};${e.y}${t}`}};let _=t.CoreMouseService=class extends a.Disposable{constructor(e,t){super(),this._bufferService=e,this._coreService=t,this._protocols={},this._encodings={},this._activeProtocol="",this._activeEncoding="",this._lastEvent=null,this._onProtocolChange=this.register(new o.EventEmitter),this.onProtocolChange=this._onProtocolChange.event;for(const e of Object.keys(h))this.addProtocol(e,h[e]);for(const e of Object.keys(d))this.addEncoding(e,d[e]);this.reset()}addProtocol(e,t){this._protocols[e]=t}addEncoding(e,t){this._encodings[e]=t}get activeProtocol(){return this._activeProtocol}get areMouseEventsActive(){return 0!==this._protocols[this._activeProtocol].events}set activeProtocol(e){if(!this._protocols[e])throw new Error(`unknown protocol "${e}"`);this._activeProtocol=e,this._onProtocolChange.fire(this._protocols[e].events)}get activeEncoding(){return this._activeEncoding}set activeEncoding(e){if(!this._encodings[e])throw new Error(`unknown encoding "${e}"`);this._activeEncoding=e}reset(){this.activeProtocol="NONE",this.activeEncoding="DEFAULT",this._lastEvent=null}triggerMouseEvent(e){if(e.col<0||e.col>=this._bufferService.cols||e.row<0||e.row>=this._bufferService.rows)return!1;if(4===e.button&&32===e.action)return!1;if(3===e.button&&32!==e.action)return!1;if(4!==e.button&&(2===e.action||3===e.action))return!1;if(e.col++,e.row++,32===e.action&&this._lastEvent&&this._equalEvents(this._lastEvent,e,"SGR_PIXELS"===this._activeEncoding))return!1;if(!this._protocols[this._activeProtocol].restrict(e))return!1;const t=this._encodings[this._activeEncoding](e);return t&&("DEFAULT"===this._activeEncoding?this._coreService.triggerBinaryEvent(t):this._coreService.triggerDataEvent(t,!0)),this._lastEvent=e,!0}explainEvents(e){return{down:!!(1&e),up:!!(2&e),drag:!!(4&e),move:!!(8&e),wheel:!!(16&e)}}_equalEvents(e,t,i){if(i){if(e.x!==t.x)return!1;if(e.y!==t.y)return!1}else{if(e.col!==t.col)return!1;if(e.row!==t.row)return!1}return e.button===t.button&&e.action===t.action&&e.ctrl===t.ctrl&&e.alt===t.alt&&e.shift===t.shift}};t.CoreMouseService=_=s([r(0,n.IBufferService),r(1,n.ICoreService)],_)},6975:function(e,t,i){var s=this&&this.__decorate||function(e,t,i,s){var r,n=arguments.length,o=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,i):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,s);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(n<3?r(o):n>3?r(t,i,o):r(t,i))||o);return n>3&&o&&Object.defineProperty(t,i,o),o},r=this&&this.__param||function(e,t){return function(i,s){t(i,s,e)}};Object.defineProperty(t,"__esModule",{value:!0}),t.CoreService=void 0;const n=i(1439),o=i(8460),a=i(844),h=i(2585),c=Object.freeze({insertMode:!1}),l=Object.freeze({applicationCursorKeys:!1,applicationKeypad:!1,bracketedPasteMode:!1,origin:!1,reverseWraparound:!1,sendFocus:!1,wraparound:!0});let d=t.CoreService=class extends a.Disposable{constructor(e,t,i){super(),this._bufferService=e,this._logService=t,this._optionsService=i,this.isCursorInitialized=!1,this.isCursorHidden=!1,this._onData=this.register(new o.EventEmitter),this.onData=this._onData.event,this._onUserInput=this.register(new o.EventEmitter),this.onUserInput=this._onUserInput.event,this._onBinary=this.register(new o.EventEmitter),this.onBinary=this._onBinary.event,this._onRequestScrollToBottom=this.register(new o.EventEmitter),this.onRequestScrollToBottom=this._onRequestScrollToBottom.event,this.modes=(0,n.clone)(c),this.decPrivateModes=(0,n.clone)(l)}reset(){this.modes=(0,n.clone)(c),this.decPrivateModes=(0,n.clone)(l)}triggerDataEvent(e,t=!1){if(this._optionsService.rawOptions.disableStdin)return;const i=this._bufferService.buffer;t&&this._optionsService.rawOptions.scrollOnUserInput&&i.ybase!==i.ydisp&&this._onRequestScrollToBottom.fire(),t&&this._onUserInput.fire(),this._logService.debug(`sending data "${e}"`,(()=>e.split("").map((e=>e.charCodeAt(0))))),this._onData.fire(e)}triggerBinaryEvent(e){this._optionsService.rawOptions.disableStdin||(this._logService.debug(`sending binary "${e}"`,(()=>e.split("").map((e=>e.charCodeAt(0))))),this._onBinary.fire(e))}};t.CoreService=d=s([r(0,h.IBufferService),r(1,h.ILogService),r(2,h.IOptionsService)],d)},9074:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.DecorationService=void 0;const s=i(8055),r=i(8460),n=i(844),o=i(6106);let a=0,h=0;class c extends n.Disposable{get decorations(){return this._decorations.values()}constructor(){super(),this._decorations=new o.SortedList((e=>null==e?void 0:e.marker.line)),this._onDecorationRegistered=this.register(new r.EventEmitter),this.onDecorationRegistered=this._onDecorationRegistered.event,this._onDecorationRemoved=this.register(new r.EventEmitter),this.onDecorationRemoved=this._onDecorationRemoved.event,this.register((0,n.toDisposable)((()=>this.reset())))}registerDecoration(e){if(e.marker.isDisposed)return;const t=new l(e);if(t){const e=t.marker.onDispose((()=>t.dispose()));t.onDispose((()=>{t&&(this._decorations.delete(t)&&this._onDecorationRemoved.fire(t),e.dispose())})),this._decorations.insert(t),this._onDecorationRegistered.fire(t)}return t}reset(){for(const e of this._decorations.values())e.dispose();this._decorations.clear()}*getDecorationsAtCell(e,t,i){var s,r,n;let o=0,a=0;for(const h of this._decorations.getKeyIterator(t))o=null!==(s=h.options.x)&&void 0!==s?s:0,a=o+(null!==(r=h.options.width)&&void 0!==r?r:1),e>=o&&e{var r,n,o;a=null!==(r=t.options.x)&&void 0!==r?r:0,h=a+(null!==(n=t.options.width)&&void 0!==n?n:1),e>=a&&e{Object.defineProperty(t,"__esModule",{value:!0}),t.InstantiationService=t.ServiceCollection=void 0;const s=i(2585),r=i(8343);class n{constructor(...e){this._entries=new Map;for(const[t,i]of e)this.set(t,i)}set(e,t){const i=this._entries.get(e);return this._entries.set(e,t),i}forEach(e){for(const[t,i]of this._entries.entries())e(t,i)}has(e){return this._entries.has(e)}get(e){return this._entries.get(e)}}t.ServiceCollection=n,t.InstantiationService=class{constructor(){this._services=new n,this._services.set(s.IInstantiationService,this)}setService(e,t){this._services.set(e,t)}getService(e){return this._services.get(e)}createInstance(e,...t){const i=(0,r.getServiceDependencies)(e).sort(((e,t)=>e.index-t.index)),s=[];for(const t of i){const i=this._services.get(t.id);if(!i)throw new Error(`[createInstance] ${e.name} depends on UNKNOWN service ${t.id}.`);s.push(i)}const n=i.length>0?i[0].index:t.length;if(t.length!==n)throw new Error(`[createInstance] First service dependency of ${e.name} at position ${n+1} conflicts with ${t.length} static arguments`);return new e(...[...t,...s])}}},7866:function(e,t,i){var s=this&&this.__decorate||function(e,t,i,s){var r,n=arguments.length,o=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,i):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,s);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(n<3?r(o):n>3?r(t,i,o):r(t,i))||o);return n>3&&o&&Object.defineProperty(t,i,o),o},r=this&&this.__param||function(e,t){return function(i,s){t(i,s,e)}};Object.defineProperty(t,"__esModule",{value:!0}),t.traceCall=t.setTraceLogger=t.LogService=void 0;const n=i(844),o=i(2585),a={trace:o.LogLevelEnum.TRACE,debug:o.LogLevelEnum.DEBUG,info:o.LogLevelEnum.INFO,warn:o.LogLevelEnum.WARN,error:o.LogLevelEnum.ERROR,off:o.LogLevelEnum.OFF};let h,c=t.LogService=class extends n.Disposable{get logLevel(){return this._logLevel}constructor(e){super(),this._optionsService=e,this._logLevel=o.LogLevelEnum.OFF,this._updateLogLevel(),this.register(this._optionsService.onSpecificOptionChange("logLevel",(()=>this._updateLogLevel()))),h=this}_updateLogLevel(){this._logLevel=a[this._optionsService.rawOptions.logLevel]}_evalLazyOptionalParams(e){for(let t=0;tJSON.stringify(e))).join(", ")})`);const t=s.apply(this,e);return h.trace(`GlyphRenderer#${s.name} return`,t),t}}},7302:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.OptionsService=t.DEFAULT_OPTIONS=void 0;const s=i(8460),r=i(844),n=i(6114);t.DEFAULT_OPTIONS={cols:80,rows:24,cursorBlink:!1,cursorStyle:"block",cursorWidth:1,cursorInactiveStyle:"outline",customGlyphs:!0,drawBoldTextInBrightColors:!0,fastScrollModifier:"alt",fastScrollSensitivity:5,fontFamily:"courier-new, courier, monospace",fontSize:15,fontWeight:"normal",fontWeightBold:"bold",ignoreBracketedPasteMode:!1,lineHeight:1,letterSpacing:0,linkHandler:null,logLevel:"info",logger:null,scrollback:1e3,scrollOnUserInput:!0,scrollSensitivity:1,screenReaderMode:!1,smoothScrollDuration:0,macOptionIsMeta:!1,macOptionClickForcesSelection:!1,minimumContrastRatio:1,disableStdin:!1,allowProposedApi:!1,allowTransparency:!1,tabStopWidth:8,theme:{},rightClickSelectsWord:n.isMac,windowOptions:{},windowsMode:!1,windowsPty:{},wordSeparator:" ()[]{}',\"`",altClickMovesCursor:!0,convertEol:!1,termName:"xterm",cancelEvents:!1,overviewRulerWidth:0};const o=["normal","bold","100","200","300","400","500","600","700","800","900"];class a extends r.Disposable{constructor(e){super(),this._onOptionChange=this.register(new s.EventEmitter),this.onOptionChange=this._onOptionChange.event;const i=Object.assign({},t.DEFAULT_OPTIONS);for(const t in e)if(t in i)try{const s=e[t];i[t]=this._sanitizeAndValidateOption(t,s)}catch(e){console.error(e)}this.rawOptions=i,this.options=Object.assign({},i),this._setupOptions()}onSpecificOptionChange(e,t){return this.onOptionChange((i=>{i===e&&t(this.rawOptions[e])}))}onMultipleOptionChange(e,t){return this.onOptionChange((i=>{-1!==e.indexOf(i)&&t()}))}_setupOptions(){const e=e=>{if(!(e in t.DEFAULT_OPTIONS))throw new Error(`No option with key "${e}"`);return this.rawOptions[e]},i=(e,i)=>{if(!(e in t.DEFAULT_OPTIONS))throw new Error(`No option with key "${e}"`);i=this._sanitizeAndValidateOption(e,i),this.rawOptions[e]!==i&&(this.rawOptions[e]=i,this._onOptionChange.fire(e))};for(const t in this.rawOptions){const s={get:e.bind(this,t),set:i.bind(this,t)};Object.defineProperty(this.options,t,s)}}_sanitizeAndValidateOption(e,i){switch(e){case"cursorStyle":if(i||(i=t.DEFAULT_OPTIONS[e]),!function(e){return"block"===e||"underline"===e||"bar"===e}(i))throw new Error(`"${i}" is not a valid value for ${e}`);break;case"wordSeparator":i||(i=t.DEFAULT_OPTIONS[e]);break;case"fontWeight":case"fontWeightBold":if("number"==typeof i&&1<=i&&i<=1e3)break;i=o.includes(i)?i:t.DEFAULT_OPTIONS[e];break;case"cursorWidth":i=Math.floor(i);case"lineHeight":case"tabStopWidth":if(i<1)throw new Error(`${e} cannot be less than 1, value: ${i}`);break;case"minimumContrastRatio":i=Math.max(1,Math.min(21,Math.round(10*i)/10));break;case"scrollback":if((i=Math.min(i,4294967295))<0)throw new Error(`${e} cannot be less than 0, value: ${i}`);break;case"fastScrollSensitivity":case"scrollSensitivity":if(i<=0)throw new Error(`${e} cannot be less than or equal to 0, value: ${i}`);break;case"rows":case"cols":if(!i&&0!==i)throw new Error(`${e} must be numeric, value: ${i}`);break;case"windowsPty":i=null!=i?i:{}}return i}}t.OptionsService=a},2660:function(e,t,i){var s=this&&this.__decorate||function(e,t,i,s){var r,n=arguments.length,o=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,i):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,s);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(n<3?r(o):n>3?r(t,i,o):r(t,i))||o);return n>3&&o&&Object.defineProperty(t,i,o),o},r=this&&this.__param||function(e,t){return function(i,s){t(i,s,e)}};Object.defineProperty(t,"__esModule",{value:!0}),t.OscLinkService=void 0;const n=i(2585);let o=t.OscLinkService=class{constructor(e){this._bufferService=e,this._nextId=1,this._entriesWithId=new Map,this._dataByLinkId=new Map}registerLink(e){const t=this._bufferService.buffer;if(void 0===e.id){const i=t.addMarker(t.ybase+t.y),s={data:e,id:this._nextId++,lines:[i]};return i.onDispose((()=>this._removeMarkerFromLink(s,i))),this._dataByLinkId.set(s.id,s),s.id}const i=e,s=this._getEntryIdKey(i),r=this._entriesWithId.get(s);if(r)return this.addLineToLink(r.id,t.ybase+t.y),r.id;const n=t.addMarker(t.ybase+t.y),o={id:this._nextId++,key:this._getEntryIdKey(i),data:i,lines:[n]};return n.onDispose((()=>this._removeMarkerFromLink(o,n))),this._entriesWithId.set(o.key,o),this._dataByLinkId.set(o.id,o),o.id}addLineToLink(e,t){const i=this._dataByLinkId.get(e);if(i&&i.lines.every((e=>e.line!==t))){const e=this._bufferService.buffer.addMarker(t);i.lines.push(e),e.onDispose((()=>this._removeMarkerFromLink(i,e)))}}getLinkData(e){var t;return null===(t=this._dataByLinkId.get(e))||void 0===t?void 0:t.data}_getEntryIdKey(e){return`${e.id};;${e.uri}`}_removeMarkerFromLink(e,t){const i=e.lines.indexOf(t);-1!==i&&(e.lines.splice(i,1),0===e.lines.length&&(void 0!==e.data.id&&this._entriesWithId.delete(e.key),this._dataByLinkId.delete(e.id)))}};t.OscLinkService=o=s([r(0,n.IBufferService)],o)},8343:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.createDecorator=t.getServiceDependencies=t.serviceRegistry=void 0;const i="di$target",s="di$dependencies";t.serviceRegistry=new Map,t.getServiceDependencies=function(e){return e[s]||[]},t.createDecorator=function(e){if(t.serviceRegistry.has(e))return t.serviceRegistry.get(e);const r=function(e,t,n){if(3!==arguments.length)throw new Error("@IServiceName-decorator can only be used to decorate a parameter");!function(e,t,r){t[i]===t?t[s].push({id:e,index:r}):(t[s]=[{id:e,index:r}],t[i]=t)}(r,e,n)};return r.toString=()=>e,t.serviceRegistry.set(e,r),r}},2585:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.IDecorationService=t.IUnicodeService=t.IOscLinkService=t.IOptionsService=t.ILogService=t.LogLevelEnum=t.IInstantiationService=t.ICharsetService=t.ICoreService=t.ICoreMouseService=t.IBufferService=void 0;const s=i(8343);var r;t.IBufferService=(0,s.createDecorator)("BufferService"),t.ICoreMouseService=(0,s.createDecorator)("CoreMouseService"),t.ICoreService=(0,s.createDecorator)("CoreService"),t.ICharsetService=(0,s.createDecorator)("CharsetService"),t.IInstantiationService=(0,s.createDecorator)("InstantiationService"),function(e){e[e.TRACE=0]="TRACE",e[e.DEBUG=1]="DEBUG",e[e.INFO=2]="INFO",e[e.WARN=3]="WARN",e[e.ERROR=4]="ERROR",e[e.OFF=5]="OFF"}(r||(t.LogLevelEnum=r={})),t.ILogService=(0,s.createDecorator)("LogService"),t.IOptionsService=(0,s.createDecorator)("OptionsService"),t.IOscLinkService=(0,s.createDecorator)("OscLinkService"),t.IUnicodeService=(0,s.createDecorator)("UnicodeService"),t.IDecorationService=(0,s.createDecorator)("DecorationService")},1480:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.UnicodeService=void 0;const s=i(8460),r=i(225);t.UnicodeService=class{constructor(){this._providers=Object.create(null),this._active="",this._onChange=new s.EventEmitter,this.onChange=this._onChange.event;const e=new r.UnicodeV6;this.register(e),this._active=e.version,this._activeProvider=e}dispose(){this._onChange.dispose()}get versions(){return Object.keys(this._providers)}get activeVersion(){return this._active}set activeVersion(e){if(!this._providers[e])throw new Error(`unknown Unicode version "${e}"`);this._active=e,this._activeProvider=this._providers[e],this._onChange.fire(e)}register(e){this._providers[e.version]=e}wcwidth(e){return this._activeProvider.wcwidth(e)}getStringCellWidth(e){let t=0;const i=e.length;for(let s=0;s=i)return t+this.wcwidth(r);const n=e.charCodeAt(s);56320<=n&&n<=57343?r=1024*(r-55296)+n-56320+65536:t+=this.wcwidth(n)}t+=this.wcwidth(r)}return t}}}},t={};function i(s){var r=t[s];if(void 0!==r)return r.exports;var n=t[s]={exports:{}};return e[s].call(n.exports,n,n.exports,i),n.exports}var s={};return(()=>{var e=s;Object.defineProperty(e,"__esModule",{value:!0}),e.Terminal=void 0;const t=i(9042),r=i(3236),n=i(844),o=i(5741),a=i(8285),h=i(7975),c=i(7090),l=["cols","rows"];class d extends n.Disposable{constructor(e){super(),this._core=this.register(new r.Terminal(e)),this._addonManager=this.register(new o.AddonManager),this._publicOptions=Object.assign({},this._core.options);const t=e=>this._core.options[e],i=(e,t)=>{this._checkReadonlyOptions(e),this._core.options[e]=t};for(const e in this._core.options){const s={get:t.bind(this,e),set:i.bind(this,e)};Object.defineProperty(this._publicOptions,e,s)}}_checkReadonlyOptions(e){if(l.includes(e))throw new Error(`Option "${e}" can only be set in the constructor`)}_checkProposedApi(){if(!this._core.optionsService.rawOptions.allowProposedApi)throw new Error("You must set the allowProposedApi option to true to use proposed API")}get onBell(){return this._core.onBell}get onBinary(){return this._core.onBinary}get onCursorMove(){return this._core.onCursorMove}get onData(){return this._core.onData}get onKey(){return this._core.onKey}get onLineFeed(){return this._core.onLineFeed}get onRender(){return this._core.onRender}get onResize(){return this._core.onResize}get onScroll(){return this._core.onScroll}get onSelectionChange(){return this._core.onSelectionChange}get onTitleChange(){return this._core.onTitleChange}get onWriteParsed(){return this._core.onWriteParsed}get element(){return this._core.element}get parser(){return this._parser||(this._parser=new h.ParserApi(this._core)),this._parser}get unicode(){return this._checkProposedApi(),new c.UnicodeApi(this._core)}get textarea(){return this._core.textarea}get rows(){return this._core.rows}get cols(){return this._core.cols}get buffer(){return this._buffer||(this._buffer=this.register(new a.BufferNamespaceApi(this._core))),this._buffer}get markers(){return this._checkProposedApi(),this._core.markers}get modes(){const e=this._core.coreService.decPrivateModes;let t="none";switch(this._core.coreMouseService.activeProtocol){case"X10":t="x10";break;case"VT200":t="vt200";break;case"DRAG":t="drag";break;case"ANY":t="any"}return{applicationCursorKeysMode:e.applicationCursorKeys,applicationKeypadMode:e.applicationKeypad,bracketedPasteMode:e.bracketedPasteMode,insertMode:this._core.coreService.modes.insertMode,mouseTrackingMode:t,originMode:e.origin,reverseWraparoundMode:e.reverseWraparound,sendFocusMode:e.sendFocus,wraparoundMode:e.wraparound}}get options(){return this._publicOptions}set options(e){for(const t in e)this._publicOptions[t]=e[t]}blur(){this._core.blur()}focus(){this._core.focus()}resize(e,t){this._verifyIntegers(e,t),this._core.resize(e,t)}open(e){this._core.open(e)}attachCustomKeyEventHandler(e){this._core.attachCustomKeyEventHandler(e)}registerLinkProvider(e){return this._core.registerLinkProvider(e)}registerCharacterJoiner(e){return this._checkProposedApi(),this._core.registerCharacterJoiner(e)}deregisterCharacterJoiner(e){this._checkProposedApi(),this._core.deregisterCharacterJoiner(e)}registerMarker(e=0){return this._verifyIntegers(e),this._core.registerMarker(e)}registerDecoration(e){var t,i,s;return this._checkProposedApi(),this._verifyPositiveIntegers(null!==(t=e.x)&&void 0!==t?t:0,null!==(i=e.width)&&void 0!==i?i:0,null!==(s=e.height)&&void 0!==s?s:0),this._core.registerDecoration(e)}hasSelection(){return this._core.hasSelection()}select(e,t,i){this._verifyIntegers(e,t,i),this._core.select(e,t,i)}getSelection(){return this._core.getSelection()}getSelectionPosition(){return this._core.getSelectionPosition()}clearSelection(){this._core.clearSelection()}selectAll(){this._core.selectAll()}selectLines(e,t){this._verifyIntegers(e,t),this._core.selectLines(e,t)}dispose(){super.dispose()}scrollLines(e){this._verifyIntegers(e),this._core.scrollLines(e)}scrollPages(e){this._verifyIntegers(e),this._core.scrollPages(e)}scrollToTop(){this._core.scrollToTop()}scrollToBottom(){this._core.scrollToBottom()}scrollToLine(e){this._verifyIntegers(e),this._core.scrollToLine(e)}clear(){this._core.clear()}write(e,t){this._core.write(e,t)}writeln(e,t){this._core.write(e),this._core.write("\r\n",t)}paste(e){this._core.paste(e)}refresh(e,t){this._verifyIntegers(e,t),this._core.refresh(e,t)}reset(){this._core.reset()}clearTextureAtlas(){this._core.clearTextureAtlas()}loadAddon(e){this._addonManager.loadAddon(this,e)}static get strings(){return t}_verifyIntegers(...e){for(const t of e)if(t===1/0||isNaN(t)||t%1!=0)throw new Error("This API only accepts integers")}_verifyPositiveIntegers(...e){for(const t of e)if(t&&(t===1/0||isNaN(t)||t%1!=0||t<0))throw new Error("This API only accepts positive integers")}}e.Terminal=d})(),s})(),e.exports=t()}},t={};function i(s){var r=t[s];if(void 0!==r)return r.exports;var n=t[s]={exports:{}};return e[s](n,n.exports,i),n.exports}(()=>{"use strict";var e=i(320),t=function(){function t(){var e=this;this._ASSEMBLY_NAME="XtermBlazor",this._terminals=new Map,this._addonList=new Map,this.getRows=function(t){return e.getTerminalById(t).terminal.rows},this.getCols=function(t){return e.getTerminalById(t).terminal.cols},this.getOptions=function(t){return e.getTerminalById(t).terminal.options},this.setOptions=function(t,i){return e.getTerminalById(t).terminal.options=i},this.blur=function(t){return e.getTerminalById(t).terminal.blur()},this.focus=function(t){return e.getTerminalById(t).terminal.focus()},this.resize=function(t,i,s){return e.getTerminalById(t).terminal.resize(i,s)},this.hasSelection=function(t){return e.getTerminalById(t).terminal.hasSelection()},this.getSelection=function(t){return e.getTerminalById(t).terminal.getSelection()},this.getSelectionPosition=function(t){return e.getTerminalById(t).terminal.getSelectionPosition()},this.clearSelection=function(t){return e.getTerminalById(t).terminal.clearSelection()},this.select=function(t,i,s,r){return e.getTerminalById(t).terminal.select(i,s,r)},this.selectAll=function(t){return e.getTerminalById(t).terminal.selectAll()},this.selectLines=function(t,i,s){return e.getTerminalById(t).terminal.selectLines(i,s)},this.scrollLines=function(t,i){return e.getTerminalById(t).terminal.scrollLines(i)},this.scrollPages=function(t,i){return e.getTerminalById(t).terminal.scrollPages(i)},this.scrollToTop=function(t){return e.getTerminalById(t).terminal.scrollToTop()},this.scrollToBottom=function(t){return e.getTerminalById(t).terminal.scrollToBottom()},this.scrollToLine=function(t,i){return e.getTerminalById(t).terminal.scrollToLine(i)},this.clear=function(t){return e.getTerminalById(t).terminal.clear()},this.write=function(t,i){return e.getTerminalById(t).terminal.write(i)},this.writeln=function(t,i){return e.getTerminalById(t).terminal.writeln(i)},this.paste=function(t,i){return e.getTerminalById(t).terminal.paste(i)},this.refresh=function(t,i,s){return e.getTerminalById(t).terminal.refresh(i,s)},this.reset=function(t){return e.getTerminalById(t).terminal.reset()}}return t.prototype.registerTerminal=function(t,i,s,r){var n=this,o=new e.Terminal(s);o.onBinary((function(e){return DotNet.invokeMethodAsync(n._ASSEMBLY_NAME,"OnBinary",t,e)})),o.onCursorMove((function(){return DotNet.invokeMethodAsync(n._ASSEMBLY_NAME,"OnCursorMove",t)})),o.onData((function(e){return DotNet.invokeMethodAsync(n._ASSEMBLY_NAME,"OnData",t,e)})),o.onKey((function(e){return DotNet.invokeMethodAsync(n._ASSEMBLY_NAME,"OnKey",t,n.convertToArgs(e.domEvent))})),o.onLineFeed((function(){return DotNet.invokeMethodAsync(n._ASSEMBLY_NAME,"OnLineFeed",t)})),o.onScroll((function(e){return DotNet.invokeMethodAsync(n._ASSEMBLY_NAME,"OnScroll",t,e)})),o.onSelectionChange((function(){return DotNet.invokeMethodAsync(n._ASSEMBLY_NAME,"OnSelectionChange",t)})),o.onRender((function(e){return DotNet.invokeMethodAsync(n._ASSEMBLY_NAME,"OnRender",t,e)})),o.onResize((function(e){return DotNet.invokeMethodAsync(n._ASSEMBLY_NAME,"OnResize",t,{columns:e.cols,rows:e.rows})})),o.onTitleChange((function(e){return DotNet.invokeMethodAsync(n._ASSEMBLY_NAME,"OnTitleChange",t,e)})),o.onBell((function(){return DotNet.invokeMethodAsync(n._ASSEMBLY_NAME,"OnBell",t)})),o.attachCustomKeyEventHandler((function(e){var i,s;try{return DotNet.invokeMethod(n._ASSEMBLY_NAME,"AttachCustomKeyEventHandler",t,n.convertToArgs(e))}catch(r){return DotNet.invokeMethodAsync(n._ASSEMBLY_NAME,"AttachCustomKeyEventHandler",t,n.convertToArgs(e)),null===(s=null===(i=n.getTerminalById(t).customKeyEventHandler)||void 0===i?void 0:i.call(e))||void 0===s||s}}));var a=new Map;r.forEach((function(e){var t=Object.assign(Object.create(Object.getPrototypeOf(n._addonList.get(e))),n._addonList.get(e));o.loadAddon(t),a.set(e,t)})),o.open(i),this._terminals.set(t,{terminal:o,addons:a,customKeyEventHandler:void 0}),DotNet.invokeMethodAsync(this._ASSEMBLY_NAME,"OnFirstRender",t)},t.prototype.registerAddon=function(e,t){this._addonList.set(e,t)},t.prototype.registerAddons=function(e){var t=this;Object.keys(e).forEach((function(i){return t.registerAddon(i,e[i])}))},t.prototype.disposeTerminal=function(e){var t;null===(t=this._terminals.get(e))||void 0===t||t.terminal.dispose(),this._terminals.delete(e)},t.prototype.invokeAddonFunction=function(e,t,i){var s;return(s=this.getTerminalById(e).addons.get(t))[i].apply(s,arguments[3])},t.prototype.getTerminalById=function(e){var t=this._terminals.get(e);if(!t)throw new Error("Fail to get terminal by reference id");return t},t.prototype.convertToArgs=function(e){return{key:e.key,code:e.code,location:e.location,repeat:e.repeat,ctrlKey:e.ctrlKey,shiftKey:e.shiftKey,altKey:e.altKey,metaKey:e.metaKey,type:e.type}},t}();window.XtermBlazor=new t})()})(); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,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LEtBQUtuVCxFQUFFcXVDLFNBQVNnTSxFQUFFLENBQUMsSUFBSSxJQUFJLElBQUksSUFBSSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxLQUFLcjZDLEVBQUVxdUMsU0FBU2xjLEVBQUUsQ0FBQyxJQUFJLElBQUksSUFBSSxJQUFJLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxLQUFLbnlCLEVBQUVxdUMsU0FBU2lNLEVBQUUsQ0FBQyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEtBQUt0NkMsRUFBRXF1QyxTQUFTdDdCLEVBQUUvUyxFQUFFcXVDLFNBQVMsR0FBRyxDQUFDLElBQUksSUFBSSxJQUFJLElBQUksS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksS0FBS3J1QyxFQUFFcXVDLFNBQVNrTSxFQUFFLENBQUMsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksS0FBS3Y2QyxFQUFFcXVDLFNBQVN0ZSxFQUFFL3ZCLEVBQUVxdUMsU0FBUyxHQUFHLENBQUMsSUFBSSxJQUFJLElBQUksSUFBSSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxLQUFLcnVDLEVBQUVxdUMsU0FBUyxLQUFLLENBQUMsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUk1c0MsRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJ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QUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsTUFBTSxPQUFPLENBQUMsTUFBTSxPQUFPLENBQUMsTUFBTSxPQUFPLENBQUMsTUFBTSxPQUFPLENBQUMsTUFBTSxPQUFPLENBQUMsTUFBTSxPQUFPLENBQUMsTUFBTSxPQUFPLENBQUMsTUFBTSxPQUFPLENBQUMsTUFBTSxPQUFPLENBQUMsTUFBTSxRQUFRQyxFQUFFLENBQUMsQ0FBQyxNQUFNLE9BQU8sQ0FBQyxNQUFNLE9BQU8sQ0FBQyxNQUFNLE9BQU8sQ0FBQyxNQUFNLE9BQU8sQ0FBQyxNQUFNLE9BQU8sQ0FBQyxPQUFPLFFBQVEsQ0FBQyxPQUFPLFFBQVEsQ0FBQyxPQUFPLFFBQVEsQ0FBQyxPQUFPLFFBQVEsQ0FBQyxPQUFPLFFBQVEsQ0FBQyxPQUFPLFFBQVEsQ0FBQyxPQUFPLFFBQVEsQ0FBQyxPQUFPLFNBQVMsSUFBSUcsRUFBRVAsRUFBRWcrQyxVQUFVLE1BQU0sV0FBQXI4QyxHQUFjLEdBQUd0QixLQUFLNDlDLFFBQVEsS0FBSzE5QyxFQUFFLENBQUNBLEVBQUUsSUFBSXc5QyxXQUFXLE9BQU94OUMsRUFBRTR6QixLQUFLLEdBQUc1ekIsRUFBRSxHQUFHLEVBQUVBLEVBQUU0ekIsS0FBSyxFQUFFLEVBQUUsSUFBSTV6QixFQUFFNHpCLEtBQUssRUFBRSxJQUFJLEtBQUs1ekIsRUFBRTR6QixLQUFLLEVBQUUsS0FBSyxNQUFNNXpCLEVBQUUsTUFBTSxFQUFFQSxFQUFFLE1BQU0sRUFBRUEsRUFBRTR6QixLQUFLLEVBQUUsTUFBTSxPQUFPNXpCLEVBQUUsT0FBTyxFQUFFQSxFQUFFNHpCLEtBQUssRUFBRSxNQUFNLE9BQU81ekIsRUFBRTR6QixLQUFLLEVBQUUsTUFBTSxPQUFPNXpCLEVBQUU0ekIsS0FBSyxFQUFFLE1BQU0sT0FBTzV6QixFQUFFNHpCLEtBQUssRUFBRSxNQUFNLE9BQU81ekIsRUFBRTR6QixLQUFLLEVBQUUsTUFBTSxPQUFPNXpCLEVBQUU0ekIsS0FBSyxFQUFFLE1BQU0sT0FBTyxJQUFJLElBQUlqMEIsRUFBRSxFQUFFQSxFQUFFQyxFQUFFTyxTQUFTUixFQUFFSyxFQUFFNHpCLEtBQUssRUFBRWgwQixFQUFFRCxHQUFHLEdBQUdDLEVBQUVELEdBQUcsR0FBRyxFQUFFLENBQUMsQ0FBQyxPQUFBMnZDLENBQVEzdkMsR0FBRyxPQUFPQSxFQUFFLEdBQUcsRUFBRUEsRUFBRSxJQUFJLEVBQUVBLEVBQUUsTUFBTUssRUFBRUwsR0FBRyxTQUFTQSxFQUFFRixHQUFHLElBQUlHLEVBQUVDLEVBQUUsRUFBRUcsRUFBRVAsRUFBRVUsT0FBTyxFQUFFLEdBQUdSLEVBQUVGLEVBQUUsR0FBRyxJQUFJRSxFQUFFRixFQUFFTyxHQUFHLEdBQUcsT0FBTSxFQUFHLEtBQUtBLEdBQUdILEdBQUcsR0FBR0QsRUFBRUMsRUFBRUcsR0FBRyxFQUFFTCxFQUFFRixFQUFFRyxHQUFHLEdBQUdDLEVBQUVELEVBQUUsTUFBTSxDQUFDLEtBQUtELEVBQUVGLEVBQUVHLEdBQUcsSUFBSSxPQUFNLEVBQUdJLEVBQUVKLEVBQUUsQ0FBQyxDQUFDLE9BQU0sQ0FBRSxDQUF6SixDQUEySkQsRUFBRUUsR0FBRyxFQUFFRixHQUFHLFFBQVFBLEdBQUcsUUFBUUEsR0FBRyxRQUFRQSxHQUFHLE9BQU8sRUFBRSxDQUFDLEVBQUMsRUFBRyxLQUFLLENBQUNBLEVBQUVGLEVBQUVHLEtBQUtTLE9BQU9LLGVBQWVqQixFQUFFLGFBQWEsQ0FBQ21CLE9BQU0sSUFBS25CLEVBQUU0aUMsaUJBQVksRUFBTyxNQUFNeGlDLEVBQUVELEVBQUUsTUFBTUksRUFBRUosRUFBRSxLQUFLLE1BQU1LLFVBQVVELEVBQUVtQixXQUFXLFdBQUFDLENBQVl6QixHQUFHMEIsUUFBUXZCLEtBQUs2OUMsUUFBUWgrQyxFQUFFRyxLQUFLa2lDLGFBQWEsR0FBR2xpQyxLQUFLODlDLFdBQVcsR0FBRzk5QyxLQUFLKzlDLGFBQWEsRUFBRS85QyxLQUFLZytDLGNBQWMsRUFBRWgrQyxLQUFLaStDLGdCQUFlLEVBQUdqK0MsS0FBS2srQyxXQUFXLEVBQUVsK0MsS0FBS20rQyxlQUFjLEVBQUduK0MsS0FBSytnQyxlQUFlL2dDLEtBQUsrQyxTQUFTLElBQUloRCxFQUFFc0ssY0FBY3JLLEtBQUtnaEMsY0FBY2hoQyxLQUFLK2dDLGVBQWV4MkIsS0FBSyxDQUFDLGVBQUE0M0IsR0FBa0JuaUMsS0FBS20rQyxlQUFjLENBQUUsQ0FBQyxTQUFBemIsQ0FBVTdpQyxFQUFFRixHQUFHLFFBQUcsSUFBU0EsR0FBR0ssS0FBS2srQyxXQUFXditDLEVBQUUsWUFBWUssS0FBS2srQyxXQUFXLEdBQUcsR0FBR2wrQyxLQUFLKzlDLGNBQWNsK0MsRUFBRVEsT0FBT0wsS0FBS2tpQyxhQUFhNThCLEtBQUt6RixHQUFHRyxLQUFLODlDLFdBQVd4NEMsVUFBSyxHQUFRdEYsS0FBS2srQyxhQUFhbCtDLEtBQUtpK0MsZUFBZSxPQUFPLElBQUluK0MsRUFBRSxJQUFJRSxLQUFLaStDLGdCQUFlLEVBQUduK0MsRUFBRUUsS0FBS2tpQyxhQUFhbjlCLFNBQVMsQ0FBQy9FLEtBQUs2OUMsUUFBUS85QyxHQUFHLE1BQU1ELEVBQUVHLEtBQUs4OUMsV0FBVy80QyxRQUFRbEYsR0FBR0EsR0FBRyxDQUFDRyxLQUFLKzlDLGFBQWEsRUFBRS85QyxLQUFLZytDLGNBQWMsV0FBV2grQyxLQUFLaStDLGdCQUFlLEVBQUdqK0MsS0FBS2srQyxXQUFXLENBQUMsQ0FBQyxLQUFBemIsQ0FBTTVpQyxFQUFFRixHQUFHLEdBQUdLLEtBQUsrOUMsYUFBYSxJQUFJLE1BQU0sSUFBSTM2QyxNQUFNLCtEQUErRCxJQUFJcEQsS0FBS2tpQyxhQUFhN2hDLE9BQU8sQ0FBQyxHQUFHTCxLQUFLZytDLGNBQWMsRUFBRWgrQyxLQUFLbStDLGNBQWMsT0FBT24rQyxLQUFLbStDLGVBQWMsRUFBR24rQyxLQUFLKzlDLGNBQWNsK0MsRUFBRVEsT0FBT0wsS0FBS2tpQyxhQUFhNThCLEtBQUt6RixHQUFHRyxLQUFLODlDLFdBQVd4NEMsS0FBSzNGLFFBQVFLLEtBQUtvK0MsY0FBY2g1QyxZQUFXLElBQUtwRixLQUFLbytDLGVBQWUsQ0FBQ3ArQyxLQUFLKzlDLGNBQWNsK0MsRUFBRVEsT0FBT0wsS0FBS2tpQyxhQUFhNThCLEtBQUt6RixHQUFHRyxLQUFLODlDLFdBQVd4NEMsS0FBSzNGLEVBQUUsQ0FBQyxXQUFBeStDLENBQVl2K0MsRUFBRSxFQUFFRixHQUFFLEdBQUksTUFBTUcsRUFBRUQsR0FBR3FqQixLQUFLQyxNQUFNLEtBQUtuakIsS0FBS2tpQyxhQUFhN2hDLE9BQU9MLEtBQUtnK0MsZUFBZSxDQUFDLE1BQU1uK0MsRUFBRUcsS0FBS2tpQyxhQUFhbGlDLEtBQUtnK0MsZUFBZWorQyxFQUFFQyxLQUFLNjlDLFFBQVFoK0MsRUFBRUYsR0FBRyxHQUFHSSxFQUFFLENBQUMsTUFBTUYsRUFBRUEsR0FBR3FqQixLQUFLQyxNQUFNcmpCLEdBQUcsR0FBR3NGLFlBQVcsSUFBS3BGLEtBQUtvK0MsWUFBWSxFQUFFditDLEtBQUtHLEtBQUtvK0MsWUFBWXQrQyxFQUFFRCxHQUFHLFlBQVlFLEVBQUUydUMsT0FBTzd1QyxJQUFJNDJCLGdCQUFlLEtBQU0sTUFBTTUyQixDQUFFLElBQUcydUMsUUFBUTZQLFNBQVEsTUFBT0MsS0FBS3orQyxFQUFFLENBQUMsTUFBTUssRUFBRUYsS0FBSzg5QyxXQUFXOTlDLEtBQUtnK0MsZUFBZSxHQUFHOTlDLEdBQUdBLElBQUlGLEtBQUtnK0MsZ0JBQWdCaCtDLEtBQUsrOUMsY0FBY2wrQyxFQUFFUSxPQUFPNmlCLEtBQUtDLE1BQU1yakIsR0FBRyxHQUFHLEtBQUssQ0FBQ0UsS0FBS2tpQyxhQUFhN2hDLE9BQU9MLEtBQUtnK0MsZUFBZWgrQyxLQUFLZytDLGNBQWMsS0FBS2grQyxLQUFLa2lDLGFBQWFsaUMsS0FBS2tpQyxhQUFhN0csTUFBTXI3QixLQUFLZytDLGVBQWVoK0MsS0FBSzg5QyxXQUFXOTlDLEtBQUs4OUMsV0FBV3ppQixNQUFNcjdCLEtBQUtnK0MsZUFBZWgrQyxLQUFLZytDLGNBQWMsR0FBRzU0QyxZQUFXLElBQUtwRixLQUFLbytDLGtCQUFrQnArQyxLQUFLa2lDLGFBQWE3aEMsT0FBTyxFQUFFTCxLQUFLODlDLFdBQVd6OUMsT0FBTyxFQUFFTCxLQUFLKzlDLGFBQWEsRUFBRS85QyxLQUFLZytDLGNBQWMsR0FBR2grQyxLQUFLK2dDLGVBQWUveUIsTUFBTSxFQUFFck8sRUFBRTRpQyxZQUFZcGlDLEdBQUcsS0FBSyxDQUFDTixFQUFFRixLQUFLWSxPQUFPSyxlQUFlakIsRUFBRSxhQUFhLENBQUNtQixPQUFNLElBQUtuQixFQUFFbVgsWUFBWW5YLEVBQUUyeUMsZ0JBQVcsRUFBTyxNQUFNeHlDLEVBQUUscUtBQXFLQyxFQUFFLGFBQWEsU0FBU0csRUFBRUwsRUFBRUYsR0FBRyxNQUFNRyxFQUFFRCxFQUFFNkYsU0FBUyxJQUFJM0YsRUFBRUQsRUFBRU8sT0FBTyxFQUFFLElBQUlQLEVBQUVBLEVBQUUsT0FBT0gsR0FBRyxLQUFLLEVBQUUsT0FBT0csRUFBRSxHQUFHLEtBQUssRUFBRSxPQUFPQyxFQUFFLEtBQUssR0FBRyxPQUFPQSxFQUFFQSxHQUFHczdCLE1BQU0sRUFBRSxHQUFHLFFBQVEsT0FBT3Q3QixFQUFFQSxFQUFFLENBQUNKLEVBQUUyeUMsV0FBVyxTQUFTenlDLEdBQUcsSUFBSUEsRUFBRSxPQUFPLElBQUlGLEVBQUVFLEVBQUV5OUMsY0FBYyxHQUFHLElBQUkzOUMsRUFBRW1MLFFBQVEsUUFBUSxDQUFDbkwsRUFBRUEsRUFBRTA3QixNQUFNLEdBQUcsTUFBTXg3QixFQUFFQyxFQUFFdXlDLEtBQUsxeUMsR0FBRyxHQUFHRSxFQUFFLENBQUMsTUFBTUYsRUFBRUUsRUFBRSxHQUFHLEdBQUdBLEVBQUUsR0FBRyxJQUFJQSxFQUFFLEdBQUcsS0FBSyxNQUFNLE1BQU0sQ0FBQ21SLEtBQUtrVSxNQUFNOEcsU0FBU25zQixFQUFFLElBQUlBLEVBQUUsSUFBSUEsRUFBRSxJQUFJQSxFQUFFLElBQUksSUFBSUYsRUFBRSxLQUFLcVIsS0FBS2tVLE1BQU04RyxTQUFTbnNCLEVBQUUsSUFBSUEsRUFBRSxJQUFJQSxFQUFFLElBQUlBLEVBQUUsSUFBSSxJQUFJRixFQUFFLEtBQUtxUixLQUFLa1UsTUFBTThHLFNBQVNuc0IsRUFBRSxJQUFJQSxFQUFFLElBQUlBLEVBQUUsSUFBSUEsRUFBRSxJQUFJLElBQUlGLEVBQUUsS0FBSyxDQUFDLE1BQU0sR0FBRyxJQUFJQSxFQUFFbUwsUUFBUSxPQUFPbkwsRUFBRUEsRUFBRTA3QixNQUFNLEdBQUd0N0IsRUFBRXN5QyxLQUFLMXlDLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxJQUFJOFAsU0FBUzlQLEVBQUVVLFNBQVMsQ0FBQyxNQUFNUixFQUFFRixFQUFFVSxPQUFPLEVBQUVQLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxJQUFJLElBQUlDLEVBQUUsRUFBRUEsRUFBRSxJQUFJQSxFQUFFLENBQUMsTUFBTUcsRUFBRThyQixTQUFTcnNCLEVBQUUwN0IsTUFBTXg3QixFQUFFRSxFQUFFRixFQUFFRSxFQUFFRixHQUFHLElBQUlDLEVBQUVDLEdBQUcsSUFBSUYsRUFBRUssR0FBRyxFQUFFLElBQUlMLEVBQUVLLEVBQUUsSUFBSUwsRUFBRUssR0FBRyxFQUFFQSxHQUFHLENBQUMsQ0FBQyxPQUFPSixDQUFDLENBQUMsRUFBRUgsRUFBRW1YLFlBQVksU0FBU2pYLEVBQUVGLEVBQUUsSUFBSSxNQUFNRyxFQUFFQyxFQUFFSSxHQUFHTixFQUFFLE1BQU0sT0FBT0ssRUFBRUosRUFBRUgsTUFBTU8sRUFBRUgsRUFBRUosTUFBTU8sRUFBRUMsRUFBRVIsSUFBSSxHQUFHLEtBQUssQ0FBQ0UsRUFBRUYsS0FBS1ksT0FBT0ssZUFBZWpCLEVBQUUsYUFBYSxDQUFDbUIsT0FBTSxJQUFLbkIsRUFBRTQrQyxtQkFBYyxFQUFPNStDLEVBQUU0K0MsY0FBYyxLQUFLLEtBQUssQ0FBQzErQyxFQUFFRixFQUFFRyxLQUFLUyxPQUFPSyxlQUFlakIsRUFBRSxhQUFhLENBQUNtQixPQUFNLElBQUtuQixFQUFFeXVDLFdBQVd6dUMsRUFBRTYrQyxlQUFVLEVBQU8sTUFBTXorQyxFQUFFRCxFQUFFLEtBQUtJLEVBQUVKLEVBQUUsTUFBTUssRUFBRUwsRUFBRSxNQUFNUSxFQUFFLEdBQUdYLEVBQUU2K0MsVUFBVSxNQUFNLFdBQUFsOUMsR0FBY3RCLEtBQUt5K0MsVUFBVWwrQyxPQUFPbStDLE9BQU8sTUFBTTErQyxLQUFLMitDLFFBQVFyK0MsRUFBRU4sS0FBSzQrQyxPQUFPLEVBQUU1K0MsS0FBSzYrQyxXQUFXLE9BQU83K0MsS0FBSzgrQyxPQUFPLENBQUMxWCxRQUFPLEVBQUcyWCxhQUFhLEVBQUVDLGFBQVksRUFBRyxDQUFDLE9BQUF0MUMsR0FBVTFKLEtBQUt5K0MsVUFBVWwrQyxPQUFPbStDLE9BQU8sTUFBTTErQyxLQUFLNitDLFdBQVcsT0FBTzcrQyxLQUFLMitDLFFBQVFyK0MsQ0FBQyxDQUFDLGVBQUEyK0MsQ0FBZ0JwL0MsRUFBRUYsUUFBRyxJQUFTSyxLQUFLeStDLFVBQVU1K0MsS0FBS0csS0FBS3krQyxVQUFVNStDLEdBQUcsSUFBSSxNQUFNQyxFQUFFRSxLQUFLeStDLFVBQVU1K0MsR0FBRyxPQUFPQyxFQUFFd0YsS0FBSzNGLEdBQUcsQ0FBQytKLFFBQVEsS0FBSyxNQUFNN0osRUFBRUMsRUFBRWdMLFFBQVFuTCxJQUFJLElBQUlFLEdBQUdDLEVBQUVpTCxPQUFPbEwsRUFBRSxFQUFDLEVBQUcsQ0FBQyxZQUFBcS9DLENBQWFyL0MsR0FBR0csS0FBS3krQyxVQUFVNStDLFdBQVdHLEtBQUt5K0MsVUFBVTUrQyxFQUFFLENBQUMsa0JBQUFzL0MsQ0FBbUJ0L0MsR0FBR0csS0FBSzYrQyxXQUFXaC9DLENBQUMsQ0FBQyxLQUFBK1YsR0FBUSxHQUFHNVYsS0FBSzIrQyxRQUFRdCtDLE9BQU8sSUFBSSxJQUFJUixFQUFFRyxLQUFLOCtDLE9BQU8xWCxPQUFPcG5DLEtBQUs4K0MsT0FBT0MsYUFBYSxFQUFFLytDLEtBQUsyK0MsUUFBUXQrQyxPQUFPLEVBQUVSLEdBQUcsSUFBSUEsRUFBRUcsS0FBSzIrQyxRQUFROStDLEdBQUd1L0MsUUFBTyxHQUFJcC9DLEtBQUs4K0MsT0FBTzFYLFFBQU8sRUFBR3BuQyxLQUFLMitDLFFBQVFyK0MsRUFBRU4sS0FBSzQrQyxPQUFPLENBQUMsQ0FBQyxJQUFBUyxDQUFLeC9DLEVBQUVGLEdBQUcsR0FBR0ssS0FBSzRWLFFBQVE1VixLQUFLNCtDLE9BQU8vK0MsRUFBRUcsS0FBSzIrQyxRQUFRMytDLEtBQUt5K0MsVUFBVTUrQyxJQUFJUyxFQUFFTixLQUFLMitDLFFBQVF0K0MsT0FBTyxJQUFJLElBQUlSLEVBQUVHLEtBQUsyK0MsUUFBUXQrQyxPQUFPLEVBQUVSLEdBQUcsRUFBRUEsSUFBSUcsS0FBSzIrQyxRQUFROStDLEdBQUd3L0MsS0FBSzEvQyxRQUFRSyxLQUFLNitDLFdBQVc3K0MsS0FBSzQrQyxPQUFPLE9BQU9qL0MsRUFBRSxDQUFDLEdBQUEyL0MsQ0FBSXovQyxFQUFFRixFQUFFRyxHQUFHLEdBQUdFLEtBQUsyK0MsUUFBUXQrQyxPQUFPLElBQUksSUFBSU4sRUFBRUMsS0FBSzIrQyxRQUFRdCtDLE9BQU8sRUFBRU4sR0FBRyxFQUFFQSxJQUFJQyxLQUFLMitDLFFBQVE1K0MsR0FBR3UvQyxJQUFJei9DLEVBQUVGLEVBQUVHLFFBQVFFLEtBQUs2K0MsV0FBVzcrQyxLQUFLNCtDLE9BQU8sT0FBTSxFQUFHNytDLEVBQUV3OUMsZUFBZTE5QyxFQUFFRixFQUFFRyxHQUFHLENBQUMsTUFBQXMvQyxDQUFPdi9DLEVBQUVGLEdBQUUsR0FBSSxHQUFHSyxLQUFLMitDLFFBQVF0K0MsT0FBTyxDQUFDLElBQUlQLEdBQUUsRUFBR0MsRUFBRUMsS0FBSzIrQyxRQUFRdCtDLE9BQU8sRUFBRUgsR0FBRSxFQUFHLEdBQUdGLEtBQUs4K0MsT0FBTzFYLFNBQVNybkMsRUFBRUMsS0FBSzgrQyxPQUFPQyxhQUFhLEVBQUVqL0MsRUFBRUgsRUFBRU8sRUFBRUYsS0FBSzgrQyxPQUFPRSxZQUFZaC9DLEtBQUs4K0MsT0FBTzFYLFFBQU8sSUFBS2xuQyxJQUFHLElBQUtKLEVBQUUsQ0FBQyxLQUFLQyxHQUFHLElBQUlELEVBQUVFLEtBQUsyK0MsUUFBUTUrQyxHQUFHcS9DLE9BQU92L0MsSUFBRyxJQUFLQyxHQUFHQyxJQUFJLEdBQUdELGFBQWEwdUMsUUFBUSxPQUFPeHVDLEtBQUs4K0MsT0FBTzFYLFFBQU8sRUFBR3BuQyxLQUFLOCtDLE9BQU9DLGFBQWFoL0MsRUFBRUMsS0FBSzgrQyxPQUFPRSxhQUFZLEVBQUdsL0MsRUFBRUMsR0FBRyxDQUFDLEtBQUtBLEdBQUcsRUFBRUEsSUFBSSxHQUFHRCxFQUFFRSxLQUFLMitDLFFBQVE1K0MsR0FBR3EvQyxRQUFPLEdBQUl0L0MsYUFBYTB1QyxRQUFRLE9BQU94dUMsS0FBSzgrQyxPQUFPMVgsUUFBTyxFQUFHcG5DLEtBQUs4K0MsT0FBT0MsYUFBYWgvQyxFQUFFQyxLQUFLOCtDLE9BQU9FLGFBQVksRUFBR2wvQyxDQUFDLE1BQU1FLEtBQUs2K0MsV0FBVzcrQyxLQUFLNCtDLE9BQU8sU0FBUy8rQyxHQUFHRyxLQUFLMitDLFFBQVFyK0MsRUFBRU4sS0FBSzQrQyxPQUFPLENBQUMsR0FBRyxNQUFNaitDLEVBQUUsSUFBSVQsRUFBRXEvQyxPQUFPNStDLEVBQUU2K0MsU0FBUyxHQUFHNy9DLEVBQUV5dUMsV0FBVyxNQUFNLFdBQUE5c0MsQ0FBWXpCLEdBQUdHLEtBQUt5L0MsU0FBUzUvQyxFQUFFRyxLQUFLcXpDLE1BQU0sR0FBR3J6QyxLQUFLMC9DLFFBQVEvK0MsRUFBRVgsS0FBSzIvQyxXQUFVLENBQUUsQ0FBQyxJQUFBTixDQUFLeC9DLEdBQUdHLEtBQUswL0MsUUFBUTcvQyxFQUFFUSxPQUFPLEdBQUdSLEVBQUVnb0MsT0FBTyxHQUFHaG9DLEVBQUV3L0IsUUFBUTErQixFQUFFWCxLQUFLcXpDLE1BQU0sR0FBR3J6QyxLQUFLMi9DLFdBQVUsQ0FBRSxDQUFDLEdBQUFMLENBQUl6L0MsRUFBRUYsRUFBRUcsR0FBR0UsS0FBSzIvQyxZQUFZMy9DLEtBQUtxekMsUUFBTyxFQUFHdHpDLEVBQUV3OUMsZUFBZTE5QyxFQUFFRixFQUFFRyxHQUFHRSxLQUFLcXpDLE1BQU1oekMsT0FBT0YsRUFBRW8rQyxnQkFBZ0J2K0MsS0FBS3F6QyxNQUFNLEdBQUdyekMsS0FBSzIvQyxXQUFVLEdBQUksQ0FBQyxNQUFBUCxDQUFPdi9DLEdBQUcsSUFBSUYsR0FBRSxFQUFHLEdBQUdLLEtBQUsyL0MsVUFBVWhnRCxHQUFFLE9BQVEsR0FBR0UsSUFBSUYsRUFBRUssS0FBS3kvQyxTQUFTei9DLEtBQUtxekMsTUFBTXJ6QyxLQUFLMC9DLFNBQVMvL0MsYUFBYTZ1QyxTQUFTLE9BQU83dUMsRUFBRTIrQyxNQUFNeitDLElBQUlHLEtBQUswL0MsUUFBUS8rQyxFQUFFWCxLQUFLcXpDLE1BQU0sR0FBR3J6QyxLQUFLMi9DLFdBQVUsRUFBRzkvQyxLQUFLLE9BQU9HLEtBQUswL0MsUUFBUS8rQyxFQUFFWCxLQUFLcXpDLE1BQU0sR0FBR3J6QyxLQUFLMi9DLFdBQVUsRUFBR2hnRCxDQUFDLEVBQUMsRUFBRyxLQUFLLENBQUNFLEVBQUVGLEVBQUVHLEtBQUtTLE9BQU9LLGVBQWVqQixFQUFFLGFBQWEsQ0FBQ21CLE9BQU0sSUFBS25CLEVBQUVnbUMscUJBQXFCaG1DLEVBQUVpZ0QsdUJBQXVCamdELEVBQUVrZ0QscUJBQWdCLEVBQU8sTUFBTTkvQyxFQUFFRCxFQUFFLEtBQUtJLEVBQUVKLEVBQUUsTUFBTUssRUFBRUwsRUFBRSxNQUFNUSxFQUFFUixFQUFFLE1BQU0sTUFBTWEsRUFBRSxXQUFBVyxDQUFZekIsR0FBR0csS0FBSzgvQyxNQUFNLElBQUlwQyxXQUFXNzlDLEVBQUUsQ0FBQyxVQUFBa2dELENBQVdsZ0QsRUFBRUYsR0FBR0ssS0FBSzgvQyxNQUFNaHNCLEtBQUtqMEIsR0FBRyxFQUFFRixFQUFFLENBQUMsR0FBQXNDLENBQUlwQyxFQUFFRixFQUFFRyxFQUFFQyxHQUFHQyxLQUFLOC9DLE1BQU1uZ0QsR0FBRyxFQUFFRSxHQUFHQyxHQUFHLEVBQUVDLENBQUMsQ0FBQyxPQUFBaWdELENBQVFuZ0QsRUFBRUYsRUFBRUcsRUFBRUMsR0FBRyxJQUFJLElBQUlHLEVBQUUsRUFBRUEsRUFBRUwsRUFBRVEsT0FBT0gsSUFBSUYsS0FBSzgvQyxNQUFNbmdELEdBQUcsRUFBRUUsRUFBRUssSUFBSUosR0FBRyxFQUFFQyxDQUFDLEVBQUVKLEVBQUVrZ0QsZ0JBQWdCbC9DLEVBQUUsTUFBTUssRUFBRSxJQUFJckIsRUFBRWlnRCx1QkFBdUIsV0FBVyxNQUFNLy9DLEVBQUUsSUFBSWMsRUFBRSxNQUFNaEIsRUFBRWkvQixNQUFNcWhCLE1BQU0sS0FBS3JoQixNQUFNLE1BQU10eUIsS0FBSSxDQUFFek0sRUFBRUYsSUFBSUEsSUFBSUcsRUFBRSxDQUFDRCxFQUFFQyxJQUFJSCxFQUFFMDdCLE1BQU14N0IsRUFBRUMsR0FBR0MsRUFBRUQsRUFBRSxHQUFHLEtBQUtJLEVBQUVKLEVBQUUsRUFBRSxJQUFJSSxFQUFFb0YsS0FBSyxJQUFJcEYsRUFBRW9GLEtBQUsyNkMsTUFBTS8vQyxFQUFFSixFQUFFLEdBQUcsS0FBSyxNQUFNSyxFQUFFTCxFQUFFLEVBQUUsSUFBSSxJQUFJUSxFQUFFLElBQUlBLEtBQUtULEVBQUVrZ0QsV0FBVyxFQUFFLEdBQUdsZ0QsRUFBRW1nRCxRQUFRamdELEVBQUUsRUFBRSxFQUFFLEdBQUdJLEVBQUVOLEVBQUVtZ0QsUUFBUSxDQUFDLEdBQUcsR0FBRyxJQUFJLEtBQUsxL0MsRUFBRSxFQUFFLEdBQUdULEVBQUVtZ0QsUUFBUWxnRCxFQUFFLElBQUksS0FBS1EsRUFBRSxFQUFFLEdBQUdULEVBQUVtZ0QsUUFBUWxnRCxFQUFFLElBQUksS0FBS1EsRUFBRSxFQUFFLEdBQUdULEVBQUVvQyxJQUFJLElBQUkzQixFQUFFLEVBQUUsR0FBR1QsRUFBRW9DLElBQUksR0FBRzNCLEVBQUUsR0FBRyxHQUFHVCxFQUFFb0MsSUFBSSxJQUFJM0IsRUFBRSxFQUFFLEdBQUdULEVBQUVtZ0QsUUFBUSxDQUFDLElBQUksSUFBSSxLQUFLMS9DLEVBQUUsRUFBRSxHQUFHVCxFQUFFb0MsSUFBSSxJQUFJM0IsRUFBRSxHQUFHLEdBQUdULEVBQUVvQyxJQUFJLElBQUkzQixFQUFFLEdBQUcsR0FBRyxPQUFPVCxFQUFFbWdELFFBQVE5L0MsRUFBRSxFQUFFLEVBQUUsR0FBR0wsRUFBRW1nRCxRQUFROS9DLEVBQUUsRUFBRSxFQUFFLEdBQUdMLEVBQUVvQyxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUdwQyxFQUFFbWdELFFBQVE5L0MsRUFBRSxFQUFFLEVBQUUsR0FBR0wsRUFBRW1nRCxRQUFROS9DLEVBQUUsRUFBRSxFQUFFLEdBQUdMLEVBQUVvQyxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUdwQyxFQUFFbWdELFFBQVE5L0MsRUFBRSxFQUFFLEVBQUUsR0FBR0wsRUFBRW9DLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBR3BDLEVBQUVtZ0QsUUFBUTkvQyxFQUFFLEVBQUUsRUFBRSxHQUFHTCxFQUFFbWdELFFBQVE5L0MsRUFBRSxFQUFFLEVBQUUsR0FBR0wsRUFBRW9DLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBR3BDLEVBQUVtZ0QsUUFBUTkvQyxFQUFFLEVBQUUsRUFBRSxHQUFHTCxFQUFFb0MsSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHcEMsRUFBRW9DLElBQUksR0FBRyxFQUFFLEVBQUUsR0FBR3BDLEVBQUVtZ0QsUUFBUWpnRCxFQUFFLEVBQUUsRUFBRSxHQUFHRixFQUFFb0MsSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHcEMsRUFBRW1nRCxRQUFRLENBQUMsSUFBSSxHQUFHLEdBQUcsR0FBRyxHQUFHLEVBQUUsRUFBRSxHQUFHbmdELEVBQUVtZ0QsUUFBUWxnRCxFQUFFLEdBQUcsSUFBSSxFQUFFLEVBQUUsR0FBR0QsRUFBRW1nRCxRQUFRLENBQUMsR0FBRyxHQUFHLElBQUksRUFBRSxFQUFFLEdBQUduZ0QsRUFBRW1nRCxRQUFRamdELEVBQUUsRUFBRSxFQUFFLEdBQUdGLEVBQUVtZ0QsUUFBUTkvQyxFQUFFLEVBQUUsRUFBRSxHQUFHTCxFQUFFb0MsSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHcEMsRUFBRW9DLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBR3BDLEVBQUVvQyxJQUFJLEdBQUcsRUFBRSxHQUFHLEdBQUdwQyxFQUFFbWdELFFBQVFsZ0QsRUFBRSxHQUFHLEtBQUssRUFBRSxFQUFFLEdBQUdELEVBQUVtZ0QsUUFBUWxnRCxFQUFFLEdBQUcsSUFBSSxFQUFFLEVBQUUsR0FBR0QsRUFBRW1nRCxRQUFRLENBQUMsR0FBRyxHQUFHLEdBQUcsSUFBSSxFQUFFLEVBQUUsR0FBR25nRCxFQUFFbWdELFFBQVFsZ0QsRUFBRSxHQUFHLElBQUksRUFBRSxFQUFFLEdBQUdELEVBQUVtZ0QsUUFBUWxnRCxFQUFFLEdBQUcsS0FBSyxFQUFFLEVBQUUsR0FBR0QsRUFBRW1nRCxRQUFRLENBQUMsR0FBRyxHQUFHLEdBQUcsSUFBSSxFQUFFLEVBQUUsR0FBR25nRCxFQUFFbWdELFFBQVFsZ0QsRUFBRSxHQUFHLElBQUksRUFBRSxFQUFFLEdBQUdELEVBQUVvQyxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUdwQyxFQUFFbWdELFFBQVFsZ0QsRUFBRSxHQUFHLEtBQUssRUFBRSxFQUFFLEdBQUdELEVBQUVtZ0QsUUFBUWxnRCxFQUFFLEdBQUcsSUFBSSxFQUFFLEVBQUUsR0FBR0QsRUFBRW1nRCxRQUFRbGdELEVBQUUsR0FBRyxJQUFJLEVBQUUsRUFBRSxHQUFHRCxFQUFFbWdELFFBQVFsZ0QsRUFBRSxHQUFHLElBQUksRUFBRSxFQUFFLEdBQUdELEVBQUVtZ0QsUUFBUWxnRCxFQUFFLEdBQUcsS0FBSyxFQUFFLEVBQUUsR0FBR0QsRUFBRW1nRCxRQUFRbGdELEVBQUUsR0FBRyxJQUFJLEVBQUUsRUFBRSxHQUFHRCxFQUFFbWdELFFBQVFsZ0QsRUFBRSxHQUFHLElBQUksRUFBRSxFQUFFLEdBQUdELEVBQUVtZ0QsUUFBUWxnRCxFQUFFLEdBQUcsSUFBSSxFQUFFLEVBQUUsR0FBR0QsRUFBRW1nRCxRQUFRbGdELEVBQUUsR0FBRyxLQUFLLEVBQUUsR0FBRyxHQUFHRCxFQUFFbWdELFFBQVFsZ0QsRUFBRSxHQUFHLElBQUksRUFBRSxHQUFHLEdBQUdELEVBQUVtZ0QsUUFBUWxnRCxFQUFFLEdBQUcsSUFBSSxFQUFFLEdBQUcsR0FBR0QsRUFBRW1nRCxRQUFRLENBQUMsR0FBRyxHQUFHLElBQUksRUFBRSxHQUFHLEdBQUduZ0QsRUFBRW1nRCxRQUFRbGdELEVBQUUsR0FBRyxLQUFLLEVBQUUsR0FBRyxHQUFHRCxFQUFFb0MsSUFBSSxHQUFHLEVBQUUsR0FBRyxHQUFHcEMsRUFBRW1nRCxRQUFROS9DLEVBQUUsRUFBRSxFQUFFLEdBQUdMLEVBQUVvQyxJQUFJLElBQUksRUFBRSxFQUFFLEdBQUdwQyxFQUFFbWdELFFBQVFsZ0QsRUFBRSxHQUFHLElBQUksRUFBRSxFQUFFLEdBQUdELEVBQUVtZ0QsUUFBUWxnRCxFQUFFLEdBQUcsSUFBSSxFQUFFLEVBQUUsSUFBSUQsRUFBRW1nRCxRQUFRbGdELEVBQUUsR0FBRyxJQUFJLEVBQUUsRUFBRSxJQUFJRCxFQUFFbWdELFFBQVEsQ0FBQyxHQUFHLEdBQUcsR0FBRyxJQUFJLEVBQUUsRUFBRSxJQUFJbmdELEVBQUVtZ0QsUUFBUTkvQyxFQUFFLEdBQUcsRUFBRSxJQUFJTCxFQUFFbWdELFFBQVFsZ0QsRUFBRSxHQUFHLEtBQUssR0FBRyxFQUFFLElBQUlELEVBQUVtZ0QsUUFBUWxnRCxFQUFFLEdBQUcsSUFBSSxHQUFHLEVBQUUsSUFBSUQsRUFBRW1nRCxRQUFROS9DLEVBQUUsR0FBRyxFQUFFLElBQUlM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LElBQUttRyxFQUFNbkcsSUFDWDZqQyxLQUFNMTlCLEVBQU0wOUIsS0FDWmw0QixTQUFVeEYsRUFBTXdGLFNBQ2hCaWtCLE9BQVF6cEIsRUFBTXlwQixPQUNkNVYsUUFBUzdULEVBQU02VCxRQUNmRyxTQUFVaFUsRUFBTWdVLFNBQ2hCRCxPQUFRL1QsRUFBTStULE9BQ2Q0QyxRQUFTM1csRUFBTTJXLFFBQ2Y1SyxLQUFNL0wsRUFBTStMLEtBRWQsRUFDRCxFQTNKQSxHQW1LQTVSLE9BQU84b0QsWUFBYyxJQUFJQSxDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8veHRlcm0tYmxhem9yLy4vbm9kZV9tb2R1bGVzL3h0ZXJtL2xpYi94dGVybS5qcyIsIndlYnBhY2s6Ly94dGVybS1ibGF6b3Ivd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8veHRlcm0tYmxhem9yLy4vc2NyaXB0cy9YdGVybUJsYXpvci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIhZnVuY3Rpb24oZSx0KXtpZihcIm9iamVjdFwiPT10eXBlb2YgZXhwb3J0cyYmXCJvYmplY3RcIj09dHlwZW9mIG1vZHVsZSltb2R1bGUuZXhwb3J0cz10KCk7ZWxzZSBpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQpZGVmaW5lKFtdLHQpO2Vsc2V7dmFyIGk9dCgpO2Zvcih2YXIgcyBpbiBpKShcIm9iamVjdFwiPT10eXBlb2YgZXhwb3J0cz9leHBvcnRzOmUpW3NdPWlbc119fShzZWxmLCgoKT0+KCgpPT57XCJ1c2Ugc3RyaWN0XCI7dmFyIGU9ezQ1Njc6ZnVuY3Rpb24oZSx0LGkpe3ZhciBzPXRoaXMmJnRoaXMuX19kZWNvcmF0ZXx8ZnVuY3Rpb24oZSx0LGkscyl7dmFyIHIsbj1hcmd1bWVudHMubGVuZ3RoLG89bjwzP3Q6bnVsbD09PXM/cz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsaSk6cztpZihcIm9iamVjdFwiPT10eXBlb2YgUmVmbGVjdCYmXCJmdW5jdGlvblwiPT10eXBlb2YgUmVmbGVjdC5kZWNvcmF0ZSlvPVJlZmxlY3QuZGVjb3JhdGUoZSx0LGkscyk7ZWxzZSBmb3IodmFyIGE9ZS5sZW5ndGgtMTthPj0wO2EtLSkocj1lW2FdKSYmKG89KG48Mz9yKG8pOm4+Mz9yKHQsaSxvKTpyKHQsaSkpfHxvKTtyZXR1cm4gbj4zJiZvJiZPYmplY3QuZGVmaW5lUHJvcGVydHkodCxpLG8pLG99LHI9dGhpcyYmdGhpcy5fX3BhcmFtfHxmdW5jdGlvbihlLHQpe3JldHVybiBmdW5jdGlvbihpLHMpe3QoaSxzLGUpfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5BY2Nlc3NpYmlsaXR5TWFuYWdlcj12b2lkIDA7Y29uc3Qgbj1pKDkwNDIpLG89aSg2MTE0KSxhPWkoOTkyNCksaD1pKDg0NCksYz1pKDU1OTYpLGw9aSg0NzI1KSxkPWkoMzY1Nik7bGV0IF89dC5BY2Nlc3NpYmlsaXR5TWFuYWdlcj1jbGFzcyBleHRlbmRzIGguRGlzcG9zYWJsZXtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKCksdGhpcy5fdGVybWluYWw9ZSx0aGlzLl9yZW5kZXJTZXJ2aWNlPXQsdGhpcy5fbGl2ZVJlZ2lvbkxpbmVDb3VudD0wLHRoaXMuX2NoYXJzVG9Db25zdW1lPVtdLHRoaXMuX2NoYXJzVG9Bbm5vdW5jZT1cIlwiLHRoaXMuX2FjY2Vzc2liaWxpdHlDb250YWluZXI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSx0aGlzLl9hY2Nlc3NpYmlsaXR5Q29udGFpbmVyLmNsYXNzTGlzdC5hZGQoXCJ4dGVybS1hY2Nlc3NpYmlsaXR5XCIpLHRoaXMuX3Jvd0NvbnRhaW5lcj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLHRoaXMuX3Jvd0NvbnRhaW5lci5zZXRBdHRyaWJ1dGUoXCJyb2xlXCIsXCJsaXN0XCIpLHRoaXMuX3Jvd0NvbnRhaW5lci5jbGFzc0xpc3QuYWRkKFwieHRlcm0tYWNjZXNzaWJpbGl0eS10cmVlXCIpLHRoaXMuX3Jvd0VsZW1lbnRzPVtdO2ZvcihsZXQgZT0wO2U8dGhpcy5fdGVybWluYWwucm93cztlKyspdGhpcy5fcm93RWxlbWVudHNbZV09dGhpcy5fY3JlYXRlQWNjZXNzaWJpbGl0eVRyZWVOb2RlKCksdGhpcy5fcm93Q29udGFpbmVyLmFwcGVuZENoaWxkKHRoaXMuX3Jvd0VsZW1lbnRzW2VdKTtpZih0aGlzLl90b3BCb3VuZGFyeUZvY3VzTGlzdGVuZXI9ZT0+dGhpcy5faGFuZGxlQm91bmRhcnlGb2N1cyhlLDApLHRoaXMuX2JvdHRvbUJvdW5kYXJ5Rm9jdXNMaXN0ZW5lcj1lPT50aGlzLl9oYW5kbGVCb3VuZGFyeUZvY3VzKGUsMSksdGhpcy5fcm93RWxlbWVudHNbMF0uYWRkRXZlbnRMaXN0ZW5lcihcImZvY3VzXCIsdGhpcy5fdG9wQm91bmRhcnlGb2N1c0xpc3RlbmVyKSx0aGlzLl9yb3dFbGVtZW50c1t0aGlzLl9yb3dFbGVtZW50cy5sZW5ndGgtMV0uYWRkRXZlbnRMaXN0ZW5lcihcImZvY3VzXCIsdGhpcy5fYm90dG9tQm91bmRhcnlGb2N1c0xpc3RlbmVyKSx0aGlzLl9yZWZyZXNoUm93c0RpbWVuc2lvbnMoKSx0aGlzLl9hY2Nlc3NpYmlsaXR5Q29udGFpbmVyLmFwcGVuZENoaWxkKHRoaXMuX3Jvd0NvbnRhaW5lciksdGhpcy5fbGl2ZVJlZ2lvbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLHRoaXMuX2xpdmVSZWdpb24uY2xhc3NMaXN0LmFkZChcImxpdmUtcmVnaW9uXCIpLHRoaXMuX2xpdmVSZWdpb24uc2V0QXR0cmlidXRlKFwiYXJpYS1saXZlXCIsXCJhc3NlcnRpdmVcIiksdGhpcy5fYWNjZXNzaWJpbGl0eUNvbnRhaW5lci5hcHBlbmRDaGlsZCh0aGlzLl9saXZlUmVnaW9uKSx0aGlzLl9saXZlUmVnaW9uRGVib3VuY2VyPXRoaXMucmVnaXN0ZXIobmV3IGEuVGltZUJhc2VkRGVib3VuY2VyKHRoaXMuX3JlbmRlclJvd3MuYmluZCh0aGlzKSkpLCF0aGlzLl90ZXJtaW5hbC5lbGVtZW50KXRocm93IG5ldyBFcnJvcihcIkNhbm5vdCBlbmFibGUgYWNjZXNzaWJpbGl0eSBiZWZvcmUgVGVybWluYWwub3BlblwiKTt0aGlzLl90ZXJtaW5hbC5lbGVtZW50Lmluc2VydEFkamFjZW50RWxlbWVudChcImFmdGVyYmVnaW5cIix0aGlzLl9hY2Nlc3NpYmlsaXR5Q29udGFpbmVyKSx0aGlzLnJlZ2lzdGVyKHRoaXMuX3Rlcm1pbmFsLm9uUmVzaXplKChlPT50aGlzLl9oYW5kbGVSZXNpemUoZS5yb3dzKSkpKSx0aGlzLnJlZ2lzdGVyKHRoaXMuX3Rlcm1pbmFsLm9uUmVuZGVyKChlPT50aGlzLl9yZWZyZXNoUm93cyhlLnN0YXJ0LGUuZW5kKSkpKSx0aGlzLnJlZ2lzdGVyKHRoaXMuX3Rlcm1pbmFsLm9uU2Nyb2xsKCgoKT0+dGhpcy5fcmVmcmVzaFJvd3MoKSkpKSx0aGlzLnJlZ2lzdGVyKHRoaXMuX3Rlcm1pbmFsLm9uQTExeUNoYXIoKGU9PnRoaXMuX2hhbmRsZUNoYXIoZSkpKSksdGhpcy5yZWdpc3Rlcih0aGlzLl90ZXJtaW5hbC5vbkxpbmVGZWVkKCgoKT0+dGhpcy5faGFuZGxlQ2hhcihcIlxcblwiKSkpKSx0aGlzLnJlZ2lzdGVyKHRoaXMuX3Rlcm1pbmFsLm9uQTExeVRhYigoZT0+dGhpcy5faGFuZGxlVGFiKGUpKSkpLHRoaXMucmVnaXN0ZXIodGhpcy5fdGVybWluYWwub25LZXkoKGU9PnRoaXMuX2hhbmRsZUtleShlLmtleSkpKSksdGhpcy5yZWdpc3Rlcih0aGlzLl90ZXJtaW5hbC5vbkJsdXIoKCgpPT50aGlzLl9jbGVhckxpdmVSZWdpb24oKSkpKSx0aGlzLnJlZ2lzdGVyKHRoaXMuX3JlbmRlclNlcnZpY2Uub25EaW1lbnNpb25zQ2hhbmdlKCgoKT0+dGhpcy5fcmVmcmVzaFJvd3NEaW1lbnNpb25zKCkpKSksdGhpcy5fc2NyZWVuRHByTW9uaXRvcj1uZXcgYy5TY3JlZW5EcHJNb25pdG9yKHdpbmRvdyksdGhpcy5yZWdpc3Rlcih0aGlzLl9zY3JlZW5EcHJNb25pdG9yKSx0aGlzLl9zY3JlZW5EcHJNb25pdG9yLnNldExpc3RlbmVyKCgoKT0+dGhpcy5fcmVmcmVzaFJvd3NEaW1lbnNpb25zKCkpKSx0aGlzLnJlZ2lzdGVyKCgwLGQuYWRkRGlzcG9zYWJsZURvbUxpc3RlbmVyKSh3aW5kb3csXCJyZXNpemVcIiwoKCk9PnRoaXMuX3JlZnJlc2hSb3dzRGltZW5zaW9ucygpKSkpLHRoaXMuX3JlZnJlc2hSb3dzKCksdGhpcy5yZWdpc3RlcigoMCxoLnRvRGlzcG9zYWJsZSkoKCgpPT57dGhpcy5fYWNjZXNzaWJpbGl0eUNvbnRhaW5lci5yZW1vdmUoKSx0aGlzLl9yb3dFbGVtZW50cy5sZW5ndGg9MH0pKSl9X2hhbmRsZVRhYihlKXtmb3IobGV0IHQ9MDt0PGU7dCsrKXRoaXMuX2hhbmRsZUNoYXIoXCIgXCIpfV9oYW5kbGVDaGFyKGUpe3RoaXMuX2xpdmVSZWdpb25MaW5lQ291bnQ8MjEmJih0aGlzLl9jaGFyc1RvQ29uc3VtZS5sZW5ndGg+MD90aGlzLl9jaGFyc1RvQ29uc3VtZS5zaGlmdCgpIT09ZSYmKHRoaXMuX2NoYXJzVG9Bbm5vdW5jZSs9ZSk6dGhpcy5fY2hhcnNUb0Fubm91bmNlKz1lLFwiXFxuXCI9PT1lJiYodGhpcy5fbGl2ZVJlZ2lvbkxpbmVDb3VudCsrLDIxPT09dGhpcy5fbGl2ZVJlZ2lvbkxpbmVDb3VudCYmKHRoaXMuX2xpdmVSZWdpb24udGV4dENvbnRlbnQrPW4udG9vTXVjaE91dHB1dCkpLG8uaXNNYWMmJnRoaXMuX2xpdmVSZWdpb24udGV4dENvbnRlbnQmJnRoaXMuX2xpdmVSZWdpb24udGV4dENvbnRlbnQubGVuZ3RoPjAmJiF0aGlzLl9saXZlUmVnaW9uLnBhcmVudE5vZGUmJnNldFRpbWVvdXQoKCgpPT57dGhpcy5fYWNjZXNzaWJpbGl0eUNvbnRhaW5lci5hcHBlbmRDaGlsZCh0aGlzLl9saXZlUmVnaW9uKX0pLDApKX1fY2xlYXJMaXZlUmVnaW9uKCl7dGhpcy5fbGl2ZVJlZ2lvbi50ZXh0Q29udGVudD1cIlwiLHRoaXMuX2xpdmVSZWdpb25MaW5lQ291bnQ9MCxvLmlzTWFjJiZ0aGlzLl9saXZlUmVnaW9uLnJlbW92ZSgpfV9oYW5kbGVLZXkoZSl7dGhpcy5fY2xlYXJMaXZlUmVnaW9uKCksL1xccHtDb250cm9sfS91LnRlc3QoZSl8fHRoaXMuX2NoYXJzVG9Db25zdW1lLnB1c2goZSl9X3JlZnJlc2hSb3dzKGUsdCl7dGhpcy5fbGl2ZVJlZ2lvbkRlYm91bmNlci5yZWZyZXNoKGUsdCx0aGlzLl90ZXJtaW5hbC5yb3dzKX1fcmVuZGVyUm93cyhlLHQpe2NvbnN0IGk9dGhpcy5fdGVybWluYWwuYnVmZmVyLHM9aS5saW5lcy5sZW5ndGgudG9TdHJpbmcoKTtmb3IobGV0IHI9ZTtyPD10O3IrKyl7Y29uc3QgZT1pLnRyYW5zbGF0ZUJ1ZmZlckxpbmVUb1N0cmluZyhpLnlkaXNwK3IsITApLHQ9KGkueWRpc3ArcisxKS50b1N0cmluZygpLG49dGhpcy5fcm93RWxlbWVudHNbcl07biYmKDA9PT1lLmxlbmd0aD9uLmlubmVyVGV4dD1cIsKgXCI6bi50ZXh0Q29udGVudD1lLG4uc2V0QXR0cmlidXRlKFwiYXJpYS1wb3NpbnNldFwiLHQpLG4uc2V0QXR0cmlidXRlKFwiYXJpYS1zZXRzaXplXCIscykpfXRoaXMuX2Fubm91bmNlQ2hhcmFjdGVycygpfV9hbm5vdW5jZUNoYXJhY3RlcnMoKXswIT09dGhpcy5fY2hhcnNUb0Fubm91bmNlLmxlbmd0aCYmKHRoaXMuX2xpdmVSZWdpb24udGV4dENvbnRlbnQrPXRoaXMuX2NoYXJzVG9Bbm5vdW5jZSx0aGlzLl9jaGFyc1RvQW5ub3VuY2U9XCJcIil9X2hhbmRsZUJvdW5kYXJ5Rm9jdXMoZSx0KXtjb25zdCBpPWUudGFyZ2V0LHM9dGhpcy5fcm93RWxlbWVudHNbMD09PXQ/MTp0aGlzLl9yb3dFbGVtZW50cy5sZW5ndGgtMl07aWYoaS5nZXRBdHRyaWJ1dGUoXCJhcmlhLXBvc2luc2V0XCIpPT09KDA9PT10P1wiMVwiOmAke3RoaXMuX3Rlcm1pbmFsLmJ1ZmZlci5saW5lcy5sZW5ndGh9YCkpcmV0dXJuO2lmKGUucmVsYXRlZFRhcmdldCE9PXMpcmV0dXJuO2xldCByLG47aWYoMD09PXQ/KHI9aSxuPXRoaXMuX3Jvd0VsZW1lbnRzLnBvcCgpLHRoaXMuX3Jvd0NvbnRhaW5lci5yZW1vdmVDaGlsZChuKSk6KHI9dGhpcy5fcm93RWxlbWVudHMuc2hpZnQoKSxuPWksdGhpcy5fcm93Q29udGFpbmVyLnJlbW92ZUNoaWxkKHIpKSxyLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJmb2N1c1wiLHRoaXMuX3RvcEJvdW5kYXJ5Rm9jdXNMaXN0ZW5lciksbi5yZW1vdmVFdmVudExpc3RlbmVyKFwiZm9jdXNcIix0aGlzLl9ib3R0b21Cb3VuZGFyeUZvY3VzTGlzdGVuZXIpLDA9PT10KXtjb25zdCBlPXRoaXMuX2NyZWF0ZUFjY2Vzc2liaWxpdHlUcmVlTm9kZSgpO3RoaXMuX3Jvd0VsZW1lbnRzLnVuc2hpZnQoZSksdGhpcy5fcm93Q29udGFpbmVyLmluc2VydEFkamFjZW50RWxlbWVudChcImFmdGVyYmVnaW5cIixlKX1lbHNle2NvbnN0IGU9dGhpcy5fY3JlYXRlQWNjZXNzaWJpbGl0eVRyZWVOb2RlKCk7dGhpcy5fcm93RWxlbWVudHMucHVzaChlKSx0aGlzLl9yb3dDb250YWluZXIuYXBwZW5kQ2hpbGQoZSl9dGhpcy5fcm93RWxlbWVudHNbMF0uYWRkRXZlbnRMaXN0ZW5lcihcImZvY3VzXCIsdGhpcy5fdG9wQm91bmRhcnlGb2N1c0xpc3RlbmVyKSx0aGlzLl9yb3dFbGVtZW50c1t0aGlzLl9yb3dFbGVtZW50cy5sZW5ndGgtMV0uYWRkRXZlbnRMaXN0ZW5lcihcImZvY3VzXCIsdGhpcy5fYm90dG9tQm91bmRhcnlGb2N1c0xpc3RlbmVyKSx0aGlzLl90ZXJtaW5hbC5zY3JvbGxMaW5lcygwPT09dD8tMToxKSx0aGlzLl9yb3dFbGVtZW50c1swPT09dD8xOnRoaXMuX3Jvd0VsZW1lbnRzLmxlbmd0aC0yXS5mb2N1cygpLGUucHJldmVudERlZmF1bHQoKSxlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpfV9oYW5kbGVSZXNpemUoZSl7dGhpcy5fcm93RWxlbWVudHNbdGhpcy5fcm93RWxlbWVudHMubGVuZ3RoLTFdLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJmb2N1c1wiLHRoaXMuX2JvdHRvbUJvdW5kYXJ5Rm9jdXNMaXN0ZW5lcik7Zm9yKGxldCBlPXRoaXMuX3Jvd0NvbnRhaW5lci5jaGlsZHJlbi5sZW5ndGg7ZTx0aGlzLl90ZXJtaW5hbC5yb3dzO2UrKyl0aGlzLl9yb3dFbGVtZW50c1tlXT10aGlzLl9jcmVhdGVBY2Nlc3NpYmlsaXR5VHJlZU5vZGUoKSx0aGlzLl9yb3dDb250YWluZXIuYXBwZW5kQ2hpbGQodGhpcy5fcm93RWxlbWVudHNbZV0pO2Zvcig7dGhpcy5fcm93RWxlbWVudHMubGVuZ3RoPmU7KXRoaXMuX3Jvd0NvbnRhaW5lci5yZW1vdmVDaGlsZCh0aGlzLl9yb3dFbGVtZW50cy5wb3AoKSk7dGhpcy5fcm93RWxlbWVudHNbdGhpcy5fcm93RWxlbWVudHMubGVuZ3RoLTFdLmFkZEV2ZW50TGlzdGVuZXIoXCJmb2N1c1wiLHRoaXMuX2JvdHRvbUJvdW5kYXJ5Rm9jdXNMaXN0ZW5lciksdGhpcy5fcmVmcmVzaFJvd3NEaW1lbnNpb25zKCl9X2NyZWF0ZUFjY2Vzc2liaWxpdHlUcmVlTm9kZSgpe2NvbnN0IGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtyZXR1cm4gZS5zZXRBdHRyaWJ1dGUoXCJyb2xlXCIsXCJsaXN0aXRlbVwiKSxlLnRhYkluZGV4PS0xLHRoaXMuX3JlZnJlc2hSb3dEaW1lbnNpb25zKGUpLGV9X3JlZnJlc2hSb3dzRGltZW5zaW9ucygpe2lmKHRoaXMuX3JlbmRlclNlcnZpY2UuZGltZW5zaW9ucy5jc3MuY2VsbC5oZWlnaHQpe3RoaXMuX2FjY2Vzc2liaWxpdHlDb250YWluZXIuc3R5bGUud2lkdGg9YCR7dGhpcy5fcmVuZGVyU2VydmljZS5kaW1lbnNpb25zLmNzcy5jYW52YXMud2lkdGh9cHhgLHRoaXMuX3Jvd0VsZW1lbnRzLmxlbmd0aCE9PXRoaXMuX3Rlcm1pbmFsLnJvd3MmJnRoaXMuX2hhbmRsZVJlc2l6ZSh0aGlzLl90ZXJtaW5hbC5yb3dzKTtmb3IobGV0IGU9MDtlPHRoaXMuX3Rlcm1pbmFsLnJvd3M7ZSsrKXRoaXMuX3JlZnJlc2hSb3dEaW1lbnNpb25zKHRoaXMuX3Jvd0VsZW1lbnRzW2VdKX19X3JlZnJlc2hSb3dEaW1lbnNpb25zKGUpe2Uuc3R5bGUuaGVpZ2h0PWAke3RoaXMuX3JlbmRlclNlcnZpY2UuZGltZW5zaW9ucy5jc3MuY2VsbC5oZWlnaHR9cHhgfX07dC5BY2Nlc3NpYmlsaXR5TWFuYWdlcj1fPXMoW3IoMSxsLklSZW5kZXJTZXJ2aWNlKV0sXyl9LDM2MTQ6KGUsdCk9PntmdW5jdGlvbiBpKGUpe3JldHVybiBlLnJlcGxhY2UoL1xccj9cXG4vZyxcIlxcclwiKX1mdW5jdGlvbiBzKGUsdCl7cmV0dXJuIHQ/XCJcdTAwMWJbMjAwflwiK2UrXCJcdTAwMWJbMjAxflwiOmV9ZnVuY3Rpb24gcihlLHQscixuKXtlPXMoZT1pKGUpLHIuZGVjUHJpdmF0ZU1vZGVzLmJyYWNrZXRlZFBhc3RlTW9kZSYmITAhPT1uLnJhd09wdGlvbnMuaWdub3JlQnJhY2tldGVkUGFzdGVNb2RlKSxyLnRyaWdnZXJEYXRhRXZlbnQoZSwhMCksdC52YWx1ZT1cIlwifWZ1bmN0aW9uIG4oZSx0LGkpe2NvbnN0IHM9aS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxyPWUuY2xpZW50WC1zLmxlZnQtMTAsbj1lLmNsaWVudFktcy50b3AtMTA7dC5zdHlsZS53aWR0aD1cIjIwcHhcIix0LnN0eWxlLmhlaWdodD1cIjIwcHhcIix0LnN0eWxlLmxlZnQ9YCR7cn1weGAsdC5zdHlsZS50b3A9YCR7bn1weGAsdC5zdHlsZS56SW5kZXg9XCIxMDAwXCIsdC5mb2N1cygpfU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQucmlnaHRDbGlja0hhbmRsZXI9dC5tb3ZlVGV4dEFyZWFVbmRlck1vdXNlQ3Vyc29yPXQucGFzdGU9dC5oYW5kbGVQYXN0ZUV2ZW50PXQuY29weUhhbmRsZXI9dC5icmFja2V0VGV4dEZvclBhc3RlPXQucHJlcGFyZVRleHRGb3JUZXJtaW5hbD12b2lkIDAsdC5wcmVwYXJlVGV4dEZvclRlcm1pbmFsPWksdC5icmFja2V0VGV4dEZvclBhc3RlPXMsdC5jb3B5SGFuZGxlcj1mdW5jdGlvbihlLHQpe2UuY2xpcGJvYXJkRGF0YSYmZS5jbGlwYm9hcmREYXRhLnNldERhdGEoXCJ0ZXh0L3BsYWluXCIsdC5zZWxlY3Rpb25UZXh0KSxlLnByZXZlbnREZWZhdWx0KCl9LHQuaGFuZGxlUGFzdGVFdmVudD1mdW5jdGlvbihlLHQsaSxzKXtlLnN0b3BQcm9wYWdhdGlvbigpLGUuY2xpcGJvYXJkRGF0YSYmcihlLmNsaXBib2FyZERhdGEuZ2V0RGF0YShcInRleHQvcGxhaW5cIiksdCxpLHMpfSx0LnBhc3RlPXIsdC5tb3ZlVGV4dEFyZWFVbmRlck1vdXNlQ3Vyc29yPW4sdC5yaWdodENsaWNrSGFuZGxlcj1mdW5jdGlvbihlLHQsaSxzLHIpe24oZSx0LGkpLHImJnMucmlnaHRDbGlja1NlbGVjdChlKSx0LnZhbHVlPXMuc2VsZWN0aW9uVGV4dCx0LnNlbGVjdCgpfX0sNzIzOTooZSx0LGkpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5Db2xvckNvbnRyYXN0Q2FjaGU9dm9pZCAwO2NvbnN0IHM9aSgxNTA1KTt0LkNvbG9yQ29udHJhc3RDYWNoZT1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMuX2NvbG9yPW5ldyBzLlR3b0tleU1hcCx0aGlzLl9jc3M9bmV3IHMuVHdvS2V5TWFwfXNldENzcyhlLHQsaSl7dGhpcy5fY3NzLnNldChlLHQsaSl9Z2V0Q3NzKGUsdCl7cmV0dXJuIHRoaXMuX2Nzcy5nZXQoZSx0KX1zZXRDb2xvcihlLHQsaSl7dGhpcy5fY29sb3Iuc2V0KGUsdCxpKX1nZXRDb2xvcihlLHQpe3JldHVybiB0aGlzLl9jb2xvci5nZXQoZSx0KX1jbGVhcigpe3RoaXMuX2NvbG9yLmNsZWFyKCksdGhpcy5fY3NzLmNsZWFyKCl9fX0sMzY1NjooZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuYWRkRGlzcG9zYWJsZURvbUxpc3RlbmVyPXZvaWQgMCx0LmFkZERpc3Bvc2FibGVEb21MaXN0ZW5lcj1mdW5jdGlvbihlLHQsaSxzKXtlLmFkZEV2ZW50TGlzdGVuZXIodCxpLHMpO2xldCByPSExO3JldHVybntkaXNwb3NlOigpPT57cnx8KHI9ITAsZS5yZW1vdmVFdmVudExpc3RlbmVyKHQsaSxzKSl9fX19LDY0NjU6ZnVuY3Rpb24oZSx0LGkpe3ZhciBzPXRoaXMmJnRoaXMuX19kZWNvcmF0ZXx8ZnVuY3Rpb24oZSx0LGkscyl7dmFyIHIsbj1hcmd1bWVudHMubGVuZ3RoLG89bjwzP3Q6bnVsbD09PXM/cz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsaSk6cztpZihcIm9iamVjdFwiPT10eXBlb2YgUmVmbGVjdCYmXCJmdW5jdGlvblwiPT10eXBlb2YgUmVmbGVjdC5kZWNvcmF0ZSlvPVJlZmxlY3QuZGVjb3JhdGUoZSx0LGkscyk7ZWxzZSBmb3IodmFyIGE9ZS5sZW5ndGgtMTthPj0wO2EtLSkocj1lW2FdKSYmKG89KG48Mz9yKG8pOm4+Mz9yKHQsaSxvKTpyKHQsaSkpfHxvKTtyZXR1cm4gbj4zJiZvJiZPYmplY3QuZGVmaW5lUHJvcGVydHkodCxpLG8pLG99LHI9dGhpcyYmdGhpcy5fX3BhcmFtfHxmdW5jdGlvbihlLHQpe3JldHVybiBmdW5jdGlvbihpLHMpe3QoaSxzLGUpfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5MaW5raWZpZXIyPXZvaWQgMDtjb25zdCBuPWkoMzY1Niksbz1pKDg0NjApLGE9aSg4NDQpLGg9aSgyNTg1KTtsZXQgYz10LkxpbmtpZmllcjI9Y2xhc3MgZXh0ZW5kcyBhLkRpc3Bvc2FibGV7Z2V0IGN1cnJlbnRMaW5rKCl7cmV0dXJuIHRoaXMuX2N1cnJlbnRMaW5rfWNvbnN0cnVjdG9yKGUpe3N1cGVyKCksdGhpcy5fYnVmZmVyU2VydmljZT1lLHRoaXMuX2xpbmtQcm92aWRlcnM9W10sdGhpcy5fbGlua0NhY2hlRGlzcG9zYWJsZXM9W10sdGhpcy5faXNNb3VzZU91dD0hMCx0aGlzLl93YXNSZXNpemVkPSExLHRoaXMuX2FjdGl2ZUxpbmU9LTEsdGhpcy5fb25TaG93TGlua1VuZGVybGluZT10aGlzLnJlZ2lzdGVyKG5ldyBvLkV2ZW50RW1pdHRlciksdGhpcy5vblNob3dMaW5rVW5kZXJsaW5lPXRoaXMuX29uU2hvd0xpbmtVbmRlcmxpbmUuZXZlbnQsdGhpcy5fb25IaWRlTGlua1VuZGVybGluZT10aGlzLnJlZ2lzdGVyKG5ldyBvLkV2ZW50RW1pdHRlciksdGhpcy5vbkhpZGVMaW5rVW5kZXJsaW5lPXRoaXMuX29uSGlkZUxpbmtVbmRlcmxpbmUuZXZlbnQsdGhpcy5yZWdpc3RlcigoMCxhLmdldERpc3Bvc2VBcnJheURpc3Bvc2FibGUpKHRoaXMuX2xpbmtDYWNoZURpc3Bvc2FibGVzKSksdGhpcy5yZWdpc3RlcigoMCxhLnRvRGlzcG9zYWJsZSkoKCgpPT57dGhpcy5fbGFzdE1vdXNlRXZlbnQ9dm9pZCAwfSkpKSx0aGlzLnJlZ2lzdGVyKHRoaXMuX2J1ZmZlclNlcnZpY2Uub25SZXNpemUoKCgpPT57dGhpcy5fY2xlYXJDdXJyZW50TGluaygpLHRoaXMuX3dhc1Jlc2l6ZWQ9ITB9KSkpfXJlZ2lzdGVyTGlua1Byb3ZpZGVyKGUpe3JldHVybiB0aGlzLl9saW5rUHJvdmlkZXJzLnB1c2goZSkse2Rpc3Bvc2U6KCk9Pntjb25zdCB0PXRoaXMuX2xpbmtQcm92aWRlcnMuaW5kZXhPZihlKTstMSE9PXQmJnRoaXMuX2xpbmtQcm92aWRlcnMuc3BsaWNlKHQsMSl9fX1hdHRhY2hUb0RvbShlLHQsaSl7dGhpcy5fZWxlbWVudD1lLHRoaXMuX21vdXNlU2VydmljZT10LHRoaXMuX3JlbmRlclNlcnZpY2U9aSx0aGlzLnJlZ2lzdGVyKCgwLG4uYWRkRGlzcG9zYWJsZURvbUxpc3RlbmVyKSh0aGlzLl9lbGVtZW50LFwibW91c2VsZWF2ZVwiLCgoKT0+e3RoaXMuX2lzTW91c2VPdXQ9ITAsdGhpcy5fY2xlYXJDdXJyZW50TGluaygpfSkpKSx0aGlzLnJlZ2lzdGVyKCgwLG4uYWRkRGlzcG9zYWJsZURvbUxpc3RlbmVyKSh0aGlzLl9lbGVtZW50LFwibW91c2Vtb3ZlXCIsdGhpcy5faGFuZGxlTW91c2VNb3ZlLmJpbmQodGhpcykpKSx0aGlzLnJlZ2lzdGVyKCgwLG4uYWRkRGlzcG9zYWJsZURvbUxpc3RlbmVyKSh0aGlzLl9lbGVtZW50LFwibW91c2Vkb3duXCIsdGhpcy5faGFuZGxlTW91c2VEb3duLmJpbmQodGhpcykpKSx0aGlzLnJlZ2lzdGVyKCgwLG4uYWRkRGlzcG9zYWJsZURvbUxpc3RlbmVyKSh0aGlzLl9lbGVtZW50LFwibW91c2V1cFwiLHRoaXMuX2hhbmRsZU1vdXNlVXAuYmluZCh0aGlzKSkpfV9oYW5kbGVNb3VzZU1vdmUoZSl7aWYodGhpcy5fbGFzdE1vdXNlRXZlbnQ9ZSwhdGhpcy5fZWxlbWVudHx8IXRoaXMuX21vdXNlU2VydmljZSlyZXR1cm47Y29uc3QgdD10aGlzLl9wb3NpdGlvbkZyb21Nb3VzZUV2ZW50KGUsdGhpcy5fZWxlbWVudCx0aGlzLl9tb3VzZVNlcnZpY2UpO2lmKCF0KXJldHVybjt0aGlzLl9pc01vdXNlT3V0PSExO2NvbnN0IGk9ZS5jb21wb3NlZFBhdGgoKTtmb3IobGV0IGU9MDtlPGkubGVuZ3RoO2UrKyl7Y29uc3QgdD1pW2VdO2lmKHQuY2xhc3NMaXN0LmNvbnRhaW5zKFwieHRlcm1cIikpYnJlYWs7aWYodC5jbGFzc0xpc3QuY29udGFpbnMoXCJ4dGVybS1ob3ZlclwiKSlyZXR1cm59dGhpcy5fbGFzdEJ1ZmZlckNlbGwmJnQueD09PXRoaXMuX2xhc3RCdWZmZXJDZWxsLngmJnQueT09PXRoaXMuX2xhc3RCdWZmZXJDZWxsLnl8fCh0aGlzLl9oYW5kbGVIb3Zlcih0KSx0aGlzLl9sYXN0QnVmZmVyQ2VsbD10KX1faGFuZGxlSG92ZXIoZSl7aWYodGhpcy5fYWN0aXZlTGluZSE9PWUueXx8dGhpcy5fd2FzUmVzaXplZClyZXR1cm4gdGhpcy5fY2xlYXJDdXJyZW50TGluaygpLHRoaXMuX2Fza0ZvckxpbmsoZSwhMSksdm9pZCh0aGlzLl93YXNSZXNpemVkPSExKTt0aGlzLl9jdXJyZW50TGluayYmdGhpcy5fbGlua0F0UG9zaXRpb24odGhpcy5fY3VycmVudExpbmsubGluayxlKXx8KHRoaXMuX2NsZWFyQ3VycmVudExpbmsoKSx0aGlzLl9hc2tGb3JMaW5rKGUsITApKX1fYXNrRm9yTGluayhlLHQpe3ZhciBpLHM7dGhpcy5fYWN0aXZlUHJvdmlkZXJSZXBsaWVzJiZ0fHwobnVsbD09PShpPXRoaXMuX2FjdGl2ZVByb3ZpZGVyUmVwbGllcyl8fHZvaWQgMD09PWl8fGkuZm9yRWFjaCgoZT0+e251bGw9PWV8fGUuZm9yRWFjaCgoZT0+e2UubGluay5kaXNwb3NlJiZlLmxpbmsuZGlzcG9zZSgpfSkpfSkpLHRoaXMuX2FjdGl2ZVByb3ZpZGVyUmVwbGllcz1uZXcgTWFwLHRoaXMuX2FjdGl2ZUxpbmU9ZS55KTtsZXQgcj0hMTtmb3IoY29uc3RbaSxuXW9mIHRoaXMuX2xpbmtQcm92aWRlcnMuZW50cmllcygpKXQ/KG51bGw9PT0ocz10aGlzLl9hY3RpdmVQcm92aWRlclJlcGxpZXMpfHx2b2lkIDA9PT1zP3ZvaWQgMDpzLmdldChpKSkmJihyPXRoaXMuX2NoZWNrTGlua1Byb3ZpZGVyUmVzdWx0KGksZSxyKSk6bi5wcm92aWRlTGlua3MoZS55LCh0PT57dmFyIHMsbjtpZih0aGlzLl9pc01vdXNlT3V0KXJldHVybjtjb25zdCBvPW51bGw9PXQ/dm9pZCAwOnQubWFwKChlPT4oe2xpbms6ZX0pKSk7bnVsbD09PShzPXRoaXMuX2FjdGl2ZVByb3ZpZGVyUmVwbGllcyl8fHZvaWQgMD09PXN8fHMuc2V0KGksbykscj10aGlzLl9jaGVja0xpbmtQcm92aWRlclJlc3VsdChpLGUsciksKG51bGw9PT0obj10aGlzLl9hY3RpdmVQcm92aWRlclJlcGxpZXMpfHx2b2lkIDA9PT1uP3ZvaWQgMDpuLnNpemUpPT09dGhpcy5fbGlua1Byb3ZpZGVycy5sZW5ndGgmJnRoaXMuX3JlbW92ZUludGVyc2VjdGluZ0xpbmtzKGUueSx0aGlzLl9hY3RpdmVQcm92aWRlclJlcGxpZXMpfSkpfV9yZW1vdmVJbnRlcnNlY3RpbmdMaW5rcyhlLHQpe2NvbnN0IGk9bmV3IFNldDtmb3IobGV0IHM9MDtzPHQuc2l6ZTtzKyspe2NvbnN0IHI9dC5nZXQocyk7aWYocilmb3IobGV0IHQ9MDt0PHIubGVuZ3RoO3QrKyl7Y29uc3Qgcz1yW3RdLG49cy5saW5rLnJhbmdlLnN0YXJ0Lnk8ZT8wOnMubGluay5yYW5nZS5zdGFydC54LG89cy5saW5rLnJhbmdlLmVuZC55PmU/dGhpcy5fYnVmZmVyU2VydmljZS5jb2xzOnMubGluay5yYW5nZS5lbmQueDtmb3IobGV0IGU9bjtlPD1vO2UrKyl7aWYoaS5oYXMoZSkpe3Iuc3BsaWNlKHQtLSwxKTticmVha31pLmFkZChlKX19fX1fY2hlY2tMaW5rUHJvdmlkZXJSZXN1bHQoZSx0LGkpe3ZhciBzO2lmKCF0aGlzLl9hY3RpdmVQcm92aWRlclJlcGxpZXMpcmV0dXJuIGk7Y29uc3Qgcj10aGlzLl9hY3RpdmVQcm92aWRlclJlcGxpZXMuZ2V0KGUpO2xldCBuPSExO2ZvcihsZXQgdD0wO3Q8ZTt0KyspdGhpcy5fYWN0aXZlUHJvdmlkZXJSZXBsaWVzLmhhcyh0KSYmIXRoaXMuX2FjdGl2ZVByb3ZpZGVyUmVwbGllcy5nZXQodCl8fChuPSEwKTtpZighbiYmcil7Y29uc3QgZT1yLmZpbmQoKGU9PnRoaXMuX2xpbmtBdFBvc2l0aW9uKGUubGluayx0KSkpO2UmJihpPSEwLHRoaXMuX2hhbmRsZU5ld0xpbmsoZSkpfWlmKHRoaXMuX2FjdGl2ZVByb3ZpZGVyUmVwbGllcy5zaXplPT09dGhpcy5fbGlua1Byb3ZpZGVycy5sZW5ndGgmJiFpKWZvcihsZXQgZT0wO2U8dGhpcy5fYWN0aXZlUHJvdmlkZXJSZXBsaWVzLnNpemU7ZSsrKXtjb25zdCByPW51bGw9PT0ocz10aGlzLl9hY3RpdmVQcm92aWRlclJlcGxpZXMuZ2V0KGUpKXx8dm9pZCAwPT09cz92b2lkIDA6cy5maW5kKChlPT50aGlzLl9saW5rQXRQb3NpdGlvbihlLmxpbmssdCkpKTtpZihyKXtpPSEwLHRoaXMuX2hhbmRsZU5ld0xpbmsocik7YnJlYWt9fXJldHVybiBpfV9oYW5kbGVNb3VzZURvd24oKXt0aGlzLl9tb3VzZURvd25MaW5rPXRoaXMuX2N1cnJlbnRMaW5rfV9oYW5kbGVNb3VzZVVwKGUpe2lmKCF0aGlzLl9lbGVtZW50fHwhdGhpcy5fbW91c2VTZXJ2aWNlfHwhdGhpcy5fY3VycmVudExpbmspcmV0dXJuO2NvbnN0IHQ9dGhpcy5fcG9zaXRpb25Gcm9tTW91c2VFdmVudChlLHRoaXMuX2VsZW1lbnQsdGhpcy5fbW91c2VTZXJ2aWNlKTt0JiZ0aGlzLl9tb3VzZURvd25MaW5rPT09dGhpcy5fY3VycmVudExpbmsmJnRoaXMuX2xpbmtBdFBvc2l0aW9uKHRoaXMuX2N1cnJlbnRMaW5rLmxpbmssdCkmJnRoaXMuX2N1cnJlbnRMaW5rLmxpbmsuYWN0aXZhdGUoZSx0aGlzLl9jdXJyZW50TGluay5saW5rLnRleHQpfV9jbGVhckN1cnJlbnRMaW5rKGUsdCl7dGhpcy5fZWxlbWVudCYmdGhpcy5fY3VycmVudExpbmsmJnRoaXMuX2xhc3RNb3VzZUV2ZW50JiYoIWV8fCF0fHx0aGlzLl9jdXJyZW50TGluay5saW5rLnJhbmdlLnN0YXJ0Lnk+PWUmJnRoaXMuX2N1cnJlbnRMaW5rLmxpbmsucmFuZ2UuZW5kLnk8PXQpJiYodGhpcy5fbGlua0xlYXZlKHRoaXMuX2VsZW1lbnQsdGhpcy5fY3VycmVudExpbmsubGluayx0aGlzLl9sYXN0TW91c2VFdmVudCksdGhpcy5fY3VycmVudExpbms9dm9pZCAwLCgwLGEuZGlzcG9zZUFycmF5KSh0aGlzLl9saW5rQ2FjaGVEaXNwb3NhYmxlcykpfV9oYW5kbGVOZXdMaW5rKGUpe2lmKCF0aGlzLl9lbGVtZW50fHwhdGhpcy5fbGFzdE1vdXNlRXZlbnR8fCF0aGlzLl9tb3VzZVNlcnZpY2UpcmV0dXJuO2NvbnN0IHQ9dGhpcy5fcG9zaXRpb25Gcm9tTW91c2VFdmVudCh0aGlzLl9sYXN0TW91c2VFdmVudCx0aGlzLl9lbGVtZW50LHRoaXMuX21vdXNlU2VydmljZSk7dCYmdGhpcy5fbGlua0F0UG9zaXRpb24oZS5saW5rLHQpJiYodGhpcy5fY3VycmVudExpbms9ZSx0aGlzLl9jdXJyZW50TGluay5zdGF0ZT17ZGVjb3JhdGlvbnM6e3VuZGVybGluZTp2b2lkIDA9PT1lLmxpbmsuZGVjb3JhdGlvbnN8fGUubGluay5kZWNvcmF0aW9ucy51bmRlcmxpbmUscG9pbnRlckN1cnNvcjp2b2lkIDA9PT1lLmxpbmsuZGVjb3JhdGlvbnN8fGUubGluay5kZWNvcmF0aW9ucy5wb2ludGVyQ3Vyc29yfSxpc0hvdmVyZWQ6ITB9LHRoaXMuX2xpbmtIb3Zlcih0aGlzLl9lbGVtZW50LGUubGluayx0aGlzLl9sYXN0TW91c2VFdmVudCksZS5saW5rLmRlY29yYXRpb25zPXt9LE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUubGluay5kZWNvcmF0aW9ucyx7cG9pbnRlckN1cnNvcjp7Z2V0OigpPT57dmFyIGUsdDtyZXR1cm4gbnVsbD09PSh0PW51bGw9PT0oZT10aGlzLl9jdXJyZW50TGluayl8fHZvaWQgMD09PWU/dm9pZCAwOmUuc3RhdGUpfHx2b2lkIDA9PT10P3ZvaWQgMDp0LmRlY29yYXRpb25zLnBvaW50ZXJDdXJzb3J9LHNldDplPT57dmFyIHQsaTsobnVsbD09PSh0PXRoaXMuX2N1cnJlbnRMaW5rKXx8dm9pZCAwPT09dD92b2lkIDA6dC5zdGF0ZSkmJnRoaXMuX2N1cnJlbnRMaW5rLnN0YXRlLmRlY29yYXRpb25zLnBvaW50ZXJDdXJzb3IhPT1lJiYodGhpcy5fY3VycmVudExpbmsuc3RhdGUuZGVjb3JhdGlvbnMucG9pbnRlckN1cnNvcj1lLHRoaXMuX2N1cnJlbnRMaW5rLnN0YXRlLmlzSG92ZXJlZCYmKG51bGw9PT0oaT10aGlzLl9lbGVtZW50KXx8dm9pZCAwPT09aXx8aS5jbGFzc0xpc3QudG9nZ2xlKFwieHRlcm0tY3Vyc29yLXBvaW50ZXJcIixlKSkpfX0sdW5kZXJsaW5lOntnZXQ6KCk9Pnt2YXIgZSx0O3JldHVybiBudWxsPT09KHQ9bnVsbD09PShlPXRoaXMuX2N1cnJlbnRMaW5rKXx8dm9pZCAwPT09ZT92b2lkIDA6ZS5zdGF0ZSl8fHZvaWQgMD09PXQ/dm9pZCAwOnQuZGVjb3JhdGlvbnMudW5kZXJsaW5lfSxzZXQ6dD0+e3ZhciBpLHMscjsobnVsbD09PShpPXRoaXMuX2N1cnJlbnRMaW5rKXx8dm9pZCAwPT09aT92b2lkIDA6aS5zdGF0ZSkmJihudWxsPT09KHI9bnVsbD09PShzPXRoaXMuX2N1cnJlbnRMaW5rKXx8dm9pZCAwPT09cz92b2lkIDA6cy5zdGF0ZSl8fHZvaWQgMD09PXI/dm9pZCAwOnIuZGVjb3JhdGlvbnMudW5kZXJsaW5lKSE9PXQmJih0aGlzLl9jdXJyZW50TGluay5zdGF0ZS5kZWNvcmF0aW9ucy51bmRlcmxpbmU9dCx0aGlzLl9jdXJyZW50TGluay5zdGF0ZS5pc0hvdmVyZWQmJnRoaXMuX2ZpcmVVbmRlcmxpbmVFdmVudChlLmxpbmssdCkpfX19KSx0aGlzLl9yZW5kZXJTZXJ2aWNlJiZ0aGlzLl9saW5rQ2FjaGVEaXNwb3NhYmxlcy5wdXNoKHRoaXMuX3JlbmRlclNlcnZpY2Uub25SZW5kZXJlZFZpZXdwb3J0Q2hhbmdlKChlPT57aWYoIXRoaXMuX2N1cnJlbnRMaW5rKXJldHVybjtjb25zdCB0PTA9PT1lLnN0YXJ0PzA6ZS5zdGFydCsxK3RoaXMuX2J1ZmZlclNlcnZpY2UuYnVmZmVyLnlkaXNwLGk9dGhpcy5fYnVmZmVyU2VydmljZS5idWZmZXIueWRpc3ArMStlLmVuZDtpZih0aGlzLl9jdXJyZW50TGluay5saW5rLnJhbmdlLnN0YXJ0Lnk+PXQmJnRoaXMuX2N1cnJlbnRMaW5rLmxpbmsucmFuZ2UuZW5kLnk8PWkmJih0aGlzLl9jbGVhckN1cnJlbnRMaW5rKHQsaSksdGhpcy5fbGFzdE1vdXNlRXZlbnQmJnRoaXMuX2VsZW1lbnQpKXtjb25zdCBlPXRoaXMuX3Bvc2l0aW9uRnJvbU1vdXNlRXZlbnQodGhpcy5fbGFzdE1vdXNlRXZlbnQsdGhpcy5fZWxlbWVudCx0aGlzLl9tb3VzZVNlcnZpY2UpO2UmJnRoaXMuX2Fza0ZvckxpbmsoZSwhMSl9fSkpKSl9X2xpbmtIb3ZlcihlLHQsaSl7dmFyIHM7KG51bGw9PT0ocz10aGlzLl9jdXJyZW50TGluayl8fHZvaWQgMD09PXM/dm9pZCAwOnMuc3RhdGUpJiYodGhpcy5fY3VycmVudExpbmsuc3RhdGUuaXNIb3ZlcmVkPSEwLHRoaXMuX2N1cnJlbnRMaW5rLnN0YXRlLmRlY29yYXRpb25zLnVuZGVybGluZSYmdGhpcy5fZmlyZVVuZGVybGluZUV2ZW50KHQsITApLHRoaXMuX2N1cnJlbnRMaW5rLnN0YXRlLmRlY29yYXRpb25zLnBvaW50ZXJDdXJzb3ImJmUuY2xhc3NMaXN0LmFkZChcInh0ZXJtLWN1cnNvci1wb2ludGVyXCIpKSx0LmhvdmVyJiZ0LmhvdmVyKGksdC50ZXh0KX1fZmlyZVVuZGVybGluZUV2ZW50KGUsdCl7Y29uc3QgaT1lLnJhbmdlLHM9dGhpcy5fYnVmZmVyU2VydmljZS5idWZmZXIueWRpc3Ascj10aGlzLl9jcmVhdGVMaW5rVW5kZXJsaW5lRXZlbnQoaS5zdGFydC54LTEsaS5zdGFydC55LXMtMSxpLmVuZC54LGkuZW5kLnktcy0xLHZvaWQgMCk7KHQ/dGhpcy5fb25TaG93TGlua1VuZGVybGluZTp0aGlzLl9vbkhpZGVMaW5rVW5kZXJsaW5lKS5maXJlKHIpfV9saW5rTGVhdmUoZSx0LGkpe3ZhciBzOyhudWxsPT09KHM9dGhpcy5fY3VycmVudExpbmspfHx2b2lkIDA9PT1zP3ZvaWQgMDpzLnN0YXRlKSYmKHRoaXMuX2N1cnJlbnRMaW5rLnN0YXRlLmlzSG92ZXJlZD0hMSx0aGlzLl9jdXJyZW50TGluay5zdGF0ZS5kZWNvcmF0aW9ucy51bmRlcmxpbmUmJnRoaXMuX2ZpcmVVbmRlcmxpbmVFdmVudCh0LCExKSx0aGlzLl9jdXJyZW50TGluay5zdGF0ZS5kZWNvcmF0aW9ucy5wb2ludGVyQ3Vyc29yJiZlLmNsYXNzTGlzdC5yZW1vdmUoXCJ4dGVybS1jdXJzb3ItcG9pbnRlclwiKSksdC5sZWF2ZSYmdC5sZWF2ZShpLHQudGV4dCl9X2xpbmtBdFBvc2l0aW9uKGUsdCl7Y29uc3QgaT1lLnJhbmdlLnN0YXJ0LnkqdGhpcy5fYnVmZmVyU2VydmljZS5jb2xzK2UucmFuZ2Uuc3RhcnQueCxzPWUucmFuZ2UuZW5kLnkqdGhpcy5fYnVmZmVyU2VydmljZS5jb2xzK2UucmFuZ2UuZW5kLngscj10LnkqdGhpcy5fYnVmZmVyU2VydmljZS5jb2xzK3QueDtyZXR1cm4gaTw9ciYmcjw9c31fcG9zaXRpb25Gcm9tTW91c2VFdmVudChlLHQsaSl7Y29uc3Qgcz1pLmdldENvb3JkcyhlLHQsdGhpcy5fYnVmZmVyU2VydmljZS5jb2xzLHRoaXMuX2J1ZmZlclNlcnZpY2Uucm93cyk7aWYocylyZXR1cm57eDpzWzBdLHk6c1sxXSt0aGlzLl9idWZmZXJTZXJ2aWNlLmJ1ZmZlci55ZGlzcH19X2NyZWF0ZUxpbmtVbmRlcmxpbmVFdmVudChlLHQsaSxzLHIpe3JldHVybnt4MTplLHkxOnQseDI6aSx5MjpzLGNvbHM6dGhpcy5fYnVmZmVyU2VydmljZS5jb2xzLGZnOnJ9fX07dC5MaW5raWZpZXIyPWM9cyhbcigwLGguSUJ1ZmZlclNlcnZpY2UpXSxjKX0sOTA0MjooZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQudG9vTXVjaE91dHB1dD10LnByb21wdExhYmVsPXZvaWQgMCx0LnByb21wdExhYmVsPVwiVGVybWluYWwgaW5wdXRcIix0LnRvb011Y2hPdXRwdXQ9XCJUb28gbXVjaCBvdXRwdXQgdG8gYW5ub3VuY2UsIG5hdmlnYXRlIHRvIHJvd3MgbWFudWFsbHkgdG8gcmVhZFwifSwzNzMwOmZ1bmN0aW9uKGUsdCxpKXt2YXIgcz10aGlzJiZ0aGlzLl9fZGVjb3JhdGV8fGZ1bmN0aW9uKGUsdCxpLHMpe3ZhciByLG49YXJndW1lbnRzLmxlbmd0aCxvPW48Mz90Om51bGw9PT1zP3M9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LGkpOnM7aWYoXCJvYmplY3RcIj09dHlwZW9mIFJlZmxlY3QmJlwiZnVuY3Rpb25cIj09dHlwZW9mIFJlZmxlY3QuZGVjb3JhdGUpbz1SZWZsZWN0LmRlY29yYXRlKGUsdCxpLHMpO2Vsc2UgZm9yKHZhciBhPWUubGVuZ3RoLTE7YT49MDthLS0pKHI9ZVthXSkmJihvPShuPDM/cihvKTpuPjM/cih0LGksbyk6cih0LGkpKXx8byk7cmV0dXJuIG4+MyYmbyYmT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsaSxvKSxvfSxyPXRoaXMmJnRoaXMuX19wYXJhbXx8ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZnVuY3Rpb24oaSxzKXt0KGkscyxlKX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuT3NjTGlua1Byb3ZpZGVyPXZvaWQgMDtjb25zdCBuPWkoNTExKSxvPWkoMjU4NSk7bGV0IGE9dC5Pc2NMaW5rUHJvdmlkZXI9Y2xhc3N7Y29uc3RydWN0b3IoZSx0LGkpe3RoaXMuX2J1ZmZlclNlcnZpY2U9ZSx0aGlzLl9vcHRpb25zU2VydmljZT10LHRoaXMuX29zY0xpbmtTZXJ2aWNlPWl9cHJvdmlkZUxpbmtzKGUsdCl7dmFyIGk7Y29uc3Qgcz10aGlzLl9idWZmZXJTZXJ2aWNlLmJ1ZmZlci5saW5lcy5nZXQoZS0xKTtpZighcylyZXR1cm4gdm9pZCB0KHZvaWQgMCk7Y29uc3Qgcj1bXSxvPXRoaXMuX29wdGlvbnNTZXJ2aWNlLnJhd09wdGlvbnMubGlua0hhbmRsZXIsYT1uZXcgbi5DZWxsRGF0YSxjPXMuZ2V0VHJpbW1lZExlbmd0aCgpO2xldCBsPS0xLGQ9LTEsXz0hMTtmb3IobGV0IHQ9MDt0PGM7dCsrKWlmKC0xIT09ZHx8cy5oYXNDb250ZW50KHQpKXtpZihzLmxvYWRDZWxsKHQsYSksYS5oYXNFeHRlbmRlZEF0dHJzKCkmJmEuZXh0ZW5kZWQudXJsSWQpe2lmKC0xPT09ZCl7ZD10LGw9YS5leHRlbmRlZC51cmxJZDtjb250aW51ZX1fPWEuZXh0ZW5kZWQudXJsSWQhPT1sfWVsc2UtMSE9PWQmJihfPSEwKTtpZihffHwtMSE9PWQmJnQ9PT1jLTEpe2NvbnN0IHM9bnVsbD09PShpPXRoaXMuX29zY0xpbmtTZXJ2aWNlLmdldExpbmtEYXRhKGwpKXx8dm9pZCAwPT09aT92b2lkIDA6aS51cmk7aWYocyl7Y29uc3QgaT17c3RhcnQ6e3g6ZCsxLHk6ZX0sZW5kOnt4OnQrKF98fHQhPT1jLTE/MDoxKSx5OmV9fTtsZXQgbj0hMTtpZighKG51bGw9PW8/dm9pZCAwOm8uYWxsb3dOb25IdHRwUHJvdG9jb2xzKSl0cnl7Y29uc3QgZT1uZXcgVVJMKHMpO1tcImh0dHA6XCIsXCJodHRwczpcIl0uaW5jbHVkZXMoZS5wcm90b2NvbCl8fChuPSEwKX1jYXRjaChlKXtuPSEwfW58fHIucHVzaCh7dGV4dDpzLHJhbmdlOmksYWN0aXZhdGU6KGUsdCk9Pm8/by5hY3RpdmF0ZShlLHQsaSk6aCgwLHQpLGhvdmVyOihlLHQpPT57dmFyIHM7cmV0dXJuIG51bGw9PT0ocz1udWxsPT1vP3ZvaWQgMDpvLmhvdmVyKXx8dm9pZCAwPT09cz92b2lkIDA6cy5jYWxsKG8sZSx0LGkpfSxsZWF2ZTooZSx0KT0+e3ZhciBzO3JldHVybiBudWxsPT09KHM9bnVsbD09bz92b2lkIDA6by5sZWF2ZSl8fHZvaWQgMD09PXM/dm9pZCAwOnMuY2FsbChvLGUsdCxpKX19KX1fPSExLGEuaGFzRXh0ZW5kZWRBdHRycygpJiZhLmV4dGVuZGVkLnVybElkPyhkPXQsbD1hLmV4dGVuZGVkLnVybElkKTooZD0tMSxsPS0xKX19dChyKX19O2Z1bmN0aW9uIGgoZSx0KXtpZihjb25maXJtKGBEbyB5b3Ugd2FudCB0byBuYXZpZ2F0ZSB0byAke3R9P1xcblxcbldBUk5JTkc6IFRoaXMgbGluayBjb3VsZCBwb3RlbnRpYWxseSBiZSBkYW5nZXJvdXNgKSl7Y29uc3QgZT13aW5kb3cub3BlbigpO2lmKGUpe3RyeXtlLm9wZW5lcj1udWxsfWNhdGNoKGUpe31lLmxvY2F0aW9uLmhyZWY9dH1lbHNlIGNvbnNvbGUud2FybihcIk9wZW5pbmcgbGluayBibG9ja2VkIGFzIG9wZW5lciBjb3VsZCBub3QgYmUgY2xlYXJlZFwiKX19dC5Pc2NMaW5rUHJvdmlkZXI9YT1zKFtyKDAsby5JQnVmZmVyU2VydmljZSkscigxLG8uSU9wdGlvbnNTZXJ2aWNlKSxyKDIsby5JT3NjTGlua1NlcnZpY2UpXSxhKX0sNjE5MzooZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuUmVuZGVyRGVib3VuY2VyPXZvaWQgMCx0LlJlbmRlckRlYm91bmNlcj1jbGFzc3tjb25zdHJ1Y3RvcihlLHQpe3RoaXMuX3BhcmVudFdpbmRvdz1lLHRoaXMuX3JlbmRlckNhbGxiYWNrPXQsdGhpcy5fcmVmcmVzaENhbGxiYWNrcz1bXX1kaXNwb3NlKCl7dGhpcy5fYW5pbWF0aW9uRnJhbWUmJih0aGlzLl9wYXJlbnRXaW5kb3cuY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5fYW5pbWF0aW9uRnJhbWUpLHRoaXMuX2FuaW1hdGlvbkZyYW1lPXZvaWQgMCl9YWRkUmVmcmVzaENhbGxiYWNrKGUpe3JldHVybiB0aGlzLl9yZWZyZXNoQ2FsbGJhY2tzLnB1c2goZSksdGhpcy5fYW5pbWF0aW9uRnJhbWV8fCh0aGlzLl9hbmltYXRpb25GcmFtZT10aGlzLl9wYXJlbnRXaW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgoKT0+dGhpcy5faW5uZXJSZWZyZXNoKCkpKSksdGhpcy5fYW5pbWF0aW9uRnJhbWV9cmVmcmVzaChlLHQsaSl7dGhpcy5fcm93Q291bnQ9aSxlPXZvaWQgMCE9PWU/ZTowLHQ9dm9pZCAwIT09dD90OnRoaXMuX3Jvd0NvdW50LTEsdGhpcy5fcm93U3RhcnQ9dm9pZCAwIT09dGhpcy5fcm93U3RhcnQ/TWF0aC5taW4odGhpcy5fcm93U3RhcnQsZSk6ZSx0aGlzLl9yb3dFbmQ9dm9pZCAwIT09dGhpcy5fcm93RW5kP01hdGgubWF4KHRoaXMuX3Jvd0VuZCx0KTp0LHRoaXMuX2FuaW1hdGlvbkZyYW1lfHwodGhpcy5fYW5pbWF0aW9uRnJhbWU9dGhpcy5fcGFyZW50V2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSgoKCk9PnRoaXMuX2lubmVyUmVmcmVzaCgpKSkpfV9pbm5lclJlZnJlc2goKXtpZih0aGlzLl9hbmltYXRpb25GcmFtZT12b2lkIDAsdm9pZCAwPT09dGhpcy5fcm93U3RhcnR8fHZvaWQgMD09PXRoaXMuX3Jvd0VuZHx8dm9pZCAwPT09dGhpcy5fcm93Q291bnQpcmV0dXJuIHZvaWQgdGhpcy5fcnVuUmVmcmVzaENhbGxiYWNrcygpO2NvbnN0IGU9TWF0aC5tYXgodGhpcy5fcm93U3RhcnQsMCksdD1NYXRoLm1pbih0aGlzLl9yb3dFbmQsdGhpcy5fcm93Q291bnQtMSk7dGhpcy5fcm93U3RhcnQ9dm9pZCAwLHRoaXMuX3Jvd0VuZD12b2lkIDAsdGhpcy5fcmVuZGVyQ2FsbGJhY2soZSx0KSx0aGlzLl9ydW5SZWZyZXNoQ2FsbGJhY2tzKCl9X3J1blJlZnJlc2hDYWxsYmFja3MoKXtmb3IoY29uc3QgZSBvZiB0aGlzLl9yZWZyZXNoQ2FsbGJhY2tzKWUoMCk7dGhpcy5fcmVmcmVzaENhbGxiYWNrcz1bXX19fSw1NTk2OihlLHQsaSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LlNjcmVlbkRwck1vbml0b3I9dm9pZCAwO2NvbnN0IHM9aSg4NDQpO2NsYXNzIHIgZXh0ZW5kcyBzLkRpc3Bvc2FibGV7Y29uc3RydWN0b3IoZSl7c3VwZXIoKSx0aGlzLl9wYXJlbnRXaW5kb3c9ZSx0aGlzLl9jdXJyZW50RGV2aWNlUGl4ZWxSYXRpbz10aGlzLl9wYXJlbnRXaW5kb3cuZGV2aWNlUGl4ZWxSYXRpbyx0aGlzLnJlZ2lzdGVyKCgwLHMudG9EaXNwb3NhYmxlKSgoKCk9Pnt0aGlzLmNsZWFyTGlzdGVuZXIoKX0pKSl9c2V0TGlzdGVuZXIoZSl7dGhpcy5fbGlzdGVuZXImJnRoaXMuY2xlYXJMaXN0ZW5lcigpLHRoaXMuX2xpc3RlbmVyPWUsdGhpcy5fb3V0ZXJMaXN0ZW5lcj0oKT0+e3RoaXMuX2xpc3RlbmVyJiYodGhpcy5fbGlzdGVuZXIodGhpcy5fcGFyZW50V2luZG93LmRldmljZVBpeGVsUmF0aW8sdGhpcy5fY3VycmVudERldmljZVBpeGVsUmF0aW8pLHRoaXMuX3VwZGF0ZURwcigpKX0sdGhpcy5fdXBkYXRlRHByKCl9X3VwZGF0ZURwcigpe3ZhciBlO3RoaXMuX291dGVyTGlzdGVuZXImJihudWxsPT09KGU9dGhpcy5fcmVzb2x1dGlvbk1lZGlhTWF0Y2hMaXN0KXx8dm9pZCAwPT09ZXx8ZS5yZW1vdmVMaXN0ZW5lcih0aGlzLl9vdXRlckxpc3RlbmVyKSx0aGlzLl9jdXJyZW50RGV2aWNlUGl4ZWxSYXRpbz10aGlzLl9wYXJlbnRXaW5kb3cuZGV2aWNlUGl4ZWxSYXRpbyx0aGlzLl9yZXNvbHV0aW9uTWVkaWFNYXRjaExpc3Q9dGhpcy5fcGFyZW50V2luZG93Lm1hdGNoTWVkaWEoYHNjcmVlbiBhbmQgKHJlc29sdXRpb246ICR7dGhpcy5fcGFyZW50V2luZG93LmRldmljZVBpeGVsUmF0aW99ZHBweClgKSx0aGlzLl9yZXNvbHV0aW9uTWVkaWFNYXRjaExpc3QuYWRkTGlzdGVuZXIodGhpcy5fb3V0ZXJMaXN0ZW5lcikpfWNsZWFyTGlzdGVuZXIoKXt0aGlzLl9yZXNvbHV0aW9uTWVkaWFNYXRjaExpc3QmJnRoaXMuX2xpc3RlbmVyJiZ0aGlzLl9vdXRlckxpc3RlbmVyJiYodGhpcy5fcmVzb2x1dGlvbk1lZGlhTWF0Y2hMaXN0LnJlbW92ZUxpc3RlbmVyKHRoaXMuX291dGVyTGlzdGVuZXIpLHRoaXMuX3Jlc29sdXRpb25NZWRpYU1hdGNoTGlzdD12b2lkIDAsdGhpcy5fbGlzdGVuZXI9dm9pZCAwLHRoaXMuX291dGVyTGlzdGVuZXI9dm9pZCAwKX19dC5TY3JlZW5EcHJNb25pdG9yPXJ9LDMyMzY6KGUsdCxpKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuVGVybWluYWw9dm9pZCAwO2NvbnN0IHM9aSgzNjE0KSxyPWkoMzY1Niksbj1pKDY0NjUpLG89aSg5MDQyKSxhPWkoMzczMCksaD1pKDE2ODApLGM9aSgzMTA3KSxsPWkoNTc0NCksZD1pKDI5NTApLF89aSgxMjk2KSx1PWkoNDI4KSxmPWkoNDI2OSksdj1pKDUxMTQpLHA9aSg4OTM0KSxnPWkoMzIzMCksbT1pKDkzMTIpLFM9aSg0NzI1KSxDPWkoNjczMSksYj1pKDgwNTUpLHk9aSg4OTY5KSx3PWkoODQ2MCksRT1pKDg0NCksaz1pKDYxMTQpLEw9aSg4NDM3KSxEPWkoMjU4NCksUj1pKDczOTkpLHg9aSg1OTQxKSxBPWkoOTA3NCksQj1pKDI1ODUpLFQ9aSg1NDM1KSxNPWkoNDU2NyksTz1cInVuZGVmaW5lZFwiIT10eXBlb2Ygd2luZG93P3dpbmRvdy5kb2N1bWVudDpudWxsO2NsYXNzIFAgZXh0ZW5kcyB5LkNvcmVUZXJtaW5hbHtnZXQgb25Gb2N1cygpe3JldHVybiB0aGlzLl9vbkZvY3VzLmV2ZW50fWdldCBvbkJsdXIoKXtyZXR1cm4gdGhpcy5fb25CbHVyLmV2ZW50fWdldCBvbkExMXlDaGFyKCl7cmV0dXJuIHRoaXMuX29uQTExeUNoYXJFbWl0dGVyLmV2ZW50fWdldCBvbkExMXlUYWIoKXtyZXR1cm4gdGhpcy5fb25BMTF5VGFiRW1pdHRlci5ldmVudH1nZXQgb25XaWxsT3Blbigpe3JldHVybiB0aGlzLl9vbldpbGxPcGVuLmV2ZW50fWNvbnN0cnVjdG9yKGU9e30pe3N1cGVyKGUpLHRoaXMuYnJvd3Nlcj1rLHRoaXMuX2tleURvd25IYW5kbGVkPSExLHRoaXMuX2tleURvd25TZWVuPSExLHRoaXMuX2tleVByZXNzSGFuZGxlZD0hMSx0aGlzLl91bnByb2Nlc3NlZERlYWRLZXk9ITEsdGhpcy5fYWNjZXNzaWJpbGl0eU1hbmFnZXI9dGhpcy5yZWdpc3RlcihuZXcgRS5NdXRhYmxlRGlzcG9zYWJsZSksdGhpcy5fb25DdXJzb3JNb3ZlPXRoaXMucmVnaXN0ZXIobmV3IHcuRXZlbnRFbWl0dGVyKSx0aGlzLm9uQ3Vyc29yTW92ZT10aGlzLl9vbkN1cnNvck1vdmUuZXZlbnQsdGhpcy5fb25LZXk9dGhpcy5yZWdpc3RlcihuZXcgdy5FdmVudEVtaXR0ZXIpLHRoaXMub25LZXk9dGhpcy5fb25LZXkuZXZlbnQsdGhpcy5fb25SZW5kZXI9dGhpcy5yZWdpc3RlcihuZXcgdy5FdmVudEVtaXR0ZXIpLHRoaXMub25SZW5kZXI9dGhpcy5fb25SZW5kZXIuZXZlbnQsdGhpcy5fb25TZWxlY3Rpb25DaGFuZ2U9dGhpcy5yZWdpc3RlcihuZXcgdy5FdmVudEVtaXR0ZXIpLHRoaXMub25TZWxlY3Rpb25DaGFuZ2U9dGhpcy5fb25TZWxlY3Rpb25DaGFuZ2UuZXZlbnQsdGhpcy5fb25UaXRsZUNoYW5nZT10aGlzLnJlZ2lzdGVyKG5ldyB3LkV2ZW50RW1pdHRlciksdGhpcy5vblRpdGxlQ2hhbmdlPXRoaXMuX29uVGl0bGVDaGFuZ2UuZXZlbnQsdGhpcy5fb25CZWxsPXRoaXMucmVnaXN0ZXIobmV3IHcuRXZlbnRFbWl0dGVyKSx0aGlzLm9uQmVsbD10aGlzLl9vbkJlbGwuZXZlbnQsdGhpcy5fb25Gb2N1cz10aGlzLnJlZ2lzdGVyKG5ldyB3LkV2ZW50RW1pdHRlciksdGhpcy5fb25CbHVyPXRoaXMucmVnaXN0ZXIobmV3IHcuRXZlbnRFbWl0dGVyKSx0aGlzLl9vbkExMXlDaGFyRW1pdHRlcj10aGlzLnJlZ2lzdGVyKG5ldyB3LkV2ZW50RW1pdHRlciksdGhpcy5fb25BMTF5VGFiRW1pdHRlcj10aGlzLnJlZ2lzdGVyKG5ldyB3LkV2ZW50RW1pdHRlciksdGhpcy5fb25XaWxsT3Blbj10aGlzLnJlZ2lzdGVyKG5ldyB3LkV2ZW50RW1pdHRlciksdGhpcy5fc2V0dXAoKSx0aGlzLmxpbmtpZmllcjI9dGhpcy5yZWdpc3Rlcih0aGlzLl9pbnN0YW50aWF0aW9uU2VydmljZS5jcmVhdGVJbnN0YW5jZShuLkxpbmtpZmllcjIpKSx0aGlzLmxpbmtpZmllcjIucmVnaXN0ZXJMaW5rUHJvdmlkZXIodGhpcy5faW5zdGFudGlhdGlvblNlcnZpY2UuY3JlYXRlSW5zdGFuY2UoYS5Pc2NMaW5rUHJvdmlkZXIpKSx0aGlzLl9kZWNvcmF0aW9uU2VydmljZT10aGlzLl9pbnN0YW50aWF0aW9uU2VydmljZS5jcmVhdGVJbnN0YW5jZShBLkRlY29yYXRpb25TZXJ2aWNlKSx0aGlzLl9pbnN0YW50aWF0aW9uU2VydmljZS5zZXRTZXJ2aWNlKEIuSURlY29yYXRpb25TZXJ2aWNlLHRoaXMuX2RlY29yYXRpb25TZXJ2aWNlKSx0aGlzLnJlZ2lzdGVyKHRoaXMuX2lucHV0SGFuZGxlci5vblJlcXVlc3RCZWxsKCgoKT0+dGhpcy5fb25CZWxsLmZpcmUoKSkpKSx0aGlzLnJlZ2lzdGVyKHRoaXMuX2lucHV0SGFuZGxlci5vblJlcXVlc3RSZWZyZXNoUm93cygoKGUsdCk9PnRoaXMucmVmcmVzaChlLHQpKSkpLHRoaXMucmVnaXN0ZXIodGhpcy5faW5wdXRIYW5kbGVyLm9uUmVxdWVzdFNlbmRGb2N1cygoKCk9PnRoaXMuX3JlcG9ydEZvY3VzKCkpKSksdGhpcy5yZWdpc3Rlcih0aGlzLl9pbnB1dEhhbmRsZXIub25SZXF1ZXN0UmVzZXQoKCgpPT50aGlzLnJlc2V0KCkpKSksdGhpcy5yZWdpc3Rlcih0aGlzLl9pbnB1dEhhbmRsZXIub25SZXF1ZXN0V2luZG93c09wdGlvbnNSZXBvcnQoKGU9PnRoaXMuX3JlcG9ydFdpbmRvd3NPcHRpb25zKGUpKSkpLHRoaXMucmVnaXN0ZXIodGhpcy5faW5wdXRIYW5kbGVyLm9uQ29sb3IoKGU9PnRoaXMuX2hhbmRsZUNvbG9yRXZlbnQoZSkpKSksdGhpcy5yZWdpc3RlcigoMCx3LmZvcndhcmRFdmVudCkodGhpcy5faW5wdXRIYW5kbGVyLm9uQ3Vyc29yTW92ZSx0aGlzLl9vbkN1cnNvck1vdmUpKSx0aGlzLnJlZ2lzdGVyKCgwLHcuZm9yd2FyZEV2ZW50KSh0aGlzLl9pbnB1dEhhbmRsZXIub25UaXRsZUNoYW5nZSx0aGlzLl9vblRpdGxlQ2hhbmdlKSksdGhpcy5yZWdpc3RlcigoMCx3LmZvcndhcmRFdmVudCkodGhpcy5faW5wdXRIYW5kbGVyLm9uQTExeUNoYXIsdGhpcy5fb25BMTF5Q2hhckVtaXR0ZXIpKSx0aGlzLnJlZ2lzdGVyKCgwLHcuZm9yd2FyZEV2ZW50KSh0aGlzLl9pbnB1dEhhbmRsZXIub25BMTF5VGFiLHRoaXMuX29uQTExeVRhYkVtaXR0ZXIpKSx0aGlzLnJlZ2lzdGVyKHRoaXMuX2J1ZmZlclNlcnZpY2Uub25SZXNpemUoKGU9PnRoaXMuX2FmdGVyUmVzaXplKGUuY29scyxlLnJvd3MpKSkpLHRoaXMucmVnaXN0ZXIoKDAsRS50b0Rpc3Bvc2FibGUpKCgoKT0+e3ZhciBlLHQ7dGhpcy5fY3VzdG9tS2V5RXZlbnRIYW5kbGVyPXZvaWQgMCxudWxsPT09KHQ9bnVsbD09PShlPXRoaXMuZWxlbWVudCl8fHZvaWQgMD09PWU/dm9pZCAwOmUucGFyZW50Tm9kZSl8fHZvaWQgMD09PXR8fHQucmVtb3ZlQ2hpbGQodGhpcy5lbGVtZW50KX0pKSl9X2hhbmRsZUNvbG9yRXZlbnQoZSl7aWYodGhpcy5fdGhlbWVTZXJ2aWNlKWZvcihjb25zdCB0IG9mIGUpe2xldCBlLGk9XCJcIjtzd2l0Y2godC5pbmRleCl7Y2FzZSAyNTY6ZT1cImZvcmVncm91bmRcIixpPVwiMTBcIjticmVhaztjYXNlIDI1NzplPVwiYmFja2dyb3VuZFwiLGk9XCIxMVwiO2JyZWFrO2Nhc2UgMjU4OmU9XCJjdXJzb3JcIixpPVwiMTJcIjticmVhaztkZWZhdWx0OmU9XCJhbnNpXCIsaT1cIjQ7XCIrdC5pbmRleH1zd2l0Y2godC50eXBlKXtjYXNlIDA6Y29uc3Qgcz1iLmNvbG9yLnRvQ29sb3JSR0IoXCJhbnNpXCI9PT1lP3RoaXMuX3RoZW1lU2VydmljZS5jb2xvcnMuYW5zaVt0LmluZGV4XTp0aGlzLl90aGVtZVNlcnZpY2UuY29sb3JzW2VdKTt0aGlzLmNvcmVTZXJ2aWNlLnRyaWdnZXJEYXRhRXZlbnQoYCR7RC5DMC5FU0N9XSR7aX07JHsoMCx4LnRvUmdiU3RyaW5nKShzKX0ke0QuQzFfRVNDQVBFRC5TVH1gKTticmVhaztjYXNlIDE6aWYoXCJhbnNpXCI9PT1lKXRoaXMuX3RoZW1lU2VydmljZS5tb2RpZnlDb2xvcnMoKGU9PmUuYW5zaVt0LmluZGV4XT1iLnJnYmEudG9Db2xvciguLi50LmNvbG9yKSkpO2Vsc2V7Y29uc3QgaT1lO3RoaXMuX3RoZW1lU2VydmljZS5tb2RpZnlDb2xvcnMoKGU9PmVbaV09Yi5yZ2JhLnRvQ29sb3IoLi4udC5jb2xvcikpKX1icmVhaztjYXNlIDI6dGhpcy5fdGhlbWVTZXJ2aWNlLnJlc3RvcmVDb2xvcih0LmluZGV4KX19fV9zZXR1cCgpe3N1cGVyLl9zZXR1cCgpLHRoaXMuX2N1c3RvbUtleUV2ZW50SGFuZGxlcj12b2lkIDB9Z2V0IGJ1ZmZlcigpe3JldHVybiB0aGlzLmJ1ZmZlcnMuYWN0aXZlfWZvY3VzKCl7dGhpcy50ZXh0YXJlYSYmdGhpcy50ZXh0YXJlYS5mb2N1cyh7cHJldmVudFNjcm9sbDohMH0pfV9oYW5kbGVTY3JlZW5SZWFkZXJNb2RlT3B0aW9uQ2hhbmdlKGUpe2U/IXRoaXMuX2FjY2Vzc2liaWxpdHlNYW5hZ2VyLnZhbHVlJiZ0aGlzLl9yZW5kZXJTZXJ2aWNlJiYodGhpcy5fYWNjZXNzaWJpbGl0eU1hbmFnZXIudmFsdWU9dGhpcy5faW5zdGFudGlhdGlvblNlcnZpY2UuY3JlYXRlSW5zdGFuY2UoTS5BY2Nlc3NpYmlsaXR5TWFuYWdlcix0aGlzKSk6dGhpcy5fYWNjZXNzaWJpbGl0eU1hbmFnZXIuY2xlYXIoKX1faGFuZGxlVGV4dEFyZWFGb2N1cyhlKXt0aGlzLmNvcmVTZXJ2aWNlLmRlY1ByaXZhdGVNb2Rlcy5zZW5kRm9jdXMmJnRoaXMuY29yZVNlcnZpY2UudHJpZ2dlckRhdGFFdmVudChELkMwLkVTQytcIltJXCIpLHRoaXMudXBkYXRlQ3Vyc29yU3R5bGUoZSksdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoXCJmb2N1c1wiKSx0aGlzLl9zaG93Q3Vyc29yKCksdGhpcy5fb25Gb2N1cy5maXJlKCl9Ymx1cigpe3ZhciBlO3JldHVybiBudWxsPT09KGU9dGhpcy50ZXh0YXJlYSl8fHZvaWQgMD09PWU/dm9pZCAwOmUuYmx1cigpfV9oYW5kbGVUZXh0QXJlYUJsdXIoKXt0aGlzLnRleHRhcmVhLnZhbHVlPVwiXCIsdGhpcy5yZWZyZXNoKHRoaXMuYnVmZmVyLnksdGhpcy5idWZmZXIueSksdGhpcy5jb3JlU2VydmljZS5kZWNQcml2YXRlTW9kZXMuc2VuZEZvY3VzJiZ0aGlzLmNvcmVTZXJ2aWNlLnRyaWdnZXJEYXRhRXZlbnQoRC5DMC5FU0MrXCJbT1wiKSx0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShcImZvY3VzXCIpLHRoaXMuX29uQmx1ci5maXJlKCl9X3N5bmNUZXh0QXJlYSgpe2lmKCF0aGlzLnRleHRhcmVhfHwhdGhpcy5idWZmZXIuaXNDdXJzb3JJblZpZXdwb3J0fHx0aGlzLl9jb21wb3NpdGlvbkhlbHBlci5pc0NvbXBvc2luZ3x8IXRoaXMuX3JlbmRlclNlcnZpY2UpcmV0dXJuO2NvbnN0IGU9dGhpcy5idWZmZXIueWJhc2UrdGhpcy5idWZmZXIueSx0PXRoaXMuYnVmZmVyLmxpbmVzLmdldChlKTtpZighdClyZXR1cm47Y29uc3QgaT1NYXRoLm1pbih0aGlzLmJ1ZmZlci54LHRoaXMuY29scy0xKSxzPXRoaXMuX3JlbmRlclNlcnZpY2UuZGltZW5zaW9ucy5jc3MuY2VsbC5oZWlnaHQscj10LmdldFdpZHRoKGkpLG49dGhpcy5fcmVuZGVyU2VydmljZS5kaW1lbnNpb25zLmNzcy5jZWxsLndpZHRoKnIsbz10aGlzLmJ1ZmZlci55KnRoaXMuX3JlbmRlclNlcnZpY2UuZGltZW5zaW9ucy5jc3MuY2VsbC5oZWlnaHQsYT1pKnRoaXMuX3JlbmRlclNlcnZpY2UuZGltZW5zaW9ucy5jc3MuY2VsbC53aWR0aDt0aGlzLnRleHRhcmVhLnN0eWxlLmxlZnQ9YStcInB4XCIsdGhpcy50ZXh0YXJlYS5zdHlsZS50b3A9bytcInB4XCIsdGhpcy50ZXh0YXJlYS5zdHlsZS53aWR0aD1uK1wicHhcIix0aGlzLnRleHRhcmVhLnN0eWxlLmhlaWdodD1zK1wicHhcIix0aGlzLnRleHRhcmVhLnN0eWxlLmxpbmVIZWlnaHQ9cytcInB4XCIsdGhpcy50ZXh0YXJlYS5zdHlsZS56SW5kZXg9XCItNVwifV9pbml0R2xvYmFsKCl7dGhpcy5fYmluZEtleXMoKSx0aGlzLnJlZ2lzdGVyKCgwLHIuYWRkRGlzcG9zYWJsZURvbUxpc3RlbmVyKSh0aGlzLmVsZW1lbnQsXCJjb3B5XCIsKGU9Pnt0aGlzLmhhc1NlbGVjdGlvbigpJiYoMCxzLmNvcHlIYW5kbGVyKShlLHRoaXMuX3NlbGVjdGlvblNlcnZpY2UpfSkpKTtjb25zdCBlPWU9PigwLHMuaGFuZGxlUGFzdGVFdmVudCkoZSx0aGlzLnRleHRhcmVhLHRoaXMuY29yZVNlcnZpY2UsdGhpcy5vcHRpb25zU2VydmljZSk7dGhpcy5yZWdpc3RlcigoMCxyLmFkZERpc3Bvc2FibGVEb21MaXN0ZW5lcikodGhpcy50ZXh0YXJlYSxcInBhc3RlXCIsZSkpLHRoaXMucmVnaXN0ZXIoKDAsci5hZGREaXNwb3NhYmxlRG9tTGlzdGVuZXIpKHRoaXMuZWxlbWVudCxcInBhc3RlXCIsZSkpLGsuaXNGaXJlZm94P3RoaXMucmVnaXN0ZXIoKDAsci5hZGREaXNwb3NhYmxlRG9tTGlzdGVuZXIpKHRoaXMuZWxlbWVudCxcIm1vdXNlZG93blwiLChlPT57Mj09PWUuYnV0dG9uJiYoMCxzLnJpZ2h0Q2xpY2tIYW5kbGVyKShlLHRoaXMudGV4dGFyZWEsdGhpcy5zY3JlZW5FbGVtZW50LHRoaXMuX3NlbGVjdGlvblNlcnZpY2UsdGhpcy5vcHRpb25zLnJpZ2h0Q2xpY2tTZWxlY3RzV29yZCl9KSkpOnRoaXMucmVnaXN0ZXIoKDAsci5hZGREaXNwb3NhYmxlRG9tTGlzdGVuZXIpKHRoaXMuZWxlbWVudCxcImNvbnRleHRtZW51XCIsKGU9PnsoMCxzLnJpZ2h0Q2xpY2tIYW5kbGVyKShlLHRoaXMudGV4dGFyZWEsdGhpcy5zY3JlZW5FbGVtZW50LHRoaXMuX3NlbGVjdGlvblNlcnZpY2UsdGhpcy5vcHRpb25zLnJpZ2h0Q2xpY2tTZWxlY3RzV29yZCl9KSkpLGsuaXNMaW51eCYmdGhpcy5yZWdpc3RlcigoMCxyLmFkZERpc3Bvc2FibGVEb21MaXN0ZW5lcikodGhpcy5lbGVtZW50LFwiYXV4Y2xpY2tcIiwoZT0+ezE9PT1lLmJ1dHRvbiYmKDAscy5tb3ZlVGV4dEFyZWFVbmRlck1vdXNlQ3Vyc29yKShlLHRoaXMudGV4dGFyZWEsdGhpcy5zY3JlZW5FbGVtZW50KX0pKSl9X2JpbmRLZXlzKCl7dGhpcy5yZWdpc3RlcigoMCxyLmFkZERpc3Bvc2FibGVEb21MaXN0ZW5lcikodGhpcy50ZXh0YXJlYSxcImtleXVwXCIsKGU9PnRoaXMuX2tleVVwKGUpKSwhMCkpLHRoaXMucmVnaXN0ZXIoKDAsci5hZGREaXNwb3NhYmxlRG9tTGlzdGVuZXIpKHRoaXMudGV4dGFyZWEsXCJrZXlkb3duXCIsKGU9PnRoaXMuX2tleURvd24oZSkpLCEwKSksdGhpcy5yZWdpc3RlcigoMCxyLmFkZERpc3Bvc2FibGVEb21MaXN0ZW5lcikodGhpcy50ZXh0YXJlYSxcImtleXByZXNzXCIsKGU9PnRoaXMuX2tleVByZXNzKGUpKSwhMCkpLHRoaXMucmVnaXN0ZXIoKDAsci5hZGREaXNwb3NhYmxlRG9tTGlzdGVuZXIpKHRoaXMudGV4dGFyZWEsXCJjb21wb3NpdGlvbnN0YXJ0XCIsKCgpPT50aGlzLl9jb21wb3NpdGlvbkhlbHBlci5jb21wb3NpdGlvbnN0YXJ0KCkpKSksdGhpcy5yZWdpc3RlcigoMCxyLmFkZERpc3Bvc2FibGVEb21MaXN0ZW5lcikodGhpcy50ZXh0YXJlYSxcImNvbXBvc2l0aW9udXBkYXRlXCIsKGU9PnRoaXMuX2NvbXBvc2l0aW9uSGVscGVyLmNvbXBvc2l0aW9udXBkYXRlKGUpKSkpLHRoaXMucmVnaXN0ZXIoKDAsci5hZGREaXNwb3NhYmxlRG9tTGlzdGVuZXIpKHRoaXMudGV4dGFyZWEsXCJjb21wb3NpdGlvbmVuZFwiLCgoKT0+dGhpcy5fY29tcG9zaXRpb25IZWxwZXIuY29tcG9zaXRpb25lbmQoKSkpKSx0aGlzLnJlZ2lzdGVyKCgwLHIuYWRkRGlzcG9zYWJsZURvbUxpc3RlbmVyKSh0aGlzLnRleHRhcmVhLFwiaW5wdXRcIiwoZT0+dGhpcy5faW5wdXRFdmVudChlKSksITApKSx0aGlzLnJlZ2lzdGVyKHRoaXMub25SZW5kZXIoKCgpPT50aGlzLl9jb21wb3NpdGlvbkhlbHBlci51cGRhdGVDb21wb3NpdGlvbkVsZW1lbnRzKCkpKSl9b3BlbihlKXt2YXIgdDtpZighZSl0aHJvdyBuZXcgRXJyb3IoXCJUZXJtaW5hbCByZXF1aXJlcyBhIHBhcmVudCBlbGVtZW50LlwiKTtlLmlzQ29ubmVjdGVkfHx0aGlzLl9sb2dTZXJ2aWNlLmRlYnVnKFwiVGVybWluYWwub3BlbiB3YXMgY2FsbGVkIG9uIGFuIGVsZW1lbnQgdGhhdCB3YXMgbm90IGF0dGFjaGVkIHRvIHRoZSBET01cIiksdGhpcy5fZG9jdW1lbnQ9ZS5vd25lckRvY3VtZW50LHRoaXMuZWxlbWVudD10aGlzLl9kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLHRoaXMuZWxlbWVudC5kaXI9XCJsdHJcIix0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZChcInRlcm1pbmFsXCIpLHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKFwieHRlcm1cIiksZS5hcHBlbmRDaGlsZCh0aGlzLmVsZW1lbnQpO2NvbnN0IGk9Ty5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7dGhpcy5fdmlld3BvcnRFbGVtZW50PU8uY3JlYXRlRWxlbWVudChcImRpdlwiKSx0aGlzLl92aWV3cG9ydEVsZW1lbnQuY2xhc3NMaXN0LmFkZChcInh0ZXJtLXZpZXdwb3J0XCIpLGkuYXBwZW5kQ2hpbGQodGhpcy5fdmlld3BvcnRFbGVtZW50KSx0aGlzLl92aWV3cG9ydFNjcm9sbEFyZWE9Ty5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLHRoaXMuX3ZpZXdwb3J0U2Nyb2xsQXJlYS5jbGFzc0xpc3QuYWRkKFwieHRlcm0tc2Nyb2xsLWFyZWFcIiksdGhpcy5fdmlld3BvcnRFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX3ZpZXdwb3J0U2Nyb2xsQXJlYSksdGhpcy5zY3JlZW5FbGVtZW50PU8uY3JlYXRlRWxlbWVudChcImRpdlwiKSx0aGlzLnNjcmVlbkVsZW1lbnQuY2xhc3NMaXN0LmFkZChcInh0ZXJtLXNjcmVlblwiKSx0aGlzLl9oZWxwZXJDb250YWluZXI9Ty5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLHRoaXMuX2hlbHBlckNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKFwieHRlcm0taGVscGVyc1wiKSx0aGlzLnNjcmVlbkVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5faGVscGVyQ29udGFpbmVyKSxpLmFwcGVuZENoaWxkKHRoaXMuc2NyZWVuRWxlbWVudCksdGhpcy50ZXh0YXJlYT1PLmNyZWF0ZUVsZW1lbnQoXCJ0ZXh0YXJlYVwiKSx0aGlzLnRleHRhcmVhLmNsYXNzTGlzdC5hZGQoXCJ4dGVybS1oZWxwZXItdGV4dGFyZWFcIiksdGhpcy50ZXh0YXJlYS5zZXRBdHRyaWJ1dGUoXCJhcmlhLWxhYmVsXCIsby5wcm9tcHRMYWJlbCksay5pc0Nocm9tZU9TfHx0aGlzLnRleHRhcmVhLnNldEF0dHJpYnV0ZShcImFyaWEtbXVsdGlsaW5lXCIsXCJmYWxzZVwiKSx0aGlzLnRleHRhcmVhLnNldEF0dHJpYnV0ZShcImF1dG9jb3JyZWN0XCIsXCJvZmZcIiksdGhpcy50ZXh0YXJlYS5zZXRBdHRyaWJ1dGUoXCJhdXRvY2FwaXRhbGl6ZVwiLFwib2ZmXCIpLHRoaXMudGV4dGFyZWEuc2V0QXR0cmlidXRlKFwic3BlbGxjaGVja1wiLFwiZmFsc2VcIiksdGhpcy50ZXh0YXJlYS50YWJJbmRleD0wLHRoaXMuX2NvcmVCcm93c2VyU2VydmljZT10aGlzLl9pbnN0YW50aWF0aW9uU2VydmljZS5jcmVhdGVJbnN0YW5jZSh2LkNvcmVCcm93c2VyU2VydmljZSx0aGlzLnRleHRhcmVhLG51bGwhPT0odD10aGlzLl9kb2N1bWVudC5kZWZhdWx0VmlldykmJnZvaWQgMCE9PXQ/dDp3aW5kb3cpLHRoaXMuX2luc3RhbnRpYXRpb25TZXJ2aWNlLnNldFNlcnZpY2UoUy5JQ29yZUJyb3dzZXJTZXJ2aWNlLHRoaXMuX2NvcmVCcm93c2VyU2VydmljZSksdGhpcy5yZWdpc3RlcigoMCxyLmFkZERpc3Bvc2FibGVEb21MaXN0ZW5lcikodGhpcy50ZXh0YXJlYSxcImZvY3VzXCIsKGU9PnRoaXMuX2hhbmRsZVRleHRBcmVhRm9jdXMoZSkpKSksdGhpcy5yZWdpc3RlcigoMCxyLmFkZERpc3Bvc2FibGVEb21MaXN0ZW5lcikodGhpcy50ZXh0YXJlYSxcImJsdXJcIiwoKCk9PnRoaXMuX2hhbmRsZVRleHRBcmVhQmx1cigpKSkpLHRoaXMuX2hlbHBlckNvbnRhaW5lci5hcHBlbmRDaGlsZCh0aGlzLnRleHRhcmVhKSx0aGlzLl9jaGFyU2l6ZVNlcnZpY2U9dGhpcy5faW5zdGFudGlhdGlvblNlcnZpY2UuY3JlYXRlSW5zdGFuY2UodS5DaGFyU2l6ZVNlcnZpY2UsdGhpcy5fZG9jdW1lbnQsdGhpcy5faGVscGVyQ29udGFpbmVyKSx0aGlzLl9pbnN0YW50aWF0aW9uU2VydmljZS5zZXRTZXJ2aWNlKFMuSUNoYXJTaXplU2VydmljZSx0aGlzLl9jaGFyU2l6ZVNlcnZpY2UpLHRoaXMuX3RoZW1lU2VydmljZT10aGlzLl9pbnN0YW50aWF0aW9uU2VydmljZS5jcmVhdGVJbnN0YW5jZShDLlRoZW1lU2VydmljZSksdGhpcy5faW5zdGFudGlhdGlvblNlcnZpY2Uuc2V0U2VydmljZShTLklUaGVtZVNlcnZpY2UsdGhpcy5fdGhlbWVTZXJ2aWNlKSx0aGlzLl9jaGFyYWN0ZXJKb2luZXJTZXJ2aWNlPXRoaXMuX2luc3RhbnRpYXRpb25TZXJ2aWNlLmNyZWF0ZUluc3RhbmNlKGYuQ2hhcmFjdGVySm9pbmVyU2VydmljZSksdGhpcy5faW5zdGFudGlhdGlvblNlcnZpY2Uuc2V0U2VydmljZShTLklDaGFyYWN0ZXJKb2luZXJTZXJ2aWNlLHRoaXMuX2NoYXJhY3RlckpvaW5lclNlcnZpY2UpLHRoaXMuX3JlbmRlclNlcnZpY2U9dGhpcy5yZWdpc3Rlcih0aGlzLl9pbnN0YW50aWF0aW9uU2VydmljZS5jcmVhdGVJbnN0YW5jZShnLlJlbmRlclNlcnZpY2UsdGhpcy5yb3dzLHRoaXMuc2NyZWVuRWxlbWVudCkpLHRoaXMuX2luc3RhbnRpYXRpb25TZXJ2aWNlLnNldFNlcnZpY2UoUy5JUmVuZGVyU2VydmljZSx0aGlzLl9yZW5kZXJTZXJ2aWNlKSx0aGlzLnJlZ2lzdGVyKHRoaXMuX3JlbmRlclNlcnZpY2Uub25SZW5kZXJlZFZpZXdwb3J0Q2hhbmdlKChlPT50aGlzLl9vblJlbmRlci5maXJlKGUpKSkpLHRoaXMub25SZXNpemUoKGU9PnRoaXMuX3JlbmRlclNlcnZpY2UucmVzaXplKGUuY29scyxlLnJvd3MpKSksdGhpcy5fY29tcG9zaXRpb25WaWV3PU8uY3JlYXRlRWxlbWVudChcImRpdlwiKSx0aGlzLl9jb21wb3NpdGlvblZpZXcuY2xhc3NMaXN0LmFkZChcImNvbXBvc2l0aW9uLXZpZXdcIiksdGhpcy5fY29tcG9zaXRpb25IZWxwZXI9dGhpcy5faW5zdGFudGlhdGlvblNlcnZpY2UuY3JlYXRlSW5zdGFuY2UoZC5Db21wb3NpdGlvbkhlbHBlcix0aGlzLnRleHRhcmVhLHRoaXMuX2NvbXBvc2l0aW9uVmlldyksdGhpcy5faGVscGVyQ29udGFpbmVyLmFwcGVuZENoaWxkKHRoaXMuX2NvbXBvc2l0aW9uVmlldyksdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKGkpO3RyeXt0aGlzLl9vbldpbGxPcGVuLmZpcmUodGhpcy5lbGVtZW50KX1jYXRjaChlKXt9dGhpcy5fcmVuZGVyU2VydmljZS5oYXNSZW5kZXJlcigpfHx0aGlzLl9yZW5kZXJTZXJ2aWNlLnNldFJlbmRlcmVyKHRoaXMuX2NyZWF0ZVJlbmRlcmVyKCkpLHRoaXMuX21vdXNlU2VydmljZT10aGlzLl9pbnN0YW50aWF0aW9uU2VydmljZS5jcmVhdGVJbnN0YW5jZShwLk1vdXNlU2VydmljZSksdGhpcy5faW5zdGFudGlhdGlvblNlcnZpY2Uuc2V0U2VydmljZShTLklNb3VzZVNlcnZpY2UsdGhpcy5fbW91c2VTZXJ2aWNlKSx0aGlzLnZpZXdwb3J0PXRoaXMuX2luc3RhbnRpYXRpb25TZXJ2aWNlLmNyZWF0ZUluc3RhbmNlKGguVmlld3BvcnQsdGhpcy5fdmlld3BvcnRFbGVtZW50LHRoaXMuX3ZpZXdwb3J0U2Nyb2xsQXJlYSksdGhpcy52aWV3cG9ydC5vblJlcXVlc3RTY3JvbGxMaW5lcygoZT0+dGhpcy5zY3JvbGxMaW5lcyhlLmFtb3VudCxlLnN1cHByZXNzU2Nyb2xsRXZlbnQsMSkpKSx0aGlzLnJlZ2lzdGVyKHRoaXMuX2lucHV0SGFuZGxlci5vblJlcXVlc3RTeW5jU2Nyb2xsQmFyKCgoKT0+dGhpcy52aWV3cG9ydC5zeW5jU2Nyb2xsQXJlYSgpKSkpLHRoaXMucmVnaXN0ZXIodGhpcy52aWV3cG9ydCksdGhpcy5yZWdpc3Rlcih0aGlzLm9uQ3Vyc29yTW92ZSgoKCk9Pnt0aGlzLl9yZW5kZXJTZXJ2aWNlLmhhbmRsZUN1cnNvck1vdmUoKSx0aGlzLl9zeW5jVGV4dEFyZWEoKX0pKSksdGhpcy5yZWdpc3Rlcih0aGlzLm9uUmVzaXplKCgoKT0+dGhpcy5fcmVuZGVyU2VydmljZS5oYW5kbGVSZXNpemUodGhpcy5jb2xzLHRoaXMucm93cykpKSksdGhpcy5yZWdpc3Rlcih0aGlzLm9uQmx1cigoKCk9PnRoaXMuX3JlbmRlclNlcnZpY2UuaGFuZGxlQmx1cigpKSkpLHRoaXMucmVnaXN0ZXIodGhpcy5vbkZvY3VzKCgoKT0+dGhpcy5fcmVuZGVyU2VydmljZS5oYW5kbGVGb2N1cygpKSkpLHRoaXMucmVnaXN0ZXIodGhpcy5fcmVuZGVyU2VydmljZS5vbkRpbWVuc2lvbnNDaGFuZ2UoKCgpPT50aGlzLnZpZXdwb3J0LnN5bmNTY3JvbGxBcmVhKCkpKSksdGhpcy5fc2VsZWN0aW9uU2VydmljZT10aGlzLnJlZ2lzdGVyKHRoaXMuX2luc3RhbnRpYXRpb25TZXJ2aWNlLmNyZWF0ZUluc3RhbmNlKG0uU2VsZWN0aW9uU2VydmljZSx0aGlzLmVsZW1lbnQsdGhpcy5zY3JlZW5FbGVtZW50LHRoaXMubGlua2lmaWVyMikpLHRoaXMuX2luc3RhbnRpYXRpb25TZXJ2aWNlLnNldFNlcnZpY2UoUy5JU2VsZWN0aW9uU2VydmljZSx0aGlzLl9zZWxlY3Rpb25TZXJ2aWNlKSx0aGlzLnJlZ2lzdGVyKHRoaXMuX3NlbGVjdGlvblNlcnZpY2Uub25SZXF1ZXN0U2Nyb2xsTGluZXMoKGU9PnRoaXMuc2Nyb2xsTGluZXMoZS5hbW91bnQsZS5zdXBwcmVzc1Njcm9sbEV2ZW50KSkpKSx0aGlzLnJlZ2lzdGVyKHRoaXMuX3NlbGVjdGlvblNlcnZpY2Uub25TZWxlY3Rpb25DaGFuZ2UoKCgpPT50aGlzLl9vblNlbGVjdGlvbkNoYW5nZS5maXJlKCkpKSksdGhpcy5yZWdpc3Rlcih0aGlzLl9zZWxlY3Rpb25TZXJ2aWNlLm9uUmVxdWVzdFJlZHJhdygoZT0+dGhpcy5fcmVuZGVyU2VydmljZS5oYW5kbGVTZWxlY3Rpb25DaGFuZ2VkKGUuc3RhcnQsZS5lbmQsZS5jb2x1bW5TZWxlY3RNb2RlKSkpKSx0aGlzLnJlZ2lzdGVyKHRoaXMuX3NlbGVjdGlvblNlcnZpY2Uub25MaW51eE1vdXNlU2VsZWN0aW9uKChlPT57dGhpcy50ZXh0YXJlYS52YWx1ZT1lLHRoaXMudGV4dGFyZWEuZm9jdXMoKSx0aGlzLnRleHRhcmVhLnNlbGVjdCgpfSkpKSx0aGlzLnJlZ2lzdGVyKHRoaXMuX29uU2Nyb2xsLmV2ZW50KChlPT57dGhpcy52aWV3cG9ydC5zeW5jU2Nyb2xsQXJlYSgpLHRoaXMuX3NlbGVjdGlvblNlcnZpY2UucmVmcmVzaCgpfSkpKSx0aGlzLnJlZ2lzdGVyKCgwLHIuYWRkRGlzcG9zYWJsZURvbUxpc3RlbmVyKSh0aGlzLl92aWV3cG9ydEVsZW1lbnQsXCJzY3JvbGxcIiwoKCk9PnRoaXMuX3NlbGVjdGlvblNlcnZpY2UucmVmcmVzaCgpKSkpLHRoaXMubGlua2lmaWVyMi5hdHRhY2hUb0RvbSh0aGlzLnNjcmVlbkVsZW1lbnQsdGhpcy5fbW91c2VTZXJ2aWNlLHRoaXMuX3JlbmRlclNlcnZpY2UpLHRoaXMucmVnaXN0ZXIodGhpcy5faW5zdGFudGlhdGlvblNlcnZpY2UuY3JlYXRlSW5zdGFuY2UoYy5CdWZmZXJEZWNvcmF0aW9uUmVuZGVyZXIsdGhpcy5zY3JlZW5FbGVtZW50KSksdGhpcy5yZWdpc3RlcigoMCxyLmFkZERpc3Bvc2FibGVEb21MaXN0ZW5lcikodGhpcy5lbGVtZW50LFwibW91c2Vkb3duXCIsKGU9PnRoaXMuX3NlbGVjdGlvblNlcnZpY2UuaGFuZGxlTW91c2VEb3duKGUpKSkpLHRoaXMuY29yZU1vdXNlU2VydmljZS5hcmVNb3VzZUV2ZW50c0FjdGl2ZT8odGhpcy5fc2VsZWN0aW9uU2VydmljZS5kaXNhYmxlKCksdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoXCJlbmFibGUtbW91c2UtZXZlbnRzXCIpKTp0aGlzLl9zZWxlY3Rpb25TZXJ2aWNlLmVuYWJsZSgpLHRoaXMub3B0aW9ucy5zY3JlZW5SZWFkZXJNb2RlJiYodGhpcy5fYWNjZXNzaWJpbGl0eU1hbmFnZXIudmFsdWU9dGhpcy5faW5zdGFudGlhdGlvblNlcnZpY2UuY3JlYXRlSW5zdGFuY2UoTS5BY2Nlc3NpYmlsaXR5TWFuYWdlcix0aGlzKSksdGhpcy5yZWdpc3Rlcih0aGlzLm9wdGlvbnNTZXJ2aWNlLm9uU3BlY2lmaWNPcHRpb25DaGFuZ2UoXCJzY3JlZW5SZWFkZXJNb2RlXCIsKGU9PnRoaXMuX2hhbmRsZVNjcmVlblJlYWRlck1vZGVPcHRpb25DaGFuZ2UoZSkpKSksdGhpcy5vcHRpb25zLm92ZXJ2aWV3UnVsZXJXaWR0aCYmKHRoaXMuX292ZXJ2aWV3UnVsZXJSZW5kZXJlcj10aGlzLnJlZ2lzdGVyKHRoaXMuX2luc3RhbnRpYXRpb25TZXJ2aWNlLmNyZWF0ZUluc3RhbmNlKGwuT3ZlcnZpZXdSdWxlclJlbmRlcmVyLHRoaXMuX3ZpZXdwb3J0RWxlbWVudCx0aGlzLnNjcmVlbkVsZW1lbnQpKSksdGhpcy5vcHRpb25zU2VydmljZS5vblNwZWNpZmljT3B0aW9uQ2hhbmdlKFwib3ZlcnZpZXdSdWxlcldpZHRoXCIsKGU9PnshdGhpcy5fb3ZlcnZpZXdSdWxlclJlbmRlcmVyJiZlJiZ0aGlzLl92aWV3cG9ydEVsZW1lbnQmJnRoaXMuc2NyZWVuRWxlbWVudCYmKHRoaXMuX292ZXJ2aWV3UnVsZXJSZW5kZXJlcj10aGlzLnJlZ2lzdGVyKHRoaXMuX2luc3RhbnRpYXRpb25TZXJ2aWNlLmNyZWF0ZUluc3RhbmNlKGwuT3ZlcnZpZXdSdWxlclJlbmRlcmVyLHRoaXMuX3ZpZXdwb3J0RWxlbWVudCx0aGlzLnNjcmVlbkVsZW1lbnQpKSl9KSksdGhpcy5fY2hhclNpemVTZXJ2aWNlLm1lYXN1cmUoKSx0aGlzLnJlZnJlc2goMCx0aGlzLnJvd3MtMSksdGhpcy5faW5pdEdsb2JhbCgpLHRoaXMuYmluZE1vdXNlKCl9X2NyZWF0ZVJlbmRlcmVyKCl7cmV0dXJuIHRoaXMuX2luc3RhbnRpYXRpb25TZXJ2aWNlLmNyZWF0ZUluc3RhbmNlKF8uRG9tUmVuZGVyZXIsdGhpcy5lbGVtZW50LHRoaXMuc2NyZWVuRWxlbWVudCx0aGlzLl92aWV3cG9ydEVsZW1lbnQsdGhpcy5saW5raWZpZXIyKX1iaW5kTW91c2UoKXtjb25zdCBlPXRoaXMsdD10aGlzLmVsZW1lbnQ7ZnVuY3Rpb24gaSh0KXtjb25zdCBpPWUuX21vdXNlU2VydmljZS5nZXRNb3VzZVJlcG9ydENvb3Jkcyh0LGUuc2NyZWVuRWxlbWVudCk7aWYoIWkpcmV0dXJuITE7bGV0IHMscjtzd2l0Y2godC5vdmVycmlkZVR5cGV8fHQudHlwZSl7Y2FzZVwibW91c2Vtb3ZlXCI6cj0zMix2b2lkIDA9PT10LmJ1dHRvbnM/KHM9Myx2b2lkIDAhPT10LmJ1dHRvbiYmKHM9dC5idXR0b248Mz90LmJ1dHRvbjozKSk6cz0xJnQuYnV0dG9ucz8wOjQmdC5idXR0b25zPzE6MiZ0LmJ1dHRvbnM/MjozO2JyZWFrO2Nhc2VcIm1vdXNldXBcIjpyPTAscz10LmJ1dHRvbjwzP3QuYnV0dG9uOjM7YnJlYWs7Y2FzZVwibW91c2Vkb3duXCI6cj0xLHM9dC5idXR0b248Mz90LmJ1dHRvbjozO2JyZWFrO2Nhc2VcIndoZWVsXCI6aWYoMD09PWUudmlld3BvcnQuZ2V0TGluZXNTY3JvbGxlZCh0KSlyZXR1cm4hMTtyPXQuZGVsdGFZPDA/MDoxLHM9NDticmVhaztkZWZhdWx0OnJldHVybiExfXJldHVybiEodm9pZCAwPT09cnx8dm9pZCAwPT09c3x8cz40KSYmZS5jb3JlTW91c2VTZXJ2aWNlLnRyaWdnZXJNb3VzZUV2ZW50KHtjb2w6aS5jb2wscm93Omkucm93LHg6aS54LHk6aS55LGJ1dHRvbjpzLGFjdGlvbjpyLGN0cmw6dC5jdHJsS2V5LGFsdDp0LmFsdEtleSxzaGlmdDp0LnNoaWZ0S2V5fSl9Y29uc3Qgcz17bW91c2V1cDpudWxsLHdoZWVsOm51bGwsbW91c2VkcmFnOm51bGwsbW91c2Vtb3ZlOm51bGx9LG49e21vdXNldXA6ZT0+KGkoZSksZS5idXR0b25zfHwodGhpcy5fZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1vdXNldXBcIixzLm1vdXNldXApLHMubW91c2VkcmFnJiZ0aGlzLl9kb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwibW91c2Vtb3ZlXCIscy5tb3VzZWRyYWcpKSx0aGlzLmNhbmNlbChlKSksd2hlZWw6ZT0+KGkoZSksdGhpcy5jYW5jZWwoZSwhMCkpLG1vdXNlZHJhZzplPT57ZS5idXR0b25zJiZpKGUpfSxtb3VzZW1vdmU6ZT0+e2UuYnV0dG9uc3x8aShlKX19O3RoaXMucmVnaXN0ZXIodGhpcy5jb3JlTW91c2VTZXJ2aWNlLm9uUHJvdG9jb2xDaGFuZ2UoKGU9PntlPyhcImRlYnVnXCI9PT10aGlzLm9wdGlvbnNTZXJ2aWNlLnJhd09wdGlvbnMubG9nTGV2ZWwmJnRoaXMuX2xvZ1NlcnZpY2UuZGVidWcoXCJCaW5kaW5nIHRvIG1vdXNlIGV2ZW50czpcIix0aGlzLmNvcmVNb3VzZVNlcnZpY2UuZXhwbGFpbkV2ZW50cyhlKSksdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoXCJlbmFibGUtbW91c2UtZXZlbnRzXCIpLHRoaXMuX3NlbGVjdGlvblNlcnZpY2UuZGlzYWJsZSgpKToodGhpcy5fbG9nU2VydmljZS5kZWJ1ZyhcIlVuYmluZGluZyBmcm9tIG1vdXNlIGV2ZW50cy5cIiksdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoXCJlbmFibGUtbW91c2UtZXZlbnRzXCIpLHRoaXMuX3NlbGVjdGlvblNlcnZpY2UuZW5hYmxlKCkpLDgmZT9zLm1vdXNlbW92ZXx8KHQuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlbW92ZVwiLG4ubW91c2Vtb3ZlKSxzLm1vdXNlbW92ZT1uLm1vdXNlbW92ZSk6KHQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1vdXNlbW92ZVwiLHMubW91c2Vtb3ZlKSxzLm1vdXNlbW92ZT1udWxsKSwxNiZlP3Mud2hlZWx8fCh0LmFkZEV2ZW50TGlzdGVuZXIoXCJ3aGVlbFwiLG4ud2hlZWwse3Bhc3NpdmU6ITF9KSxzLndoZWVsPW4ud2hlZWwpOih0LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJ3aGVlbFwiLHMud2hlZWwpLHMud2hlZWw9bnVsbCksMiZlP3MubW91c2V1cHx8KHQuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNldXBcIixuLm1vdXNldXApLHMubW91c2V1cD1uLm1vdXNldXApOih0aGlzLl9kb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwibW91c2V1cFwiLHMubW91c2V1cCksdC5yZW1vdmVFdmVudExpc3RlbmVyKFwibW91c2V1cFwiLHMubW91c2V1cCkscy5tb3VzZXVwPW51bGwpLDQmZT9zLm1vdXNlZHJhZ3x8KHMubW91c2VkcmFnPW4ubW91c2VkcmFnKToodGhpcy5fZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1vdXNlbW92ZVwiLHMubW91c2VkcmFnKSxzLm1vdXNlZHJhZz1udWxsKX0pKSksdGhpcy5jb3JlTW91c2VTZXJ2aWNlLmFjdGl2ZVByb3RvY29sPXRoaXMuY29yZU1vdXNlU2VydmljZS5hY3RpdmVQcm90b2NvbCx0aGlzLnJlZ2lzdGVyKCgwLHIuYWRkRGlzcG9zYWJsZURvbUxpc3RlbmVyKSh0LFwibW91c2Vkb3duXCIsKGU9PntpZihlLnByZXZlbnREZWZhdWx0KCksdGhpcy5mb2N1cygpLHRoaXMuY29yZU1vdXNlU2VydmljZS5hcmVNb3VzZUV2ZW50c0FjdGl2ZSYmIXRoaXMuX3NlbGVjdGlvblNlcnZpY2Uuc2hvdWxkRm9yY2VTZWxlY3Rpb24oZSkpcmV0dXJuIGkoZSkscy5tb3VzZXVwJiZ0aGlzLl9kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwibW91c2V1cFwiLHMubW91c2V1cCkscy5tb3VzZWRyYWcmJnRoaXMuX2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZW1vdmVcIixzLm1vdXNlZHJhZyksdGhpcy5jYW5jZWwoZSl9KSkpLHRoaXMucmVnaXN0ZXIoKDAsci5hZGREaXNwb3NhYmxlRG9tTGlzdGVuZXIpKHQsXCJ3aGVlbFwiLChlPT57aWYoIXMud2hlZWwpe2lmKCF0aGlzLmJ1ZmZlci5oYXNTY3JvbGxiYWNrKXtjb25zdCB0PXRoaXMudmlld3BvcnQuZ2V0TGluZXNTY3JvbGxlZChlKTtpZigwPT09dClyZXR1cm47Y29uc3QgaT1ELkMwLkVTQysodGhpcy5jb3JlU2VydmljZS5kZWNQcml2YXRlTW9kZXMuYXBwbGljYXRpb25DdXJzb3JLZXlzP1wiT1wiOlwiW1wiKSsoZS5kZWx0YVk8MD9cIkFcIjpcIkJcIik7bGV0IHM9XCJcIjtmb3IobGV0IGU9MDtlPE1hdGguYWJzKHQpO2UrKylzKz1pO3JldHVybiB0aGlzLmNvcmVTZXJ2aWNlLnRyaWdnZXJEYXRhRXZlbnQocywhMCksdGhpcy5jYW5jZWwoZSwhMCl9cmV0dXJuIHRoaXMudmlld3BvcnQuaGFuZGxlV2hlZWwoZSk/dGhpcy5jYW5jZWwoZSk6dm9pZCAwfX0pLHtwYXNzaXZlOiExfSkpLHRoaXMucmVnaXN0ZXIoKDAsci5hZGREaXNwb3NhYmxlRG9tTGlzdGVuZXIpKHQsXCJ0b3VjaHN0YXJ0XCIsKGU9PntpZighdGhpcy5jb3JlTW91c2VTZXJ2aWNlLmFyZU1vdXNlRXZlbnRzQWN0aXZlKXJldHVybiB0aGlzLnZpZXdwb3J0LmhhbmRsZVRvdWNoU3RhcnQoZSksdGhpcy5jYW5jZWwoZSl9KSx7cGFzc2l2ZTohMH0pKSx0aGlzLnJlZ2lzdGVyKCgwLHIuYWRkRGlzcG9zYWJsZURvbUxpc3RlbmVyKSh0LFwidG91Y2htb3ZlXCIsKGU9PntpZighdGhpcy5jb3JlTW91c2VTZXJ2aWNlLmFyZU1vdXNlRXZlbnRzQWN0aXZlKXJldHVybiB0aGlzLnZpZXdwb3J0LmhhbmRsZVRvdWNoTW92ZShlKT92b2lkIDA6dGhpcy5jYW5jZWwoZSl9KSx7cGFzc2l2ZTohMX0pKX1yZWZyZXNoKGUsdCl7dmFyIGk7bnVsbD09PShpPXRoaXMuX3JlbmRlclNlcnZpY2UpfHx2b2lkIDA9PT1pfHxpLnJlZnJlc2hSb3dzKGUsdCl9dXBkYXRlQ3Vyc29yU3R5bGUoZSl7dmFyIHQ7KG51bGw9PT0odD10aGlzLl9zZWxlY3Rpb25TZXJ2aWNlKXx8dm9pZCAwPT09dD92b2lkIDA6dC5zaG91bGRDb2x1bW5TZWxlY3QoZSkpP3RoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKFwiY29sdW1uLXNlbGVjdFwiKTp0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShcImNvbHVtbi1zZWxlY3RcIil9X3Nob3dDdXJzb3IoKXt0aGlzLmNvcmVTZXJ2aWNlLmlzQ3Vyc29ySW5pdGlhbGl6ZWR8fCh0aGlzLmNvcmVTZXJ2aWNlLmlzQ3Vyc29ySW5pdGlhbGl6ZWQ9ITAsdGhpcy5yZWZyZXNoKHRoaXMuYnVmZmVyLnksdGhpcy5idWZmZXIueSkpfXNjcm9sbExpbmVzKGUsdCxpPTApe3ZhciBzOzE9PT1pPyhzdXBlci5zY3JvbGxMaW5lcyhlLHQsaSksdGhpcy5yZWZyZXNoKDAsdGhpcy5yb3dzLTEpKTpudWxsPT09KHM9dGhpcy52aWV3cG9ydCl8fHZvaWQgMD09PXN8fHMuc2Nyb2xsTGluZXMoZSl9cGFzdGUoZSl7KDAscy5wYXN0ZSkoZSx0aGlzLnRleHRhcmVhLHRoaXMuY29yZVNlcnZpY2UsdGhpcy5vcHRpb25zU2VydmljZSl9YXR0YWNoQ3VzdG9tS2V5RXZlbnRIYW5kbGVyKGUpe3RoaXMuX2N1c3RvbUtleUV2ZW50SGFuZGxlcj1lfXJlZ2lzdGVyTGlua1Byb3ZpZGVyKGUpe3JldHVybiB0aGlzLmxpbmtpZmllcjIucmVnaXN0ZXJMaW5rUHJvdmlkZXIoZSl9cmVnaXN0ZXJDaGFyYWN0ZXJKb2luZXIoZSl7aWYoIXRoaXMuX2NoYXJhY3RlckpvaW5lclNlcnZpY2UpdGhyb3cgbmV3IEVycm9yKFwiVGVybWluYWwgbXVzdCBiZSBvcGVuZWQgZmlyc3RcIik7Y29uc3QgdD10aGlzLl9jaGFyYWN0ZXJKb2luZXJTZXJ2aWNlLnJlZ2lzdGVyKGUpO3JldHVybiB0aGlzLnJlZnJlc2goMCx0aGlzLnJvd3MtMSksdH1kZXJlZ2lzdGVyQ2hhcmFjdGVySm9pbmVyKGUpe2lmKCF0aGlzLl9jaGFyYWN0ZXJKb2luZXJTZXJ2aWNlKXRocm93IG5ldyBFcnJvcihcIlRlcm1pbmFsIG11c3QgYmUgb3BlbmVkIGZpcnN0XCIpO3RoaXMuX2NoYXJhY3RlckpvaW5lclNlcnZpY2UuZGVyZWdpc3RlcihlKSYmdGhpcy5yZWZyZXNoKDAsdGhpcy5yb3dzLTEpfWdldCBtYXJrZXJzKCl7cmV0dXJuIHRoaXMuYnVmZmVyLm1hcmtlcnN9cmVnaXN0ZXJNYXJrZXIoZSl7cmV0dXJuIHRoaXMuYnVmZmVyLmFkZE1hcmtlcih0aGlzLmJ1ZmZlci55YmFzZSt0aGlzLmJ1ZmZlci55K2UpfXJlZ2lzdGVyRGVjb3JhdGlvbihlKXtyZXR1cm4gdGhpcy5fZGVjb3JhdGlvblNlcnZpY2UucmVnaXN0ZXJEZWNvcmF0aW9uKGUpfWhhc1NlbGVjdGlvbigpe3JldHVybiEhdGhpcy5fc2VsZWN0aW9uU2VydmljZSYmdGhpcy5fc2VsZWN0aW9uU2VydmljZS5oYXNTZWxlY3Rpb259c2VsZWN0KGUsdCxpKXt0aGlzLl9zZWxlY3Rpb25TZXJ2aWNlLnNldFNlbGVjdGlvbihlLHQsaSl9Z2V0U2VsZWN0aW9uKCl7cmV0dXJuIHRoaXMuX3NlbGVjdGlvblNlcnZpY2U/dGhpcy5fc2VsZWN0aW9uU2VydmljZS5zZWxlY3Rpb25UZXh0OlwiXCJ9Z2V0U2VsZWN0aW9uUG9zaXRpb24oKXtpZih0aGlzLl9zZWxlY3Rpb25TZXJ2aWNlJiZ0aGlzLl9zZWxlY3Rpb25TZXJ2aWNlLmhhc1NlbGVjdGlvbilyZXR1cm57c3RhcnQ6e3g6dGhpcy5fc2VsZWN0aW9uU2VydmljZS5zZWxlY3Rpb25TdGFydFswXSx5OnRoaXMuX3NlbGVjdGlvblNlcnZpY2Uuc2VsZWN0aW9uU3RhcnRbMV19LGVuZDp7eDp0aGlzLl9zZWxlY3Rpb25TZXJ2aWNlLnNlbGVjdGlvbkVuZFswXSx5OnRoaXMuX3NlbGVjdGlvblNlcnZpY2Uuc2VsZWN0aW9uRW5kWzFdfX19Y2xlYXJTZWxlY3Rpb24oKXt2YXIgZTtudWxsPT09KGU9dGhpcy5fc2VsZWN0aW9uU2VydmljZSl8fHZvaWQgMD09PWV8fGUuY2xlYXJTZWxlY3Rpb24oKX1zZWxlY3RBbGwoKXt2YXIgZTtudWxsPT09KGU9dGhpcy5fc2VsZWN0aW9uU2VydmljZSl8fHZvaWQgMD09PWV8fGUuc2VsZWN0QWxsKCl9c2VsZWN0TGluZXMoZSx0KXt2YXIgaTtudWxsPT09KGk9dGhpcy5fc2VsZWN0aW9uU2VydmljZSl8fHZvaWQgMD09PWl8fGkuc2VsZWN0TGluZXMoZSx0KX1fa2V5RG93bihlKXtpZih0aGlzLl9rZXlEb3duSGFuZGxlZD0hMSx0aGlzLl9rZXlEb3duU2Vlbj0hMCx0aGlzLl9jdXN0b21LZXlFdmVudEhhbmRsZXImJiExPT09dGhpcy5fY3VzdG9tS2V5RXZlbnRIYW5kbGVyKGUpKXJldHVybiExO2NvbnN0IHQ9dGhpcy5icm93c2VyLmlzTWFjJiZ0aGlzLm9wdGlvbnMubWFjT3B0aW9uSXNNZXRhJiZlLmFsdEtleTtpZighdCYmIXRoaXMuX2NvbXBvc2l0aW9uSGVscGVyLmtleWRvd24oZSkpcmV0dXJuIHRoaXMub3B0aW9ucy5zY3JvbGxPblVzZXJJbnB1dCYmdGhpcy5idWZmZXIueWJhc2UhPT10aGlzLmJ1ZmZlci55ZGlzcCYmdGhpcy5zY3JvbGxUb0JvdHRvbSgpLCExO3R8fFwiRGVhZFwiIT09ZS5rZXkmJlwiQWx0R3JhcGhcIiE9PWUua2V5fHwodGhpcy5fdW5wcm9jZXNzZWREZWFkS2V5PSEwKTtjb25zdCBpPSgwLFIuZXZhbHVhdGVLZXlib2FyZEV2ZW50KShlLHRoaXMuY29yZVNlcnZpY2UuZGVjUHJpdmF0ZU1vZGVzLmFwcGxpY2F0aW9uQ3Vyc29yS2V5cyx0aGlzLmJyb3dzZXIuaXNNYWMsdGhpcy5vcHRpb25zLm1hY09wdGlvbklzTWV0YSk7aWYodGhpcy51cGRhdGVDdXJzb3JTdHlsZShlKSwzPT09aS50eXBlfHwyPT09aS50eXBlKXtjb25zdCB0PXRoaXMucm93cy0xO3JldHVybiB0aGlzLnNjcm9sbExpbmVzKDI9PT1pLnR5cGU/LXQ6dCksdGhpcy5jYW5jZWwoZSwhMCl9cmV0dXJuIDE9PT1pLnR5cGUmJnRoaXMuc2VsZWN0QWxsKCksISF0aGlzLl9pc1RoaXJkTGV2ZWxTaGlmdCh0aGlzLmJyb3dzZXIsZSl8fChpLmNhbmNlbCYmdGhpcy5jYW5jZWwoZSwhMCksIWkua2V5fHwhIShlLmtleSYmIWUuY3RybEtleSYmIWUuYWx0S2V5JiYhZS5tZXRhS2V5JiYxPT09ZS5rZXkubGVuZ3RoJiZlLmtleS5jaGFyQ29kZUF0KDApPj02NSYmZS5rZXkuY2hhckNvZGVBdCgwKTw9OTApfHwodGhpcy5fdW5wcm9jZXNzZWREZWFkS2V5Pyh0aGlzLl91bnByb2Nlc3NlZERlYWRLZXk9ITEsITApOihpLmtleSE9PUQuQzAuRVRYJiZpLmtleSE9PUQuQzAuQ1J8fCh0aGlzLnRleHRhcmVhLnZhbHVlPVwiXCIpLHRoaXMuX29uS2V5LmZpcmUoe2tleTppLmtleSxkb21FdmVudDplfSksdGhpcy5fc2hvd0N1cnNvcigpLHRoaXMuY29yZVNlcnZpY2UudHJpZ2dlckRhdGFFdmVudChpLmtleSwhMCksIXRoaXMub3B0aW9uc1NlcnZpY2UucmF3T3B0aW9ucy5zY3JlZW5SZWFkZXJNb2RlfHxlLmFsdEtleXx8ZS5jdHJsS2V5P3RoaXMuY2FuY2VsKGUsITApOnZvaWQodGhpcy5fa2V5RG93bkhhbmRsZWQ9ITApKSkpfV9pc1RoaXJkTGV2ZWxTaGlmdChlLHQpe2NvbnN0IGk9ZS5pc01hYyYmIXRoaXMub3B0aW9ucy5tYWNPcHRpb25Jc01ldGEmJnQuYWx0S2V5JiYhdC5jdHJsS2V5JiYhdC5tZXRhS2V5fHxlLmlzV2luZG93cyYmdC5hbHRLZXkmJnQuY3RybEtleSYmIXQubWV0YUtleXx8ZS5pc1dpbmRvd3MmJnQuZ2V0TW9kaWZpZXJTdGF0ZShcIkFsdEdyYXBoXCIpO3JldHVyblwia2V5cHJlc3NcIj09PXQudHlwZT9pOmkmJighdC5rZXlDb2RlfHx0LmtleUNvZGU+NDcpfV9rZXlVcChlKXt0aGlzLl9rZXlEb3duU2Vlbj0hMSx0aGlzLl9jdXN0b21LZXlFdmVudEhhbmRsZXImJiExPT09dGhpcy5fY3VzdG9tS2V5RXZlbnRIYW5kbGVyKGUpfHwoZnVuY3Rpb24oZSl7cmV0dXJuIDE2PT09ZS5rZXlDb2RlfHwxNz09PWUua2V5Q29kZXx8MTg9PT1lLmtleUNvZGV9KGUpfHx0aGlzLmZvY3VzKCksdGhpcy51cGRhdGVDdXJzb3JTdHlsZShlKSx0aGlzLl9rZXlQcmVzc0hhbmRsZWQ9ITEpfV9rZXlQcmVzcyhlKXtsZXQgdDtpZih0aGlzLl9rZXlQcmVzc0hhbmRsZWQ9ITEsdGhpcy5fa2V5RG93bkhhbmRsZWQpcmV0dXJuITE7aWYodGhpcy5fY3VzdG9tS2V5RXZlbnRIYW5kbGVyJiYhMT09PXRoaXMuX2N1c3RvbUtleUV2ZW50SGFuZGxlcihlKSlyZXR1cm4hMTtpZih0aGlzLmNhbmNlbChlKSxlLmNoYXJDb2RlKXQ9ZS5jaGFyQ29kZTtlbHNlIGlmKG51bGw9PT1lLndoaWNofHx2b2lkIDA9PT1lLndoaWNoKXQ9ZS5rZXlDb2RlO2Vsc2V7aWYoMD09PWUud2hpY2h8fDA9PT1lLmNoYXJDb2RlKXJldHVybiExO3Q9ZS53aGljaH1yZXR1cm4hKCF0fHwoZS5hbHRLZXl8fGUuY3RybEtleXx8ZS5tZXRhS2V5KSYmIXRoaXMuX2lzVGhpcmRMZXZlbFNoaWZ0KHRoaXMuYnJvd3NlcixlKXx8KHQ9U3RyaW5nLmZyb21DaGFyQ29kZSh0KSx0aGlzLl9vbktleS5maXJlKHtrZXk6dCxkb21FdmVudDplfSksdGhpcy5fc2hvd0N1cnNvcigpLHRoaXMuY29yZVNlcnZpY2UudHJpZ2dlckRhdGFFdmVudCh0LCEwKSx0aGlzLl9rZXlQcmVzc0hhbmRsZWQ9ITAsdGhpcy5fdW5wcm9jZXNzZWREZWFkS2V5PSExLDApKX1faW5wdXRFdmVudChlKXtpZihlLmRhdGEmJlwiaW5zZXJ0VGV4dFwiPT09ZS5pbnB1dFR5cGUmJighZS5jb21wb3NlZHx8IXRoaXMuX2tleURvd25TZWVuKSYmIXRoaXMub3B0aW9uc1NlcnZpY2UucmF3T3B0aW9ucy5zY3JlZW5SZWFkZXJNb2RlKXtpZih0aGlzLl9rZXlQcmVzc0hhbmRsZWQpcmV0dXJuITE7dGhpcy5fdW5wcm9jZXNzZWREZWFkS2V5PSExO2NvbnN0IHQ9ZS5kYXRhO3JldHVybiB0aGlzLmNvcmVTZXJ2aWNlLnRyaWdnZXJEYXRhRXZlbnQodCwhMCksdGhpcy5jYW5jZWwoZSksITB9cmV0dXJuITF9cmVzaXplKGUsdCl7ZSE9PXRoaXMuY29sc3x8dCE9PXRoaXMucm93cz9zdXBlci5yZXNpemUoZSx0KTp0aGlzLl9jaGFyU2l6ZVNlcnZpY2UmJiF0aGlzLl9jaGFyU2l6ZVNlcnZpY2UuaGFzVmFsaWRTaXplJiZ0aGlzLl9jaGFyU2l6ZVNlcnZpY2UubWVhc3VyZSgpfV9hZnRlclJlc2l6ZShlLHQpe3ZhciBpLHM7bnVsbD09PShpPXRoaXMuX2NoYXJTaXplU2VydmljZSl8fHZvaWQgMD09PWl8fGkubWVhc3VyZSgpLG51bGw9PT0ocz10aGlzLnZpZXdwb3J0KXx8dm9pZCAwPT09c3x8cy5zeW5jU2Nyb2xsQXJlYSghMCl9Y2xlYXIoKXt2YXIgZTtpZigwIT09dGhpcy5idWZmZXIueWJhc2V8fDAhPT10aGlzLmJ1ZmZlci55KXt0aGlzLmJ1ZmZlci5jbGVhckFsbE1hcmtlcnMoKSx0aGlzLmJ1ZmZlci5saW5lcy5zZXQoMCx0aGlzLmJ1ZmZlci5saW5lcy5nZXQodGhpcy5idWZmZXIueWJhc2UrdGhpcy5idWZmZXIueSkpLHRoaXMuYnVmZmVyLmxpbmVzLmxlbmd0aD0xLHRoaXMuYnVmZmVyLnlkaXNwPTAsdGhpcy5idWZmZXIueWJhc2U9MCx0aGlzLmJ1ZmZlci55PTA7Zm9yKGxldCBlPTE7ZTx0aGlzLnJvd3M7ZSsrKXRoaXMuYnVmZmVyLmxpbmVzLnB1c2godGhpcy5idWZmZXIuZ2V0QmxhbmtMaW5lKEwuREVGQVVMVF9BVFRSX0RBVEEpKTt0aGlzLl9vblNjcm9sbC5maXJlKHtwb3NpdGlvbjp0aGlzLmJ1ZmZlci55ZGlzcCxzb3VyY2U6MH0pLG51bGw9PT0oZT10aGlzLnZpZXdwb3J0KXx8dm9pZCAwPT09ZXx8ZS5yZXNldCgpLHRoaXMucmVmcmVzaCgwLHRoaXMucm93cy0xKX19cmVzZXQoKXt2YXIgZSx0O3RoaXMub3B0aW9ucy5yb3dzPXRoaXMucm93cyx0aGlzLm9wdGlvbnMuY29scz10aGlzLmNvbHM7Y29uc3QgaT10aGlzLl9jdXN0b21LZXlFdmVudEhhbmRsZXI7dGhpcy5fc2V0dXAoKSxzdXBlci5yZXNldCgpLG51bGw9PT0oZT10aGlzLl9zZWxlY3Rpb25TZXJ2aWNlKXx8dm9pZCAwPT09ZXx8ZS5yZXNldCgpLHRoaXMuX2RlY29yYXRpb25TZXJ2aWNlLnJlc2V0KCksbnVsbD09PSh0PXRoaXMudmlld3BvcnQpfHx2b2lkIDA9PT10fHx0LnJlc2V0KCksdGhpcy5fY3VzdG9tS2V5RXZlbnRIYW5kbGVyPWksdGhpcy5yZWZyZXNoKDAsdGhpcy5yb3dzLTEpfWNsZWFyVGV4dHVyZUF0bGFzKCl7dmFyIGU7bnVsbD09PShlPXRoaXMuX3JlbmRlclNlcnZpY2UpfHx2b2lkIDA9PT1lfHxlLmNsZWFyVGV4dHVyZUF0bGFzKCl9X3JlcG9ydEZvY3VzKCl7dmFyIGU7KG51bGw9PT0oZT10aGlzLmVsZW1lbnQpfHx2b2lkIDA9PT1lP3ZvaWQgMDplLmNsYXNzTGlzdC5jb250YWlucyhcImZvY3VzXCIpKT90aGlzLmNvcmVTZXJ2aWNlLnRyaWdnZXJEYXRhRXZlbnQoRC5DMC5FU0MrXCJbSVwiKTp0aGlzLmNvcmVTZXJ2aWNlLnRyaWdnZXJEYXRhRXZlbnQoRC5DMC5FU0MrXCJbT1wiKX1fcmVwb3J0V2luZG93c09wdGlvbnMoZSl7aWYodGhpcy5fcmVuZGVyU2VydmljZSlzd2l0Y2goZSl7Y2FzZSBULldpbmRvd3NPcHRpb25zUmVwb3J0VHlwZS5HRVRfV0lOX1NJWkVfUElYRUxTOmNvbnN0IGU9dGhpcy5fcmVuZGVyU2VydmljZS5kaW1lbnNpb25zLmNzcy5jYW52YXMud2lkdGgudG9GaXhlZCgwKSx0PXRoaXMuX3JlbmRlclNlcnZpY2UuZGltZW5zaW9ucy5jc3MuY2FudmFzLmhlaWdodC50b0ZpeGVkKDApO3RoaXMuY29yZVNlcnZpY2UudHJpZ2dlckRhdGFFdmVudChgJHtELkMwLkVTQ31bNDske3R9OyR7ZX10YCk7YnJlYWs7Y2FzZSBULldpbmRvd3NPcHRpb25zUmVwb3J0VHlwZS5HRVRfQ0VMTF9TSVpFX1BJWEVMUzpjb25zdCBpPXRoaXMuX3JlbmRlclNlcnZpY2UuZGltZW5zaW9ucy5jc3MuY2VsbC53aWR0aC50b0ZpeGVkKDApLHM9dGhpcy5fcmVuZGVyU2VydmljZS5kaW1lbnNpb25zLmNzcy5jZWxsLmhlaWdodC50b0ZpeGVkKDApO3RoaXMuY29yZVNlcnZpY2UudHJpZ2dlckRhdGFFdmVudChgJHtELkMwLkVTQ31bNjske3N9OyR7aX10YCl9fWNhbmNlbChlLHQpe2lmKHRoaXMub3B0aW9ucy5jYW5jZWxFdmVudHN8fHQpcmV0dXJuIGUucHJldmVudERlZmF1bHQoKSxlLnN0b3BQcm9wYWdhdGlvbigpLCExfX10LlRlcm1pbmFsPVB9LDk5MjQ6KGUsdCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LlRpbWVCYXNlZERlYm91bmNlcj12b2lkIDAsdC5UaW1lQmFzZWREZWJvdW5jZXI9Y2xhc3N7Y29uc3RydWN0b3IoZSx0PTFlMyl7dGhpcy5fcmVuZGVyQ2FsbGJhY2s9ZSx0aGlzLl9kZWJvdW5jZVRocmVzaG9sZE1TPXQsdGhpcy5fbGFzdFJlZnJlc2hNcz0wLHRoaXMuX2FkZGl0aW9uYWxSZWZyZXNoUmVxdWVzdGVkPSExfWRpc3Bvc2UoKXt0aGlzLl9yZWZyZXNoVGltZW91dElEJiZjbGVhclRpbWVvdXQodGhpcy5fcmVmcmVzaFRpbWVvdXRJRCl9cmVmcmVzaChlLHQsaSl7dGhpcy5fcm93Q291bnQ9aSxlPXZvaWQgMCE9PWU/ZTowLHQ9dm9pZCAwIT09dD90OnRoaXMuX3Jvd0NvdW50LTEsdGhpcy5fcm93U3RhcnQ9dm9pZCAwIT09dGhpcy5fcm93U3RhcnQ/TWF0aC5taW4odGhpcy5fcm93U3RhcnQsZSk6ZSx0aGlzLl9yb3dFbmQ9dm9pZCAwIT09dGhpcy5fcm93RW5kP01hdGgubWF4KHRoaXMuX3Jvd0VuZCx0KTp0O2NvbnN0IHM9RGF0ZS5ub3coKTtpZihzLXRoaXMuX2xhc3RSZWZyZXNoTXM+PXRoaXMuX2RlYm91bmNlVGhyZXNob2xkTVMpdGhpcy5fbGFzdFJlZnJlc2hNcz1zLHRoaXMuX2lubmVyUmVmcmVzaCgpO2Vsc2UgaWYoIXRoaXMuX2FkZGl0aW9uYWxSZWZyZXNoUmVxdWVzdGVkKXtjb25zdCBlPXMtdGhpcy5fbGFzdFJlZnJlc2hNcyx0PXRoaXMuX2RlYm91bmNlVGhyZXNob2xkTVMtZTt0aGlzLl9hZGRpdGlvbmFsUmVmcmVzaFJlcXVlc3RlZD0hMCx0aGlzLl9yZWZyZXNoVGltZW91dElEPXdpbmRvdy5zZXRUaW1lb3V0KCgoKT0+e3RoaXMuX2xhc3RSZWZyZXNoTXM9RGF0ZS5ub3coKSx0aGlzLl9pbm5lclJlZnJlc2goKSx0aGlzLl9hZGRpdGlvbmFsUmVmcmVzaFJlcXVlc3RlZD0hMSx0aGlzLl9yZWZyZXNoVGltZW91dElEPXZvaWQgMH0pLHQpfX1faW5uZXJSZWZyZXNoKCl7aWYodm9pZCAwPT09dGhpcy5fcm93U3RhcnR8fHZvaWQgMD09PXRoaXMuX3Jvd0VuZHx8dm9pZCAwPT09dGhpcy5fcm93Q291bnQpcmV0dXJuO2NvbnN0IGU9TWF0aC5tYXgodGhpcy5fcm93U3RhcnQsMCksdD1NYXRoLm1pbih0aGlzLl9yb3dFbmQsdGhpcy5fcm93Q291bnQtMSk7dGhpcy5fcm93U3RhcnQ9dm9pZCAwLHRoaXMuX3Jvd0VuZD12b2lkIDAsdGhpcy5fcmVuZGVyQ2FsbGJhY2soZSx0KX19fSwxNjgwOmZ1bmN0aW9uKGUsdCxpKXt2YXIgcz10aGlzJiZ0aGlzLl9fZGVjb3JhdGV8fGZ1bmN0aW9uKGUsdCxpLHMpe3ZhciByLG49YXJndW1lbnRzLmxlbmd0aCxvPW48Mz90Om51bGw9PT1zP3M9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LGkpOnM7aWYoXCJvYmplY3RcIj09dHlwZW9mIFJlZmxlY3QmJlwiZnVuY3Rpb25cIj09dHlwZW9mIFJlZmxlY3QuZGVjb3JhdGUpbz1SZWZsZWN0LmRlY29yYXRlKGUsdCxpLHMpO2Vsc2UgZm9yKHZhciBhPWUubGVuZ3RoLTE7YT49MDthLS0pKHI9ZVthXSkmJihvPShuPDM/cihvKTpuPjM/cih0LGksbyk6cih0LGkpKXx8byk7cmV0dXJuIG4+MyYmbyYmT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsaSxvKSxvfSxyPXRoaXMmJnRoaXMuX19wYXJhbXx8ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZnVuY3Rpb24oaSxzKXt0KGkscyxlKX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuVmlld3BvcnQ9dm9pZCAwO2NvbnN0IG49aSgzNjU2KSxvPWkoNDcyNSksYT1pKDg0NjApLGg9aSg4NDQpLGM9aSgyNTg1KTtsZXQgbD10LlZpZXdwb3J0PWNsYXNzIGV4dGVuZHMgaC5EaXNwb3NhYmxle2NvbnN0cnVjdG9yKGUsdCxpLHMscixvLGgsYyl7c3VwZXIoKSx0aGlzLl92aWV3cG9ydEVsZW1lbnQ9ZSx0aGlzLl9zY3JvbGxBcmVhPXQsdGhpcy5fYnVmZmVyU2VydmljZT1pLHRoaXMuX29wdGlvbnNTZXJ2aWNlPXMsdGhpcy5fY2hhclNpemVTZXJ2aWNlPXIsdGhpcy5fcmVuZGVyU2VydmljZT1vLHRoaXMuX2NvcmVCcm93c2VyU2VydmljZT1oLHRoaXMuc2Nyb2xsQmFyV2lkdGg9MCx0aGlzLl9jdXJyZW50Um93SGVpZ2h0PTAsdGhpcy5fY3VycmVudERldmljZUNlbGxIZWlnaHQ9MCx0aGlzLl9sYXN0UmVjb3JkZWRCdWZmZXJMZW5ndGg9MCx0aGlzLl9sYXN0UmVjb3JkZWRWaWV3cG9ydEhlaWdodD0wLHRoaXMuX2xhc3RSZWNvcmRlZEJ1ZmZlckhlaWdodD0wLHRoaXMuX2xhc3RUb3VjaFk9MCx0aGlzLl9sYXN0U2Nyb2xsVG9wPTAsdGhpcy5fd2hlZWxQYXJ0aWFsU2Nyb2xsPTAsdGhpcy5fcmVmcmVzaEFuaW1hdGlvbkZyYW1lPW51bGwsdGhpcy5faWdub3JlTmV4dFNjcm9sbEV2ZW50PSExLHRoaXMuX3Ntb290aFNjcm9sbFN0YXRlPXtzdGFydFRpbWU6MCxvcmlnaW46LTEsdGFyZ2V0Oi0xfSx0aGlzLl9vblJlcXVlc3RTY3JvbGxMaW5lcz10aGlzLnJlZ2lzdGVyKG5ldyBhLkV2ZW50RW1pdHRlciksdGhpcy5vblJlcXVlc3RTY3JvbGxMaW5lcz10aGlzLl9vblJlcXVlc3RTY3JvbGxMaW5lcy5ldmVudCx0aGlzLnNjcm9sbEJhcldpZHRoPXRoaXMuX3ZpZXdwb3J0RWxlbWVudC5vZmZzZXRXaWR0aC10aGlzLl9zY3JvbGxBcmVhLm9mZnNldFdpZHRofHwxNSx0aGlzLnJlZ2lzdGVyKCgwLG4uYWRkRGlzcG9zYWJsZURvbUxpc3RlbmVyKSh0aGlzLl92aWV3cG9ydEVsZW1lbnQsXCJzY3JvbGxcIix0aGlzLl9oYW5kbGVTY3JvbGwuYmluZCh0aGlzKSkpLHRoaXMuX2FjdGl2ZUJ1ZmZlcj10aGlzLl9idWZmZXJTZXJ2aWNlLmJ1ZmZlcix0aGlzLnJlZ2lzdGVyKHRoaXMuX2J1ZmZlclNlcnZpY2UuYnVmZmVycy5vbkJ1ZmZlckFjdGl2YXRlKChlPT50aGlzLl9hY3RpdmVCdWZmZXI9ZS5hY3RpdmVCdWZmZXIpKSksdGhpcy5fcmVuZGVyRGltZW5zaW9ucz10aGlzLl9yZW5kZXJTZXJ2aWNlLmRpbWVuc2lvbnMsdGhpcy5yZWdpc3Rlcih0aGlzLl9yZW5kZXJTZXJ2aWNlLm9uRGltZW5zaW9uc0NoYW5nZSgoZT0+dGhpcy5fcmVuZGVyRGltZW5zaW9ucz1lKSkpLHRoaXMuX2hhbmRsZVRoZW1lQ2hhbmdlKGMuY29sb3JzKSx0aGlzLnJlZ2lzdGVyKGMub25DaGFuZ2VDb2xvcnMoKGU9PnRoaXMuX2hhbmRsZVRoZW1lQ2hhbmdlKGUpKSkpLHRoaXMucmVnaXN0ZXIodGhpcy5fb3B0aW9uc1NlcnZpY2Uub25TcGVjaWZpY09wdGlvbkNoYW5nZShcInNjcm9sbGJhY2tcIiwoKCk9PnRoaXMuc3luY1Njcm9sbEFyZWEoKSkpKSxzZXRUaW1lb3V0KCgoKT0+dGhpcy5zeW5jU2Nyb2xsQXJlYSgpKSl9X2hhbmRsZVRoZW1lQ2hhbmdlKGUpe3RoaXMuX3ZpZXdwb3J0RWxlbWVudC5zdHlsZS5iYWNrZ3JvdW5kQ29sb3I9ZS5iYWNrZ3JvdW5kLmNzc31yZXNldCgpe3RoaXMuX2N1cnJlbnRSb3dIZWlnaHQ9MCx0aGlzLl9jdXJyZW50RGV2aWNlQ2VsbEhlaWdodD0wLHRoaXMuX2xhc3RSZWNvcmRlZEJ1ZmZlckxlbmd0aD0wLHRoaXMuX2xhc3RSZWNvcmRlZFZpZXdwb3J0SGVpZ2h0PTAsdGhpcy5fbGFzdFJlY29yZGVkQnVmZmVySGVpZ2h0PTAsdGhpcy5fbGFzdFRvdWNoWT0wLHRoaXMuX2xhc3RTY3JvbGxUb3A9MCx0aGlzLl9jb3JlQnJvd3NlclNlcnZpY2Uud2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSgoKCk9PnRoaXMuc3luY1Njcm9sbEFyZWEoKSkpfV9yZWZyZXNoKGUpe2lmKGUpcmV0dXJuIHRoaXMuX2lubmVyUmVmcmVzaCgpLHZvaWQobnVsbCE9PXRoaXMuX3JlZnJlc2hBbmltYXRpb25GcmFtZSYmdGhpcy5fY29yZUJyb3dzZXJTZXJ2aWNlLndpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLl9yZWZyZXNoQW5pbWF0aW9uRnJhbWUpKTtudWxsPT09dGhpcy5fcmVmcmVzaEFuaW1hdGlvbkZyYW1lJiYodGhpcy5fcmVmcmVzaEFuaW1hdGlvbkZyYW1lPXRoaXMuX2NvcmVCcm93c2VyU2VydmljZS53aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgoKT0+dGhpcy5faW5uZXJSZWZyZXNoKCkpKSl9X2lubmVyUmVmcmVzaCgpe2lmKHRoaXMuX2NoYXJTaXplU2VydmljZS5oZWlnaHQ+MCl7dGhpcy5fY3VycmVudFJvd0hlaWdodD10aGlzLl9yZW5kZXJTZXJ2aWNlLmRpbWVuc2lvbnMuZGV2aWNlLmNlbGwuaGVpZ2h0L3RoaXMuX2NvcmVCcm93c2VyU2VydmljZS5kcHIsdGhpcy5fY3VycmVudERldmljZUNlbGxIZWlnaHQ9dGhpcy5fcmVuZGVyU2VydmljZS5kaW1lbnNpb25zLmRldmljZS5jZWxsLmhlaWdodCx0aGlzLl9sYXN0UmVjb3JkZWRWaWV3cG9ydEhlaWdodD10aGlzLl92aWV3cG9ydEVsZW1lbnQub2Zmc2V0SGVpZ2h0O2NvbnN0IGU9TWF0aC5yb3VuZCh0aGlzLl9jdXJyZW50Um93SGVpZ2h0KnRoaXMuX2xhc3RSZWNvcmRlZEJ1ZmZlckxlbmd0aCkrKHRoaXMuX2xhc3RSZWNvcmRlZFZpZXdwb3J0SGVpZ2h0LXRoaXMuX3JlbmRlclNlcnZpY2UuZGltZW5zaW9ucy5jc3MuY2FudmFzLmhlaWdodCk7dGhpcy5fbGFzdFJlY29yZGVkQnVmZmVySGVpZ2h0IT09ZSYmKHRoaXMuX2xhc3RSZWNvcmRlZEJ1ZmZlckhlaWdodD1lLHRoaXMuX3Njcm9sbEFyZWEuc3R5bGUuaGVpZ2h0PXRoaXMuX2xhc3RSZWNvcmRlZEJ1ZmZlckhlaWdodCtcInB4XCIpfWNvbnN0IGU9dGhpcy5fYnVmZmVyU2VydmljZS5idWZmZXIueWRpc3AqdGhpcy5fY3VycmVudFJvd0hlaWdodDt0aGlzLl92aWV3cG9ydEVsZW1lbnQuc2Nyb2xsVG9wIT09ZSYmKHRoaXMuX2lnbm9yZU5leHRTY3JvbGxFdmVudD0hMCx0aGlzLl92aWV3cG9ydEVsZW1lbnQuc2Nyb2xsVG9wPWUpLHRoaXMuX3JlZnJlc2hBbmltYXRpb25GcmFtZT1udWxsfXN5bmNTY3JvbGxBcmVhKGU9ITEpe2lmKHRoaXMuX2xhc3RSZWNvcmRlZEJ1ZmZlckxlbmd0aCE9PXRoaXMuX2J1ZmZlclNlcnZpY2UuYnVmZmVyLmxpbmVzLmxlbmd0aClyZXR1cm4gdGhpcy5fbGFzdFJlY29yZGVkQnVmZmVyTGVuZ3RoPXRoaXMuX2J1ZmZlclNlcnZpY2UuYnVmZmVyLmxpbmVzLmxlbmd0aCx2b2lkIHRoaXMuX3JlZnJlc2goZSk7dGhpcy5fbGFzdFJlY29yZGVkVmlld3BvcnRIZWlnaHQ9PT10aGlzLl9yZW5kZXJTZXJ2aWNlLmRpbWVuc2lvbnMuY3NzLmNhbnZhcy5oZWlnaHQmJnRoaXMuX2xhc3RTY3JvbGxUb3A9PT10aGlzLl9hY3RpdmVCdWZmZXIueWRpc3AqdGhpcy5fY3VycmVudFJvd0hlaWdodCYmdGhpcy5fcmVuZGVyRGltZW5zaW9ucy5kZXZpY2UuY2VsbC5oZWlnaHQ9PT10aGlzLl9jdXJyZW50RGV2aWNlQ2VsbEhlaWdodHx8dGhpcy5fcmVmcmVzaChlKX1faGFuZGxlU2Nyb2xsKGUpe2lmKHRoaXMuX2xhc3RTY3JvbGxUb3A9dGhpcy5fdmlld3BvcnRFbGVtZW50LnNjcm9sbFRvcCwhdGhpcy5fdmlld3BvcnRFbGVtZW50Lm9mZnNldFBhcmVudClyZXR1cm47aWYodGhpcy5faWdub3JlTmV4dFNjcm9sbEV2ZW50KXJldHVybiB0aGlzLl9pZ25vcmVOZXh0U2Nyb2xsRXZlbnQ9ITEsdm9pZCB0aGlzLl9vblJlcXVlc3RTY3JvbGxMaW5lcy5maXJlKHthbW91bnQ6MCxzdXBwcmVzc1Njcm9sbEV2ZW50OiEwfSk7Y29uc3QgdD1NYXRoLnJvdW5kKHRoaXMuX2xhc3RTY3JvbGxUb3AvdGhpcy5fY3VycmVudFJvd0hlaWdodCktdGhpcy5fYnVmZmVyU2VydmljZS5idWZmZXIueWRpc3A7dGhpcy5fb25SZXF1ZXN0U2Nyb2xsTGluZXMuZmlyZSh7YW1vdW50OnQsc3VwcHJlc3NTY3JvbGxFdmVudDohMH0pfV9zbW9vdGhTY3JvbGwoKXtpZih0aGlzLl9pc0Rpc3Bvc2VkfHwtMT09PXRoaXMuX3Ntb290aFNjcm9sbFN0YXRlLm9yaWdpbnx8LTE9PT10aGlzLl9zbW9vdGhTY3JvbGxTdGF0ZS50YXJnZXQpcmV0dXJuO2NvbnN0IGU9dGhpcy5fc21vb3RoU2Nyb2xsUGVyY2VudCgpO3RoaXMuX3ZpZXdwb3J0RWxlbWVudC5zY3JvbGxUb3A9dGhpcy5fc21vb3RoU2Nyb2xsU3RhdGUub3JpZ2luK01hdGgucm91bmQoZSoodGhpcy5fc21vb3RoU2Nyb2xsU3RhdGUudGFyZ2V0LXRoaXMuX3Ntb290aFNjcm9sbFN0YXRlLm9yaWdpbikpLGU8MT90aGlzLl9jb3JlQnJvd3NlclNlcnZpY2Uud2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSgoKCk9PnRoaXMuX3Ntb290aFNjcm9sbCgpKSk6dGhpcy5fY2xlYXJTbW9vdGhTY3JvbGxTdGF0ZSgpfV9zbW9vdGhTY3JvbGxQZXJjZW50KCl7cmV0dXJuIHRoaXMuX29wdGlvbnNTZXJ2aWNlLnJhd09wdGlvbnMuc21vb3RoU2Nyb2xsRHVyYXRpb24mJnRoaXMuX3Ntb290aFNjcm9sbFN0YXRlLnN0YXJ0VGltZT9NYXRoLm1heChNYXRoLm1pbigoRGF0ZS5ub3coKS10aGlzLl9zbW9vdGhTY3JvbGxTdGF0ZS5zdGFydFRpbWUpL3RoaXMuX29wdGlvbnNTZXJ2aWNlLnJhd09wdGlvbnMuc21vb3RoU2Nyb2xsRHVyYXRpb24sMSksMCk6MX1fY2xlYXJTbW9vdGhTY3JvbGxTdGF0ZSgpe3RoaXMuX3Ntb290aFNjcm9sbFN0YXRlLnN0YXJ0VGltZT0wLHRoaXMuX3Ntb290aFNjcm9sbFN0YXRlLm9yaWdpbj0tMSx0aGlzLl9zbW9vdGhTY3JvbGxTdGF0ZS50YXJnZXQ9LTF9X2J1YmJsZVNjcm9sbChlLHQpe2NvbnN0IGk9dGhpcy5fdmlld3BvcnRFbGVtZW50LnNjcm9sbFRvcCt0aGlzLl9sYXN0UmVjb3JkZWRWaWV3cG9ydEhlaWdodDtyZXR1cm4hKHQ8MCYmMCE9PXRoaXMuX3ZpZXdwb3J0RWxlbWVudC5zY3JvbGxUb3B8fHQ+MCYmaTx0aGlzLl9sYXN0UmVjb3JkZWRCdWZmZXJIZWlnaHQpfHwoZS5jYW5jZWxhYmxlJiZlLnByZXZlbnREZWZhdWx0KCksITEpfWhhbmRsZVdoZWVsKGUpe2NvbnN0IHQ9dGhpcy5fZ2V0UGl4ZWxzU2Nyb2xsZWQoZSk7cmV0dXJuIDAhPT10JiYodGhpcy5fb3B0aW9uc1NlcnZpY2UucmF3T3B0aW9ucy5zbW9vdGhTY3JvbGxEdXJhdGlvbj8odGhpcy5fc21vb3RoU2Nyb2xsU3RhdGUuc3RhcnRUaW1lPURhdGUubm93KCksdGhpcy5fc21vb3RoU2Nyb2xsUGVyY2VudCgpPDE/KHRoaXMuX3Ntb290aFNjcm9sbFN0YXRlLm9yaWdpbj10aGlzLl92aWV3cG9ydEVsZW1lbnQuc2Nyb2xsVG9wLC0xPT09dGhpcy5fc21vb3RoU2Nyb2xsU3RhdGUudGFyZ2V0P3RoaXMuX3Ntb290aFNjcm9sbFN0YXRlLnRhcmdldD10aGlzLl92aWV3cG9ydEVsZW1lbnQuc2Nyb2xsVG9wK3Q6dGhpcy5fc21vb3RoU2Nyb2xsU3RhdGUudGFyZ2V0Kz10LHRoaXMuX3Ntb290aFNjcm9sbFN0YXRlLnRhcmdldD1NYXRoLm1heChNYXRoLm1pbih0aGlzLl9zbW9vdGhTY3JvbGxTdGF0ZS50YXJnZXQsdGhpcy5fdmlld3BvcnRFbGVtZW50LnNjcm9sbEhlaWdodCksMCksdGhpcy5fc21vb3RoU2Nyb2xsKCkpOnRoaXMuX2NsZWFyU21vb3RoU2Nyb2xsU3RhdGUoKSk6dGhpcy5fdmlld3BvcnRFbGVtZW50LnNjcm9sbFRvcCs9dCx0aGlzLl9idWJibGVTY3JvbGwoZSx0KSl9c2Nyb2xsTGluZXMoZSl7aWYoMCE9PWUpaWYodGhpcy5fb3B0aW9uc1NlcnZpY2UucmF3T3B0aW9ucy5zbW9vdGhTY3JvbGxEdXJhdGlvbil7Y29uc3QgdD1lKnRoaXMuX2N1cnJlbnRSb3dIZWlnaHQ7dGhpcy5fc21vb3RoU2Nyb2xsU3RhdGUuc3RhcnRUaW1lPURhdGUubm93KCksdGhpcy5fc21vb3RoU2Nyb2xsUGVyY2VudCgpPDE/KHRoaXMuX3Ntb290aFNjcm9sbFN0YXRlLm9yaWdpbj10aGlzLl92aWV3cG9ydEVsZW1lbnQuc2Nyb2xsVG9wLHRoaXMuX3Ntb290aFNjcm9sbFN0YXRlLnRhcmdldD10aGlzLl9zbW9vdGhTY3JvbGxTdGF0ZS5vcmlnaW4rdCx0aGlzLl9zbW9vdGhTY3JvbGxTdGF0ZS50YXJnZXQ9TWF0aC5tYXgoTWF0aC5taW4odGhpcy5fc21vb3RoU2Nyb2xsU3RhdGUudGFyZ2V0LHRoaXMuX3ZpZXdwb3J0RWxlbWVudC5zY3JvbGxIZWlnaHQpLDApLHRoaXMuX3Ntb290aFNjcm9sbCgpKTp0aGlzLl9jbGVhclNtb290aFNjcm9sbFN0YXRlKCl9ZWxzZSB0aGlzLl9vblJlcXVlc3RTY3JvbGxMaW5lcy5maXJlKHthbW91bnQ6ZSxzdXBwcmVzc1Njcm9sbEV2ZW50OiExfSl9X2dldFBpeGVsc1Njcm9sbGVkKGUpe2lmKDA9PT1lLmRlbHRhWXx8ZS5zaGlmdEtleSlyZXR1cm4gMDtsZXQgdD10aGlzLl9hcHBseVNjcm9sbE1vZGlmaWVyKGUuZGVsdGFZLGUpO3JldHVybiBlLmRlbHRhTW9kZT09PVdoZWVsRXZlbnQuRE9NX0RFTFRBX0xJTkU/dCo9dGhpcy5fY3VycmVudFJvd0hlaWdodDplLmRlbHRhTW9kZT09PVdoZWVsRXZlbnQuRE9NX0RFTFRBX1BBR0UmJih0Kj10aGlzLl9jdXJyZW50Um93SGVpZ2h0KnRoaXMuX2J1ZmZlclNlcnZpY2Uucm93cyksdH1nZXRCdWZmZXJFbGVtZW50cyhlLHQpe3ZhciBpO2xldCBzLHI9XCJcIjtjb25zdCBuPVtdLG89bnVsbCE9dD90OnRoaXMuX2J1ZmZlclNlcnZpY2UuYnVmZmVyLmxpbmVzLmxlbmd0aCxhPXRoaXMuX2J1ZmZlclNlcnZpY2UuYnVmZmVyLmxpbmVzO2ZvcihsZXQgdD1lO3Q8bzt0Kyspe2NvbnN0IGU9YS5nZXQodCk7aWYoIWUpY29udGludWU7Y29uc3Qgbz1udWxsPT09KGk9YS5nZXQodCsxKSl8fHZvaWQgMD09PWk/dm9pZCAwOmkuaXNXcmFwcGVkO2lmKHIrPWUudHJhbnNsYXRlVG9TdHJpbmcoIW8pLCFvfHx0PT09YS5sZW5ndGgtMSl7Y29uc3QgZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO2UudGV4dENvbnRlbnQ9cixuLnB1c2goZSksci5sZW5ndGg+MCYmKHM9ZSkscj1cIlwifX1yZXR1cm57YnVmZmVyRWxlbWVudHM6bixjdXJzb3JFbGVtZW50OnN9fWdldExpbmVzU2Nyb2xsZWQoZSl7aWYoMD09PWUuZGVsdGFZfHxlLnNoaWZ0S2V5KXJldHVybiAwO2xldCB0PXRoaXMuX2FwcGx5U2Nyb2xsTW9kaWZpZXIoZS5kZWx0YVksZSk7cmV0dXJuIGUuZGVsdGFNb2RlPT09V2hlZWxFdmVudC5ET01fREVMVEFfUElYRUw/KHQvPXRoaXMuX2N1cnJlbnRSb3dIZWlnaHQrMCx0aGlzLl93aGVlbFBhcnRpYWxTY3JvbGwrPXQsdD1NYXRoLmZsb29yKE1hdGguYWJzKHRoaXMuX3doZWVsUGFydGlhbFNjcm9sbCkpKih0aGlzLl93aGVlbFBhcnRpYWxTY3JvbGw+MD8xOi0xKSx0aGlzLl93aGVlbFBhcnRpYWxTY3JvbGwlPTEpOmUuZGVsdGFNb2RlPT09V2hlZWxFdmVudC5ET01fREVMVEFfUEFHRSYmKHQqPXRoaXMuX2J1ZmZlclNlcnZpY2Uucm93cyksdH1fYXBwbHlTY3JvbGxNb2RpZmllcihlLHQpe2NvbnN0IGk9dGhpcy5fb3B0aW9uc1NlcnZpY2UucmF3T3B0aW9ucy5mYXN0U2Nyb2xsTW9kaWZpZXI7cmV0dXJuXCJhbHRcIj09PWkmJnQuYWx0S2V5fHxcImN0cmxcIj09PWkmJnQuY3RybEtleXx8XCJzaGlmdFwiPT09aSYmdC5zaGlmdEtleT9lKnRoaXMuX29wdGlvbnNTZXJ2aWNlLnJhd09wdGlvbnMuZmFzdFNjcm9sbFNlbnNpdGl2aXR5KnRoaXMuX29wdGlvbnNTZXJ2aWNlLnJhd09wdGlvbnMuc2Nyb2xsU2Vuc2l0aXZpdHk6ZSp0aGlzLl9vcHRpb25zU2VydmljZS5yYXdPcHRpb25zLnNjcm9sbFNlbnNpdGl2aXR5fWhhbmRsZVRvdWNoU3RhcnQoZSl7dGhpcy5fbGFzdFRvdWNoWT1lLnRvdWNoZXNbMF0ucGFnZVl9aGFuZGxlVG91Y2hNb3ZlKGUpe2NvbnN0IHQ9dGhpcy5fbGFzdFRvdWNoWS1lLnRvdWNoZXNbMF0ucGFnZVk7cmV0dXJuIHRoaXMuX2xhc3RUb3VjaFk9ZS50b3VjaGVzWzBdLnBhZ2VZLDAhPT10JiYodGhpcy5fdmlld3BvcnRFbGVtZW50LnNjcm9sbFRvcCs9dCx0aGlzLl9idWJibGVTY3JvbGwoZSx0KSl9fTt0LlZpZXdwb3J0PWw9cyhbcigyLGMuSUJ1ZmZlclNlcnZpY2UpLHIoMyxjLklPcHRpb25zU2VydmljZSkscig0LG8uSUNoYXJTaXplU2VydmljZSkscig1LG8uSVJlbmRlclNlcnZpY2UpLHIoNixvLklDb3JlQnJvd3NlclNlcnZpY2UpLHIoNyxvLklUaGVtZVNlcnZpY2UpXSxsKX0sMzEwNzpmdW5jdGlvbihlLHQsaSl7dmFyIHM9dGhpcyYmdGhpcy5fX2RlY29yYXRlfHxmdW5jdGlvbihlLHQsaSxzKXt2YXIgcixuPWFyZ3VtZW50cy5sZW5ndGgsbz1uPDM/dDpudWxsPT09cz9zPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxpKTpzO2lmKFwib2JqZWN0XCI9PXR5cGVvZiBSZWZsZWN0JiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBSZWZsZWN0LmRlY29yYXRlKW89UmVmbGVjdC5kZWNvcmF0ZShlLHQsaSxzKTtlbHNlIGZvcih2YXIgYT1lLmxlbmd0aC0xO2E+PTA7YS0tKShyPWVbYV0pJiYobz0objwzP3Iobyk6bj4zP3IodCxpLG8pOnIodCxpKSl8fG8pO3JldHVybiBuPjMmJm8mJk9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGksbyksb30scj10aGlzJiZ0aGlzLl9fcGFyYW18fGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGkscyl7dChpLHMsZSl9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkJ1ZmZlckRlY29yYXRpb25SZW5kZXJlcj12b2lkIDA7Y29uc3Qgbj1pKDM2NTYpLG89aSg0NzI1KSxhPWkoODQ0KSxoPWkoMjU4NSk7bGV0IGM9dC5CdWZmZXJEZWNvcmF0aW9uUmVuZGVyZXI9Y2xhc3MgZXh0ZW5kcyBhLkRpc3Bvc2FibGV7Y29uc3RydWN0b3IoZSx0LGkscyl7c3VwZXIoKSx0aGlzLl9zY3JlZW5FbGVtZW50PWUsdGhpcy5fYnVmZmVyU2VydmljZT10LHRoaXMuX2RlY29yYXRpb25TZXJ2aWNlPWksdGhpcy5fcmVuZGVyU2VydmljZT1zLHRoaXMuX2RlY29yYXRpb25FbGVtZW50cz1uZXcgTWFwLHRoaXMuX2FsdEJ1ZmZlcklzQWN0aXZlPSExLHRoaXMuX2RpbWVuc2lvbnNDaGFuZ2VkPSExLHRoaXMuX2NvbnRhaW5lcj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLHRoaXMuX2NvbnRhaW5lci5jbGFzc0xpc3QuYWRkKFwieHRlcm0tZGVjb3JhdGlvbi1jb250YWluZXJcIiksdGhpcy5fc2NyZWVuRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9jb250YWluZXIpLHRoaXMucmVnaXN0ZXIodGhpcy5fcmVuZGVyU2VydmljZS5vblJlbmRlcmVkVmlld3BvcnRDaGFuZ2UoKCgpPT50aGlzLl9kb1JlZnJlc2hEZWNvcmF0aW9ucygpKSkpLHRoaXMucmVnaXN0ZXIodGhpcy5fcmVuZGVyU2VydmljZS5vbkRpbWVuc2lvbnNDaGFuZ2UoKCgpPT57dGhpcy5fZGltZW5zaW9uc0NoYW5nZWQ9ITAsdGhpcy5fcXVldWVSZWZyZXNoKCl9KSkpLHRoaXMucmVnaXN0ZXIoKDAsbi5hZGREaXNwb3NhYmxlRG9tTGlzdGVuZXIpKHdpbmRvdyxcInJlc2l6ZVwiLCgoKT0+dGhpcy5fcXVldWVSZWZyZXNoKCkpKSksdGhpcy5yZWdpc3Rlcih0aGlzLl9idWZmZXJTZXJ2aWNlLmJ1ZmZlcnMub25CdWZmZXJBY3RpdmF0ZSgoKCk9Pnt0aGlzLl9hbHRCdWZmZXJJc0FjdGl2ZT10aGlzLl9idWZmZXJTZXJ2aWNlLmJ1ZmZlcj09PXRoaXMuX2J1ZmZlclNlcnZpY2UuYnVmZmVycy5hbHR9KSkpLHRoaXMucmVnaXN0ZXIodGhpcy5fZGVjb3JhdGlvblNlcnZpY2Uub25EZWNvcmF0aW9uUmVnaXN0ZXJlZCgoKCk9PnRoaXMuX3F1ZXVlUmVmcmVzaCgpKSkpLHRoaXMucmVnaXN0ZXIodGhpcy5fZGVjb3JhdGlvblNlcnZpY2Uub25EZWNvcmF0aW9uUmVtb3ZlZCgoZT0+dGhpcy5fcmVtb3ZlRGVjb3JhdGlvbihlKSkpKSx0aGlzLnJlZ2lzdGVyKCgwLGEudG9EaXNwb3NhYmxlKSgoKCk9Pnt0aGlzLl9jb250YWluZXIucmVtb3ZlKCksdGhpcy5fZGVjb3JhdGlvbkVsZW1lbnRzLmNsZWFyKCl9KSkpfV9xdWV1ZVJlZnJlc2goKXt2b2lkIDA9PT10aGlzLl9hbmltYXRpb25GcmFtZSYmKHRoaXMuX2FuaW1hdGlvbkZyYW1lPXRoaXMuX3JlbmRlclNlcnZpY2UuYWRkUmVmcmVzaENhbGxiYWNrKCgoKT0+e3RoaXMuX2RvUmVmcmVzaERlY29yYXRpb25zKCksdGhpcy5fYW5pbWF0aW9uRnJhbWU9dm9pZCAwfSkpKX1fZG9SZWZyZXNoRGVjb3JhdGlvbnMoKXtmb3IoY29uc3QgZSBvZiB0aGlzLl9kZWNvcmF0aW9uU2VydmljZS5kZWNvcmF0aW9ucyl0aGlzLl9yZW5kZXJEZWNvcmF0aW9uKGUpO3RoaXMuX2RpbWVuc2lvbnNDaGFuZ2VkPSExfV9yZW5kZXJEZWNvcmF0aW9uKGUpe3RoaXMuX3JlZnJlc2hTdHlsZShlKSx0aGlzLl9kaW1lbnNpb25zQ2hhbmdlZCYmdGhpcy5fcmVmcmVzaFhQb3NpdGlvbihlKX1fY3JlYXRlRWxlbWVudChlKXt2YXIgdCxpO2NvbnN0IHM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtzLmNsYXNzTGlzdC5hZGQoXCJ4dGVybS1kZWNvcmF0aW9uXCIpLHMuY2xhc3NMaXN0LnRvZ2dsZShcInh0ZXJtLWRlY29yYXRpb24tdG9wLWxheWVyXCIsXCJ0b3BcIj09PShudWxsPT09KHQ9bnVsbD09ZT92b2lkIDA6ZS5vcHRpb25zKXx8dm9pZCAwPT09dD92b2lkIDA6dC5sYXllcikpLHMuc3R5bGUud2lkdGg9YCR7TWF0aC5yb3VuZCgoZS5vcHRpb25zLndpZHRofHwxKSp0aGlzLl9yZW5kZXJTZXJ2aWNlLmRpbWVuc2lvbnMuY3NzLmNlbGwud2lkdGgpfXB4YCxzLnN0eWxlLmhlaWdodD0oZS5vcHRpb25zLmhlaWdodHx8MSkqdGhpcy5fcmVuZGVyU2VydmljZS5kaW1lbnNpb25zLmNzcy5jZWxsLmhlaWdodCtcInB4XCIscy5zdHlsZS50b3A9KGUubWFya2VyLmxpbmUtdGhpcy5fYnVmZmVyU2VydmljZS5idWZmZXJzLmFjdGl2ZS55ZGlzcCkqdGhpcy5fcmVuZGVyU2VydmljZS5kaW1lbnNpb25zLmNzcy5jZWxsLmhlaWdodCtcInB4XCIscy5zdHlsZS5saW5lSGVpZ2h0PWAke3RoaXMuX3JlbmRlclNlcnZpY2UuZGltZW5zaW9ucy5jc3MuY2VsbC5oZWlnaHR9cHhgO2NvbnN0IHI9bnVsbCE9PShpPWUub3B0aW9ucy54KSYmdm9pZCAwIT09aT9pOjA7cmV0dXJuIHImJnI+dGhpcy5fYnVmZmVyU2VydmljZS5jb2xzJiYocy5zdHlsZS5kaXNwbGF5PVwibm9uZVwiKSx0aGlzLl9yZWZyZXNoWFBvc2l0aW9uKGUscyksc31fcmVmcmVzaFN0eWxlKGUpe2NvbnN0IHQ9ZS5tYXJrZXIubGluZS10aGlzLl9idWZmZXJTZXJ2aWNlLmJ1ZmZlcnMuYWN0aXZlLnlkaXNwO2lmKHQ8MHx8dD49dGhpcy5fYnVmZmVyU2VydmljZS5yb3dzKWUuZWxlbWVudCYmKGUuZWxlbWVudC5zdHlsZS5kaXNwbGF5PVwibm9uZVwiLGUub25SZW5kZXJFbWl0dGVyLmZpcmUoZS5lbGVtZW50KSk7ZWxzZXtsZXQgaT10aGlzLl9kZWNvcmF0aW9uRWxlbWVudHMuZ2V0KGUpO2l8fChpPXRoaXMuX2NyZWF0ZUVsZW1lbnQoZSksZS5lbGVtZW50PWksdGhpcy5fZGVjb3JhdGlvbkVsZW1lbnRzLnNldChlLGkpLHRoaXMuX2NvbnRhaW5lci5hcHBlbmRDaGlsZChpKSxlLm9uRGlzcG9zZSgoKCk9Pnt0aGlzLl9kZWNvcmF0aW9uRWxlbWVudHMuZGVsZXRlKGUpLGkucmVtb3ZlKCl9KSkpLGkuc3R5bGUudG9wPXQqdGhpcy5fcmVuZGVyU2VydmljZS5kaW1lbnNpb25zLmNzcy5jZWxsLmhlaWdodCtcInB4XCIsaS5zdHlsZS5kaXNwbGF5PXRoaXMuX2FsdEJ1ZmZlcklzQWN0aXZlP1wibm9uZVwiOlwiYmxvY2tcIixlLm9uUmVuZGVyRW1pdHRlci5maXJlKGkpfX1fcmVmcmVzaFhQb3NpdGlvbihlLHQ9ZS5lbGVtZW50KXt2YXIgaTtpZighdClyZXR1cm47Y29uc3Qgcz1udWxsIT09KGk9ZS5vcHRpb25zLngpJiZ2b2lkIDAhPT1pP2k6MDtcInJpZ2h0XCI9PT0oZS5vcHRpb25zLmFuY2hvcnx8XCJsZWZ0XCIpP3Quc3R5bGUucmlnaHQ9cz9zKnRoaXMuX3JlbmRlclNlcnZpY2UuZGltZW5zaW9ucy5jc3MuY2VsbC53aWR0aCtcInB4XCI6XCJcIjp0LnN0eWxlLmxlZnQ9cz9zKnRoaXMuX3JlbmRlclNlcnZpY2UuZGltZW5zaW9ucy5jc3MuY2VsbC53aWR0aCtcInB4XCI6XCJcIn1fcmVtb3ZlRGVjb3JhdGlvbihlKXt2YXIgdDtudWxsPT09KHQ9dGhpcy5fZGVjb3JhdGlvbkVsZW1lbnRzLmdldChlKSl8fHZvaWQgMD09PXR8fHQucmVtb3ZlKCksdGhpcy5fZGVjb3JhdGlvbkVsZW1lbnRzLmRlbGV0ZShlKSxlLmRpc3Bvc2UoKX19O3QuQnVmZmVyRGVjb3JhdGlvblJlbmRlcmVyPWM9cyhbcigxLGguSUJ1ZmZlclNlcnZpY2UpLHIoMixoLklEZWNvcmF0aW9uU2VydmljZSkscigzLG8uSVJlbmRlclNlcnZpY2UpXSxjKX0sNTg3MTooZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuQ29sb3Jab25lU3RvcmU9dm9pZCAwLHQuQ29sb3Jab25lU3RvcmU9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLl96b25lcz1bXSx0aGlzLl96b25lUG9vbD1bXSx0aGlzLl96b25lUG9vbEluZGV4PTAsdGhpcy5fbGluZVBhZGRpbmc9e2Z1bGw6MCxsZWZ0OjAsY2VudGVyOjAscmlnaHQ6MH19Z2V0IHpvbmVzKCl7cmV0dXJuIHRoaXMuX3pvbmVQb29sLmxlbmd0aD1NYXRoLm1pbih0aGlzLl96b25lUG9vbC5sZW5ndGgsdGhpcy5fem9uZXMubGVuZ3RoKSx0aGlzLl96b25lc31jbGVhcigpe3RoaXMuX3pvbmVzLmxlbmd0aD0wLHRoaXMuX3pvbmVQb29sSW5kZXg9MH1hZGREZWNvcmF0aW9uKGUpe2lmKGUub3B0aW9ucy5vdmVydmlld1J1bGVyT3B0aW9ucyl7Zm9yKGNvbnN0IHQgb2YgdGhpcy5fem9uZXMpaWYodC5jb2xvcj09PWUub3B0aW9ucy5vdmVydmlld1J1bGVyT3B0aW9ucy5jb2xvciYmdC5wb3NpdGlvbj09PWUub3B0aW9ucy5vdmVydmlld1J1bGVyT3B0aW9ucy5wb3NpdGlvbil7aWYodGhpcy5fbGluZUludGVyc2VjdHNab25lKHQsZS5tYXJrZXIubGluZSkpcmV0dXJuO2lmKHRoaXMuX2xpbmVBZGphY2VudFRvWm9uZSh0LGUubWFya2VyLmxpbmUsZS5vcHRpb25zLm92ZXJ2aWV3UnVsZXJPcHRpb25zLnBvc2l0aW9uKSlyZXR1cm4gdm9pZCB0aGlzLl9hZGRMaW5lVG9ab25lKHQsZS5tYXJrZXIubGluZSl9aWYodGhpcy5fem9uZVBvb2xJbmRleDx0aGlzLl96b25lUG9vbC5sZW5ndGgpcmV0dXJuIHRoaXMuX3pvbmVQb29sW3RoaXMuX3pvbmVQb29sSW5kZXhdLmNvbG9yPWUub3B0aW9ucy5vdmVydmlld1J1bGVyT3B0aW9ucy5jb2xvcix0aGlzLl96b25lUG9vbFt0aGlzLl96b25lUG9vbEluZGV4XS5wb3NpdGlvbj1lLm9wdGlvbnMub3ZlcnZpZXdSdWxlck9wdGlvbnMucG9zaXRpb24sdGhpcy5fem9uZVBvb2xbdGhpcy5fem9uZVBvb2xJbmRleF0uc3RhcnRCdWZmZXJMaW5lPWUubWFya2VyLmxpbmUsdGhpcy5fem9uZVBvb2xbdGhpcy5fem9uZVBvb2xJbmRleF0uZW5kQnVmZmVyTGluZT1lLm1hcmtlci5saW5lLHZvaWQgdGhpcy5fem9uZXMucHVzaCh0aGlzLl96b25lUG9vbFt0aGlzLl96b25lUG9vbEluZGV4KytdKTt0aGlzLl96b25lcy5wdXNoKHtjb2xvcjplLm9wdGlvbnMub3ZlcnZpZXdSdWxlck9wdGlvbnMuY29sb3IscG9zaXRpb246ZS5vcHRpb25zLm92ZXJ2aWV3UnVsZXJPcHRpb25zLnBvc2l0aW9uLHN0YXJ0QnVmZmVyTGluZTplLm1hcmtlci5saW5lLGVuZEJ1ZmZlckxpbmU6ZS5tYXJrZXIubGluZX0pLHRoaXMuX3pvbmVQb29sLnB1c2godGhpcy5fem9uZXNbdGhpcy5fem9uZXMubGVuZ3RoLTFdKSx0aGlzLl96b25lUG9vbEluZGV4Kyt9fXNldFBhZGRpbmcoZSl7dGhpcy5fbGluZVBhZGRpbmc9ZX1fbGluZUludGVyc2VjdHNab25lKGUsdCl7cmV0dXJuIHQ+PWUuc3RhcnRCdWZmZXJMaW5lJiZ0PD1lLmVuZEJ1ZmZlckxpbmV9X2xpbmVBZGphY2VudFRvWm9uZShlLHQsaSl7cmV0dXJuIHQ+PWUuc3RhcnRCdWZmZXJMaW5lLXRoaXMuX2xpbmVQYWRkaW5nW2l8fFwiZnVsbFwiXSYmdDw9ZS5lbmRCdWZmZXJMaW5lK3RoaXMuX2xpbmVQYWRkaW5nW2l8fFwiZnVsbFwiXX1fYWRkTGluZVRvWm9uZShlLHQpe2Uuc3RhcnRCdWZmZXJMaW5lPU1hdGgubWluKGUuc3RhcnRCdWZmZXJMaW5lLHQpLGUuZW5kQnVmZmVyTGluZT1NYXRoLm1heChlLmVuZEJ1ZmZlckxpbmUsdCl9fX0sNTc0NDpmdW5jdGlvbihlLHQsaSl7dmFyIHM9dGhpcyYmdGhpcy5fX2RlY29yYXRlfHxmdW5jdGlvbihlLHQsaSxzKXt2YXIgcixuPWFyZ3VtZW50cy5sZW5ndGgsbz1uPDM/dDpudWxsPT09cz9zPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxpKTpzO2lmKFwib2JqZWN0XCI9PXR5cGVvZiBSZWZsZWN0JiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBSZWZsZWN0LmRlY29yYXRlKW89UmVmbGVjdC5kZWNvcmF0ZShlLHQsaSxzKTtlbHNlIGZvcih2YXIgYT1lLmxlbmd0aC0xO2E+PTA7YS0tKShyPWVbYV0pJiYobz0objwzP3Iobyk6bj4zP3IodCxpLG8pOnIodCxpKSl8fG8pO3JldHVybiBuPjMmJm8mJk9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGksbyksb30scj10aGlzJiZ0aGlzLl9fcGFyYW18fGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGkscyl7dChpLHMsZSl9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0Lk92ZXJ2aWV3UnVsZXJSZW5kZXJlcj12b2lkIDA7Y29uc3Qgbj1pKDU4NzEpLG89aSgzNjU2KSxhPWkoNDcyNSksaD1pKDg0NCksYz1pKDI1ODUpLGw9e2Z1bGw6MCxsZWZ0OjAsY2VudGVyOjAscmlnaHQ6MH0sZD17ZnVsbDowLGxlZnQ6MCxjZW50ZXI6MCxyaWdodDowfSxfPXtmdWxsOjAsbGVmdDowLGNlbnRlcjowLHJpZ2h0OjB9O2xldCB1PXQuT3ZlcnZpZXdSdWxlclJlbmRlcmVyPWNsYXNzIGV4dGVuZHMgaC5EaXNwb3NhYmxle2dldCBfd2lkdGgoKXtyZXR1cm4gdGhpcy5fb3B0aW9uc1NlcnZpY2Uub3B0aW9ucy5vdmVydmlld1J1bGVyV2lkdGh8fDB9Y29uc3RydWN0b3IoZSx0LGkscyxyLG8sYSl7dmFyIGM7c3VwZXIoKSx0aGlzLl92aWV3cG9ydEVsZW1lbnQ9ZSx0aGlzLl9zY3JlZW5FbGVtZW50PXQsdGhpcy5fYnVmZmVyU2VydmljZT1pLHRoaXMuX2RlY29yYXRpb25TZXJ2aWNlPXMsdGhpcy5fcmVuZGVyU2VydmljZT1yLHRoaXMuX29wdGlvbnNTZXJ2aWNlPW8sdGhpcy5fY29yZUJyb3dzZVNlcnZpY2U9YSx0aGlzLl9jb2xvclpvbmVTdG9yZT1uZXcgbi5Db2xvclpvbmVTdG9yZSx0aGlzLl9zaG91bGRVcGRhdGVEaW1lbnNpb25zPSEwLHRoaXMuX3Nob3VsZFVwZGF0ZUFuY2hvcj0hMCx0aGlzLl9sYXN0S25vd25CdWZmZXJMZW5ndGg9MCx0aGlzLl9jYW52YXM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImNhbnZhc1wiKSx0aGlzLl9jYW52YXMuY2xhc3NMaXN0LmFkZChcInh0ZXJtLWRlY29yYXRpb24tb3ZlcnZpZXctcnVsZXJcIiksdGhpcy5fcmVmcmVzaENhbnZhc0RpbWVuc2lvbnMoKSxudWxsPT09KGM9dGhpcy5fdmlld3BvcnRFbGVtZW50LnBhcmVudEVsZW1lbnQpfHx2b2lkIDA9PT1jfHxjLmluc2VydEJlZm9yZSh0aGlzLl9jYW52YXMsdGhpcy5fdmlld3BvcnRFbGVtZW50KTtjb25zdCBsPXRoaXMuX2NhbnZhcy5nZXRDb250ZXh0KFwiMmRcIik7aWYoIWwpdGhyb3cgbmV3IEVycm9yKFwiQ3R4IGNhbm5vdCBiZSBudWxsXCIpO3RoaXMuX2N0eD1sLHRoaXMuX3JlZ2lzdGVyRGVjb3JhdGlvbkxpc3RlbmVycygpLHRoaXMuX3JlZ2lzdGVyQnVmZmVyQ2hhbmdlTGlzdGVuZXJzKCksdGhpcy5fcmVnaXN0ZXJEaW1lbnNpb25DaGFuZ2VMaXN0ZW5lcnMoKSx0aGlzLnJlZ2lzdGVyKCgwLGgudG9EaXNwb3NhYmxlKSgoKCk9Pnt2YXIgZTtudWxsPT09KGU9dGhpcy5fY2FudmFzKXx8dm9pZCAwPT09ZXx8ZS5yZW1vdmUoKX0pKSl9X3JlZ2lzdGVyRGVjb3JhdGlvbkxpc3RlbmVycygpe3RoaXMucmVnaXN0ZXIodGhpcy5fZGVjb3JhdGlvblNlcnZpY2Uub25EZWNvcmF0aW9uUmVnaXN0ZXJlZCgoKCk9PnRoaXMuX3F1ZXVlUmVmcmVzaCh2b2lkIDAsITApKSkpLHRoaXMucmVnaXN0ZXIodGhpcy5fZGVjb3JhdGlvblNlcnZpY2Uub25EZWNvcmF0aW9uUmVtb3ZlZCgoKCk9PnRoaXMuX3F1ZXVlUmVmcmVzaCh2b2lkIDAsITApKSkpfV9yZWdpc3RlckJ1ZmZlckNoYW5nZUxpc3RlbmVycygpe3RoaXMucmVnaXN0ZXIodGhpcy5fcmVuZGVyU2VydmljZS5vblJlbmRlcmVkVmlld3BvcnRDaGFuZ2UoKCgpPT50aGlzLl9xdWV1ZVJlZnJlc2goKSkpKSx0aGlzLnJlZ2lzdGVyKHRoaXMuX2J1ZmZlclNlcnZpY2UuYnVmZmVycy5vbkJ1ZmZlckFjdGl2YXRlKCgoKT0+e3RoaXMuX2NhbnZhcy5zdHlsZS5kaXNwbGF5PXRoaXMuX2J1ZmZlclNlcnZpY2UuYnVmZmVyPT09dGhpcy5fYnVmZmVyU2VydmljZS5idWZmZXJzLmFsdD9cIm5vbmVcIjpcImJsb2NrXCJ9KSkpLHRoaXMucmVnaXN0ZXIodGhpcy5fYnVmZmVyU2VydmljZS5vblNjcm9sbCgoKCk9Pnt0aGlzLl9sYXN0S25vd25CdWZmZXJMZW5ndGghPT10aGlzLl9idWZmZXJTZXJ2aWNlLmJ1ZmZlcnMubm9ybWFsLmxpbmVzLmxlbmd0aCYmKHRoaXMuX3JlZnJlc2hEcmF3SGVpZ2h0Q29uc3RhbnRzKCksdGhpcy5fcmVmcmVzaENvbG9yWm9uZVBhZGRpbmcoKSl9KSkpfV9yZWdpc3RlckRpbWVuc2lvbkNoYW5nZUxpc3RlbmVycygpe3RoaXMucmVnaXN0ZXIodGhpcy5fcmVuZGVyU2VydmljZS5vblJlbmRlcigoKCk9Pnt0aGlzLl9jb250YWluZXJIZWlnaHQmJnRoaXMuX2NvbnRhaW5lckhlaWdodD09PXRoaXMuX3NjcmVlbkVsZW1lbnQuY2xpZW50SGVpZ2h0fHwodGhpcy5fcXVldWVSZWZyZXNoKCEwKSx0aGlzLl9jb250YWluZXJIZWlnaHQ9dGhpcy5fc2NyZWVuRWxlbWVudC5jbGllbnRIZWlnaHQpfSkpKSx0aGlzLnJlZ2lzdGVyKHRoaXMuX29wdGlvbnNTZXJ2aWNlLm9uU3BlY2lmaWNPcHRpb25DaGFuZ2UoXCJvdmVydmlld1J1bGVyV2lkdGhcIiwoKCk9PnRoaXMuX3F1ZXVlUmVmcmVzaCghMCkpKSksdGhpcy5yZWdpc3RlcigoMCxvLmFkZERpc3Bvc2FibGVEb21MaXN0ZW5lcikodGhpcy5fY29yZUJyb3dzZVNlcnZpY2Uud2luZG93LFwicmVzaXplXCIsKCgpPT50aGlzLl9xdWV1ZVJlZnJlc2goITApKSkpLHRoaXMuX3F1ZXVlUmVmcmVzaCghMCl9X3JlZnJlc2hEcmF3Q29uc3RhbnRzKCl7Y29uc3QgZT1NYXRoLmZsb29yKHRoaXMuX2NhbnZhcy53aWR0aC8zKSx0PU1hdGguY2VpbCh0aGlzLl9jYW52YXMud2lkdGgvMyk7ZC5mdWxsPXRoaXMuX2NhbnZhcy53aWR0aCxkLmxlZnQ9ZSxkLmNlbnRlcj10LGQucmlnaHQ9ZSx0aGlzLl9yZWZyZXNoRHJhd0hlaWdodENvbnN0YW50cygpLF8uZnVsbD0wLF8ubGVmdD0wLF8uY2VudGVyPWQubGVmdCxfLnJpZ2h0PWQubGVmdCtkLmNlbnRlcn1fcmVmcmVzaERyYXdIZWlnaHRDb25zdGFudHMoKXtsLmZ1bGw9TWF0aC5yb3VuZCgyKnRoaXMuX2NvcmVCcm93c2VTZXJ2aWNlLmRwcik7Y29uc3QgZT10aGlzLl9jYW52YXMuaGVpZ2h0L3RoaXMuX2J1ZmZlclNlcnZpY2UuYnVmZmVyLmxpbmVzLmxlbmd0aCx0PU1hdGgucm91bmQoTWF0aC5tYXgoTWF0aC5taW4oZSwxMiksNikqdGhpcy5fY29yZUJyb3dzZVNlcnZpY2UuZHByKTtsLmxlZnQ9dCxsLmNlbnRlcj10LGwucmlnaHQ9dH1fcmVmcmVzaENvbG9yWm9uZVBhZGRpbmcoKXt0aGlzLl9jb2xvclpvbmVTdG9yZS5zZXRQYWRkaW5nKHtmdWxsOk1hdGguZmxvb3IodGhpcy5fYnVmZmVyU2VydmljZS5idWZmZXJzLmFjdGl2ZS5saW5lcy5sZW5ndGgvKHRoaXMuX2NhbnZhcy5oZWlnaHQtMSkqbC5mdWxsKSxsZWZ0Ok1hdGguZmxvb3IodGhpcy5fYnVmZmVyU2VydmljZS5idWZmZXJzLmFjdGl2ZS5saW5lcy5sZW5ndGgvKHRoaXMuX2NhbnZhcy5oZWlnaHQtMSkqbC5sZWZ0KSxjZW50ZXI6TWF0aC5mbG9vcih0aGlzLl9idWZmZXJTZXJ2aWNlLmJ1ZmZlcnMuYWN0aXZlLmxpbmVzLmxlbmd0aC8odGhpcy5fY2FudmFzLmhlaWdodC0xKSpsLmNlbnRlcikscmlnaHQ6TWF0aC5mbG9vcih0aGlzLl9idWZmZXJTZXJ2aWNlLmJ1ZmZlcnMuYWN0aXZlLmxpbmVzLmxlbmd0aC8odGhpcy5fY2FudmFzLmhlaWdodC0xKSpsLnJpZ2h0KX0pLHRoaXMuX2xhc3RLbm93bkJ1ZmZlckxlbmd0aD10aGlzLl9idWZmZXJTZXJ2aWNlLmJ1ZmZlcnMubm9ybWFsLmxpbmVzLmxlbmd0aH1fcmVmcmVzaENhbnZhc0RpbWVuc2lvbnMoKXt0aGlzLl9jYW52YXMuc3R5bGUud2lkdGg9YCR7dGhpcy5fd2lkdGh9cHhgLHRoaXMuX2NhbnZhcy53aWR0aD1NYXRoLnJvdW5kKHRoaXMuX3dpZHRoKnRoaXMuX2NvcmVCcm93c2VTZXJ2aWNlLmRwciksdGhpcy5fY2FudmFzLnN0eWxlLmhlaWdodD1gJHt0aGlzLl9zY3JlZW5FbGVtZW50LmNsaWVudEhlaWdodH1weGAsdGhpcy5fY2FudmFzLmhlaWdodD1NYXRoLnJvdW5kKHRoaXMuX3NjcmVlbkVsZW1lbnQuY2xpZW50SGVpZ2h0KnRoaXMuX2NvcmVCcm93c2VTZXJ2aWNlLmRwciksdGhpcy5fcmVmcmVzaERyYXdDb25zdGFudHMoKSx0aGlzLl9yZWZyZXNoQ29sb3Jab25lUGFkZGluZygpfV9yZWZyZXNoRGVjb3JhdGlvbnMoKXt0aGlzLl9zaG91bGRVcGRhdGVEaW1lbnNpb25zJiZ0aGlzLl9yZWZyZXNoQ2FudmFzRGltZW5zaW9ucygpLHRoaXMuX2N0eC5jbGVhclJlY3QoMCwwLHRoaXMuX2NhbnZhcy53aWR0aCx0aGlzLl9jYW52YXMuaGVpZ2h0KSx0aGlzLl9jb2xvclpvbmVTdG9yZS5jbGVhcigpO2Zvcihjb25zdCBlIG9mIHRoaXMuX2RlY29yYXRpb25TZXJ2aWNlLmRlY29yYXRpb25zKXRoaXMuX2NvbG9yWm9uZVN0b3JlLmFkZERlY29yYXRpb24oZSk7dGhpcy5fY3R4LmxpbmVXaWR0aD0xO2NvbnN0IGU9dGhpcy5fY29sb3Jab25lU3RvcmUuem9uZXM7Zm9yKGNvbnN0IHQgb2YgZSlcImZ1bGxcIiE9PXQucG9zaXRpb24mJnRoaXMuX3JlbmRlckNvbG9yWm9uZSh0KTtmb3IoY29uc3QgdCBvZiBlKVwiZnVsbFwiPT09dC5wb3NpdGlvbiYmdGhpcy5fcmVuZGVyQ29sb3Jab25lKHQpO3RoaXMuX3Nob3VsZFVwZGF0ZURpbWVuc2lvbnM9ITEsdGhpcy5fc2hvdWxkVXBkYXRlQW5jaG9yPSExfV9yZW5kZXJDb2xvclpvbmUoZSl7dGhpcy5fY3R4LmZpbGxTdHlsZT1lLmNvbG9yLHRoaXMuX2N0eC5maWxsUmVjdChfW2UucG9zaXRpb258fFwiZnVsbFwiXSxNYXRoLnJvdW5kKCh0aGlzLl9jYW52YXMuaGVpZ2h0LTEpKihlLnN0YXJ0QnVmZmVyTGluZS90aGlzLl9idWZmZXJTZXJ2aWNlLmJ1ZmZlcnMuYWN0aXZlLmxpbmVzLmxlbmd0aCktbFtlLnBvc2l0aW9ufHxcImZ1bGxcIl0vMiksZFtlLnBvc2l0aW9ufHxcImZ1bGxcIl0sTWF0aC5yb3VuZCgodGhpcy5fY2FudmFzLmhlaWdodC0xKSooKGUuZW5kQnVmZmVyTGluZS1lLnN0YXJ0QnVmZmVyTGluZSkvdGhpcy5fYnVmZmVyU2VydmljZS5idWZmZXJzLmFjdGl2ZS5saW5lcy5sZW5ndGgpK2xbZS5wb3NpdGlvbnx8XCJmdWxsXCJdKSl9X3F1ZXVlUmVmcmVzaChlLHQpe3RoaXMuX3Nob3VsZFVwZGF0ZURpbWVuc2lvbnM9ZXx8dGhpcy5fc2hvdWxkVXBkYXRlRGltZW5zaW9ucyx0aGlzLl9zaG91bGRVcGRhdGVBbmNob3I9dHx8dGhpcy5fc2hvdWxkVXBkYXRlQW5jaG9yLHZvaWQgMD09PXRoaXMuX2FuaW1hdGlvbkZyYW1lJiYodGhpcy5fYW5pbWF0aW9uRnJhbWU9dGhpcy5fY29yZUJyb3dzZVNlcnZpY2Uud2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSgoKCk9Pnt0aGlzLl9yZWZyZXNoRGVjb3JhdGlvbnMoKSx0aGlzLl9hbmltYXRpb25GcmFtZT12b2lkIDB9KSkpfX07dC5PdmVydmlld1J1bGVyUmVuZGVyZXI9dT1zKFtyKDIsYy5JQnVmZmVyU2VydmljZSkscigzLGMuSURlY29yYXRpb25TZXJ2aWNlKSxyKDQsYS5JUmVuZGVyU2VydmljZSkscig1LGMuSU9wdGlvbnNTZXJ2aWNlKSxyKDYsYS5JQ29yZUJyb3dzZXJTZXJ2aWNlKV0sdSl9LDI5NTA6ZnVuY3Rpb24oZSx0LGkpe3ZhciBzPXRoaXMmJnRoaXMuX19kZWNvcmF0ZXx8ZnVuY3Rpb24oZSx0LGkscyl7dmFyIHIsbj1hcmd1bWVudHMubGVuZ3RoLG89bjwzP3Q6bnVsbD09PXM/cz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsaSk6cztpZihcIm9iamVjdFwiPT10eXBlb2YgUmVmbGVjdCYmXCJmdW5jdGlvblwiPT10eXBlb2YgUmVmbGVjdC5kZWNvcmF0ZSlvPVJlZmxlY3QuZGVjb3JhdGUoZSx0LGkscyk7ZWxzZSBmb3IodmFyIGE9ZS5sZW5ndGgtMTthPj0wO2EtLSkocj1lW2FdKSYmKG89KG48Mz9yKG8pOm4+Mz9yKHQsaSxvKTpyKHQsaSkpfHxvKTtyZXR1cm4gbj4zJiZvJiZPYmplY3QuZGVmaW5lUHJvcGVydHkodCxpLG8pLG99LHI9dGhpcyYmdGhpcy5fX3BhcmFtfHxmdW5jdGlvbihlLHQpe3JldHVybiBmdW5jdGlvbihpLHMpe3QoaSxzLGUpfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5Db21wb3NpdGlvbkhlbHBlcj12b2lkIDA7Y29uc3Qgbj1pKDQ3MjUpLG89aSgyNTg1KSxhPWkoMjU4NCk7bGV0IGg9dC5Db21wb3NpdGlvbkhlbHBlcj1jbGFzc3tnZXQgaXNDb21wb3NpbmcoKXtyZXR1cm4gdGhpcy5faXNDb21wb3Npbmd9Y29uc3RydWN0b3IoZSx0LGkscyxyLG4pe3RoaXMuX3RleHRhcmVhPWUsdGhpcy5fY29tcG9zaXRpb25WaWV3PXQsdGhpcy5fYnVmZmVyU2VydmljZT1pLHRoaXMuX29wdGlvbnNTZXJ2aWNlPXMsdGhpcy5fY29yZVNlcnZpY2U9cix0aGlzLl9yZW5kZXJTZXJ2aWNlPW4sdGhpcy5faXNDb21wb3Npbmc9ITEsdGhpcy5faXNTZW5kaW5nQ29tcG9zaXRpb249ITEsdGhpcy5fY29tcG9zaXRpb25Qb3NpdGlvbj17c3RhcnQ6MCxlbmQ6MH0sdGhpcy5fZGF0YUFscmVhZHlTZW50PVwiXCJ9Y29tcG9zaXRpb25zdGFydCgpe3RoaXMuX2lzQ29tcG9zaW5nPSEwLHRoaXMuX2NvbXBvc2l0aW9uUG9zaXRpb24uc3RhcnQ9dGhpcy5fdGV4dGFyZWEudmFsdWUubGVuZ3RoLHRoaXMuX2NvbXBvc2l0aW9uVmlldy50ZXh0Q29udGVudD1cIlwiLHRoaXMuX2RhdGFBbHJlYWR5U2VudD1cIlwiLHRoaXMuX2NvbXBvc2l0aW9uVmlldy5jbGFzc0xpc3QuYWRkKFwiYWN0aXZlXCIpfWNvbXBvc2l0aW9udXBkYXRlKGUpe3RoaXMuX2NvbXBvc2l0aW9uVmlldy50ZXh0Q29udGVudD1lLmRhdGEsdGhpcy51cGRhdGVDb21wb3NpdGlvbkVsZW1lbnRzKCksc2V0VGltZW91dCgoKCk9Pnt0aGlzLl9jb21wb3NpdGlvblBvc2l0aW9uLmVuZD10aGlzLl90ZXh0YXJlYS52YWx1ZS5sZW5ndGh9KSwwKX1jb21wb3NpdGlvbmVuZCgpe3RoaXMuX2ZpbmFsaXplQ29tcG9zaXRpb24oITApfWtleWRvd24oZSl7aWYodGhpcy5faXNDb21wb3Npbmd8fHRoaXMuX2lzU2VuZGluZ0NvbXBvc2l0aW9uKXtpZigyMjk9PT1lLmtleUNvZGUpcmV0dXJuITE7aWYoMTY9PT1lLmtleUNvZGV8fDE3PT09ZS5rZXlDb2RlfHwxOD09PWUua2V5Q29kZSlyZXR1cm4hMTt0aGlzLl9maW5hbGl6ZUNvbXBvc2l0aW9uKCExKX1yZXR1cm4gMjI5IT09ZS5rZXlDb2RlfHwodGhpcy5faGFuZGxlQW55VGV4dGFyZWFDaGFuZ2VzKCksITEpfV9maW5hbGl6ZUNvbXBvc2l0aW9uKGUpe2lmKHRoaXMuX2NvbXBvc2l0aW9uVmlldy5jbGFzc0xpc3QucmVtb3ZlKFwiYWN0aXZlXCIpLHRoaXMuX2lzQ29tcG9zaW5nPSExLGUpe2NvbnN0IGU9e3N0YXJ0OnRoaXMuX2NvbXBvc2l0aW9uUG9zaXRpb24uc3RhcnQsZW5kOnRoaXMuX2NvbXBvc2l0aW9uUG9zaXRpb24uZW5kfTt0aGlzLl9pc1NlbmRpbmdDb21wb3NpdGlvbj0hMCxzZXRUaW1lb3V0KCgoKT0+e2lmKHRoaXMuX2lzU2VuZGluZ0NvbXBvc2l0aW9uKXtsZXQgdDt0aGlzLl9pc1NlbmRpbmdDb21wb3NpdGlvbj0hMSxlLnN0YXJ0Kz10aGlzLl9kYXRhQWxyZWFkeVNlbnQubGVuZ3RoLHQ9dGhpcy5faXNDb21wb3Npbmc/dGhpcy5fdGV4dGFyZWEudmFsdWUuc3Vic3RyaW5nKGUuc3RhcnQsZS5lbmQpOnRoaXMuX3RleHRhcmVhLnZhbHVlLnN1YnN0cmluZyhlLnN0YXJ0KSx0Lmxlbmd0aD4wJiZ0aGlzLl9jb3JlU2VydmljZS50cmlnZ2VyRGF0YUV2ZW50KHQsITApfX0pLDApfWVsc2V7dGhpcy5faXNTZW5kaW5nQ29tcG9zaXRpb249ITE7Y29uc3QgZT10aGlzLl90ZXh0YXJlYS52YWx1ZS5zdWJzdHJpbmcodGhpcy5fY29tcG9zaXRpb25Qb3NpdGlvbi5zdGFydCx0aGlzLl9jb21wb3NpdGlvblBvc2l0aW9uLmVuZCk7dGhpcy5fY29yZVNlcnZpY2UudHJpZ2dlckRhdGFFdmVudChlLCEwKX19X2hhbmRsZUFueVRleHRhcmVhQ2hhbmdlcygpe2NvbnN0IGU9dGhpcy5fdGV4dGFyZWEudmFsdWU7c2V0VGltZW91dCgoKCk9PntpZighdGhpcy5faXNDb21wb3Npbmcpe2NvbnN0IHQ9dGhpcy5fdGV4dGFyZWEudmFsdWUsaT10LnJlcGxhY2UoZSxcIlwiKTt0aGlzLl9kYXRhQWxyZWFkeVNlbnQ9aSx0Lmxlbmd0aD5lLmxlbmd0aD90aGlzLl9jb3JlU2VydmljZS50cmlnZ2VyRGF0YUV2ZW50KGksITApOnQubGVuZ3RoPGUubGVuZ3RoP3RoaXMuX2NvcmVTZXJ2aWNlLnRyaWdnZXJEYXRhRXZlbnQoYCR7YS5DMC5ERUx9YCwhMCk6dC5sZW5ndGg9PT1lLmxlbmd0aCYmdCE9PWUmJnRoaXMuX2NvcmVTZXJ2aWNlLnRyaWdnZXJEYXRhRXZlbnQodCwhMCl9fSksMCl9dXBkYXRlQ29tcG9zaXRpb25FbGVtZW50cyhlKXtpZih0aGlzLl9pc0NvbXBvc2luZyl7aWYodGhpcy5fYnVmZmVyU2VydmljZS5idWZmZXIuaXNDdXJzb3JJblZpZXdwb3J0KXtjb25zdCBlPU1hdGgubWluKHRoaXMuX2J1ZmZlclNlcnZpY2UuYnVmZmVyLngsdGhpcy5fYnVmZmVyU2VydmljZS5jb2xzLTEpLHQ9dGhpcy5fcmVuZGVyU2VydmljZS5kaW1lbnNpb25zLmNzcy5jZWxsLmhlaWdodCxpPXRoaXMuX2J1ZmZlclNlcnZpY2UuYnVmZmVyLnkqdGhpcy5fcmVuZGVyU2VydmljZS5kaW1lbnNpb25zLmNzcy5jZWxsLmhlaWdodCxzPWUqdGhpcy5fcmVuZGVyU2VydmljZS5kaW1lbnNpb25zLmNzcy5jZWxsLndpZHRoO3RoaXMuX2NvbXBvc2l0aW9uVmlldy5zdHlsZS5sZWZ0PXMrXCJweFwiLHRoaXMuX2NvbXBvc2l0aW9uVmlldy5zdHlsZS50b3A9aStcInB4XCIsdGhpcy5fY29tcG9zaXRpb25WaWV3LnN0eWxlLmhlaWdodD10K1wicHhcIix0aGlzLl9jb21wb3NpdGlvblZpZXcuc3R5bGUubGluZUhlaWdodD10K1wicHhcIix0aGlzLl9jb21wb3NpdGlvblZpZXcuc3R5bGUuZm9udEZhbWlseT10aGlzLl9vcHRpb25zU2VydmljZS5yYXdPcHRpb25zLmZvbnRGYW1pbHksdGhpcy5fY29tcG9zaXRpb25WaWV3LnN0eWxlLmZvbnRTaXplPXRoaXMuX29wdGlvbnNTZXJ2aWNlLnJhd09wdGlvbnMuZm9udFNpemUrXCJweFwiO2NvbnN0IHI9dGhpcy5fY29tcG9zaXRpb25WaWV3LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3RoaXMuX3RleHRhcmVhLnN0eWxlLmxlZnQ9cytcInB4XCIsdGhpcy5fdGV4dGFyZWEuc3R5bGUudG9wPWkrXCJweFwiLHRoaXMuX3RleHRhcmVhLnN0eWxlLndpZHRoPU1hdGgubWF4KHIud2lkdGgsMSkrXCJweFwiLHRoaXMuX3RleHRhcmVhLnN0eWxlLmhlaWdodD1NYXRoLm1heChyLmhlaWdodCwxKStcInB4XCIsdGhpcy5fdGV4dGFyZWEuc3R5bGUubGluZUhlaWdodD1yLmhlaWdodCtcInB4XCJ9ZXx8c2V0VGltZW91dCgoKCk9PnRoaXMudXBkYXRlQ29tcG9zaXRpb25FbGVtZW50cyghMCkpLDApfX19O3QuQ29tcG9zaXRpb25IZWxwZXI9aD1zKFtyKDIsby5JQnVmZmVyU2VydmljZSkscigzLG8uSU9wdGlvbnNTZXJ2aWNlKSxyKDQsby5JQ29yZVNlcnZpY2UpLHIoNSxuLklSZW5kZXJTZXJ2aWNlKV0saCl9LDk4MDY6KGUsdCk9PntmdW5jdGlvbiBpKGUsdCxpKXtjb25zdCBzPWkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkscj1lLmdldENvbXB1dGVkU3R5bGUoaSksbj1wYXJzZUludChyLmdldFByb3BlcnR5VmFsdWUoXCJwYWRkaW5nLWxlZnRcIikpLG89cGFyc2VJbnQoci5nZXRQcm9wZXJ0eVZhbHVlKFwicGFkZGluZy10b3BcIikpO3JldHVyblt0LmNsaWVudFgtcy5sZWZ0LW4sdC5jbGllbnRZLXMudG9wLW9dfU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZ2V0Q29vcmRzPXQuZ2V0Q29vcmRzUmVsYXRpdmVUb0VsZW1lbnQ9dm9pZCAwLHQuZ2V0Q29vcmRzUmVsYXRpdmVUb0VsZW1lbnQ9aSx0LmdldENvb3Jkcz1mdW5jdGlvbihlLHQscyxyLG4sbyxhLGgsYyl7aWYoIW8pcmV0dXJuO2NvbnN0IGw9aShlLHQscyk7cmV0dXJuIGw/KGxbMF09TWF0aC5jZWlsKChsWzBdKyhjP2EvMjowKSkvYSksbFsxXT1NYXRoLmNlaWwobFsxXS9oKSxsWzBdPU1hdGgubWluKE1hdGgubWF4KGxbMF0sMSkscisoYz8xOjApKSxsWzFdPU1hdGgubWluKE1hdGgubWF4KGxbMV0sMSksbiksbCk6dm9pZCAwfX0sOTUwNDooZSx0LGkpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5tb3ZlVG9DZWxsU2VxdWVuY2U9dm9pZCAwO2NvbnN0IHM9aSgyNTg0KTtmdW5jdGlvbiByKGUsdCxpLHMpe2NvbnN0IHI9ZS1uKGUsaSksYT10LW4odCxpKSxsPU1hdGguYWJzKHItYSktZnVuY3Rpb24oZSx0LGkpe2xldCBzPTA7Y29uc3Qgcj1lLW4oZSxpKSxhPXQtbih0LGkpO2ZvcihsZXQgbj0wO248TWF0aC5hYnMoci1hKTtuKyspe2NvbnN0IGE9XCJBXCI9PT1vKGUsdCk/LTE6MSxoPWkuYnVmZmVyLmxpbmVzLmdldChyK2Eqbik7KG51bGw9PWg/dm9pZCAwOmguaXNXcmFwcGVkKSYmcysrfXJldHVybiBzfShlLHQsaSk7cmV0dXJuIGMobCxoKG8oZSx0KSxzKSl9ZnVuY3Rpb24gbihlLHQpe2xldCBpPTAscz10LmJ1ZmZlci5saW5lcy5nZXQoZSkscj1udWxsPT1zP3ZvaWQgMDpzLmlzV3JhcHBlZDtmb3IoO3ImJmU+PTAmJmU8dC5yb3dzOylpKysscz10LmJ1ZmZlci5saW5lcy5nZXQoLS1lKSxyPW51bGw9PXM/dm9pZCAwOnMuaXNXcmFwcGVkO3JldHVybiBpfWZ1bmN0aW9uIG8oZSx0KXtyZXR1cm4gZT50P1wiQVwiOlwiQlwifWZ1bmN0aW9uIGEoZSx0LGkscyxyLG4pe2xldCBvPWUsYT10LGg9XCJcIjtmb3IoO28hPT1pfHxhIT09czspbys9cj8xOi0xLHImJm8+bi5jb2xzLTE/KGgrPW4uYnVmZmVyLnRyYW5zbGF0ZUJ1ZmZlckxpbmVUb1N0cmluZyhhLCExLGUsbyksbz0wLGU9MCxhKyspOiFyJiZvPDAmJihoKz1uLmJ1ZmZlci50cmFuc2xhdGVCdWZmZXJMaW5lVG9TdHJpbmcoYSwhMSwwLGUrMSksbz1uLmNvbHMtMSxlPW8sYS0tKTtyZXR1cm4gaCtuLmJ1ZmZlci50cmFuc2xhdGVCdWZmZXJMaW5lVG9TdHJpbmcoYSwhMSxlLG8pfWZ1bmN0aW9uIGgoZSx0KXtjb25zdCBpPXQ/XCJPXCI6XCJbXCI7cmV0dXJuIHMuQzAuRVNDK2krZX1mdW5jdGlvbiBjKGUsdCl7ZT1NYXRoLmZsb29yKGUpO2xldCBpPVwiXCI7Zm9yKGxldCBzPTA7czxlO3MrKylpKz10O3JldHVybiBpfXQubW92ZVRvQ2VsbFNlcXVlbmNlPWZ1bmN0aW9uKGUsdCxpLHMpe2NvbnN0IG89aS5idWZmZXIueCxsPWkuYnVmZmVyLnk7aWYoIWkuYnVmZmVyLmhhc1Njcm9sbGJhY2spcmV0dXJuIGZ1bmN0aW9uKGUsdCxpLHMsbyxsKXtyZXR1cm4gMD09PXIodCxzLG8sbCkubGVuZ3RoP1wiXCI6YyhhKGUsdCxlLHQtbih0LG8pLCExLG8pLmxlbmd0aCxoKFwiRFwiLGwpKX0obyxsLDAsdCxpLHMpK3IobCx0LGkscykrZnVuY3Rpb24oZSx0LGkscyxvLGwpe2xldCBkO2Q9cih0LHMsbyxsKS5sZW5ndGg+MD9zLW4ocyxvKTp0O2NvbnN0IF89cyx1PWZ1bmN0aW9uKGUsdCxpLHMsbyxhKXtsZXQgaDtyZXR1cm4gaD1yKGkscyxvLGEpLmxlbmd0aD4wP3MtbihzLG8pOnQsZTxpJiZoPD1zfHxlPj1pJiZoPHM/XCJDXCI6XCJEXCJ9KGUsdCxpLHMsbyxsKTtyZXR1cm4gYyhhKGUsZCxpLF8sXCJDXCI9PT11LG8pLmxlbmd0aCxoKHUsbCkpfShvLGwsZSx0LGkscyk7bGV0IGQ7aWYobD09PXQpcmV0dXJuIGQ9bz5lP1wiRFwiOlwiQ1wiLGMoTWF0aC5hYnMoby1lKSxoKGQscykpO2Q9bD50P1wiRFwiOlwiQ1wiO2NvbnN0IF89TWF0aC5hYnMobC10KTtyZXR1cm4gYyhmdW5jdGlvbihlLHQpe3JldHVybiB0LmNvbHMtZX0obD50P2U6byxpKSsoXy0xKSppLmNvbHMrMSsoKGw+dD9vOmUpLTEpLGgoZCxzKSl9fSwxMjk2OmZ1bmN0aW9uKGUsdCxpKXt2YXIgcz10aGlzJiZ0aGlzLl9fZGVjb3JhdGV8fGZ1bmN0aW9uKGUsdCxpLHMpe3ZhciByLG49YXJndW1lbnRzLmxlbmd0aCxvPW48Mz90Om51bGw9PT1zP3M9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LGkpOnM7aWYoXCJvYmplY3RcIj09dHlwZW9mIFJlZmxlY3QmJlwiZnVuY3Rpb25cIj09dHlwZW9mIFJlZmxlY3QuZGVjb3JhdGUpbz1SZWZsZWN0LmRlY29yYXRlKGUsdCxpLHMpO2Vsc2UgZm9yKHZhciBhPWUubGVuZ3RoLTE7YT49MDthLS0pKHI9ZVthXSkmJihvPShuPDM/cihvKTpuPjM/cih0LGksbyk6cih0LGkpKXx8byk7cmV0dXJuIG4+MyYmbyYmT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsaSxvKSxvfSxyPXRoaXMmJnRoaXMuX19wYXJhbXx8ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZnVuY3Rpb24oaSxzKXt0KGkscyxlKX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuRG9tUmVuZGVyZXI9dm9pZCAwO2NvbnN0IG49aSgzNzg3KSxvPWkoMjU1MCksYT1pKDIyMjMpLGg9aSg2MTcxKSxjPWkoNDcyNSksbD1pKDgwNTUpLGQ9aSg4NDYwKSxfPWkoODQ0KSx1PWkoMjU4NSksZj1cInh0ZXJtLWRvbS1yZW5kZXJlci1vd25lci1cIix2PVwieHRlcm0tcm93c1wiLHA9XCJ4dGVybS1mZy1cIixnPVwieHRlcm0tYmctXCIsbT1cInh0ZXJtLWZvY3VzXCIsUz1cInh0ZXJtLXNlbGVjdGlvblwiO2xldCBDPTEsYj10LkRvbVJlbmRlcmVyPWNsYXNzIGV4dGVuZHMgXy5EaXNwb3NhYmxle2NvbnN0cnVjdG9yKGUsdCxpLHMscixhLGMsbCx1LHApe3N1cGVyKCksdGhpcy5fZWxlbWVudD1lLHRoaXMuX3NjcmVlbkVsZW1lbnQ9dCx0aGlzLl92aWV3cG9ydEVsZW1lbnQ9aSx0aGlzLl9saW5raWZpZXIyPXMsdGhpcy5fY2hhclNpemVTZXJ2aWNlPWEsdGhpcy5fb3B0aW9uc1NlcnZpY2U9Yyx0aGlzLl9idWZmZXJTZXJ2aWNlPWwsdGhpcy5fY29yZUJyb3dzZXJTZXJ2aWNlPXUsdGhpcy5fdGhlbWVTZXJ2aWNlPXAsdGhpcy5fdGVybWluYWxDbGFzcz1DKyssdGhpcy5fcm93RWxlbWVudHM9W10sdGhpcy5vblJlcXVlc3RSZWRyYXc9dGhpcy5yZWdpc3RlcihuZXcgZC5FdmVudEVtaXR0ZXIpLmV2ZW50LHRoaXMuX3Jvd0NvbnRhaW5lcj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLHRoaXMuX3Jvd0NvbnRhaW5lci5jbGFzc0xpc3QuYWRkKHYpLHRoaXMuX3Jvd0NvbnRhaW5lci5zdHlsZS5saW5lSGVpZ2h0PVwibm9ybWFsXCIsdGhpcy5fcm93Q29udGFpbmVyLnNldEF0dHJpYnV0ZShcImFyaWEtaGlkZGVuXCIsXCJ0cnVlXCIpLHRoaXMuX3JlZnJlc2hSb3dFbGVtZW50cyh0aGlzLl9idWZmZXJTZXJ2aWNlLmNvbHMsdGhpcy5fYnVmZmVyU2VydmljZS5yb3dzKSx0aGlzLl9zZWxlY3Rpb25Db250YWluZXI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSx0aGlzLl9zZWxlY3Rpb25Db250YWluZXIuY2xhc3NMaXN0LmFkZChTKSx0aGlzLl9zZWxlY3Rpb25Db250YWluZXIuc2V0QXR0cmlidXRlKFwiYXJpYS1oaWRkZW5cIixcInRydWVcIiksdGhpcy5kaW1lbnNpb25zPSgwLGguY3JlYXRlUmVuZGVyRGltZW5zaW9ucykoKSx0aGlzLl91cGRhdGVEaW1lbnNpb25zKCksdGhpcy5yZWdpc3Rlcih0aGlzLl9vcHRpb25zU2VydmljZS5vbk9wdGlvbkNoYW5nZSgoKCk9PnRoaXMuX2hhbmRsZU9wdGlvbnNDaGFuZ2VkKCkpKSksdGhpcy5yZWdpc3Rlcih0aGlzLl90aGVtZVNlcnZpY2Uub25DaGFuZ2VDb2xvcnMoKGU9PnRoaXMuX2luamVjdENzcyhlKSkpKSx0aGlzLl9pbmplY3RDc3ModGhpcy5fdGhlbWVTZXJ2aWNlLmNvbG9ycyksdGhpcy5fcm93RmFjdG9yeT1yLmNyZWF0ZUluc3RhbmNlKG4uRG9tUmVuZGVyZXJSb3dGYWN0b3J5LGRvY3VtZW50KSx0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoZit0aGlzLl90ZXJtaW5hbENsYXNzKSx0aGlzLl9zY3JlZW5FbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX3Jvd0NvbnRhaW5lciksdGhpcy5fc2NyZWVuRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9zZWxlY3Rpb25Db250YWluZXIpLHRoaXMucmVnaXN0ZXIodGhpcy5fbGlua2lmaWVyMi5vblNob3dMaW5rVW5kZXJsaW5lKChlPT50aGlzLl9oYW5kbGVMaW5rSG92ZXIoZSkpKSksdGhpcy5yZWdpc3Rlcih0aGlzLl9saW5raWZpZXIyLm9uSGlkZUxpbmtVbmRlcmxpbmUoKGU9PnRoaXMuX2hhbmRsZUxpbmtMZWF2ZShlKSkpKSx0aGlzLnJlZ2lzdGVyKCgwLF8udG9EaXNwb3NhYmxlKSgoKCk9Pnt0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoZit0aGlzLl90ZXJtaW5hbENsYXNzKSx0aGlzLl9yb3dDb250YWluZXIucmVtb3ZlKCksdGhpcy5fc2VsZWN0aW9uQ29udGFpbmVyLnJlbW92ZSgpLHRoaXMuX3dpZHRoQ2FjaGUuZGlzcG9zZSgpLHRoaXMuX3RoZW1lU3R5bGVFbGVtZW50LnJlbW92ZSgpLHRoaXMuX2RpbWVuc2lvbnNTdHlsZUVsZW1lbnQucmVtb3ZlKCl9KSkpLHRoaXMuX3dpZHRoQ2FjaGU9bmV3IG8uV2lkdGhDYWNoZShkb2N1bWVudCksdGhpcy5fd2lkdGhDYWNoZS5zZXRGb250KHRoaXMuX29wdGlvbnNTZXJ2aWNlLnJhd09wdGlvbnMuZm9udEZhbWlseSx0aGlzLl9vcHRpb25zU2VydmljZS5yYXdPcHRpb25zLmZvbnRTaXplLHRoaXMuX29wdGlvbnNTZXJ2aWNlLnJhd09wdGlvbnMuZm9udFdlaWdodCx0aGlzLl9vcHRpb25zU2VydmljZS5yYXdPcHRpb25zLmZvbnRXZWlnaHRCb2xkKSx0aGlzLl9zZXREZWZhdWx0U3BhY2luZygpfV91cGRhdGVEaW1lbnNpb25zKCl7Y29uc3QgZT10aGlzLl9jb3JlQnJvd3NlclNlcnZpY2UuZHByO3RoaXMuZGltZW5zaW9ucy5kZXZpY2UuY2hhci53aWR0aD10aGlzLl9jaGFyU2l6ZVNlcnZpY2Uud2lkdGgqZSx0aGlzLmRpbWVuc2lvbnMuZGV2aWNlLmNoYXIuaGVpZ2h0PU1hdGguY2VpbCh0aGlzLl9jaGFyU2l6ZVNlcnZpY2UuaGVpZ2h0KmUpLHRoaXMuZGltZW5zaW9ucy5kZXZpY2UuY2VsbC53aWR0aD10aGlzLmRpbWVuc2lvbnMuZGV2aWNlLmNoYXIud2lkdGgrTWF0aC5yb3VuZCh0aGlzLl9vcHRpb25zU2VydmljZS5yYXdPcHRpb25zLmxldHRlclNwYWNpbmcpLHRoaXMuZGltZW5zaW9ucy5kZXZpY2UuY2VsbC5oZWlnaHQ9TWF0aC5mbG9vcih0aGlzLmRpbWVuc2lvbnMuZGV2aWNlLmNoYXIuaGVpZ2h0KnRoaXMuX29wdGlvbnNTZXJ2aWNlLnJhd09wdGlvbnMubGluZUhlaWdodCksdGhpcy5kaW1lbnNpb25zLmRldmljZS5jaGFyLmxlZnQ9MCx0aGlzLmRpbWVuc2lvbnMuZGV2aWNlLmNoYXIudG9wPTAsdGhpcy5kaW1lbnNpb25zLmRldmljZS5jYW52YXMud2lkdGg9dGhpcy5kaW1lbnNpb25zLmRldmljZS5jZWxsLndpZHRoKnRoaXMuX2J1ZmZlclNlcnZpY2UuY29scyx0aGlzLmRpbWVuc2lvbnMuZGV2aWNlLmNhbnZhcy5oZWlnaHQ9dGhpcy5kaW1lbnNpb25zLmRldmljZS5jZWxsLmhlaWdodCp0aGlzLl9idWZmZXJTZXJ2aWNlLnJvd3MsdGhpcy5kaW1lbnNpb25zLmNzcy5jYW52YXMud2lkdGg9TWF0aC5yb3VuZCh0aGlzLmRpbWVuc2lvbnMuZGV2aWNlLmNhbnZhcy53aWR0aC9lKSx0aGlzLmRpbWVuc2lvbnMuY3NzLmNhbnZhcy5oZWlnaHQ9TWF0aC5yb3VuZCh0aGlzLmRpbWVuc2lvbnMuZGV2aWNlLmNhbnZhcy5oZWlnaHQvZSksdGhpcy5kaW1lbnNpb25zLmNzcy5jZWxsLndpZHRoPXRoaXMuZGltZW5zaW9ucy5jc3MuY2FudmFzLndpZHRoL3RoaXMuX2J1ZmZlclNlcnZpY2UuY29scyx0aGlzLmRpbWVuc2lvbnMuY3NzLmNlbGwuaGVpZ2h0PXRoaXMuZGltZW5zaW9ucy5jc3MuY2FudmFzLmhlaWdodC90aGlzLl9idWZmZXJTZXJ2aWNlLnJvd3M7Zm9yKGNvbnN0IGUgb2YgdGhpcy5fcm93RWxlbWVudHMpZS5zdHlsZS53aWR0aD1gJHt0aGlzLmRpbWVuc2lvbnMuY3NzLmNhbnZhcy53aWR0aH1weGAsZS5zdHlsZS5oZWlnaHQ9YCR7dGhpcy5kaW1lbnNpb25zLmNzcy5jZWxsLmhlaWdodH1weGAsZS5zdHlsZS5saW5lSGVpZ2h0PWAke3RoaXMuZGltZW5zaW9ucy5jc3MuY2VsbC5oZWlnaHR9cHhgLGUuc3R5bGUub3ZlcmZsb3c9XCJoaWRkZW5cIjt0aGlzLl9kaW1lbnNpb25zU3R5bGVFbGVtZW50fHwodGhpcy5fZGltZW5zaW9uc1N0eWxlRWxlbWVudD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3R5bGVcIiksdGhpcy5fc2NyZWVuRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9kaW1lbnNpb25zU3R5bGVFbGVtZW50KSk7Y29uc3QgdD1gJHt0aGlzLl90ZXJtaW5hbFNlbGVjdG9yfSAuJHt2fSBzcGFuIHsgZGlzcGxheTogaW5saW5lLWJsb2NrOyBoZWlnaHQ6IDEwMCU7IHZlcnRpY2FsLWFsaWduOiB0b3A7fWA7dGhpcy5fZGltZW5zaW9uc1N0eWxlRWxlbWVudC50ZXh0Q29udGVudD10LHRoaXMuX3NlbGVjdGlvbkNvbnRhaW5lci5zdHlsZS5oZWlnaHQ9dGhpcy5fdmlld3BvcnRFbGVtZW50LnN0eWxlLmhlaWdodCx0aGlzLl9zY3JlZW5FbGVtZW50LnN0eWxlLndpZHRoPWAke3RoaXMuZGltZW5zaW9ucy5jc3MuY2FudmFzLndpZHRofXB4YCx0aGlzLl9zY3JlZW5FbGVtZW50LnN0eWxlLmhlaWdodD1gJHt0aGlzLmRpbWVuc2lvbnMuY3NzLmNhbnZhcy5oZWlnaHR9cHhgfV9pbmplY3RDc3MoZSl7dGhpcy5fdGhlbWVTdHlsZUVsZW1lbnR8fCh0aGlzLl90aGVtZVN0eWxlRWxlbWVudD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3R5bGVcIiksdGhpcy5fc2NyZWVuRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl90aGVtZVN0eWxlRWxlbWVudCkpO2xldCB0PWAke3RoaXMuX3Rlcm1pbmFsU2VsZWN0b3J9IC4ke3Z9IHsgY29sb3I6ICR7ZS5mb3JlZ3JvdW5kLmNzc307IGZvbnQtZmFtaWx5OiAke3RoaXMuX29wdGlvbnNTZXJ2aWNlLnJhd09wdGlvbnMuZm9udEZhbWlseX07IGZvbnQtc2l6ZTogJHt0aGlzLl9vcHRpb25zU2VydmljZS5yYXdPcHRpb25zLmZvbnRTaXplfXB4OyBmb250LWtlcm5pbmc6IG5vbmU7IHdoaXRlLXNwYWNlOiBwcmV9YDt0Kz1gJHt0aGlzLl90ZXJtaW5hbFNlbGVjdG9yfSAuJHt2fSAueHRlcm0tZGltIHsgY29sb3I6ICR7bC5jb2xvci5tdWx0aXBseU9wYWNpdHkoZS5mb3JlZ3JvdW5kLC41KS5jc3N9O31gLHQrPWAke3RoaXMuX3Rlcm1pbmFsU2VsZWN0b3J9IHNwYW46bm90KC54dGVybS1ib2xkKSB7IGZvbnQtd2VpZ2h0OiAke3RoaXMuX29wdGlvbnNTZXJ2aWNlLnJhd09wdGlvbnMuZm9udFdlaWdodH07fSR7dGhpcy5fdGVybWluYWxTZWxlY3Rvcn0gc3Bhbi54dGVybS1ib2xkIHsgZm9udC13ZWlnaHQ6ICR7dGhpcy5fb3B0aW9uc1NlcnZpY2UucmF3T3B0aW9ucy5mb250V2VpZ2h0Qm9sZH07fSR7dGhpcy5fdGVybWluYWxTZWxlY3Rvcn0gc3Bhbi54dGVybS1pdGFsaWMgeyBmb250LXN0eWxlOiBpdGFsaWM7fWAsdCs9XCJAa2V5ZnJhbWVzIGJsaW5rX2JveF9zaGFkb3dfXCIrdGhpcy5fdGVybWluYWxDbGFzcytcIiB7IDUwJSB7ICBib3JkZXItYm90dG9tLXN0eWxlOiBoaWRkZW47IH19XCIsdCs9XCJAa2V5ZnJhbWVzIGJsaW5rX2Jsb2NrX1wiK3RoaXMuX3Rlcm1pbmFsQ2xhc3MrXCIgeyAwJSB7XCIrYCAgYmFja2dyb3VuZC1jb2xvcjogJHtlLmN1cnNvci5jc3N9O2ArYCAgY29sb3I6ICR7ZS5jdXJzb3JBY2NlbnQuY3NzfTsgfSA1MCUgeyAgYmFja2dyb3VuZC1jb2xvcjogaW5oZXJpdDtgK2AgIGNvbG9yOiAke2UuY3Vyc29yLmNzc307IH19YCx0Kz1gJHt0aGlzLl90ZXJtaW5hbFNlbGVjdG9yfSAuJHt2fS4ke219IC54dGVybS1jdXJzb3IueHRlcm0tY3Vyc29yLWJsaW5rOm5vdCgueHRlcm0tY3Vyc29yLWJsb2NrKSB7IGFuaW1hdGlvbjogYmxpbmtfYm94X3NoYWRvd19gK3RoaXMuX3Rlcm1pbmFsQ2xhc3MrXCIgMXMgc3RlcC1lbmQgaW5maW5pdGU7fVwiK2Ake3RoaXMuX3Rlcm1pbmFsU2VsZWN0b3J9IC4ke3Z9LiR7bX0gLnh0ZXJtLWN1cnNvci54dGVybS1jdXJzb3ItYmxpbmsueHRlcm0tY3Vyc29yLWJsb2NrIHsgYW5pbWF0aW9uOiBibGlua19ibG9ja19gK3RoaXMuX3Rlcm1pbmFsQ2xhc3MrXCIgMXMgc3RlcC1lbmQgaW5maW5pdGU7fVwiK2Ake3RoaXMuX3Rlcm1pbmFsU2VsZWN0b3J9IC4ke3Z9IC54dGVybS1jdXJzb3IueHRlcm0tY3Vyc29yLWJsb2NrIHtgK2AgYmFja2dyb3VuZC1jb2xvcjogJHtlLmN1cnNvci5jc3N9O2ArYCBjb2xvcjogJHtlLmN1cnNvckFjY2VudC5jc3N9O31gK2Ake3RoaXMuX3Rlcm1pbmFsU2VsZWN0b3J9IC4ke3Z9IC54dGVybS1jdXJzb3IueHRlcm0tY3Vyc29yLW91dGxpbmUge2ArYCBvdXRsaW5lOiAxcHggc29saWQgJHtlLmN1cnNvci5jc3N9OyBvdXRsaW5lLW9mZnNldDogLTFweDt9YCtgJHt0aGlzLl90ZXJtaW5hbFNlbGVjdG9yfSAuJHt2fSAueHRlcm0tY3Vyc29yLnh0ZXJtLWN1cnNvci1iYXIge2ArYCBib3gtc2hhZG93OiAke3RoaXMuX29wdGlvbnNTZXJ2aWNlLnJhd09wdGlvbnMuY3Vyc29yV2lkdGh9cHggMCAwICR7ZS5jdXJzb3IuY3NzfSBpbnNldDt9YCtgJHt0aGlzLl90ZXJtaW5hbFNlbGVjdG9yfSAuJHt2fSAueHRlcm0tY3Vyc29yLnh0ZXJtLWN1cnNvci11bmRlcmxpbmUge2ArYCBib3JkZXItYm90dG9tOiAxcHggJHtlLmN1cnNvci5jc3N9OyBib3JkZXItYm90dG9tLXN0eWxlOiBzb2xpZDsgaGVpZ2h0OiBjYWxjKDEwMCUgLSAxcHgpO31gLHQrPWAke3RoaXMuX3Rlcm1pbmFsU2VsZWN0b3J9IC4ke1N9IHsgcG9zaXRpb246IGFic29sdXRlOyB0b3A6IDA7IGxlZnQ6IDA7IHotaW5kZXg6IDE7IHBvaW50ZXItZXZlbnRzOiBub25lO30ke3RoaXMuX3Rlcm1pbmFsU2VsZWN0b3J9LmZvY3VzIC4ke1N9IGRpdiB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgYmFja2dyb3VuZC1jb2xvcjogJHtlLnNlbGVjdGlvbkJhY2tncm91bmRPcGFxdWUuY3NzfTt9JHt0aGlzLl90ZXJtaW5hbFNlbGVjdG9yfSAuJHtTfSBkaXYgeyBwb3NpdGlvbjogYWJzb2x1dGU7IGJhY2tncm91bmQtY29sb3I6ICR7ZS5zZWxlY3Rpb25JbmFjdGl2ZUJhY2tncm91bmRPcGFxdWUuY3NzfTt9YDtmb3IoY29uc3RbaSxzXW9mIGUuYW5zaS5lbnRyaWVzKCkpdCs9YCR7dGhpcy5fdGVybWluYWxTZWxlY3Rvcn0gLiR7cH0ke2l9IHsgY29sb3I6ICR7cy5jc3N9OyB9JHt0aGlzLl90ZXJtaW5hbFNlbGVjdG9yfSAuJHtwfSR7aX0ueHRlcm0tZGltIHsgY29sb3I6ICR7bC5jb2xvci5tdWx0aXBseU9wYWNpdHkocywuNSkuY3NzfTsgfSR7dGhpcy5fdGVybWluYWxTZWxlY3Rvcn0gLiR7Z30ke2l9IHsgYmFja2dyb3VuZC1jb2xvcjogJHtzLmNzc307IH1gO3QrPWAke3RoaXMuX3Rlcm1pbmFsU2VsZWN0b3J9IC4ke3B9JHthLklOVkVSVEVEX0RFRkFVTFRfQ09MT1J9IHsgY29sb3I6ICR7bC5jb2xvci5vcGFxdWUoZS5iYWNrZ3JvdW5kKS5jc3N9OyB9JHt0aGlzLl90ZXJtaW5hbFNlbGVjdG9yfSAuJHtwfSR7YS5JTlZFUlRFRF9ERUZBVUxUX0NPTE9SfS54dGVybS1kaW0geyBjb2xvcjogJHtsLmNvbG9yLm11bHRpcGx5T3BhY2l0eShsLmNvbG9yLm9wYXF1ZShlLmJhY2tncm91bmQpLC41KS5jc3N9OyB9JHt0aGlzLl90ZXJtaW5hbFNlbGVjdG9yfSAuJHtnfSR7YS5JTlZFUlRFRF9ERUZBVUxUX0NPTE9SfSB7IGJhY2tncm91bmQtY29sb3I6ICR7ZS5mb3JlZ3JvdW5kLmNzc307IH1gLHRoaXMuX3RoZW1lU3R5bGVFbGVtZW50LnRleHRDb250ZW50PXR9X3NldERlZmF1bHRTcGFjaW5nKCl7Y29uc3QgZT10aGlzLmRpbWVuc2lvbnMuY3NzLmNlbGwud2lkdGgtdGhpcy5fd2lkdGhDYWNoZS5nZXQoXCJXXCIsITEsITEpO3RoaXMuX3Jvd0NvbnRhaW5lci5zdHlsZS5sZXR0ZXJTcGFjaW5nPWAke2V9cHhgLHRoaXMuX3Jvd0ZhY3RvcnkuZGVmYXVsdFNwYWNpbmc9ZX1oYW5kbGVEZXZpY2VQaXhlbFJhdGlvQ2hhbmdlKCl7dGhpcy5fdXBkYXRlRGltZW5zaW9ucygpLHRoaXMuX3dpZHRoQ2FjaGUuY2xlYXIoKSx0aGlzLl9zZXREZWZhdWx0U3BhY2luZygpfV9yZWZyZXNoUm93RWxlbWVudHMoZSx0KXtmb3IobGV0IGU9dGhpcy5fcm93RWxlbWVudHMubGVuZ3RoO2U8PXQ7ZSsrKXtjb25zdCBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7dGhpcy5fcm93Q29udGFpbmVyLmFwcGVuZENoaWxkKGUpLHRoaXMuX3Jvd0VsZW1lbnRzLnB1c2goZSl9Zm9yKDt0aGlzLl9yb3dFbGVtZW50cy5sZW5ndGg+dDspdGhpcy5fcm93Q29udGFpbmVyLnJlbW92ZUNoaWxkKHRoaXMuX3Jvd0VsZW1lbnRzLnBvcCgpKX1oYW5kbGVSZXNpemUoZSx0KXt0aGlzLl9yZWZyZXNoUm93RWxlbWVudHMoZSx0KSx0aGlzLl91cGRhdGVEaW1lbnNpb25zKCl9aGFuZGxlQ2hhclNpemVDaGFuZ2VkKCl7dGhpcy5fdXBkYXRlRGltZW5zaW9ucygpLHRoaXMuX3dpZHRoQ2FjaGUuY2xlYXIoKSx0aGlzLl9zZXREZWZhdWx0U3BhY2luZygpfWhhbmRsZUJsdXIoKXt0aGlzLl9yb3dDb250YWluZXIuY2xhc3NMaXN0LnJlbW92ZShtKX1oYW5kbGVGb2N1cygpe3RoaXMuX3Jvd0NvbnRhaW5lci5jbGFzc0xpc3QuYWRkKG0pLHRoaXMucmVuZGVyUm93cyh0aGlzLl9idWZmZXJTZXJ2aWNlLmJ1ZmZlci55LHRoaXMuX2J1ZmZlclNlcnZpY2UuYnVmZmVyLnkpfWhhbmRsZVNlbGVjdGlvbkNoYW5nZWQoZSx0LGkpe2lmKHRoaXMuX3NlbGVjdGlvbkNvbnRhaW5lci5yZXBsYWNlQ2hpbGRyZW4oKSx0aGlzLl9yb3dGYWN0b3J5LmhhbmRsZVNlbGVjdGlvbkNoYW5nZWQoZSx0LGkpLHRoaXMucmVuZGVyUm93cygwLHRoaXMuX2J1ZmZlclNlcnZpY2Uucm93cy0xKSwhZXx8IXQpcmV0dXJuO2NvbnN0IHM9ZVsxXS10aGlzLl9idWZmZXJTZXJ2aWNlLmJ1ZmZlci55ZGlzcCxyPXRbMV0tdGhpcy5fYnVmZmVyU2VydmljZS5idWZmZXIueWRpc3Asbj1NYXRoLm1heChzLDApLG89TWF0aC5taW4ocix0aGlzLl9idWZmZXJTZXJ2aWNlLnJvd3MtMSk7aWYobj49dGhpcy5fYnVmZmVyU2VydmljZS5yb3dzfHxvPDApcmV0dXJuO2NvbnN0IGE9ZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpO2lmKGkpe2NvbnN0IGk9ZVswXT50WzBdO2EuYXBwZW5kQ2hpbGQodGhpcy5fY3JlYXRlU2VsZWN0aW9uRWxlbWVudChuLGk/dFswXTplWzBdLGk/ZVswXTp0WzBdLG8tbisxKSl9ZWxzZXtjb25zdCBpPXM9PT1uP2VbMF06MCxoPW49PT1yP3RbMF06dGhpcy5fYnVmZmVyU2VydmljZS5jb2xzO2EuYXBwZW5kQ2hpbGQodGhpcy5fY3JlYXRlU2VsZWN0aW9uRWxlbWVudChuLGksaCkpO2NvbnN0IGM9by1uLTE7aWYoYS5hcHBlbmRDaGlsZCh0aGlzLl9jcmVhdGVTZWxlY3Rpb25FbGVtZW50KG4rMSwwLHRoaXMuX2J1ZmZlclNlcnZpY2UuY29scyxjKSksbiE9PW8pe2NvbnN0IGU9cj09PW8/dFswXTp0aGlzLl9idWZmZXJTZXJ2aWNlLmNvbHM7YS5hcHBlbmRDaGlsZCh0aGlzLl9jcmVhdGVTZWxlY3Rpb25FbGVtZW50KG8sMCxlKSl9fXRoaXMuX3NlbGVjdGlvbkNvbnRhaW5lci5hcHBlbmRDaGlsZChhKX1fY3JlYXRlU2VsZWN0aW9uRWxlbWVudChlLHQsaSxzPTEpe2NvbnN0IHI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtyZXR1cm4gci5zdHlsZS5oZWlnaHQ9cyp0aGlzLmRpbWVuc2lvbnMuY3NzLmNlbGwuaGVpZ2h0K1wicHhcIixyLnN0eWxlLnRvcD1lKnRoaXMuZGltZW5zaW9ucy5jc3MuY2VsbC5oZWlnaHQrXCJweFwiLHIuc3R5bGUubGVmdD10KnRoaXMuZGltZW5zaW9ucy5jc3MuY2VsbC53aWR0aCtcInB4XCIsci5zdHlsZS53aWR0aD10aGlzLmRpbWVuc2lvbnMuY3NzLmNlbGwud2lkdGgqKGktdCkrXCJweFwiLHJ9aGFuZGxlQ3Vyc29yTW92ZSgpe31faGFuZGxlT3B0aW9uc0NoYW5nZWQoKXt0aGlzLl91cGRhdGVEaW1lbnNpb25zKCksdGhpcy5faW5qZWN0Q3NzKHRoaXMuX3RoZW1lU2VydmljZS5jb2xvcnMpLHRoaXMuX3dpZHRoQ2FjaGUuc2V0Rm9udCh0aGlzLl9vcHRpb25zU2VydmljZS5yYXdPcHRpb25zLmZvbnRGYW1pbHksdGhpcy5fb3B0aW9uc1NlcnZpY2UucmF3T3B0aW9ucy5mb250U2l6ZSx0aGlzLl9vcHRpb25zU2VydmljZS5yYXdPcHRpb25zLmZvbnRXZWlnaHQsdGhpcy5fb3B0aW9uc1NlcnZpY2UucmF3T3B0aW9ucy5mb250V2VpZ2h0Qm9sZCksdGhpcy5fc2V0RGVmYXVsdFNwYWNpbmcoKX1jbGVhcigpe2Zvcihjb25zdCBlIG9mIHRoaXMuX3Jvd0VsZW1lbnRzKWUucmVwbGFjZUNoaWxkcmVuKCl9cmVuZGVyUm93cyhlLHQpe2NvbnN0IGk9dGhpcy5fYnVmZmVyU2VydmljZS5idWZmZXIscz1pLnliYXNlK2kueSxyPU1hdGgubWluKGkueCx0aGlzLl9idWZmZXJTZXJ2aWNlLmNvbHMtMSksbj10aGlzLl9vcHRpb25zU2VydmljZS5yYXdPcHRpb25zLmN1cnNvckJsaW5rLG89dGhpcy5fb3B0aW9uc1NlcnZpY2UucmF3T3B0aW9ucy5jdXJzb3JTdHlsZSxhPXRoaXMuX29wdGlvbnNTZXJ2aWNlLnJhd09wdGlvbnMuY3Vyc29ySW5hY3RpdmVTdHlsZTtmb3IobGV0IGg9ZTtoPD10O2grKyl7Y29uc3QgZT1oK2kueWRpc3AsdD10aGlzLl9yb3dFbGVtZW50c1toXSxjPWkubGluZXMuZ2V0KGUpO2lmKCF0fHwhYylicmVhazt0LnJlcGxhY2VDaGlsZHJlbiguLi50aGlzLl9yb3dGYWN0b3J5LmNyZWF0ZVJvdyhjLGUsZT09PXMsbyxhLHIsbix0aGlzLmRpbWVuc2lvbnMuY3NzLmNlbGwud2lkdGgsdGhpcy5fd2lkdGhDYWNoZSwtMSwtMSkpfX1nZXQgX3Rlcm1pbmFsU2VsZWN0b3IoKXtyZXR1cm5gLiR7Zn0ke3RoaXMuX3Rlcm1pbmFsQ2xhc3N9YH1faGFuZGxlTGlua0hvdmVyKGUpe3RoaXMuX3NldENlbGxVbmRlcmxpbmUoZS54MSxlLngyLGUueTEsZS55MixlLmNvbHMsITApfV9oYW5kbGVMaW5rTGVhdmUoZSl7dGhpcy5fc2V0Q2VsbFVuZGVybGluZShlLngxLGUueDIsZS55MSxlLnkyLGUuY29scywhMSl9X3NldENlbGxVbmRlcmxpbmUoZSx0LGkscyxyLG4pe2k8MCYmKGU9MCksczwwJiYodD0wKTtjb25zdCBvPXRoaXMuX2J1ZmZlclNlcnZpY2Uucm93cy0xO2k9TWF0aC5tYXgoTWF0aC5taW4oaSxvKSwwKSxzPU1hdGgubWF4KE1hdGgubWluKHMsbyksMCkscj1NYXRoLm1pbihyLHRoaXMuX2J1ZmZlclNlcnZpY2UuY29scyk7Y29uc3QgYT10aGlzLl9idWZmZXJTZXJ2aWNlLmJ1ZmZlcixoPWEueWJhc2UrYS55LGM9TWF0aC5taW4oYS54LHItMSksbD10aGlzLl9vcHRpb25zU2VydmljZS5yYXdPcHRpb25zLmN1cnNvckJsaW5rLGQ9dGhpcy5fb3B0aW9uc1NlcnZpY2UucmF3T3B0aW9ucy5jdXJzb3JTdHlsZSxfPXRoaXMuX29wdGlvbnNTZXJ2aWNlLnJhd09wdGlvbnMuY3Vyc29ySW5hY3RpdmVTdHlsZTtmb3IobGV0IG89aTtvPD1zOysrbyl7Y29uc3QgdT1vK2EueWRpc3AsZj10aGlzLl9yb3dFbGVtZW50c1tvXSx2PWEubGluZXMuZ2V0KHUpO2lmKCFmfHwhdilicmVhaztmLnJlcGxhY2VDaGlsZHJlbiguLi50aGlzLl9yb3dGYWN0b3J5LmNyZWF0ZVJvdyh2LHUsdT09PWgsZCxfLGMsbCx0aGlzLmRpbWVuc2lvbnMuY3NzLmNlbGwud2lkdGgsdGhpcy5fd2lkdGhDYWNoZSxuP289PT1pP2U6MDotMSxuPyhvPT09cz90OnIpLTE6LTEpKX19fTt0LkRvbVJlbmRlcmVyPWI9cyhbcig0LHUuSUluc3RhbnRpYXRpb25TZXJ2aWNlKSxyKDUsYy5JQ2hhclNpemVTZXJ2aWNlKSxyKDYsdS5JT3B0aW9uc1NlcnZpY2UpLHIoNyx1LklCdWZmZXJTZXJ2aWNlKSxyKDgsYy5JQ29yZUJyb3dzZXJTZXJ2aWNlKSxyKDksYy5JVGhlbWVTZXJ2aWNlKV0sYil9LDM3ODc6ZnVuY3Rpb24oZSx0LGkpe3ZhciBzPXRoaXMmJnRoaXMuX19kZWNvcmF0ZXx8ZnVuY3Rpb24oZSx0LGkscyl7dmFyIHIsbj1hcmd1bWVudHMubGVuZ3RoLG89bjwzP3Q6bnVsbD09PXM/cz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsaSk6cztpZihcIm9iamVjdFwiPT10eXBlb2YgUmVmbGVjdCYmXCJmdW5jdGlvblwiPT10eXBlb2YgUmVmbGVjdC5kZWNvcmF0ZSlvPVJlZmxlY3QuZGVjb3JhdGUoZSx0LGkscyk7ZWxzZSBmb3IodmFyIGE9ZS5sZW5ndGgtMTthPj0wO2EtLSkocj1lW2FdKSYmKG89KG48Mz9yKG8pOm4+Mz9yKHQsaSxvKTpyKHQsaSkpfHxvKTtyZXR1cm4gbj4zJiZvJiZPYmplY3QuZGVmaW5lUHJvcGVydHkodCxpLG8pLG99LHI9dGhpcyYmdGhpcy5fX3BhcmFtfHxmdW5jdGlvbihlLHQpe3JldHVybiBmdW5jdGlvbihpLHMpe3QoaSxzLGUpfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5Eb21SZW5kZXJlclJvd0ZhY3Rvcnk9dm9pZCAwO2NvbnN0IG49aSgyMjIzKSxvPWkoNjQzKSxhPWkoNTExKSxoPWkoMjU4NSksYz1pKDgwNTUpLGw9aSg0NzI1KSxkPWkoNDI2OSksXz1pKDYxNzEpLHU9aSgzNzM0KTtsZXQgZj10LkRvbVJlbmRlcmVyUm93RmFjdG9yeT1jbGFzc3tjb25zdHJ1Y3RvcihlLHQsaSxzLHIsbixvKXt0aGlzLl9kb2N1bWVudD1lLHRoaXMuX2NoYXJhY3RlckpvaW5lclNlcnZpY2U9dCx0aGlzLl9vcHRpb25zU2VydmljZT1pLHRoaXMuX2NvcmVCcm93c2VyU2VydmljZT1zLHRoaXMuX2NvcmVTZXJ2aWNlPXIsdGhpcy5fZGVjb3JhdGlvblNlcnZpY2U9bix0aGlzLl90aGVtZVNlcnZpY2U9byx0aGlzLl93b3JrQ2VsbD1uZXcgYS5DZWxsRGF0YSx0aGlzLl9jb2x1bW5TZWxlY3RNb2RlPSExLHRoaXMuZGVmYXVsdFNwYWNpbmc9MH1oYW5kbGVTZWxlY3Rpb25DaGFuZ2VkKGUsdCxpKXt0aGlzLl9zZWxlY3Rpb25TdGFydD1lLHRoaXMuX3NlbGVjdGlvbkVuZD10LHRoaXMuX2NvbHVtblNlbGVjdE1vZGU9aX1jcmVhdGVSb3coZSx0LGkscyxyLGEsaCxsLF8sZixwKXtjb25zdCBnPVtdLG09dGhpcy5fY2hhcmFjdGVySm9pbmVyU2VydmljZS5nZXRKb2luZWRDaGFyYWN0ZXJzKHQpLFM9dGhpcy5fdGhlbWVTZXJ2aWNlLmNvbG9ycztsZXQgQyxiPWUuZ2V0Tm9CZ1RyaW1tZWRMZW5ndGgoKTtpJiZiPGErMSYmKGI9YSsxKTtsZXQgeT0wLHc9XCJcIixFPTAsaz0wLEw9MCxEPSExLFI9MCx4PSExLEE9MDtjb25zdCBCPVtdLFQ9LTEhPT1mJiYtMSE9PXA7Zm9yKGxldCBNPTA7TTxiO00rKyl7ZS5sb2FkQ2VsbChNLHRoaXMuX3dvcmtDZWxsKTtsZXQgYj10aGlzLl93b3JrQ2VsbC5nZXRXaWR0aCgpO2lmKDA9PT1iKWNvbnRpbnVlO2xldCBPPSExLFA9TSxJPXRoaXMuX3dvcmtDZWxsO2lmKG0ubGVuZ3RoPjAmJk09PT1tWzBdWzBdKXtPPSEwO2NvbnN0IHQ9bS5zaGlmdCgpO0k9bmV3IGQuSm9pbmVkQ2VsbERhdGEodGhpcy5fd29ya0NlbGwsZS50cmFuc2xhdGVUb1N0cmluZyghMCx0WzBdLHRbMV0pLHRbMV0tdFswXSksUD10WzFdLTEsYj1JLmdldFdpZHRoKCl9Y29uc3QgSD10aGlzLl9pc0NlbGxJblNlbGVjdGlvbihNLHQpLEY9aSYmTT09PWEsVz1UJiZNPj1mJiZNPD1wO2xldCBVPSExO3RoaXMuX2RlY29yYXRpb25TZXJ2aWNlLmZvckVhY2hEZWNvcmF0aW9uQXRDZWxsKE0sdCx2b2lkIDAsKGU9PntVPSEwfSkpO2xldCBOPUkuZ2V0Q2hhcnMoKXx8by5XSElURVNQQUNFX0NFTExfQ0hBUjtpZihcIiBcIj09PU4mJihJLmlzVW5kZXJsaW5lKCl8fEkuaXNPdmVybGluZSgpKSYmKE49XCLCoFwiKSxBPWIqbC1fLmdldChOLEkuaXNCb2xkKCksSS5pc0l0YWxpYygpKSxDKXtpZih5JiYoSCYmeHx8IUgmJiF4JiZJLmJnPT09RSkmJihIJiZ4JiZTLnNlbGVjdGlvbkZvcmVncm91bmR8fEkuZmc9PT1rKSYmSS5leHRlbmRlZC5leHQ9PT1MJiZXPT09RCYmQT09PVImJiFGJiYhTyYmIVUpe3crPU4seSsrO2NvbnRpbnVlfXkmJihDLnRleHRDb250ZW50PXcpLEM9dGhpcy5fZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNwYW5cIikseT0wLHc9XCJcIn1lbHNlIEM9dGhpcy5fZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNwYW5cIik7aWYoRT1JLmJnLGs9SS5mZyxMPUkuZXh0ZW5kZWQuZXh0LEQ9VyxSPUEseD1ILE8mJmE+PU0mJmE8PVAmJihhPU0pLCF0aGlzLl9jb3JlU2VydmljZS5pc0N1cnNvckhpZGRlbiYmRilpZihCLnB1c2goXCJ4dGVybS1jdXJzb3JcIiksdGhpcy5fY29yZUJyb3dzZXJTZXJ2aWNlLmlzRm9jdXNlZCloJiZCLnB1c2goXCJ4dGVybS1jdXJzb3ItYmxpbmtcIiksQi5wdXNoKFwiYmFyXCI9PT1zP1wieHRlcm0tY3Vyc29yLWJhclwiOlwidW5kZXJsaW5lXCI9PT1zP1wieHRlcm0tY3Vyc29yLXVuZGVybGluZVwiOlwieHRlcm0tY3Vyc29yLWJsb2NrXCIpO2Vsc2UgaWYocilzd2l0Y2gocil7Y2FzZVwib3V0bGluZVwiOkIucHVzaChcInh0ZXJtLWN1cnNvci1vdXRsaW5lXCIpO2JyZWFrO2Nhc2VcImJsb2NrXCI6Qi5wdXNoKFwieHRlcm0tY3Vyc29yLWJsb2NrXCIpO2JyZWFrO2Nhc2VcImJhclwiOkIucHVzaChcInh0ZXJtLWN1cnNvci1iYXJcIik7YnJlYWs7Y2FzZVwidW5kZXJsaW5lXCI6Qi5wdXNoKFwieHRlcm0tY3Vyc29yLXVuZGVybGluZVwiKX1pZihJLmlzQm9sZCgpJiZCLnB1c2goXCJ4dGVybS1ib2xkXCIpLEkuaXNJdGFsaWMoKSYmQi5wdXNoKFwieHRlcm0taXRhbGljXCIpLEkuaXNEaW0oKSYmQi5wdXNoKFwieHRlcm0tZGltXCIpLHc9SS5pc0ludmlzaWJsZSgpP28uV0hJVEVTUEFDRV9DRUxMX0NIQVI6SS5nZXRDaGFycygpfHxvLldISVRFU1BBQ0VfQ0VMTF9DSEFSLEkuaXNVbmRlcmxpbmUoKSYmKEIucHVzaChgeHRlcm0tdW5kZXJsaW5lLSR7SS5leHRlbmRlZC51bmRlcmxpbmVTdHlsZX1gKSxcIiBcIj09PXcmJih3PVwiwqBcIiksIUkuaXNVbmRlcmxpbmVDb2xvckRlZmF1bHQoKSkpaWYoSS5pc1VuZGVybGluZUNvbG9yUkdCKCkpQy5zdHlsZS50ZXh0RGVjb3JhdGlvbkNvbG9yPWByZ2IoJHt1LkF0dHJpYnV0ZURhdGEudG9Db2xvclJHQihJLmdldFVuZGVybGluZUNvbG9yKCkpLmpvaW4oXCIsXCIpfSlgO2Vsc2V7bGV0IGU9SS5nZXRVbmRlcmxpbmVDb2xvcigpO3RoaXMuX29wdGlvbnNTZXJ2aWNlLnJhd09wdGlvbnMuZHJhd0JvbGRUZXh0SW5CcmlnaHRDb2xvcnMmJkkuaXNCb2xkKCkmJmU8OCYmKGUrPTgpLEMuc3R5bGUudGV4dERlY29yYXRpb25Db2xvcj1TLmFuc2lbZV0uY3NzfUkuaXNPdmVybGluZSgpJiYoQi5wdXNoKFwieHRlcm0tb3ZlcmxpbmVcIiksXCIgXCI9PT13JiYodz1cIsKgXCIpKSxJLmlzU3RyaWtldGhyb3VnaCgpJiZCLnB1c2goXCJ4dGVybS1zdHJpa2V0aHJvdWdoXCIpLFcmJihDLnN0eWxlLnRleHREZWNvcmF0aW9uPVwidW5kZXJsaW5lXCIpO2xldCAkPUkuZ2V0RmdDb2xvcigpLGo9SS5nZXRGZ0NvbG9yTW9kZSgpLHo9SS5nZXRCZ0NvbG9yKCksSz1JLmdldEJnQ29sb3JNb2RlKCk7Y29uc3QgcT0hIUkuaXNJbnZlcnNlKCk7aWYocSl7Y29uc3QgZT0kOyQ9eix6PWU7Y29uc3QgdD1qO2o9SyxLPXR9bGV0IFYsRyxYLEo9ITE7c3dpdGNoKHRoaXMuX2RlY29yYXRpb25TZXJ2aWNlLmZvckVhY2hEZWNvcmF0aW9uQXRDZWxsKE0sdCx2b2lkIDAsKGU9PntcInRvcFwiIT09ZS5vcHRpb25zLmxheWVyJiZKfHwoZS5iYWNrZ3JvdW5kQ29sb3JSR0ImJihLPTUwMzMxNjQ4LHo9ZS5iYWNrZ3JvdW5kQ29sb3JSR0IucmdiYT4+OCYxNjc3NzIxNSxWPWUuYmFja2dyb3VuZENvbG9yUkdCKSxlLmZvcmVncm91bmRDb2xvclJHQiYmKGo9NTAzMzE2NDgsJD1lLmZvcmVncm91bmRDb2xvclJHQi5yZ2JhPj44JjE2Nzc3MjE1LEc9ZS5mb3JlZ3JvdW5kQ29sb3JSR0IpLEo9XCJ0b3BcIj09PWUub3B0aW9ucy5sYXllcil9KSksIUomJkgmJihWPXRoaXMuX2NvcmVCcm93c2VyU2VydmljZS5pc0ZvY3VzZWQ/Uy5zZWxlY3Rpb25CYWNrZ3JvdW5kT3BhcXVlOlMuc2VsZWN0aW9uSW5hY3RpdmVCYWNrZ3JvdW5kT3BhcXVlLHo9Vi5yZ2JhPj44JjE2Nzc3MjE1LEs9NTAzMzE2NDgsSj0hMCxTLnNlbGVjdGlvbkZvcmVncm91bmQmJihqPTUwMzMxNjQ4LCQ9Uy5zZWxlY3Rpb25Gb3JlZ3JvdW5kLnJnYmE+PjgmMTY3NzcyMTUsRz1TLnNlbGVjdGlvbkZvcmVncm91bmQpKSxKJiZCLnB1c2goXCJ4dGVybS1kZWNvcmF0aW9uLXRvcFwiKSxLKXtjYXNlIDE2Nzc3MjE2OmNhc2UgMzM1NTQ0MzI6WD1TLmFuc2lbel0sQi5wdXNoKGB4dGVybS1iZy0ke3p9YCk7YnJlYWs7Y2FzZSA1MDMzMTY0ODpYPWMucmdiYS50b0NvbG9yKHo+PjE2LHo+PjgmMjU1LDI1NSZ6KSx0aGlzLl9hZGRTdHlsZShDLGBiYWNrZ3JvdW5kLWNvbG9yOiMke3YoKHo+Pj4wKS50b1N0cmluZygxNiksXCIwXCIsNil9YCk7YnJlYWs7ZGVmYXVsdDpxPyhYPVMuZm9yZWdyb3VuZCxCLnB1c2goYHh0ZXJtLWJnLSR7bi5JTlZFUlRFRF9ERUZBVUxUX0NPTE9SfWApKTpYPVMuYmFja2dyb3VuZH1zd2l0Y2goVnx8SS5pc0RpbSgpJiYoVj1jLmNvbG9yLm11bHRpcGx5T3BhY2l0eShYLC41KSksail7Y2FzZSAxNjc3NzIxNjpjYXNlIDMzNTU0NDMyOkkuaXNCb2xkKCkmJiQ8OCYmdGhpcy5fb3B0aW9uc1NlcnZpY2UucmF3T3B0aW9ucy5kcmF3Qm9sZFRleHRJbkJyaWdodENvbG9ycyYmKCQrPTgpLHRoaXMuX2FwcGx5TWluaW11bUNvbnRyYXN0KEMsWCxTLmFuc2lbJF0sSSxWLHZvaWQgMCl8fEIucHVzaChgeHRlcm0tZmctJHskfWApO2JyZWFrO2Nhc2UgNTAzMzE2NDg6Y29uc3QgZT1jLnJnYmEudG9Db2xvcigkPj4xNiYyNTUsJD4+OCYyNTUsMjU1JiQpO3RoaXMuX2FwcGx5TWluaW11bUNvbnRyYXN0KEMsWCxlLEksVixHKXx8dGhpcy5fYWRkU3R5bGUoQyxgY29sb3I6IyR7digkLnRvU3RyaW5nKDE2KSxcIjBcIiw2KX1gKTticmVhaztkZWZhdWx0OnRoaXMuX2FwcGx5TWluaW11bUNvbnRyYXN0KEMsWCxTLmZvcmVncm91bmQsSSxWLHZvaWQgMCl8fHEmJkIucHVzaChgeHRlcm0tZmctJHtuLklOVkVSVEVEX0RFRkFVTFRfQ09MT1J9YCl9Qi5sZW5ndGgmJihDLmNsYXNzTmFtZT1CLmpvaW4oXCIgXCIpLEIubGVuZ3RoPTApLEZ8fE98fFU/Qy50ZXh0Q29udGVudD13OnkrKyxBIT09dGhpcy5kZWZhdWx0U3BhY2luZyYmKEMuc3R5bGUubGV0dGVyU3BhY2luZz1gJHtBfXB4YCksZy5wdXNoKEMpLE09UH1yZXR1cm4gQyYmeSYmKEMudGV4dENvbnRlbnQ9dyksZ31fYXBwbHlNaW5pbXVtQ29udHJhc3QoZSx0LGkscyxyLG4pe2lmKDE9PT10aGlzLl9vcHRpb25zU2VydmljZS5yYXdPcHRpb25zLm1pbmltdW1Db250cmFzdFJhdGlvfHwoMCxfLmV4Y2x1ZGVGcm9tQ29udHJhc3RSYXRpb0RlbWFuZHMpKHMuZ2V0Q29kZSgpKSlyZXR1cm4hMTtjb25zdCBvPXRoaXMuX2dldENvbnRyYXN0Q2FjaGUocyk7bGV0IGE7aWYocnx8bnx8KGE9by5nZXRDb2xvcih0LnJnYmEsaS5yZ2JhKSksdm9pZCAwPT09YSl7Y29uc3QgZT10aGlzLl9vcHRpb25zU2VydmljZS5yYXdPcHRpb25zLm1pbmltdW1Db250cmFzdFJhdGlvLyhzLmlzRGltKCk/MjoxKTthPWMuY29sb3IuZW5zdXJlQ29udHJhc3RSYXRpbyhyfHx0LG58fGksZSksby5zZXRDb2xvcigocnx8dCkucmdiYSwobnx8aSkucmdiYSxudWxsIT1hP2E6bnVsbCl9cmV0dXJuISFhJiYodGhpcy5fYWRkU3R5bGUoZSxgY29sb3I6JHthLmNzc31gKSwhMCl9X2dldENvbnRyYXN0Q2FjaGUoZSl7cmV0dXJuIGUuaXNEaW0oKT90aGlzLl90aGVtZVNlcnZpY2UuY29sb3JzLmhhbGZDb250cmFzdENhY2hlOnRoaXMuX3RoZW1lU2VydmljZS5jb2xvcnMuY29udHJhc3RDYWNoZX1fYWRkU3R5bGUoZSx0KXtlLnNldEF0dHJpYnV0ZShcInN0eWxlXCIsYCR7ZS5nZXRBdHRyaWJ1dGUoXCJzdHlsZVwiKXx8XCJcIn0ke3R9O2ApfV9pc0NlbGxJblNlbGVjdGlvbihlLHQpe2NvbnN0IGk9dGhpcy5fc2VsZWN0aW9uU3RhcnQscz10aGlzLl9zZWxlY3Rpb25FbmQ7cmV0dXJuISghaXx8IXMpJiYodGhpcy5fY29sdW1uU2VsZWN0TW9kZT9pWzBdPD1zWzBdP2U+PWlbMF0mJnQ+PWlbMV0mJmU8c1swXSYmdDw9c1sxXTplPGlbMF0mJnQ+PWlbMV0mJmU+PXNbMF0mJnQ8PXNbMV06dD5pWzFdJiZ0PHNbMV18fGlbMV09PT1zWzFdJiZ0PT09aVsxXSYmZT49aVswXSYmZTxzWzBdfHxpWzFdPHNbMV0mJnQ9PT1zWzFdJiZlPHNbMF18fGlbMV08c1sxXSYmdD09PWlbMV0mJmU+PWlbMF0pfX07ZnVuY3Rpb24gdihlLHQsaSl7Zm9yKDtlLmxlbmd0aDxpOyllPXQrZTtyZXR1cm4gZX10LkRvbVJlbmRlcmVyUm93RmFjdG9yeT1mPXMoW3IoMSxsLklDaGFyYWN0ZXJKb2luZXJTZXJ2aWNlKSxyKDIsaC5JT3B0aW9uc1NlcnZpY2UpLHIoMyxsLklDb3JlQnJvd3NlclNlcnZpY2UpLHIoNCxoLklDb3JlU2VydmljZSkscig1LGguSURlY29yYXRpb25TZXJ2aWNlKSxyKDYsbC5JVGhlbWVTZXJ2aWNlKV0sZil9LDI1NTA6KGUsdCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LldpZHRoQ2FjaGU9dm9pZCAwLHQuV2lkdGhDYWNoZT1jbGFzc3tjb25zdHJ1Y3RvcihlKXt0aGlzLl9mbGF0PW5ldyBGbG9hdDMyQXJyYXkoMjU2KSx0aGlzLl9mb250PVwiXCIsdGhpcy5fZm9udFNpemU9MCx0aGlzLl93ZWlnaHQ9XCJub3JtYWxcIix0aGlzLl93ZWlnaHRCb2xkPVwiYm9sZFwiLHRoaXMuX21lYXN1cmVFbGVtZW50cz1bXSx0aGlzLl9jb250YWluZXI9ZS5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLHRoaXMuX2NvbnRhaW5lci5zdHlsZS5wb3NpdGlvbj1cImFic29sdXRlXCIsdGhpcy5fY29udGFpbmVyLnN0eWxlLnRvcD1cIi01MDAwMHB4XCIsdGhpcy5fY29udGFpbmVyLnN0eWxlLndpZHRoPVwiNTAwMDBweFwiLHRoaXMuX2NvbnRhaW5lci5zdHlsZS53aGl0ZVNwYWNlPVwicHJlXCIsdGhpcy5fY29udGFpbmVyLnN0eWxlLmZvbnRLZXJuaW5nPVwibm9uZVwiO2NvbnN0IHQ9ZS5jcmVhdGVFbGVtZW50KFwic3BhblwiKSxpPWUuY3JlYXRlRWxlbWVudChcInNwYW5cIik7aS5zdHlsZS5mb250V2VpZ2h0PVwiYm9sZFwiO2NvbnN0IHM9ZS5jcmVhdGVFbGVtZW50KFwic3BhblwiKTtzLnN0eWxlLmZvbnRTdHlsZT1cIml0YWxpY1wiO2NvbnN0IHI9ZS5jcmVhdGVFbGVtZW50KFwic3BhblwiKTtyLnN0eWxlLmZvbnRXZWlnaHQ9XCJib2xkXCIsci5zdHlsZS5mb250U3R5bGU9XCJpdGFsaWNcIix0aGlzLl9tZWFzdXJlRWxlbWVudHM9W3QsaSxzLHJdLHRoaXMuX2NvbnRhaW5lci5hcHBlbmRDaGlsZCh0KSx0aGlzLl9jb250YWluZXIuYXBwZW5kQ2hpbGQoaSksdGhpcy5fY29udGFpbmVyLmFwcGVuZENoaWxkKHMpLHRoaXMuX2NvbnRhaW5lci5hcHBlbmRDaGlsZChyKSxlLmJvZHkuYXBwZW5kQ2hpbGQodGhpcy5fY29udGFpbmVyKSx0aGlzLmNsZWFyKCl9ZGlzcG9zZSgpe3RoaXMuX2NvbnRhaW5lci5yZW1vdmUoKSx0aGlzLl9tZWFzdXJlRWxlbWVudHMubGVuZ3RoPTAsdGhpcy5faG9sZXk9dm9pZCAwfWNsZWFyKCl7dGhpcy5fZmxhdC5maWxsKC05OTk5KSx0aGlzLl9ob2xleT1uZXcgTWFwfXNldEZvbnQoZSx0LGkscyl7ZT09PXRoaXMuX2ZvbnQmJnQ9PT10aGlzLl9mb250U2l6ZSYmaT09PXRoaXMuX3dlaWdodCYmcz09PXRoaXMuX3dlaWdodEJvbGR8fCh0aGlzLl9mb250PWUsdGhpcy5fZm9udFNpemU9dCx0aGlzLl93ZWlnaHQ9aSx0aGlzLl93ZWlnaHRCb2xkPXMsdGhpcy5fY29udGFpbmVyLnN0eWxlLmZvbnRGYW1pbHk9dGhpcy5fZm9udCx0aGlzLl9jb250YWluZXIuc3R5bGUuZm9udFNpemU9YCR7dGhpcy5fZm9udFNpemV9cHhgLHRoaXMuX21lYXN1cmVFbGVtZW50c1swXS5zdHlsZS5mb250V2VpZ2h0PWAke2l9YCx0aGlzLl9tZWFzdXJlRWxlbWVudHNbMV0uc3R5bGUuZm9udFdlaWdodD1gJHtzfWAsdGhpcy5fbWVhc3VyZUVsZW1lbnRzWzJdLnN0eWxlLmZvbnRXZWlnaHQ9YCR7aX1gLHRoaXMuX21lYXN1cmVFbGVtZW50c1szXS5zdHlsZS5mb250V2VpZ2h0PWAke3N9YCx0aGlzLmNsZWFyKCkpfWdldChlLHQsaSl7bGV0IHM9MDtpZighdCYmIWkmJjE9PT1lLmxlbmd0aCYmKHM9ZS5jaGFyQ29kZUF0KDApKTwyNTYpcmV0dXJuLTk5OTkhPT10aGlzLl9mbGF0W3NdP3RoaXMuX2ZsYXRbc106dGhpcy5fZmxhdFtzXT10aGlzLl9tZWFzdXJlKGUsMCk7bGV0IHI9ZTt0JiYocis9XCJCXCIpLGkmJihyKz1cIklcIik7bGV0IG49dGhpcy5faG9sZXkuZ2V0KHIpO2lmKHZvaWQgMD09PW4pe2xldCBzPTA7dCYmKHN8PTEpLGkmJihzfD0yKSxuPXRoaXMuX21lYXN1cmUoZSxzKSx0aGlzLl9ob2xleS5zZXQocixuKX1yZXR1cm4gbn1fbWVhc3VyZShlLHQpe2NvbnN0IGk9dGhpcy5fbWVhc3VyZUVsZW1lbnRzW3RdO3JldHVybiBpLnRleHRDb250ZW50PWUucmVwZWF0KDMyKSxpLm9mZnNldFdpZHRoLzMyfX19LDIyMjM6KGUsdCxpKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuVEVYVF9CQVNFTElORT10LkRJTV9PUEFDSVRZPXQuSU5WRVJURURfREVGQVVMVF9DT0xPUj12b2lkIDA7Y29uc3Qgcz1pKDYxMTQpO3QuSU5WRVJURURfREVGQVVMVF9DT0xPUj0yNTcsdC5ESU1fT1BBQ0lUWT0uNSx0LlRFWFRfQkFTRUxJTkU9cy5pc0ZpcmVmb3h8fHMuaXNMZWdhY3lFZGdlP1wiYm90dG9tXCI6XCJpZGVvZ3JhcGhpY1wifSw2MTcxOihlLHQpPT57ZnVuY3Rpb24gaShlKXtyZXR1cm4gNTc1MDg8PWUmJmU8PTU3NTU4fU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuY3JlYXRlUmVuZGVyRGltZW5zaW9ucz10LmV4Y2x1ZGVGcm9tQ29udHJhc3RSYXRpb0RlbWFuZHM9dC5pc1Jlc3RyaWN0ZWRQb3dlcmxpbmVHbHlwaD10LmlzUG93ZXJsaW5lR2x5cGg9dC50aHJvd0lmRmFsc3k9dm9pZCAwLHQudGhyb3dJZkZhbHN5PWZ1bmN0aW9uKGUpe2lmKCFlKXRocm93IG5ldyBFcnJvcihcInZhbHVlIG11c3Qgbm90IGJlIGZhbHN5XCIpO3JldHVybiBlfSx0LmlzUG93ZXJsaW5lR2x5cGg9aSx0LmlzUmVzdHJpY3RlZFBvd2VybGluZUdseXBoPWZ1bmN0aW9uKGUpe3JldHVybiA1NzUyMDw9ZSYmZTw9NTc1Mjd9LHQuZXhjbHVkZUZyb21Db250cmFzdFJhdGlvRGVtYW5kcz1mdW5jdGlvbihlKXtyZXR1cm4gaShlKXx8ZnVuY3Rpb24oZSl7cmV0dXJuIDk0NzI8PWUmJmU8PTk2MzF9KGUpfSx0LmNyZWF0ZVJlbmRlckRpbWVuc2lvbnM9ZnVuY3Rpb24oKXtyZXR1cm57Y3NzOntjYW52YXM6e3dpZHRoOjAsaGVpZ2h0OjB9LGNlbGw6e3dpZHRoOjAsaGVpZ2h0OjB9fSxkZXZpY2U6e2NhbnZhczp7d2lkdGg6MCxoZWlnaHQ6MH0sY2VsbDp7d2lkdGg6MCxoZWlnaHQ6MH0sY2hhcjp7d2lkdGg6MCxoZWlnaHQ6MCxsZWZ0OjAsdG9wOjB9fX19fSw0NTY6KGUsdCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LlNlbGVjdGlvbk1vZGVsPXZvaWQgMCx0LlNlbGVjdGlvbk1vZGVsPWNsYXNze2NvbnN0cnVjdG9yKGUpe3RoaXMuX2J1ZmZlclNlcnZpY2U9ZSx0aGlzLmlzU2VsZWN0QWxsQWN0aXZlPSExLHRoaXMuc2VsZWN0aW9uU3RhcnRMZW5ndGg9MH1jbGVhclNlbGVjdGlvbigpe3RoaXMuc2VsZWN0aW9uU3RhcnQ9dm9pZCAwLHRoaXMuc2VsZWN0aW9uRW5kPXZvaWQgMCx0aGlzLmlzU2VsZWN0QWxsQWN0aXZlPSExLHRoaXMuc2VsZWN0aW9uU3RhcnRMZW5ndGg9MH1nZXQgZmluYWxTZWxlY3Rpb25TdGFydCgpe3JldHVybiB0aGlzLmlzU2VsZWN0QWxsQWN0aXZlP1swLDBdOnRoaXMuc2VsZWN0aW9uRW5kJiZ0aGlzLnNlbGVjdGlvblN0YXJ0JiZ0aGlzLmFyZVNlbGVjdGlvblZhbHVlc1JldmVyc2VkKCk/dGhpcy5zZWxlY3Rpb25FbmQ6dGhpcy5zZWxlY3Rpb25TdGFydH1nZXQgZmluYWxTZWxlY3Rpb25FbmQoKXtpZih0aGlzLmlzU2VsZWN0QWxsQWN0aXZlKXJldHVyblt0aGlzLl9idWZmZXJTZXJ2aWNlLmNvbHMsdGhpcy5fYnVmZmVyU2VydmljZS5idWZmZXIueWJhc2UrdGhpcy5fYnVmZmVyU2VydmljZS5yb3dzLTFdO2lmKHRoaXMuc2VsZWN0aW9uU3RhcnQpe2lmKCF0aGlzLnNlbGVjdGlvbkVuZHx8dGhpcy5hcmVTZWxlY3Rpb25WYWx1ZXNSZXZlcnNlZCgpKXtjb25zdCBlPXRoaXMuc2VsZWN0aW9uU3RhcnRbMF0rdGhpcy5zZWxlY3Rpb25TdGFydExlbmd0aDtyZXR1cm4gZT50aGlzLl9idWZmZXJTZXJ2aWNlLmNvbHM/ZSV0aGlzLl9idWZmZXJTZXJ2aWNlLmNvbHM9PTA/W3RoaXMuX2J1ZmZlclNlcnZpY2UuY29scyx0aGlzLnNlbGVjdGlvblN0YXJ0WzFdK01hdGguZmxvb3IoZS90aGlzLl9idWZmZXJTZXJ2aWNlLmNvbHMpLTFdOltlJXRoaXMuX2J1ZmZlclNlcnZpY2UuY29scyx0aGlzLnNlbGVjdGlvblN0YXJ0WzFdK01hdGguZmxvb3IoZS90aGlzLl9idWZmZXJTZXJ2aWNlLmNvbHMpXTpbZSx0aGlzLnNlbGVjdGlvblN0YXJ0WzFdXX1pZih0aGlzLnNlbGVjdGlvblN0YXJ0TGVuZ3RoJiZ0aGlzLnNlbGVjdGlvbkVuZFsxXT09PXRoaXMuc2VsZWN0aW9uU3RhcnRbMV0pe2NvbnN0IGU9dGhpcy5zZWxlY3Rpb25TdGFydFswXSt0aGlzLnNlbGVjdGlvblN0YXJ0TGVuZ3RoO3JldHVybiBlPnRoaXMuX2J1ZmZlclNlcnZpY2UuY29scz9bZSV0aGlzLl9idWZmZXJTZXJ2aWNlLmNvbHMsdGhpcy5zZWxlY3Rpb25TdGFydFsxXStNYXRoLmZsb29yKGUvdGhpcy5fYnVmZmVyU2VydmljZS5jb2xzKV06W01hdGgubWF4KGUsdGhpcy5zZWxlY3Rpb25FbmRbMF0pLHRoaXMuc2VsZWN0aW9uRW5kWzFdXX1yZXR1cm4gdGhpcy5zZWxlY3Rpb25FbmR9fWFyZVNlbGVjdGlvblZhbHVlc1JldmVyc2VkKCl7Y29uc3QgZT10aGlzLnNlbGVjdGlvblN0YXJ0LHQ9dGhpcy5zZWxlY3Rpb25FbmQ7cmV0dXJuISghZXx8IXQpJiYoZVsxXT50WzFdfHxlWzFdPT09dFsxXSYmZVswXT50WzBdKX1oYW5kbGVUcmltKGUpe3JldHVybiB0aGlzLnNlbGVjdGlvblN0YXJ0JiYodGhpcy5zZWxlY3Rpb25TdGFydFsxXS09ZSksdGhpcy5zZWxlY3Rpb25FbmQmJih0aGlzLnNlbGVjdGlvbkVuZFsxXS09ZSksdGhpcy5zZWxlY3Rpb25FbmQmJnRoaXMuc2VsZWN0aW9uRW5kWzFdPDA/KHRoaXMuY2xlYXJTZWxlY3Rpb24oKSwhMCk6KHRoaXMuc2VsZWN0aW9uU3RhcnQmJnRoaXMuc2VsZWN0aW9uU3RhcnRbMV08MCYmKHRoaXMuc2VsZWN0aW9uU3RhcnRbMV09MCksITEpfX19LDQyODpmdW5jdGlvbihlLHQsaSl7dmFyIHM9dGhpcyYmdGhpcy5fX2RlY29yYXRlfHxmdW5jdGlvbihlLHQsaSxzKXt2YXIgcixuPWFyZ3VtZW50cy5sZW5ndGgsbz1uPDM/dDpudWxsPT09cz9zPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxpKTpzO2lmKFwib2JqZWN0XCI9PXR5cGVvZiBSZWZsZWN0JiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBSZWZsZWN0LmRlY29yYXRlKW89UmVmbGVjdC5kZWNvcmF0ZShlLHQsaSxzKTtlbHNlIGZvcih2YXIgYT1lLmxlbmd0aC0xO2E+PTA7YS0tKShyPWVbYV0pJiYobz0objwzP3Iobyk6bj4zP3IodCxpLG8pOnIodCxpKSl8fG8pO3JldHVybiBuPjMmJm8mJk9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGksbyksb30scj10aGlzJiZ0aGlzLl9fcGFyYW18fGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGkscyl7dChpLHMsZSl9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkNoYXJTaXplU2VydmljZT12b2lkIDA7Y29uc3Qgbj1pKDI1ODUpLG89aSg4NDYwKSxhPWkoODQ0KTtsZXQgaD10LkNoYXJTaXplU2VydmljZT1jbGFzcyBleHRlbmRzIGEuRGlzcG9zYWJsZXtnZXQgaGFzVmFsaWRTaXplKCl7cmV0dXJuIHRoaXMud2lkdGg+MCYmdGhpcy5oZWlnaHQ+MH1jb25zdHJ1Y3RvcihlLHQsaSl7c3VwZXIoKSx0aGlzLl9vcHRpb25zU2VydmljZT1pLHRoaXMud2lkdGg9MCx0aGlzLmhlaWdodD0wLHRoaXMuX29uQ2hhclNpemVDaGFuZ2U9dGhpcy5yZWdpc3RlcihuZXcgby5FdmVudEVtaXR0ZXIpLHRoaXMub25DaGFyU2l6ZUNoYW5nZT10aGlzLl9vbkNoYXJTaXplQ2hhbmdlLmV2ZW50LHRoaXMuX21lYXN1cmVTdHJhdGVneT1uZXcgYyhlLHQsdGhpcy5fb3B0aW9uc1NlcnZpY2UpLHRoaXMucmVnaXN0ZXIodGhpcy5fb3B0aW9uc1NlcnZpY2Uub25NdWx0aXBsZU9wdGlvbkNoYW5nZShbXCJmb250RmFtaWx5XCIsXCJmb250U2l6ZVwiXSwoKCk9PnRoaXMubWVhc3VyZSgpKSkpfW1lYXN1cmUoKXtjb25zdCBlPXRoaXMuX21lYXN1cmVTdHJhdGVneS5tZWFzdXJlKCk7ZS53aWR0aD09PXRoaXMud2lkdGgmJmUuaGVpZ2h0PT09dGhpcy5oZWlnaHR8fCh0aGlzLndpZHRoPWUud2lkdGgsdGhpcy5oZWlnaHQ9ZS5oZWlnaHQsdGhpcy5fb25DaGFyU2l6ZUNoYW5nZS5maXJlKCkpfX07dC5DaGFyU2l6ZVNlcnZpY2U9aD1zKFtyKDIsbi5JT3B0aW9uc1NlcnZpY2UpXSxoKTtjbGFzcyBje2NvbnN0cnVjdG9yKGUsdCxpKXt0aGlzLl9kb2N1bWVudD1lLHRoaXMuX3BhcmVudEVsZW1lbnQ9dCx0aGlzLl9vcHRpb25zU2VydmljZT1pLHRoaXMuX3Jlc3VsdD17d2lkdGg6MCxoZWlnaHQ6MH0sdGhpcy5fbWVhc3VyZUVsZW1lbnQ9dGhpcy5fZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNwYW5cIiksdGhpcy5fbWVhc3VyZUVsZW1lbnQuY2xhc3NMaXN0LmFkZChcInh0ZXJtLWNoYXItbWVhc3VyZS1lbGVtZW50XCIpLHRoaXMuX21lYXN1cmVFbGVtZW50LnRleHRDb250ZW50PVwiV1wiLnJlcGVhdCgzMiksdGhpcy5fbWVhc3VyZUVsZW1lbnQuc2V0QXR0cmlidXRlKFwiYXJpYS1oaWRkZW5cIixcInRydWVcIiksdGhpcy5fbWVhc3VyZUVsZW1lbnQuc3R5bGUud2hpdGVTcGFjZT1cInByZVwiLHRoaXMuX21lYXN1cmVFbGVtZW50LnN0eWxlLmZvbnRLZXJuaW5nPVwibm9uZVwiLHRoaXMuX3BhcmVudEVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fbWVhc3VyZUVsZW1lbnQpfW1lYXN1cmUoKXt0aGlzLl9tZWFzdXJlRWxlbWVudC5zdHlsZS5mb250RmFtaWx5PXRoaXMuX29wdGlvbnNTZXJ2aWNlLnJhd09wdGlvbnMuZm9udEZhbWlseSx0aGlzLl9tZWFzdXJlRWxlbWVudC5zdHlsZS5mb250U2l6ZT1gJHt0aGlzLl9vcHRpb25zU2VydmljZS5yYXdPcHRpb25zLmZvbnRTaXplfXB4YDtjb25zdCBlPXtoZWlnaHQ6TnVtYmVyKHRoaXMuX21lYXN1cmVFbGVtZW50Lm9mZnNldEhlaWdodCksd2lkdGg6TnVtYmVyKHRoaXMuX21lYXN1cmVFbGVtZW50Lm9mZnNldFdpZHRoKX07cmV0dXJuIDAhPT1lLndpZHRoJiYwIT09ZS5oZWlnaHQmJih0aGlzLl9yZXN1bHQud2lkdGg9ZS53aWR0aC8zMix0aGlzLl9yZXN1bHQuaGVpZ2h0PU1hdGguY2VpbChlLmhlaWdodCkpLHRoaXMuX3Jlc3VsdH19fSw0MjY5OmZ1bmN0aW9uKGUsdCxpKXt2YXIgcz10aGlzJiZ0aGlzLl9fZGVjb3JhdGV8fGZ1bmN0aW9uKGUsdCxpLHMpe3ZhciByLG49YXJndW1lbnRzLmxlbmd0aCxvPW48Mz90Om51bGw9PT1zP3M9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LGkpOnM7aWYoXCJvYmplY3RcIj09dHlwZW9mIFJlZmxlY3QmJlwiZnVuY3Rpb25cIj09dHlwZW9mIFJlZmxlY3QuZGVjb3JhdGUpbz1SZWZsZWN0LmRlY29yYXRlKGUsdCxpLHMpO2Vsc2UgZm9yKHZhciBhPWUubGVuZ3RoLTE7YT49MDthLS0pKHI9ZVthXSkmJihvPShuPDM/cihvKTpuPjM/cih0LGksbyk6cih0LGkpKXx8byk7cmV0dXJuIG4+MyYmbyYmT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsaSxvKSxvfSxyPXRoaXMmJnRoaXMuX19wYXJhbXx8ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZnVuY3Rpb24oaSxzKXt0KGkscyxlKX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuQ2hhcmFjdGVySm9pbmVyU2VydmljZT10LkpvaW5lZENlbGxEYXRhPXZvaWQgMDtjb25zdCBuPWkoMzczNCksbz1pKDY0MyksYT1pKDUxMSksaD1pKDI1ODUpO2NsYXNzIGMgZXh0ZW5kcyBuLkF0dHJpYnV0ZURhdGF7Y29uc3RydWN0b3IoZSx0LGkpe3N1cGVyKCksdGhpcy5jb250ZW50PTAsdGhpcy5jb21iaW5lZERhdGE9XCJcIix0aGlzLmZnPWUuZmcsdGhpcy5iZz1lLmJnLHRoaXMuY29tYmluZWREYXRhPXQsdGhpcy5fd2lkdGg9aX1pc0NvbWJpbmVkKCl7cmV0dXJuIDIwOTcxNTJ9Z2V0V2lkdGgoKXtyZXR1cm4gdGhpcy5fd2lkdGh9Z2V0Q2hhcnMoKXtyZXR1cm4gdGhpcy5jb21iaW5lZERhdGF9Z2V0Q29kZSgpe3JldHVybiAyMDk3MTUxfXNldEZyb21DaGFyRGF0YShlKXt0aHJvdyBuZXcgRXJyb3IoXCJub3QgaW1wbGVtZW50ZWRcIil9Z2V0QXNDaGFyRGF0YSgpe3JldHVyblt0aGlzLmZnLHRoaXMuZ2V0Q2hhcnMoKSx0aGlzLmdldFdpZHRoKCksdGhpcy5nZXRDb2RlKCldfX10LkpvaW5lZENlbGxEYXRhPWM7bGV0IGw9dC5DaGFyYWN0ZXJKb2luZXJTZXJ2aWNlPWNsYXNzIGV7Y29uc3RydWN0b3IoZSl7dGhpcy5fYnVmZmVyU2VydmljZT1lLHRoaXMuX2NoYXJhY3RlckpvaW5lcnM9W10sdGhpcy5fbmV4dENoYXJhY3RlckpvaW5lcklkPTAsdGhpcy5fd29ya0NlbGw9bmV3IGEuQ2VsbERhdGF9cmVnaXN0ZXIoZSl7Y29uc3QgdD17aWQ6dGhpcy5fbmV4dENoYXJhY3RlckpvaW5lcklkKyssaGFuZGxlcjplfTtyZXR1cm4gdGhpcy5fY2hhcmFjdGVySm9pbmVycy5wdXNoKHQpLHQuaWR9ZGVyZWdpc3RlcihlKXtmb3IobGV0IHQ9MDt0PHRoaXMuX2NoYXJhY3RlckpvaW5lcnMubGVuZ3RoO3QrKylpZih0aGlzLl9jaGFyYWN0ZXJKb2luZXJzW3RdLmlkPT09ZSlyZXR1cm4gdGhpcy5fY2hhcmFjdGVySm9pbmVycy5zcGxpY2UodCwxKSwhMDtyZXR1cm4hMX1nZXRKb2luZWRDaGFyYWN0ZXJzKGUpe2lmKDA9PT10aGlzLl9jaGFyYWN0ZXJKb2luZXJzLmxlbmd0aClyZXR1cm5bXTtjb25zdCB0PXRoaXMuX2J1ZmZlclNlcnZpY2UuYnVmZmVyLmxpbmVzLmdldChlKTtpZighdHx8MD09PXQubGVuZ3RoKXJldHVybltdO2NvbnN0IGk9W10scz10LnRyYW5zbGF0ZVRvU3RyaW5nKCEwKTtsZXQgcj0wLG49MCxhPTAsaD10LmdldEZnKDApLGM9dC5nZXRCZygwKTtmb3IobGV0IGU9MDtlPHQuZ2V0VHJpbW1lZExlbmd0aCgpO2UrKylpZih0LmxvYWRDZWxsKGUsdGhpcy5fd29ya0NlbGwpLDAhPT10aGlzLl93b3JrQ2VsbC5nZXRXaWR0aCgpKXtpZih0aGlzLl93b3JrQ2VsbC5mZyE9PWh8fHRoaXMuX3dvcmtDZWxsLmJnIT09Yyl7aWYoZS1yPjEpe2NvbnN0IGU9dGhpcy5fZ2V0Sm9pbmVkUmFuZ2VzKHMsYSxuLHQscik7Zm9yKGxldCB0PTA7dDxlLmxlbmd0aDt0KyspaS5wdXNoKGVbdF0pfXI9ZSxhPW4saD10aGlzLl93b3JrQ2VsbC5mZyxjPXRoaXMuX3dvcmtDZWxsLmJnfW4rPXRoaXMuX3dvcmtDZWxsLmdldENoYXJzKCkubGVuZ3RofHxvLldISVRFU1BBQ0VfQ0VMTF9DSEFSLmxlbmd0aH1pZih0aGlzLl9idWZmZXJTZXJ2aWNlLmNvbHMtcj4xKXtjb25zdCBlPXRoaXMuX2dldEpvaW5lZFJhbmdlcyhzLGEsbix0LHIpO2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKWkucHVzaChlW3RdKX1yZXR1cm4gaX1fZ2V0Sm9pbmVkUmFuZ2VzKHQsaSxzLHIsbil7Y29uc3Qgbz10LnN1YnN0cmluZyhpLHMpO2xldCBhPVtdO3RyeXthPXRoaXMuX2NoYXJhY3RlckpvaW5lcnNbMF0uaGFuZGxlcihvKX1jYXRjaChlKXtjb25zb2xlLmVycm9yKGUpfWZvcihsZXQgdD0xO3Q8dGhpcy5fY2hhcmFjdGVySm9pbmVycy5sZW5ndGg7dCsrKXRyeXtjb25zdCBpPXRoaXMuX2NoYXJhY3RlckpvaW5lcnNbdF0uaGFuZGxlcihvKTtmb3IobGV0IHQ9MDt0PGkubGVuZ3RoO3QrKyllLl9tZXJnZVJhbmdlcyhhLGlbdF0pfWNhdGNoKGUpe2NvbnNvbGUuZXJyb3IoZSl9cmV0dXJuIHRoaXMuX3N0cmluZ1Jhbmdlc1RvQ2VsbFJhbmdlcyhhLHIsbiksYX1fc3RyaW5nUmFuZ2VzVG9DZWxsUmFuZ2VzKGUsdCxpKXtsZXQgcz0wLHI9ITEsbj0wLGE9ZVtzXTtpZihhKXtmb3IobGV0IGg9aTtoPHRoaXMuX2J1ZmZlclNlcnZpY2UuY29scztoKyspe2NvbnN0IGk9dC5nZXRXaWR0aChoKSxjPXQuZ2V0U3RyaW5nKGgpLmxlbmd0aHx8by5XSElURVNQQUNFX0NFTExfQ0hBUi5sZW5ndGg7aWYoMCE9PWkpe2lmKCFyJiZhWzBdPD1uJiYoYVswXT1oLHI9ITApLGFbMV08PW4pe2lmKGFbMV09aCxhPWVbKytzXSwhYSlicmVhazthWzBdPD1uPyhhWzBdPWgscj0hMCk6cj0hMX1uKz1jfX1hJiYoYVsxXT10aGlzLl9idWZmZXJTZXJ2aWNlLmNvbHMpfX1zdGF0aWMgX21lcmdlUmFuZ2VzKGUsdCl7bGV0IGk9ITE7Zm9yKGxldCBzPTA7czxlLmxlbmd0aDtzKyspe2NvbnN0IHI9ZVtzXTtpZihpKXtpZih0WzFdPD1yWzBdKXJldHVybiBlW3MtMV1bMV09dFsxXSxlO2lmKHRbMV08PXJbMV0pcmV0dXJuIGVbcy0xXVsxXT1NYXRoLm1heCh0WzFdLHJbMV0pLGUuc3BsaWNlKHMsMSksZTtlLnNwbGljZShzLDEpLHMtLX1lbHNle2lmKHRbMV08PXJbMF0pcmV0dXJuIGUuc3BsaWNlKHMsMCx0KSxlO2lmKHRbMV08PXJbMV0pcmV0dXJuIHJbMF09TWF0aC5taW4odFswXSxyWzBdKSxlO3RbMF08clsxXSYmKHJbMF09TWF0aC5taW4odFswXSxyWzBdKSxpPSEwKX19cmV0dXJuIGk/ZVtlLmxlbmd0aC0xXVsxXT10WzFdOmUucHVzaCh0KSxlfX07dC5DaGFyYWN0ZXJKb2luZXJTZXJ2aWNlPWw9cyhbcigwLGguSUJ1ZmZlclNlcnZpY2UpXSxsKX0sNTExNDooZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuQ29yZUJyb3dzZXJTZXJ2aWNlPXZvaWQgMCx0LkNvcmVCcm93c2VyU2VydmljZT1jbGFzc3tjb25zdHJ1Y3RvcihlLHQpe3RoaXMuX3RleHRhcmVhPWUsdGhpcy53aW5kb3c9dCx0aGlzLl9pc0ZvY3VzZWQ9ITEsdGhpcy5fY2FjaGVkSXNGb2N1c2VkPXZvaWQgMCx0aGlzLl90ZXh0YXJlYS5hZGRFdmVudExpc3RlbmVyKFwiZm9jdXNcIiwoKCk9PnRoaXMuX2lzRm9jdXNlZD0hMCkpLHRoaXMuX3RleHRhcmVhLmFkZEV2ZW50TGlzdGVuZXIoXCJibHVyXCIsKCgpPT50aGlzLl9pc0ZvY3VzZWQ9ITEpKX1nZXQgZHByKCl7cmV0dXJuIHRoaXMud2luZG93LmRldmljZVBpeGVsUmF0aW99Z2V0IGlzRm9jdXNlZCgpe3JldHVybiB2b2lkIDA9PT10aGlzLl9jYWNoZWRJc0ZvY3VzZWQmJih0aGlzLl9jYWNoZWRJc0ZvY3VzZWQ9dGhpcy5faXNGb2N1c2VkJiZ0aGlzLl90ZXh0YXJlYS5vd25lckRvY3VtZW50Lmhhc0ZvY3VzKCkscXVldWVNaWNyb3Rhc2soKCgpPT50aGlzLl9jYWNoZWRJc0ZvY3VzZWQ9dm9pZCAwKSkpLHRoaXMuX2NhY2hlZElzRm9jdXNlZH19fSw4OTM0OmZ1bmN0aW9uKGUsdCxpKXt2YXIgcz10aGlzJiZ0aGlzLl9fZGVjb3JhdGV8fGZ1bmN0aW9uKGUsdCxpLHMpe3ZhciByLG49YXJndW1lbnRzLmxlbmd0aCxvPW48Mz90Om51bGw9PT1zP3M9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LGkpOnM7aWYoXCJvYmplY3RcIj09dHlwZW9mIFJlZmxlY3QmJlwiZnVuY3Rpb25cIj09dHlwZW9mIFJlZmxlY3QuZGVjb3JhdGUpbz1SZWZsZWN0LmRlY29yYXRlKGUsdCxpLHMpO2Vsc2UgZm9yKHZhciBhPWUubGVuZ3RoLTE7YT49MDthLS0pKHI9ZVthXSkmJihvPShuPDM/cihvKTpuPjM/cih0LGksbyk6cih0LGkpKXx8byk7cmV0dXJuIG4+MyYmbyYmT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsaSxvKSxvfSxyPXRoaXMmJnRoaXMuX19wYXJhbXx8ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZnVuY3Rpb24oaSxzKXt0KGkscyxlKX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuTW91c2VTZXJ2aWNlPXZvaWQgMDtjb25zdCBuPWkoNDcyNSksbz1pKDk4MDYpO2xldCBhPXQuTW91c2VTZXJ2aWNlPWNsYXNze2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5fcmVuZGVyU2VydmljZT1lLHRoaXMuX2NoYXJTaXplU2VydmljZT10fWdldENvb3JkcyhlLHQsaSxzLHIpe3JldHVybigwLG8uZ2V0Q29vcmRzKSh3aW5kb3csZSx0LGkscyx0aGlzLl9jaGFyU2l6ZVNlcnZpY2UuaGFzVmFsaWRTaXplLHRoaXMuX3JlbmRlclNlcnZpY2UuZGltZW5zaW9ucy5jc3MuY2VsbC53aWR0aCx0aGlzLl9yZW5kZXJTZXJ2aWNlLmRpbWVuc2lvbnMuY3NzLmNlbGwuaGVpZ2h0LHIpfWdldE1vdXNlUmVwb3J0Q29vcmRzKGUsdCl7Y29uc3QgaT0oMCxvLmdldENvb3Jkc1JlbGF0aXZlVG9FbGVtZW50KSh3aW5kb3csZSx0KTtpZih0aGlzLl9jaGFyU2l6ZVNlcnZpY2UuaGFzVmFsaWRTaXplKXJldHVybiBpWzBdPU1hdGgubWluKE1hdGgubWF4KGlbMF0sMCksdGhpcy5fcmVuZGVyU2VydmljZS5kaW1lbnNpb25zLmNzcy5jYW52YXMud2lkdGgtMSksaVsxXT1NYXRoLm1pbihNYXRoLm1heChpWzFdLDApLHRoaXMuX3JlbmRlclNlcnZpY2UuZGltZW5zaW9ucy5jc3MuY2FudmFzLmhlaWdodC0xKSx7Y29sOk1hdGguZmxvb3IoaVswXS90aGlzLl9yZW5kZXJTZXJ2aWNlLmRpbWVuc2lvbnMuY3NzLmNlbGwud2lkdGgpLHJvdzpNYXRoLmZsb29yKGlbMV0vdGhpcy5fcmVuZGVyU2VydmljZS5kaW1lbnNpb25zLmNzcy5jZWxsLmhlaWdodCkseDpNYXRoLmZsb29yKGlbMF0pLHk6TWF0aC5mbG9vcihpWzFdKX19fTt0Lk1vdXNlU2VydmljZT1hPXMoW3IoMCxuLklSZW5kZXJTZXJ2aWNlKSxyKDEsbi5JQ2hhclNpemVTZXJ2aWNlKV0sYSl9LDMyMzA6ZnVuY3Rpb24oZSx0LGkpe3ZhciBzPXRoaXMmJnRoaXMuX19kZWNvcmF0ZXx8ZnVuY3Rpb24oZSx0LGkscyl7dmFyIHIsbj1hcmd1bWVudHMubGVuZ3RoLG89bjwzP3Q6bnVsbD09PXM/cz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsaSk6cztpZihcIm9iamVjdFwiPT10eXBlb2YgUmVmbGVjdCYmXCJmdW5jdGlvblwiPT10eXBlb2YgUmVmbGVjdC5kZWNvcmF0ZSlvPVJlZmxlY3QuZGVjb3JhdGUoZSx0LGkscyk7ZWxzZSBmb3IodmFyIGE9ZS5sZW5ndGgtMTthPj0wO2EtLSkocj1lW2FdKSYmKG89KG48Mz9yKG8pOm4+Mz9yKHQsaSxvKTpyKHQsaSkpfHxvKTtyZXR1cm4gbj4zJiZvJiZPYmplY3QuZGVmaW5lUHJvcGVydHkodCxpLG8pLG99LHI9dGhpcyYmdGhpcy5fX3BhcmFtfHxmdW5jdGlvbihlLHQpe3JldHVybiBmdW5jdGlvbihpLHMpe3QoaSxzLGUpfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5SZW5kZXJTZXJ2aWNlPXZvaWQgMDtjb25zdCBuPWkoMzY1Niksbz1pKDYxOTMpLGE9aSg1NTk2KSxoPWkoNDcyNSksYz1pKDg0NjApLGw9aSg4NDQpLGQ9aSg3MjI2KSxfPWkoMjU4NSk7bGV0IHU9dC5SZW5kZXJTZXJ2aWNlPWNsYXNzIGV4dGVuZHMgbC5EaXNwb3NhYmxle2dldCBkaW1lbnNpb25zKCl7cmV0dXJuIHRoaXMuX3JlbmRlcmVyLnZhbHVlLmRpbWVuc2lvbnN9Y29uc3RydWN0b3IoZSx0LGkscyxyLGgsXyx1KXtpZihzdXBlcigpLHRoaXMuX3Jvd0NvdW50PWUsdGhpcy5fY2hhclNpemVTZXJ2aWNlPXMsdGhpcy5fcmVuZGVyZXI9dGhpcy5yZWdpc3RlcihuZXcgbC5NdXRhYmxlRGlzcG9zYWJsZSksdGhpcy5fcGF1c2VkUmVzaXplVGFzaz1uZXcgZC5EZWJvdW5jZWRJZGxlVGFzayx0aGlzLl9pc1BhdXNlZD0hMSx0aGlzLl9uZWVkc0Z1bGxSZWZyZXNoPSExLHRoaXMuX2lzTmV4dFJlbmRlclJlZHJhd09ubHk9ITAsdGhpcy5fbmVlZHNTZWxlY3Rpb25SZWZyZXNoPSExLHRoaXMuX2NhbnZhc1dpZHRoPTAsdGhpcy5fY2FudmFzSGVpZ2h0PTAsdGhpcy5fc2VsZWN0aW9uU3RhdGU9e3N0YXJ0OnZvaWQgMCxlbmQ6dm9pZCAwLGNvbHVtblNlbGVjdE1vZGU6ITF9LHRoaXMuX29uRGltZW5zaW9uc0NoYW5nZT10aGlzLnJlZ2lzdGVyKG5ldyBjLkV2ZW50RW1pdHRlciksdGhpcy5vbkRpbWVuc2lvbnNDaGFuZ2U9dGhpcy5fb25EaW1lbnNpb25zQ2hhbmdlLmV2ZW50LHRoaXMuX29uUmVuZGVyZWRWaWV3cG9ydENoYW5nZT10aGlzLnJlZ2lzdGVyKG5ldyBjLkV2ZW50RW1pdHRlciksdGhpcy5vblJlbmRlcmVkVmlld3BvcnRDaGFuZ2U9dGhpcy5fb25SZW5kZXJlZFZpZXdwb3J0Q2hhbmdlLmV2ZW50LHRoaXMuX29uUmVuZGVyPXRoaXMucmVnaXN0ZXIobmV3IGMuRXZlbnRFbWl0dGVyKSx0aGlzLm9uUmVuZGVyPXRoaXMuX29uUmVuZGVyLmV2ZW50LHRoaXMuX29uUmVmcmVzaFJlcXVlc3Q9dGhpcy5yZWdpc3RlcihuZXcgYy5FdmVudEVtaXR0ZXIpLHRoaXMub25SZWZyZXNoUmVxdWVzdD10aGlzLl9vblJlZnJlc2hSZXF1ZXN0LmV2ZW50LHRoaXMuX3JlbmRlckRlYm91bmNlcj1uZXcgby5SZW5kZXJEZWJvdW5jZXIoXy53aW5kb3csKChlLHQpPT50aGlzLl9yZW5kZXJSb3dzKGUsdCkpKSx0aGlzLnJlZ2lzdGVyKHRoaXMuX3JlbmRlckRlYm91bmNlciksdGhpcy5fc2NyZWVuRHByTW9uaXRvcj1uZXcgYS5TY3JlZW5EcHJNb25pdG9yKF8ud2luZG93KSx0aGlzLl9zY3JlZW5EcHJNb25pdG9yLnNldExpc3RlbmVyKCgoKT0+dGhpcy5oYW5kbGVEZXZpY2VQaXhlbFJhdGlvQ2hhbmdlKCkpKSx0aGlzLnJlZ2lzdGVyKHRoaXMuX3NjcmVlbkRwck1vbml0b3IpLHRoaXMucmVnaXN0ZXIoaC5vblJlc2l6ZSgoKCk9PnRoaXMuX2Z1bGxSZWZyZXNoKCkpKSksdGhpcy5yZWdpc3RlcihoLmJ1ZmZlcnMub25CdWZmZXJBY3RpdmF0ZSgoKCk9Pnt2YXIgZTtyZXR1cm4gbnVsbD09PShlPXRoaXMuX3JlbmRlcmVyLnZhbHVlKXx8dm9pZCAwPT09ZT92b2lkIDA6ZS5jbGVhcigpfSkpKSx0aGlzLnJlZ2lzdGVyKGkub25PcHRpb25DaGFuZ2UoKCgpPT50aGlzLl9oYW5kbGVPcHRpb25zQ2hhbmdlZCgpKSkpLHRoaXMucmVnaXN0ZXIodGhpcy5fY2hhclNpemVTZXJ2aWNlLm9uQ2hhclNpemVDaGFuZ2UoKCgpPT50aGlzLmhhbmRsZUNoYXJTaXplQ2hhbmdlZCgpKSkpLHRoaXMucmVnaXN0ZXIoci5vbkRlY29yYXRpb25SZWdpc3RlcmVkKCgoKT0+dGhpcy5fZnVsbFJlZnJlc2goKSkpKSx0aGlzLnJlZ2lzdGVyKHIub25EZWNvcmF0aW9uUmVtb3ZlZCgoKCk9PnRoaXMuX2Z1bGxSZWZyZXNoKCkpKSksdGhpcy5yZWdpc3RlcihpLm9uTXVsdGlwbGVPcHRpb25DaGFuZ2UoW1wiY3VzdG9tR2x5cGhzXCIsXCJkcmF3Qm9sZFRleHRJbkJyaWdodENvbG9yc1wiLFwibGV0dGVyU3BhY2luZ1wiLFwibGluZUhlaWdodFwiLFwiZm9udEZhbWlseVwiLFwiZm9udFNpemVcIixcImZvbnRXZWlnaHRcIixcImZvbnRXZWlnaHRCb2xkXCIsXCJtaW5pbXVtQ29udHJhc3RSYXRpb1wiXSwoKCk9Pnt0aGlzLmNsZWFyKCksdGhpcy5oYW5kbGVSZXNpemUoaC5jb2xzLGgucm93cyksdGhpcy5fZnVsbFJlZnJlc2goKX0pKSksdGhpcy5yZWdpc3RlcihpLm9uTXVsdGlwbGVPcHRpb25DaGFuZ2UoW1wiY3Vyc29yQmxpbmtcIixcImN1cnNvclN0eWxlXCJdLCgoKT0+dGhpcy5yZWZyZXNoUm93cyhoLmJ1ZmZlci55LGguYnVmZmVyLnksITApKSkpLHRoaXMucmVnaXN0ZXIoKDAsbi5hZGREaXNwb3NhYmxlRG9tTGlzdGVuZXIpKF8ud2luZG93LFwicmVzaXplXCIsKCgpPT50aGlzLmhhbmRsZURldmljZVBpeGVsUmF0aW9DaGFuZ2UoKSkpKSx0aGlzLnJlZ2lzdGVyKHUub25DaGFuZ2VDb2xvcnMoKCgpPT50aGlzLl9mdWxsUmVmcmVzaCgpKSkpLFwiSW50ZXJzZWN0aW9uT2JzZXJ2ZXJcImluIF8ud2luZG93KXtjb25zdCBlPW5ldyBfLndpbmRvdy5JbnRlcnNlY3Rpb25PYnNlcnZlcigoZT0+dGhpcy5faGFuZGxlSW50ZXJzZWN0aW9uQ2hhbmdlKGVbZS5sZW5ndGgtMV0pKSx7dGhyZXNob2xkOjB9KTtlLm9ic2VydmUodCksdGhpcy5yZWdpc3Rlcih7ZGlzcG9zZTooKT0+ZS5kaXNjb25uZWN0KCl9KX19X2hhbmRsZUludGVyc2VjdGlvbkNoYW5nZShlKXt0aGlzLl9pc1BhdXNlZD12b2lkIDA9PT1lLmlzSW50ZXJzZWN0aW5nPzA9PT1lLmludGVyc2VjdGlvblJhdGlvOiFlLmlzSW50ZXJzZWN0aW5nLHRoaXMuX2lzUGF1c2VkfHx0aGlzLl9jaGFyU2l6ZVNlcnZpY2UuaGFzVmFsaWRTaXplfHx0aGlzLl9jaGFyU2l6ZVNlcnZpY2UubWVhc3VyZSgpLCF0aGlzLl9pc1BhdXNlZCYmdGhpcy5fbmVlZHNGdWxsUmVmcmVzaCYmKHRoaXMuX3BhdXNlZFJlc2l6ZVRhc2suZmx1c2goKSx0aGlzLnJlZnJlc2hSb3dzKDAsdGhpcy5fcm93Q291bnQtMSksdGhpcy5fbmVlZHNGdWxsUmVmcmVzaD0hMSl9cmVmcmVzaFJvd3MoZSx0LGk9ITEpe3RoaXMuX2lzUGF1c2VkP3RoaXMuX25lZWRzRnVsbFJlZnJlc2g9ITA6KGl8fCh0aGlzLl9pc05leHRSZW5kZXJSZWRyYXdPbmx5PSExKSx0aGlzLl9yZW5kZXJEZWJvdW5jZXIucmVmcmVzaChlLHQsdGhpcy5fcm93Q291bnQpKX1fcmVuZGVyUm93cyhlLHQpe3RoaXMuX3JlbmRlcmVyLnZhbHVlJiYoZT1NYXRoLm1pbihlLHRoaXMuX3Jvd0NvdW50LTEpLHQ9TWF0aC5taW4odCx0aGlzLl9yb3dDb3VudC0xKSx0aGlzLl9yZW5kZXJlci52YWx1ZS5yZW5kZXJSb3dzKGUsdCksdGhpcy5fbmVlZHNTZWxlY3Rpb25SZWZyZXNoJiYodGhpcy5fcmVuZGVyZXIudmFsdWUuaGFuZGxlU2VsZWN0aW9uQ2hhbmdlZCh0aGlzLl9zZWxlY3Rpb25TdGF0ZS5zdGFydCx0aGlzLl9zZWxlY3Rpb25TdGF0ZS5lbmQsdGhpcy5fc2VsZWN0aW9uU3RhdGUuY29sdW1uU2VsZWN0TW9kZSksdGhpcy5fbmVlZHNTZWxlY3Rpb25SZWZyZXNoPSExKSx0aGlzLl9pc05leHRSZW5kZXJSZWRyYXdPbmx5fHx0aGlzLl9vblJlbmRlcmVkVmlld3BvcnRDaGFuZ2UuZmlyZSh7c3RhcnQ6ZSxlbmQ6dH0pLHRoaXMuX29uUmVuZGVyLmZpcmUoe3N0YXJ0OmUsZW5kOnR9KSx0aGlzLl9pc05leHRSZW5kZXJSZWRyYXdPbmx5PSEwKX1yZXNpemUoZSx0KXt0aGlzLl9yb3dDb3VudD10LHRoaXMuX2ZpcmVPbkNhbnZhc1Jlc2l6ZSgpfV9oYW5kbGVPcHRpb25zQ2hhbmdlZCgpe3RoaXMuX3JlbmRlcmVyLnZhbHVlJiYodGhpcy5yZWZyZXNoUm93cygwLHRoaXMuX3Jvd0NvdW50LTEpLHRoaXMuX2ZpcmVPbkNhbnZhc1Jlc2l6ZSgpKX1fZmlyZU9uQ2FudmFzUmVzaXplKCl7dGhpcy5fcmVuZGVyZXIudmFsdWUmJih0aGlzLl9yZW5kZXJlci52YWx1ZS5kaW1lbnNpb25zLmNzcy5jYW52YXMud2lkdGg9PT10aGlzLl9jYW52YXNXaWR0aCYmdGhpcy5fcmVuZGVyZXIudmFsdWUuZGltZW5zaW9ucy5jc3MuY2FudmFzLmhlaWdodD09PXRoaXMuX2NhbnZhc0hlaWdodHx8dGhpcy5fb25EaW1lbnNpb25zQ2hhbmdlLmZpcmUodGhpcy5fcmVuZGVyZXIudmFsdWUuZGltZW5zaW9ucykpfWhhc1JlbmRlcmVyKCl7cmV0dXJuISF0aGlzLl9yZW5kZXJlci52YWx1ZX1zZXRSZW5kZXJlcihlKXt0aGlzLl9yZW5kZXJlci52YWx1ZT1lLHRoaXMuX3JlbmRlcmVyLnZhbHVlLm9uUmVxdWVzdFJlZHJhdygoZT0+dGhpcy5yZWZyZXNoUm93cyhlLnN0YXJ0LGUuZW5kLCEwKSkpLHRoaXMuX25lZWRzU2VsZWN0aW9uUmVmcmVzaD0hMCx0aGlzLl9mdWxsUmVmcmVzaCgpfWFkZFJlZnJlc2hDYWxsYmFjayhlKXtyZXR1cm4gdGhpcy5fcmVuZGVyRGVib3VuY2VyLmFkZFJlZnJlc2hDYWxsYmFjayhlKX1fZnVsbFJlZnJlc2goKXt0aGlzLl9pc1BhdXNlZD90aGlzLl9uZWVkc0Z1bGxSZWZyZXNoPSEwOnRoaXMucmVmcmVzaFJvd3MoMCx0aGlzLl9yb3dDb3VudC0xKX1jbGVhclRleHR1cmVBdGxhcygpe3ZhciBlLHQ7dGhpcy5fcmVuZGVyZXIudmFsdWUmJihudWxsPT09KHQ9KGU9dGhpcy5fcmVuZGVyZXIudmFsdWUpLmNsZWFyVGV4dHVyZUF0bGFzKXx8dm9pZCAwPT09dHx8dC5jYWxsKGUpLHRoaXMuX2Z1bGxSZWZyZXNoKCkpfWhhbmRsZURldmljZVBpeGVsUmF0aW9DaGFuZ2UoKXt0aGlzLl9jaGFyU2l6ZVNlcnZpY2UubWVhc3VyZSgpLHRoaXMuX3JlbmRlcmVyLnZhbHVlJiYodGhpcy5fcmVuZGVyZXIudmFsdWUuaGFuZGxlRGV2aWNlUGl4ZWxSYXRpb0NoYW5nZSgpLHRoaXMucmVmcmVzaFJvd3MoMCx0aGlzLl9yb3dDb3VudC0xKSl9aGFuZGxlUmVzaXplKGUsdCl7dGhpcy5fcmVuZGVyZXIudmFsdWUmJih0aGlzLl9pc1BhdXNlZD90aGlzLl9wYXVzZWRSZXNpemVUYXNrLnNldCgoKCk9PnRoaXMuX3JlbmRlcmVyLnZhbHVlLmhhbmRsZVJlc2l6ZShlLHQpKSk6dGhpcy5fcmVuZGVyZXIudmFsdWUuaGFuZGxlUmVzaXplKGUsdCksdGhpcy5fZnVsbFJlZnJlc2goKSl9aGFuZGxlQ2hhclNpemVDaGFuZ2VkKCl7dmFyIGU7bnVsbD09PShlPXRoaXMuX3JlbmRlcmVyLnZhbHVlKXx8dm9pZCAwPT09ZXx8ZS5oYW5kbGVDaGFyU2l6ZUNoYW5nZWQoKX1oYW5kbGVCbHVyKCl7dmFyIGU7bnVsbD09PShlPXRoaXMuX3JlbmRlcmVyLnZhbHVlKXx8dm9pZCAwPT09ZXx8ZS5oYW5kbGVCbHVyKCl9aGFuZGxlRm9jdXMoKXt2YXIgZTtudWxsPT09KGU9dGhpcy5fcmVuZGVyZXIudmFsdWUpfHx2b2lkIDA9PT1lfHxlLmhhbmRsZUZvY3VzKCl9aGFuZGxlU2VsZWN0aW9uQ2hhbmdlZChlLHQsaSl7dmFyIHM7dGhpcy5fc2VsZWN0aW9uU3RhdGUuc3RhcnQ9ZSx0aGlzLl9zZWxlY3Rpb25TdGF0ZS5lbmQ9dCx0aGlzLl9zZWxlY3Rpb25TdGF0ZS5jb2x1bW5TZWxlY3RNb2RlPWksbnVsbD09PShzPXRoaXMuX3JlbmRlcmVyLnZhbHVlKXx8dm9pZCAwPT09c3x8cy5oYW5kbGVTZWxlY3Rpb25DaGFuZ2VkKGUsdCxpKX1oYW5kbGVDdXJzb3JNb3ZlKCl7dmFyIGU7bnVsbD09PShlPXRoaXMuX3JlbmRlcmVyLnZhbHVlKXx8dm9pZCAwPT09ZXx8ZS5oYW5kbGVDdXJzb3JNb3ZlKCl9Y2xlYXIoKXt2YXIgZTtudWxsPT09KGU9dGhpcy5fcmVuZGVyZXIudmFsdWUpfHx2b2lkIDA9PT1lfHxlLmNsZWFyKCl9fTt0LlJlbmRlclNlcnZpY2U9dT1zKFtyKDIsXy5JT3B0aW9uc1NlcnZpY2UpLHIoMyxoLklDaGFyU2l6ZVNlcnZpY2UpLHIoNCxfLklEZWNvcmF0aW9uU2VydmljZSkscig1LF8uSUJ1ZmZlclNlcnZpY2UpLHIoNixoLklDb3JlQnJvd3NlclNlcnZpY2UpLHIoNyxoLklUaGVtZVNlcnZpY2UpXSx1KX0sOTMxMjpmdW5jdGlvbihlLHQsaSl7dmFyIHM9dGhpcyYmdGhpcy5fX2RlY29yYXRlfHxmdW5jdGlvbihlLHQsaSxzKXt2YXIgcixuPWFyZ3VtZW50cy5sZW5ndGgsbz1uPDM/dDpudWxsPT09cz9zPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxpKTpzO2lmKFwib2JqZWN0XCI9PXR5cGVvZiBSZWZsZWN0JiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBSZWZsZWN0LmRlY29yYXRlKW89UmVmbGVjdC5kZWNvcmF0ZShlLHQsaSxzKTtlbHNlIGZvcih2YXIgYT1lLmxlbmd0aC0xO2E+PTA7YS0tKShyPWVbYV0pJiYobz0objwzP3Iobyk6bj4zP3IodCxpLG8pOnIodCxpKSl8fG8pO3JldHVybiBuPjMmJm8mJk9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGksbyksb30scj10aGlzJiZ0aGlzLl9fcGFyYW18fGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGkscyl7dChpLHMsZSl9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LlNlbGVjdGlvblNlcnZpY2U9dm9pZCAwO2NvbnN0IG49aSg5ODA2KSxvPWkoOTUwNCksYT1pKDQ1NiksaD1pKDQ3MjUpLGM9aSg4NDYwKSxsPWkoODQ0KSxkPWkoNjExNCksXz1pKDQ4NDEpLHU9aSg1MTEpLGY9aSgyNTg1KSx2PVN0cmluZy5mcm9tQ2hhckNvZGUoMTYwKSxwPW5ldyBSZWdFeHAodixcImdcIik7bGV0IGc9dC5TZWxlY3Rpb25TZXJ2aWNlPWNsYXNzIGV4dGVuZHMgbC5EaXNwb3NhYmxle2NvbnN0cnVjdG9yKGUsdCxpLHMscixuLG8saCxkKXtzdXBlcigpLHRoaXMuX2VsZW1lbnQ9ZSx0aGlzLl9zY3JlZW5FbGVtZW50PXQsdGhpcy5fbGlua2lmaWVyPWksdGhpcy5fYnVmZmVyU2VydmljZT1zLHRoaXMuX2NvcmVTZXJ2aWNlPXIsdGhpcy5fbW91c2VTZXJ2aWNlPW4sdGhpcy5fb3B0aW9uc1NlcnZpY2U9byx0aGlzLl9yZW5kZXJTZXJ2aWNlPWgsdGhpcy5fY29yZUJyb3dzZXJTZXJ2aWNlPWQsdGhpcy5fZHJhZ1Njcm9sbEFtb3VudD0wLHRoaXMuX2VuYWJsZWQ9ITAsdGhpcy5fd29ya0NlbGw9bmV3IHUuQ2VsbERhdGEsdGhpcy5fbW91c2VEb3duVGltZVN0YW1wPTAsdGhpcy5fb2xkSGFzU2VsZWN0aW9uPSExLHRoaXMuX29sZFNlbGVjdGlvblN0YXJ0PXZvaWQgMCx0aGlzLl9vbGRTZWxlY3Rpb25FbmQ9dm9pZCAwLHRoaXMuX29uTGludXhNb3VzZVNlbGVjdGlvbj10aGlzLnJlZ2lzdGVyKG5ldyBjLkV2ZW50RW1pdHRlciksdGhpcy5vbkxpbnV4TW91c2VTZWxlY3Rpb249dGhpcy5fb25MaW51eE1vdXNlU2VsZWN0aW9uLmV2ZW50LHRoaXMuX29uUmVkcmF3UmVxdWVzdD10aGlzLnJlZ2lzdGVyKG5ldyBjLkV2ZW50RW1pdHRlciksdGhpcy5vblJlcXVlc3RSZWRyYXc9dGhpcy5fb25SZWRyYXdSZXF1ZXN0LmV2ZW50LHRoaXMuX29uU2VsZWN0aW9uQ2hhbmdlPXRoaXMucmVnaXN0ZXIobmV3IGMuRXZlbnRFbWl0dGVyKSx0aGlzLm9uU2VsZWN0aW9uQ2hhbmdlPXRoaXMuX29uU2VsZWN0aW9uQ2hhbmdlLmV2ZW50LHRoaXMuX29uUmVxdWVzdFNjcm9sbExpbmVzPXRoaXMucmVnaXN0ZXIobmV3IGMuRXZlbnRFbWl0dGVyKSx0aGlzLm9uUmVxdWVzdFNjcm9sbExpbmVzPXRoaXMuX29uUmVxdWVzdFNjcm9sbExpbmVzLmV2ZW50LHRoaXMuX21vdXNlTW92ZUxpc3RlbmVyPWU9PnRoaXMuX2hhbmRsZU1vdXNlTW92ZShlKSx0aGlzLl9tb3VzZVVwTGlzdGVuZXI9ZT0+dGhpcy5faGFuZGxlTW91c2VVcChlKSx0aGlzLl9jb3JlU2VydmljZS5vblVzZXJJbnB1dCgoKCk9Pnt0aGlzLmhhc1NlbGVjdGlvbiYmdGhpcy5jbGVhclNlbGVjdGlvbigpfSkpLHRoaXMuX3RyaW1MaXN0ZW5lcj10aGlzLl9idWZmZXJTZXJ2aWNlLmJ1ZmZlci5saW5lcy5vblRyaW0oKGU9PnRoaXMuX2hhbmRsZVRyaW0oZSkpKSx0aGlzLnJlZ2lzdGVyKHRoaXMuX2J1ZmZlclNlcnZpY2UuYnVmZmVycy5vbkJ1ZmZlckFjdGl2YXRlKChlPT50aGlzLl9oYW5kbGVCdWZmZXJBY3RpdmF0ZShlKSkpKSx0aGlzLmVuYWJsZSgpLHRoaXMuX21vZGVsPW5ldyBhLlNlbGVjdGlvbk1vZGVsKHRoaXMuX2J1ZmZlclNlcnZpY2UpLHRoaXMuX2FjdGl2ZVNlbGVjdGlvbk1vZGU9MCx0aGlzLnJlZ2lzdGVyKCgwLGwudG9EaXNwb3NhYmxlKSgoKCk9Pnt0aGlzLl9yZW1vdmVNb3VzZURvd25MaXN0ZW5lcnMoKX0pKSl9cmVzZXQoKXt0aGlzLmNsZWFyU2VsZWN0aW9uKCl9ZGlzYWJsZSgpe3RoaXMuY2xlYXJTZWxlY3Rpb24oKSx0aGlzLl9lbmFibGVkPSExfWVuYWJsZSgpe3RoaXMuX2VuYWJsZWQ9ITB9Z2V0IHNlbGVjdGlvblN0YXJ0KCl7cmV0dXJuIHRoaXMuX21vZGVsLmZpbmFsU2VsZWN0aW9uU3RhcnR9Z2V0IHNlbGVjdGlvbkVuZCgpe3JldHVybiB0aGlzLl9tb2RlbC5maW5hbFNlbGVjdGlvbkVuZH1nZXQgaGFzU2VsZWN0aW9uKCl7Y29uc3QgZT10aGlzLl9tb2RlbC5maW5hbFNlbGVjdGlvblN0YXJ0LHQ9dGhpcy5fbW9kZWwuZmluYWxTZWxlY3Rpb25FbmQ7cmV0dXJuISghZXx8IXR8fGVbMF09PT10WzBdJiZlWzFdPT09dFsxXSl9Z2V0IHNlbGVjdGlvblRleHQoKXtjb25zdCBlPXRoaXMuX21vZGVsLmZpbmFsU2VsZWN0aW9uU3RhcnQsdD10aGlzLl9tb2RlbC5maW5hbFNlbGVjdGlvbkVuZDtpZighZXx8IXQpcmV0dXJuXCJcIjtjb25zdCBpPXRoaXMuX2J1ZmZlclNlcnZpY2UuYnVmZmVyLHM9W107aWYoMz09PXRoaXMuX2FjdGl2ZVNlbGVjdGlvbk1vZGUpe2lmKGVbMF09PT10WzBdKXJldHVyblwiXCI7Y29uc3Qgcj1lWzBdPHRbMF0/ZVswXTp0WzBdLG49ZVswXTx0WzBdP3RbMF06ZVswXTtmb3IobGV0IG89ZVsxXTtvPD10WzFdO28rKyl7Y29uc3QgZT1pLnRyYW5zbGF0ZUJ1ZmZlckxpbmVUb1N0cmluZyhvLCEwLHIsbik7cy5wdXNoKGUpfX1lbHNle2NvbnN0IHI9ZVsxXT09PXRbMV0/dFswXTp2b2lkIDA7cy5wdXNoKGkudHJhbnNsYXRlQnVmZmVyTGluZVRvU3RyaW5nKGVbMV0sITAsZVswXSxyKSk7Zm9yKGxldCByPWVbMV0rMTtyPD10WzFdLTE7cisrKXtjb25zdCBlPWkubGluZXMuZ2V0KHIpLHQ9aS50cmFuc2xhdGVCdWZmZXJMaW5lVG9TdHJpbmcociwhMCk7KG51bGw9PWU/dm9pZCAwOmUuaXNXcmFwcGVkKT9zW3MubGVuZ3RoLTFdKz10OnMucHVzaCh0KX1pZihlWzFdIT09dFsxXSl7Y29uc3QgZT1pLmxpbmVzLmdldCh0WzFdKSxyPWkudHJhbnNsYXRlQnVmZmVyTGluZVRvU3RyaW5nKHRbMV0sITAsMCx0WzBdKTtlJiZlLmlzV3JhcHBlZD9zW3MubGVuZ3RoLTFdKz1yOnMucHVzaChyKX19cmV0dXJuIHMubWFwKChlPT5lLnJlcGxhY2UocCxcIiBcIikpKS5qb2luKGQuaXNXaW5kb3dzP1wiXFxyXFxuXCI6XCJcXG5cIil9Y2xlYXJTZWxlY3Rpb24oKXt0aGlzLl9tb2RlbC5jbGVhclNlbGVjdGlvbigpLHRoaXMuX3JlbW92ZU1vdXNlRG93bkxpc3RlbmVycygpLHRoaXMucmVmcmVzaCgpLHRoaXMuX29uU2VsZWN0aW9uQ2hhbmdlLmZpcmUoKX1yZWZyZXNoKGUpe3RoaXMuX3JlZnJlc2hBbmltYXRpb25GcmFtZXx8KHRoaXMuX3JlZnJlc2hBbmltYXRpb25GcmFtZT10aGlzLl9jb3JlQnJvd3NlclNlcnZpY2Uud2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSgoKCk9PnRoaXMuX3JlZnJlc2goKSkpKSxkLmlzTGludXgmJmUmJnRoaXMuc2VsZWN0aW9uVGV4dC5sZW5ndGgmJnRoaXMuX29uTGludXhNb3VzZVNlbGVjdGlvbi5maXJlKHRoaXMuc2VsZWN0aW9uVGV4dCl9X3JlZnJlc2goKXt0aGlzLl9yZWZyZXNoQW5pbWF0aW9uRnJhbWU9dm9pZCAwLHRoaXMuX29uUmVkcmF3UmVxdWVzdC5maXJlKHtzdGFydDp0aGlzLl9tb2RlbC5maW5hbFNlbGVjdGlvblN0YXJ0LGVuZDp0aGlzLl9tb2RlbC5maW5hbFNlbGVjdGlvbkVuZCxjb2x1bW5TZWxlY3RNb2RlOjM9PT10aGlzLl9hY3RpdmVTZWxlY3Rpb25Nb2RlfSl9X2lzQ2xpY2tJblNlbGVjdGlvbihlKXtjb25zdCB0PXRoaXMuX2dldE1vdXNlQnVmZmVyQ29vcmRzKGUpLGk9dGhpcy5fbW9kZWwuZmluYWxTZWxlY3Rpb25TdGFydCxzPXRoaXMuX21vZGVsLmZpbmFsU2VsZWN0aW9uRW5kO3JldHVybiEhKGkmJnMmJnQpJiZ0aGlzLl9hcmVDb29yZHNJblNlbGVjdGlvbih0LGkscyl9aXNDZWxsSW5TZWxlY3Rpb24oZSx0KXtjb25zdCBpPXRoaXMuX21vZGVsLmZpbmFsU2VsZWN0aW9uU3RhcnQscz10aGlzLl9tb2RlbC5maW5hbFNlbGVjdGlvbkVuZDtyZXR1cm4hKCFpfHwhcykmJnRoaXMuX2FyZUNvb3Jkc0luU2VsZWN0aW9uKFtlLHRdLGkscyl9X2FyZUNvb3Jkc0luU2VsZWN0aW9uKGUsdCxpKXtyZXR1cm4gZVsxXT50WzFdJiZlWzFdPGlbMV18fHRbMV09PT1pWzFdJiZlWzFdPT09dFsxXSYmZVswXT49dFswXSYmZVswXTxpWzBdfHx0WzFdPGlbMV0mJmVbMV09PT1pWzFdJiZlWzBdPGlbMF18fHRbMV08aVsxXSYmZVsxXT09PXRbMV0mJmVbMF0+PXRbMF19X3NlbGVjdFdvcmRBdEN1cnNvcihlLHQpe3ZhciBpLHM7Y29uc3Qgcj1udWxsPT09KHM9bnVsbD09PShpPXRoaXMuX2xpbmtpZmllci5jdXJyZW50TGluayl8fHZvaWQgMD09PWk/dm9pZCAwOmkubGluayl8fHZvaWQgMD09PXM/dm9pZCAwOnMucmFuZ2U7aWYocilyZXR1cm4gdGhpcy5fbW9kZWwuc2VsZWN0aW9uU3RhcnQ9W3Iuc3RhcnQueC0xLHIuc3RhcnQueS0xXSx0aGlzLl9tb2RlbC5zZWxlY3Rpb25TdGFydExlbmd0aD0oMCxfLmdldFJhbmdlTGVuZ3RoKShyLHRoaXMuX2J1ZmZlclNlcnZpY2UuY29scyksdGhpcy5fbW9kZWwuc2VsZWN0aW9uRW5kPXZvaWQgMCwhMDtjb25zdCBuPXRoaXMuX2dldE1vdXNlQnVmZmVyQ29vcmRzKGUpO3JldHVybiEhbiYmKHRoaXMuX3NlbGVjdFdvcmRBdChuLHQpLHRoaXMuX21vZGVsLnNlbGVjdGlvbkVuZD12b2lkIDAsITApfXNlbGVjdEFsbCgpe3RoaXMuX21vZGVsLmlzU2VsZWN0QWxsQWN0aXZlPSEwLHRoaXMucmVmcmVzaCgpLHRoaXMuX29uU2VsZWN0aW9uQ2hhbmdlLmZpcmUoKX1zZWxlY3RMaW5lcyhlLHQpe3RoaXMuX21vZGVsLmNsZWFyU2VsZWN0aW9uKCksZT1NYXRoLm1heChlLDApLHQ9TWF0aC5taW4odCx0aGlzLl9idWZmZXJTZXJ2aWNlLmJ1ZmZlci5saW5lcy5sZW5ndGgtMSksdGhpcy5fbW9kZWwuc2VsZWN0aW9uU3RhcnQ9WzAsZV0sdGhpcy5fbW9kZWwuc2VsZWN0aW9uRW5kPVt0aGlzLl9idWZmZXJTZXJ2aWNlLmNvbHMsdF0sdGhpcy5yZWZyZXNoKCksdGhpcy5fb25TZWxlY3Rpb25DaGFuZ2UuZmlyZSgpfV9oYW5kbGVUcmltKGUpe3RoaXMuX21vZGVsLmhhbmRsZVRyaW0oZSkmJnRoaXMucmVmcmVzaCgpfV9nZXRNb3VzZUJ1ZmZlckNvb3JkcyhlKXtjb25zdCB0PXRoaXMuX21vdXNlU2VydmljZS5nZXRDb29yZHMoZSx0aGlzLl9zY3JlZW5FbGVtZW50LHRoaXMuX2J1ZmZlclNlcnZpY2UuY29scyx0aGlzLl9idWZmZXJTZXJ2aWNlLnJvd3MsITApO2lmKHQpcmV0dXJuIHRbMF0tLSx0WzFdLS0sdFsxXSs9dGhpcy5fYnVmZmVyU2VydmljZS5idWZmZXIueWRpc3AsdH1fZ2V0TW91c2VFdmVudFNjcm9sbEFtb3VudChlKXtsZXQgdD0oMCxuLmdldENvb3Jkc1JlbGF0aXZlVG9FbGVtZW50KSh0aGlzLl9jb3JlQnJvd3NlclNlcnZpY2Uud2luZG93LGUsdGhpcy5fc2NyZWVuRWxlbWVudClbMV07Y29uc3QgaT10aGlzLl9yZW5kZXJTZXJ2aWNlLmRpbWVuc2lvbnMuY3NzLmNhbnZhcy5oZWlnaHQ7cmV0dXJuIHQ+PTAmJnQ8PWk/MDoodD5pJiYodC09aSksdD1NYXRoLm1pbihNYXRoLm1heCh0LC01MCksNTApLHQvPTUwLHQvTWF0aC5hYnModCkrTWF0aC5yb3VuZCgxNCp0KSl9c2hvdWxkRm9yY2VTZWxlY3Rpb24oZSl7cmV0dXJuIGQuaXNNYWM/ZS5hbHRLZXkmJnRoaXMuX29wdGlvbnNTZXJ2aWNlLnJhd09wdGlvbnMubWFjT3B0aW9uQ2xpY2tGb3JjZXNTZWxlY3Rpb246ZS5zaGlmdEtleX1oYW5kbGVNb3VzZURvd24oZSl7aWYodGhpcy5fbW91c2VEb3duVGltZVN0YW1wPWUudGltZVN0YW1wLCgyIT09ZS5idXR0b258fCF0aGlzLmhhc1NlbGVjdGlvbikmJjA9PT1lLmJ1dHRvbil7aWYoIXRoaXMuX2VuYWJsZWQpe2lmKCF0aGlzLnNob3VsZEZvcmNlU2VsZWN0aW9uKGUpKXJldHVybjtlLnN0b3BQcm9wYWdhdGlvbigpfWUucHJldmVudERlZmF1bHQoKSx0aGlzLl9kcmFnU2Nyb2xsQW1vdW50PTAsdGhpcy5fZW5hYmxlZCYmZS5zaGlmdEtleT90aGlzLl9oYW5kbGVJbmNyZW1lbnRhbENsaWNrKGUpOjE9PT1lLmRldGFpbD90aGlzLl9oYW5kbGVTaW5nbGVDbGljayhlKToyPT09ZS5kZXRhaWw/dGhpcy5faGFuZGxlRG91YmxlQ2xpY2soZSk6Mz09PWUuZGV0YWlsJiZ0aGlzLl9oYW5kbGVUcmlwbGVDbGljayhlKSx0aGlzLl9hZGRNb3VzZURvd25MaXN0ZW5lcnMoKSx0aGlzLnJlZnJlc2goITApfX1fYWRkTW91c2VEb3duTGlzdGVuZXJzKCl7dGhpcy5fc2NyZWVuRWxlbWVudC5vd25lckRvY3VtZW50JiYodGhpcy5fc2NyZWVuRWxlbWVudC5vd25lckRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZW1vdmVcIix0aGlzLl9tb3VzZU1vdmVMaXN0ZW5lciksdGhpcy5fc2NyZWVuRWxlbWVudC5vd25lckRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZXVwXCIsdGhpcy5fbW91c2VVcExpc3RlbmVyKSksdGhpcy5fZHJhZ1Njcm9sbEludGVydmFsVGltZXI9dGhpcy5fY29yZUJyb3dzZXJTZXJ2aWNlLndpbmRvdy5zZXRJbnRlcnZhbCgoKCk9PnRoaXMuX2RyYWdTY3JvbGwoKSksNTApfV9yZW1vdmVNb3VzZURvd25MaXN0ZW5lcnMoKXt0aGlzLl9zY3JlZW5FbGVtZW50Lm93bmVyRG9jdW1lbnQmJih0aGlzLl9zY3JlZW5FbGVtZW50Lm93bmVyRG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1vdXNlbW92ZVwiLHRoaXMuX21vdXNlTW92ZUxpc3RlbmVyKSx0aGlzLl9zY3JlZW5FbGVtZW50Lm93bmVyRG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1vdXNldXBcIix0aGlzLl9tb3VzZVVwTGlzdGVuZXIpKSx0aGlzLl9jb3JlQnJvd3NlclNlcnZpY2Uud2luZG93LmNsZWFySW50ZXJ2YWwodGhpcy5fZHJhZ1Njcm9sbEludGVydmFsVGltZXIpLHRoaXMuX2RyYWdTY3JvbGxJbnRlcnZhbFRpbWVyPXZvaWQgMH1faGFuZGxlSW5jcmVtZW50YWxDbGljayhlKXt0aGlzLl9tb2RlbC5zZWxlY3Rpb25TdGFydCYmKHRoaXMuX21vZGVsLnNlbGVjdGlvbkVuZD10aGlzLl9nZXRNb3VzZUJ1ZmZlckNvb3JkcyhlKSl9X2hhbmRsZVNpbmdsZUNsaWNrKGUpe2lmKHRoaXMuX21vZGVsLnNlbGVjdGlvblN0YXJ0TGVuZ3RoPTAsdGhpcy5fbW9kZWwuaXNTZWxlY3RBbGxBY3RpdmU9ITEsdGhpcy5fYWN0aXZlU2VsZWN0aW9uTW9kZT10aGlzLnNob3VsZENvbHVtblNlbGVjdChlKT8zOjAsdGhpcy5fbW9kZWwuc2VsZWN0aW9uU3RhcnQ9dGhpcy5fZ2V0TW91c2VCdWZmZXJDb29yZHMoZSksIXRoaXMuX21vZGVsLnNlbGVjdGlvblN0YXJ0KXJldHVybjt0aGlzLl9tb2RlbC5zZWxlY3Rpb25FbmQ9dm9pZCAwO2NvbnN0IHQ9dGhpcy5fYnVmZmVyU2VydmljZS5idWZmZXIubGluZXMuZ2V0KHRoaXMuX21vZGVsLnNlbGVjdGlvblN0YXJ0WzFdKTt0JiZ0Lmxlbmd0aCE9PXRoaXMuX21vZGVsLnNlbGVjdGlvblN0YXJ0WzBdJiYwPT09dC5oYXNXaWR0aCh0aGlzLl9tb2RlbC5zZWxlY3Rpb25TdGFydFswXSkmJnRoaXMuX21vZGVsLnNlbGVjdGlvblN0YXJ0WzBdKyt9X2hhbmRsZURvdWJsZUNsaWNrKGUpe3RoaXMuX3NlbGVjdFdvcmRBdEN1cnNvcihlLCEwKSYmKHRoaXMuX2FjdGl2ZVNlbGVjdGlvbk1vZGU9MSl9X2hhbmRsZVRyaXBsZUNsaWNrKGUpe2NvbnN0IHQ9dGhpcy5fZ2V0TW91c2VCdWZmZXJDb29yZHMoZSk7dCYmKHRoaXMuX2FjdGl2ZVNlbGVjdGlvbk1vZGU9Mix0aGlzLl9zZWxlY3RMaW5lQXQodFsxXSkpfXNob3VsZENvbHVtblNlbGVjdChlKXtyZXR1cm4gZS5hbHRLZXkmJiEoZC5pc01hYyYmdGhpcy5fb3B0aW9uc1NlcnZpY2UucmF3T3B0aW9ucy5tYWNPcHRpb25DbGlja0ZvcmNlc1NlbGVjdGlvbil9X2hhbmRsZU1vdXNlTW92ZShlKXtpZihlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpLCF0aGlzLl9tb2RlbC5zZWxlY3Rpb25TdGFydClyZXR1cm47Y29uc3QgdD10aGlzLl9tb2RlbC5zZWxlY3Rpb25FbmQ/W3RoaXMuX21vZGVsLnNlbGVjdGlvbkVuZFswXSx0aGlzLl9tb2RlbC5zZWxlY3Rpb25FbmRbMV1dOm51bGw7aWYodGhpcy5fbW9kZWwuc2VsZWN0aW9uRW5kPXRoaXMuX2dldE1vdXNlQnVmZmVyQ29vcmRzKGUpLCF0aGlzLl9tb2RlbC5zZWxlY3Rpb25FbmQpcmV0dXJuIHZvaWQgdGhpcy5yZWZyZXNoKCEwKTsyPT09dGhpcy5fYWN0aXZlU2VsZWN0aW9uTW9kZT90aGlzLl9tb2RlbC5zZWxlY3Rpb25FbmRbMV08dGhpcy5fbW9kZWwuc2VsZWN0aW9uU3RhcnRbMV0/dGhpcy5fbW9kZWwuc2VsZWN0aW9uRW5kWzBdPTA6dGhpcy5fbW9kZWwuc2VsZWN0aW9uRW5kWzBdPXRoaXMuX2J1ZmZlclNlcnZpY2UuY29sczoxPT09dGhpcy5fYWN0aXZlU2VsZWN0aW9uTW9kZSYmdGhpcy5fc2VsZWN0VG9Xb3JkQXQodGhpcy5fbW9kZWwuc2VsZWN0aW9uRW5kKSx0aGlzLl9kcmFnU2Nyb2xsQW1vdW50PXRoaXMuX2dldE1vdXNlRXZlbnRTY3JvbGxBbW91bnQoZSksMyE9PXRoaXMuX2FjdGl2ZVNlbGVjdGlvbk1vZGUmJih0aGlzLl9kcmFnU2Nyb2xsQW1vdW50PjA/dGhpcy5fbW9kZWwuc2VsZWN0aW9uRW5kWzBdPXRoaXMuX2J1ZmZlclNlcnZpY2UuY29sczp0aGlzLl9kcmFnU2Nyb2xsQW1vdW50PDAmJih0aGlzLl9tb2RlbC5zZWxlY3Rpb25FbmRbMF09MCkpO2NvbnN0IGk9dGhpcy5fYnVmZmVyU2VydmljZS5idWZmZXI7aWYodGhpcy5fbW9kZWwuc2VsZWN0aW9uRW5kWzFdPGkubGluZXMubGVuZ3RoKXtjb25zdCBlPWkubGluZXMuZ2V0KHRoaXMuX21vZGVsLnNlbGVjdGlvbkVuZFsxXSk7ZSYmMD09PWUuaGFzV2lkdGgodGhpcy5fbW9kZWwuc2VsZWN0aW9uRW5kWzBdKSYmdGhpcy5fbW9kZWwuc2VsZWN0aW9uRW5kWzBdKyt9dCYmdFswXT09PXRoaXMuX21vZGVsLnNlbGVjdGlvbkVuZFswXSYmdFsxXT09PXRoaXMuX21vZGVsLnNlbGVjdGlvbkVuZFsxXXx8dGhpcy5yZWZyZXNoKCEwKX1fZHJhZ1Njcm9sbCgpe2lmKHRoaXMuX21vZGVsLnNlbGVjdGlvbkVuZCYmdGhpcy5fbW9kZWwuc2VsZWN0aW9uU3RhcnQmJnRoaXMuX2RyYWdTY3JvbGxBbW91bnQpe3RoaXMuX29uUmVxdWVzdFNjcm9sbExpbmVzLmZpcmUoe2Ftb3VudDp0aGlzLl9kcmFnU2Nyb2xsQW1vdW50LHN1cHByZXNzU2Nyb2xsRXZlbnQ6ITF9KTtjb25zdCBlPXRoaXMuX2J1ZmZlclNlcnZpY2UuYnVmZmVyO3RoaXMuX2RyYWdTY3JvbGxBbW91bnQ+MD8oMyE9PXRoaXMuX2FjdGl2ZVNlbGVjdGlvbk1vZGUmJih0aGlzLl9tb2RlbC5zZWxlY3Rpb25FbmRbMF09dGhpcy5fYnVmZmVyU2VydmljZS5jb2xzKSx0aGlzLl9tb2RlbC5zZWxlY3Rpb25FbmRbMV09TWF0aC5taW4oZS55ZGlzcCt0aGlzLl9idWZmZXJTZXJ2aWNlLnJvd3MsZS5saW5lcy5sZW5ndGgtMSkpOigzIT09dGhpcy5fYWN0aXZlU2VsZWN0aW9uTW9kZSYmKHRoaXMuX21vZGVsLnNlbGVjdGlvbkVuZFswXT0wKSx0aGlzLl9tb2RlbC5zZWxlY3Rpb25FbmRbMV09ZS55ZGlzcCksdGhpcy5yZWZyZXNoKCl9fV9oYW5kbGVNb3VzZVVwKGUpe2NvbnN0IHQ9ZS50aW1lU3RhbXAtdGhpcy5fbW91c2VEb3duVGltZVN0YW1wO2lmKHRoaXMuX3JlbW92ZU1vdXNlRG93bkxpc3RlbmVycygpLHRoaXMuc2VsZWN0aW9uVGV4dC5sZW5ndGg8PTEmJnQ8NTAwJiZlLmFsdEtleSYmdGhpcy5fb3B0aW9uc1NlcnZpY2UucmF3T3B0aW9ucy5hbHRDbGlja01vdmVzQ3Vyc29yKXtpZih0aGlzLl9idWZmZXJTZXJ2aWNlLmJ1ZmZlci55YmFzZT09PXRoaXMuX2J1ZmZlclNlcnZpY2UuYnVmZmVyLnlkaXNwKXtjb25zdCB0PXRoaXMuX21vdXNlU2VydmljZS5nZXRDb29yZHMoZSx0aGlzLl9lbGVtZW50LHRoaXMuX2J1ZmZlclNlcnZpY2UuY29scyx0aGlzLl9idWZmZXJTZXJ2aWNlLnJvd3MsITEpO2lmKHQmJnZvaWQgMCE9PXRbMF0mJnZvaWQgMCE9PXRbMV0pe2NvbnN0IGU9KDAsby5tb3ZlVG9DZWxsU2VxdWVuY2UpKHRbMF0tMSx0WzFdLTEsdGhpcy5fYnVmZmVyU2VydmljZSx0aGlzLl9jb3JlU2VydmljZS5kZWNQcml2YXRlTW9kZXMuYXBwbGljYXRpb25DdXJzb3JLZXlzKTt0aGlzLl9jb3JlU2VydmljZS50cmlnZ2VyRGF0YUV2ZW50KGUsITApfX19ZWxzZSB0aGlzLl9maXJlRXZlbnRJZlNlbGVjdGlvbkNoYW5nZWQoKX1fZmlyZUV2ZW50SWZTZWxlY3Rpb25DaGFuZ2VkKCl7Y29uc3QgZT10aGlzLl9tb2RlbC5maW5hbFNlbGVjdGlvblN0YXJ0LHQ9dGhpcy5fbW9kZWwuZmluYWxTZWxlY3Rpb25FbmQsaT0hKCFlfHwhdHx8ZVswXT09PXRbMF0mJmVbMV09PT10WzFdKTtpP2UmJnQmJih0aGlzLl9vbGRTZWxlY3Rpb25TdGFydCYmdGhpcy5fb2xkU2VsZWN0aW9uRW5kJiZlWzBdPT09dGhpcy5fb2xkU2VsZWN0aW9uU3RhcnRbMF0mJmVbMV09PT10aGlzLl9vbGRTZWxlY3Rpb25TdGFydFsxXSYmdFswXT09PXRoaXMuX29sZFNlbGVjdGlvbkVuZFswXSYmdFsxXT09PXRoaXMuX29sZFNlbGVjdGlvbkVuZFsxXXx8dGhpcy5fZmlyZU9uU2VsZWN0aW9uQ2hhbmdlKGUsdCxpKSk6dGhpcy5fb2xkSGFzU2VsZWN0aW9uJiZ0aGlzLl9maXJlT25TZWxlY3Rpb25DaGFuZ2UoZSx0LGkpfV9maXJlT25TZWxlY3Rpb25DaGFuZ2UoZSx0LGkpe3RoaXMuX29sZFNlbGVjdGlvblN0YXJ0PWUsdGhpcy5fb2xkU2VsZWN0aW9uRW5kPXQsdGhpcy5fb2xkSGFzU2VsZWN0aW9uPWksdGhpcy5fb25TZWxlY3Rpb25DaGFuZ2UuZmlyZSgpfV9oYW5kbGVCdWZmZXJBY3RpdmF0ZShlKXt0aGlzLmNsZWFyU2VsZWN0aW9uKCksdGhpcy5fdHJpbUxpc3RlbmVyLmRpc3Bvc2UoKSx0aGlzLl90cmltTGlzdGVuZXI9ZS5hY3RpdmVCdWZmZXIubGluZXMub25UcmltKChlPT50aGlzLl9oYW5kbGVUcmltKGUpKSl9X2NvbnZlcnRWaWV3cG9ydENvbFRvQ2hhcmFjdGVySW5kZXgoZSx0KXtsZXQgaT10O2ZvcihsZXQgcz0wO3Q+PXM7cysrKXtjb25zdCByPWUubG9hZENlbGwocyx0aGlzLl93b3JrQ2VsbCkuZ2V0Q2hhcnMoKS5sZW5ndGg7MD09PXRoaXMuX3dvcmtDZWxsLmdldFdpZHRoKCk/aS0tOnI+MSYmdCE9PXMmJihpKz1yLTEpfXJldHVybiBpfXNldFNlbGVjdGlvbihlLHQsaSl7dGhpcy5fbW9kZWwuY2xlYXJTZWxlY3Rpb24oKSx0aGlzLl9yZW1vdmVNb3VzZURvd25MaXN0ZW5lcnMoKSx0aGlzLl9tb2RlbC5zZWxlY3Rpb25TdGFydD1bZSx0XSx0aGlzLl9tb2RlbC5zZWxlY3Rpb25TdGFydExlbmd0aD1pLHRoaXMucmVmcmVzaCgpLHRoaXMuX2ZpcmVFdmVudElmU2VsZWN0aW9uQ2hhbmdlZCgpfXJpZ2h0Q2xpY2tTZWxlY3QoZSl7dGhpcy5faXNDbGlja0luU2VsZWN0aW9uKGUpfHwodGhpcy5fc2VsZWN0V29yZEF0Q3Vyc29yKGUsITEpJiZ0aGlzLnJlZnJlc2goITApLHRoaXMuX2ZpcmVFdmVudElmU2VsZWN0aW9uQ2hhbmdlZCgpKX1fZ2V0V29yZEF0KGUsdCxpPSEwLHM9ITApe2lmKGVbMF0+PXRoaXMuX2J1ZmZlclNlcnZpY2UuY29scylyZXR1cm47Y29uc3Qgcj10aGlzLl9idWZmZXJTZXJ2aWNlLmJ1ZmZlcixuPXIubGluZXMuZ2V0KGVbMV0pO2lmKCFuKXJldHVybjtjb25zdCBvPXIudHJhbnNsYXRlQnVmZmVyTGluZVRvU3RyaW5nKGVbMV0sITEpO2xldCBhPXRoaXMuX2NvbnZlcnRWaWV3cG9ydENvbFRvQ2hhcmFjdGVySW5kZXgobixlWzBdKSxoPWE7Y29uc3QgYz1lWzBdLWE7bGV0IGw9MCxkPTAsXz0wLHU9MDtpZihcIiBcIj09PW8uY2hhckF0KGEpKXtmb3IoO2E+MCYmXCIgXCI9PT1vLmNoYXJBdChhLTEpOylhLS07Zm9yKDtoPG8ubGVuZ3RoJiZcIiBcIj09PW8uY2hhckF0KGgrMSk7KWgrK31lbHNle2xldCB0PWVbMF0saT1lWzBdOzA9PT1uLmdldFdpZHRoKHQpJiYobCsrLHQtLSksMj09PW4uZ2V0V2lkdGgoaSkmJihkKyssaSsrKTtjb25zdCBzPW4uZ2V0U3RyaW5nKGkpLmxlbmd0aDtmb3Iocz4xJiYodSs9cy0xLGgrPXMtMSk7dD4wJiZhPjAmJiF0aGlzLl9pc0NoYXJXb3JkU2VwYXJhdG9yKG4ubG9hZENlbGwodC0xLHRoaXMuX3dvcmtDZWxsKSk7KXtuLmxvYWRDZWxsKHQtMSx0aGlzLl93b3JrQ2VsbCk7Y29uc3QgZT10aGlzLl93b3JrQ2VsbC5nZXRDaGFycygpLmxlbmd0aDswPT09dGhpcy5fd29ya0NlbGwuZ2V0V2lkdGgoKT8obCsrLHQtLSk6ZT4xJiYoXys9ZS0xLGEtPWUtMSksYS0tLHQtLX1mb3IoO2k8bi5sZW5ndGgmJmgrMTxvLmxlbmd0aCYmIXRoaXMuX2lzQ2hhcldvcmRTZXBhcmF0b3Iobi5sb2FkQ2VsbChpKzEsdGhpcy5fd29ya0NlbGwpKTspe24ubG9hZENlbGwoaSsxLHRoaXMuX3dvcmtDZWxsKTtjb25zdCBlPXRoaXMuX3dvcmtDZWxsLmdldENoYXJzKCkubGVuZ3RoOzI9PT10aGlzLl93b3JrQ2VsbC5nZXRXaWR0aCgpPyhkKyssaSsrKTplPjEmJih1Kz1lLTEsaCs9ZS0xKSxoKyssaSsrfX1oKys7bGV0IGY9YStjLWwrXyx2PU1hdGgubWluKHRoaXMuX2J1ZmZlclNlcnZpY2UuY29scyxoLWErbCtkLV8tdSk7aWYodHx8XCJcIiE9PW8uc2xpY2UoYSxoKS50cmltKCkpe2lmKGkmJjA9PT1mJiYzMiE9PW4uZ2V0Q29kZVBvaW50KDApKXtjb25zdCB0PXIubGluZXMuZ2V0KGVbMV0tMSk7aWYodCYmbi5pc1dyYXBwZWQmJjMyIT09dC5nZXRDb2RlUG9pbnQodGhpcy5fYnVmZmVyU2VydmljZS5jb2xzLTEpKXtjb25zdCB0PXRoaXMuX2dldFdvcmRBdChbdGhpcy5fYnVmZmVyU2VydmljZS5jb2xzLTEsZVsxXS0xXSwhMSwhMCwhMSk7aWYodCl7Y29uc3QgZT10aGlzLl9idWZmZXJTZXJ2aWNlLmNvbHMtdC5zdGFydDtmLT1lLHYrPWV9fX1pZihzJiZmK3Y9PT10aGlzLl9idWZmZXJTZXJ2aWNlLmNvbHMmJjMyIT09bi5nZXRDb2RlUG9pbnQodGhpcy5fYnVmZmVyU2VydmljZS5jb2xzLTEpKXtjb25zdCB0PXIubGluZXMuZ2V0KGVbMV0rMSk7aWYoKG51bGw9PXQ/dm9pZCAwOnQuaXNXcmFwcGVkKSYmMzIhPT10LmdldENvZGVQb2ludCgwKSl7Y29uc3QgdD10aGlzLl9nZXRXb3JkQXQoWzAsZVsxXSsxXSwhMSwhMSwhMCk7dCYmKHYrPXQubGVuZ3RoKX19cmV0dXJue3N0YXJ0OmYsbGVuZ3RoOnZ9fX1fc2VsZWN0V29yZEF0KGUsdCl7Y29uc3QgaT10aGlzLl9nZXRXb3JkQXQoZSx0KTtpZihpKXtmb3IoO2kuc3RhcnQ8MDspaS5zdGFydCs9dGhpcy5fYnVmZmVyU2VydmljZS5jb2xzLGVbMV0tLTt0aGlzLl9tb2RlbC5zZWxlY3Rpb25TdGFydD1baS5zdGFydCxlWzFdXSx0aGlzLl9tb2RlbC5zZWxlY3Rpb25TdGFydExlbmd0aD1pLmxlbmd0aH19X3NlbGVjdFRvV29yZEF0KGUpe2NvbnN0IHQ9dGhpcy5fZ2V0V29yZEF0KGUsITApO2lmKHQpe2xldCBpPWVbMV07Zm9yKDt0LnN0YXJ0PDA7KXQuc3RhcnQrPXRoaXMuX2J1ZmZlclNlcnZpY2UuY29scyxpLS07aWYoIXRoaXMuX21vZGVsLmFyZVNlbGVjdGlvblZhbHVlc1JldmVyc2VkKCkpZm9yKDt0LnN0YXJ0K3QubGVuZ3RoPnRoaXMuX2J1ZmZlclNlcnZpY2UuY29sczspdC5sZW5ndGgtPXRoaXMuX2J1ZmZlclNlcnZpY2UuY29scyxpKys7dGhpcy5fbW9kZWwuc2VsZWN0aW9uRW5kPVt0aGlzLl9tb2RlbC5hcmVTZWxlY3Rpb25WYWx1ZXNSZXZlcnNlZCgpP3Quc3RhcnQ6dC5zdGFydCt0Lmxlbmd0aCxpXX19X2lzQ2hhcldvcmRTZXBhcmF0b3IoZSl7cmV0dXJuIDAhPT1lLmdldFdpZHRoKCkmJnRoaXMuX29wdGlvbnNTZXJ2aWNlLnJhd09wdGlvbnMud29yZFNlcGFyYXRvci5pbmRleE9mKGUuZ2V0Q2hhcnMoKSk+PTB9X3NlbGVjdExpbmVBdChlKXtjb25zdCB0PXRoaXMuX2J1ZmZlclNlcnZpY2UuYnVmZmVyLmdldFdyYXBwZWRSYW5nZUZvckxpbmUoZSksaT17c3RhcnQ6e3g6MCx5OnQuZmlyc3R9LGVuZDp7eDp0aGlzLl9idWZmZXJTZXJ2aWNlLmNvbHMtMSx5OnQubGFzdH19O3RoaXMuX21vZGVsLnNlbGVjdGlvblN0YXJ0PVswLHQuZmlyc3RdLHRoaXMuX21vZGVsLnNlbGVjdGlvbkVuZD12b2lkIDAsdGhpcy5fbW9kZWwuc2VsZWN0aW9uU3RhcnRMZW5ndGg9KDAsXy5nZXRSYW5nZUxlbmd0aCkoaSx0aGlzLl9idWZmZXJTZXJ2aWNlLmNvbHMpfX07dC5TZWxlY3Rpb25TZXJ2aWNlPWc9cyhbcigzLGYuSUJ1ZmZlclNlcnZpY2UpLHIoNCxmLklDb3JlU2VydmljZSkscig1LGguSU1vdXNlU2VydmljZSkscig2LGYuSU9wdGlvbnNTZXJ2aWNlKSxyKDcsaC5JUmVuZGVyU2VydmljZSkscig4LGguSUNvcmVCcm93c2VyU2VydmljZSldLGcpfSw0NzI1OihlLHQsaSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LklUaGVtZVNlcnZpY2U9dC5JQ2hhcmFjdGVySm9pbmVyU2VydmljZT10LklTZWxlY3Rpb25TZXJ2aWNlPXQuSVJlbmRlclNlcnZpY2U9dC5JTW91c2VTZXJ2aWNlPXQuSUNvcmVCcm93c2VyU2VydmljZT10LklDaGFyU2l6ZVNlcnZpY2U9dm9pZCAwO2NvbnN0IHM9aSg4MzQzKTt0LklDaGFyU2l6ZVNlcnZpY2U9KDAscy5jcmVhdGVEZWNvcmF0b3IpKFwiQ2hhclNpemVTZXJ2aWNlXCIpLHQuSUNvcmVCcm93c2VyU2VydmljZT0oMCxzLmNyZWF0ZURlY29yYXRvcikoXCJDb3JlQnJvd3NlclNlcnZpY2VcIiksdC5JTW91c2VTZXJ2aWNlPSgwLHMuY3JlYXRlRGVjb3JhdG9yKShcIk1vdXNlU2VydmljZVwiKSx0LklSZW5kZXJTZXJ2aWNlPSgwLHMuY3JlYXRlRGVjb3JhdG9yKShcIlJlbmRlclNlcnZpY2VcIiksdC5JU2VsZWN0aW9uU2VydmljZT0oMCxzLmNyZWF0ZURlY29yYXRvcikoXCJTZWxlY3Rpb25TZXJ2aWNlXCIpLHQuSUNoYXJhY3RlckpvaW5lclNlcnZpY2U9KDAscy5jcmVhdGVEZWNvcmF0b3IpKFwiQ2hhcmFjdGVySm9pbmVyU2VydmljZVwiKSx0LklUaGVtZVNlcnZpY2U9KDAscy5jcmVhdGVEZWNvcmF0b3IpKFwiVGhlbWVTZXJ2aWNlXCIpfSw2NzMxOmZ1bmN0aW9uKGUsdCxpKXt2YXIgcz10aGlzJiZ0aGlzLl9fZGVjb3JhdGV8fGZ1bmN0aW9uKGUsdCxpLHMpe3ZhciByLG49YXJndW1lbnRzLmxlbmd0aCxvPW48Mz90Om51bGw9PT1zP3M9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LGkpOnM7aWYoXCJvYmplY3RcIj09dHlwZW9mIFJlZmxlY3QmJlwiZnVuY3Rpb25cIj09dHlwZW9mIFJlZmxlY3QuZGVjb3JhdGUpbz1SZWZsZWN0LmRlY29yYXRlKGUsdCxpLHMpO2Vsc2UgZm9yKHZhciBhPWUubGVuZ3RoLTE7YT49MDthLS0pKHI9ZVthXSkmJihvPShuPDM/cihvKTpuPjM/cih0LGksbyk6cih0LGkpKXx8byk7cmV0dXJuIG4+MyYmbyYmT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsaSxvKSxvfSxyPXRoaXMmJnRoaXMuX19wYXJhbXx8ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZnVuY3Rpb24oaSxzKXt0KGkscyxlKX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuVGhlbWVTZXJ2aWNlPXQuREVGQVVMVF9BTlNJX0NPTE9SUz12b2lkIDA7Y29uc3Qgbj1pKDcyMzkpLG89aSg4MDU1KSxhPWkoODQ2MCksaD1pKDg0NCksYz1pKDI1ODUpLGw9by5jc3MudG9Db2xvcihcIiNmZmZmZmZcIiksZD1vLmNzcy50b0NvbG9yKFwiIzAwMDAwMFwiKSxfPW8uY3NzLnRvQ29sb3IoXCIjZmZmZmZmXCIpLHU9by5jc3MudG9Db2xvcihcIiMwMDAwMDBcIiksZj17Y3NzOlwicmdiYSgyNTUsIDI1NSwgMjU1LCAwLjMpXCIscmdiYTo0Mjk0OTY3MTE3fTt0LkRFRkFVTFRfQU5TSV9DT0xPUlM9T2JqZWN0LmZyZWV6ZSgoKCk9Pntjb25zdCBlPVtvLmNzcy50b0NvbG9yKFwiIzJlMzQzNlwiKSxvLmNzcy50b0NvbG9yKFwiI2NjMDAwMFwiKSxvLmNzcy50b0NvbG9yKFwiIzRlOWEwNlwiKSxvLmNzcy50b0NvbG9yKFwiI2M0YTAwMFwiKSxvLmNzcy50b0NvbG9yKFwiIzM0NjVhNFwiKSxvLmNzcy50b0NvbG9yKFwiIzc1NTA3YlwiKSxvLmNzcy50b0NvbG9yKFwiIzA2OTg5YVwiKSxvLmNzcy50b0NvbG9yKFwiI2QzZDdjZlwiKSxvLmNzcy50b0NvbG9yKFwiIzU1NTc1M1wiKSxvLmNzcy50b0NvbG9yKFwiI2VmMjkyOVwiKSxvLmNzcy50b0NvbG9yKFwiIzhhZTIzNFwiKSxvLmNzcy50b0NvbG9yKFwiI2ZjZTk0ZlwiKSxvLmNzcy50b0NvbG9yKFwiIzcyOWZjZlwiKSxvLmNzcy50b0NvbG9yKFwiI2FkN2ZhOFwiKSxvLmNzcy50b0NvbG9yKFwiIzM0ZTJlMlwiKSxvLmNzcy50b0NvbG9yKFwiI2VlZWVlY1wiKV0sdD1bMCw5NSwxMzUsMTc1LDIxNSwyNTVdO2ZvcihsZXQgaT0wO2k8MjE2O2krKyl7Y29uc3Qgcz10W2kvMzYlNnwwXSxyPXRbaS82JTZ8MF0sbj10W2klNl07ZS5wdXNoKHtjc3M6by5jaGFubmVscy50b0NzcyhzLHIsbikscmdiYTpvLmNoYW5uZWxzLnRvUmdiYShzLHIsbil9KX1mb3IobGV0IHQ9MDt0PDI0O3QrKyl7Y29uc3QgaT04KzEwKnQ7ZS5wdXNoKHtjc3M6by5jaGFubmVscy50b0NzcyhpLGksaSkscmdiYTpvLmNoYW5uZWxzLnRvUmdiYShpLGksaSl9KX1yZXR1cm4gZX0pKCkpO2xldCB2PXQuVGhlbWVTZXJ2aWNlPWNsYXNzIGV4dGVuZHMgaC5EaXNwb3NhYmxle2dldCBjb2xvcnMoKXtyZXR1cm4gdGhpcy5fY29sb3JzfWNvbnN0cnVjdG9yKGUpe3N1cGVyKCksdGhpcy5fb3B0aW9uc1NlcnZpY2U9ZSx0aGlzLl9jb250cmFzdENhY2hlPW5ldyBuLkNvbG9yQ29udHJhc3RDYWNoZSx0aGlzLl9oYWxmQ29udHJhc3RDYWNoZT1uZXcgbi5Db2xvckNvbnRyYXN0Q2FjaGUsdGhpcy5fb25DaGFuZ2VDb2xvcnM9dGhpcy5yZWdpc3RlcihuZXcgYS5FdmVudEVtaXR0ZXIpLHRoaXMub25DaGFuZ2VDb2xvcnM9dGhpcy5fb25DaGFuZ2VDb2xvcnMuZXZlbnQsdGhpcy5fY29sb3JzPXtmb3JlZ3JvdW5kOmwsYmFja2dyb3VuZDpkLGN1cnNvcjpfLGN1cnNvckFjY2VudDp1LHNlbGVjdGlvbkZvcmVncm91bmQ6dm9pZCAwLHNlbGVjdGlvbkJhY2tncm91bmRUcmFuc3BhcmVudDpmLHNlbGVjdGlvbkJhY2tncm91bmRPcGFxdWU6by5jb2xvci5ibGVuZChkLGYpLHNlbGVjdGlvbkluYWN0aXZlQmFja2dyb3VuZFRyYW5zcGFyZW50OmYsc2VsZWN0aW9uSW5hY3RpdmVCYWNrZ3JvdW5kT3BhcXVlOm8uY29sb3IuYmxlbmQoZCxmKSxhbnNpOnQuREVGQVVMVF9BTlNJX0NPTE9SUy5zbGljZSgpLGNvbnRyYXN0Q2FjaGU6dGhpcy5fY29udHJhc3RDYWNoZSxoYWxmQ29udHJhc3RDYWNoZTp0aGlzLl9oYWxmQ29udHJhc3RDYWNoZX0sdGhpcy5fdXBkYXRlUmVzdG9yZUNvbG9ycygpLHRoaXMuX3NldFRoZW1lKHRoaXMuX29wdGlvbnNTZXJ2aWNlLnJhd09wdGlvbnMudGhlbWUpLHRoaXMucmVnaXN0ZXIodGhpcy5fb3B0aW9uc1NlcnZpY2Uub25TcGVjaWZpY09wdGlvbkNoYW5nZShcIm1pbmltdW1Db250cmFzdFJhdGlvXCIsKCgpPT50aGlzLl9jb250cmFzdENhY2hlLmNsZWFyKCkpKSksdGhpcy5yZWdpc3Rlcih0aGlzLl9vcHRpb25zU2VydmljZS5vblNwZWNpZmljT3B0aW9uQ2hhbmdlKFwidGhlbWVcIiwoKCk9PnRoaXMuX3NldFRoZW1lKHRoaXMuX29wdGlvbnNTZXJ2aWNlLnJhd09wdGlvbnMudGhlbWUpKSkpfV9zZXRUaGVtZShlPXt9KXtjb25zdCBpPXRoaXMuX2NvbG9ycztpZihpLmZvcmVncm91bmQ9cChlLmZvcmVncm91bmQsbCksaS5iYWNrZ3JvdW5kPXAoZS5iYWNrZ3JvdW5kLGQpLGkuY3Vyc29yPXAoZS5jdXJzb3IsXyksaS5jdXJzb3JBY2NlbnQ9cChlLmN1cnNvckFjY2VudCx1KSxpLnNlbGVjdGlvbkJhY2tncm91bmRUcmFuc3BhcmVudD1wKGUuc2VsZWN0aW9uQmFja2dyb3VuZCxmKSxpLnNlbGVjdGlvbkJhY2tncm91bmRPcGFxdWU9by5jb2xvci5ibGVuZChpLmJhY2tncm91bmQsaS5zZWxlY3Rpb25CYWNrZ3JvdW5kVHJhbnNwYXJlbnQpLGkuc2VsZWN0aW9uSW5hY3RpdmVCYWNrZ3JvdW5kVHJhbnNwYXJlbnQ9cChlLnNlbGVjdGlvbkluYWN0aXZlQmFja2dyb3VuZCxpLnNlbGVjdGlvbkJhY2tncm91bmRUcmFuc3BhcmVudCksaS5zZWxlY3Rpb25JbmFjdGl2ZUJhY2tncm91bmRPcGFxdWU9by5jb2xvci5ibGVuZChpLmJhY2tncm91bmQsaS5zZWxlY3Rpb25JbmFjdGl2ZUJhY2tncm91bmRUcmFuc3BhcmVudCksaS5zZWxlY3Rpb25Gb3JlZ3JvdW5kPWUuc2VsZWN0aW9uRm9yZWdyb3VuZD9wKGUuc2VsZWN0aW9uRm9yZWdyb3VuZCxvLk5VTExfQ09MT1IpOnZvaWQgMCxpLnNlbGVjdGlvbkZvcmVncm91bmQ9PT1vLk5VTExfQ09MT1ImJihpLnNlbGVjdGlvbkZvcmVncm91bmQ9dm9pZCAwKSxvLmNvbG9yLmlzT3BhcXVlKGkuc2VsZWN0aW9uQmFja2dyb3VuZFRyYW5zcGFyZW50KSl7Y29uc3QgZT0uMztpLnNlbGVjdGlvbkJhY2tncm91bmRUcmFuc3BhcmVudD1vLmNvbG9yLm9wYWNpdHkoaS5zZWxlY3Rpb25CYWNrZ3JvdW5kVHJhbnNwYXJlbnQsZSl9aWYoby5jb2xvci5pc09wYXF1ZShpLnNlbGVjdGlvbkluYWN0aXZlQmFja2dyb3VuZFRyYW5zcGFyZW50KSl7Y29uc3QgZT0uMztpLnNlbGVjdGlvbkluYWN0aXZlQmFja2dyb3VuZFRyYW5zcGFyZW50PW8uY29sb3Iub3BhY2l0eShpLnNlbGVjdGlvbkluYWN0aXZlQmFja2dyb3VuZFRyYW5zcGFyZW50LGUpfWlmKGkuYW5zaT10LkRFRkFVTFRfQU5TSV9DT0xPUlMuc2xpY2UoKSxpLmFuc2lbMF09cChlLmJsYWNrLHQuREVGQVVMVF9BTlNJX0NPTE9SU1swXSksaS5hbnNpWzFdPXAoZS5yZWQsdC5ERUZBVUxUX0FOU0lfQ09MT1JTWzFdKSxpLmFuc2lbMl09cChlLmdyZWVuLHQuREVGQVVMVF9BTlNJX0NPTE9SU1syXSksaS5hbnNpWzNdPXAoZS55ZWxsb3csdC5ERUZBVUxUX0FOU0lfQ09MT1JTWzNdKSxpLmFuc2lbNF09cChlLmJsdWUsdC5ERUZBVUxUX0FOU0lfQ09MT1JTWzRdKSxpLmFuc2lbNV09cChlLm1hZ2VudGEsdC5ERUZBVUxUX0FOU0lfQ09MT1JTWzVdKSxpLmFuc2lbNl09cChlLmN5YW4sdC5ERUZBVUxUX0FOU0lfQ09MT1JTWzZdKSxpLmFuc2lbN109cChlLndoaXRlLHQuREVGQVVMVF9BTlNJX0NPTE9SU1s3XSksaS5hbnNpWzhdPXAoZS5icmlnaHRCbGFjayx0LkRFRkFVTFRfQU5TSV9DT0xPUlNbOF0pLGkuYW5zaVs5XT1wKGUuYnJpZ2h0UmVkLHQuREVGQVVMVF9BTlNJX0NPTE9SU1s5XSksaS5hbnNpWzEwXT1wKGUuYnJpZ2h0R3JlZW4sdC5ERUZBVUxUX0FOU0lfQ09MT1JTWzEwXSksaS5hbnNpWzExXT1wKGUuYnJpZ2h0WWVsbG93LHQuREVGQVVMVF9BTlNJX0NPTE9SU1sxMV0pLGkuYW5zaVsxMl09cChlLmJyaWdodEJsdWUsdC5ERUZBVUxUX0FOU0lfQ09MT1JTWzEyXSksaS5hbnNpWzEzXT1wKGUuYnJpZ2h0TWFnZW50YSx0LkRFRkFVTFRfQU5TSV9DT0xPUlNbMTNdKSxpLmFuc2lbMTRdPXAoZS5icmlnaHRDeWFuLHQuREVGQVVMVF9BTlNJX0NPTE9SU1sxNF0pLGkuYW5zaVsxNV09cChlLmJyaWdodFdoaXRlLHQuREVGQVVMVF9BTlNJX0NPTE9SU1sxNV0pLGUuZXh0ZW5kZWRBbnNpKXtjb25zdCBzPU1hdGgubWluKGkuYW5zaS5sZW5ndGgtMTYsZS5leHRlbmRlZEFuc2kubGVuZ3RoKTtmb3IobGV0IHI9MDtyPHM7cisrKWkuYW5zaVtyKzE2XT1wKGUuZXh0ZW5kZWRBbnNpW3JdLHQuREVGQVVMVF9BTlNJX0NPTE9SU1tyKzE2XSl9dGhpcy5fY29udHJhc3RDYWNoZS5jbGVhcigpLHRoaXMuX2hhbGZDb250cmFzdENhY2hlLmNsZWFyKCksdGhpcy5fdXBkYXRlUmVzdG9yZUNvbG9ycygpLHRoaXMuX29uQ2hhbmdlQ29sb3JzLmZpcmUodGhpcy5jb2xvcnMpfXJlc3RvcmVDb2xvcihlKXt0aGlzLl9yZXN0b3JlQ29sb3IoZSksdGhpcy5fb25DaGFuZ2VDb2xvcnMuZmlyZSh0aGlzLmNvbG9ycyl9X3Jlc3RvcmVDb2xvcihlKXtpZih2b2lkIDAhPT1lKXN3aXRjaChlKXtjYXNlIDI1Njp0aGlzLl9jb2xvcnMuZm9yZWdyb3VuZD10aGlzLl9yZXN0b3JlQ29sb3JzLmZvcmVncm91bmQ7YnJlYWs7Y2FzZSAyNTc6dGhpcy5fY29sb3JzLmJhY2tncm91bmQ9dGhpcy5fcmVzdG9yZUNvbG9ycy5iYWNrZ3JvdW5kO2JyZWFrO2Nhc2UgMjU4OnRoaXMuX2NvbG9ycy5jdXJzb3I9dGhpcy5fcmVzdG9yZUNvbG9ycy5jdXJzb3I7YnJlYWs7ZGVmYXVsdDp0aGlzLl9jb2xvcnMuYW5zaVtlXT10aGlzLl9yZXN0b3JlQ29sb3JzLmFuc2lbZV19ZWxzZSBmb3IobGV0IGU9MDtlPHRoaXMuX3Jlc3RvcmVDb2xvcnMuYW5zaS5sZW5ndGg7KytlKXRoaXMuX2NvbG9ycy5hbnNpW2VdPXRoaXMuX3Jlc3RvcmVDb2xvcnMuYW5zaVtlXX1tb2RpZnlDb2xvcnMoZSl7ZSh0aGlzLl9jb2xvcnMpLHRoaXMuX29uQ2hhbmdlQ29sb3JzLmZpcmUodGhpcy5jb2xvcnMpfV91cGRhdGVSZXN0b3JlQ29sb3JzKCl7dGhpcy5fcmVzdG9yZUNvbG9ycz17Zm9yZWdyb3VuZDp0aGlzLl9jb2xvcnMuZm9yZWdyb3VuZCxiYWNrZ3JvdW5kOnRoaXMuX2NvbG9ycy5iYWNrZ3JvdW5kLGN1cnNvcjp0aGlzLl9jb2xvcnMuY3Vyc29yLGFuc2k6dGhpcy5fY29sb3JzLmFuc2kuc2xpY2UoKX19fTtmdW5jdGlvbiBwKGUsdCl7aWYodm9pZCAwIT09ZSl0cnl7cmV0dXJuIG8uY3NzLnRvQ29sb3IoZSl9Y2F0Y2goZSl7fXJldHVybiB0fXQuVGhlbWVTZXJ2aWNlPXY9cyhbcigwLGMuSU9wdGlvbnNTZXJ2aWNlKV0sdil9LDYzNDk6KGUsdCxpKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuQ2lyY3VsYXJMaXN0PXZvaWQgMDtjb25zdCBzPWkoODQ2MCkscj1pKDg0NCk7Y2xhc3MgbiBleHRlbmRzIHIuRGlzcG9zYWJsZXtjb25zdHJ1Y3RvcihlKXtzdXBlcigpLHRoaXMuX21heExlbmd0aD1lLHRoaXMub25EZWxldGVFbWl0dGVyPXRoaXMucmVnaXN0ZXIobmV3IHMuRXZlbnRFbWl0dGVyKSx0aGlzLm9uRGVsZXRlPXRoaXMub25EZWxldGVFbWl0dGVyLmV2ZW50LHRoaXMub25JbnNlcnRFbWl0dGVyPXRoaXMucmVnaXN0ZXIobmV3IHMuRXZlbnRFbWl0dGVyKSx0aGlzLm9uSW5zZXJ0PXRoaXMub25JbnNlcnRFbWl0dGVyLmV2ZW50LHRoaXMub25UcmltRW1pdHRlcj10aGlzLnJlZ2lzdGVyKG5ldyBzLkV2ZW50RW1pdHRlciksdGhpcy5vblRyaW09dGhpcy5vblRyaW1FbWl0dGVyLmV2ZW50LHRoaXMuX2FycmF5PW5ldyBBcnJheSh0aGlzLl9tYXhMZW5ndGgpLHRoaXMuX3N0YXJ0SW5kZXg9MCx0aGlzLl9sZW5ndGg9MH1nZXQgbWF4TGVuZ3RoKCl7cmV0dXJuIHRoaXMuX21heExlbmd0aH1zZXQgbWF4TGVuZ3RoKGUpe2lmKHRoaXMuX21heExlbmd0aD09PWUpcmV0dXJuO2NvbnN0IHQ9bmV3IEFycmF5KGUpO2ZvcihsZXQgaT0wO2k8TWF0aC5taW4oZSx0aGlzLmxlbmd0aCk7aSsrKXRbaV09dGhpcy5fYXJyYXlbdGhpcy5fZ2V0Q3ljbGljSW5kZXgoaSldO3RoaXMuX2FycmF5PXQsdGhpcy5fbWF4TGVuZ3RoPWUsdGhpcy5fc3RhcnRJbmRleD0wfWdldCBsZW5ndGgoKXtyZXR1cm4gdGhpcy5fbGVuZ3RofXNldCBsZW5ndGgoZSl7aWYoZT50aGlzLl9sZW5ndGgpZm9yKGxldCB0PXRoaXMuX2xlbmd0aDt0PGU7dCsrKXRoaXMuX2FycmF5W3RdPXZvaWQgMDt0aGlzLl9sZW5ndGg9ZX1nZXQoZSl7cmV0dXJuIHRoaXMuX2FycmF5W3RoaXMuX2dldEN5Y2xpY0luZGV4KGUpXX1zZXQoZSx0KXt0aGlzLl9hcnJheVt0aGlzLl9nZXRDeWNsaWNJbmRleChlKV09dH1wdXNoKGUpe3RoaXMuX2FycmF5W3RoaXMuX2dldEN5Y2xpY0luZGV4KHRoaXMuX2xlbmd0aCldPWUsdGhpcy5fbGVuZ3RoPT09dGhpcy5fbWF4TGVuZ3RoPyh0aGlzLl9zdGFydEluZGV4PSsrdGhpcy5fc3RhcnRJbmRleCV0aGlzLl9tYXhMZW5ndGgsdGhpcy5vblRyaW1FbWl0dGVyLmZpcmUoMSkpOnRoaXMuX2xlbmd0aCsrfXJlY3ljbGUoKXtpZih0aGlzLl9sZW5ndGghPT10aGlzLl9tYXhMZW5ndGgpdGhyb3cgbmV3IEVycm9yKFwiQ2FuIG9ubHkgcmVjeWNsZSB3aGVuIHRoZSBidWZmZXIgaXMgZnVsbFwiKTtyZXR1cm4gdGhpcy5fc3RhcnRJbmRleD0rK3RoaXMuX3N0YXJ0SW5kZXgldGhpcy5fbWF4TGVuZ3RoLHRoaXMub25UcmltRW1pdHRlci5maXJlKDEpLHRoaXMuX2FycmF5W3RoaXMuX2dldEN5Y2xpY0luZGV4KHRoaXMuX2xlbmd0aC0xKV19Z2V0IGlzRnVsbCgpe3JldHVybiB0aGlzLl9sZW5ndGg9PT10aGlzLl9tYXhMZW5ndGh9cG9wKCl7cmV0dXJuIHRoaXMuX2FycmF5W3RoaXMuX2dldEN5Y2xpY0luZGV4KHRoaXMuX2xlbmd0aC0tLTEpXX1zcGxpY2UoZSx0LC4uLmkpe2lmKHQpe2ZvcihsZXQgaT1lO2k8dGhpcy5fbGVuZ3RoLXQ7aSsrKXRoaXMuX2FycmF5W3RoaXMuX2dldEN5Y2xpY0luZGV4KGkpXT10aGlzLl9hcnJheVt0aGlzLl9nZXRDeWNsaWNJbmRleChpK3QpXTt0aGlzLl9sZW5ndGgtPXQsdGhpcy5vbkRlbGV0ZUVtaXR0ZXIuZmlyZSh7aW5kZXg6ZSxhbW91bnQ6dH0pfWZvcihsZXQgdD10aGlzLl9sZW5ndGgtMTt0Pj1lO3QtLSl0aGlzLl9hcnJheVt0aGlzLl9nZXRDeWNsaWNJbmRleCh0K2kubGVuZ3RoKV09dGhpcy5fYXJyYXlbdGhpcy5fZ2V0Q3ljbGljSW5kZXgodCldO2ZvcihsZXQgdD0wO3Q8aS5sZW5ndGg7dCsrKXRoaXMuX2FycmF5W3RoaXMuX2dldEN5Y2xpY0luZGV4KGUrdCldPWlbdF07aWYoaS5sZW5ndGgmJnRoaXMub25JbnNlcnRFbWl0dGVyLmZpcmUoe2luZGV4OmUsYW1vdW50OmkubGVuZ3RofSksdGhpcy5fbGVuZ3RoK2kubGVuZ3RoPnRoaXMuX21heExlbmd0aCl7Y29uc3QgZT10aGlzLl9sZW5ndGgraS5sZW5ndGgtdGhpcy5fbWF4TGVuZ3RoO3RoaXMuX3N0YXJ0SW5kZXgrPWUsdGhpcy5fbGVuZ3RoPXRoaXMuX21heExlbmd0aCx0aGlzLm9uVHJpbUVtaXR0ZXIuZmlyZShlKX1lbHNlIHRoaXMuX2xlbmd0aCs9aS5sZW5ndGh9dHJpbVN0YXJ0KGUpe2U+dGhpcy5fbGVuZ3RoJiYoZT10aGlzLl9sZW5ndGgpLHRoaXMuX3N0YXJ0SW5kZXgrPWUsdGhpcy5fbGVuZ3RoLT1lLHRoaXMub25UcmltRW1pdHRlci5maXJlKGUpfXNoaWZ0RWxlbWVudHMoZSx0LGkpe2lmKCEodDw9MCkpe2lmKGU8MHx8ZT49dGhpcy5fbGVuZ3RoKXRocm93IG5ldyBFcnJvcihcInN0YXJ0IGFyZ3VtZW50IG91dCBvZiByYW5nZVwiKTtpZihlK2k8MCl0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3Qgc2hpZnQgZWxlbWVudHMgaW4gbGlzdCBiZXlvbmQgaW5kZXggMFwiKTtpZihpPjApe2ZvcihsZXQgcz10LTE7cz49MDtzLS0pdGhpcy5zZXQoZStzK2ksdGhpcy5nZXQoZStzKSk7Y29uc3Qgcz1lK3QraS10aGlzLl9sZW5ndGg7aWYocz4wKWZvcih0aGlzLl9sZW5ndGgrPXM7dGhpcy5fbGVuZ3RoPnRoaXMuX21heExlbmd0aDspdGhpcy5fbGVuZ3RoLS0sdGhpcy5fc3RhcnRJbmRleCsrLHRoaXMub25UcmltRW1pdHRlci5maXJlKDEpfWVsc2UgZm9yKGxldCBzPTA7czx0O3MrKyl0aGlzLnNldChlK3MraSx0aGlzLmdldChlK3MpKX19X2dldEN5Y2xpY0luZGV4KGUpe3JldHVybih0aGlzLl9zdGFydEluZGV4K2UpJXRoaXMuX21heExlbmd0aH19dC5DaXJjdWxhckxpc3Q9bn0sMTQzOTooZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuY2xvbmU9dm9pZCAwLHQuY2xvbmU9ZnVuY3Rpb24gZSh0LGk9NSl7aWYoXCJvYmplY3RcIiE9dHlwZW9mIHQpcmV0dXJuIHQ7Y29uc3Qgcz1BcnJheS5pc0FycmF5KHQpP1tdOnt9O2Zvcihjb25zdCByIGluIHQpc1tyXT1pPD0xP3Rbcl06dFtyXSYmZSh0W3JdLGktMSk7cmV0dXJuIHN9fSw4MDU1OihlLHQsaSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmNvbnRyYXN0UmF0aW89dC50b1BhZGRlZEhleD10LnJnYmE9dC5yZ2I9dC5jc3M9dC5jb2xvcj10LmNoYW5uZWxzPXQuTlVMTF9DT0xPUj12b2lkIDA7Y29uc3Qgcz1pKDYxMTQpO2xldCByPTAsbj0wLG89MCxhPTA7dmFyIGgsYyxsLGQsXztmdW5jdGlvbiB1KGUpe2NvbnN0IHQ9ZS50b1N0cmluZygxNik7cmV0dXJuIHQubGVuZ3RoPDI/XCIwXCIrdDp0fWZ1bmN0aW9uIGYoZSx0KXtyZXR1cm4gZTx0Pyh0Ky4wNSkvKGUrLjA1KTooZSsuMDUpLyh0Ky4wNSl9dC5OVUxMX0NPTE9SPXtjc3M6XCIjMDAwMDAwMDBcIixyZ2JhOjB9LGZ1bmN0aW9uKGUpe2UudG9Dc3M9ZnVuY3Rpb24oZSx0LGkscyl7cmV0dXJuIHZvaWQgMCE9PXM/YCMke3UoZSl9JHt1KHQpfSR7dShpKX0ke3Uocyl9YDpgIyR7dShlKX0ke3UodCl9JHt1KGkpfWB9LGUudG9SZ2JhPWZ1bmN0aW9uKGUsdCxpLHM9MjU1KXtyZXR1cm4oZTw8MjR8dDw8MTZ8aTw8OHxzKT4+PjB9fShofHwodC5jaGFubmVscz1oPXt9KSksZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlLHQpe3JldHVybiBhPU1hdGgucm91bmQoMjU1KnQpLFtyLG4sb109Xy50b0NoYW5uZWxzKGUucmdiYSkse2NzczpoLnRvQ3NzKHIsbixvLGEpLHJnYmE6aC50b1JnYmEocixuLG8sYSl9fWUuYmxlbmQ9ZnVuY3Rpb24oZSx0KXtpZihhPSgyNTUmdC5yZ2JhKS8yNTUsMT09PWEpcmV0dXJue2Nzczp0LmNzcyxyZ2JhOnQucmdiYX07Y29uc3QgaT10LnJnYmE+PjI0JjI1NSxzPXQucmdiYT4+MTYmMjU1LGM9dC5yZ2JhPj44JjI1NSxsPWUucmdiYT4+MjQmMjU1LGQ9ZS5yZ2JhPj4xNiYyNTUsXz1lLnJnYmE+PjgmMjU1O3JldHVybiByPWwrTWF0aC5yb3VuZCgoaS1sKSphKSxuPWQrTWF0aC5yb3VuZCgocy1kKSphKSxvPV8rTWF0aC5yb3VuZCgoYy1fKSphKSx7Y3NzOmgudG9Dc3MocixuLG8pLHJnYmE6aC50b1JnYmEocixuLG8pfX0sZS5pc09wYXF1ZT1mdW5jdGlvbihlKXtyZXR1cm4gMjU1PT0oMjU1JmUucmdiYSl9LGUuZW5zdXJlQ29udHJhc3RSYXRpbz1mdW5jdGlvbihlLHQsaSl7Y29uc3Qgcz1fLmVuc3VyZUNvbnRyYXN0UmF0aW8oZS5yZ2JhLHQucmdiYSxpKTtpZihzKXJldHVybiBfLnRvQ29sb3Iocz4+MjQmMjU1LHM+PjE2JjI1NSxzPj44JjI1NSl9LGUub3BhcXVlPWZ1bmN0aW9uKGUpe2NvbnN0IHQ9KDI1NXxlLnJnYmEpPj4+MDtyZXR1cm5bcixuLG9dPV8udG9DaGFubmVscyh0KSx7Y3NzOmgudG9Dc3MocixuLG8pLHJnYmE6dH19LGUub3BhY2l0eT10LGUubXVsdGlwbHlPcGFjaXR5PWZ1bmN0aW9uKGUsaSl7cmV0dXJuIGE9MjU1JmUucmdiYSx0KGUsYSppLzI1NSl9LGUudG9Db2xvclJHQj1mdW5jdGlvbihlKXtyZXR1cm5bZS5yZ2JhPj4yNCYyNTUsZS5yZ2JhPj4xNiYyNTUsZS5yZ2JhPj44JjI1NV19fShjfHwodC5jb2xvcj1jPXt9KSksZnVuY3Rpb24oZSl7bGV0IHQsaTtpZighcy5pc05vZGUpe2NvbnN0IGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImNhbnZhc1wiKTtlLndpZHRoPTEsZS5oZWlnaHQ9MTtjb25zdCBzPWUuZ2V0Q29udGV4dChcIjJkXCIse3dpbGxSZWFkRnJlcXVlbnRseTohMH0pO3MmJih0PXMsdC5nbG9iYWxDb21wb3NpdGVPcGVyYXRpb249XCJjb3B5XCIsaT10LmNyZWF0ZUxpbmVhckdyYWRpZW50KDAsMCwxLDEpKX1lLnRvQ29sb3I9ZnVuY3Rpb24oZSl7aWYoZS5tYXRjaCgvI1tcXGRhLWZdezMsOH0vaSkpc3dpdGNoKGUubGVuZ3RoKXtjYXNlIDQ6cmV0dXJuIHI9cGFyc2VJbnQoZS5zbGljZSgxLDIpLnJlcGVhdCgyKSwxNiksbj1wYXJzZUludChlLnNsaWNlKDIsMykucmVwZWF0KDIpLDE2KSxvPXBhcnNlSW50KGUuc2xpY2UoMyw0KS5yZXBlYXQoMiksMTYpLF8udG9Db2xvcihyLG4sbyk7Y2FzZSA1OnJldHVybiByPXBhcnNlSW50KGUuc2xpY2UoMSwyKS5yZXBlYXQoMiksMTYpLG49cGFyc2VJbnQoZS5zbGljZSgyLDMpLnJlcGVhdCgyKSwxNiksbz1wYXJzZUludChlLnNsaWNlKDMsNCkucmVwZWF0KDIpLDE2KSxhPXBhcnNlSW50KGUuc2xpY2UoNCw1KS5yZXBlYXQoMiksMTYpLF8udG9Db2xvcihyLG4sbyxhKTtjYXNlIDc6cmV0dXJue2NzczplLHJnYmE6KHBhcnNlSW50KGUuc2xpY2UoMSksMTYpPDw4fDI1NSk+Pj4wfTtjYXNlIDk6cmV0dXJue2NzczplLHJnYmE6cGFyc2VJbnQoZS5zbGljZSgxKSwxNik+Pj4wfX1jb25zdCBzPWUubWF0Y2goL3JnYmE/XFwoXFxzKihcXGR7MSwzfSlcXHMqLFxccyooXFxkezEsM30pXFxzKixcXHMqKFxcZHsxLDN9KVxccyooLFxccyooMHwxfFxcZD9cXC4oXFxkKykpXFxzKik/XFwpLyk7aWYocylyZXR1cm4gcj1wYXJzZUludChzWzFdKSxuPXBhcnNlSW50KHNbMl0pLG89cGFyc2VJbnQoc1szXSksYT1NYXRoLnJvdW5kKDI1NSoodm9pZCAwPT09c1s1XT8xOnBhcnNlRmxvYXQoc1s1XSkpKSxfLnRvQ29sb3IocixuLG8sYSk7aWYoIXR8fCFpKXRocm93IG5ldyBFcnJvcihcImNzcy50b0NvbG9yOiBVbnN1cHBvcnRlZCBjc3MgZm9ybWF0XCIpO2lmKHQuZmlsbFN0eWxlPWksdC5maWxsU3R5bGU9ZSxcInN0cmluZ1wiIT10eXBlb2YgdC5maWxsU3R5bGUpdGhyb3cgbmV3IEVycm9yKFwiY3NzLnRvQ29sb3I6IFVuc3VwcG9ydGVkIGNzcyBmb3JtYXRcIik7aWYodC5maWxsUmVjdCgwLDAsMSwxKSxbcixuLG8sYV09dC5nZXRJbWFnZURhdGEoMCwwLDEsMSkuZGF0YSwyNTUhPT1hKXRocm93IG5ldyBFcnJvcihcImNzcy50b0NvbG9yOiBVbnN1cHBvcnRlZCBjc3MgZm9ybWF0XCIpO3JldHVybntyZ2JhOmgudG9SZ2JhKHIsbixvLGEpLGNzczplfX19KGx8fCh0LmNzcz1sPXt9KSksZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlLHQsaSl7Y29uc3Qgcz1lLzI1NSxyPXQvMjU1LG49aS8yNTU7cmV0dXJuLjIxMjYqKHM8PS4wMzkyOD9zLzEyLjkyOk1hdGgucG93KChzKy4wNTUpLzEuMDU1LDIuNCkpKy43MTUyKihyPD0uMDM5Mjg/ci8xMi45MjpNYXRoLnBvdygocisuMDU1KS8xLjA1NSwyLjQpKSsuMDcyMioobjw9LjAzOTI4P24vMTIuOTI6TWF0aC5wb3coKG4rLjA1NSkvMS4wNTUsMi40KSl9ZS5yZWxhdGl2ZUx1bWluYW5jZT1mdW5jdGlvbihlKXtyZXR1cm4gdChlPj4xNiYyNTUsZT4+OCYyNTUsMjU1JmUpfSxlLnJlbGF0aXZlTHVtaW5hbmNlMj10fShkfHwodC5yZ2I9ZD17fSkpLGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSx0LGkpe2NvbnN0IHM9ZT4+MjQmMjU1LHI9ZT4+MTYmMjU1LG49ZT4+OCYyNTU7bGV0IG89dD4+MjQmMjU1LGE9dD4+MTYmMjU1LGg9dD4+OCYyNTUsYz1mKGQucmVsYXRpdmVMdW1pbmFuY2UyKG8sYSxoKSxkLnJlbGF0aXZlTHVtaW5hbmNlMihzLHIsbikpO2Zvcig7YzxpJiYobz4wfHxhPjB8fGg+MCk7KW8tPU1hdGgubWF4KDAsTWF0aC5jZWlsKC4xKm8pKSxhLT1NYXRoLm1heCgwLE1hdGguY2VpbCguMSphKSksaC09TWF0aC5tYXgoMCxNYXRoLmNlaWwoLjEqaCkpLGM9ZihkLnJlbGF0aXZlTHVtaW5hbmNlMihvLGEsaCksZC5yZWxhdGl2ZUx1bWluYW5jZTIocyxyLG4pKTtyZXR1cm4obzw8MjR8YTw8MTZ8aDw8OHwyNTUpPj4+MH1mdW5jdGlvbiBpKGUsdCxpKXtjb25zdCBzPWU+PjI0JjI1NSxyPWU+PjE2JjI1NSxuPWU+PjgmMjU1O2xldCBvPXQ+PjI0JjI1NSxhPXQ+PjE2JjI1NSxoPXQ+PjgmMjU1LGM9ZihkLnJlbGF0aXZlTHVtaW5hbmNlMihvLGEsaCksZC5yZWxhdGl2ZUx1bWluYW5jZTIocyxyLG4pKTtmb3IoO2M8aSYmKG88MjU1fHxhPDI1NXx8aDwyNTUpOylvPU1hdGgubWluKDI1NSxvK01hdGguY2VpbCguMSooMjU1LW8pKSksYT1NYXRoLm1pbigyNTUsYStNYXRoLmNlaWwoLjEqKDI1NS1hKSkpLGg9TWF0aC5taW4oMjU1LGgrTWF0aC5jZWlsKC4xKigyNTUtaCkpKSxjPWYoZC5yZWxhdGl2ZUx1bWluYW5jZTIobyxhLGgpLGQucmVsYXRpdmVMdW1pbmFuY2UyKHMscixuKSk7cmV0dXJuKG88PDI0fGE8PDE2fGg8PDh8MjU1KT4+PjB9ZS5lbnN1cmVDb250cmFzdFJhdGlvPWZ1bmN0aW9uKGUscyxyKXtjb25zdCBuPWQucmVsYXRpdmVMdW1pbmFuY2UoZT4+OCksbz1kLnJlbGF0aXZlTHVtaW5hbmNlKHM+PjgpO2lmKGYobixvKTxyKXtpZihvPG4pe2NvbnN0IG89dChlLHMsciksYT1mKG4sZC5yZWxhdGl2ZUx1bWluYW5jZShvPj44KSk7aWYoYTxyKXtjb25zdCB0PWkoZSxzLHIpO3JldHVybiBhPmYobixkLnJlbGF0aXZlTHVtaW5hbmNlKHQ+PjgpKT9vOnR9cmV0dXJuIG99Y29uc3QgYT1pKGUscyxyKSxoPWYobixkLnJlbGF0aXZlTHVtaW5hbmNlKGE+PjgpKTtpZihoPHIpe2NvbnN0IGk9dChlLHMscik7cmV0dXJuIGg+ZihuLGQucmVsYXRpdmVMdW1pbmFuY2UoaT4+OCkpP2E6aX1yZXR1cm4gYX19LGUucmVkdWNlTHVtaW5hbmNlPXQsZS5pbmNyZWFzZUx1bWluYW5jZT1pLGUudG9DaGFubmVscz1mdW5jdGlvbihlKXtyZXR1cm5bZT4+MjQmMjU1LGU+PjE2JjI1NSxlPj44JjI1NSwyNTUmZV19LGUudG9Db2xvcj1mdW5jdGlvbihlLHQsaSxzKXtyZXR1cm57Y3NzOmgudG9Dc3MoZSx0LGkscykscmdiYTpoLnRvUmdiYShlLHQsaSxzKX19fShffHwodC5yZ2JhPV89e30pKSx0LnRvUGFkZGVkSGV4PXUsdC5jb250cmFzdFJhdGlvPWZ9LDg5Njk6KGUsdCxpKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuQ29yZVRlcm1pbmFsPXZvaWQgMDtjb25zdCBzPWkoODQ0KSxyPWkoMjU4NSksbj1pKDQzNDgpLG89aSg3ODY2KSxhPWkoNzQ0KSxoPWkoNzMwMiksYz1pKDY5NzUpLGw9aSg4NDYwKSxkPWkoMTc1MyksXz1pKDE0ODApLHU9aSg3OTk0KSxmPWkoOTI4Miksdj1pKDU0MzUpLHA9aSg1OTgxKSxnPWkoMjY2MCk7bGV0IG09ITE7Y2xhc3MgUyBleHRlbmRzIHMuRGlzcG9zYWJsZXtnZXQgb25TY3JvbGwoKXtyZXR1cm4gdGhpcy5fb25TY3JvbGxBcGl8fCh0aGlzLl9vblNjcm9sbEFwaT10aGlzLnJlZ2lzdGVyKG5ldyBsLkV2ZW50RW1pdHRlciksdGhpcy5fb25TY3JvbGwuZXZlbnQoKGU9Pnt2YXIgdDtudWxsPT09KHQ9dGhpcy5fb25TY3JvbGxBcGkpfHx2b2lkIDA9PT10fHx0LmZpcmUoZS5wb3NpdGlvbil9KSkpLHRoaXMuX29uU2Nyb2xsQXBpLmV2ZW50fWdldCBjb2xzKCl7cmV0dXJuIHRoaXMuX2J1ZmZlclNlcnZpY2UuY29sc31nZXQgcm93cygpe3JldHVybiB0aGlzLl9idWZmZXJTZXJ2aWNlLnJvd3N9Z2V0IGJ1ZmZlcnMoKXtyZXR1cm4gdGhpcy5fYnVmZmVyU2VydmljZS5idWZmZXJzfWdldCBvcHRpb25zKCl7cmV0dXJuIHRoaXMub3B0aW9uc1NlcnZpY2Uub3B0aW9uc31zZXQgb3B0aW9ucyhlKXtmb3IoY29uc3QgdCBpbiBlKXRoaXMub3B0aW9uc1NlcnZpY2Uub3B0aW9uc1t0XT1lW3RdfWNvbnN0cnVjdG9yKGUpe3N1cGVyKCksdGhpcy5fd2luZG93c1dyYXBwaW5nSGV1cmlzdGljcz10aGlzLnJlZ2lzdGVyKG5ldyBzLk11dGFibGVEaXNwb3NhYmxlKSx0aGlzLl9vbkJpbmFyeT10aGlzLnJlZ2lzdGVyKG5ldyBsLkV2ZW50RW1pdHRlciksdGhpcy5vbkJpbmFyeT10aGlzLl9vbkJpbmFyeS5ldmVudCx0aGlzLl9vbkRhdGE9dGhpcy5yZWdpc3RlcihuZXcgbC5FdmVudEVtaXR0ZXIpLHRoaXMub25EYXRhPXRoaXMuX29uRGF0YS5ldmVudCx0aGlzLl9vbkxpbmVGZWVkPXRoaXMucmVnaXN0ZXIobmV3IGwuRXZlbnRFbWl0dGVyKSx0aGlzLm9uTGluZUZlZWQ9dGhpcy5fb25MaW5lRmVlZC5ldmVudCx0aGlzLl9vblJlc2l6ZT10aGlzLnJlZ2lzdGVyKG5ldyBsLkV2ZW50RW1pdHRlciksdGhpcy5vblJlc2l6ZT10aGlzLl9vblJlc2l6ZS5ldmVudCx0aGlzLl9vbldyaXRlUGFyc2VkPXRoaXMucmVnaXN0ZXIobmV3IGwuRXZlbnRFbWl0dGVyKSx0aGlzLm9uV3JpdGVQYXJzZWQ9dGhpcy5fb25Xcml0ZVBhcnNlZC5ldmVudCx0aGlzLl9vblNjcm9sbD10aGlzLnJlZ2lzdGVyKG5ldyBsLkV2ZW50RW1pdHRlciksdGhpcy5faW5zdGFudGlhdGlvblNlcnZpY2U9bmV3IG4uSW5zdGFudGlhdGlvblNlcnZpY2UsdGhpcy5vcHRpb25zU2VydmljZT10aGlzLnJlZ2lzdGVyKG5ldyBoLk9wdGlvbnNTZXJ2aWNlKGUpKSx0aGlzLl9pbnN0YW50aWF0aW9uU2VydmljZS5zZXRTZXJ2aWNlKHIuSU9wdGlvbnNTZXJ2aWNlLHRoaXMub3B0aW9uc1NlcnZpY2UpLHRoaXMuX2J1ZmZlclNlcnZpY2U9dGhpcy5yZWdpc3Rlcih0aGlzLl9pbnN0YW50aWF0aW9uU2VydmljZS5jcmVhdGVJbnN0YW5jZShhLkJ1ZmZlclNlcnZpY2UpKSx0aGlzLl9pbnN0YW50aWF0aW9uU2VydmljZS5zZXRTZXJ2aWNlKHIuSUJ1ZmZlclNlcnZpY2UsdGhpcy5fYnVmZmVyU2VydmljZSksdGhpcy5fbG9nU2VydmljZT10aGlzLnJlZ2lzdGVyKHRoaXMuX2luc3RhbnRpYXRpb25TZXJ2aWNlLmNyZWF0ZUluc3RhbmNlKG8uTG9nU2VydmljZSkpLHRoaXMuX2luc3RhbnRpYXRpb25TZXJ2aWNlLnNldFNlcnZpY2Uoci5JTG9nU2VydmljZSx0aGlzLl9sb2dTZXJ2aWNlKSx0aGlzLmNvcmVTZXJ2aWNlPXRoaXMucmVnaXN0ZXIodGhpcy5faW5zdGFudGlhdGlvblNlcnZpY2UuY3JlYXRlSW5zdGFuY2UoYy5Db3JlU2VydmljZSkpLHRoaXMuX2luc3RhbnRpYXRpb25TZXJ2aWNlLnNldFNlcnZpY2Uoci5JQ29yZVNlcnZpY2UsdGhpcy5jb3JlU2VydmljZSksdGhpcy5jb3JlTW91c2VTZXJ2aWNlPXRoaXMucmVnaXN0ZXIodGhpcy5faW5zdGFudGlhdGlvblNlcnZpY2UuY3JlYXRlSW5zdGFuY2UoZC5Db3JlTW91c2VTZXJ2aWNlKSksdGhpcy5faW5zdGFudGlhdGlvblNlcnZpY2Uuc2V0U2VydmljZShyLklDb3JlTW91c2VTZXJ2aWNlLHRoaXMuY29yZU1vdXNlU2VydmljZSksdGhpcy51bmljb2RlU2VydmljZT10aGlzLnJlZ2lzdGVyKHRoaXMuX2luc3RhbnRpYXRpb25TZXJ2aWNlLmNyZWF0ZUluc3RhbmNlKF8uVW5pY29kZVNlcnZpY2UpKSx0aGlzLl9pbnN0YW50aWF0aW9uU2VydmljZS5zZXRTZXJ2aWNlKHIuSVVuaWNvZGVTZXJ2aWNlLHRoaXMudW5pY29kZVNlcnZpY2UpLHRoaXMuX2NoYXJzZXRTZXJ2aWNlPXRoaXMuX2luc3RhbnRpYXRpb25TZXJ2aWNlLmNyZWF0ZUluc3RhbmNlKHUuQ2hhcnNldFNlcnZpY2UpLHRoaXMuX2luc3RhbnRpYXRpb25TZXJ2aWNlLnNldFNlcnZpY2Uoci5JQ2hhcnNldFNlcnZpY2UsdGhpcy5fY2hhcnNldFNlcnZpY2UpLHRoaXMuX29zY0xpbmtTZXJ2aWNlPXRoaXMuX2luc3RhbnRpYXRpb25TZXJ2aWNlLmNyZWF0ZUluc3RhbmNlKGcuT3NjTGlua1NlcnZpY2UpLHRoaXMuX2luc3RhbnRpYXRpb25TZXJ2aWNlLnNldFNlcnZpY2Uoci5JT3NjTGlua1NlcnZpY2UsdGhpcy5fb3NjTGlua1NlcnZpY2UpLHRoaXMuX2lucHV0SGFuZGxlcj10aGlzLnJlZ2lzdGVyKG5ldyB2LklucHV0SGFuZGxlcih0aGlzLl9idWZmZXJTZXJ2aWNlLHRoaXMuX2NoYXJzZXRTZXJ2aWNlLHRoaXMuY29yZVNlcnZpY2UsdGhpcy5fbG9nU2VydmljZSx0aGlzLm9wdGlvbnNTZXJ2aWNlLHRoaXMuX29zY0xpbmtTZXJ2aWNlLHRoaXMuY29yZU1vdXNlU2VydmljZSx0aGlzLnVuaWNvZGVTZXJ2aWNlKSksdGhpcy5yZWdpc3RlcigoMCxsLmZvcndhcmRFdmVudCkodGhpcy5faW5wdXRIYW5kbGVyLm9uTGluZUZlZWQsdGhpcy5fb25MaW5lRmVlZCkpLHRoaXMucmVnaXN0ZXIodGhpcy5faW5wdXRIYW5kbGVyKSx0aGlzLnJlZ2lzdGVyKCgwLGwuZm9yd2FyZEV2ZW50KSh0aGlzLl9idWZmZXJTZXJ2aWNlLm9uUmVzaXplLHRoaXMuX29uUmVzaXplKSksdGhpcy5yZWdpc3RlcigoMCxsLmZvcndhcmRFdmVudCkodGhpcy5jb3JlU2VydmljZS5vbkRhdGEsdGhpcy5fb25EYXRhKSksdGhpcy5yZWdpc3RlcigoMCxsLmZvcndhcmRFdmVudCkodGhpcy5jb3JlU2VydmljZS5vbkJpbmFyeSx0aGlzLl9vbkJpbmFyeSkpLHRoaXMucmVnaXN0ZXIodGhpcy5jb3JlU2VydmljZS5vblJlcXVlc3RTY3JvbGxUb0JvdHRvbSgoKCk9PnRoaXMuc2Nyb2xsVG9Cb3R0b20oKSkpKSx0aGlzLnJlZ2lzdGVyKHRoaXMuY29yZVNlcnZpY2Uub25Vc2VySW5wdXQoKCgpPT50aGlzLl93cml0ZUJ1ZmZlci5oYW5kbGVVc2VySW5wdXQoKSkpKSx0aGlzLnJlZ2lzdGVyKHRoaXMub3B0aW9uc1NlcnZpY2Uub25NdWx0aXBsZU9wdGlvbkNoYW5nZShbXCJ3aW5kb3dzTW9kZVwiLFwid2luZG93c1B0eVwiXSwoKCk9PnRoaXMuX2hhbmRsZVdpbmRvd3NQdHlPcHRpb25DaGFuZ2UoKSkpKSx0aGlzLnJlZ2lzdGVyKHRoaXMuX2J1ZmZlclNlcnZpY2Uub25TY3JvbGwoKGU9Pnt0aGlzLl9vblNjcm9sbC5maXJlKHtwb3NpdGlvbjp0aGlzLl9idWZmZXJTZXJ2aWNlLmJ1ZmZlci55ZGlzcCxzb3VyY2U6MH0pLHRoaXMuX2lucHV0SGFuZGxlci5tYXJrUmFuZ2VEaXJ0eSh0aGlzLl9idWZmZXJTZXJ2aWNlLmJ1ZmZlci5zY3JvbGxUb3AsdGhpcy5fYnVmZmVyU2VydmljZS5idWZmZXIuc2Nyb2xsQm90dG9tKX0pKSksdGhpcy5yZWdpc3Rlcih0aGlzLl9pbnB1dEhhbmRsZXIub25TY3JvbGwoKGU9Pnt0aGlzLl9vblNjcm9sbC5maXJlKHtwb3NpdGlvbjp0aGlzLl9idWZmZXJTZXJ2aWNlLmJ1ZmZlci55ZGlzcCxzb3VyY2U6MH0pLHRoaXMuX2lucHV0SGFuZGxlci5tYXJrUmFuZ2VEaXJ0eSh0aGlzLl9idWZmZXJTZXJ2aWNlLmJ1ZmZlci5zY3JvbGxUb3AsdGhpcy5fYnVmZmVyU2VydmljZS5idWZmZXIuc2Nyb2xsQm90dG9tKX0pKSksdGhpcy5fd3JpdGVCdWZmZXI9dGhpcy5yZWdpc3RlcihuZXcgcC5Xcml0ZUJ1ZmZlcigoKGUsdCk9PnRoaXMuX2lucHV0SGFuZGxlci5wYXJzZShlLHQpKSkpLHRoaXMucmVnaXN0ZXIoKDAsbC5mb3J3YXJkRXZlbnQpKHRoaXMuX3dyaXRlQnVmZmVyLm9uV3JpdGVQYXJzZWQsdGhpcy5fb25Xcml0ZVBhcnNlZCkpfXdyaXRlKGUsdCl7dGhpcy5fd3JpdGVCdWZmZXIud3JpdGUoZSx0KX13cml0ZVN5bmMoZSx0KXt0aGlzLl9sb2dTZXJ2aWNlLmxvZ0xldmVsPD1yLkxvZ0xldmVsRW51bS5XQVJOJiYhbSYmKHRoaXMuX2xvZ1NlcnZpY2Uud2FybihcIndyaXRlU3luYyBpcyB1bnJlbGlhYmxlIGFuZCB3aWxsIGJlIHJlbW92ZWQgc29vbi5cIiksbT0hMCksdGhpcy5fd3JpdGVCdWZmZXIud3JpdGVTeW5jKGUsdCl9cmVzaXplKGUsdCl7aXNOYU4oZSl8fGlzTmFOKHQpfHwoZT1NYXRoLm1heChlLGEuTUlOSU1VTV9DT0xTKSx0PU1hdGgubWF4KHQsYS5NSU5JTVVNX1JPV1MpLHRoaXMuX2J1ZmZlclNlcnZpY2UucmVzaXplKGUsdCkpfXNjcm9sbChlLHQ9ITEpe3RoaXMuX2J1ZmZlclNlcnZpY2Uuc2Nyb2xsKGUsdCl9c2Nyb2xsTGluZXMoZSx0LGkpe3RoaXMuX2J1ZmZlclNlcnZpY2Uuc2Nyb2xsTGluZXMoZSx0LGkpfXNjcm9sbFBhZ2VzKGUpe3RoaXMuc2Nyb2xsTGluZXMoZSoodGhpcy5yb3dzLTEpKX1zY3JvbGxUb1RvcCgpe3RoaXMuc2Nyb2xsTGluZXMoLXRoaXMuX2J1ZmZlclNlcnZpY2UuYnVmZmVyLnlkaXNwKX1zY3JvbGxUb0JvdHRvbSgpe3RoaXMuc2Nyb2xsTGluZXModGhpcy5fYnVmZmVyU2VydmljZS5idWZmZXIueWJhc2UtdGhpcy5fYnVmZmVyU2VydmljZS5idWZmZXIueWRpc3ApfXNjcm9sbFRvTGluZShlKXtjb25zdCB0PWUtdGhpcy5fYnVmZmVyU2VydmljZS5idWZmZXIueWRpc3A7MCE9PXQmJnRoaXMuc2Nyb2xsTGluZXModCl9cmVnaXN0ZXJFc2NIYW5kbGVyKGUsdCl7cmV0dXJuIHRoaXMuX2lucHV0SGFuZGxlci5yZWdpc3RlckVzY0hhbmRsZXIoZSx0KX1yZWdpc3RlckRjc0hhbmRsZXIoZSx0KXtyZXR1cm4gdGhpcy5faW5wdXRIYW5kbGVyLnJlZ2lzdGVyRGNzSGFuZGxlcihlLHQpfXJlZ2lzdGVyQ3NpSGFuZGxlcihlLHQpe3JldHVybiB0aGlzLl9pbnB1dEhhbmRsZXIucmVnaXN0ZXJDc2lIYW5kbGVyKGUsdCl9cmVnaXN0ZXJPc2NIYW5kbGVyKGUsdCl7cmV0dXJuIHRoaXMuX2lucHV0SGFuZGxlci5yZWdpc3Rlck9zY0hhbmRsZXIoZSx0KX1fc2V0dXAoKXt0aGlzLl9oYW5kbGVXaW5kb3dzUHR5T3B0aW9uQ2hhbmdlKCl9cmVzZXQoKXt0aGlzLl9pbnB1dEhhbmRsZXIucmVzZXQoKSx0aGlzLl9idWZmZXJTZXJ2aWNlLnJlc2V0KCksdGhpcy5fY2hhcnNldFNlcnZpY2UucmVzZXQoKSx0aGlzLmNvcmVTZXJ2aWNlLnJlc2V0KCksdGhpcy5jb3JlTW91c2VTZXJ2aWNlLnJlc2V0KCl9X2hhbmRsZVdpbmRvd3NQdHlPcHRpb25DaGFuZ2UoKXtsZXQgZT0hMTtjb25zdCB0PXRoaXMub3B0aW9uc1NlcnZpY2UucmF3T3B0aW9ucy53aW5kb3dzUHR5O3QmJnZvaWQgMCE9PXQuYnVpbGROdW1iZXImJnZvaWQgMCE9PXQuYnVpbGROdW1iZXI/ZT0hIShcImNvbnB0eVwiPT09dC5iYWNrZW5kJiZ0LmJ1aWxkTnVtYmVyPDIxMzc2KTp0aGlzLm9wdGlvbnNTZXJ2aWNlLnJhd09wdGlvbnMud2luZG93c01vZGUmJihlPSEwKSxlP3RoaXMuX2VuYWJsZVdpbmRvd3NXcmFwcGluZ0hldXJpc3RpY3MoKTp0aGlzLl93aW5kb3dzV3JhcHBpbmdIZXVyaXN0aWNzLmNsZWFyKCl9X2VuYWJsZVdpbmRvd3NXcmFwcGluZ0hldXJpc3RpY3MoKXtpZighdGhpcy5fd2luZG93c1dyYXBwaW5nSGV1cmlzdGljcy52YWx1ZSl7Y29uc3QgZT1bXTtlLnB1c2godGhpcy5vbkxpbmVGZWVkKGYudXBkYXRlV2luZG93c01vZGVXcmFwcGVkU3RhdGUuYmluZChudWxsLHRoaXMuX2J1ZmZlclNlcnZpY2UpKSksZS5wdXNoKHRoaXMucmVnaXN0ZXJDc2lIYW5kbGVyKHtmaW5hbDpcIkhcIn0sKCgpPT4oKDAsZi51cGRhdGVXaW5kb3dzTW9kZVdyYXBwZWRTdGF0ZSkodGhpcy5fYnVmZmVyU2VydmljZSksITEpKSkpLHRoaXMuX3dpbmRvd3NXcmFwcGluZ0hldXJpc3RpY3MudmFsdWU9KDAscy50b0Rpc3Bvc2FibGUpKCgoKT0+e2Zvcihjb25zdCB0IG9mIGUpdC5kaXNwb3NlKCl9KSl9fX10LkNvcmVUZXJtaW5hbD1TfSw4NDYwOihlLHQpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5mb3J3YXJkRXZlbnQ9dC5FdmVudEVtaXR0ZXI9dm9pZCAwLHQuRXZlbnRFbWl0dGVyPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5fbGlzdGVuZXJzPVtdLHRoaXMuX2Rpc3Bvc2VkPSExfWdldCBldmVudCgpe3JldHVybiB0aGlzLl9ldmVudHx8KHRoaXMuX2V2ZW50PWU9Pih0aGlzLl9saXN0ZW5lcnMucHVzaChlKSx7ZGlzcG9zZTooKT0+e2lmKCF0aGlzLl9kaXNwb3NlZClmb3IobGV0IHQ9MDt0PHRoaXMuX2xpc3RlbmVycy5sZW5ndGg7dCsrKWlmKHRoaXMuX2xpc3RlbmVyc1t0XT09PWUpcmV0dXJuIHZvaWQgdGhpcy5fbGlzdGVuZXJzLnNwbGljZSh0LDEpfX0pKSx0aGlzLl9ldmVudH1maXJlKGUsdCl7Y29uc3QgaT1bXTtmb3IobGV0IGU9MDtlPHRoaXMuX2xpc3RlbmVycy5sZW5ndGg7ZSsrKWkucHVzaCh0aGlzLl9saXN0ZW5lcnNbZV0pO2ZvcihsZXQgcz0wO3M8aS5sZW5ndGg7cysrKWlbc10uY2FsbCh2b2lkIDAsZSx0KX1kaXNwb3NlKCl7dGhpcy5jbGVhckxpc3RlbmVycygpLHRoaXMuX2Rpc3Bvc2VkPSEwfWNsZWFyTGlzdGVuZXJzKCl7dGhpcy5fbGlzdGVuZXJzJiYodGhpcy5fbGlzdGVuZXJzLmxlbmd0aD0wKX19LHQuZm9yd2FyZEV2ZW50PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUoKGU9PnQuZmlyZShlKSkpfX0sNTQzNTpmdW5jdGlvbihlLHQsaSl7dmFyIHM9dGhpcyYmdGhpcy5fX2RlY29yYXRlfHxmdW5jdGlvbihlLHQsaSxzKXt2YXIgcixuPWFyZ3VtZW50cy5sZW5ndGgsbz1uPDM/dDpudWxsPT09cz9zPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxpKTpzO2lmKFwib2JqZWN0XCI9PXR5cGVvZiBSZWZsZWN0JiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBSZWZsZWN0LmRlY29yYXRlKW89UmVmbGVjdC5kZWNvcmF0ZShlLHQsaSxzKTtlbHNlIGZvcih2YXIgYT1lLmxlbmd0aC0xO2E+PTA7YS0tKShyPWVbYV0pJiYobz0objwzP3Iobyk6bj4zP3IodCxpLG8pOnIodCxpKSl8fG8pO3JldHVybiBuPjMmJm8mJk9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGksbyksb30scj10aGlzJiZ0aGlzLl9fcGFyYW18fGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGkscyl7dChpLHMsZSl9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LklucHV0SGFuZGxlcj10LldpbmRvd3NPcHRpb25zUmVwb3J0VHlwZT12b2lkIDA7Y29uc3Qgbj1pKDI1ODQpLG89aSg3MTE2KSxhPWkoMjAxNSksaD1pKDg0NCksYz1pKDQ4MiksbD1pKDg0MzcpLGQ9aSg4NDYwKSxfPWkoNjQzKSx1PWkoNTExKSxmPWkoMzczNCksdj1pKDI1ODUpLHA9aSg2MjQyKSxnPWkoNjM1MSksbT1pKDU5NDEpLFM9e1wiKFwiOjAsXCIpXCI6MSxcIipcIjoyLFwiK1wiOjMsXCItXCI6MSxcIi5cIjoyfSxDPTEzMTA3MjtmdW5jdGlvbiBiKGUsdCl7aWYoZT4yNClyZXR1cm4gdC5zZXRXaW5MaW5lc3x8ITE7c3dpdGNoKGUpe2Nhc2UgMTpyZXR1cm4hIXQucmVzdG9yZVdpbjtjYXNlIDI6cmV0dXJuISF0Lm1pbmltaXplV2luO2Nhc2UgMzpyZXR1cm4hIXQuc2V0V2luUG9zaXRpb247Y2FzZSA0OnJldHVybiEhdC5zZXRXaW5TaXplUGl4ZWxzO2Nhc2UgNTpyZXR1cm4hIXQucmFpc2VXaW47Y2FzZSA2OnJldHVybiEhdC5sb3dlcldpbjtjYXNlIDc6cmV0dXJuISF0LnJlZnJlc2hXaW47Y2FzZSA4OnJldHVybiEhdC5zZXRXaW5TaXplQ2hhcnM7Y2FzZSA5OnJldHVybiEhdC5tYXhpbWl6ZVdpbjtjYXNlIDEwOnJldHVybiEhdC5mdWxsc2NyZWVuV2luO2Nhc2UgMTE6cmV0dXJuISF0LmdldFdpblN0YXRlO2Nhc2UgMTM6cmV0dXJuISF0LmdldFdpblBvc2l0aW9uO2Nhc2UgMTQ6cmV0dXJuISF0LmdldFdpblNpemVQaXhlbHM7Y2FzZSAxNTpyZXR1cm4hIXQuZ2V0U2NyZWVuU2l6ZVBpeGVscztjYXNlIDE2OnJldHVybiEhdC5nZXRDZWxsU2l6ZVBpeGVscztjYXNlIDE4OnJldHVybiEhdC5nZXRXaW5TaXplQ2hhcnM7Y2FzZSAxOTpyZXR1cm4hIXQuZ2V0U2NyZWVuU2l6ZUNoYXJzO2Nhc2UgMjA6cmV0dXJuISF0LmdldEljb25UaXRsZTtjYXNlIDIxOnJldHVybiEhdC5nZXRXaW5UaXRsZTtjYXNlIDIyOnJldHVybiEhdC5wdXNoVGl0bGU7Y2FzZSAyMzpyZXR1cm4hIXQucG9wVGl0bGU7Y2FzZSAyNDpyZXR1cm4hIXQuc2V0V2luTGluZXN9cmV0dXJuITF9dmFyIHk7IWZ1bmN0aW9uKGUpe2VbZS5HRVRfV0lOX1NJWkVfUElYRUxTPTBdPVwiR0VUX1dJTl9TSVpFX1BJWEVMU1wiLGVbZS5HRVRfQ0VMTF9TSVpFX1BJWEVMUz0xXT1cIkdFVF9DRUxMX1NJWkVfUElYRUxTXCJ9KHl8fCh0LldpbmRvd3NPcHRpb25zUmVwb3J0VHlwZT15PXt9KSk7bGV0IHc9MDtjbGFzcyBFIGV4dGVuZHMgaC5EaXNwb3NhYmxle2dldEF0dHJEYXRhKCl7cmV0dXJuIHRoaXMuX2N1ckF0dHJEYXRhfWNvbnN0cnVjdG9yKGUsdCxpLHMscixoLF8sZix2PW5ldyBhLkVzY2FwZVNlcXVlbmNlUGFyc2VyKXtzdXBlcigpLHRoaXMuX2J1ZmZlclNlcnZpY2U9ZSx0aGlzLl9jaGFyc2V0U2VydmljZT10LHRoaXMuX2NvcmVTZXJ2aWNlPWksdGhpcy5fbG9nU2VydmljZT1zLHRoaXMuX29wdGlvbnNTZXJ2aWNlPXIsdGhpcy5fb3NjTGlua1NlcnZpY2U9aCx0aGlzLl9jb3JlTW91c2VTZXJ2aWNlPV8sdGhpcy5fdW5pY29kZVNlcnZpY2U9Zix0aGlzLl9wYXJzZXI9dix0aGlzLl9wYXJzZUJ1ZmZlcj1uZXcgVWludDMyQXJyYXkoNDA5NiksdGhpcy5fc3RyaW5nRGVjb2Rlcj1uZXcgYy5TdHJpbmdUb1V0ZjMyLHRoaXMuX3V0ZjhEZWNvZGVyPW5ldyBjLlV0ZjhUb1V0ZjMyLHRoaXMuX3dvcmtDZWxsPW5ldyB1LkNlbGxEYXRhLHRoaXMuX3dpbmRvd1RpdGxlPVwiXCIsdGhpcy5faWNvbk5hbWU9XCJcIix0aGlzLl93aW5kb3dUaXRsZVN0YWNrPVtdLHRoaXMuX2ljb25OYW1lU3RhY2s9W10sdGhpcy5fY3VyQXR0ckRhdGE9bC5ERUZBVUxUX0FUVFJfREFUQS5jbG9uZSgpLHRoaXMuX2VyYXNlQXR0ckRhdGFJbnRlcm5hbD1sLkRFRkFVTFRfQVRUUl9EQVRBLmNsb25lKCksdGhpcy5fb25SZXF1ZXN0QmVsbD10aGlzLnJlZ2lzdGVyKG5ldyBkLkV2ZW50RW1pdHRlciksdGhpcy5vblJlcXVlc3RCZWxsPXRoaXMuX29uUmVxdWVzdEJlbGwuZXZlbnQsdGhpcy5fb25SZXF1ZXN0UmVmcmVzaFJvd3M9dGhpcy5yZWdpc3RlcihuZXcgZC5FdmVudEVtaXR0ZXIpLHRoaXMub25SZXF1ZXN0UmVmcmVzaFJvd3M9dGhpcy5fb25SZXF1ZXN0UmVmcmVzaFJvd3MuZXZlbnQsdGhpcy5fb25SZXF1ZXN0UmVzZXQ9dGhpcy5yZWdpc3RlcihuZXcgZC5FdmVudEVtaXR0ZXIpLHRoaXMub25SZXF1ZXN0UmVzZXQ9dGhpcy5fb25SZXF1ZXN0UmVzZXQuZXZlbnQsdGhpcy5fb25SZXF1ZXN0U2VuZEZvY3VzPXRoaXMucmVnaXN0ZXIobmV3IGQuRXZlbnRFbWl0dGVyKSx0aGlzLm9uUmVxdWVzdFNlbmRGb2N1cz10aGlzLl9vblJlcXVlc3RTZW5kRm9jdXMuZXZlbnQsdGhpcy5fb25SZXF1ZXN0U3luY1Njcm9sbEJhcj10aGlzLnJlZ2lzdGVyKG5ldyBkLkV2ZW50RW1pdHRlciksdGhpcy5vblJlcXVlc3RTeW5jU2Nyb2xsQmFyPXRoaXMuX29uUmVxdWVzdFN5bmNTY3JvbGxCYXIuZXZlbnQsdGhpcy5fb25SZXF1ZXN0V2luZG93c09wdGlvbnNSZXBvcnQ9dGhpcy5yZWdpc3RlcihuZXcgZC5FdmVudEVtaXR0ZXIpLHRoaXMub25SZXF1ZXN0V2luZG93c09wdGlvbnNSZXBvcnQ9dGhpcy5fb25SZXF1ZXN0V2luZG93c09wdGlvbnNSZXBvcnQuZXZlbnQsdGhpcy5fb25BMTF5Q2hhcj10aGlzLnJlZ2lzdGVyKG5ldyBkLkV2ZW50RW1pdHRlciksdGhpcy5vbkExMXlDaGFyPXRoaXMuX29uQTExeUNoYXIuZXZlbnQsdGhpcy5fb25BMTF5VGFiPXRoaXMucmVnaXN0ZXIobmV3IGQuRXZlbnRFbWl0dGVyKSx0aGlzLm9uQTExeVRhYj10aGlzLl9vbkExMXlUYWIuZXZlbnQsdGhpcy5fb25DdXJzb3JNb3ZlPXRoaXMucmVnaXN0ZXIobmV3IGQuRXZlbnRFbWl0dGVyKSx0aGlzLm9uQ3Vyc29yTW92ZT10aGlzLl9vbkN1cnNvck1vdmUuZXZlbnQsdGhpcy5fb25MaW5lRmVlZD10aGlzLnJlZ2lzdGVyKG5ldyBkLkV2ZW50RW1pdHRlciksdGhpcy5vbkxpbmVGZWVkPXRoaXMuX29uTGluZUZlZWQuZXZlbnQsdGhpcy5fb25TY3JvbGw9dGhpcy5yZWdpc3RlcihuZXcgZC5FdmVudEVtaXR0ZXIpLHRoaXMub25TY3JvbGw9dGhpcy5fb25TY3JvbGwuZXZlbnQsdGhpcy5fb25UaXRsZUNoYW5nZT10aGlzLnJlZ2lzdGVyKG5ldyBkLkV2ZW50RW1pdHRlciksdGhpcy5vblRpdGxlQ2hhbmdlPXRoaXMuX29uVGl0bGVDaGFuZ2UuZXZlbnQsdGhpcy5fb25Db2xvcj10aGlzLnJlZ2lzdGVyKG5ldyBkLkV2ZW50RW1pdHRlciksdGhpcy5vbkNvbG9yPXRoaXMuX29uQ29sb3IuZXZlbnQsdGhpcy5fcGFyc2VTdGFjaz17cGF1c2VkOiExLGN1cnNvclN0YXJ0WDowLGN1cnNvclN0YXJ0WTowLGRlY29kZWRMZW5ndGg6MCxwb3NpdGlvbjowfSx0aGlzLl9zcGVjaWFsQ29sb3JzPVsyNTYsMjU3LDI1OF0sdGhpcy5yZWdpc3Rlcih0aGlzLl9wYXJzZXIpLHRoaXMuX2RpcnR5Um93VHJhY2tlcj1uZXcgayh0aGlzLl9idWZmZXJTZXJ2aWNlKSx0aGlzLl9hY3RpdmVCdWZmZXI9dGhpcy5fYnVmZmVyU2VydmljZS5idWZmZXIsdGhpcy5yZWdpc3Rlcih0aGlzLl9idWZmZXJTZXJ2aWNlLmJ1ZmZlcnMub25CdWZmZXJBY3RpdmF0ZSgoZT0+dGhpcy5fYWN0aXZlQnVmZmVyPWUuYWN0aXZlQnVmZmVyKSkpLHRoaXMuX3BhcnNlci5zZXRDc2lIYW5kbGVyRmFsbGJhY2soKChlLHQpPT57dGhpcy5fbG9nU2VydmljZS5kZWJ1ZyhcIlVua25vd24gQ1NJIGNvZGU6IFwiLHtpZGVudGlmaWVyOnRoaXMuX3BhcnNlci5pZGVudFRvU3RyaW5nKGUpLHBhcmFtczp0LnRvQXJyYXkoKX0pfSkpLHRoaXMuX3BhcnNlci5zZXRFc2NIYW5kbGVyRmFsbGJhY2soKGU9Pnt0aGlzLl9sb2dTZXJ2aWNlLmRlYnVnKFwiVW5rbm93biBFU0MgY29kZTogXCIse2lkZW50aWZpZXI6dGhpcy5fcGFyc2VyLmlkZW50VG9TdHJpbmcoZSl9KX0pKSx0aGlzLl9wYXJzZXIuc2V0RXhlY3V0ZUhhbmRsZXJGYWxsYmFjaygoZT0+e3RoaXMuX2xvZ1NlcnZpY2UuZGVidWcoXCJVbmtub3duIEVYRUNVVEUgY29kZTogXCIse2NvZGU6ZX0pfSkpLHRoaXMuX3BhcnNlci5zZXRPc2NIYW5kbGVyRmFsbGJhY2soKChlLHQsaSk9Pnt0aGlzLl9sb2dTZXJ2aWNlLmRlYnVnKFwiVW5rbm93biBPU0MgY29kZTogXCIse2lkZW50aWZpZXI6ZSxhY3Rpb246dCxkYXRhOml9KX0pKSx0aGlzLl9wYXJzZXIuc2V0RGNzSGFuZGxlckZhbGxiYWNrKCgoZSx0LGkpPT57XCJIT09LXCI9PT10JiYoaT1pLnRvQXJyYXkoKSksdGhpcy5fbG9nU2VydmljZS5kZWJ1ZyhcIlVua25vd24gRENTIGNvZGU6IFwiLHtpZGVudGlmaWVyOnRoaXMuX3BhcnNlci5pZGVudFRvU3RyaW5nKGUpLGFjdGlvbjp0LHBheWxvYWQ6aX0pfSkpLHRoaXMuX3BhcnNlci5zZXRQcmludEhhbmRsZXIoKChlLHQsaSk9PnRoaXMucHJpbnQoZSx0LGkpKSksdGhpcy5fcGFyc2VyLnJlZ2lzdGVyQ3NpSGFuZGxlcih7ZmluYWw6XCJAXCJ9LChlPT50aGlzLmluc2VydENoYXJzKGUpKSksdGhpcy5fcGFyc2VyLnJlZ2lzdGVyQ3NpSGFuZGxlcih7aW50ZXJtZWRpYXRlczpcIiBcIixmaW5hbDpcIkBcIn0sKGU9PnRoaXMuc2Nyb2xsTGVmdChlKSkpLHRoaXMuX3BhcnNlci5yZWdpc3RlckNzaUhhbmRsZXIoe2ZpbmFsOlwiQVwifSwoZT0+dGhpcy5jdXJzb3JVcChlKSkpLHRoaXMuX3BhcnNlci5yZWdpc3RlckNzaUhhbmRsZXIoe2ludGVybWVkaWF0ZXM6XCIgXCIsZmluYWw6XCJBXCJ9LChlPT50aGlzLnNjcm9sbFJpZ2h0KGUpKSksdGhpcy5fcGFyc2VyLnJlZ2lzdGVyQ3NpSGFuZGxlcih7ZmluYWw6XCJCXCJ9LChlPT50aGlzLmN1cnNvckRvd24oZSkpKSx0aGlzLl9wYXJzZXIucmVnaXN0ZXJDc2lIYW5kbGVyKHtmaW5hbDpcIkNcIn0sKGU9PnRoaXMuY3Vyc29yRm9yd2FyZChlKSkpLHRoaXMuX3BhcnNlci5yZWdpc3RlckNzaUhhbmRsZXIoe2ZpbmFsOlwiRFwifSwoZT0+dGhpcy5jdXJzb3JCYWNrd2FyZChlKSkpLHRoaXMuX3BhcnNlci5yZWdpc3RlckNzaUhhbmRsZXIoe2ZpbmFsOlwiRVwifSwoZT0+dGhpcy5jdXJzb3JOZXh0TGluZShlKSkpLHRoaXMuX3BhcnNlci5yZWdpc3RlckNzaUhhbmRsZXIoe2ZpbmFsOlwiRlwifSwoZT0+dGhpcy5jdXJzb3JQcmVjZWRpbmdMaW5lKGUpKSksdGhpcy5fcGFyc2VyLnJlZ2lzdGVyQ3NpSGFuZGxlcih7ZmluYWw6XCJHXCJ9LChlPT50aGlzLmN1cnNvckNoYXJBYnNvbHV0ZShlKSkpLHRoaXMuX3BhcnNlci5yZWdpc3RlckNzaUhhbmRsZXIoe2ZpbmFsOlwiSFwifSwoZT0+dGhpcy5jdXJzb3JQb3NpdGlvbihlKSkpLHRoaXMuX3BhcnNlci5yZWdpc3RlckNzaUhhbmRsZXIoe2ZpbmFsOlwiSVwifSwoZT0+dGhpcy5jdXJzb3JGb3J3YXJkVGFiKGUpKSksdGhpcy5fcGFyc2VyLnJlZ2lzdGVyQ3NpSGFuZGxlcih7ZmluYWw6XCJKXCJ9LChlPT50aGlzLmVyYXNlSW5EaXNwbGF5KGUsITEpKSksdGhpcy5fcGFyc2VyLnJlZ2lzdGVyQ3NpSGFuZGxlcih7cHJlZml4OlwiP1wiLGZpbmFsOlwiSlwifSwoZT0+dGhpcy5lcmFzZUluRGlzcGxheShlLCEwKSkpLHRoaXMuX3BhcnNlci5yZWdpc3RlckNzaUhhbmRsZXIoe2ZpbmFsOlwiS1wifSwoZT0+dGhpcy5lcmFzZUluTGluZShlLCExKSkpLHRoaXMuX3BhcnNlci5yZWdpc3RlckNzaUhhbmRsZXIoe3ByZWZpeDpcIj9cIixmaW5hbDpcIktcIn0sKGU9PnRoaXMuZXJhc2VJbkxpbmUoZSwhMCkpKSx0aGlzLl9wYXJzZXIucmVnaXN0ZXJDc2lIYW5kbGVyKHtmaW5hbDpcIkxcIn0sKGU9PnRoaXMuaW5zZXJ0TGluZXMoZSkpKSx0aGlzLl9wYXJzZXIucmVnaXN0ZXJDc2lIYW5kbGVyKHtmaW5hbDpcIk1cIn0sKGU9PnRoaXMuZGVsZXRlTGluZXMoZSkpKSx0aGlzLl9wYXJzZXIucmVnaXN0ZXJDc2lIYW5kbGVyKHtmaW5hbDpcIlBcIn0sKGU9PnRoaXMuZGVsZXRlQ2hhcnMoZSkpKSx0aGlzLl9wYXJzZXIucmVnaXN0ZXJDc2lIYW5kbGVyKHtmaW5hbDpcIlNcIn0sKGU9PnRoaXMuc2Nyb2xsVXAoZSkpKSx0aGlzLl9wYXJzZXIucmVnaXN0ZXJDc2lIYW5kbGVyKHtmaW5hbDpcIlRcIn0sKGU9PnRoaXMuc2Nyb2xsRG93bihlKSkpLHRoaXMuX3BhcnNlci5yZWdpc3RlckNzaUhhbmRsZXIoe2ZpbmFsOlwiWFwifSwoZT0+dGhpcy5lcmFzZUNoYXJzKGUpKSksdGhpcy5fcGFyc2VyLnJlZ2lzdGVyQ3NpSGFuZGxlcih7ZmluYWw6XCJaXCJ9LChlPT50aGlzLmN1cnNvckJhY2t3YXJkVGFiKGUpKSksdGhpcy5fcGFyc2VyLnJlZ2lzdGVyQ3NpSGFuZGxlcih7ZmluYWw6XCJgXCJ9LChlPT50aGlzLmNoYXJQb3NBYnNvbHV0ZShlKSkpLHRoaXMuX3BhcnNlci5yZWdpc3RlckNzaUhhbmRsZXIoe2ZpbmFsOlwiYVwifSwoZT0+dGhpcy5oUG9zaXRpb25SZWxhdGl2ZShlKSkpLHRoaXMuX3BhcnNlci5yZWdpc3RlckNzaUhhbmRsZXIoe2ZpbmFsOlwiYlwifSwoZT0+dGhpcy5yZXBlYXRQcmVjZWRpbmdDaGFyYWN0ZXIoZSkpKSx0aGlzLl9wYXJzZXIucmVnaXN0ZXJDc2lIYW5kbGVyKHtmaW5hbDpcImNcIn0sKGU9PnRoaXMuc2VuZERldmljZUF0dHJpYnV0ZXNQcmltYXJ5KGUpKSksdGhpcy5fcGFyc2VyLnJlZ2lzdGVyQ3NpSGFuZGxlcih7cHJlZml4OlwiPlwiLGZpbmFsOlwiY1wifSwoZT0+dGhpcy5zZW5kRGV2aWNlQXR0cmlidXRlc1NlY29uZGFyeShlKSkpLHRoaXMuX3BhcnNlci5yZWdpc3RlckNzaUhhbmRsZXIoe2ZpbmFsOlwiZFwifSwoZT0+dGhpcy5saW5lUG9zQWJzb2x1dGUoZSkpKSx0aGlzLl9wYXJzZXIucmVnaXN0ZXJDc2lIYW5kbGVyKHtmaW5hbDpcImVcIn0sKGU9PnRoaXMudlBvc2l0aW9uUmVsYXRpdmUoZSkpKSx0aGlzLl9wYXJzZXIucmVnaXN0ZXJDc2lIYW5kbGVyKHtmaW5hbDpcImZcIn0sKGU9PnRoaXMuaFZQb3NpdGlvbihlKSkpLHRoaXMuX3BhcnNlci5yZWdpc3RlckNzaUhhbmRsZXIoe2ZpbmFsOlwiZ1wifSwoZT0+dGhpcy50YWJDbGVhcihlKSkpLHRoaXMuX3BhcnNlci5yZWdpc3RlckNzaUhhbmRsZXIoe2ZpbmFsOlwiaFwifSwoZT0+dGhpcy5zZXRNb2RlKGUpKSksdGhpcy5fcGFyc2VyLnJlZ2lzdGVyQ3NpSGFuZGxlcih7cHJlZml4OlwiP1wiLGZpbmFsOlwiaFwifSwoZT0+dGhpcy5zZXRNb2RlUHJpdmF0ZShlKSkpLHRoaXMuX3BhcnNlci5yZWdpc3RlckNzaUhhbmRsZXIoe2ZpbmFsOlwibFwifSwoZT0+dGhpcy5yZXNldE1vZGUoZSkpKSx0aGlzLl9wYXJzZXIucmVnaXN0ZXJDc2lIYW5kbGVyKHtwcmVmaXg6XCI/XCIsZmluYWw6XCJsXCJ9LChlPT50aGlzLnJlc2V0TW9kZVByaXZhdGUoZSkpKSx0aGlzLl9wYXJzZXIucmVnaXN0ZXJDc2lIYW5kbGVyKHtmaW5hbDpcIm1cIn0sKGU9PnRoaXMuY2hhckF0dHJpYnV0ZXMoZSkpKSx0aGlzLl9wYXJzZXIucmVnaXN0ZXJDc2lIYW5kbGVyKHtmaW5hbDpcIm5cIn0sKGU9PnRoaXMuZGV2aWNlU3RhdHVzKGUpKSksdGhpcy5fcGFyc2VyLnJlZ2lzdGVyQ3NpSGFuZGxlcih7cHJlZml4OlwiP1wiLGZpbmFsOlwiblwifSwoZT0+dGhpcy5kZXZpY2VTdGF0dXNQcml2YXRlKGUpKSksdGhpcy5fcGFyc2VyLnJlZ2lzdGVyQ3NpSGFuZGxlcih7aW50ZXJtZWRpYXRlczpcIiFcIixmaW5hbDpcInBcIn0sKGU9PnRoaXMuc29mdFJlc2V0KGUpKSksdGhpcy5fcGFyc2VyLnJlZ2lzdGVyQ3NpSGFuZGxlcih7aW50ZXJtZWRpYXRlczpcIiBcIixmaW5hbDpcInFcIn0sKGU9PnRoaXMuc2V0Q3Vyc29yU3R5bGUoZSkpKSx0aGlzLl9wYXJzZXIucmVnaXN0ZXJDc2lIYW5kbGVyKHtmaW5hbDpcInJcIn0sKGU9PnRoaXMuc2V0U2Nyb2xsUmVnaW9uKGUpKSksdGhpcy5fcGFyc2VyLnJlZ2lzdGVyQ3NpSGFuZGxlcih7ZmluYWw6XCJzXCJ9LChlPT50aGlzLnNhdmVDdXJzb3IoZSkpKSx0aGlzLl9wYXJzZXIucmVnaXN0ZXJDc2lIYW5kbGVyKHtmaW5hbDpcInRcIn0sKGU9PnRoaXMud2luZG93T3B0aW9ucyhlKSkpLHRoaXMuX3BhcnNlci5yZWdpc3RlckNzaUhhbmRsZXIoe2ZpbmFsOlwidVwifSwoZT0+dGhpcy5yZXN0b3JlQ3Vyc29yKGUpKSksdGhpcy5fcGFyc2VyLnJlZ2lzdGVyQ3NpSGFuZGxlcih7aW50ZXJtZWRpYXRlczpcIidcIixmaW5hbDpcIn1cIn0sKGU9PnRoaXMuaW5zZXJ0Q29sdW1ucyhlKSkpLHRoaXMuX3BhcnNlci5yZWdpc3RlckNzaUhhbmRsZXIoe2ludGVybWVkaWF0ZXM6XCInXCIsZmluYWw6XCJ+XCJ9LChlPT50aGlzLmRlbGV0ZUNvbHVtbnMoZSkpKSx0aGlzLl9wYXJzZXIucmVnaXN0ZXJDc2lIYW5kbGVyKHtpbnRlcm1lZGlhdGVzOidcIicsZmluYWw6XCJxXCJ9LChlPT50aGlzLnNlbGVjdFByb3RlY3RlZChlKSkpLHRoaXMuX3BhcnNlci5yZWdpc3RlckNzaUhhbmRsZXIoe2ludGVybWVkaWF0ZXM6XCIkXCIsZmluYWw6XCJwXCJ9LChlPT50aGlzLnJlcXVlc3RNb2RlKGUsITApKSksdGhpcy5fcGFyc2VyLnJlZ2lzdGVyQ3NpSGFuZGxlcih7cHJlZml4OlwiP1wiLGludGVybWVkaWF0ZXM6XCIkXCIsZmluYWw6XCJwXCJ9LChlPT50aGlzLnJlcXVlc3RNb2RlKGUsITEpKSksdGhpcy5fcGFyc2VyLnNldEV4ZWN1dGVIYW5kbGVyKG4uQzAuQkVMLCgoKT0+dGhpcy5iZWxsKCkpKSx0aGlzLl9wYXJzZXIuc2V0RXhlY3V0ZUhhbmRsZXIobi5DMC5MRiwoKCk9PnRoaXMubGluZUZlZWQoKSkpLHRoaXMuX3BhcnNlci5zZXRFeGVjdXRlSGFuZGxlcihuLkMwLlZULCgoKT0+dGhpcy5saW5lRmVlZCgpKSksdGhpcy5fcGFyc2VyLnNldEV4ZWN1dGVIYW5kbGVyKG4uQzAuRkYsKCgpPT50aGlzLmxpbmVGZWVkKCkpKSx0aGlzLl9wYXJzZXIuc2V0RXhlY3V0ZUhhbmRsZXIobi5DMC5DUiwoKCk9PnRoaXMuY2FycmlhZ2VSZXR1cm4oKSkpLHRoaXMuX3BhcnNlci5zZXRFeGVjdXRlSGFuZGxlcihuLkMwLkJTLCgoKT0+dGhpcy5iYWNrc3BhY2UoKSkpLHRoaXMuX3BhcnNlci5zZXRFeGVjdXRlSGFuZGxlcihuLkMwLkhULCgoKT0+dGhpcy50YWIoKSkpLHRoaXMuX3BhcnNlci5zZXRFeGVjdXRlSGFuZGxlcihuLkMwLlNPLCgoKT0+dGhpcy5zaGlmdE91dCgpKSksdGhpcy5fcGFyc2VyLnNldEV4ZWN1dGVIYW5kbGVyKG4uQzAuU0ksKCgpPT50aGlzLnNoaWZ0SW4oKSkpLHRoaXMuX3BhcnNlci5zZXRFeGVjdXRlSGFuZGxlcihuLkMxLklORCwoKCk9PnRoaXMuaW5kZXgoKSkpLHRoaXMuX3BhcnNlci5zZXRFeGVjdXRlSGFuZGxlcihuLkMxLk5FTCwoKCk9PnRoaXMubmV4dExpbmUoKSkpLHRoaXMuX3BhcnNlci5zZXRFeGVjdXRlSGFuZGxlcihuLkMxLkhUUywoKCk9PnRoaXMudGFiU2V0KCkpKSx0aGlzLl9wYXJzZXIucmVnaXN0ZXJPc2NIYW5kbGVyKDAsbmV3IHAuT3NjSGFuZGxlcigoZT0+KHRoaXMuc2V0VGl0bGUoZSksdGhpcy5zZXRJY29uTmFtZShlKSwhMCkpKSksdGhpcy5fcGFyc2VyLnJlZ2lzdGVyT3NjSGFuZGxlcigxLG5ldyBwLk9zY0hhbmRsZXIoKGU9PnRoaXMuc2V0SWNvbk5hbWUoZSkpKSksdGhpcy5fcGFyc2VyLnJlZ2lzdGVyT3NjSGFuZGxlcigyLG5ldyBwLk9zY0hhbmRsZXIoKGU9PnRoaXMuc2V0VGl0bGUoZSkpKSksdGhpcy5fcGFyc2VyLnJlZ2lzdGVyT3NjSGFuZGxlcig0LG5ldyBwLk9zY0hhbmRsZXIoKGU9PnRoaXMuc2V0T3JSZXBvcnRJbmRleGVkQ29sb3IoZSkpKSksdGhpcy5fcGFyc2VyLnJlZ2lzdGVyT3NjSGFuZGxlcig4LG5ldyBwLk9zY0hhbmRsZXIoKGU9PnRoaXMuc2V0SHlwZXJsaW5rKGUpKSkpLHRoaXMuX3BhcnNlci5yZWdpc3Rlck9zY0hhbmRsZXIoMTAsbmV3IHAuT3NjSGFuZGxlcigoZT0+dGhpcy5zZXRPclJlcG9ydEZnQ29sb3IoZSkpKSksdGhpcy5fcGFyc2VyLnJlZ2lzdGVyT3NjSGFuZGxlcigxMSxuZXcgcC5Pc2NIYW5kbGVyKChlPT50aGlzLnNldE9yUmVwb3J0QmdDb2xvcihlKSkpKSx0aGlzLl9wYXJzZXIucmVnaXN0ZXJPc2NIYW5kbGVyKDEyLG5ldyBwLk9zY0hhbmRsZXIoKGU9PnRoaXMuc2V0T3JSZXBvcnRDdXJzb3JDb2xvcihlKSkpKSx0aGlzLl9wYXJzZXIucmVnaXN0ZXJPc2NIYW5kbGVyKDEwNCxuZXcgcC5Pc2NIYW5kbGVyKChlPT50aGlzLnJlc3RvcmVJbmRleGVkQ29sb3IoZSkpKSksdGhpcy5fcGFyc2VyLnJlZ2lzdGVyT3NjSGFuZGxlcigxMTAsbmV3IHAuT3NjSGFuZGxlcigoZT0+dGhpcy5yZXN0b3JlRmdDb2xvcihlKSkpKSx0aGlzLl9wYXJzZXIucmVnaXN0ZXJPc2NIYW5kbGVyKDExMSxuZXcgcC5Pc2NIYW5kbGVyKChlPT50aGlzLnJlc3RvcmVCZ0NvbG9yKGUpKSkpLHRoaXMuX3BhcnNlci5yZWdpc3Rlck9zY0hhbmRsZXIoMTEyLG5ldyBwLk9zY0hhbmRsZXIoKGU9PnRoaXMucmVzdG9yZUN1cnNvckNvbG9yKGUpKSkpLHRoaXMuX3BhcnNlci5yZWdpc3RlckVzY0hhbmRsZXIoe2ZpbmFsOlwiN1wifSwoKCk9PnRoaXMuc2F2ZUN1cnNvcigpKSksdGhpcy5fcGFyc2VyLnJlZ2lzdGVyRXNjSGFuZGxlcih7ZmluYWw6XCI4XCJ9LCgoKT0+dGhpcy5yZXN0b3JlQ3Vyc29yKCkpKSx0aGlzLl9wYXJzZXIucmVnaXN0ZXJFc2NIYW5kbGVyKHtmaW5hbDpcIkRcIn0sKCgpPT50aGlzLmluZGV4KCkpKSx0aGlzLl9wYXJzZXIucmVnaXN0ZXJFc2NIYW5kbGVyKHtmaW5hbDpcIkVcIn0sKCgpPT50aGlzLm5leHRMaW5lKCkpKSx0aGlzLl9wYXJzZXIucmVnaXN0ZXJFc2NIYW5kbGVyKHtmaW5hbDpcIkhcIn0sKCgpPT50aGlzLnRhYlNldCgpKSksdGhpcy5fcGFyc2VyLnJlZ2lzdGVyRXNjSGFuZGxlcih7ZmluYWw6XCJNXCJ9LCgoKT0+dGhpcy5yZXZlcnNlSW5kZXgoKSkpLHRoaXMuX3BhcnNlci5yZWdpc3RlckVzY0hhbmRsZXIoe2ZpbmFsOlwiPVwifSwoKCk9PnRoaXMua2V5cGFkQXBwbGljYXRpb25Nb2RlKCkpKSx0aGlzLl9wYXJzZXIucmVnaXN0ZXJFc2NIYW5kbGVyKHtmaW5hbDpcIj5cIn0sKCgpPT50aGlzLmtleXBhZE51bWVyaWNNb2RlKCkpKSx0aGlzLl9wYXJzZXIucmVnaXN0ZXJFc2NIYW5kbGVyKHtmaW5hbDpcImNcIn0sKCgpPT50aGlzLmZ1bGxSZXNldCgpKSksdGhpcy5fcGFyc2VyLnJlZ2lzdGVyRXNjSGFuZGxlcih7ZmluYWw6XCJuXCJ9LCgoKT0+dGhpcy5zZXRnTGV2ZWwoMikpKSx0aGlzLl9wYXJzZXIucmVnaXN0ZXJFc2NIYW5kbGVyKHtmaW5hbDpcIm9cIn0sKCgpPT50aGlzLnNldGdMZXZlbCgzKSkpLHRoaXMuX3BhcnNlci5yZWdpc3RlckVzY0hhbmRsZXIoe2ZpbmFsOlwifFwifSwoKCk9PnRoaXMuc2V0Z0xldmVsKDMpKSksdGhpcy5fcGFyc2VyLnJlZ2lzdGVyRXNjSGFuZGxlcih7ZmluYWw6XCJ9XCJ9LCgoKT0+dGhpcy5zZXRnTGV2ZWwoMikpKSx0aGlzLl9wYXJzZXIucmVnaXN0ZXJFc2NIYW5kbGVyKHtmaW5hbDpcIn5cIn0sKCgpPT50aGlzLnNldGdMZXZlbCgxKSkpLHRoaXMuX3BhcnNlci5yZWdpc3RlckVzY0hhbmRsZXIoe2ludGVybWVkaWF0ZXM6XCIlXCIsZmluYWw6XCJAXCJ9LCgoKT0+dGhpcy5zZWxlY3REZWZhdWx0Q2hhcnNldCgpKSksdGhpcy5fcGFyc2VyLnJlZ2lzdGVyRXNjSGFuZGxlcih7aW50ZXJtZWRpYXRlczpcIiVcIixmaW5hbDpcIkdcIn0sKCgpPT50aGlzLnNlbGVjdERlZmF1bHRDaGFyc2V0KCkpKTtmb3IoY29uc3QgZSBpbiBvLkNIQVJTRVRTKXRoaXMuX3BhcnNlci5yZWdpc3RlckVzY0hhbmRsZXIoe2ludGVybWVkaWF0ZXM6XCIoXCIsZmluYWw6ZX0sKCgpPT50aGlzLnNlbGVjdENoYXJzZXQoXCIoXCIrZSkpKSx0aGlzLl9wYXJzZXIucmVnaXN0ZXJFc2NIYW5kbGVyKHtpbnRlcm1lZGlhdGVzOlwiKVwiLGZpbmFsOmV9LCgoKT0+dGhpcy5zZWxlY3RDaGFyc2V0KFwiKVwiK2UpKSksdGhpcy5fcGFyc2VyLnJlZ2lzdGVyRXNjSGFuZGxlcih7aW50ZXJtZWRpYXRlczpcIipcIixmaW5hbDplfSwoKCk9PnRoaXMuc2VsZWN0Q2hhcnNldChcIipcIitlKSkpLHRoaXMuX3BhcnNlci5yZWdpc3RlckVzY0hhbmRsZXIoe2ludGVybWVkaWF0ZXM6XCIrXCIsZmluYWw6ZX0sKCgpPT50aGlzLnNlbGVjdENoYXJzZXQoXCIrXCIrZSkpKSx0aGlzLl9wYXJzZXIucmVnaXN0ZXJFc2NIYW5kbGVyKHtpbnRlcm1lZGlhdGVzOlwiLVwiLGZpbmFsOmV9LCgoKT0+dGhpcy5zZWxlY3RDaGFyc2V0KFwiLVwiK2UpKSksdGhpcy5fcGFyc2VyLnJlZ2lzdGVyRXNjSGFuZGxlcih7aW50ZXJtZWRpYXRlczpcIi5cIixmaW5hbDplfSwoKCk9PnRoaXMuc2VsZWN0Q2hhcnNldChcIi5cIitlKSkpLHRoaXMuX3BhcnNlci5yZWdpc3RlckVzY0hhbmRsZXIoe2ludGVybWVkaWF0ZXM6XCIvXCIsZmluYWw6ZX0sKCgpPT50aGlzLnNlbGVjdENoYXJzZXQoXCIvXCIrZSkpKTt0aGlzLl9wYXJzZXIucmVnaXN0ZXJFc2NIYW5kbGVyKHtpbnRlcm1lZGlhdGVzOlwiI1wiLGZpbmFsOlwiOFwifSwoKCk9PnRoaXMuc2NyZWVuQWxpZ25tZW50UGF0dGVybigpKSksdGhpcy5fcGFyc2VyLnNldEVycm9ySGFuZGxlcigoZT0+KHRoaXMuX2xvZ1NlcnZpY2UuZXJyb3IoXCJQYXJzaW5nIGVycm9yOiBcIixlKSxlKSkpLHRoaXMuX3BhcnNlci5yZWdpc3RlckRjc0hhbmRsZXIoe2ludGVybWVkaWF0ZXM6XCIkXCIsZmluYWw6XCJxXCJ9LG5ldyBnLkRjc0hhbmRsZXIoKChlLHQpPT50aGlzLnJlcXVlc3RTdGF0dXNTdHJpbmcoZSx0KSkpKX1fcHJlc2VydmVTdGFjayhlLHQsaSxzKXt0aGlzLl9wYXJzZVN0YWNrLnBhdXNlZD0hMCx0aGlzLl9wYXJzZVN0YWNrLmN1cnNvclN0YXJ0WD1lLHRoaXMuX3BhcnNlU3RhY2suY3Vyc29yU3RhcnRZPXQsdGhpcy5fcGFyc2VTdGFjay5kZWNvZGVkTGVuZ3RoPWksdGhpcy5fcGFyc2VTdGFjay5wb3NpdGlvbj1zfV9sb2dTbG93UmVzb2x2aW5nQXN5bmMoZSl7dGhpcy5fbG9nU2VydmljZS5sb2dMZXZlbDw9di5Mb2dMZXZlbEVudW0uV0FSTiYmUHJvbWlzZS5yYWNlKFtlLG5ldyBQcm9taXNlKCgoZSx0KT0+c2V0VGltZW91dCgoKCk9PnQoXCIjU0xPV19USU1FT1VUXCIpKSw1ZTMpKSldKS5jYXRjaCgoZT0+e2lmKFwiI1NMT1dfVElNRU9VVFwiIT09ZSl0aHJvdyBlO2NvbnNvbGUud2FybihcImFzeW5jIHBhcnNlciBoYW5kbGVyIHRha2luZyBsb25nZXIgdGhhbiA1MDAwIG1zXCIpfSkpfV9nZXRDdXJyZW50TGlua0lkKCl7cmV0dXJuIHRoaXMuX2N1ckF0dHJEYXRhLmV4dGVuZGVkLnVybElkfXBhcnNlKGUsdCl7bGV0IGkscz10aGlzLl9hY3RpdmVCdWZmZXIueCxyPXRoaXMuX2FjdGl2ZUJ1ZmZlci55LG49MDtjb25zdCBvPXRoaXMuX3BhcnNlU3RhY2sucGF1c2VkO2lmKG8pe2lmKGk9dGhpcy5fcGFyc2VyLnBhcnNlKHRoaXMuX3BhcnNlQnVmZmVyLHRoaXMuX3BhcnNlU3RhY2suZGVjb2RlZExlbmd0aCx0KSlyZXR1cm4gdGhpcy5fbG9nU2xvd1Jlc29sdmluZ0FzeW5jKGkpLGk7cz10aGlzLl9wYXJzZVN0YWNrLmN1cnNvclN0YXJ0WCxyPXRoaXMuX3BhcnNlU3RhY2suY3Vyc29yU3RhcnRZLHRoaXMuX3BhcnNlU3RhY2sucGF1c2VkPSExLGUubGVuZ3RoPkMmJihuPXRoaXMuX3BhcnNlU3RhY2sucG9zaXRpb24rQyl9aWYodGhpcy5fbG9nU2VydmljZS5sb2dMZXZlbDw9di5Mb2dMZXZlbEVudW0uREVCVUcmJnRoaXMuX2xvZ1NlcnZpY2UuZGVidWcoXCJwYXJzaW5nIGRhdGFcIisoXCJzdHJpbmdcIj09dHlwZW9mIGU/YCBcIiR7ZX1cImA6YCBcIiR7QXJyYXkucHJvdG90eXBlLm1hcC5jYWxsKGUsKGU9PlN0cmluZy5mcm9tQ2hhckNvZGUoZSkpKS5qb2luKFwiXCIpfVwiYCksXCJzdHJpbmdcIj09dHlwZW9mIGU/ZS5zcGxpdChcIlwiKS5tYXAoKGU9PmUuY2hhckNvZGVBdCgwKSkpOmUpLHRoaXMuX3BhcnNlQnVmZmVyLmxlbmd0aDxlLmxlbmd0aCYmdGhpcy5fcGFyc2VCdWZmZXIubGVuZ3RoPEMmJih0aGlzLl9wYXJzZUJ1ZmZlcj1uZXcgVWludDMyQXJyYXkoTWF0aC5taW4oZS5sZW5ndGgsQykpKSxvfHx0aGlzLl9kaXJ0eVJvd1RyYWNrZXIuY2xlYXJSYW5nZSgpLGUubGVuZ3RoPkMpZm9yKGxldCB0PW47dDxlLmxlbmd0aDt0Kz1DKXtjb25zdCBuPXQrQzxlLmxlbmd0aD90K0M6ZS5sZW5ndGgsbz1cInN0cmluZ1wiPT10eXBlb2YgZT90aGlzLl9zdHJpbmdEZWNvZGVyLmRlY29kZShlLnN1YnN0cmluZyh0LG4pLHRoaXMuX3BhcnNlQnVmZmVyKTp0aGlzLl91dGY4RGVjb2Rlci5kZWNvZGUoZS5zdWJhcnJheSh0LG4pLHRoaXMuX3BhcnNlQnVmZmVyKTtpZihpPXRoaXMuX3BhcnNlci5wYXJzZSh0aGlzLl9wYXJzZUJ1ZmZlcixvKSlyZXR1cm4gdGhpcy5fcHJlc2VydmVTdGFjayhzLHIsbyx0KSx0aGlzLl9sb2dTbG93UmVzb2x2aW5nQXN5bmMoaSksaX1lbHNlIGlmKCFvKXtjb25zdCB0PVwic3RyaW5nXCI9PXR5cGVvZiBlP3RoaXMuX3N0cmluZ0RlY29kZXIuZGVjb2RlKGUsdGhpcy5fcGFyc2VCdWZmZXIpOnRoaXMuX3V0ZjhEZWNvZGVyLmRlY29kZShlLHRoaXMuX3BhcnNlQnVmZmVyKTtpZihpPXRoaXMuX3BhcnNlci5wYXJzZSh0aGlzLl9wYXJzZUJ1ZmZlcix0KSlyZXR1cm4gdGhpcy5fcHJlc2VydmVTdGFjayhzLHIsdCwwKSx0aGlzLl9sb2dTbG93UmVzb2x2aW5nQXN5bmMoaSksaX10aGlzLl9hY3RpdmVCdWZmZXIueD09PXMmJnRoaXMuX2FjdGl2ZUJ1ZmZlci55PT09cnx8dGhpcy5fb25DdXJzb3JNb3ZlLmZpcmUoKSx0aGlzLl9vblJlcXVlc3RSZWZyZXNoUm93cy5maXJlKHRoaXMuX2RpcnR5Um93VHJhY2tlci5zdGFydCx0aGlzLl9kaXJ0eVJvd1RyYWNrZXIuZW5kKX1wcmludChlLHQsaSl7bGV0IHMscjtjb25zdCBuPXRoaXMuX2NoYXJzZXRTZXJ2aWNlLmNoYXJzZXQsbz10aGlzLl9vcHRpb25zU2VydmljZS5yYXdPcHRpb25zLnNjcmVlblJlYWRlck1vZGUsYT10aGlzLl9idWZmZXJTZXJ2aWNlLmNvbHMsaD10aGlzLl9jb3JlU2VydmljZS5kZWNQcml2YXRlTW9kZXMud3JhcGFyb3VuZCxsPXRoaXMuX2NvcmVTZXJ2aWNlLm1vZGVzLmluc2VydE1vZGUsZD10aGlzLl9jdXJBdHRyRGF0YTtsZXQgdT10aGlzLl9hY3RpdmVCdWZmZXIubGluZXMuZ2V0KHRoaXMuX2FjdGl2ZUJ1ZmZlci55YmFzZSt0aGlzLl9hY3RpdmVCdWZmZXIueSk7dGhpcy5fZGlydHlSb3dUcmFja2VyLm1hcmtEaXJ0eSh0aGlzLl9hY3RpdmVCdWZmZXIueSksdGhpcy5fYWN0aXZlQnVmZmVyLngmJmktdD4wJiYyPT09dS5nZXRXaWR0aCh0aGlzLl9hY3RpdmVCdWZmZXIueC0xKSYmdS5zZXRDZWxsRnJvbUNvZGVQb2ludCh0aGlzLl9hY3RpdmVCdWZmZXIueC0xLDAsMSxkLmZnLGQuYmcsZC5leHRlbmRlZCk7Zm9yKGxldCBmPXQ7ZjxpOysrZil7aWYocz1lW2ZdLHI9dGhpcy5fdW5pY29kZVNlcnZpY2Uud2N3aWR0aChzKSxzPDEyNyYmbil7Y29uc3QgZT1uW1N0cmluZy5mcm9tQ2hhckNvZGUocyldO2UmJihzPWUuY2hhckNvZGVBdCgwKSl9aWYobyYmdGhpcy5fb25BMTF5Q2hhci5maXJlKCgwLGMuc3RyaW5nRnJvbUNvZGVQb2ludCkocykpLHRoaXMuX2dldEN1cnJlbnRMaW5rSWQoKSYmdGhpcy5fb3NjTGlua1NlcnZpY2UuYWRkTGluZVRvTGluayh0aGlzLl9nZXRDdXJyZW50TGlua0lkKCksdGhpcy5fYWN0aXZlQnVmZmVyLnliYXNlK3RoaXMuX2FjdGl2ZUJ1ZmZlci55KSxyfHwhdGhpcy5fYWN0aXZlQnVmZmVyLngpe2lmKHRoaXMuX2FjdGl2ZUJ1ZmZlci54K3ItMT49YSlpZihoKXtmb3IoO3RoaXMuX2FjdGl2ZUJ1ZmZlci54PGE7KXUuc2V0Q2VsbEZyb21Db2RlUG9pbnQodGhpcy5fYWN0aXZlQnVmZmVyLngrKywwLDEsZC5mZyxkLmJnLGQuZXh0ZW5kZWQpO3RoaXMuX2FjdGl2ZUJ1ZmZlci54PTAsdGhpcy5fYWN0aXZlQnVmZmVyLnkrKyx0aGlzLl9hY3RpdmVCdWZmZXIueT09PXRoaXMuX2FjdGl2ZUJ1ZmZlci5zY3JvbGxCb3R0b20rMT8odGhpcy5fYWN0aXZlQnVmZmVyLnktLSx0aGlzLl9idWZmZXJTZXJ2aWNlLnNjcm9sbCh0aGlzLl9lcmFzZUF0dHJEYXRhKCksITApKToodGhpcy5fYWN0aXZlQnVmZmVyLnk+PXRoaXMuX2J1ZmZlclNlcnZpY2Uucm93cyYmKHRoaXMuX2FjdGl2ZUJ1ZmZlci55PXRoaXMuX2J1ZmZlclNlcnZpY2Uucm93cy0xKSx0aGlzLl9hY3RpdmVCdWZmZXIubGluZXMuZ2V0KHRoaXMuX2FjdGl2ZUJ1ZmZlci55YmFzZSt0aGlzLl9hY3RpdmVCdWZmZXIueSkuaXNXcmFwcGVkPSEwKSx1PXRoaXMuX2FjdGl2ZUJ1ZmZlci5saW5lcy5nZXQodGhpcy5fYWN0aXZlQnVmZmVyLnliYXNlK3RoaXMuX2FjdGl2ZUJ1ZmZlci55KX1lbHNlIGlmKHRoaXMuX2FjdGl2ZUJ1ZmZlci54PWEtMSwyPT09ciljb250aW51ZTtpZihsJiYodS5pbnNlcnRDZWxscyh0aGlzLl9hY3RpdmVCdWZmZXIueCxyLHRoaXMuX2FjdGl2ZUJ1ZmZlci5nZXROdWxsQ2VsbChkKSxkKSwyPT09dS5nZXRXaWR0aChhLTEpJiZ1LnNldENlbGxGcm9tQ29kZVBvaW50KGEtMSxfLk5VTExfQ0VMTF9DT0RFLF8uTlVMTF9DRUxMX1dJRFRILGQuZmcsZC5iZyxkLmV4dGVuZGVkKSksdS5zZXRDZWxsRnJvbUNvZGVQb2ludCh0aGlzLl9hY3RpdmVCdWZmZXIueCsrLHMscixkLmZnLGQuYmcsZC5leHRlbmRlZCkscj4wKWZvcig7LS1yOyl1LnNldENlbGxGcm9tQ29kZVBvaW50KHRoaXMuX2FjdGl2ZUJ1ZmZlci54KyssMCwwLGQuZmcsZC5iZyxkLmV4dGVuZGVkKX1lbHNlIHUuZ2V0V2lkdGgodGhpcy5fYWN0aXZlQnVmZmVyLngtMSk/dS5hZGRDb2RlcG9pbnRUb0NlbGwodGhpcy5fYWN0aXZlQnVmZmVyLngtMSxzKTp1LmFkZENvZGVwb2ludFRvQ2VsbCh0aGlzLl9hY3RpdmVCdWZmZXIueC0yLHMpfWktdD4wJiYodS5sb2FkQ2VsbCh0aGlzLl9hY3RpdmVCdWZmZXIueC0xLHRoaXMuX3dvcmtDZWxsKSwyPT09dGhpcy5fd29ya0NlbGwuZ2V0V2lkdGgoKXx8dGhpcy5fd29ya0NlbGwuZ2V0Q29kZSgpPjY1NTM1P3RoaXMuX3BhcnNlci5wcmVjZWRpbmdDb2RlcG9pbnQ9MDp0aGlzLl93b3JrQ2VsbC5pc0NvbWJpbmVkKCk/dGhpcy5fcGFyc2VyLnByZWNlZGluZ0NvZGVwb2ludD10aGlzLl93b3JrQ2VsbC5nZXRDaGFycygpLmNoYXJDb2RlQXQoMCk6dGhpcy5fcGFyc2VyLnByZWNlZGluZ0NvZGVwb2ludD10aGlzLl93b3JrQ2VsbC5jb250ZW50KSx0aGlzLl9hY3RpdmVCdWZmZXIueDxhJiZpLXQ+MCYmMD09PXUuZ2V0V2lkdGgodGhpcy5fYWN0aXZlQnVmZmVyLngpJiYhdS5oYXNDb250ZW50KHRoaXMuX2FjdGl2ZUJ1ZmZlci54KSYmdS5zZXRDZWxsRnJvbUNvZGVQb2ludCh0aGlzLl9hY3RpdmVCdWZmZXIueCwwLDEsZC5mZyxkLmJnLGQuZXh0ZW5kZWQpLHRoaXMuX2RpcnR5Um93VHJhY2tlci5tYXJrRGlydHkodGhpcy5fYWN0aXZlQnVmZmVyLnkpfXJlZ2lzdGVyQ3NpSGFuZGxlcihlLHQpe3JldHVyblwidFwiIT09ZS5maW5hbHx8ZS5wcmVmaXh8fGUuaW50ZXJtZWRpYXRlcz90aGlzLl9wYXJzZXIucmVnaXN0ZXJDc2lIYW5kbGVyKGUsdCk6dGhpcy5fcGFyc2VyLnJlZ2lzdGVyQ3NpSGFuZGxlcihlLChlPT4hYihlLnBhcmFtc1swXSx0aGlzLl9vcHRpb25zU2VydmljZS5yYXdPcHRpb25zLndpbmRvd09wdGlvbnMpfHx0KGUpKSl9cmVnaXN0ZXJEY3NIYW5kbGVyKGUsdCl7cmV0dXJuIHRoaXMuX3BhcnNlci5yZWdpc3RlckRjc0hhbmRsZXIoZSxuZXcgZy5EY3NIYW5kbGVyKHQpKX1yZWdpc3RlckVzY0hhbmRsZXIoZSx0KXtyZXR1cm4gdGhpcy5fcGFyc2VyLnJlZ2lzdGVyRXNjSGFuZGxlcihlLHQpfXJlZ2lzdGVyT3NjSGFuZGxlcihlLHQpe3JldHVybiB0aGlzLl9wYXJzZXIucmVnaXN0ZXJPc2NIYW5kbGVyKGUsbmV3IHAuT3NjSGFuZGxlcih0KSl9YmVsbCgpe3JldHVybiB0aGlzLl9vblJlcXVlc3RCZWxsLmZpcmUoKSwhMH1saW5lRmVlZCgpe3JldHVybiB0aGlzLl9kaXJ0eVJvd1RyYWNrZXIubWFya0RpcnR5KHRoaXMuX2FjdGl2ZUJ1ZmZlci55KSx0aGlzLl9vcHRpb25zU2VydmljZS5yYXdPcHRpb25zLmNvbnZlcnRFb2wmJih0aGlzLl9hY3RpdmVCdWZmZXIueD0wKSx0aGlzLl9hY3RpdmVCdWZmZXIueSsrLHRoaXMuX2FjdGl2ZUJ1ZmZlci55PT09dGhpcy5fYWN0aXZlQnVmZmVyLnNjcm9sbEJvdHRvbSsxPyh0aGlzLl9hY3RpdmVCdWZmZXIueS0tLHRoaXMuX2J1ZmZlclNlcnZpY2Uuc2Nyb2xsKHRoaXMuX2VyYXNlQXR0ckRhdGEoKSkpOnRoaXMuX2FjdGl2ZUJ1ZmZlci55Pj10aGlzLl9idWZmZXJTZXJ2aWNlLnJvd3M/dGhpcy5fYWN0aXZlQnVmZmVyLnk9dGhpcy5fYnVmZmVyU2VydmljZS5yb3dzLTE6dGhpcy5fYWN0aXZlQnVmZmVyLmxpbmVzLmdldCh0aGlzLl9hY3RpdmVCdWZmZXIueWJhc2UrdGhpcy5fYWN0aXZlQnVmZmVyLnkpLmlzV3JhcHBlZD0hMSx0aGlzLl9hY3RpdmVCdWZmZXIueD49dGhpcy5fYnVmZmVyU2VydmljZS5jb2xzJiZ0aGlzLl9hY3RpdmVCdWZmZXIueC0tLHRoaXMuX2RpcnR5Um93VHJhY2tlci5tYXJrRGlydHkodGhpcy5fYWN0aXZlQnVmZmVyLnkpLHRoaXMuX29uTGluZUZlZWQuZmlyZSgpLCEwfWNhcnJpYWdlUmV0dXJuKCl7cmV0dXJuIHRoaXMuX2FjdGl2ZUJ1ZmZlci54PTAsITB9YmFja3NwYWNlKCl7dmFyIGU7aWYoIXRoaXMuX2NvcmVTZXJ2aWNlLmRlY1ByaXZhdGVNb2Rlcy5yZXZlcnNlV3JhcGFyb3VuZClyZXR1cm4gdGhpcy5fcmVzdHJpY3RDdXJzb3IoKSx0aGlzLl9hY3RpdmVCdWZmZXIueD4wJiZ0aGlzLl9hY3RpdmVCdWZmZXIueC0tLCEwO2lmKHRoaXMuX3Jlc3RyaWN0Q3Vyc29yKHRoaXMuX2J1ZmZlclNlcnZpY2UuY29scyksdGhpcy5fYWN0aXZlQnVmZmVyLng+MCl0aGlzLl9hY3RpdmVCdWZmZXIueC0tO2Vsc2UgaWYoMD09PXRoaXMuX2FjdGl2ZUJ1ZmZlci54JiZ0aGlzLl9hY3RpdmVCdWZmZXIueT50aGlzLl9hY3RpdmVCdWZmZXIuc2Nyb2xsVG9wJiZ0aGlzLl9hY3RpdmVCdWZmZXIueTw9dGhpcy5fYWN0aXZlQnVmZmVyLnNjcm9sbEJvdHRvbSYmKG51bGw9PT0oZT10aGlzLl9hY3RpdmVCdWZmZXIubGluZXMuZ2V0KHRoaXMuX2FjdGl2ZUJ1ZmZlci55YmFzZSt0aGlzLl9hY3RpdmVCdWZmZXIueSkpfHx2b2lkIDA9PT1lP3ZvaWQgMDplLmlzV3JhcHBlZCkpe3RoaXMuX2FjdGl2ZUJ1ZmZlci5saW5lcy5nZXQodGhpcy5fYWN0aXZlQnVmZmVyLnliYXNlK3RoaXMuX2FjdGl2ZUJ1ZmZlci55KS5pc1dyYXBwZWQ9ITEsdGhpcy5fYWN0aXZlQnVmZmVyLnktLSx0aGlzLl9hY3RpdmVCdWZmZXIueD10aGlzLl9idWZmZXJTZXJ2aWNlLmNvbHMtMTtjb25zdCBlPXRoaXMuX2FjdGl2ZUJ1ZmZlci5saW5lcy5nZXQodGhpcy5fYWN0aXZlQnVmZmVyLnliYXNlK3RoaXMuX2FjdGl2ZUJ1ZmZlci55KTtlLmhhc1dpZHRoKHRoaXMuX2FjdGl2ZUJ1ZmZlci54KSYmIWUuaGFzQ29udGVudCh0aGlzLl9hY3RpdmVCdWZmZXIueCkmJnRoaXMuX2FjdGl2ZUJ1ZmZlci54LS19cmV0dXJuIHRoaXMuX3Jlc3RyaWN0Q3Vyc29yKCksITB9dGFiKCl7aWYodGhpcy5fYWN0aXZlQnVmZmVyLng+PXRoaXMuX2J1ZmZlclNlcnZpY2UuY29scylyZXR1cm4hMDtjb25zdCBlPXRoaXMuX2FjdGl2ZUJ1ZmZlci54O3JldHVybiB0aGlzLl9hY3RpdmVCdWZmZXIueD10aGlzLl9hY3RpdmVCdWZmZXIubmV4dFN0b3AoKSx0aGlzLl9vcHRpb25zU2VydmljZS5yYXdPcHRpb25zLnNjcmVlblJlYWRlck1vZGUmJnRoaXMuX29uQTExeVRhYi5maXJlKHRoaXMuX2FjdGl2ZUJ1ZmZlci54LWUpLCEwfXNoaWZ0T3V0KCl7cmV0dXJuIHRoaXMuX2NoYXJzZXRTZXJ2aWNlLnNldGdMZXZlbCgxKSwhMH1zaGlmdEluKCl7cmV0dXJuIHRoaXMuX2NoYXJzZXRTZXJ2aWNlLnNldGdMZXZlbCgwKSwhMH1fcmVzdHJpY3RDdXJzb3IoZT10aGlzLl9idWZmZXJTZXJ2aWNlLmNvbHMtMSl7dGhpcy5fYWN0aXZlQnVmZmVyLng9TWF0aC5taW4oZSxNYXRoLm1heCgwLHRoaXMuX2FjdGl2ZUJ1ZmZlci54KSksdGhpcy5fYWN0aXZlQnVmZmVyLnk9dGhpcy5fY29yZVNlcnZpY2UuZGVjUHJpdmF0ZU1vZGVzLm9yaWdpbj9NYXRoLm1pbih0aGlzLl9hY3RpdmVCdWZmZXIuc2Nyb2xsQm90dG9tLE1hdGgubWF4KHRoaXMuX2FjdGl2ZUJ1ZmZlci5zY3JvbGxUb3AsdGhpcy5fYWN0aXZlQnVmZmVyLnkpKTpNYXRoLm1pbih0aGlzLl9idWZmZXJTZXJ2aWNlLnJvd3MtMSxNYXRoLm1heCgwLHRoaXMuX2FjdGl2ZUJ1ZmZlci55KSksdGhpcy5fZGlydHlSb3dUcmFja2VyLm1hcmtEaXJ0eSh0aGlzLl9hY3RpdmVCdWZmZXIueSl9X3NldEN1cnNvcihlLHQpe3RoaXMuX2RpcnR5Um93VHJhY2tlci5tYXJrRGlydHkodGhpcy5fYWN0aXZlQnVmZmVyLnkpLHRoaXMuX2NvcmVTZXJ2aWNlLmRlY1ByaXZhdGVNb2Rlcy5vcmlnaW4/KHRoaXMuX2FjdGl2ZUJ1ZmZlci54PWUsdGhpcy5fYWN0aXZlQnVmZmVyLnk9dGhpcy5fYWN0aXZlQnVmZmVyLnNjcm9sbFRvcCt0KToodGhpcy5fYWN0aXZlQnVmZmVyLng9ZSx0aGlzLl9hY3RpdmVCdWZmZXIueT10KSx0aGlzLl9yZXN0cmljdEN1cnNvcigpLHRoaXMuX2RpcnR5Um93VHJhY2tlci5tYXJrRGlydHkodGhpcy5fYWN0aXZlQnVmZmVyLnkpfV9tb3ZlQ3Vyc29yKGUsdCl7dGhpcy5fcmVzdHJpY3RDdXJzb3IoKSx0aGlzLl9zZXRDdXJzb3IodGhpcy5fYWN0aXZlQnVmZmVyLngrZSx0aGlzLl9hY3RpdmVCdWZmZXIueSt0KX1jdXJzb3JVcChlKXtjb25zdCB0PXRoaXMuX2FjdGl2ZUJ1ZmZlci55LXRoaXMuX2FjdGl2ZUJ1ZmZlci5zY3JvbGxUb3A7cmV0dXJuIHQ+PTA/dGhpcy5fbW92ZUN1cnNvcigwLC1NYXRoLm1pbih0LGUucGFyYW1zWzBdfHwxKSk6dGhpcy5fbW92ZUN1cnNvcigwLC0oZS5wYXJhbXNbMF18fDEpKSwhMH1jdXJzb3JEb3duKGUpe2NvbnN0IHQ9dGhpcy5fYWN0aXZlQnVmZmVyLnNjcm9sbEJvdHRvbS10aGlzLl9hY3RpdmVCdWZmZXIueTtyZXR1cm4gdD49MD90aGlzLl9tb3ZlQ3Vyc29yKDAsTWF0aC5taW4odCxlLnBhcmFtc1swXXx8MSkpOnRoaXMuX21vdmVDdXJzb3IoMCxlLnBhcmFtc1swXXx8MSksITB9Y3Vyc29yRm9yd2FyZChlKXtyZXR1cm4gdGhpcy5fbW92ZUN1cnNvcihlLnBhcmFtc1swXXx8MSwwKSwhMH1jdXJzb3JCYWNrd2FyZChlKXtyZXR1cm4gdGhpcy5fbW92ZUN1cnNvcigtKGUucGFyYW1zWzBdfHwxKSwwKSwhMH1jdXJzb3JOZXh0TGluZShlKXtyZXR1cm4gdGhpcy5jdXJzb3JEb3duKGUpLHRoaXMuX2FjdGl2ZUJ1ZmZlci54PTAsITB9Y3Vyc29yUHJlY2VkaW5nTGluZShlKXtyZXR1cm4gdGhpcy5jdXJzb3JVcChlKSx0aGlzLl9hY3RpdmVCdWZmZXIueD0wLCEwfWN1cnNvckNoYXJBYnNvbHV0ZShlKXtyZXR1cm4gdGhpcy5fc2V0Q3Vyc29yKChlLnBhcmFtc1swXXx8MSktMSx0aGlzLl9hY3RpdmVCdWZmZXIueSksITB9Y3Vyc29yUG9zaXRpb24oZSl7cmV0dXJuIHRoaXMuX3NldEN1cnNvcihlLmxlbmd0aD49Mj8oZS5wYXJhbXNbMV18fDEpLTE6MCwoZS5wYXJhbXNbMF18fDEpLTEpLCEwfWNoYXJQb3NBYnNvbHV0ZShlKXtyZXR1cm4gdGhpcy5fc2V0Q3Vyc29yKChlLnBhcmFtc1swXXx8MSktMSx0aGlzLl9hY3RpdmVCdWZmZXIueSksITB9aFBvc2l0aW9uUmVsYXRpdmUoZSl7cmV0dXJuIHRoaXMuX21vdmVDdXJzb3IoZS5wYXJhbXNbMF18fDEsMCksITB9bGluZVBvc0Fic29sdXRlKGUpe3JldHVybiB0aGlzLl9zZXRDdXJzb3IodGhpcy5fYWN0aXZlQnVmZmVyLngsKGUucGFyYW1zWzBdfHwxKS0xKSwhMH12UG9zaXRpb25SZWxhdGl2ZShlKXtyZXR1cm4gdGhpcy5fbW92ZUN1cnNvcigwLGUucGFyYW1zWzBdfHwxKSwhMH1oVlBvc2l0aW9uKGUpe3JldHVybiB0aGlzLmN1cnNvclBvc2l0aW9uKGUpLCEwfXRhYkNsZWFyKGUpe2NvbnN0IHQ9ZS5wYXJhbXNbMF07cmV0dXJuIDA9PT10P2RlbGV0ZSB0aGlzLl9hY3RpdmVCdWZmZXIudGFic1t0aGlzLl9hY3RpdmVCdWZmZXIueF06Mz09PXQmJih0aGlzLl9hY3RpdmVCdWZmZXIudGFicz17fSksITB9Y3Vyc29yRm9yd2FyZFRhYihlKXtpZih0aGlzLl9hY3RpdmVCdWZmZXIueD49dGhpcy5fYnVmZmVyU2VydmljZS5jb2xzKXJldHVybiEwO2xldCB0PWUucGFyYW1zWzBdfHwxO2Zvcig7dC0tOyl0aGlzLl9hY3RpdmVCdWZmZXIueD10aGlzLl9hY3RpdmVCdWZmZXIubmV4dFN0b3AoKTtyZXR1cm4hMH1jdXJzb3JCYWNrd2FyZFRhYihlKXtpZih0aGlzLl9hY3RpdmVCdWZmZXIueD49dGhpcy5fYnVmZmVyU2VydmljZS5jb2xzKXJldHVybiEwO2xldCB0PWUucGFyYW1zWzBdfHwxO2Zvcig7dC0tOyl0aGlzLl9hY3RpdmVCdWZmZXIueD10aGlzLl9hY3RpdmVCdWZmZXIucHJldlN0b3AoKTtyZXR1cm4hMH1zZWxlY3RQcm90ZWN0ZWQoZSl7Y29uc3QgdD1lLnBhcmFtc1swXTtyZXR1cm4gMT09PXQmJih0aGlzLl9jdXJBdHRyRGF0YS5iZ3w9NTM2ODcwOTEyKSwyIT09dCYmMCE9PXR8fCh0aGlzLl9jdXJBdHRyRGF0YS5iZyY9LTUzNjg3MDkxMyksITB9X2VyYXNlSW5CdWZmZXJMaW5lKGUsdCxpLHM9ITEscj0hMSl7Y29uc3Qgbj10aGlzLl9hY3RpdmVCdWZmZXIubGluZXMuZ2V0KHRoaXMuX2FjdGl2ZUJ1ZmZlci55YmFzZStlKTtuLnJlcGxhY2VDZWxscyh0LGksdGhpcy5fYWN0aXZlQnVmZmVyLmdldE51bGxDZWxsKHRoaXMuX2VyYXNlQXR0ckRhdGEoKSksdGhpcy5fZXJhc2VBdHRyRGF0YSgpLHIpLHMmJihuLmlzV3JhcHBlZD0hMSl9X3Jlc2V0QnVmZmVyTGluZShlLHQ9ITEpe2NvbnN0IGk9dGhpcy5fYWN0aXZlQnVmZmVyLmxpbmVzLmdldCh0aGlzLl9hY3RpdmVCdWZmZXIueWJhc2UrZSk7aSYmKGkuZmlsbCh0aGlzLl9hY3RpdmVCdWZmZXIuZ2V0TnVsbENlbGwodGhpcy5fZXJhc2VBdHRyRGF0YSgpKSx0KSx0aGlzLl9idWZmZXJTZXJ2aWNlLmJ1ZmZlci5jbGVhck1hcmtlcnModGhpcy5fYWN0aXZlQnVmZmVyLnliYXNlK2UpLGkuaXNXcmFwcGVkPSExKX1lcmFzZUluRGlzcGxheShlLHQ9ITEpe2xldCBpO3N3aXRjaCh0aGlzLl9yZXN0cmljdEN1cnNvcih0aGlzLl9idWZmZXJTZXJ2aWNlLmNvbHMpLGUucGFyYW1zWzBdKXtjYXNlIDA6Zm9yKGk9dGhpcy5fYWN0aXZlQnVmZmVyLnksdGhpcy5fZGlydHlSb3dUcmFja2VyLm1hcmtEaXJ0eShpKSx0aGlzLl9lcmFzZUluQnVmZmVyTGluZShpKyssdGhpcy5fYWN0aXZlQnVmZmVyLngsdGhpcy5fYnVmZmVyU2VydmljZS5jb2xzLDA9PT10aGlzLl9hY3RpdmVCdWZmZXIueCx0KTtpPHRoaXMuX2J1ZmZlclNlcnZpY2Uucm93cztpKyspdGhpcy5fcmVzZXRCdWZmZXJMaW5lKGksdCk7dGhpcy5fZGlydHlSb3dUcmFja2VyLm1hcmtEaXJ0eShpKTticmVhaztjYXNlIDE6Zm9yKGk9dGhpcy5fYWN0aXZlQnVmZmVyLnksdGhpcy5fZGlydHlSb3dUcmFja2VyLm1hcmtEaXJ0eShpKSx0aGlzLl9lcmFzZUluQnVmZmVyTGluZShpLDAsdGhpcy5fYWN0aXZlQnVmZmVyLngrMSwhMCx0KSx0aGlzLl9hY3RpdmVCdWZmZXIueCsxPj10aGlzLl9idWZmZXJTZXJ2aWNlLmNvbHMmJih0aGlzLl9hY3RpdmVCdWZmZXIubGluZXMuZ2V0KGkrMSkuaXNXcmFwcGVkPSExKTtpLS07KXRoaXMuX3Jlc2V0QnVmZmVyTGluZShpLHQpO3RoaXMuX2RpcnR5Um93VHJhY2tlci5tYXJrRGlydHkoMCk7YnJlYWs7Y2FzZSAyOmZvcihpPXRoaXMuX2J1ZmZlclNlcnZpY2Uucm93cyx0aGlzLl9kaXJ0eVJvd1RyYWNrZXIubWFya0RpcnR5KGktMSk7aS0tOyl0aGlzLl9yZXNldEJ1ZmZlckxpbmUoaSx0KTt0aGlzLl9kaXJ0eVJvd1RyYWNrZXIubWFya0RpcnR5KDApO2JyZWFrO2Nhc2UgMzpjb25zdCBlPXRoaXMuX2FjdGl2ZUJ1ZmZlci5saW5lcy5sZW5ndGgtdGhpcy5fYnVmZmVyU2VydmljZS5yb3dzO2U+MCYmKHRoaXMuX2FjdGl2ZUJ1ZmZlci5saW5lcy50cmltU3RhcnQoZSksdGhpcy5fYWN0aXZlQnVmZmVyLnliYXNlPU1hdGgubWF4KHRoaXMuX2FjdGl2ZUJ1ZmZlci55YmFzZS1lLDApLHRoaXMuX2FjdGl2ZUJ1ZmZlci55ZGlzcD1NYXRoLm1heCh0aGlzLl9hY3RpdmVCdWZmZXIueWRpc3AtZSwwKSx0aGlzLl9vblNjcm9sbC5maXJlKDApKX1yZXR1cm4hMH1lcmFzZUluTGluZShlLHQ9ITEpe3N3aXRjaCh0aGlzLl9yZXN0cmljdEN1cnNvcih0aGlzLl9idWZmZXJTZXJ2aWNlLmNvbHMpLGUucGFyYW1zWzBdKXtjYXNlIDA6dGhpcy5fZXJhc2VJbkJ1ZmZlckxpbmUodGhpcy5fYWN0aXZlQnVmZmVyLnksdGhpcy5fYWN0aXZlQnVmZmVyLngsdGhpcy5fYnVmZmVyU2VydmljZS5jb2xzLDA9PT10aGlzLl9hY3RpdmVCdWZmZXIueCx0KTticmVhaztjYXNlIDE6dGhpcy5fZXJhc2VJbkJ1ZmZlckxpbmUodGhpcy5fYWN0aXZlQnVmZmVyLnksMCx0aGlzLl9hY3RpdmVCdWZmZXIueCsxLCExLHQpO2JyZWFrO2Nhc2UgMjp0aGlzLl9lcmFzZUluQnVmZmVyTGluZSh0aGlzLl9hY3RpdmVCdWZmZXIueSwwLHRoaXMuX2J1ZmZlclNlcnZpY2UuY29scywhMCx0KX1yZXR1cm4gdGhpcy5fZGlydHlSb3dUcmFja2VyLm1hcmtEaXJ0eSh0aGlzLl9hY3RpdmVCdWZmZXIueSksITB9aW5zZXJ0TGluZXMoZSl7dGhpcy5fcmVzdHJpY3RDdXJzb3IoKTtsZXQgdD1lLnBhcmFtc1swXXx8MTtpZih0aGlzLl9hY3RpdmVCdWZmZXIueT50aGlzLl9hY3RpdmVCdWZmZXIuc2Nyb2xsQm90dG9tfHx0aGlzLl9hY3RpdmVCdWZmZXIueTx0aGlzLl9hY3RpdmVCdWZmZXIuc2Nyb2xsVG9wKXJldHVybiEwO2NvbnN0IGk9dGhpcy5fYWN0aXZlQnVmZmVyLnliYXNlK3RoaXMuX2FjdGl2ZUJ1ZmZlci55LHM9dGhpcy5fYnVmZmVyU2VydmljZS5yb3dzLTEtdGhpcy5fYWN0aXZlQnVmZmVyLnNjcm9sbEJvdHRvbSxyPXRoaXMuX2J1ZmZlclNlcnZpY2Uucm93cy0xK3RoaXMuX2FjdGl2ZUJ1ZmZlci55YmFzZS1zKzE7Zm9yKDt0LS07KXRoaXMuX2FjdGl2ZUJ1ZmZlci5saW5lcy5zcGxpY2Uoci0xLDEpLHRoaXMuX2FjdGl2ZUJ1ZmZlci5saW5lcy5zcGxpY2UoaSwwLHRoaXMuX2FjdGl2ZUJ1ZmZlci5nZXRCbGFua0xpbmUodGhpcy5fZXJhc2VBdHRyRGF0YSgpKSk7cmV0dXJuIHRoaXMuX2RpcnR5Um93VHJhY2tlci5tYXJrUmFuZ2VEaXJ0eSh0aGlzLl9hY3RpdmVCdWZmZXIueSx0aGlzLl9hY3RpdmVCdWZmZXIuc2Nyb2xsQm90dG9tKSx0aGlzLl9hY3RpdmVCdWZmZXIueD0wLCEwfWRlbGV0ZUxpbmVzKGUpe3RoaXMuX3Jlc3RyaWN0Q3Vyc29yKCk7bGV0IHQ9ZS5wYXJhbXNbMF18fDE7aWYodGhpcy5fYWN0aXZlQnVmZmVyLnk+dGhpcy5fYWN0aXZlQnVmZmVyLnNjcm9sbEJvdHRvbXx8dGhpcy5fYWN0aXZlQnVmZmVyLnk8dGhpcy5fYWN0aXZlQnVmZmVyLnNjcm9sbFRvcClyZXR1cm4hMDtjb25zdCBpPXRoaXMuX2FjdGl2ZUJ1ZmZlci55YmFzZSt0aGlzLl9hY3RpdmVCdWZmZXIueTtsZXQgcztmb3Iocz10aGlzLl9idWZmZXJTZXJ2aWNlLnJvd3MtMS10aGlzLl9hY3RpdmVCdWZmZXIuc2Nyb2xsQm90dG9tLHM9dGhpcy5fYnVmZmVyU2VydmljZS5yb3dzLTErdGhpcy5fYWN0aXZlQnVmZmVyLnliYXNlLXM7dC0tOyl0aGlzLl9hY3RpdmVCdWZmZXIubGluZXMuc3BsaWNlKGksMSksdGhpcy5fYWN0aXZlQnVmZmVyLmxpbmVzLnNwbGljZShzLDAsdGhpcy5fYWN0aXZlQnVmZmVyLmdldEJsYW5rTGluZSh0aGlzLl9lcmFzZUF0dHJEYXRhKCkpKTtyZXR1cm4gdGhpcy5fZGlydHlSb3dUcmFja2VyLm1hcmtSYW5nZURpcnR5KHRoaXMuX2FjdGl2ZUJ1ZmZlci55LHRoaXMuX2FjdGl2ZUJ1ZmZlci5zY3JvbGxCb3R0b20pLHRoaXMuX2FjdGl2ZUJ1ZmZlci54PTAsITB9aW5zZXJ0Q2hhcnMoZSl7dGhpcy5fcmVzdHJpY3RDdXJzb3IoKTtjb25zdCB0PXRoaXMuX2FjdGl2ZUJ1ZmZlci5saW5lcy5nZXQodGhpcy5fYWN0aXZlQnVmZmVyLnliYXNlK3RoaXMuX2FjdGl2ZUJ1ZmZlci55KTtyZXR1cm4gdCYmKHQuaW5zZXJ0Q2VsbHModGhpcy5fYWN0aXZlQnVmZmVyLngsZS5wYXJhbXNbMF18fDEsdGhpcy5fYWN0aXZlQnVmZmVyLmdldE51bGxDZWxsKHRoaXMuX2VyYXNlQXR0ckRhdGEoKSksdGhpcy5fZXJhc2VBdHRyRGF0YSgpKSx0aGlzLl9kaXJ0eVJvd1RyYWNrZXIubWFya0RpcnR5KHRoaXMuX2FjdGl2ZUJ1ZmZlci55KSksITB9ZGVsZXRlQ2hhcnMoZSl7dGhpcy5fcmVzdHJpY3RDdXJzb3IoKTtjb25zdCB0PXRoaXMuX2FjdGl2ZUJ1ZmZlci5saW5lcy5nZXQodGhpcy5fYWN0aXZlQnVmZmVyLnliYXNlK3RoaXMuX2FjdGl2ZUJ1ZmZlci55KTtyZXR1cm4gdCYmKHQuZGVsZXRlQ2VsbHModGhpcy5fYWN0aXZlQnVmZmVyLngsZS5wYXJhbXNbMF18fDEsdGhpcy5fYWN0aXZlQnVmZmVyLmdldE51bGxDZWxsKHRoaXMuX2VyYXNlQXR0ckRhdGEoKSksdGhpcy5fZXJhc2VBdHRyRGF0YSgpKSx0aGlzLl9kaXJ0eVJvd1RyYWNrZXIubWFya0RpcnR5KHRoaXMuX2FjdGl2ZUJ1ZmZlci55KSksITB9c2Nyb2xsVXAoZSl7bGV0IHQ9ZS5wYXJhbXNbMF18fDE7Zm9yKDt0LS07KXRoaXMuX2FjdGl2ZUJ1ZmZlci5saW5lcy5zcGxpY2UodGhpcy5fYWN0aXZlQnVmZmVyLnliYXNlK3RoaXMuX2FjdGl2ZUJ1ZmZlci5zY3JvbGxUb3AsMSksdGhpcy5fYWN0aXZlQnVmZmVyLmxpbmVzLnNwbGljZSh0aGlzLl9hY3RpdmVCdWZmZXIueWJhc2UrdGhpcy5fYWN0aXZlQnVmZmVyLnNjcm9sbEJvdHRvbSwwLHRoaXMuX2FjdGl2ZUJ1ZmZlci5nZXRCbGFua0xpbmUodGhpcy5fZXJhc2VBdHRyRGF0YSgpKSk7cmV0dXJuIHRoaXMuX2RpcnR5Um93VHJhY2tlci5tYXJrUmFuZ2VEaXJ0eSh0aGlzLl9hY3RpdmVCdWZmZXIuc2Nyb2xsVG9wLHRoaXMuX2FjdGl2ZUJ1ZmZlci5zY3JvbGxCb3R0b20pLCEwfXNjcm9sbERvd24oZSl7bGV0IHQ9ZS5wYXJhbXNbMF18fDE7Zm9yKDt0LS07KXRoaXMuX2FjdGl2ZUJ1ZmZlci5saW5lcy5zcGxpY2UodGhpcy5fYWN0aXZlQnVmZmVyLnliYXNlK3RoaXMuX2FjdGl2ZUJ1ZmZlci5zY3JvbGxCb3R0b20sMSksdGhpcy5fYWN0aXZlQnVmZmVyLmxpbmVzLnNwbGljZSh0aGlzLl9hY3RpdmVCdWZmZXIueWJhc2UrdGhpcy5fYWN0aXZlQnVmZmVyLnNjcm9sbFRvcCwwLHRoaXMuX2FjdGl2ZUJ1ZmZlci5nZXRCbGFua0xpbmUobC5ERUZBVUxUX0FUVFJfREFUQSkpO3JldHVybiB0aGlzLl9kaXJ0eVJvd1RyYWNrZXIubWFya1JhbmdlRGlydHkodGhpcy5fYWN0aXZlQnVmZmVyLnNjcm9sbFRvcCx0aGlzLl9hY3RpdmVCdWZmZXIuc2Nyb2xsQm90dG9tKSwhMH1zY3JvbGxMZWZ0KGUpe2lmKHRoaXMuX2FjdGl2ZUJ1ZmZlci55PnRoaXMuX2FjdGl2ZUJ1ZmZlci5zY3JvbGxCb3R0b218fHRoaXMuX2FjdGl2ZUJ1ZmZlci55PHRoaXMuX2FjdGl2ZUJ1ZmZlci5zY3JvbGxUb3ApcmV0dXJuITA7Y29uc3QgdD1lLnBhcmFtc1swXXx8MTtmb3IobGV0IGU9dGhpcy5fYWN0aXZlQnVmZmVyLnNjcm9sbFRvcDtlPD10aGlzLl9hY3RpdmVCdWZmZXIuc2Nyb2xsQm90dG9tOysrZSl7Y29uc3QgaT10aGlzLl9hY3RpdmVCdWZmZXIubGluZXMuZ2V0KHRoaXMuX2FjdGl2ZUJ1ZmZlci55YmFzZStlKTtpLmRlbGV0ZUNlbGxzKDAsdCx0aGlzLl9hY3RpdmVCdWZmZXIuZ2V0TnVsbENlbGwodGhpcy5fZXJhc2VBdHRyRGF0YSgpKSx0aGlzLl9lcmFzZUF0dHJEYXRhKCkpLGkuaXNXcmFwcGVkPSExfXJldHVybiB0aGlzLl9kaXJ0eVJvd1RyYWNrZXIubWFya1JhbmdlRGlydHkodGhpcy5fYWN0aXZlQnVmZmVyLnNjcm9sbFRvcCx0aGlzLl9hY3RpdmVCdWZmZXIuc2Nyb2xsQm90dG9tKSwhMH1zY3JvbGxSaWdodChlKXtpZih0aGlzLl9hY3RpdmVCdWZmZXIueT50aGlzLl9hY3RpdmVCdWZmZXIuc2Nyb2xsQm90dG9tfHx0aGlzLl9hY3RpdmVCdWZmZXIueTx0aGlzLl9hY3RpdmVCdWZmZXIuc2Nyb2xsVG9wKXJldHVybiEwO2NvbnN0IHQ9ZS5wYXJhbXNbMF18fDE7Zm9yKGxldCBlPXRoaXMuX2FjdGl2ZUJ1ZmZlci5zY3JvbGxUb3A7ZTw9dGhpcy5fYWN0aXZlQnVmZmVyLnNjcm9sbEJvdHRvbTsrK2Upe2NvbnN0IGk9dGhpcy5fYWN0aXZlQnVmZmVyLmxpbmVzLmdldCh0aGlzLl9hY3RpdmVCdWZmZXIueWJhc2UrZSk7aS5pbnNlcnRDZWxscygwLHQsdGhpcy5fYWN0aXZlQnVmZmVyLmdldE51bGxDZWxsKHRoaXMuX2VyYXNlQXR0ckRhdGEoKSksdGhpcy5fZXJhc2VBdHRyRGF0YSgpKSxpLmlzV3JhcHBlZD0hMX1yZXR1cm4gdGhpcy5fZGlydHlSb3dUcmFja2VyLm1hcmtSYW5nZURpcnR5KHRoaXMuX2FjdGl2ZUJ1ZmZlci5zY3JvbGxUb3AsdGhpcy5fYWN0aXZlQnVmZmVyLnNjcm9sbEJvdHRvbSksITB9aW5zZXJ0Q29sdW1ucyhlKXtpZih0aGlzLl9hY3RpdmVCdWZmZXIueT50aGlzLl9hY3RpdmVCdWZmZXIuc2Nyb2xsQm90dG9tfHx0aGlzLl9hY3RpdmVCdWZmZXIueTx0aGlzLl9hY3RpdmVCdWZmZXIuc2Nyb2xsVG9wKXJldHVybiEwO2NvbnN0IHQ9ZS5wYXJhbXNbMF18fDE7Zm9yKGxldCBlPXRoaXMuX2FjdGl2ZUJ1ZmZlci5zY3JvbGxUb3A7ZTw9dGhpcy5fYWN0aXZlQnVmZmVyLnNjcm9sbEJvdHRvbTsrK2Upe2NvbnN0IGk9dGhpcy5fYWN0aXZlQnVmZmVyLmxpbmVzLmdldCh0aGlzLl9hY3RpdmVCdWZmZXIueWJhc2UrZSk7aS5pbnNlcnRDZWxscyh0aGlzLl9hY3RpdmVCdWZmZXIueCx0LHRoaXMuX2FjdGl2ZUJ1ZmZlci5nZXROdWxsQ2VsbCh0aGlzLl9lcmFzZUF0dHJEYXRhKCkpLHRoaXMuX2VyYXNlQXR0ckRhdGEoKSksaS5pc1dyYXBwZWQ9ITF9cmV0dXJuIHRoaXMuX2RpcnR5Um93VHJhY2tlci5tYXJrUmFuZ2VEaXJ0eSh0aGlzLl9hY3RpdmVCdWZmZXIuc2Nyb2xsVG9wLHRoaXMuX2FjdGl2ZUJ1ZmZlci5zY3JvbGxCb3R0b20pLCEwfWRlbGV0ZUNvbHVtbnMoZSl7aWYodGhpcy5fYWN0aXZlQnVmZmVyLnk+dGhpcy5fYWN0aXZlQnVmZmVyLnNjcm9sbEJvdHRvbXx8dGhpcy5fYWN0aXZlQnVmZmVyLnk8dGhpcy5fYWN0aXZlQnVmZmVyLnNjcm9sbFRvcClyZXR1cm4hMDtjb25zdCB0PWUucGFyYW1zWzBdfHwxO2ZvcihsZXQgZT10aGlzLl9hY3RpdmVCdWZmZXIuc2Nyb2xsVG9wO2U8PXRoaXMuX2FjdGl2ZUJ1ZmZlci5zY3JvbGxCb3R0b207KytlKXtjb25zdCBpPXRoaXMuX2FjdGl2ZUJ1ZmZlci5saW5lcy5nZXQodGhpcy5fYWN0aXZlQnVmZmVyLnliYXNlK2UpO2kuZGVsZXRlQ2VsbHModGhpcy5fYWN0aXZlQnVmZmVyLngsdCx0aGlzLl9hY3RpdmVCdWZmZXIuZ2V0TnVsbENlbGwodGhpcy5fZXJhc2VBdHRyRGF0YSgpKSx0aGlzLl9lcmFzZUF0dHJEYXRhKCkpLGkuaXNXcmFwcGVkPSExfXJldHVybiB0aGlzLl9kaXJ0eVJvd1RyYWNrZXIubWFya1JhbmdlRGlydHkodGhpcy5fYWN0aXZlQnVmZmVyLnNjcm9sbFRvcCx0aGlzLl9hY3RpdmVCdWZmZXIuc2Nyb2xsQm90dG9tKSwhMH1lcmFzZUNoYXJzKGUpe3RoaXMuX3Jlc3RyaWN0Q3Vyc29yKCk7Y29uc3QgdD10aGlzLl9hY3RpdmVCdWZmZXIubGluZXMuZ2V0KHRoaXMuX2FjdGl2ZUJ1ZmZlci55YmFzZSt0aGlzLl9hY3RpdmVCdWZmZXIueSk7cmV0dXJuIHQmJih0LnJlcGxhY2VDZWxscyh0aGlzLl9hY3RpdmVCdWZmZXIueCx0aGlzLl9hY3RpdmVCdWZmZXIueCsoZS5wYXJhbXNbMF18fDEpLHRoaXMuX2FjdGl2ZUJ1ZmZlci5nZXROdWxsQ2VsbCh0aGlzLl9lcmFzZUF0dHJEYXRhKCkpLHRoaXMuX2VyYXNlQXR0ckRhdGEoKSksdGhpcy5fZGlydHlSb3dUcmFja2VyLm1hcmtEaXJ0eSh0aGlzLl9hY3RpdmVCdWZmZXIueSkpLCEwfXJlcGVhdFByZWNlZGluZ0NoYXJhY3RlcihlKXtpZighdGhpcy5fcGFyc2VyLnByZWNlZGluZ0NvZGVwb2ludClyZXR1cm4hMDtjb25zdCB0PWUucGFyYW1zWzBdfHwxLGk9bmV3IFVpbnQzMkFycmF5KHQpO2ZvcihsZXQgZT0wO2U8dDsrK2UpaVtlXT10aGlzLl9wYXJzZXIucHJlY2VkaW5nQ29kZXBvaW50O3JldHVybiB0aGlzLnByaW50KGksMCxpLmxlbmd0aCksITB9c2VuZERldmljZUF0dHJpYnV0ZXNQcmltYXJ5KGUpe3JldHVybiBlLnBhcmFtc1swXT4wfHwodGhpcy5faXMoXCJ4dGVybVwiKXx8dGhpcy5faXMoXCJyeHZ0LXVuaWNvZGVcIil8fHRoaXMuX2lzKFwic2NyZWVuXCIpP3RoaXMuX2NvcmVTZXJ2aWNlLnRyaWdnZXJEYXRhRXZlbnQobi5DMC5FU0MrXCJbPzE7MmNcIik6dGhpcy5faXMoXCJsaW51eFwiKSYmdGhpcy5fY29yZVNlcnZpY2UudHJpZ2dlckRhdGFFdmVudChuLkMwLkVTQytcIls/NmNcIikpLCEwfXNlbmREZXZpY2VBdHRyaWJ1dGVzU2Vjb25kYXJ5KGUpe3JldHVybiBlLnBhcmFtc1swXT4wfHwodGhpcy5faXMoXCJ4dGVybVwiKT90aGlzLl9jb3JlU2VydmljZS50cmlnZ2VyRGF0YUV2ZW50KG4uQzAuRVNDK1wiWz4wOzI3NjswY1wiKTp0aGlzLl9pcyhcInJ4dnQtdW5pY29kZVwiKT90aGlzLl9jb3JlU2VydmljZS50cmlnZ2VyRGF0YUV2ZW50KG4uQzAuRVNDK1wiWz44NTs5NTswY1wiKTp0aGlzLl9pcyhcImxpbnV4XCIpP3RoaXMuX2NvcmVTZXJ2aWNlLnRyaWdnZXJEYXRhRXZlbnQoZS5wYXJhbXNbMF0rXCJjXCIpOnRoaXMuX2lzKFwic2NyZWVuXCIpJiZ0aGlzLl9jb3JlU2VydmljZS50cmlnZ2VyRGF0YUV2ZW50KG4uQzAuRVNDK1wiWz44Mzs0MDAwMzswY1wiKSksITB9X2lzKGUpe3JldHVybiAwPT09KHRoaXMuX29wdGlvbnNTZXJ2aWNlLnJhd09wdGlvbnMudGVybU5hbWUrXCJcIikuaW5kZXhPZihlKX1zZXRNb2RlKGUpe2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKXN3aXRjaChlLnBhcmFtc1t0XSl7Y2FzZSA0OnRoaXMuX2NvcmVTZXJ2aWNlLm1vZGVzLmluc2VydE1vZGU9ITA7YnJlYWs7Y2FzZSAyMDp0aGlzLl9vcHRpb25zU2VydmljZS5vcHRpb25zLmNvbnZlcnRFb2w9ITB9cmV0dXJuITB9c2V0TW9kZVByaXZhdGUoZSl7Zm9yKGxldCB0PTA7dDxlLmxlbmd0aDt0Kyspc3dpdGNoKGUucGFyYW1zW3RdKXtjYXNlIDE6dGhpcy5fY29yZVNlcnZpY2UuZGVjUHJpdmF0ZU1vZGVzLmFwcGxpY2F0aW9uQ3Vyc29yS2V5cz0hMDticmVhaztjYXNlIDI6dGhpcy5fY2hhcnNldFNlcnZpY2Uuc2V0Z0NoYXJzZXQoMCxvLkRFRkFVTFRfQ0hBUlNFVCksdGhpcy5fY2hhcnNldFNlcnZpY2Uuc2V0Z0NoYXJzZXQoMSxvLkRFRkFVTFRfQ0hBUlNFVCksdGhpcy5fY2hhcnNldFNlcnZpY2Uuc2V0Z0NoYXJzZXQoMixvLkRFRkFVTFRfQ0hBUlNFVCksdGhpcy5fY2hhcnNldFNlcnZpY2Uuc2V0Z0NoYXJzZXQoMyxvLkRFRkFVTFRfQ0hBUlNFVCk7YnJlYWs7Y2FzZSAzOnRoaXMuX29wdGlvbnNTZXJ2aWNlLnJhd09wdGlvbnMud2luZG93T3B0aW9ucy5zZXRXaW5MaW5lcyYmKHRoaXMuX2J1ZmZlclNlcnZpY2UucmVzaXplKDEzMix0aGlzLl9idWZmZXJTZXJ2aWNlLnJvd3MpLHRoaXMuX29uUmVxdWVzdFJlc2V0LmZpcmUoKSk7YnJlYWs7Y2FzZSA2OnRoaXMuX2NvcmVTZXJ2aWNlLmRlY1ByaXZhdGVNb2Rlcy5vcmlnaW49ITAsdGhpcy5fc2V0Q3Vyc29yKDAsMCk7YnJlYWs7Y2FzZSA3OnRoaXMuX2NvcmVTZXJ2aWNlLmRlY1ByaXZhdGVNb2Rlcy53cmFwYXJvdW5kPSEwO2JyZWFrO2Nhc2UgMTI6dGhpcy5fb3B0aW9uc1NlcnZpY2Uub3B0aW9ucy5jdXJzb3JCbGluaz0hMDticmVhaztjYXNlIDQ1OnRoaXMuX2NvcmVTZXJ2aWNlLmRlY1ByaXZhdGVNb2Rlcy5yZXZlcnNlV3JhcGFyb3VuZD0hMDticmVhaztjYXNlIDY2OnRoaXMuX2xvZ1NlcnZpY2UuZGVidWcoXCJTZXJpYWwgcG9ydCByZXF1ZXN0ZWQgYXBwbGljYXRpb24ga2V5cGFkLlwiKSx0aGlzLl9jb3JlU2VydmljZS5kZWNQcml2YXRlTW9kZXMuYXBwbGljYXRpb25LZXlwYWQ9ITAsdGhpcy5fb25SZXF1ZXN0U3luY1Njcm9sbEJhci5maXJlKCk7YnJlYWs7Y2FzZSA5OnRoaXMuX2NvcmVNb3VzZVNlcnZpY2UuYWN0aXZlUHJvdG9jb2w9XCJYMTBcIjticmVhaztjYXNlIDFlMzp0aGlzLl9jb3JlTW91c2VTZXJ2aWNlLmFjdGl2ZVByb3RvY29sPVwiVlQyMDBcIjticmVhaztjYXNlIDEwMDI6dGhpcy5fY29yZU1vdXNlU2VydmljZS5hY3RpdmVQcm90b2NvbD1cIkRSQUdcIjticmVhaztjYXNlIDEwMDM6dGhpcy5fY29yZU1vdXNlU2VydmljZS5hY3RpdmVQcm90b2NvbD1cIkFOWVwiO2JyZWFrO2Nhc2UgMTAwNDp0aGlzLl9jb3JlU2VydmljZS5kZWNQcml2YXRlTW9kZXMuc2VuZEZvY3VzPSEwLHRoaXMuX29uUmVxdWVzdFNlbmRGb2N1cy5maXJlKCk7YnJlYWs7Y2FzZSAxMDA1OnRoaXMuX2xvZ1NlcnZpY2UuZGVidWcoXCJERUNTRVQgMTAwNSBub3Qgc3VwcG9ydGVkIChzZWUgIzI1MDcpXCIpO2JyZWFrO2Nhc2UgMTAwNjp0aGlzLl9jb3JlTW91c2VTZXJ2aWNlLmFjdGl2ZUVuY29kaW5nPVwiU0dSXCI7YnJlYWs7Y2FzZSAxMDE1OnRoaXMuX2xvZ1NlcnZpY2UuZGVidWcoXCJERUNTRVQgMTAxNSBub3Qgc3VwcG9ydGVkIChzZWUgIzI1MDcpXCIpO2JyZWFrO2Nhc2UgMTAxNjp0aGlzLl9jb3JlTW91c2VTZXJ2aWNlLmFjdGl2ZUVuY29kaW5nPVwiU0dSX1BJWEVMU1wiO2JyZWFrO2Nhc2UgMjU6dGhpcy5fY29yZVNlcnZpY2UuaXNDdXJzb3JIaWRkZW49ITE7YnJlYWs7Y2FzZSAxMDQ4OnRoaXMuc2F2ZUN1cnNvcigpO2JyZWFrO2Nhc2UgMTA0OTp0aGlzLnNhdmVDdXJzb3IoKTtjYXNlIDQ3OmNhc2UgMTA0Nzp0aGlzLl9idWZmZXJTZXJ2aWNlLmJ1ZmZlcnMuYWN0aXZhdGVBbHRCdWZmZXIodGhpcy5fZXJhc2VBdHRyRGF0YSgpKSx0aGlzLl9jb3JlU2VydmljZS5pc0N1cnNvckluaXRpYWxpemVkPSEwLHRoaXMuX29uUmVxdWVzdFJlZnJlc2hSb3dzLmZpcmUoMCx0aGlzLl9idWZmZXJTZXJ2aWNlLnJvd3MtMSksdGhpcy5fb25SZXF1ZXN0U3luY1Njcm9sbEJhci5maXJlKCk7YnJlYWs7Y2FzZSAyMDA0OnRoaXMuX2NvcmVTZXJ2aWNlLmRlY1ByaXZhdGVNb2Rlcy5icmFja2V0ZWRQYXN0ZU1vZGU9ITB9cmV0dXJuITB9cmVzZXRNb2RlKGUpe2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKXN3aXRjaChlLnBhcmFtc1t0XSl7Y2FzZSA0OnRoaXMuX2NvcmVTZXJ2aWNlLm1vZGVzLmluc2VydE1vZGU9ITE7YnJlYWs7Y2FzZSAyMDp0aGlzLl9vcHRpb25zU2VydmljZS5vcHRpb25zLmNvbnZlcnRFb2w9ITF9cmV0dXJuITB9cmVzZXRNb2RlUHJpdmF0ZShlKXtmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKylzd2l0Y2goZS5wYXJhbXNbdF0pe2Nhc2UgMTp0aGlzLl9jb3JlU2VydmljZS5kZWNQcml2YXRlTW9kZXMuYXBwbGljYXRpb25DdXJzb3JLZXlzPSExO2JyZWFrO2Nhc2UgMzp0aGlzLl9vcHRpb25zU2VydmljZS5yYXdPcHRpb25zLndpbmRvd09wdGlvbnMuc2V0V2luTGluZXMmJih0aGlzLl9idWZmZXJTZXJ2aWNlLnJlc2l6ZSg4MCx0aGlzLl9idWZmZXJTZXJ2aWNlLnJvd3MpLHRoaXMuX29uUmVxdWVzdFJlc2V0LmZpcmUoKSk7YnJlYWs7Y2FzZSA2OnRoaXMuX2NvcmVTZXJ2aWNlLmRlY1ByaXZhdGVNb2Rlcy5vcmlnaW49ITEsdGhpcy5fc2V0Q3Vyc29yKDAsMCk7YnJlYWs7Y2FzZSA3OnRoaXMuX2NvcmVTZXJ2aWNlLmRlY1ByaXZhdGVNb2Rlcy53cmFwYXJvdW5kPSExO2JyZWFrO2Nhc2UgMTI6dGhpcy5fb3B0aW9uc1NlcnZpY2Uub3B0aW9ucy5jdXJzb3JCbGluaz0hMTticmVhaztjYXNlIDQ1OnRoaXMuX2NvcmVTZXJ2aWNlLmRlY1ByaXZhdGVNb2Rlcy5yZXZlcnNlV3JhcGFyb3VuZD0hMTticmVhaztjYXNlIDY2OnRoaXMuX2xvZ1NlcnZpY2UuZGVidWcoXCJTd2l0Y2hpbmcgYmFjayB0byBub3JtYWwga2V5cGFkLlwiKSx0aGlzLl9jb3JlU2VydmljZS5kZWNQcml2YXRlTW9kZXMuYXBwbGljYXRpb25LZXlwYWQ9ITEsdGhpcy5fb25SZXF1ZXN0U3luY1Njcm9sbEJhci5maXJlKCk7YnJlYWs7Y2FzZSA5OmNhc2UgMWUzOmNhc2UgMTAwMjpjYXNlIDEwMDM6dGhpcy5fY29yZU1vdXNlU2VydmljZS5hY3RpdmVQcm90b2NvbD1cIk5PTkVcIjticmVhaztjYXNlIDEwMDQ6dGhpcy5fY29yZVNlcnZpY2UuZGVjUHJpdmF0ZU1vZGVzLnNlbmRGb2N1cz0hMTticmVhaztjYXNlIDEwMDU6dGhpcy5fbG9nU2VydmljZS5kZWJ1ZyhcIkRFQ1JTVCAxMDA1IG5vdCBzdXBwb3J0ZWQgKHNlZSAjMjUwNylcIik7YnJlYWs7Y2FzZSAxMDA2OmNhc2UgMTAxNjp0aGlzLl9jb3JlTW91c2VTZXJ2aWNlLmFjdGl2ZUVuY29kaW5nPVwiREVGQVVMVFwiO2JyZWFrO2Nhc2UgMTAxNTp0aGlzLl9sb2dTZXJ2aWNlLmRlYnVnKFwiREVDUlNUIDEwMTUgbm90IHN1cHBvcnRlZCAoc2VlICMyNTA3KVwiKTticmVhaztjYXNlIDI1OnRoaXMuX2NvcmVTZXJ2aWNlLmlzQ3Vyc29ySGlkZGVuPSEwO2JyZWFrO2Nhc2UgMTA0ODp0aGlzLnJlc3RvcmVDdXJzb3IoKTticmVhaztjYXNlIDEwNDk6Y2FzZSA0NzpjYXNlIDEwNDc6dGhpcy5fYnVmZmVyU2VydmljZS5idWZmZXJzLmFjdGl2YXRlTm9ybWFsQnVmZmVyKCksMTA0OT09PWUucGFyYW1zW3RdJiZ0aGlzLnJlc3RvcmVDdXJzb3IoKSx0aGlzLl9jb3JlU2VydmljZS5pc0N1cnNvckluaXRpYWxpemVkPSEwLHRoaXMuX29uUmVxdWVzdFJlZnJlc2hSb3dzLmZpcmUoMCx0aGlzLl9idWZmZXJTZXJ2aWNlLnJvd3MtMSksdGhpcy5fb25SZXF1ZXN0U3luY1Njcm9sbEJhci5maXJlKCk7YnJlYWs7Y2FzZSAyMDA0OnRoaXMuX2NvcmVTZXJ2aWNlLmRlY1ByaXZhdGVNb2Rlcy5icmFja2V0ZWRQYXN0ZU1vZGU9ITF9cmV0dXJuITB9cmVxdWVzdE1vZGUoZSx0KXtjb25zdCBpPXRoaXMuX2NvcmVTZXJ2aWNlLmRlY1ByaXZhdGVNb2Rlcyx7YWN0aXZlUHJvdG9jb2w6cyxhY3RpdmVFbmNvZGluZzpyfT10aGlzLl9jb3JlTW91c2VTZXJ2aWNlLG89dGhpcy5fY29yZVNlcnZpY2Use2J1ZmZlcnM6YSxjb2xzOmh9PXRoaXMuX2J1ZmZlclNlcnZpY2Use2FjdGl2ZTpjLGFsdDpsfT1hLGQ9dGhpcy5fb3B0aW9uc1NlcnZpY2UucmF3T3B0aW9ucyxfPWU9PmU/MToyLHU9ZS5wYXJhbXNbMF07cmV0dXJuIGY9dSx2PXQ/Mj09PXU/NDo0PT09dT9fKG8ubW9kZXMuaW5zZXJ0TW9kZSk6MTI9PT11PzM6MjA9PT11P18oZC5jb252ZXJ0RW9sKTowOjE9PT11P18oaS5hcHBsaWNhdGlvbkN1cnNvcktleXMpOjM9PT11P2Qud2luZG93T3B0aW9ucy5zZXRXaW5MaW5lcz84MD09PWg/MjoxMzI9PT1oPzE6MDowOjY9PT11P18oaS5vcmlnaW4pOjc9PT11P18oaS53cmFwYXJvdW5kKTo4PT09dT8zOjk9PT11P18oXCJYMTBcIj09PXMpOjEyPT09dT9fKGQuY3Vyc29yQmxpbmspOjI1PT09dT9fKCFvLmlzQ3Vyc29ySGlkZGVuKTo0NT09PXU/XyhpLnJldmVyc2VXcmFwYXJvdW5kKTo2Nj09PXU/XyhpLmFwcGxpY2F0aW9uS2V5cGFkKTo2Nz09PXU/NDoxZTM9PT11P18oXCJWVDIwMFwiPT09cyk6MTAwMj09PXU/XyhcIkRSQUdcIj09PXMpOjEwMDM9PT11P18oXCJBTllcIj09PXMpOjEwMDQ9PT11P18oaS5zZW5kRm9jdXMpOjEwMDU9PT11PzQ6MTAwNj09PXU/XyhcIlNHUlwiPT09cik6MTAxNT09PXU/NDoxMDE2PT09dT9fKFwiU0dSX1BJWEVMU1wiPT09cik6MTA0OD09PXU/MTo0Nz09PXV8fDEwNDc9PT11fHwxMDQ5PT09dT9fKGM9PT1sKToyMDA0PT09dT9fKGkuYnJhY2tldGVkUGFzdGVNb2RlKTowLG8udHJpZ2dlckRhdGFFdmVudChgJHtuLkMwLkVTQ31bJHt0P1wiXCI6XCI/XCJ9JHtmfTske3Z9JHlgKSwhMDt2YXIgZix2fV91cGRhdGVBdHRyQ29sb3IoZSx0LGkscyxyKXtyZXR1cm4gMj09PXQ/KGV8PTUwMzMxNjQ4LGUmPS0xNjc3NzIxNixlfD1mLkF0dHJpYnV0ZURhdGEuZnJvbUNvbG9yUkdCKFtpLHMscl0pKTo1PT09dCYmKGUmPS01MDMzMTkwNCxlfD0zMzU1NDQzMnwyNTUmaSksZX1fZXh0cmFjdENvbG9yKGUsdCxpKXtjb25zdCBzPVswLDAsLTEsMCwwLDBdO2xldCByPTAsbj0wO2Rve2lmKHNbbityXT1lLnBhcmFtc1t0K25dLGUuaGFzU3ViUGFyYW1zKHQrbikpe2NvbnN0IGk9ZS5nZXRTdWJQYXJhbXModCtuKTtsZXQgbz0wO2RvezU9PT1zWzFdJiYocj0xKSxzW24rbysxK3JdPWlbb119d2hpbGUoKytvPGkubGVuZ3RoJiZvK24rMStyPHMubGVuZ3RoKTticmVha31pZig1PT09c1sxXSYmbityPj0yfHwyPT09c1sxXSYmbityPj01KWJyZWFrO3NbMV0mJihyPTEpfXdoaWxlKCsrbit0PGUubGVuZ3RoJiZuK3I8cy5sZW5ndGgpO2ZvcihsZXQgZT0yO2U8cy5sZW5ndGg7KytlKS0xPT09c1tlXSYmKHNbZV09MCk7c3dpdGNoKHNbMF0pe2Nhc2UgMzg6aS5mZz10aGlzLl91cGRhdGVBdHRyQ29sb3IoaS5mZyxzWzFdLHNbM10sc1s0XSxzWzVdKTticmVhaztjYXNlIDQ4OmkuYmc9dGhpcy5fdXBkYXRlQXR0ckNvbG9yKGkuYmcsc1sxXSxzWzNdLHNbNF0sc1s1XSk7YnJlYWs7Y2FzZSA1ODppLmV4dGVuZGVkPWkuZXh0ZW5kZWQuY2xvbmUoKSxpLmV4dGVuZGVkLnVuZGVybGluZUNvbG9yPXRoaXMuX3VwZGF0ZUF0dHJDb2xvcihpLmV4dGVuZGVkLnVuZGVybGluZUNvbG9yLHNbMV0sc1szXSxzWzRdLHNbNV0pfXJldHVybiBufV9wcm9jZXNzVW5kZXJsaW5lKGUsdCl7dC5leHRlbmRlZD10LmV4dGVuZGVkLmNsb25lKCksKCF+ZXx8ZT41KSYmKGU9MSksdC5leHRlbmRlZC51bmRlcmxpbmVTdHlsZT1lLHQuZmd8PTI2ODQzNTQ1NiwwPT09ZSYmKHQuZmcmPS0yNjg0MzU0NTcpLHQudXBkYXRlRXh0ZW5kZWQoKX1fcHJvY2Vzc1NHUjAoZSl7ZS5mZz1sLkRFRkFVTFRfQVRUUl9EQVRBLmZnLGUuYmc9bC5ERUZBVUxUX0FUVFJfREFUQS5iZyxlLmV4dGVuZGVkPWUuZXh0ZW5kZWQuY2xvbmUoKSxlLmV4dGVuZGVkLnVuZGVybGluZVN0eWxlPTAsZS5leHRlbmRlZC51bmRlcmxpbmVDb2xvciY9LTY3MTA4ODY0LGUudXBkYXRlRXh0ZW5kZWQoKX1jaGFyQXR0cmlidXRlcyhlKXtpZigxPT09ZS5sZW5ndGgmJjA9PT1lLnBhcmFtc1swXSlyZXR1cm4gdGhpcy5fcHJvY2Vzc1NHUjAodGhpcy5fY3VyQXR0ckRhdGEpLCEwO2NvbnN0IHQ9ZS5sZW5ndGg7bGV0IGk7Y29uc3Qgcz10aGlzLl9jdXJBdHRyRGF0YTtmb3IobGV0IHI9MDtyPHQ7cisrKWk9ZS5wYXJhbXNbcl0saT49MzAmJmk8PTM3PyhzLmZnJj0tNTAzMzE5MDQscy5mZ3w9MTY3NzcyMTZ8aS0zMCk6aT49NDAmJmk8PTQ3PyhzLmJnJj0tNTAzMzE5MDQscy5iZ3w9MTY3NzcyMTZ8aS00MCk6aT49OTAmJmk8PTk3PyhzLmZnJj0tNTAzMzE5MDQscy5mZ3w9MTY3NzcyMjR8aS05MCk6aT49MTAwJiZpPD0xMDc/KHMuYmcmPS01MDMzMTkwNCxzLmJnfD0xNjc3NzIyNHxpLTEwMCk6MD09PWk/dGhpcy5fcHJvY2Vzc1NHUjAocyk6MT09PWk/cy5mZ3w9MTM0MjE3NzI4OjM9PT1pP3MuYmd8PTY3MTA4ODY0OjQ9PT1pPyhzLmZnfD0yNjg0MzU0NTYsdGhpcy5fcHJvY2Vzc1VuZGVybGluZShlLmhhc1N1YlBhcmFtcyhyKT9lLmdldFN1YlBhcmFtcyhyKVswXToxLHMpKTo1PT09aT9zLmZnfD01MzY4NzA5MTI6Nz09PWk/cy5mZ3w9NjcxMDg4NjQ6OD09PWk/cy5mZ3w9MTA3Mzc0MTgyNDo5PT09aT9zLmZnfD0yMTQ3NDgzNjQ4OjI9PT1pP3MuYmd8PTEzNDIxNzcyODoyMT09PWk/dGhpcy5fcHJvY2Vzc1VuZGVybGluZSgyLHMpOjIyPT09aT8ocy5mZyY9LTEzNDIxNzcyOSxzLmJnJj0tMTM0MjE3NzI5KToyMz09PWk/cy5iZyY9LTY3MTA4ODY1OjI0PT09aT8ocy5mZyY9LTI2ODQzNTQ1Nyx0aGlzLl9wcm9jZXNzVW5kZXJsaW5lKDAscykpOjI1PT09aT9zLmZnJj0tNTM2ODcwOTEzOjI3PT09aT9zLmZnJj0tNjcxMDg4NjU6Mjg9PT1pP3MuZmcmPS0xMDczNzQxODI1OjI5PT09aT9zLmZnJj0yMTQ3NDgzNjQ3OjM5PT09aT8ocy5mZyY9LTY3MTA4ODY0LHMuZmd8PTE2Nzc3MjE1JmwuREVGQVVMVF9BVFRSX0RBVEEuZmcpOjQ5PT09aT8ocy5iZyY9LTY3MTA4ODY0LHMuYmd8PTE2Nzc3MjE1JmwuREVGQVVMVF9BVFRSX0RBVEEuYmcpOjM4PT09aXx8NDg9PT1pfHw1OD09PWk/cis9dGhpcy5fZXh0cmFjdENvbG9yKGUscixzKTo1Mz09PWk/cy5iZ3w9MTA3Mzc0MTgyNDo1NT09PWk/cy5iZyY9LTEwNzM3NDE4MjU6NTk9PT1pPyhzLmV4dGVuZGVkPXMuZXh0ZW5kZWQuY2xvbmUoKSxzLmV4dGVuZGVkLnVuZGVybGluZUNvbG9yPS0xLHMudXBkYXRlRXh0ZW5kZWQoKSk6MTAwPT09aT8ocy5mZyY9LTY3MTA4ODY0LHMuZmd8PTE2Nzc3MjE1JmwuREVGQVVMVF9BVFRSX0RBVEEuZmcscy5iZyY9LTY3MTA4ODY0LHMuYmd8PTE2Nzc3MjE1JmwuREVGQVVMVF9BVFRSX0RBVEEuYmcpOnRoaXMuX2xvZ1NlcnZpY2UuZGVidWcoXCJVbmtub3duIFNHUiBhdHRyaWJ1dGU6ICVkLlwiLGkpO3JldHVybiEwfWRldmljZVN0YXR1cyhlKXtzd2l0Y2goZS5wYXJhbXNbMF0pe2Nhc2UgNTp0aGlzLl9jb3JlU2VydmljZS50cmlnZ2VyRGF0YUV2ZW50KGAke24uQzAuRVNDfVswbmApO2JyZWFrO2Nhc2UgNjpjb25zdCBlPXRoaXMuX2FjdGl2ZUJ1ZmZlci55KzEsdD10aGlzLl9hY3RpdmVCdWZmZXIueCsxO3RoaXMuX2NvcmVTZXJ2aWNlLnRyaWdnZXJEYXRhRXZlbnQoYCR7bi5DMC5FU0N9WyR7ZX07JHt0fVJgKX1yZXR1cm4hMH1kZXZpY2VTdGF0dXNQcml2YXRlKGUpe2lmKDY9PT1lLnBhcmFtc1swXSl7Y29uc3QgZT10aGlzLl9hY3RpdmVCdWZmZXIueSsxLHQ9dGhpcy5fYWN0aXZlQnVmZmVyLngrMTt0aGlzLl9jb3JlU2VydmljZS50cmlnZ2VyRGF0YUV2ZW50KGAke24uQzAuRVNDfVs/JHtlfTske3R9UmApfXJldHVybiEwfXNvZnRSZXNldChlKXtyZXR1cm4gdGhpcy5fY29yZVNlcnZpY2UuaXNDdXJzb3JIaWRkZW49ITEsdGhpcy5fb25SZXF1ZXN0U3luY1Njcm9sbEJhci5maXJlKCksdGhpcy5fYWN0aXZlQnVmZmVyLnNjcm9sbFRvcD0wLHRoaXMuX2FjdGl2ZUJ1ZmZlci5zY3JvbGxCb3R0b209dGhpcy5fYnVmZmVyU2VydmljZS5yb3dzLTEsdGhpcy5fY3VyQXR0ckRhdGE9bC5ERUZBVUxUX0FUVFJfREFUQS5jbG9uZSgpLHRoaXMuX2NvcmVTZXJ2aWNlLnJlc2V0KCksdGhpcy5fY2hhcnNldFNlcnZpY2UucmVzZXQoKSx0aGlzLl9hY3RpdmVCdWZmZXIuc2F2ZWRYPTAsdGhpcy5fYWN0aXZlQnVmZmVyLnNhdmVkWT10aGlzLl9hY3RpdmVCdWZmZXIueWJhc2UsdGhpcy5fYWN0aXZlQnVmZmVyLnNhdmVkQ3VyQXR0ckRhdGEuZmc9dGhpcy5fY3VyQXR0ckRhdGEuZmcsdGhpcy5fYWN0aXZlQnVmZmVyLnNhdmVkQ3VyQXR0ckRhdGEuYmc9dGhpcy5fY3VyQXR0ckRhdGEuYmcsdGhpcy5fYWN0aXZlQnVmZmVyLnNhdmVkQ2hhcnNldD10aGlzLl9jaGFyc2V0U2VydmljZS5jaGFyc2V0LHRoaXMuX2NvcmVTZXJ2aWNlLmRlY1ByaXZhdGVNb2Rlcy5vcmlnaW49ITEsITB9c2V0Q3Vyc29yU3R5bGUoZSl7Y29uc3QgdD1lLnBhcmFtc1swXXx8MTtzd2l0Y2godCl7Y2FzZSAxOmNhc2UgMjp0aGlzLl9vcHRpb25zU2VydmljZS5vcHRpb25zLmN1cnNvclN0eWxlPVwiYmxvY2tcIjticmVhaztjYXNlIDM6Y2FzZSA0OnRoaXMuX29wdGlvbnNTZXJ2aWNlLm9wdGlvbnMuY3Vyc29yU3R5bGU9XCJ1bmRlcmxpbmVcIjticmVhaztjYXNlIDU6Y2FzZSA2OnRoaXMuX29wdGlvbnNTZXJ2aWNlLm9wdGlvbnMuY3Vyc29yU3R5bGU9XCJiYXJcIn1jb25zdCBpPXQlMj09MTtyZXR1cm4gdGhpcy5fb3B0aW9uc1NlcnZpY2Uub3B0aW9ucy5jdXJzb3JCbGluaz1pLCEwfXNldFNjcm9sbFJlZ2lvbihlKXtjb25zdCB0PWUucGFyYW1zWzBdfHwxO2xldCBpO3JldHVybihlLmxlbmd0aDwyfHwoaT1lLnBhcmFtc1sxXSk+dGhpcy5fYnVmZmVyU2VydmljZS5yb3dzfHwwPT09aSkmJihpPXRoaXMuX2J1ZmZlclNlcnZpY2Uucm93cyksaT50JiYodGhpcy5fYWN0aXZlQnVmZmVyLnNjcm9sbFRvcD10LTEsdGhpcy5fYWN0aXZlQnVmZmVyLnNjcm9sbEJvdHRvbT1pLTEsdGhpcy5fc2V0Q3Vyc29yKDAsMCkpLCEwfXdpbmRvd09wdGlvbnMoZSl7aWYoIWIoZS5wYXJhbXNbMF0sdGhpcy5fb3B0aW9uc1NlcnZpY2UucmF3T3B0aW9ucy53aW5kb3dPcHRpb25zKSlyZXR1cm4hMDtjb25zdCB0PWUubGVuZ3RoPjE/ZS5wYXJhbXNbMV06MDtzd2l0Y2goZS5wYXJhbXNbMF0pe2Nhc2UgMTQ6MiE9PXQmJnRoaXMuX29uUmVxdWVzdFdpbmRvd3NPcHRpb25zUmVwb3J0LmZpcmUoeS5HRVRfV0lOX1NJWkVfUElYRUxTKTticmVhaztjYXNlIDE2OnRoaXMuX29uUmVxdWVzdFdpbmRvd3NPcHRpb25zUmVwb3J0LmZpcmUoeS5HRVRfQ0VMTF9TSVpFX1BJWEVMUyk7YnJlYWs7Y2FzZSAxODp0aGlzLl9idWZmZXJTZXJ2aWNlJiZ0aGlzLl9jb3JlU2VydmljZS50cmlnZ2VyRGF0YUV2ZW50KGAke24uQzAuRVNDfVs4OyR7dGhpcy5fYnVmZmVyU2VydmljZS5yb3dzfTske3RoaXMuX2J1ZmZlclNlcnZpY2UuY29sc310YCk7YnJlYWs7Y2FzZSAyMjowIT09dCYmMiE9PXR8fCh0aGlzLl93aW5kb3dUaXRsZVN0YWNrLnB1c2godGhpcy5fd2luZG93VGl0bGUpLHRoaXMuX3dpbmRvd1RpdGxlU3RhY2subGVuZ3RoPjEwJiZ0aGlzLl93aW5kb3dUaXRsZVN0YWNrLnNoaWZ0KCkpLDAhPT10JiYxIT09dHx8KHRoaXMuX2ljb25OYW1lU3RhY2sucHVzaCh0aGlzLl9pY29uTmFtZSksdGhpcy5faWNvbk5hbWVTdGFjay5sZW5ndGg+MTAmJnRoaXMuX2ljb25OYW1lU3RhY2suc2hpZnQoKSk7YnJlYWs7Y2FzZSAyMzowIT09dCYmMiE9PXR8fHRoaXMuX3dpbmRvd1RpdGxlU3RhY2subGVuZ3RoJiZ0aGlzLnNldFRpdGxlKHRoaXMuX3dpbmRvd1RpdGxlU3RhY2sucG9wKCkpLDAhPT10JiYxIT09dHx8dGhpcy5faWNvbk5hbWVTdGFjay5sZW5ndGgmJnRoaXMuc2V0SWNvbk5hbWUodGhpcy5faWNvbk5hbWVTdGFjay5wb3AoKSl9cmV0dXJuITB9c2F2ZUN1cnNvcihlKXtyZXR1cm4gdGhpcy5fYWN0aXZlQnVmZmVyLnNhdmVkWD10aGlzLl9hY3RpdmVCdWZmZXIueCx0aGlzLl9hY3RpdmVCdWZmZXIuc2F2ZWRZPXRoaXMuX2FjdGl2ZUJ1ZmZlci55YmFzZSt0aGlzLl9hY3RpdmVCdWZmZXIueSx0aGlzLl9hY3RpdmVCdWZmZXIuc2F2ZWRDdXJBdHRyRGF0YS5mZz10aGlzLl9jdXJBdHRyRGF0YS5mZyx0aGlzLl9hY3RpdmVCdWZmZXIuc2F2ZWRDdXJBdHRyRGF0YS5iZz10aGlzLl9jdXJBdHRyRGF0YS5iZyx0aGlzLl9hY3RpdmVCdWZmZXIuc2F2ZWRDaGFyc2V0PXRoaXMuX2NoYXJzZXRTZXJ2aWNlLmNoYXJzZXQsITB9cmVzdG9yZUN1cnNvcihlKXtyZXR1cm4gdGhpcy5fYWN0aXZlQnVmZmVyLng9dGhpcy5fYWN0aXZlQnVmZmVyLnNhdmVkWHx8MCx0aGlzLl9hY3RpdmVCdWZmZXIueT1NYXRoLm1heCh0aGlzLl9hY3RpdmVCdWZmZXIuc2F2ZWRZLXRoaXMuX2FjdGl2ZUJ1ZmZlci55YmFzZSwwKSx0aGlzLl9jdXJBdHRyRGF0YS5mZz10aGlzLl9hY3RpdmVCdWZmZXIuc2F2ZWRDdXJBdHRyRGF0YS5mZyx0aGlzLl9jdXJBdHRyRGF0YS5iZz10aGlzLl9hY3RpdmVCdWZmZXIuc2F2ZWRDdXJBdHRyRGF0YS5iZyx0aGlzLl9jaGFyc2V0U2VydmljZS5jaGFyc2V0PXRoaXMuX3NhdmVkQ2hhcnNldCx0aGlzLl9hY3RpdmVCdWZmZXIuc2F2ZWRDaGFyc2V0JiYodGhpcy5fY2hhcnNldFNlcnZpY2UuY2hhcnNldD10aGlzLl9hY3RpdmVCdWZmZXIuc2F2ZWRDaGFyc2V0KSx0aGlzLl9yZXN0cmljdEN1cnNvcigpLCEwfXNldFRpdGxlKGUpe3JldHVybiB0aGlzLl93aW5kb3dUaXRsZT1lLHRoaXMuX29uVGl0bGVDaGFuZ2UuZmlyZShlKSwhMH1zZXRJY29uTmFtZShlKXtyZXR1cm4gdGhpcy5faWNvbk5hbWU9ZSwhMH1zZXRPclJlcG9ydEluZGV4ZWRDb2xvcihlKXtjb25zdCB0PVtdLGk9ZS5zcGxpdChcIjtcIik7Zm9yKDtpLmxlbmd0aD4xOyl7Y29uc3QgZT1pLnNoaWZ0KCkscz1pLnNoaWZ0KCk7aWYoL15cXGQrJC8uZXhlYyhlKSl7Y29uc3QgaT1wYXJzZUludChlKTtpZihMKGkpKWlmKFwiP1wiPT09cyl0LnB1c2goe3R5cGU6MCxpbmRleDppfSk7ZWxzZXtjb25zdCBlPSgwLG0ucGFyc2VDb2xvcikocyk7ZSYmdC5wdXNoKHt0eXBlOjEsaW5kZXg6aSxjb2xvcjplfSl9fX1yZXR1cm4gdC5sZW5ndGgmJnRoaXMuX29uQ29sb3IuZmlyZSh0KSwhMH1zZXRIeXBlcmxpbmsoZSl7Y29uc3QgdD1lLnNwbGl0KFwiO1wiKTtyZXR1cm4hKHQubGVuZ3RoPDIpJiYodFsxXT90aGlzLl9jcmVhdGVIeXBlcmxpbmsodFswXSx0WzFdKTohdFswXSYmdGhpcy5fZmluaXNoSHlwZXJsaW5rKCkpfV9jcmVhdGVIeXBlcmxpbmsoZSx0KXt0aGlzLl9nZXRDdXJyZW50TGlua0lkKCkmJnRoaXMuX2ZpbmlzaEh5cGVybGluaygpO2NvbnN0IGk9ZS5zcGxpdChcIjpcIik7bGV0IHM7Y29uc3Qgcj1pLmZpbmRJbmRleCgoZT0+ZS5zdGFydHNXaXRoKFwiaWQ9XCIpKSk7cmV0dXJuLTEhPT1yJiYocz1pW3JdLnNsaWNlKDMpfHx2b2lkIDApLHRoaXMuX2N1ckF0dHJEYXRhLmV4dGVuZGVkPXRoaXMuX2N1ckF0dHJEYXRhLmV4dGVuZGVkLmNsb25lKCksdGhpcy5fY3VyQXR0ckRhdGEuZXh0ZW5kZWQudXJsSWQ9dGhpcy5fb3NjTGlua1NlcnZpY2UucmVnaXN0ZXJMaW5rKHtpZDpzLHVyaTp0fSksdGhpcy5fY3VyQXR0ckRhdGEudXBkYXRlRXh0ZW5kZWQoKSwhMH1fZmluaXNoSHlwZXJsaW5rKCl7cmV0dXJuIHRoaXMuX2N1ckF0dHJEYXRhLmV4dGVuZGVkPXRoaXMuX2N1ckF0dHJEYXRhLmV4dGVuZGVkLmNsb25lKCksdGhpcy5fY3VyQXR0ckRhdGEuZXh0ZW5kZWQudXJsSWQ9MCx0aGlzLl9jdXJBdHRyRGF0YS51cGRhdGVFeHRlbmRlZCgpLCEwfV9zZXRPclJlcG9ydFNwZWNpYWxDb2xvcihlLHQpe2NvbnN0IGk9ZS5zcGxpdChcIjtcIik7Zm9yKGxldCBlPTA7ZTxpLmxlbmd0aCYmISh0Pj10aGlzLl9zcGVjaWFsQ29sb3JzLmxlbmd0aCk7KytlLCsrdClpZihcIj9cIj09PWlbZV0pdGhpcy5fb25Db2xvci5maXJlKFt7dHlwZTowLGluZGV4OnRoaXMuX3NwZWNpYWxDb2xvcnNbdF19XSk7ZWxzZXtjb25zdCBzPSgwLG0ucGFyc2VDb2xvcikoaVtlXSk7cyYmdGhpcy5fb25Db2xvci5maXJlKFt7dHlwZToxLGluZGV4OnRoaXMuX3NwZWNpYWxDb2xvcnNbdF0sY29sb3I6c31dKX1yZXR1cm4hMH1zZXRPclJlcG9ydEZnQ29sb3IoZSl7cmV0dXJuIHRoaXMuX3NldE9yUmVwb3J0U3BlY2lhbENvbG9yKGUsMCl9c2V0T3JSZXBvcnRCZ0NvbG9yKGUpe3JldHVybiB0aGlzLl9zZXRPclJlcG9ydFNwZWNpYWxDb2xvcihlLDEpfXNldE9yUmVwb3J0Q3Vyc29yQ29sb3IoZSl7cmV0dXJuIHRoaXMuX3NldE9yUmVwb3J0U3BlY2lhbENvbG9yKGUsMil9cmVzdG9yZUluZGV4ZWRDb2xvcihlKXtpZighZSlyZXR1cm4gdGhpcy5fb25Db2xvci5maXJlKFt7dHlwZToyfV0pLCEwO2NvbnN0IHQ9W10saT1lLnNwbGl0KFwiO1wiKTtmb3IobGV0IGU9MDtlPGkubGVuZ3RoOysrZSlpZigvXlxcZCskLy5leGVjKGlbZV0pKXtjb25zdCBzPXBhcnNlSW50KGlbZV0pO0wocykmJnQucHVzaCh7dHlwZToyLGluZGV4OnN9KX1yZXR1cm4gdC5sZW5ndGgmJnRoaXMuX29uQ29sb3IuZmlyZSh0KSwhMH1yZXN0b3JlRmdDb2xvcihlKXtyZXR1cm4gdGhpcy5fb25Db2xvci5maXJlKFt7dHlwZToyLGluZGV4OjI1Nn1dKSwhMH1yZXN0b3JlQmdDb2xvcihlKXtyZXR1cm4gdGhpcy5fb25Db2xvci5maXJlKFt7dHlwZToyLGluZGV4OjI1N31dKSwhMH1yZXN0b3JlQ3Vyc29yQ29sb3IoZSl7cmV0dXJuIHRoaXMuX29uQ29sb3IuZmlyZShbe3R5cGU6MixpbmRleDoyNTh9XSksITB9bmV4dExpbmUoKXtyZXR1cm4gdGhpcy5fYWN0aXZlQnVmZmVyLng9MCx0aGlzLmluZGV4KCksITB9a2V5cGFkQXBwbGljYXRpb25Nb2RlKCl7cmV0dXJuIHRoaXMuX2xvZ1NlcnZpY2UuZGVidWcoXCJTZXJpYWwgcG9ydCByZXF1ZXN0ZWQgYXBwbGljYXRpb24ga2V5cGFkLlwiKSx0aGlzLl9jb3JlU2VydmljZS5kZWNQcml2YXRlTW9kZXMuYXBwbGljYXRpb25LZXlwYWQ9ITAsdGhpcy5fb25SZXF1ZXN0U3luY1Njcm9sbEJhci5maXJlKCksITB9a2V5cGFkTnVtZXJpY01vZGUoKXtyZXR1cm4gdGhpcy5fbG9nU2VydmljZS5kZWJ1ZyhcIlN3aXRjaGluZyBiYWNrIHRvIG5vcm1hbCBrZXlwYWQuXCIpLHRoaXMuX2NvcmVTZXJ2aWNlLmRlY1ByaXZhdGVNb2Rlcy5hcHBsaWNhdGlvbktleXBhZD0hMSx0aGlzLl9vblJlcXVlc3RTeW5jU2Nyb2xsQmFyLmZpcmUoKSwhMH1zZWxlY3REZWZhdWx0Q2hhcnNldCgpe3JldHVybiB0aGlzLl9jaGFyc2V0U2VydmljZS5zZXRnTGV2ZWwoMCksdGhpcy5fY2hhcnNldFNlcnZpY2Uuc2V0Z0NoYXJzZXQoMCxvLkRFRkFVTFRfQ0hBUlNFVCksITB9c2VsZWN0Q2hhcnNldChlKXtyZXR1cm4gMiE9PWUubGVuZ3RoPyh0aGlzLnNlbGVjdERlZmF1bHRDaGFyc2V0KCksITApOihcIi9cIj09PWVbMF18fHRoaXMuX2NoYXJzZXRTZXJ2aWNlLnNldGdDaGFyc2V0KFNbZVswXV0sby5DSEFSU0VUU1tlWzFdXXx8by5ERUZBVUxUX0NIQVJTRVQpLCEwKX1pbmRleCgpe3JldHVybiB0aGlzLl9yZXN0cmljdEN1cnNvcigpLHRoaXMuX2FjdGl2ZUJ1ZmZlci55KyssdGhpcy5fYWN0aXZlQnVmZmVyLnk9PT10aGlzLl9hY3RpdmVCdWZmZXIuc2Nyb2xsQm90dG9tKzE/KHRoaXMuX2FjdGl2ZUJ1ZmZlci55LS0sdGhpcy5fYnVmZmVyU2VydmljZS5zY3JvbGwodGhpcy5fZXJhc2VBdHRyRGF0YSgpKSk6dGhpcy5fYWN0aXZlQnVmZmVyLnk+PXRoaXMuX2J1ZmZlclNlcnZpY2Uucm93cyYmKHRoaXMuX2FjdGl2ZUJ1ZmZlci55PXRoaXMuX2J1ZmZlclNlcnZpY2Uucm93cy0xKSx0aGlzLl9yZXN0cmljdEN1cnNvcigpLCEwfXRhYlNldCgpe3JldHVybiB0aGlzLl9hY3RpdmVCdWZmZXIudGFic1t0aGlzLl9hY3RpdmVCdWZmZXIueF09ITAsITB9cmV2ZXJzZUluZGV4KCl7aWYodGhpcy5fcmVzdHJpY3RDdXJzb3IoKSx0aGlzLl9hY3RpdmVCdWZmZXIueT09PXRoaXMuX2FjdGl2ZUJ1ZmZlci5zY3JvbGxUb3Ape2NvbnN0IGU9dGhpcy5fYWN0aXZlQnVmZmVyLnNjcm9sbEJvdHRvbS10aGlzLl9hY3RpdmVCdWZmZXIuc2Nyb2xsVG9wO3RoaXMuX2FjdGl2ZUJ1ZmZlci5saW5lcy5zaGlmdEVsZW1lbnRzKHRoaXMuX2FjdGl2ZUJ1ZmZlci55YmFzZSt0aGlzLl9hY3RpdmVCdWZmZXIueSxlLDEpLHRoaXMuX2FjdGl2ZUJ1ZmZlci5saW5lcy5zZXQodGhpcy5fYWN0aXZlQnVmZmVyLnliYXNlK3RoaXMuX2FjdGl2ZUJ1ZmZlci55LHRoaXMuX2FjdGl2ZUJ1ZmZlci5nZXRCbGFua0xpbmUodGhpcy5fZXJhc2VBdHRyRGF0YSgpKSksdGhpcy5fZGlydHlSb3dUcmFja2VyLm1hcmtSYW5nZURpcnR5KHRoaXMuX2FjdGl2ZUJ1ZmZlci5zY3JvbGxUb3AsdGhpcy5fYWN0aXZlQnVmZmVyLnNjcm9sbEJvdHRvbSl9ZWxzZSB0aGlzLl9hY3RpdmVCdWZmZXIueS0tLHRoaXMuX3Jlc3RyaWN0Q3Vyc29yKCk7cmV0dXJuITB9ZnVsbFJlc2V0KCl7cmV0dXJuIHRoaXMuX3BhcnNlci5yZXNldCgpLHRoaXMuX29uUmVxdWVzdFJlc2V0LmZpcmUoKSwhMH1yZXNldCgpe3RoaXMuX2N1ckF0dHJEYXRhPWwuREVGQVVMVF9BVFRSX0RBVEEuY2xvbmUoKSx0aGlzLl9lcmFzZUF0dHJEYXRhSW50ZXJuYWw9bC5ERUZBVUxUX0FUVFJfREFUQS5jbG9uZSgpfV9lcmFzZUF0dHJEYXRhKCl7cmV0dXJuIHRoaXMuX2VyYXNlQXR0ckRhdGFJbnRlcm5hbC5iZyY9LTY3MTA4ODY0LHRoaXMuX2VyYXNlQXR0ckRhdGFJbnRlcm5hbC5iZ3w9NjcxMDg4NjMmdGhpcy5fY3VyQXR0ckRhdGEuYmcsdGhpcy5fZXJhc2VBdHRyRGF0YUludGVybmFsfXNldGdMZXZlbChlKXtyZXR1cm4gdGhpcy5fY2hhcnNldFNlcnZpY2Uuc2V0Z0xldmVsKGUpLCEwfXNjcmVlbkFsaWdubWVudFBhdHRlcm4oKXtjb25zdCBlPW5ldyB1LkNlbGxEYXRhO2UuY29udGVudD0xPDwyMnxcIkVcIi5jaGFyQ29kZUF0KDApLGUuZmc9dGhpcy5fY3VyQXR0ckRhdGEuZmcsZS5iZz10aGlzLl9jdXJBdHRyRGF0YS5iZyx0aGlzLl9zZXRDdXJzb3IoMCwwKTtmb3IobGV0IHQ9MDt0PHRoaXMuX2J1ZmZlclNlcnZpY2Uucm93czsrK3Qpe2NvbnN0IGk9dGhpcy5fYWN0aXZlQnVmZmVyLnliYXNlK3RoaXMuX2FjdGl2ZUJ1ZmZlci55K3Qscz10aGlzLl9hY3RpdmVCdWZmZXIubGluZXMuZ2V0KGkpO3MmJihzLmZpbGwoZSkscy5pc1dyYXBwZWQ9ITEpfXJldHVybiB0aGlzLl9kaXJ0eVJvd1RyYWNrZXIubWFya0FsbERpcnR5KCksdGhpcy5fc2V0Q3Vyc29yKDAsMCksITB9cmVxdWVzdFN0YXR1c1N0cmluZyhlLHQpe2NvbnN0IGk9dGhpcy5fYnVmZmVyU2VydmljZS5idWZmZXIscz10aGlzLl9vcHRpb25zU2VydmljZS5yYXdPcHRpb25zO3JldHVybihlPT4odGhpcy5fY29yZVNlcnZpY2UudHJpZ2dlckRhdGFFdmVudChgJHtuLkMwLkVTQ30ke2V9JHtuLkMwLkVTQ31cXFxcYCksITApKSgnXCJxJz09PWU/YFAxJHIke3RoaXMuX2N1ckF0dHJEYXRhLmlzUHJvdGVjdGVkKCk/MTowfVwicWA6J1wicCc9PT1lPydQMSRyNjE7MVwicCc6XCJyXCI9PT1lP2BQMSRyJHtpLnNjcm9sbFRvcCsxfTske2kuc2Nyb2xsQm90dG9tKzF9cmA6XCJtXCI9PT1lP1wiUDEkcjBtXCI6XCIgcVwiPT09ZT9gUDEkciR7e2Jsb2NrOjIsdW5kZXJsaW5lOjQsYmFyOjZ9W3MuY3Vyc29yU3R5bGVdLShzLmN1cnNvckJsaW5rPzE6MCl9IHFgOlwiUDAkclwiKX1tYXJrUmFuZ2VEaXJ0eShlLHQpe3RoaXMuX2RpcnR5Um93VHJhY2tlci5tYXJrUmFuZ2VEaXJ0eShlLHQpfX10LklucHV0SGFuZGxlcj1FO2xldCBrPWNsYXNze2NvbnN0cnVjdG9yKGUpe3RoaXMuX2J1ZmZlclNlcnZpY2U9ZSx0aGlzLmNsZWFyUmFuZ2UoKX1jbGVhclJhbmdlKCl7dGhpcy5zdGFydD10aGlzLl9idWZmZXJTZXJ2aWNlLmJ1ZmZlci55LHRoaXMuZW5kPXRoaXMuX2J1ZmZlclNlcnZpY2UuYnVmZmVyLnl9bWFya0RpcnR5KGUpe2U8dGhpcy5zdGFydD90aGlzLnN0YXJ0PWU6ZT50aGlzLmVuZCYmKHRoaXMuZW5kPWUpfW1hcmtSYW5nZURpcnR5KGUsdCl7ZT50JiYodz1lLGU9dCx0PXcpLGU8dGhpcy5zdGFydCYmKHRoaXMuc3RhcnQ9ZSksdD50aGlzLmVuZCYmKHRoaXMuZW5kPXQpfW1hcmtBbGxEaXJ0eSgpe3RoaXMubWFya1JhbmdlRGlydHkoMCx0aGlzLl9idWZmZXJTZXJ2aWNlLnJvd3MtMSl9fTtmdW5jdGlvbiBMKGUpe3JldHVybiAwPD1lJiZlPDI1Nn1rPXMoW3IoMCx2LklCdWZmZXJTZXJ2aWNlKV0sayl9LDg0NDooZSx0KT0+e2Z1bmN0aW9uIGkoZSl7Zm9yKGNvbnN0IHQgb2YgZSl0LmRpc3Bvc2UoKTtlLmxlbmd0aD0wfU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZ2V0RGlzcG9zZUFycmF5RGlzcG9zYWJsZT10LmRpc3Bvc2VBcnJheT10LnRvRGlzcG9zYWJsZT10Lk11dGFibGVEaXNwb3NhYmxlPXQuRGlzcG9zYWJsZT12b2lkIDAsdC5EaXNwb3NhYmxlPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5fZGlzcG9zYWJsZXM9W10sdGhpcy5faXNEaXNwb3NlZD0hMX1kaXNwb3NlKCl7dGhpcy5faXNEaXNwb3NlZD0hMDtmb3IoY29uc3QgZSBvZiB0aGlzLl9kaXNwb3NhYmxlcyllLmRpc3Bvc2UoKTt0aGlzLl9kaXNwb3NhYmxlcy5sZW5ndGg9MH1yZWdpc3RlcihlKXtyZXR1cm4gdGhpcy5fZGlzcG9zYWJsZXMucHVzaChlKSxlfXVucmVnaXN0ZXIoZSl7Y29uc3QgdD10aGlzLl9kaXNwb3NhYmxlcy5pbmRleE9mKGUpOy0xIT09dCYmdGhpcy5fZGlzcG9zYWJsZXMuc3BsaWNlKHQsMSl9fSx0Lk11dGFibGVEaXNwb3NhYmxlPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5faXNEaXNwb3NlZD0hMX1nZXQgdmFsdWUoKXtyZXR1cm4gdGhpcy5faXNEaXNwb3NlZD92b2lkIDA6dGhpcy5fdmFsdWV9c2V0IHZhbHVlKGUpe3ZhciB0O3RoaXMuX2lzRGlzcG9zZWR8fGU9PT10aGlzLl92YWx1ZXx8KG51bGw9PT0odD10aGlzLl92YWx1ZSl8fHZvaWQgMD09PXR8fHQuZGlzcG9zZSgpLHRoaXMuX3ZhbHVlPWUpfWNsZWFyKCl7dGhpcy52YWx1ZT12b2lkIDB9ZGlzcG9zZSgpe3ZhciBlO3RoaXMuX2lzRGlzcG9zZWQ9ITAsbnVsbD09PShlPXRoaXMuX3ZhbHVlKXx8dm9pZCAwPT09ZXx8ZS5kaXNwb3NlKCksdGhpcy5fdmFsdWU9dm9pZCAwfX0sdC50b0Rpc3Bvc2FibGU9ZnVuY3Rpb24oZSl7cmV0dXJue2Rpc3Bvc2U6ZX19LHQuZGlzcG9zZUFycmF5PWksdC5nZXREaXNwb3NlQXJyYXlEaXNwb3NhYmxlPWZ1bmN0aW9uKGUpe3JldHVybntkaXNwb3NlOigpPT5pKGUpfX19LDE1MDU6KGUsdCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkZvdXJLZXlNYXA9dC5Ud29LZXlNYXA9dm9pZCAwO2NsYXNzIGl7Y29uc3RydWN0b3IoKXt0aGlzLl9kYXRhPXt9fXNldChlLHQsaSl7dGhpcy5fZGF0YVtlXXx8KHRoaXMuX2RhdGFbZV09e30pLHRoaXMuX2RhdGFbZV1bdF09aX1nZXQoZSx0KXtyZXR1cm4gdGhpcy5fZGF0YVtlXT90aGlzLl9kYXRhW2VdW3RdOnZvaWQgMH1jbGVhcigpe3RoaXMuX2RhdGE9e319fXQuVHdvS2V5TWFwPWksdC5Gb3VyS2V5TWFwPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5fZGF0YT1uZXcgaX1zZXQoZSx0LHMscixuKXt0aGlzLl9kYXRhLmdldChlLHQpfHx0aGlzLl9kYXRhLnNldChlLHQsbmV3IGkpLHRoaXMuX2RhdGEuZ2V0KGUsdCkuc2V0KHMscixuKX1nZXQoZSx0LGkscyl7dmFyIHI7cmV0dXJuIG51bGw9PT0ocj10aGlzLl9kYXRhLmdldChlLHQpKXx8dm9pZCAwPT09cj92b2lkIDA6ci5nZXQoaSxzKX1jbGVhcigpe3RoaXMuX2RhdGEuY2xlYXIoKX19fSw2MTE0OihlLHQpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5pc0Nocm9tZU9TPXQuaXNMaW51eD10LmlzV2luZG93cz10LmlzSXBob25lPXQuaXNJcGFkPXQuaXNNYWM9dC5nZXRTYWZhcmlWZXJzaW9uPXQuaXNTYWZhcmk9dC5pc0xlZ2FjeUVkZ2U9dC5pc0ZpcmVmb3g9dC5pc05vZGU9dm9pZCAwLHQuaXNOb2RlPVwidW5kZWZpbmVkXCI9PXR5cGVvZiBuYXZpZ2F0b3I7Y29uc3QgaT10LmlzTm9kZT9cIm5vZGVcIjpuYXZpZ2F0b3IudXNlckFnZW50LHM9dC5pc05vZGU/XCJub2RlXCI6bmF2aWdhdG9yLnBsYXRmb3JtO3QuaXNGaXJlZm94PWkuaW5jbHVkZXMoXCJGaXJlZm94XCIpLHQuaXNMZWdhY3lFZGdlPWkuaW5jbHVkZXMoXCJFZGdlXCIpLHQuaXNTYWZhcmk9L14oKD8hY2hyb21lfGFuZHJvaWQpLikqc2FmYXJpL2kudGVzdChpKSx0LmdldFNhZmFyaVZlcnNpb249ZnVuY3Rpb24oKXtpZighdC5pc1NhZmFyaSlyZXR1cm4gMDtjb25zdCBlPWkubWF0Y2goL1ZlcnNpb25cXC8oXFxkKykvKTtyZXR1cm4gbnVsbD09PWV8fGUubGVuZ3RoPDI/MDpwYXJzZUludChlWzFdKX0sdC5pc01hYz1bXCJNYWNpbnRvc2hcIixcIk1hY0ludGVsXCIsXCJNYWNQUENcIixcIk1hYzY4S1wiXS5pbmNsdWRlcyhzKSx0LmlzSXBhZD1cImlQYWRcIj09PXMsdC5pc0lwaG9uZT1cImlQaG9uZVwiPT09cyx0LmlzV2luZG93cz1bXCJXaW5kb3dzXCIsXCJXaW4xNlwiLFwiV2luMzJcIixcIldpbkNFXCJdLmluY2x1ZGVzKHMpLHQuaXNMaW51eD1zLmluZGV4T2YoXCJMaW51eFwiKT49MCx0LmlzQ2hyb21lT1M9L1xcYkNyT1NcXGIvLnRlc3QoaSl9LDYxMDY6KGUsdCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LlNvcnRlZExpc3Q9dm9pZCAwO2xldCBpPTA7dC5Tb3J0ZWRMaXN0PWNsYXNze2NvbnN0cnVjdG9yKGUpe3RoaXMuX2dldEtleT1lLHRoaXMuX2FycmF5PVtdfWNsZWFyKCl7dGhpcy5fYXJyYXkubGVuZ3RoPTB9aW5zZXJ0KGUpezAhPT10aGlzLl9hcnJheS5sZW5ndGg/KGk9dGhpcy5fc2VhcmNoKHRoaXMuX2dldEtleShlKSksdGhpcy5fYXJyYXkuc3BsaWNlKGksMCxlKSk6dGhpcy5fYXJyYXkucHVzaChlKX1kZWxldGUoZSl7aWYoMD09PXRoaXMuX2FycmF5Lmxlbmd0aClyZXR1cm4hMTtjb25zdCB0PXRoaXMuX2dldEtleShlKTtpZih2b2lkIDA9PT10KXJldHVybiExO2lmKGk9dGhpcy5fc2VhcmNoKHQpLC0xPT09aSlyZXR1cm4hMTtpZih0aGlzLl9nZXRLZXkodGhpcy5fYXJyYXlbaV0pIT09dClyZXR1cm4hMTtkb3tpZih0aGlzLl9hcnJheVtpXT09PWUpcmV0dXJuIHRoaXMuX2FycmF5LnNwbGljZShpLDEpLCEwfXdoaWxlKCsraTx0aGlzLl9hcnJheS5sZW5ndGgmJnRoaXMuX2dldEtleSh0aGlzLl9hcnJheVtpXSk9PT10KTtyZXR1cm4hMX0qZ2V0S2V5SXRlcmF0b3IoZSl7aWYoMCE9PXRoaXMuX2FycmF5Lmxlbmd0aCYmKGk9dGhpcy5fc2VhcmNoKGUpLCEoaTwwfHxpPj10aGlzLl9hcnJheS5sZW5ndGgpJiZ0aGlzLl9nZXRLZXkodGhpcy5fYXJyYXlbaV0pPT09ZSkpZG97eWllbGQgdGhpcy5fYXJyYXlbaV19d2hpbGUoKytpPHRoaXMuX2FycmF5Lmxlbmd0aCYmdGhpcy5fZ2V0S2V5KHRoaXMuX2FycmF5W2ldKT09PWUpfWZvckVhY2hCeUtleShlLHQpe2lmKDAhPT10aGlzLl9hcnJheS5sZW5ndGgmJihpPXRoaXMuX3NlYXJjaChlKSwhKGk8MHx8aT49dGhpcy5fYXJyYXkubGVuZ3RoKSYmdGhpcy5fZ2V0S2V5KHRoaXMuX2FycmF5W2ldKT09PWUpKWRve3QodGhpcy5fYXJyYXlbaV0pfXdoaWxlKCsraTx0aGlzLl9hcnJheS5sZW5ndGgmJnRoaXMuX2dldEtleSh0aGlzLl9hcnJheVtpXSk9PT1lKX12YWx1ZXMoKXtyZXR1cm5bLi4udGhpcy5fYXJyYXldLnZhbHVlcygpfV9zZWFyY2goZSl7bGV0IHQ9MCxpPXRoaXMuX2FycmF5Lmxlbmd0aC0xO2Zvcig7aT49dDspe2xldCBzPXQraT4+MTtjb25zdCByPXRoaXMuX2dldEtleSh0aGlzLl9hcnJheVtzXSk7aWYocj5lKWk9cy0xO2Vsc2V7aWYoIShyPGUpKXtmb3IoO3M+MCYmdGhpcy5fZ2V0S2V5KHRoaXMuX2FycmF5W3MtMV0pPT09ZTspcy0tO3JldHVybiBzfXQ9cysxfX1yZXR1cm4gdH19fSw3MjI2OihlLHQsaSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkRlYm91bmNlZElkbGVUYXNrPXQuSWRsZVRhc2tRdWV1ZT10LlByaW9yaXR5VGFza1F1ZXVlPXZvaWQgMDtjb25zdCBzPWkoNjExNCk7Y2xhc3Mgcntjb25zdHJ1Y3Rvcigpe3RoaXMuX3Rhc2tzPVtdLHRoaXMuX2k9MH1lbnF1ZXVlKGUpe3RoaXMuX3Rhc2tzLnB1c2goZSksdGhpcy5fc3RhcnQoKX1mbHVzaCgpe2Zvcig7dGhpcy5faTx0aGlzLl90YXNrcy5sZW5ndGg7KXRoaXMuX3Rhc2tzW3RoaXMuX2ldKCl8fHRoaXMuX2krKzt0aGlzLmNsZWFyKCl9Y2xlYXIoKXt0aGlzLl9pZGxlQ2FsbGJhY2smJih0aGlzLl9jYW5jZWxDYWxsYmFjayh0aGlzLl9pZGxlQ2FsbGJhY2spLHRoaXMuX2lkbGVDYWxsYmFjaz12b2lkIDApLHRoaXMuX2k9MCx0aGlzLl90YXNrcy5sZW5ndGg9MH1fc3RhcnQoKXt0aGlzLl9pZGxlQ2FsbGJhY2t8fCh0aGlzLl9pZGxlQ2FsbGJhY2s9dGhpcy5fcmVxdWVzdENhbGxiYWNrKHRoaXMuX3Byb2Nlc3MuYmluZCh0aGlzKSkpfV9wcm9jZXNzKGUpe3RoaXMuX2lkbGVDYWxsYmFjaz12b2lkIDA7bGV0IHQ9MCxpPTAscz1lLnRpbWVSZW1haW5pbmcoKSxyPTA7Zm9yKDt0aGlzLl9pPHRoaXMuX3Rhc2tzLmxlbmd0aDspe2lmKHQ9RGF0ZS5ub3coKSx0aGlzLl90YXNrc1t0aGlzLl9pXSgpfHx0aGlzLl9pKyssdD1NYXRoLm1heCgxLERhdGUubm93KCktdCksaT1NYXRoLm1heCh0LGkpLHI9ZS50aW1lUmVtYWluaW5nKCksMS41Kmk+cilyZXR1cm4gcy10PC0yMCYmY29uc29sZS53YXJuKGB0YXNrIHF1ZXVlIGV4Y2VlZGVkIGFsbG90dGVkIGRlYWRsaW5lIGJ5ICR7TWF0aC5hYnMoTWF0aC5yb3VuZChzLXQpKX1tc2ApLHZvaWQgdGhpcy5fc3RhcnQoKTtzPXJ9dGhpcy5jbGVhcigpfX1jbGFzcyBuIGV4dGVuZHMgcntfcmVxdWVzdENhbGxiYWNrKGUpe3JldHVybiBzZXRUaW1lb3V0KCgoKT0+ZSh0aGlzLl9jcmVhdGVEZWFkbGluZSgxNikpKSl9X2NhbmNlbENhbGxiYWNrKGUpe2NsZWFyVGltZW91dChlKX1fY3JlYXRlRGVhZGxpbmUoZSl7Y29uc3QgdD1EYXRlLm5vdygpK2U7cmV0dXJue3RpbWVSZW1haW5pbmc6KCk9Pk1hdGgubWF4KDAsdC1EYXRlLm5vdygpKX19fXQuUHJpb3JpdHlUYXNrUXVldWU9bix0LklkbGVUYXNrUXVldWU9IXMuaXNOb2RlJiZcInJlcXVlc3RJZGxlQ2FsbGJhY2tcImluIHdpbmRvdz9jbGFzcyBleHRlbmRzIHJ7X3JlcXVlc3RDYWxsYmFjayhlKXtyZXR1cm4gcmVxdWVzdElkbGVDYWxsYmFjayhlKX1fY2FuY2VsQ2FsbGJhY2soZSl7Y2FuY2VsSWRsZUNhbGxiYWNrKGUpfX06bix0LkRlYm91bmNlZElkbGVUYXNrPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5fcXVldWU9bmV3IHQuSWRsZVRhc2tRdWV1ZX1zZXQoZSl7dGhpcy5fcXVldWUuY2xlYXIoKSx0aGlzLl9xdWV1ZS5lbnF1ZXVlKGUpfWZsdXNoKCl7dGhpcy5fcXVldWUuZmx1c2goKX19fSw5MjgyOihlLHQsaSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LnVwZGF0ZVdpbmRvd3NNb2RlV3JhcHBlZFN0YXRlPXZvaWQgMDtjb25zdCBzPWkoNjQzKTt0LnVwZGF0ZVdpbmRvd3NNb2RlV3JhcHBlZFN0YXRlPWZ1bmN0aW9uKGUpe2NvbnN0IHQ9ZS5idWZmZXIubGluZXMuZ2V0KGUuYnVmZmVyLnliYXNlK2UuYnVmZmVyLnktMSksaT1udWxsPT10P3ZvaWQgMDp0LmdldChlLmNvbHMtMSkscj1lLmJ1ZmZlci5saW5lcy5nZXQoZS5idWZmZXIueWJhc2UrZS5idWZmZXIueSk7ciYmaSYmKHIuaXNXcmFwcGVkPWlbcy5DSEFSX0RBVEFfQ09ERV9JTkRFWF0hPT1zLk5VTExfQ0VMTF9DT0RFJiZpW3MuQ0hBUl9EQVRBX0NPREVfSU5ERVhdIT09cy5XSElURVNQQUNFX0NFTExfQ09ERSl9fSwzNzM0OihlLHQpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5FeHRlbmRlZEF0dHJzPXQuQXR0cmlidXRlRGF0YT12b2lkIDA7Y2xhc3MgaXtjb25zdHJ1Y3Rvcigpe3RoaXMuZmc9MCx0aGlzLmJnPTAsdGhpcy5leHRlbmRlZD1uZXcgc31zdGF0aWMgdG9Db2xvclJHQihlKXtyZXR1cm5bZT4+PjE2JjI1NSxlPj4+OCYyNTUsMjU1JmVdfXN0YXRpYyBmcm9tQ29sb3JSR0IoZSl7cmV0dXJuKDI1NSZlWzBdKTw8MTZ8KDI1NSZlWzFdKTw8OHwyNTUmZVsyXX1jbG9uZSgpe2NvbnN0IGU9bmV3IGk7cmV0dXJuIGUuZmc9dGhpcy5mZyxlLmJnPXRoaXMuYmcsZS5leHRlbmRlZD10aGlzLmV4dGVuZGVkLmNsb25lKCksZX1pc0ludmVyc2UoKXtyZXR1cm4gNjcxMDg4NjQmdGhpcy5mZ31pc0JvbGQoKXtyZXR1cm4gMTM0MjE3NzI4JnRoaXMuZmd9aXNVbmRlcmxpbmUoKXtyZXR1cm4gdGhpcy5oYXNFeHRlbmRlZEF0dHJzKCkmJjAhPT10aGlzLmV4dGVuZGVkLnVuZGVybGluZVN0eWxlPzE6MjY4NDM1NDU2JnRoaXMuZmd9aXNCbGluaygpe3JldHVybiA1MzY4NzA5MTImdGhpcy5mZ31pc0ludmlzaWJsZSgpe3JldHVybiAxMDczNzQxODI0JnRoaXMuZmd9aXNJdGFsaWMoKXtyZXR1cm4gNjcxMDg4NjQmdGhpcy5iZ31pc0RpbSgpe3JldHVybiAxMzQyMTc3MjgmdGhpcy5iZ31pc1N0cmlrZXRocm91Z2goKXtyZXR1cm4gMjE0NzQ4MzY0OCZ0aGlzLmZnfWlzUHJvdGVjdGVkKCl7cmV0dXJuIDUzNjg3MDkxMiZ0aGlzLmJnfWlzT3ZlcmxpbmUoKXtyZXR1cm4gMTA3Mzc0MTgyNCZ0aGlzLmJnfWdldEZnQ29sb3JNb2RlKCl7cmV0dXJuIDUwMzMxNjQ4JnRoaXMuZmd9Z2V0QmdDb2xvck1vZGUoKXtyZXR1cm4gNTAzMzE2NDgmdGhpcy5iZ31pc0ZnUkdCKCl7cmV0dXJuIDUwMzMxNjQ4PT0oNTAzMzE2NDgmdGhpcy5mZyl9aXNCZ1JHQigpe3JldHVybiA1MDMzMTY0OD09KDUwMzMxNjQ4JnRoaXMuYmcpfWlzRmdQYWxldHRlKCl7cmV0dXJuIDE2Nzc3MjE2PT0oNTAzMzE2NDgmdGhpcy5mZyl8fDMzNTU0NDMyPT0oNTAzMzE2NDgmdGhpcy5mZyl9aXNCZ1BhbGV0dGUoKXtyZXR1cm4gMTY3NzcyMTY9PSg1MDMzMTY0OCZ0aGlzLmJnKXx8MzM1NTQ0MzI9PSg1MDMzMTY0OCZ0aGlzLmJnKX1pc0ZnRGVmYXVsdCgpe3JldHVybiAwPT0oNTAzMzE2NDgmdGhpcy5mZyl9aXNCZ0RlZmF1bHQoKXtyZXR1cm4gMD09KDUwMzMxNjQ4JnRoaXMuYmcpfWlzQXR0cmlidXRlRGVmYXVsdCgpe3JldHVybiAwPT09dGhpcy5mZyYmMD09PXRoaXMuYmd9Z2V0RmdDb2xvcigpe3N3aXRjaCg1MDMzMTY0OCZ0aGlzLmZnKXtjYXNlIDE2Nzc3MjE2OmNhc2UgMzM1NTQ0MzI6cmV0dXJuIDI1NSZ0aGlzLmZnO2Nhc2UgNTAzMzE2NDg6cmV0dXJuIDE2Nzc3MjE1JnRoaXMuZmc7ZGVmYXVsdDpyZXR1cm4tMX19Z2V0QmdDb2xvcigpe3N3aXRjaCg1MDMzMTY0OCZ0aGlzLmJnKXtjYXNlIDE2Nzc3MjE2OmNhc2UgMzM1NTQ0MzI6cmV0dXJuIDI1NSZ0aGlzLmJnO2Nhc2UgNTAzMzE2NDg6cmV0dXJuIDE2Nzc3MjE1JnRoaXMuYmc7ZGVmYXVsdDpyZXR1cm4tMX19aGFzRXh0ZW5kZWRBdHRycygpe3JldHVybiAyNjg0MzU0NTYmdGhpcy5iZ311cGRhdGVFeHRlbmRlZCgpe3RoaXMuZXh0ZW5kZWQuaXNFbXB0eSgpP3RoaXMuYmcmPS0yNjg0MzU0NTc6dGhpcy5iZ3w9MjY4NDM1NDU2fWdldFVuZGVybGluZUNvbG9yKCl7aWYoMjY4NDM1NDU2JnRoaXMuYmcmJn50aGlzLmV4dGVuZGVkLnVuZGVybGluZUNvbG9yKXN3aXRjaCg1MDMzMTY0OCZ0aGlzLmV4dGVuZGVkLnVuZGVybGluZUNvbG9yKXtjYXNlIDE2Nzc3MjE2OmNhc2UgMzM1NTQ0MzI6cmV0dXJuIDI1NSZ0aGlzLmV4dGVuZGVkLnVuZGVybGluZUNvbG9yO2Nhc2UgNTAzMzE2NDg6cmV0dXJuIDE2Nzc3MjE1JnRoaXMuZXh0ZW5kZWQudW5kZXJsaW5lQ29sb3I7ZGVmYXVsdDpyZXR1cm4gdGhpcy5nZXRGZ0NvbG9yKCl9cmV0dXJuIHRoaXMuZ2V0RmdDb2xvcigpfWdldFVuZGVybGluZUNvbG9yTW9kZSgpe3JldHVybiAyNjg0MzU0NTYmdGhpcy5iZyYmfnRoaXMuZXh0ZW5kZWQudW5kZXJsaW5lQ29sb3I/NTAzMzE2NDgmdGhpcy5leHRlbmRlZC51bmRlcmxpbmVDb2xvcjp0aGlzLmdldEZnQ29sb3JNb2RlKCl9aXNVbmRlcmxpbmVDb2xvclJHQigpe3JldHVybiAyNjg0MzU0NTYmdGhpcy5iZyYmfnRoaXMuZXh0ZW5kZWQudW5kZXJsaW5lQ29sb3I/NTAzMzE2NDg9PSg1MDMzMTY0OCZ0aGlzLmV4dGVuZGVkLnVuZGVybGluZUNvbG9yKTp0aGlzLmlzRmdSR0IoKX1pc1VuZGVybGluZUNvbG9yUGFsZXR0ZSgpe3JldHVybiAyNjg0MzU0NTYmdGhpcy5iZyYmfnRoaXMuZXh0ZW5kZWQudW5kZXJsaW5lQ29sb3I/MTY3NzcyMTY9PSg1MDMzMTY0OCZ0aGlzLmV4dGVuZGVkLnVuZGVybGluZUNvbG9yKXx8MzM1NTQ0MzI9PSg1MDMzMTY0OCZ0aGlzLmV4dGVuZGVkLnVuZGVybGluZUNvbG9yKTp0aGlzLmlzRmdQYWxldHRlKCl9aXNVbmRlcmxpbmVDb2xvckRlZmF1bHQoKXtyZXR1cm4gMjY4NDM1NDU2JnRoaXMuYmcmJn50aGlzLmV4dGVuZGVkLnVuZGVybGluZUNvbG9yPzA9PSg1MDMzMTY0OCZ0aGlzLmV4dGVuZGVkLnVuZGVybGluZUNvbG9yKTp0aGlzLmlzRmdEZWZhdWx0KCl9Z2V0VW5kZXJsaW5lU3R5bGUoKXtyZXR1cm4gMjY4NDM1NDU2JnRoaXMuZmc/MjY4NDM1NDU2JnRoaXMuYmc/dGhpcy5leHRlbmRlZC51bmRlcmxpbmVTdHlsZToxOjB9fXQuQXR0cmlidXRlRGF0YT1pO2NsYXNzIHN7Z2V0IGV4dCgpe3JldHVybiB0aGlzLl91cmxJZD8tNDY5NzYyMDQ5JnRoaXMuX2V4dHx0aGlzLnVuZGVybGluZVN0eWxlPDwyNjp0aGlzLl9leHR9c2V0IGV4dChlKXt0aGlzLl9leHQ9ZX1nZXQgdW5kZXJsaW5lU3R5bGUoKXtyZXR1cm4gdGhpcy5fdXJsSWQ/NTooNDY5NzYyMDQ4JnRoaXMuX2V4dCk+PjI2fXNldCB1bmRlcmxpbmVTdHlsZShlKXt0aGlzLl9leHQmPS00Njk3NjIwNDksdGhpcy5fZXh0fD1lPDwyNiY0Njk3NjIwNDh9Z2V0IHVuZGVybGluZUNvbG9yKCl7cmV0dXJuIDY3MTA4ODYzJnRoaXMuX2V4dH1zZXQgdW5kZXJsaW5lQ29sb3IoZSl7dGhpcy5fZXh0Jj0tNjcxMDg4NjQsdGhpcy5fZXh0fD02NzEwODg2MyZlfWdldCB1cmxJZCgpe3JldHVybiB0aGlzLl91cmxJZH1zZXQgdXJsSWQoZSl7dGhpcy5fdXJsSWQ9ZX1jb25zdHJ1Y3RvcihlPTAsdD0wKXt0aGlzLl9leHQ9MCx0aGlzLl91cmxJZD0wLHRoaXMuX2V4dD1lLHRoaXMuX3VybElkPXR9Y2xvbmUoKXtyZXR1cm4gbmV3IHModGhpcy5fZXh0LHRoaXMuX3VybElkKX1pc0VtcHR5KCl7cmV0dXJuIDA9PT10aGlzLnVuZGVybGluZVN0eWxlJiYwPT09dGhpcy5fdXJsSWR9fXQuRXh0ZW5kZWRBdHRycz1zfSw5MDkyOihlLHQsaSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkJ1ZmZlcj10Lk1BWF9CVUZGRVJfU0laRT12b2lkIDA7Y29uc3Qgcz1pKDYzNDkpLHI9aSg3MjI2KSxuPWkoMzczNCksbz1pKDg0MzcpLGE9aSg0NjM0KSxoPWkoNTExKSxjPWkoNjQzKSxsPWkoNDg2MyksZD1pKDcxMTYpO3QuTUFYX0JVRkZFUl9TSVpFPTQyOTQ5NjcyOTUsdC5CdWZmZXI9Y2xhc3N7Y29uc3RydWN0b3IoZSx0LGkpe3RoaXMuX2hhc1Njcm9sbGJhY2s9ZSx0aGlzLl9vcHRpb25zU2VydmljZT10LHRoaXMuX2J1ZmZlclNlcnZpY2U9aSx0aGlzLnlkaXNwPTAsdGhpcy55YmFzZT0wLHRoaXMueT0wLHRoaXMueD0wLHRoaXMudGFicz17fSx0aGlzLnNhdmVkWT0wLHRoaXMuc2F2ZWRYPTAsdGhpcy5zYXZlZEN1ckF0dHJEYXRhPW8uREVGQVVMVF9BVFRSX0RBVEEuY2xvbmUoKSx0aGlzLnNhdmVkQ2hhcnNldD1kLkRFRkFVTFRfQ0hBUlNFVCx0aGlzLm1hcmtlcnM9W10sdGhpcy5fbnVsbENlbGw9aC5DZWxsRGF0YS5mcm9tQ2hhckRhdGEoWzAsYy5OVUxMX0NFTExfQ0hBUixjLk5VTExfQ0VMTF9XSURUSCxjLk5VTExfQ0VMTF9DT0RFXSksdGhpcy5fd2hpdGVzcGFjZUNlbGw9aC5DZWxsRGF0YS5mcm9tQ2hhckRhdGEoWzAsYy5XSElURVNQQUNFX0NFTExfQ0hBUixjLldISVRFU1BBQ0VfQ0VMTF9XSURUSCxjLldISVRFU1BBQ0VfQ0VMTF9DT0RFXSksdGhpcy5faXNDbGVhcmluZz0hMSx0aGlzLl9tZW1vcnlDbGVhbnVwUXVldWU9bmV3IHIuSWRsZVRhc2tRdWV1ZSx0aGlzLl9tZW1vcnlDbGVhbnVwUG9zaXRpb249MCx0aGlzLl9jb2xzPXRoaXMuX2J1ZmZlclNlcnZpY2UuY29scyx0aGlzLl9yb3dzPXRoaXMuX2J1ZmZlclNlcnZpY2Uucm93cyx0aGlzLmxpbmVzPW5ldyBzLkNpcmN1bGFyTGlzdCh0aGlzLl9nZXRDb3JyZWN0QnVmZmVyTGVuZ3RoKHRoaXMuX3Jvd3MpKSx0aGlzLnNjcm9sbFRvcD0wLHRoaXMuc2Nyb2xsQm90dG9tPXRoaXMuX3Jvd3MtMSx0aGlzLnNldHVwVGFiU3RvcHMoKX1nZXROdWxsQ2VsbChlKXtyZXR1cm4gZT8odGhpcy5fbnVsbENlbGwuZmc9ZS5mZyx0aGlzLl9udWxsQ2VsbC5iZz1lLmJnLHRoaXMuX251bGxDZWxsLmV4dGVuZGVkPWUuZXh0ZW5kZWQpOih0aGlzLl9udWxsQ2VsbC5mZz0wLHRoaXMuX251bGxDZWxsLmJnPTAsdGhpcy5fbnVsbENlbGwuZXh0ZW5kZWQ9bmV3IG4uRXh0ZW5kZWRBdHRycyksdGhpcy5fbnVsbENlbGx9Z2V0V2hpdGVzcGFjZUNlbGwoZSl7cmV0dXJuIGU/KHRoaXMuX3doaXRlc3BhY2VDZWxsLmZnPWUuZmcsdGhpcy5fd2hpdGVzcGFjZUNlbGwuYmc9ZS5iZyx0aGlzLl93aGl0ZXNwYWNlQ2VsbC5leHRlbmRlZD1lLmV4dGVuZGVkKToodGhpcy5fd2hpdGVzcGFjZUNlbGwuZmc9MCx0aGlzLl93aGl0ZXNwYWNlQ2VsbC5iZz0wLHRoaXMuX3doaXRlc3BhY2VDZWxsLmV4dGVuZGVkPW5ldyBuLkV4dGVuZGVkQXR0cnMpLHRoaXMuX3doaXRlc3BhY2VDZWxsfWdldEJsYW5rTGluZShlLHQpe3JldHVybiBuZXcgby5CdWZmZXJMaW5lKHRoaXMuX2J1ZmZlclNlcnZpY2UuY29scyx0aGlzLmdldE51bGxDZWxsKGUpLHQpfWdldCBoYXNTY3JvbGxiYWNrKCl7cmV0dXJuIHRoaXMuX2hhc1Njcm9sbGJhY2smJnRoaXMubGluZXMubWF4TGVuZ3RoPnRoaXMuX3Jvd3N9Z2V0IGlzQ3Vyc29ySW5WaWV3cG9ydCgpe2NvbnN0IGU9dGhpcy55YmFzZSt0aGlzLnktdGhpcy55ZGlzcDtyZXR1cm4gZT49MCYmZTx0aGlzLl9yb3dzfV9nZXRDb3JyZWN0QnVmZmVyTGVuZ3RoKGUpe2lmKCF0aGlzLl9oYXNTY3JvbGxiYWNrKXJldHVybiBlO2NvbnN0IGk9ZSt0aGlzLl9vcHRpb25zU2VydmljZS5yYXdPcHRpb25zLnNjcm9sbGJhY2s7cmV0dXJuIGk+dC5NQVhfQlVGRkVSX1NJWkU/dC5NQVhfQlVGRkVSX1NJWkU6aX1maWxsVmlld3BvcnRSb3dzKGUpe2lmKDA9PT10aGlzLmxpbmVzLmxlbmd0aCl7dm9pZCAwPT09ZSYmKGU9by5ERUZBVUxUX0FUVFJfREFUQSk7bGV0IHQ9dGhpcy5fcm93cztmb3IoO3QtLTspdGhpcy5saW5lcy5wdXNoKHRoaXMuZ2V0QmxhbmtMaW5lKGUpKX19Y2xlYXIoKXt0aGlzLnlkaXNwPTAsdGhpcy55YmFzZT0wLHRoaXMueT0wLHRoaXMueD0wLHRoaXMubGluZXM9bmV3IHMuQ2lyY3VsYXJMaXN0KHRoaXMuX2dldENvcnJlY3RCdWZmZXJMZW5ndGgodGhpcy5fcm93cykpLHRoaXMuc2Nyb2xsVG9wPTAsdGhpcy5zY3JvbGxCb3R0b209dGhpcy5fcm93cy0xLHRoaXMuc2V0dXBUYWJTdG9wcygpfXJlc2l6ZShlLHQpe2NvbnN0IGk9dGhpcy5nZXROdWxsQ2VsbChvLkRFRkFVTFRfQVRUUl9EQVRBKTtsZXQgcz0wO2NvbnN0IHI9dGhpcy5fZ2V0Q29ycmVjdEJ1ZmZlckxlbmd0aCh0KTtpZihyPnRoaXMubGluZXMubWF4TGVuZ3RoJiYodGhpcy5saW5lcy5tYXhMZW5ndGg9ciksdGhpcy5saW5lcy5sZW5ndGg+MCl7aWYodGhpcy5fY29sczxlKWZvcihsZXQgdD0wO3Q8dGhpcy5saW5lcy5sZW5ndGg7dCsrKXMrPSt0aGlzLmxpbmVzLmdldCh0KS5yZXNpemUoZSxpKTtsZXQgbj0wO2lmKHRoaXMuX3Jvd3M8dClmb3IobGV0IHM9dGhpcy5fcm93cztzPHQ7cysrKXRoaXMubGluZXMubGVuZ3RoPHQrdGhpcy55YmFzZSYmKHRoaXMuX29wdGlvbnNTZXJ2aWNlLnJhd09wdGlvbnMud2luZG93c01vZGV8fHZvaWQgMCE9PXRoaXMuX29wdGlvbnNTZXJ2aWNlLnJhd09wdGlvbnMud2luZG93c1B0eS5iYWNrZW5kfHx2b2lkIDAhPT10aGlzLl9vcHRpb25zU2VydmljZS5yYXdPcHRpb25zLndpbmRvd3NQdHkuYnVpbGROdW1iZXI/dGhpcy5saW5lcy5wdXNoKG5ldyBvLkJ1ZmZlckxpbmUoZSxpKSk6dGhpcy55YmFzZT4wJiZ0aGlzLmxpbmVzLmxlbmd0aDw9dGhpcy55YmFzZSt0aGlzLnkrbisxPyh0aGlzLnliYXNlLS0sbisrLHRoaXMueWRpc3A+MCYmdGhpcy55ZGlzcC0tKTp0aGlzLmxpbmVzLnB1c2gobmV3IG8uQnVmZmVyTGluZShlLGkpKSk7ZWxzZSBmb3IobGV0IGU9dGhpcy5fcm93cztlPnQ7ZS0tKXRoaXMubGluZXMubGVuZ3RoPnQrdGhpcy55YmFzZSYmKHRoaXMubGluZXMubGVuZ3RoPnRoaXMueWJhc2UrdGhpcy55KzE/dGhpcy5saW5lcy5wb3AoKToodGhpcy55YmFzZSsrLHRoaXMueWRpc3ArKykpO2lmKHI8dGhpcy5saW5lcy5tYXhMZW5ndGgpe2NvbnN0IGU9dGhpcy5saW5lcy5sZW5ndGgtcjtlPjAmJih0aGlzLmxpbmVzLnRyaW1TdGFydChlKSx0aGlzLnliYXNlPU1hdGgubWF4KHRoaXMueWJhc2UtZSwwKSx0aGlzLnlkaXNwPU1hdGgubWF4KHRoaXMueWRpc3AtZSwwKSx0aGlzLnNhdmVkWT1NYXRoLm1heCh0aGlzLnNhdmVkWS1lLDApKSx0aGlzLmxpbmVzLm1heExlbmd0aD1yfXRoaXMueD1NYXRoLm1pbih0aGlzLngsZS0xKSx0aGlzLnk9TWF0aC5taW4odGhpcy55LHQtMSksbiYmKHRoaXMueSs9biksdGhpcy5zYXZlZFg9TWF0aC5taW4odGhpcy5zYXZlZFgsZS0xKSx0aGlzLnNjcm9sbFRvcD0wfWlmKHRoaXMuc2Nyb2xsQm90dG9tPXQtMSx0aGlzLl9pc1JlZmxvd0VuYWJsZWQmJih0aGlzLl9yZWZsb3coZSx0KSx0aGlzLl9jb2xzPmUpKWZvcihsZXQgdD0wO3Q8dGhpcy5saW5lcy5sZW5ndGg7dCsrKXMrPSt0aGlzLmxpbmVzLmdldCh0KS5yZXNpemUoZSxpKTt0aGlzLl9jb2xzPWUsdGhpcy5fcm93cz10LHRoaXMuX21lbW9yeUNsZWFudXBRdWV1ZS5jbGVhcigpLHM+LjEqdGhpcy5saW5lcy5sZW5ndGgmJih0aGlzLl9tZW1vcnlDbGVhbnVwUG9zaXRpb249MCx0aGlzLl9tZW1vcnlDbGVhbnVwUXVldWUuZW5xdWV1ZSgoKCk9PnRoaXMuX2JhdGNoZWRNZW1vcnlDbGVhbnVwKCkpKSl9X2JhdGNoZWRNZW1vcnlDbGVhbnVwKCl7bGV0IGU9ITA7dGhpcy5fbWVtb3J5Q2xlYW51cFBvc2l0aW9uPj10aGlzLmxpbmVzLmxlbmd0aCYmKHRoaXMuX21lbW9yeUNsZWFudXBQb3NpdGlvbj0wLGU9ITEpO2xldCB0PTA7Zm9yKDt0aGlzLl9tZW1vcnlDbGVhbnVwUG9zaXRpb248dGhpcy5saW5lcy5sZW5ndGg7KWlmKHQrPXRoaXMubGluZXMuZ2V0KHRoaXMuX21lbW9yeUNsZWFudXBQb3NpdGlvbisrKS5jbGVhbnVwTWVtb3J5KCksdD4xMDApcmV0dXJuITA7cmV0dXJuIGV9Z2V0IF9pc1JlZmxvd0VuYWJsZWQoKXtjb25zdCBlPXRoaXMuX29wdGlvbnNTZXJ2aWNlLnJhd09wdGlvbnMud2luZG93c1B0eTtyZXR1cm4gZSYmZS5idWlsZE51bWJlcj90aGlzLl9oYXNTY3JvbGxiYWNrJiZcImNvbnB0eVwiPT09ZS5iYWNrZW5kJiZlLmJ1aWxkTnVtYmVyPj0yMTM3Njp0aGlzLl9oYXNTY3JvbGxiYWNrJiYhdGhpcy5fb3B0aW9uc1NlcnZpY2UucmF3T3B0aW9ucy53aW5kb3dzTW9kZX1fcmVmbG93KGUsdCl7dGhpcy5fY29scyE9PWUmJihlPnRoaXMuX2NvbHM/dGhpcy5fcmVmbG93TGFyZ2VyKGUsdCk6dGhpcy5fcmVmbG93U21hbGxlcihlLHQpKX1fcmVmbG93TGFyZ2VyKGUsdCl7Y29uc3QgaT0oMCxhLnJlZmxvd0xhcmdlckdldExpbmVzVG9SZW1vdmUpKHRoaXMubGluZXMsdGhpcy5fY29scyxlLHRoaXMueWJhc2UrdGhpcy55LHRoaXMuZ2V0TnVsbENlbGwoby5ERUZBVUxUX0FUVFJfREFUQSkpO2lmKGkubGVuZ3RoPjApe2NvbnN0IHM9KDAsYS5yZWZsb3dMYXJnZXJDcmVhdGVOZXdMYXlvdXQpKHRoaXMubGluZXMsaSk7KDAsYS5yZWZsb3dMYXJnZXJBcHBseU5ld0xheW91dCkodGhpcy5saW5lcyxzLmxheW91dCksdGhpcy5fcmVmbG93TGFyZ2VyQWRqdXN0Vmlld3BvcnQoZSx0LHMuY291bnRSZW1vdmVkKX19X3JlZmxvd0xhcmdlckFkanVzdFZpZXdwb3J0KGUsdCxpKXtjb25zdCBzPXRoaXMuZ2V0TnVsbENlbGwoby5ERUZBVUxUX0FUVFJfREFUQSk7bGV0IHI9aTtmb3IoO3ItLSA+MDspMD09PXRoaXMueWJhc2U/KHRoaXMueT4wJiZ0aGlzLnktLSx0aGlzLmxpbmVzLmxlbmd0aDx0JiZ0aGlzLmxpbmVzLnB1c2gobmV3IG8uQnVmZmVyTGluZShlLHMpKSk6KHRoaXMueWRpc3A9PT10aGlzLnliYXNlJiZ0aGlzLnlkaXNwLS0sdGhpcy55YmFzZS0tKTt0aGlzLnNhdmVkWT1NYXRoLm1heCh0aGlzLnNhdmVkWS1pLDApfV9yZWZsb3dTbWFsbGVyKGUsdCl7Y29uc3QgaT10aGlzLmdldE51bGxDZWxsKG8uREVGQVVMVF9BVFRSX0RBVEEpLHM9W107bGV0IHI9MDtmb3IobGV0IG49dGhpcy5saW5lcy5sZW5ndGgtMTtuPj0wO24tLSl7bGV0IGg9dGhpcy5saW5lcy5nZXQobik7aWYoIWh8fCFoLmlzV3JhcHBlZCYmaC5nZXRUcmltbWVkTGVuZ3RoKCk8PWUpY29udGludWU7Y29uc3QgYz1baF07Zm9yKDtoLmlzV3JhcHBlZCYmbj4wOyloPXRoaXMubGluZXMuZ2V0KC0tbiksYy51bnNoaWZ0KGgpO2NvbnN0IGw9dGhpcy55YmFzZSt0aGlzLnk7aWYobD49biYmbDxuK2MubGVuZ3RoKWNvbnRpbnVlO2NvbnN0IGQ9Y1tjLmxlbmd0aC0xXS5nZXRUcmltbWVkTGVuZ3RoKCksXz0oMCxhLnJlZmxvd1NtYWxsZXJHZXROZXdMaW5lTGVuZ3RocykoYyx0aGlzLl9jb2xzLGUpLHU9Xy5sZW5ndGgtYy5sZW5ndGg7bGV0IGY7Zj0wPT09dGhpcy55YmFzZSYmdGhpcy55IT09dGhpcy5saW5lcy5sZW5ndGgtMT9NYXRoLm1heCgwLHRoaXMueS10aGlzLmxpbmVzLm1heExlbmd0aCt1KTpNYXRoLm1heCgwLHRoaXMubGluZXMubGVuZ3RoLXRoaXMubGluZXMubWF4TGVuZ3RoK3UpO2NvbnN0IHY9W107Zm9yKGxldCBlPTA7ZTx1O2UrKyl7Y29uc3QgZT10aGlzLmdldEJsYW5rTGluZShvLkRFRkFVTFRfQVRUUl9EQVRBLCEwKTt2LnB1c2goZSl9di5sZW5ndGg+MCYmKHMucHVzaCh7c3RhcnQ6bitjLmxlbmd0aCtyLG5ld0xpbmVzOnZ9KSxyKz12Lmxlbmd0aCksYy5wdXNoKC4uLnYpO2xldCBwPV8ubGVuZ3RoLTEsZz1fW3BdOzA9PT1nJiYocC0tLGc9X1twXSk7bGV0IG09Yy5sZW5ndGgtdS0xLFM9ZDtmb3IoO20+PTA7KXtjb25zdCBlPU1hdGgubWluKFMsZyk7aWYodm9pZCAwPT09Y1twXSlicmVhaztpZihjW3BdLmNvcHlDZWxsc0Zyb20oY1ttXSxTLWUsZy1lLGUsITApLGctPWUsMD09PWcmJihwLS0sZz1fW3BdKSxTLT1lLDA9PT1TKXttLS07Y29uc3QgZT1NYXRoLm1heChtLDApO1M9KDAsYS5nZXRXcmFwcGVkTGluZVRyaW1tZWRMZW5ndGgpKGMsZSx0aGlzLl9jb2xzKX19Zm9yKGxldCB0PTA7dDxjLmxlbmd0aDt0KyspX1t0XTxlJiZjW3RdLnNldENlbGwoX1t0XSxpKTtsZXQgQz11LWY7Zm9yKDtDLS0gPjA7KTA9PT10aGlzLnliYXNlP3RoaXMueTx0LTE/KHRoaXMueSsrLHRoaXMubGluZXMucG9wKCkpOih0aGlzLnliYXNlKyssdGhpcy55ZGlzcCsrKTp0aGlzLnliYXNlPE1hdGgubWluKHRoaXMubGluZXMubWF4TGVuZ3RoLHRoaXMubGluZXMubGVuZ3RoK3IpLXQmJih0aGlzLnliYXNlPT09dGhpcy55ZGlzcCYmdGhpcy55ZGlzcCsrLHRoaXMueWJhc2UrKyk7dGhpcy5zYXZlZFk9TWF0aC5taW4odGhpcy5zYXZlZFkrdSx0aGlzLnliYXNlK3QtMSl9aWYocy5sZW5ndGg+MCl7Y29uc3QgZT1bXSx0PVtdO2ZvcihsZXQgZT0wO2U8dGhpcy5saW5lcy5sZW5ndGg7ZSsrKXQucHVzaCh0aGlzLmxpbmVzLmdldChlKSk7Y29uc3QgaT10aGlzLmxpbmVzLmxlbmd0aDtsZXQgbj1pLTEsbz0wLGE9c1tvXTt0aGlzLmxpbmVzLmxlbmd0aD1NYXRoLm1pbih0aGlzLmxpbmVzLm1heExlbmd0aCx0aGlzLmxpbmVzLmxlbmd0aCtyKTtsZXQgaD0wO2ZvcihsZXQgYz1NYXRoLm1pbih0aGlzLmxpbmVzLm1heExlbmd0aC0xLGkrci0xKTtjPj0wO2MtLSlpZihhJiZhLnN0YXJ0Pm4raCl7Zm9yKGxldCBlPWEubmV3TGluZXMubGVuZ3RoLTE7ZT49MDtlLS0pdGhpcy5saW5lcy5zZXQoYy0tLGEubmV3TGluZXNbZV0pO2MrKyxlLnB1c2goe2luZGV4Om4rMSxhbW91bnQ6YS5uZXdMaW5lcy5sZW5ndGh9KSxoKz1hLm5ld0xpbmVzLmxlbmd0aCxhPXNbKytvXX1lbHNlIHRoaXMubGluZXMuc2V0KGMsdFtuLS1dKTtsZXQgYz0wO2ZvcihsZXQgdD1lLmxlbmd0aC0xO3Q+PTA7dC0tKWVbdF0uaW5kZXgrPWMsdGhpcy5saW5lcy5vbkluc2VydEVtaXR0ZXIuZmlyZShlW3RdKSxjKz1lW3RdLmFtb3VudDtjb25zdCBsPU1hdGgubWF4KDAsaStyLXRoaXMubGluZXMubWF4TGVuZ3RoKTtsPjAmJnRoaXMubGluZXMub25UcmltRW1pdHRlci5maXJlKGwpfX10cmFuc2xhdGVCdWZmZXJMaW5lVG9TdHJpbmcoZSx0LGk9MCxzKXtjb25zdCByPXRoaXMubGluZXMuZ2V0KGUpO3JldHVybiByP3IudHJhbnNsYXRlVG9TdHJpbmcodCxpLHMpOlwiXCJ9Z2V0V3JhcHBlZFJhbmdlRm9yTGluZShlKXtsZXQgdD1lLGk9ZTtmb3IoO3Q+MCYmdGhpcy5saW5lcy5nZXQodCkuaXNXcmFwcGVkOyl0LS07Zm9yKDtpKzE8dGhpcy5saW5lcy5sZW5ndGgmJnRoaXMubGluZXMuZ2V0KGkrMSkuaXNXcmFwcGVkOylpKys7cmV0dXJue2ZpcnN0OnQsbGFzdDppfX1zZXR1cFRhYlN0b3BzKGUpe2ZvcihudWxsIT1lP3RoaXMudGFic1tlXXx8KGU9dGhpcy5wcmV2U3RvcChlKSk6KHRoaXMudGFicz17fSxlPTApO2U8dGhpcy5fY29scztlKz10aGlzLl9vcHRpb25zU2VydmljZS5yYXdPcHRpb25zLnRhYlN0b3BXaWR0aCl0aGlzLnRhYnNbZV09ITB9cHJldlN0b3AoZSl7Zm9yKG51bGw9PWUmJihlPXRoaXMueCk7IXRoaXMudGFic1stLWVdJiZlPjA7KTtyZXR1cm4gZT49dGhpcy5fY29scz90aGlzLl9jb2xzLTE6ZTwwPzA6ZX1uZXh0U3RvcChlKXtmb3IobnVsbD09ZSYmKGU9dGhpcy54KTshdGhpcy50YWJzWysrZV0mJmU8dGhpcy5fY29sczspO3JldHVybiBlPj10aGlzLl9jb2xzP3RoaXMuX2NvbHMtMTplPDA/MDplfWNsZWFyTWFya2VycyhlKXt0aGlzLl9pc0NsZWFyaW5nPSEwO2ZvcihsZXQgdD0wO3Q8dGhpcy5tYXJrZXJzLmxlbmd0aDt0KyspdGhpcy5tYXJrZXJzW3RdLmxpbmU9PT1lJiYodGhpcy5tYXJrZXJzW3RdLmRpc3Bvc2UoKSx0aGlzLm1hcmtlcnMuc3BsaWNlKHQtLSwxKSk7dGhpcy5faXNDbGVhcmluZz0hMX1jbGVhckFsbE1hcmtlcnMoKXt0aGlzLl9pc0NsZWFyaW5nPSEwO2ZvcihsZXQgZT0wO2U8dGhpcy5tYXJrZXJzLmxlbmd0aDtlKyspdGhpcy5tYXJrZXJzW2VdLmRpc3Bvc2UoKSx0aGlzLm1hcmtlcnMuc3BsaWNlKGUtLSwxKTt0aGlzLl9pc0NsZWFyaW5nPSExfWFkZE1hcmtlcihlKXtjb25zdCB0PW5ldyBsLk1hcmtlcihlKTtyZXR1cm4gdGhpcy5tYXJrZXJzLnB1c2godCksdC5yZWdpc3Rlcih0aGlzLmxpbmVzLm9uVHJpbSgoZT0+e3QubGluZS09ZSx0LmxpbmU8MCYmdC5kaXNwb3NlKCl9KSkpLHQucmVnaXN0ZXIodGhpcy5saW5lcy5vbkluc2VydCgoZT0+e3QubGluZT49ZS5pbmRleCYmKHQubGluZSs9ZS5hbW91bnQpfSkpKSx0LnJlZ2lzdGVyKHRoaXMubGluZXMub25EZWxldGUoKGU9Pnt0LmxpbmU+PWUuaW5kZXgmJnQubGluZTxlLmluZGV4K2UuYW1vdW50JiZ0LmRpc3Bvc2UoKSx0LmxpbmU+ZS5pbmRleCYmKHQubGluZS09ZS5hbW91bnQpfSkpKSx0LnJlZ2lzdGVyKHQub25EaXNwb3NlKCgoKT0+dGhpcy5fcmVtb3ZlTWFya2VyKHQpKSkpLHR9X3JlbW92ZU1hcmtlcihlKXt0aGlzLl9pc0NsZWFyaW5nfHx0aGlzLm1hcmtlcnMuc3BsaWNlKHRoaXMubWFya2Vycy5pbmRleE9mKGUpLDEpfX19LDg0Mzc6KGUsdCxpKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuQnVmZmVyTGluZT10LkRFRkFVTFRfQVRUUl9EQVRBPXZvaWQgMDtjb25zdCBzPWkoMzczNCkscj1pKDUxMSksbj1pKDY0Myksbz1pKDQ4Mik7dC5ERUZBVUxUX0FUVFJfREFUQT1PYmplY3QuZnJlZXplKG5ldyBzLkF0dHJpYnV0ZURhdGEpO2xldCBhPTA7Y2xhc3MgaHtjb25zdHJ1Y3RvcihlLHQsaT0hMSl7dGhpcy5pc1dyYXBwZWQ9aSx0aGlzLl9jb21iaW5lZD17fSx0aGlzLl9leHRlbmRlZEF0dHJzPXt9LHRoaXMuX2RhdGE9bmV3IFVpbnQzMkFycmF5KDMqZSk7Y29uc3Qgcz10fHxyLkNlbGxEYXRhLmZyb21DaGFyRGF0YShbMCxuLk5VTExfQ0VMTF9DSEFSLG4uTlVMTF9DRUxMX1dJRFRILG4uTlVMTF9DRUxMX0NPREVdKTtmb3IobGV0IHQ9MDt0PGU7Kyt0KXRoaXMuc2V0Q2VsbCh0LHMpO3RoaXMubGVuZ3RoPWV9Z2V0KGUpe2NvbnN0IHQ9dGhpcy5fZGF0YVszKmUrMF0saT0yMDk3MTUxJnQ7cmV0dXJuW3RoaXMuX2RhdGFbMyplKzFdLDIwOTcxNTImdD90aGlzLl9jb21iaW5lZFtlXTppPygwLG8uc3RyaW5nRnJvbUNvZGVQb2ludCkoaSk6XCJcIix0Pj4yMiwyMDk3MTUyJnQ/dGhpcy5fY29tYmluZWRbZV0uY2hhckNvZGVBdCh0aGlzLl9jb21iaW5lZFtlXS5sZW5ndGgtMSk6aV19c2V0KGUsdCl7dGhpcy5fZGF0YVszKmUrMV09dFtuLkNIQVJfREFUQV9BVFRSX0lOREVYXSx0W24uQ0hBUl9EQVRBX0NIQVJfSU5ERVhdLmxlbmd0aD4xPyh0aGlzLl9jb21iaW5lZFtlXT10WzFdLHRoaXMuX2RhdGFbMyplKzBdPTIwOTcxNTJ8ZXx0W24uQ0hBUl9EQVRBX1dJRFRIX0lOREVYXTw8MjIpOnRoaXMuX2RhdGFbMyplKzBdPXRbbi5DSEFSX0RBVEFfQ0hBUl9JTkRFWF0uY2hhckNvZGVBdCgwKXx0W24uQ0hBUl9EQVRBX1dJRFRIX0lOREVYXTw8MjJ9Z2V0V2lkdGgoZSl7cmV0dXJuIHRoaXMuX2RhdGFbMyplKzBdPj4yMn1oYXNXaWR0aChlKXtyZXR1cm4gMTI1ODI5MTImdGhpcy5fZGF0YVszKmUrMF19Z2V0RmcoZSl7cmV0dXJuIHRoaXMuX2RhdGFbMyplKzFdfWdldEJnKGUpe3JldHVybiB0aGlzLl9kYXRhWzMqZSsyXX1oYXNDb250ZW50KGUpe3JldHVybiA0MTk0MzAzJnRoaXMuX2RhdGFbMyplKzBdfWdldENvZGVQb2ludChlKXtjb25zdCB0PXRoaXMuX2RhdGFbMyplKzBdO3JldHVybiAyMDk3MTUyJnQ/dGhpcy5fY29tYmluZWRbZV0uY2hhckNvZGVBdCh0aGlzLl9jb21iaW5lZFtlXS5sZW5ndGgtMSk6MjA5NzE1MSZ0fWlzQ29tYmluZWQoZSl7cmV0dXJuIDIwOTcxNTImdGhpcy5fZGF0YVszKmUrMF19Z2V0U3RyaW5nKGUpe2NvbnN0IHQ9dGhpcy5fZGF0YVszKmUrMF07cmV0dXJuIDIwOTcxNTImdD90aGlzLl9jb21iaW5lZFtlXToyMDk3MTUxJnQ/KDAsby5zdHJpbmdGcm9tQ29kZVBvaW50KSgyMDk3MTUxJnQpOlwiXCJ9aXNQcm90ZWN0ZWQoZSl7cmV0dXJuIDUzNjg3MDkxMiZ0aGlzLl9kYXRhWzMqZSsyXX1sb2FkQ2VsbChlLHQpe3JldHVybiBhPTMqZSx0LmNvbnRlbnQ9dGhpcy5fZGF0YVthKzBdLHQuZmc9dGhpcy5fZGF0YVthKzFdLHQuYmc9dGhpcy5fZGF0YVthKzJdLDIwOTcxNTImdC5jb250ZW50JiYodC5jb21iaW5lZERhdGE9dGhpcy5fY29tYmluZWRbZV0pLDI2ODQzNTQ1NiZ0LmJnJiYodC5leHRlbmRlZD10aGlzLl9leHRlbmRlZEF0dHJzW2VdKSx0fXNldENlbGwoZSx0KXsyMDk3MTUyJnQuY29udGVudCYmKHRoaXMuX2NvbWJpbmVkW2VdPXQuY29tYmluZWREYXRhKSwyNjg0MzU0NTYmdC5iZyYmKHRoaXMuX2V4dGVuZGVkQXR0cnNbZV09dC5leHRlbmRlZCksdGhpcy5fZGF0YVszKmUrMF09dC5jb250ZW50LHRoaXMuX2RhdGFbMyplKzFdPXQuZmcsdGhpcy5fZGF0YVszKmUrMl09dC5iZ31zZXRDZWxsRnJvbUNvZGVQb2ludChlLHQsaSxzLHIsbil7MjY4NDM1NDU2JnImJih0aGlzLl9leHRlbmRlZEF0dHJzW2VdPW4pLHRoaXMuX2RhdGFbMyplKzBdPXR8aTw8MjIsdGhpcy5fZGF0YVszKmUrMV09cyx0aGlzLl9kYXRhWzMqZSsyXT1yfWFkZENvZGVwb2ludFRvQ2VsbChlLHQpe2xldCBpPXRoaXMuX2RhdGFbMyplKzBdOzIwOTcxNTImaT90aGlzLl9jb21iaW5lZFtlXSs9KDAsby5zdHJpbmdGcm9tQ29kZVBvaW50KSh0KTooMjA5NzE1MSZpPyh0aGlzLl9jb21iaW5lZFtlXT0oMCxvLnN0cmluZ0Zyb21Db2RlUG9pbnQpKDIwOTcxNTEmaSkrKDAsby5zdHJpbmdGcm9tQ29kZVBvaW50KSh0KSxpJj0tMjA5NzE1MixpfD0yMDk3MTUyKTppPXR8MTw8MjIsdGhpcy5fZGF0YVszKmUrMF09aSl9aW5zZXJ0Q2VsbHMoZSx0LGksbil7aWYoKGUlPXRoaXMubGVuZ3RoKSYmMj09PXRoaXMuZ2V0V2lkdGgoZS0xKSYmdGhpcy5zZXRDZWxsRnJvbUNvZGVQb2ludChlLTEsMCwxLChudWxsPT1uP3ZvaWQgMDpuLmZnKXx8MCwobnVsbD09bj92b2lkIDA6bi5iZyl8fDAsKG51bGw9PW4/dm9pZCAwOm4uZXh0ZW5kZWQpfHxuZXcgcy5FeHRlbmRlZEF0dHJzKSx0PHRoaXMubGVuZ3RoLWUpe2NvbnN0IHM9bmV3IHIuQ2VsbERhdGE7Zm9yKGxldCBpPXRoaXMubGVuZ3RoLWUtdC0xO2k+PTA7LS1pKXRoaXMuc2V0Q2VsbChlK3QraSx0aGlzLmxvYWRDZWxsKGUraSxzKSk7Zm9yKGxldCBzPTA7czx0Oysrcyl0aGlzLnNldENlbGwoZStzLGkpfWVsc2UgZm9yKGxldCB0PWU7dDx0aGlzLmxlbmd0aDsrK3QpdGhpcy5zZXRDZWxsKHQsaSk7Mj09PXRoaXMuZ2V0V2lkdGgodGhpcy5sZW5ndGgtMSkmJnRoaXMuc2V0Q2VsbEZyb21Db2RlUG9pbnQodGhpcy5sZW5ndGgtMSwwLDEsKG51bGw9PW4/dm9pZCAwOm4uZmcpfHwwLChudWxsPT1uP3ZvaWQgMDpuLmJnKXx8MCwobnVsbD09bj92b2lkIDA6bi5leHRlbmRlZCl8fG5ldyBzLkV4dGVuZGVkQXR0cnMpfWRlbGV0ZUNlbGxzKGUsdCxpLG4pe2lmKGUlPXRoaXMubGVuZ3RoLHQ8dGhpcy5sZW5ndGgtZSl7Y29uc3Qgcz1uZXcgci5DZWxsRGF0YTtmb3IobGV0IGk9MDtpPHRoaXMubGVuZ3RoLWUtdDsrK2kpdGhpcy5zZXRDZWxsKGUraSx0aGlzLmxvYWRDZWxsKGUrdCtpLHMpKTtmb3IobGV0IGU9dGhpcy5sZW5ndGgtdDtlPHRoaXMubGVuZ3RoOysrZSl0aGlzLnNldENlbGwoZSxpKX1lbHNlIGZvcihsZXQgdD1lO3Q8dGhpcy5sZW5ndGg7Kyt0KXRoaXMuc2V0Q2VsbCh0LGkpO2UmJjI9PT10aGlzLmdldFdpZHRoKGUtMSkmJnRoaXMuc2V0Q2VsbEZyb21Db2RlUG9pbnQoZS0xLDAsMSwobnVsbD09bj92b2lkIDA6bi5mZyl8fDAsKG51bGw9PW4/dm9pZCAwOm4uYmcpfHwwLChudWxsPT1uP3ZvaWQgMDpuLmV4dGVuZGVkKXx8bmV3IHMuRXh0ZW5kZWRBdHRycyksMCE9PXRoaXMuZ2V0V2lkdGgoZSl8fHRoaXMuaGFzQ29udGVudChlKXx8dGhpcy5zZXRDZWxsRnJvbUNvZGVQb2ludChlLDAsMSwobnVsbD09bj92b2lkIDA6bi5mZyl8fDAsKG51bGw9PW4/dm9pZCAwOm4uYmcpfHwwLChudWxsPT1uP3ZvaWQgMDpuLmV4dGVuZGVkKXx8bmV3IHMuRXh0ZW5kZWRBdHRycyl9cmVwbGFjZUNlbGxzKGUsdCxpLHIsbj0hMSl7aWYobilmb3IoZSYmMj09PXRoaXMuZ2V0V2lkdGgoZS0xKSYmIXRoaXMuaXNQcm90ZWN0ZWQoZS0xKSYmdGhpcy5zZXRDZWxsRnJvbUNvZGVQb2ludChlLTEsMCwxLChudWxsPT1yP3ZvaWQgMDpyLmZnKXx8MCwobnVsbD09cj92b2lkIDA6ci5iZyl8fDAsKG51bGw9PXI/dm9pZCAwOnIuZXh0ZW5kZWQpfHxuZXcgcy5FeHRlbmRlZEF0dHJzKSx0PHRoaXMubGVuZ3RoJiYyPT09dGhpcy5nZXRXaWR0aCh0LTEpJiYhdGhpcy5pc1Byb3RlY3RlZCh0KSYmdGhpcy5zZXRDZWxsRnJvbUNvZGVQb2ludCh0LDAsMSwobnVsbD09cj92b2lkIDA6ci5mZyl8fDAsKG51bGw9PXI/dm9pZCAwOnIuYmcpfHwwLChudWxsPT1yP3ZvaWQgMDpyLmV4dGVuZGVkKXx8bmV3IHMuRXh0ZW5kZWRBdHRycyk7ZTx0JiZlPHRoaXMubGVuZ3RoOyl0aGlzLmlzUHJvdGVjdGVkKGUpfHx0aGlzLnNldENlbGwoZSxpKSxlKys7ZWxzZSBmb3IoZSYmMj09PXRoaXMuZ2V0V2lkdGgoZS0xKSYmdGhpcy5zZXRDZWxsRnJvbUNvZGVQb2ludChlLTEsMCwxLChudWxsPT1yP3ZvaWQgMDpyLmZnKXx8MCwobnVsbD09cj92b2lkIDA6ci5iZyl8fDAsKG51bGw9PXI/dm9pZCAwOnIuZXh0ZW5kZWQpfHxuZXcgcy5FeHRlbmRlZEF0dHJzKSx0PHRoaXMubGVuZ3RoJiYyPT09dGhpcy5nZXRXaWR0aCh0LTEpJiZ0aGlzLnNldENlbGxGcm9tQ29kZVBvaW50KHQsMCwxLChudWxsPT1yP3ZvaWQgMDpyLmZnKXx8MCwobnVsbD09cj92b2lkIDA6ci5iZyl8fDAsKG51bGw9PXI/dm9pZCAwOnIuZXh0ZW5kZWQpfHxuZXcgcy5FeHRlbmRlZEF0dHJzKTtlPHQmJmU8dGhpcy5sZW5ndGg7KXRoaXMuc2V0Q2VsbChlKyssaSl9cmVzaXplKGUsdCl7aWYoZT09PXRoaXMubGVuZ3RoKXJldHVybiA0KnRoaXMuX2RhdGEubGVuZ3RoKjI8dGhpcy5fZGF0YS5idWZmZXIuYnl0ZUxlbmd0aDtjb25zdCBpPTMqZTtpZihlPnRoaXMubGVuZ3RoKXtpZih0aGlzLl9kYXRhLmJ1ZmZlci5ieXRlTGVuZ3RoPj00KmkpdGhpcy5fZGF0YT1uZXcgVWludDMyQXJyYXkodGhpcy5fZGF0YS5idWZmZXIsMCxpKTtlbHNle2NvbnN0IGU9bmV3IFVpbnQzMkFycmF5KGkpO2Uuc2V0KHRoaXMuX2RhdGEpLHRoaXMuX2RhdGE9ZX1mb3IobGV0IGk9dGhpcy5sZW5ndGg7aTxlOysraSl0aGlzLnNldENlbGwoaSx0KX1lbHNle3RoaXMuX2RhdGE9dGhpcy5fZGF0YS5zdWJhcnJheSgwLGkpO2NvbnN0IHQ9T2JqZWN0LmtleXModGhpcy5fY29tYmluZWQpO2ZvcihsZXQgaT0wO2k8dC5sZW5ndGg7aSsrKXtjb25zdCBzPXBhcnNlSW50KHRbaV0sMTApO3M+PWUmJmRlbGV0ZSB0aGlzLl9jb21iaW5lZFtzXX1jb25zdCBzPU9iamVjdC5rZXlzKHRoaXMuX2V4dGVuZGVkQXR0cnMpO2ZvcihsZXQgdD0wO3Q8cy5sZW5ndGg7dCsrKXtjb25zdCBpPXBhcnNlSW50KHNbdF0sMTApO2k+PWUmJmRlbGV0ZSB0aGlzLl9leHRlbmRlZEF0dHJzW2ldfX1yZXR1cm4gdGhpcy5sZW5ndGg9ZSw0KmkqMjx0aGlzLl9kYXRhLmJ1ZmZlci5ieXRlTGVuZ3RofWNsZWFudXBNZW1vcnkoKXtpZig0KnRoaXMuX2RhdGEubGVuZ3RoKjI8dGhpcy5fZGF0YS5idWZmZXIuYnl0ZUxlbmd0aCl7Y29uc3QgZT1uZXcgVWludDMyQXJyYXkodGhpcy5fZGF0YS5sZW5ndGgpO3JldHVybiBlLnNldCh0aGlzLl9kYXRhKSx0aGlzLl9kYXRhPWUsMX1yZXR1cm4gMH1maWxsKGUsdD0hMSl7aWYodClmb3IobGV0IHQ9MDt0PHRoaXMubGVuZ3RoOysrdCl0aGlzLmlzUHJvdGVjdGVkKHQpfHx0aGlzLnNldENlbGwodCxlKTtlbHNle3RoaXMuX2NvbWJpbmVkPXt9LHRoaXMuX2V4dGVuZGVkQXR0cnM9e307Zm9yKGxldCB0PTA7dDx0aGlzLmxlbmd0aDsrK3QpdGhpcy5zZXRDZWxsKHQsZSl9fWNvcHlGcm9tKGUpe3RoaXMubGVuZ3RoIT09ZS5sZW5ndGg/dGhpcy5fZGF0YT1uZXcgVWludDMyQXJyYXkoZS5fZGF0YSk6dGhpcy5fZGF0YS5zZXQoZS5fZGF0YSksdGhpcy5sZW5ndGg9ZS5sZW5ndGgsdGhpcy5fY29tYmluZWQ9e307Zm9yKGNvbnN0IHQgaW4gZS5fY29tYmluZWQpdGhpcy5fY29tYmluZWRbdF09ZS5fY29tYmluZWRbdF07dGhpcy5fZXh0ZW5kZWRBdHRycz17fTtmb3IoY29uc3QgdCBpbiBlLl9leHRlbmRlZEF0dHJzKXRoaXMuX2V4dGVuZGVkQXR0cnNbdF09ZS5fZXh0ZW5kZWRBdHRyc1t0XTt0aGlzLmlzV3JhcHBlZD1lLmlzV3JhcHBlZH1jbG9uZSgpe2NvbnN0IGU9bmV3IGgoMCk7ZS5fZGF0YT1uZXcgVWludDMyQXJyYXkodGhpcy5fZGF0YSksZS5sZW5ndGg9dGhpcy5sZW5ndGg7Zm9yKGNvbnN0IHQgaW4gdGhpcy5fY29tYmluZWQpZS5fY29tYmluZWRbdF09dGhpcy5fY29tYmluZWRbdF07Zm9yKGNvbnN0IHQgaW4gdGhpcy5fZXh0ZW5kZWRBdHRycyllLl9leHRlbmRlZEF0dHJzW3RdPXRoaXMuX2V4dGVuZGVkQXR0cnNbdF07cmV0dXJuIGUuaXNXcmFwcGVkPXRoaXMuaXNXcmFwcGVkLGV9Z2V0VHJpbW1lZExlbmd0aCgpe2ZvcihsZXQgZT10aGlzLmxlbmd0aC0xO2U+PTA7LS1lKWlmKDQxOTQzMDMmdGhpcy5fZGF0YVszKmUrMF0pcmV0dXJuIGUrKHRoaXMuX2RhdGFbMyplKzBdPj4yMik7cmV0dXJuIDB9Z2V0Tm9CZ1RyaW1tZWRMZW5ndGgoKXtmb3IobGV0IGU9dGhpcy5sZW5ndGgtMTtlPj0wOy0tZSlpZig0MTk0MzAzJnRoaXMuX2RhdGFbMyplKzBdfHw1MDMzMTY0OCZ0aGlzLl9kYXRhWzMqZSsyXSlyZXR1cm4gZSsodGhpcy5fZGF0YVszKmUrMF0+PjIyKTtyZXR1cm4gMH1jb3B5Q2VsbHNGcm9tKGUsdCxpLHMscil7Y29uc3Qgbj1lLl9kYXRhO2lmKHIpZm9yKGxldCByPXMtMTtyPj0wO3ItLSl7Zm9yKGxldCBlPTA7ZTwzO2UrKyl0aGlzLl9kYXRhWzMqKGkrcikrZV09blszKih0K3IpK2VdOzI2ODQzNTQ1NiZuWzMqKHQrcikrMl0mJih0aGlzLl9leHRlbmRlZEF0dHJzW2krcl09ZS5fZXh0ZW5kZWRBdHRyc1t0K3JdKX1lbHNlIGZvcihsZXQgcj0wO3I8cztyKyspe2ZvcihsZXQgZT0wO2U8MztlKyspdGhpcy5fZGF0YVszKihpK3IpK2VdPW5bMyoodCtyKStlXTsyNjg0MzU0NTYmblszKih0K3IpKzJdJiYodGhpcy5fZXh0ZW5kZWRBdHRyc1tpK3JdPWUuX2V4dGVuZGVkQXR0cnNbdCtyXSl9Y29uc3Qgbz1PYmplY3Qua2V5cyhlLl9jb21iaW5lZCk7Zm9yKGxldCBzPTA7czxvLmxlbmd0aDtzKyspe2NvbnN0IHI9cGFyc2VJbnQob1tzXSwxMCk7cj49dCYmKHRoaXMuX2NvbWJpbmVkW3ItdCtpXT1lLl9jb21iaW5lZFtyXSl9fXRyYW5zbGF0ZVRvU3RyaW5nKGU9ITEsdD0wLGk9dGhpcy5sZW5ndGgpe2UmJihpPU1hdGgubWluKGksdGhpcy5nZXRUcmltbWVkTGVuZ3RoKCkpKTtsZXQgcz1cIlwiO2Zvcig7dDxpOyl7Y29uc3QgZT10aGlzLl9kYXRhWzMqdCswXSxpPTIwOTcxNTEmZTtzKz0yMDk3MTUyJmU/dGhpcy5fY29tYmluZWRbdF06aT8oMCxvLnN0cmluZ0Zyb21Db2RlUG9pbnQpKGkpOm4uV0hJVEVTUEFDRV9DRUxMX0NIQVIsdCs9ZT4+MjJ8fDF9cmV0dXJuIHN9fXQuQnVmZmVyTGluZT1ofSw0ODQxOihlLHQpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5nZXRSYW5nZUxlbmd0aD12b2lkIDAsdC5nZXRSYW5nZUxlbmd0aD1mdW5jdGlvbihlLHQpe2lmKGUuc3RhcnQueT5lLmVuZC55KXRocm93IG5ldyBFcnJvcihgQnVmZmVyIHJhbmdlIGVuZCAoJHtlLmVuZC54fSwgJHtlLmVuZC55fSkgY2Fubm90IGJlIGJlZm9yZSBzdGFydCAoJHtlLnN0YXJ0Lnh9LCAke2Uuc3RhcnQueX0pYCk7cmV0dXJuIHQqKGUuZW5kLnktZS5zdGFydC55KSsoZS5lbmQueC1lLnN0YXJ0LngrMSl9fSw0NjM0OihlLHQpPT57ZnVuY3Rpb24gaShlLHQsaSl7aWYodD09PWUubGVuZ3RoLTEpcmV0dXJuIGVbdF0uZ2V0VHJpbW1lZExlbmd0aCgpO2NvbnN0IHM9IWVbdF0uaGFzQ29udGVudChpLTEpJiYxPT09ZVt0XS5nZXRXaWR0aChpLTEpLHI9Mj09PWVbdCsxXS5nZXRXaWR0aCgwKTtyZXR1cm4gcyYmcj9pLTE6aX1PYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmdldFdyYXBwZWRMaW5lVHJpbW1lZExlbmd0aD10LnJlZmxvd1NtYWxsZXJHZXROZXdMaW5lTGVuZ3Rocz10LnJlZmxvd0xhcmdlckFwcGx5TmV3TGF5b3V0PXQucmVmbG93TGFyZ2VyQ3JlYXRlTmV3TGF5b3V0PXQucmVmbG93TGFyZ2VyR2V0TGluZXNUb1JlbW92ZT12b2lkIDAsdC5yZWZsb3dMYXJnZXJHZXRMaW5lc1RvUmVtb3ZlPWZ1bmN0aW9uKGUsdCxzLHIsbil7Y29uc3Qgbz1bXTtmb3IobGV0IGE9MDthPGUubGVuZ3RoLTE7YSsrKXtsZXQgaD1hLGM9ZS5nZXQoKytoKTtpZighYy5pc1dyYXBwZWQpY29udGludWU7Y29uc3QgbD1bZS5nZXQoYSldO2Zvcig7aDxlLmxlbmd0aCYmYy5pc1dyYXBwZWQ7KWwucHVzaChjKSxjPWUuZ2V0KCsraCk7aWYocj49YSYmcjxoKXthKz1sLmxlbmd0aC0xO2NvbnRpbnVlfWxldCBkPTAsXz1pKGwsZCx0KSx1PTEsZj0wO2Zvcig7dTxsLmxlbmd0aDspe2NvbnN0IGU9aShsLHUsdCkscj1lLWYsbz1zLV8sYT1NYXRoLm1pbihyLG8pO2xbZF0uY29weUNlbGxzRnJvbShsW3VdLGYsXyxhLCExKSxfKz1hLF89PT1zJiYoZCsrLF89MCksZis9YSxmPT09ZSYmKHUrKyxmPTApLDA9PT1fJiYwIT09ZCYmMj09PWxbZC0xXS5nZXRXaWR0aChzLTEpJiYobFtkXS5jb3B5Q2VsbHNGcm9tKGxbZC0xXSxzLTEsXysrLDEsITEpLGxbZC0xXS5zZXRDZWxsKHMtMSxuKSl9bFtkXS5yZXBsYWNlQ2VsbHMoXyxzLG4pO2xldCB2PTA7Zm9yKGxldCBlPWwubGVuZ3RoLTE7ZT4wJiYoZT5kfHwwPT09bFtlXS5nZXRUcmltbWVkTGVuZ3RoKCkpO2UtLSl2Kys7dj4wJiYoby5wdXNoKGErbC5sZW5ndGgtdiksby5wdXNoKHYpKSxhKz1sLmxlbmd0aC0xfXJldHVybiBvfSx0LnJlZmxvd0xhcmdlckNyZWF0ZU5ld0xheW91dD1mdW5jdGlvbihlLHQpe2NvbnN0IGk9W107bGV0IHM9MCxyPXRbc10sbj0wO2ZvcihsZXQgbz0wO288ZS5sZW5ndGg7bysrKWlmKHI9PT1vKXtjb25zdCBpPXRbKytzXTtlLm9uRGVsZXRlRW1pdHRlci5maXJlKHtpbmRleDpvLW4sYW1vdW50Oml9KSxvKz1pLTEsbis9aSxyPXRbKytzXX1lbHNlIGkucHVzaChvKTtyZXR1cm57bGF5b3V0OmksY291bnRSZW1vdmVkOm59fSx0LnJlZmxvd0xhcmdlckFwcGx5TmV3TGF5b3V0PWZ1bmN0aW9uKGUsdCl7Y29uc3QgaT1bXTtmb3IobGV0IHM9MDtzPHQubGVuZ3RoO3MrKylpLnB1c2goZS5nZXQodFtzXSkpO2ZvcihsZXQgdD0wO3Q8aS5sZW5ndGg7dCsrKWUuc2V0KHQsaVt0XSk7ZS5sZW5ndGg9dC5sZW5ndGh9LHQucmVmbG93U21hbGxlckdldE5ld0xpbmVMZW5ndGhzPWZ1bmN0aW9uKGUsdCxzKXtjb25zdCByPVtdLG49ZS5tYXAoKChzLHIpPT5pKGUscix0KSkpLnJlZHVjZSgoKGUsdCk9PmUrdCkpO2xldCBvPTAsYT0wLGg9MDtmb3IoO2g8bjspe2lmKG4taDxzKXtyLnB1c2gobi1oKTticmVha31vKz1zO2NvbnN0IGM9aShlLGEsdCk7bz5jJiYoby09YyxhKyspO2NvbnN0IGw9Mj09PWVbYV0uZ2V0V2lkdGgoby0xKTtsJiZvLS07Y29uc3QgZD1sP3MtMTpzO3IucHVzaChkKSxoKz1kfXJldHVybiByfSx0LmdldFdyYXBwZWRMaW5lVHJpbW1lZExlbmd0aD1pfSw1Mjk1OihlLHQsaSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkJ1ZmZlclNldD12b2lkIDA7Y29uc3Qgcz1pKDg0NjApLHI9aSg4NDQpLG49aSg5MDkyKTtjbGFzcyBvIGV4dGVuZHMgci5EaXNwb3NhYmxle2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoKSx0aGlzLl9vcHRpb25zU2VydmljZT1lLHRoaXMuX2J1ZmZlclNlcnZpY2U9dCx0aGlzLl9vbkJ1ZmZlckFjdGl2YXRlPXRoaXMucmVnaXN0ZXIobmV3IHMuRXZlbnRFbWl0dGVyKSx0aGlzLm9uQnVmZmVyQWN0aXZhdGU9dGhpcy5fb25CdWZmZXJBY3RpdmF0ZS5ldmVudCx0aGlzLnJlc2V0KCksdGhpcy5yZWdpc3Rlcih0aGlzLl9vcHRpb25zU2VydmljZS5vblNwZWNpZmljT3B0aW9uQ2hhbmdlKFwic2Nyb2xsYmFja1wiLCgoKT0+dGhpcy5yZXNpemUodGhpcy5fYnVmZmVyU2VydmljZS5jb2xzLHRoaXMuX2J1ZmZlclNlcnZpY2Uucm93cykpKSksdGhpcy5yZWdpc3Rlcih0aGlzLl9vcHRpb25zU2VydmljZS5vblNwZWNpZmljT3B0aW9uQ2hhbmdlKFwidGFiU3RvcFdpZHRoXCIsKCgpPT50aGlzLnNldHVwVGFiU3RvcHMoKSkpKX1yZXNldCgpe3RoaXMuX25vcm1hbD1uZXcgbi5CdWZmZXIoITAsdGhpcy5fb3B0aW9uc1NlcnZpY2UsdGhpcy5fYnVmZmVyU2VydmljZSksdGhpcy5fbm9ybWFsLmZpbGxWaWV3cG9ydFJvd3MoKSx0aGlzLl9hbHQ9bmV3IG4uQnVmZmVyKCExLHRoaXMuX29wdGlvbnNTZXJ2aWNlLHRoaXMuX2J1ZmZlclNlcnZpY2UpLHRoaXMuX2FjdGl2ZUJ1ZmZlcj10aGlzLl9ub3JtYWwsdGhpcy5fb25CdWZmZXJBY3RpdmF0ZS5maXJlKHthY3RpdmVCdWZmZXI6dGhpcy5fbm9ybWFsLGluYWN0aXZlQnVmZmVyOnRoaXMuX2FsdH0pLHRoaXMuc2V0dXBUYWJTdG9wcygpfWdldCBhbHQoKXtyZXR1cm4gdGhpcy5fYWx0fWdldCBhY3RpdmUoKXtyZXR1cm4gdGhpcy5fYWN0aXZlQnVmZmVyfWdldCBub3JtYWwoKXtyZXR1cm4gdGhpcy5fbm9ybWFsfWFjdGl2YXRlTm9ybWFsQnVmZmVyKCl7dGhpcy5fYWN0aXZlQnVmZmVyIT09dGhpcy5fbm9ybWFsJiYodGhpcy5fbm9ybWFsLng9dGhpcy5fYWx0LngsdGhpcy5fbm9ybWFsLnk9dGhpcy5fYWx0LnksdGhpcy5fYWx0LmNsZWFyQWxsTWFya2VycygpLHRoaXMuX2FsdC5jbGVhcigpLHRoaXMuX2FjdGl2ZUJ1ZmZlcj10aGlzLl9ub3JtYWwsdGhpcy5fb25CdWZmZXJBY3RpdmF0ZS5maXJlKHthY3RpdmVCdWZmZXI6dGhpcy5fbm9ybWFsLGluYWN0aXZlQnVmZmVyOnRoaXMuX2FsdH0pKX1hY3RpdmF0ZUFsdEJ1ZmZlcihlKXt0aGlzLl9hY3RpdmVCdWZmZXIhPT10aGlzLl9hbHQmJih0aGlzLl9hbHQuZmlsbFZpZXdwb3J0Um93cyhlKSx0aGlzLl9hbHQueD10aGlzLl9ub3JtYWwueCx0aGlzLl9hbHQueT10aGlzLl9ub3JtYWwueSx0aGlzLl9hY3RpdmVCdWZmZXI9dGhpcy5fYWx0LHRoaXMuX29uQnVmZmVyQWN0aXZhdGUuZmlyZSh7YWN0aXZlQnVmZmVyOnRoaXMuX2FsdCxpbmFjdGl2ZUJ1ZmZlcjp0aGlzLl9ub3JtYWx9KSl9cmVzaXplKGUsdCl7dGhpcy5fbm9ybWFsLnJlc2l6ZShlLHQpLHRoaXMuX2FsdC5yZXNpemUoZSx0KSx0aGlzLnNldHVwVGFiU3RvcHMoZSl9c2V0dXBUYWJTdG9wcyhlKXt0aGlzLl9ub3JtYWwuc2V0dXBUYWJTdG9wcyhlKSx0aGlzLl9hbHQuc2V0dXBUYWJTdG9wcyhlKX19dC5CdWZmZXJTZXQ9b30sNTExOihlLHQsaSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkNlbGxEYXRhPXZvaWQgMDtjb25zdCBzPWkoNDgyKSxyPWkoNjQzKSxuPWkoMzczNCk7Y2xhc3MgbyBleHRlbmRzIG4uQXR0cmlidXRlRGF0YXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5jb250ZW50PTAsdGhpcy5mZz0wLHRoaXMuYmc9MCx0aGlzLmV4dGVuZGVkPW5ldyBuLkV4dGVuZGVkQXR0cnMsdGhpcy5jb21iaW5lZERhdGE9XCJcIn1zdGF0aWMgZnJvbUNoYXJEYXRhKGUpe2NvbnN0IHQ9bmV3IG87cmV0dXJuIHQuc2V0RnJvbUNoYXJEYXRhKGUpLHR9aXNDb21iaW5lZCgpe3JldHVybiAyMDk3MTUyJnRoaXMuY29udGVudH1nZXRXaWR0aCgpe3JldHVybiB0aGlzLmNvbnRlbnQ+PjIyfWdldENoYXJzKCl7cmV0dXJuIDIwOTcxNTImdGhpcy5jb250ZW50P3RoaXMuY29tYmluZWREYXRhOjIwOTcxNTEmdGhpcy5jb250ZW50PygwLHMuc3RyaW5nRnJvbUNvZGVQb2ludCkoMjA5NzE1MSZ0aGlzLmNvbnRlbnQpOlwiXCJ9Z2V0Q29kZSgpe3JldHVybiB0aGlzLmlzQ29tYmluZWQoKT90aGlzLmNvbWJpbmVkRGF0YS5jaGFyQ29kZUF0KHRoaXMuY29tYmluZWREYXRhLmxlbmd0aC0xKToyMDk3MTUxJnRoaXMuY29udGVudH1zZXRGcm9tQ2hhckRhdGEoZSl7dGhpcy5mZz1lW3IuQ0hBUl9EQVRBX0FUVFJfSU5ERVhdLHRoaXMuYmc9MDtsZXQgdD0hMTtpZihlW3IuQ0hBUl9EQVRBX0NIQVJfSU5ERVhdLmxlbmd0aD4yKXQ9ITA7ZWxzZSBpZigyPT09ZVtyLkNIQVJfREFUQV9DSEFSX0lOREVYXS5sZW5ndGgpe2NvbnN0IGk9ZVtyLkNIQVJfREFUQV9DSEFSX0lOREVYXS5jaGFyQ29kZUF0KDApO2lmKDU1Mjk2PD1pJiZpPD01NjMxOSl7Y29uc3Qgcz1lW3IuQ0hBUl9EQVRBX0NIQVJfSU5ERVhdLmNoYXJDb2RlQXQoMSk7NTYzMjA8PXMmJnM8PTU3MzQzP3RoaXMuY29udGVudD0xMDI0KihpLTU1Mjk2KStzLTU2MzIwKzY1NTM2fGVbci5DSEFSX0RBVEFfV0lEVEhfSU5ERVhdPDwyMjp0PSEwfWVsc2UgdD0hMH1lbHNlIHRoaXMuY29udGVudD1lW3IuQ0hBUl9EQVRBX0NIQVJfSU5ERVhdLmNoYXJDb2RlQXQoMCl8ZVtyLkNIQVJfREFUQV9XSURUSF9JTkRFWF08PDIyO3QmJih0aGlzLmNvbWJpbmVkRGF0YT1lW3IuQ0hBUl9EQVRBX0NIQVJfSU5ERVhdLHRoaXMuY29udGVudD0yMDk3MTUyfGVbci5DSEFSX0RBVEFfV0lEVEhfSU5ERVhdPDwyMil9Z2V0QXNDaGFyRGF0YSgpe3JldHVyblt0aGlzLmZnLHRoaXMuZ2V0Q2hhcnMoKSx0aGlzLmdldFdpZHRoKCksdGhpcy5nZXRDb2RlKCldfX10LkNlbGxEYXRhPW99LDY0MzooZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuV0hJVEVTUEFDRV9DRUxMX0NPREU9dC5XSElURVNQQUNFX0NFTExfV0lEVEg9dC5XSElURVNQQUNFX0NFTExfQ0hBUj10Lk5VTExfQ0VMTF9DT0RFPXQuTlVMTF9DRUxMX1dJRFRIPXQuTlVMTF9DRUxMX0NIQVI9dC5DSEFSX0RBVEFfQ09ERV9JTkRFWD10LkNIQVJfREFUQV9XSURUSF9JTkRFWD10LkNIQVJfREFUQV9DSEFSX0lOREVYPXQuQ0hBUl9EQVRBX0FUVFJfSU5ERVg9dC5ERUZBVUxUX0VYVD10LkRFRkFVTFRfQVRUUj10LkRFRkFVTFRfQ09MT1I9dm9pZCAwLHQuREVGQVVMVF9DT0xPUj0wLHQuREVGQVVMVF9BVFRSPTI1Nnx0LkRFRkFVTFRfQ09MT1I8PDksdC5ERUZBVUxUX0VYVD0wLHQuQ0hBUl9EQVRBX0FUVFJfSU5ERVg9MCx0LkNIQVJfREFUQV9DSEFSX0lOREVYPTEsdC5DSEFSX0RBVEFfV0lEVEhfSU5ERVg9Mix0LkNIQVJfREFUQV9DT0RFX0lOREVYPTMsdC5OVUxMX0NFTExfQ0hBUj1cIlwiLHQuTlVMTF9DRUxMX1dJRFRIPTEsdC5OVUxMX0NFTExfQ09ERT0wLHQuV0hJVEVTUEFDRV9DRUxMX0NIQVI9XCIgXCIsdC5XSElURVNQQUNFX0NFTExfV0lEVEg9MSx0LldISVRFU1BBQ0VfQ0VMTF9DT0RFPTMyfSw0ODYzOihlLHQsaSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0Lk1hcmtlcj12b2lkIDA7Y29uc3Qgcz1pKDg0NjApLHI9aSg4NDQpO2NsYXNzIG57Z2V0IGlkKCl7cmV0dXJuIHRoaXMuX2lkfWNvbnN0cnVjdG9yKGUpe3RoaXMubGluZT1lLHRoaXMuaXNEaXNwb3NlZD0hMSx0aGlzLl9kaXNwb3NhYmxlcz1bXSx0aGlzLl9pZD1uLl9uZXh0SWQrKyx0aGlzLl9vbkRpc3Bvc2U9dGhpcy5yZWdpc3RlcihuZXcgcy5FdmVudEVtaXR0ZXIpLHRoaXMub25EaXNwb3NlPXRoaXMuX29uRGlzcG9zZS5ldmVudH1kaXNwb3NlKCl7dGhpcy5pc0Rpc3Bvc2VkfHwodGhpcy5pc0Rpc3Bvc2VkPSEwLHRoaXMubGluZT0tMSx0aGlzLl9vbkRpc3Bvc2UuZmlyZSgpLCgwLHIuZGlzcG9zZUFycmF5KSh0aGlzLl9kaXNwb3NhYmxlcyksdGhpcy5fZGlzcG9zYWJsZXMubGVuZ3RoPTApfXJlZ2lzdGVyKGUpe3JldHVybiB0aGlzLl9kaXNwb3NhYmxlcy5wdXNoKGUpLGV9fXQuTWFya2VyPW4sbi5fbmV4dElkPTF9LDcxMTY6KGUsdCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkRFRkFVTFRfQ0hBUlNFVD10LkNIQVJTRVRTPXZvaWQgMCx0LkNIQVJTRVRTPXt9LHQuREVGQVVMVF9DSEFSU0VUPXQuQ0hBUlNFVFMuQix0LkNIQVJTRVRTWzBdPXtcImBcIjpcIuKXhlwiLGE6XCLilpJcIixiOlwi4pCJXCIsYzpcIuKQjFwiLGQ6XCLikI1cIixlOlwi4pCKXCIsZjpcIsKwXCIsZzpcIsKxXCIsaDpcIuKQpFwiLGk6XCLikItcIixqOlwi4pSYXCIsazpcIuKUkFwiLGw6XCLilIxcIixtOlwi4pSUXCIsbjpcIuKUvFwiLG86XCLijrpcIixwOlwi4o67XCIscTpcIuKUgFwiLHI6XCLijrxcIixzOlwi4o69XCIsdDpcIuKUnFwiLHU6XCLilKRcIix2Olwi4pS0XCIsdzpcIuKUrFwiLHg6XCLilIJcIix5Olwi4omkXCIsejpcIuKJpVwiLFwie1wiOlwiz4BcIixcInxcIjpcIuKJoFwiLFwifVwiOlwiwqNcIixcIn5cIjpcIsK3XCJ9LHQuQ0hBUlNFVFMuQT17XCIjXCI6XCLCo1wifSx0LkNIQVJTRVRTLkI9dm9pZCAwLHQuQ0hBUlNFVFNbNF09e1wiI1wiOlwiwqNcIixcIkBcIjpcIsK+XCIsXCJbXCI6XCJpalwiLFwiXFxcXFwiOlwiwr1cIixcIl1cIjpcInxcIixcIntcIjpcIsKoXCIsXCJ8XCI6XCJmXCIsXCJ9XCI6XCLCvFwiLFwiflwiOlwiwrRcIn0sdC5DSEFSU0VUUy5DPXQuQ0hBUlNFVFNbNV09e1wiW1wiOlwiw4RcIixcIlxcXFxcIjpcIsOWXCIsXCJdXCI6XCLDhVwiLFwiXlwiOlwiw5xcIixcImBcIjpcIsOpXCIsXCJ7XCI6XCLDpFwiLFwifFwiOlwiw7ZcIixcIn1cIjpcIsOlXCIsXCJ+XCI6XCLDvFwifSx0LkNIQVJTRVRTLlI9e1wiI1wiOlwiwqNcIixcIkBcIjpcIsOgXCIsXCJbXCI6XCLCsFwiLFwiXFxcXFwiOlwiw6dcIixcIl1cIjpcIsKnXCIsXCJ7XCI6XCLDqVwiLFwifFwiOlwiw7lcIixcIn1cIjpcIsOoXCIsXCJ+XCI6XCLCqFwifSx0LkNIQVJTRVRTLlE9e1wiQFwiOlwiw6BcIixcIltcIjpcIsOiXCIsXCJcXFxcXCI6XCLDp1wiLFwiXVwiOlwiw6pcIixcIl5cIjpcIsOuXCIsXCJgXCI6XCLDtFwiLFwie1wiOlwiw6lcIixcInxcIjpcIsO5XCIsXCJ9XCI6XCLDqFwiLFwiflwiOlwiw7tcIn0sdC5DSEFSU0VUUy5LPXtcIkBcIjpcIsKnXCIsXCJbXCI6XCLDhFwiLFwiXFxcXFwiOlwiw5ZcIixcIl1cIjpcIsOcXCIsXCJ7XCI6XCLDpFwiLFwifFwiOlwiw7ZcIixcIn1cIjpcIsO8XCIsXCJ+XCI6XCLDn1wifSx0LkNIQVJTRVRTLlk9e1wiI1wiOlwiwqNcIixcIkBcIjpcIsKnXCIsXCJbXCI6XCLCsFwiLFwiXFxcXFwiOlwiw6dcIixcIl1cIjpcIsOpXCIsXCJgXCI6XCLDuVwiLFwie1wiOlwiw6BcIixcInxcIjpcIsOyXCIsXCJ9XCI6XCLDqFwiLFwiflwiOlwiw6xcIn0sdC5DSEFSU0VUUy5FPXQuQ0hBUlNFVFNbNl09e1wiQFwiOlwiw4RcIixcIltcIjpcIsOGXCIsXCJcXFxcXCI6XCLDmFwiLFwiXVwiOlwiw4VcIixcIl5cIjpcIsOcXCIsXCJgXCI6XCLDpFwiLFwie1wiOlwiw6ZcIixcInxcIjpcIsO4XCIsXCJ9XCI6XCLDpVwiLFwiflwiOlwiw7xcIn0sdC5DSEFSU0VUUy5aPXtcIiNcIjpcIsKjXCIsXCJAXCI6XCLCp1wiLFwiW1wiOlwiwqFcIixcIlxcXFxcIjpcIsORXCIsXCJdXCI6XCLCv1wiLFwie1wiOlwiwrBcIixcInxcIjpcIsOxXCIsXCJ9XCI6XCLDp1wifSx0LkNIQVJTRVRTLkg9dC5DSEFSU0VUU1s3XT17XCJAXCI6XCLDiVwiLFwiW1wiOlwiw4RcIixcIlxcXFxcIjpcIsOWXCIsXCJdXCI6XCLDhVwiLFwiXlwiOlwiw5xcIixcImBcIjpcIsOpXCIsXCJ7XCI6XCLDpFwiLFwifFwiOlwiw7ZcIixcIn1cIjpcIsOlXCIsXCJ+XCI6XCLDvFwifSx0LkNIQVJTRVRTW1wiPVwiXT17XCIjXCI6XCLDuVwiLFwiQFwiOlwiw6BcIixcIltcIjpcIsOpXCIsXCJcXFxcXCI6XCLDp1wiLFwiXVwiOlwiw6pcIixcIl5cIjpcIsOuXCIsXzpcIsOoXCIsXCJgXCI6XCLDtFwiLFwie1wiOlwiw6RcIixcInxcIjpcIsO2XCIsXCJ9XCI6XCLDvFwiLFwiflwiOlwiw7tcIn19LDI1ODQ6KGUsdCk9Pnt2YXIgaSxzLHI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5DMV9FU0NBUEVEPXQuQzE9dC5DMD12b2lkIDAsZnVuY3Rpb24oZSl7ZS5OVUw9XCJcXDBcIixlLlNPSD1cIlx1MDAwMVwiLGUuU1RYPVwiXHUwMDAyXCIsZS5FVFg9XCJcdTAwMDNcIixlLkVPVD1cIlx1MDAwNFwiLGUuRU5RPVwiXHUwMDA1XCIsZS5BQ0s9XCJcdTAwMDZcIixlLkJFTD1cIlx1MDAwN1wiLGUuQlM9XCJcXGJcIixlLkhUPVwiXFx0XCIsZS5MRj1cIlxcblwiLGUuVlQ9XCJcXHZcIixlLkZGPVwiXFxmXCIsZS5DUj1cIlxcclwiLGUuU089XCJcdTAwMGVcIixlLlNJPVwiXHUwMDBmXCIsZS5ETEU9XCJcdTAwMTBcIixlLkRDMT1cIlx1MDAxMVwiLGUuREMyPVwiXHUwMDEyXCIsZS5EQzM9XCJcdTAwMTNcIixlLkRDND1cIlx1MDAxNFwiLGUuTkFLPVwiXHUwMDE1XCIsZS5TWU49XCJcdTAwMTZcIixlLkVUQj1cIlx1MDAxN1wiLGUuQ0FOPVwiXHUwMDE4XCIsZS5FTT1cIlx1MDAxOVwiLGUuU1VCPVwiXHUwMDFhXCIsZS5FU0M9XCJcdTAwMWJcIixlLkZTPVwiXHUwMDFjXCIsZS5HUz1cIlx1MDAxZFwiLGUuUlM9XCJcdTAwMWVcIixlLlVTPVwiXHUwMDFmXCIsZS5TUD1cIiBcIixlLkRFTD1cIn9cIn0oaXx8KHQuQzA9aT17fSkpLGZ1bmN0aW9uKGUpe2UuUEFEPVwiwoBcIixlLkhPUD1cIsKBXCIsZS5CUEg9XCLCglwiLGUuTkJIPVwiwoNcIixlLklORD1cIsKEXCIsZS5ORUw9XCLChVwiLGUuU1NBPVwiwoZcIixlLkVTQT1cIsKHXCIsZS5IVFM9XCLCiFwiLGUuSFRKPVwiwolcIixlLlZUUz1cIsKKXCIsZS5QTEQ9XCLCi1wiLGUuUExVPVwiwoxcIixlLlJJPVwiwo1cIixlLlNTMj1cIsKOXCIsZS5TUzM9XCLCj1wiLGUuRENTPVwiwpBcIixlLlBVMT1cIsKRXCIsZS5QVTI9XCLCklwiLGUuU1RTPVwiwpNcIixlLkNDSD1cIsKUXCIsZS5NVz1cIsKVXCIsZS5TUEE9XCLCllwiLGUuRVBBPVwiwpdcIixlLlNPUz1cIsKYXCIsZS5TR0NJPVwiwplcIixlLlNDST1cIsKaXCIsZS5DU0k9XCLCm1wiLGUuU1Q9XCLCnFwiLGUuT1NDPVwiwp1cIixlLlBNPVwiwp5cIixlLkFQQz1cIsKfXCJ9KHN8fCh0LkMxPXM9e30pKSxmdW5jdGlvbihlKXtlLlNUPWAke2kuRVNDfVxcXFxgfShyfHwodC5DMV9FU0NBUEVEPXI9e30pKX0sNzM5OTooZSx0LGkpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5ldmFsdWF0ZUtleWJvYXJkRXZlbnQ9dm9pZCAwO2NvbnN0IHM9aSgyNTg0KSxyPXs0ODpbXCIwXCIsXCIpXCJdLDQ5OltcIjFcIixcIiFcIl0sNTA6W1wiMlwiLFwiQFwiXSw1MTpbXCIzXCIsXCIjXCJdLDUyOltcIjRcIixcIiRcIl0sNTM6W1wiNVwiLFwiJVwiXSw1NDpbXCI2XCIsXCJeXCJdLDU1OltcIjdcIixcIiZcIl0sNTY6W1wiOFwiLFwiKlwiXSw1NzpbXCI5XCIsXCIoXCJdLDE4NjpbXCI7XCIsXCI6XCJdLDE4NzpbXCI9XCIsXCIrXCJdLDE4ODpbXCIsXCIsXCI8XCJdLDE4OTpbXCItXCIsXCJfXCJdLDE5MDpbXCIuXCIsXCI+XCJdLDE5MTpbXCIvXCIsXCI/XCJdLDE5MjpbXCJgXCIsXCJ+XCJdLDIxOTpbXCJbXCIsXCJ7XCJdLDIyMDpbXCJcXFxcXCIsXCJ8XCJdLDIyMTpbXCJdXCIsXCJ9XCJdLDIyMjpbXCInXCIsJ1wiJ119O3QuZXZhbHVhdGVLZXlib2FyZEV2ZW50PWZ1bmN0aW9uKGUsdCxpLG4pe2NvbnN0IG89e3R5cGU6MCxjYW5jZWw6ITEsa2V5OnZvaWQgMH0sYT0oZS5zaGlmdEtleT8xOjApfChlLmFsdEtleT8yOjApfChlLmN0cmxLZXk/NDowKXwoZS5tZXRhS2V5Pzg6MCk7c3dpdGNoKGUua2V5Q29kZSl7Y2FzZSAwOlwiVUlLZXlJbnB1dFVwQXJyb3dcIj09PWUua2V5P28ua2V5PXQ/cy5DMC5FU0MrXCJPQVwiOnMuQzAuRVNDK1wiW0FcIjpcIlVJS2V5SW5wdXRMZWZ0QXJyb3dcIj09PWUua2V5P28ua2V5PXQ/cy5DMC5FU0MrXCJPRFwiOnMuQzAuRVNDK1wiW0RcIjpcIlVJS2V5SW5wdXRSaWdodEFycm93XCI9PT1lLmtleT9vLmtleT10P3MuQzAuRVNDK1wiT0NcIjpzLkMwLkVTQytcIltDXCI6XCJVSUtleUlucHV0RG93bkFycm93XCI9PT1lLmtleSYmKG8ua2V5PXQ/cy5DMC5FU0MrXCJPQlwiOnMuQzAuRVNDK1wiW0JcIik7YnJlYWs7Y2FzZSA4OmlmKGUuYWx0S2V5KXtvLmtleT1zLkMwLkVTQytzLkMwLkRFTDticmVha31vLmtleT1zLkMwLkRFTDticmVhaztjYXNlIDk6aWYoZS5zaGlmdEtleSl7by5rZXk9cy5DMC5FU0MrXCJbWlwiO2JyZWFrfW8ua2V5PXMuQzAuSFQsby5jYW5jZWw9ITA7YnJlYWs7Y2FzZSAxMzpvLmtleT1lLmFsdEtleT9zLkMwLkVTQytzLkMwLkNSOnMuQzAuQ1Isby5jYW5jZWw9ITA7YnJlYWs7Y2FzZSAyNzpvLmtleT1zLkMwLkVTQyxlLmFsdEtleSYmKG8ua2V5PXMuQzAuRVNDK3MuQzAuRVNDKSxvLmNhbmNlbD0hMDticmVhaztjYXNlIDM3OmlmKGUubWV0YUtleSlicmVhazthPyhvLmtleT1zLkMwLkVTQytcIlsxO1wiKyhhKzEpK1wiRFwiLG8ua2V5PT09cy5DMC5FU0MrXCJbMTszRFwiJiYoby5rZXk9cy5DMC5FU0MrKGk/XCJiXCI6XCJbMTs1RFwiKSkpOm8ua2V5PXQ/cy5DMC5FU0MrXCJPRFwiOnMuQzAuRVNDK1wiW0RcIjticmVhaztjYXNlIDM5OmlmKGUubWV0YUtleSlicmVhazthPyhvLmtleT1zLkMwLkVTQytcIlsxO1wiKyhhKzEpK1wiQ1wiLG8ua2V5PT09cy5DMC5FU0MrXCJbMTszQ1wiJiYoby5rZXk9cy5DMC5FU0MrKGk/XCJmXCI6XCJbMTs1Q1wiKSkpOm8ua2V5PXQ/cy5DMC5FU0MrXCJPQ1wiOnMuQzAuRVNDK1wiW0NcIjticmVhaztjYXNlIDM4OmlmKGUubWV0YUtleSlicmVhazthPyhvLmtleT1zLkMwLkVTQytcIlsxO1wiKyhhKzEpK1wiQVwiLGl8fG8ua2V5IT09cy5DMC5FU0MrXCJbMTszQVwifHwoby5rZXk9cy5DMC5FU0MrXCJbMTs1QVwiKSk6by5rZXk9dD9zLkMwLkVTQytcIk9BXCI6cy5DMC5FU0MrXCJbQVwiO2JyZWFrO2Nhc2UgNDA6aWYoZS5tZXRhS2V5KWJyZWFrO2E/KG8ua2V5PXMuQzAuRVNDK1wiWzE7XCIrKGErMSkrXCJCXCIsaXx8by5rZXkhPT1zLkMwLkVTQytcIlsxOzNCXCJ8fChvLmtleT1zLkMwLkVTQytcIlsxOzVCXCIpKTpvLmtleT10P3MuQzAuRVNDK1wiT0JcIjpzLkMwLkVTQytcIltCXCI7YnJlYWs7Y2FzZSA0NTplLnNoaWZ0S2V5fHxlLmN0cmxLZXl8fChvLmtleT1zLkMwLkVTQytcIlsyflwiKTticmVhaztjYXNlIDQ2Om8ua2V5PWE/cy5DMC5FU0MrXCJbMztcIisoYSsxKStcIn5cIjpzLkMwLkVTQytcIlszflwiO2JyZWFrO2Nhc2UgMzY6by5rZXk9YT9zLkMwLkVTQytcIlsxO1wiKyhhKzEpK1wiSFwiOnQ/cy5DMC5FU0MrXCJPSFwiOnMuQzAuRVNDK1wiW0hcIjticmVhaztjYXNlIDM1Om8ua2V5PWE/cy5DMC5FU0MrXCJbMTtcIisoYSsxKStcIkZcIjp0P3MuQzAuRVNDK1wiT0ZcIjpzLkMwLkVTQytcIltGXCI7YnJlYWs7Y2FzZSAzMzplLnNoaWZ0S2V5P28udHlwZT0yOmUuY3RybEtleT9vLmtleT1zLkMwLkVTQytcIls1O1wiKyhhKzEpK1wiflwiOm8ua2V5PXMuQzAuRVNDK1wiWzV+XCI7YnJlYWs7Y2FzZSAzNDplLnNoaWZ0S2V5P28udHlwZT0zOmUuY3RybEtleT9vLmtleT1zLkMwLkVTQytcIls2O1wiKyhhKzEpK1wiflwiOm8ua2V5PXMuQzAuRVNDK1wiWzZ+XCI7YnJlYWs7Y2FzZSAxMTI6by5rZXk9YT9zLkMwLkVTQytcIlsxO1wiKyhhKzEpK1wiUFwiOnMuQzAuRVNDK1wiT1BcIjticmVhaztjYXNlIDExMzpvLmtleT1hP3MuQzAuRVNDK1wiWzE7XCIrKGErMSkrXCJRXCI6cy5DMC5FU0MrXCJPUVwiO2JyZWFrO2Nhc2UgMTE0Om8ua2V5PWE/cy5DMC5FU0MrXCJbMTtcIisoYSsxKStcIlJcIjpzLkMwLkVTQytcIk9SXCI7YnJlYWs7Y2FzZSAxMTU6by5rZXk9YT9zLkMwLkVTQytcIlsxO1wiKyhhKzEpK1wiU1wiOnMuQzAuRVNDK1wiT1NcIjticmVhaztjYXNlIDExNjpvLmtleT1hP3MuQzAuRVNDK1wiWzE1O1wiKyhhKzEpK1wiflwiOnMuQzAuRVNDK1wiWzE1flwiO2JyZWFrO2Nhc2UgMTE3Om8ua2V5PWE/cy5DMC5FU0MrXCJbMTc7XCIrKGErMSkrXCJ+XCI6cy5DMC5FU0MrXCJbMTd+XCI7YnJlYWs7Y2FzZSAxMTg6by5rZXk9YT9zLkMwLkVTQytcIlsxODtcIisoYSsxKStcIn5cIjpzLkMwLkVTQytcIlsxOH5cIjticmVhaztjYXNlIDExOTpvLmtleT1hP3MuQzAuRVNDK1wiWzE5O1wiKyhhKzEpK1wiflwiOnMuQzAuRVNDK1wiWzE5flwiO2JyZWFrO2Nhc2UgMTIwOm8ua2V5PWE/cy5DMC5FU0MrXCJbMjA7XCIrKGErMSkrXCJ+XCI6cy5DMC5FU0MrXCJbMjB+XCI7YnJlYWs7Y2FzZSAxMjE6by5rZXk9YT9zLkMwLkVTQytcIlsyMTtcIisoYSsxKStcIn5cIjpzLkMwLkVTQytcIlsyMX5cIjticmVhaztjYXNlIDEyMjpvLmtleT1hP3MuQzAuRVNDK1wiWzIzO1wiKyhhKzEpK1wiflwiOnMuQzAuRVNDK1wiWzIzflwiO2JyZWFrO2Nhc2UgMTIzOm8ua2V5PWE/cy5DMC5FU0MrXCJbMjQ7XCIrKGErMSkrXCJ+XCI6cy5DMC5FU0MrXCJbMjR+XCI7YnJlYWs7ZGVmYXVsdDppZighZS5jdHJsS2V5fHxlLnNoaWZ0S2V5fHxlLmFsdEtleXx8ZS5tZXRhS2V5KWlmKGkmJiFufHwhZS5hbHRLZXl8fGUubWV0YUtleSkhaXx8ZS5hbHRLZXl8fGUuY3RybEtleXx8ZS5zaGlmdEtleXx8IWUubWV0YUtleT9lLmtleSYmIWUuY3RybEtleSYmIWUuYWx0S2V5JiYhZS5tZXRhS2V5JiZlLmtleUNvZGU+PTQ4JiYxPT09ZS5rZXkubGVuZ3RoP28ua2V5PWUua2V5OmUua2V5JiZlLmN0cmxLZXkmJihcIl9cIj09PWUua2V5JiYoby5rZXk9cy5DMC5VUyksXCJAXCI9PT1lLmtleSYmKG8ua2V5PXMuQzAuTlVMKSk6NjU9PT1lLmtleUNvZGUmJihvLnR5cGU9MSk7ZWxzZXtjb25zdCB0PXJbZS5rZXlDb2RlXSxpPW51bGw9PXQ/dm9pZCAwOnRbZS5zaGlmdEtleT8xOjBdO2lmKGkpby5rZXk9cy5DMC5FU0MraTtlbHNlIGlmKGUua2V5Q29kZT49NjUmJmUua2V5Q29kZTw9OTApe2NvbnN0IHQ9ZS5jdHJsS2V5P2Uua2V5Q29kZS02NDplLmtleUNvZGUrMzI7bGV0IGk9U3RyaW5nLmZyb21DaGFyQ29kZSh0KTtlLnNoaWZ0S2V5JiYoaT1pLnRvVXBwZXJDYXNlKCkpLG8ua2V5PXMuQzAuRVNDK2l9ZWxzZSBpZigzMj09PWUua2V5Q29kZSlvLmtleT1zLkMwLkVTQysoZS5jdHJsS2V5P3MuQzAuTlVMOlwiIFwiKTtlbHNlIGlmKFwiRGVhZFwiPT09ZS5rZXkmJmUuY29kZS5zdGFydHNXaXRoKFwiS2V5XCIpKXtsZXQgdD1lLmNvZGUuc2xpY2UoMyw0KTtlLnNoaWZ0S2V5fHwodD10LnRvTG93ZXJDYXNlKCkpLG8ua2V5PXMuQzAuRVNDK3Qsby5jYW5jZWw9ITB9fWVsc2UgZS5rZXlDb2RlPj02NSYmZS5rZXlDb2RlPD05MD9vLmtleT1TdHJpbmcuZnJvbUNoYXJDb2RlKGUua2V5Q29kZS02NCk6MzI9PT1lLmtleUNvZGU/by5rZXk9cy5DMC5OVUw6ZS5rZXlDb2RlPj01MSYmZS5rZXlDb2RlPD01NT9vLmtleT1TdHJpbmcuZnJvbUNoYXJDb2RlKGUua2V5Q29kZS01MSsyNyk6NTY9PT1lLmtleUNvZGU/by5rZXk9cy5DMC5ERUw6MjE5PT09ZS5rZXlDb2RlP28ua2V5PXMuQzAuRVNDOjIyMD09PWUua2V5Q29kZT9vLmtleT1zLkMwLkZTOjIyMT09PWUua2V5Q29kZSYmKG8ua2V5PXMuQzAuR1MpfXJldHVybiBvfX0sNDgyOihlLHQpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5VdGY4VG9VdGYzMj10LlN0cmluZ1RvVXRmMzI9dC51dGYzMlRvU3RyaW5nPXQuc3RyaW5nRnJvbUNvZGVQb2ludD12b2lkIDAsdC5zdHJpbmdGcm9tQ29kZVBvaW50PWZ1bmN0aW9uKGUpe3JldHVybiBlPjY1NTM1PyhlLT02NTUzNixTdHJpbmcuZnJvbUNoYXJDb2RlKDU1Mjk2KyhlPj4xMCkpK1N0cmluZy5mcm9tQ2hhckNvZGUoZSUxMDI0KzU2MzIwKSk6U3RyaW5nLmZyb21DaGFyQ29kZShlKX0sdC51dGYzMlRvU3RyaW5nPWZ1bmN0aW9uKGUsdD0wLGk9ZS5sZW5ndGgpe2xldCBzPVwiXCI7Zm9yKGxldCByPXQ7cjxpOysrcil7bGV0IHQ9ZVtyXTt0PjY1NTM1Pyh0LT02NTUzNixzKz1TdHJpbmcuZnJvbUNoYXJDb2RlKDU1Mjk2Kyh0Pj4xMCkpK1N0cmluZy5mcm9tQ2hhckNvZGUodCUxMDI0KzU2MzIwKSk6cys9U3RyaW5nLmZyb21DaGFyQ29kZSh0KX1yZXR1cm4gc30sdC5TdHJpbmdUb1V0ZjMyPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5faW50ZXJpbT0wfWNsZWFyKCl7dGhpcy5faW50ZXJpbT0wfWRlY29kZShlLHQpe2NvbnN0IGk9ZS5sZW5ndGg7aWYoIWkpcmV0dXJuIDA7bGV0IHM9MCxyPTA7aWYodGhpcy5faW50ZXJpbSl7Y29uc3QgaT1lLmNoYXJDb2RlQXQocisrKTs1NjMyMDw9aSYmaTw9NTczNDM/dFtzKytdPTEwMjQqKHRoaXMuX2ludGVyaW0tNTUyOTYpK2ktNTYzMjArNjU1MzY6KHRbcysrXT10aGlzLl9pbnRlcmltLHRbcysrXT1pKSx0aGlzLl9pbnRlcmltPTB9Zm9yKGxldCBuPXI7bjxpOysrbil7Y29uc3Qgcj1lLmNoYXJDb2RlQXQobik7aWYoNTUyOTY8PXImJnI8PTU2MzE5KXtpZigrK24+PWkpcmV0dXJuIHRoaXMuX2ludGVyaW09cixzO2NvbnN0IG89ZS5jaGFyQ29kZUF0KG4pOzU2MzIwPD1vJiZvPD01NzM0Mz90W3MrK109MTAyNCooci01NTI5Nikrby01NjMyMCs2NTUzNjoodFtzKytdPXIsdFtzKytdPW8pfWVsc2UgNjUyNzkhPT1yJiYodFtzKytdPXIpfXJldHVybiBzfX0sdC5VdGY4VG9VdGYzMj1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMuaW50ZXJpbT1uZXcgVWludDhBcnJheSgzKX1jbGVhcigpe3RoaXMuaW50ZXJpbS5maWxsKDApfWRlY29kZShlLHQpe2NvbnN0IGk9ZS5sZW5ndGg7aWYoIWkpcmV0dXJuIDA7bGV0IHMscixuLG8sYT0wLGg9MCxjPTA7aWYodGhpcy5pbnRlcmltWzBdKXtsZXQgcz0hMSxyPXRoaXMuaW50ZXJpbVswXTtyJj0xOTI9PSgyMjQmcik/MzE6MjI0PT0oMjQwJnIpPzE1Ojc7bGV0IG4sbz0wO2Zvcig7KG49NjMmdGhpcy5pbnRlcmltWysrb10pJiZvPDQ7KXI8PD02LHJ8PW47Y29uc3QgaD0xOTI9PSgyMjQmdGhpcy5pbnRlcmltWzBdKT8yOjIyND09KDI0MCZ0aGlzLmludGVyaW1bMF0pPzM6NCxsPWgtbztmb3IoO2M8bDspe2lmKGM+PWkpcmV0dXJuIDA7aWYobj1lW2MrK10sMTI4IT0oMTkyJm4pKXtjLS0scz0hMDticmVha310aGlzLmludGVyaW1bbysrXT1uLHI8PD02LHJ8PTYzJm59c3x8KDI9PT1oP3I8MTI4P2MtLTp0W2ErK109cjozPT09aD9yPDIwNDh8fHI+PTU1Mjk2JiZyPD01NzM0M3x8NjUyNzk9PT1yfHwodFthKytdPXIpOnI8NjU1MzZ8fHI+MTExNDExMXx8KHRbYSsrXT1yKSksdGhpcy5pbnRlcmltLmZpbGwoMCl9Y29uc3QgbD1pLTQ7bGV0IGQ9Yztmb3IoO2Q8aTspe2Zvcig7ISghKGQ8bCl8fDEyOCYocz1lW2RdKXx8MTI4JihyPWVbZCsxXSl8fDEyOCYobj1lW2QrMl0pfHwxMjgmKG89ZVtkKzNdKSk7KXRbYSsrXT1zLHRbYSsrXT1yLHRbYSsrXT1uLHRbYSsrXT1vLGQrPTQ7aWYocz1lW2QrK10sczwxMjgpdFthKytdPXM7ZWxzZSBpZigxOTI9PSgyMjQmcykpe2lmKGQ+PWkpcmV0dXJuIHRoaXMuaW50ZXJpbVswXT1zLGE7aWYocj1lW2QrK10sMTI4IT0oMTkyJnIpKXtkLS07Y29udGludWV9aWYoaD0oMzEmcyk8PDZ8NjMmcixoPDEyOCl7ZC0tO2NvbnRpbnVlfXRbYSsrXT1ofWVsc2UgaWYoMjI0PT0oMjQwJnMpKXtpZihkPj1pKXJldHVybiB0aGlzLmludGVyaW1bMF09cyxhO2lmKHI9ZVtkKytdLDEyOCE9KDE5MiZyKSl7ZC0tO2NvbnRpbnVlfWlmKGQ+PWkpcmV0dXJuIHRoaXMuaW50ZXJpbVswXT1zLHRoaXMuaW50ZXJpbVsxXT1yLGE7aWYobj1lW2QrK10sMTI4IT0oMTkyJm4pKXtkLS07Y29udGludWV9aWYoaD0oMTUmcyk8PDEyfCg2MyZyKTw8Nnw2MyZuLGg8MjA0OHx8aD49NTUyOTYmJmg8PTU3MzQzfHw2NTI3OT09PWgpY29udGludWU7dFthKytdPWh9ZWxzZSBpZigyNDA9PSgyNDgmcykpe2lmKGQ+PWkpcmV0dXJuIHRoaXMuaW50ZXJpbVswXT1zLGE7aWYocj1lW2QrK10sMTI4IT0oMTkyJnIpKXtkLS07Y29udGludWV9aWYoZD49aSlyZXR1cm4gdGhpcy5pbnRlcmltWzBdPXMsdGhpcy5pbnRlcmltWzFdPXIsYTtpZihuPWVbZCsrXSwxMjghPSgxOTImbikpe2QtLTtjb250aW51ZX1pZihkPj1pKXJldHVybiB0aGlzLmludGVyaW1bMF09cyx0aGlzLmludGVyaW1bMV09cix0aGlzLmludGVyaW1bMl09bixhO2lmKG89ZVtkKytdLDEyOCE9KDE5MiZvKSl7ZC0tO2NvbnRpbnVlfWlmKGg9KDcmcyk8PDE4fCg2MyZyKTw8MTJ8KDYzJm4pPDw2fDYzJm8saDw2NTUzNnx8aD4xMTE0MTExKWNvbnRpbnVlO3RbYSsrXT1ofX1yZXR1cm4gYX19fSwyMjU6KGUsdCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LlVuaWNvZGVWNj12b2lkIDA7Y29uc3QgaT1bWzc2OCw4NzldLFsxMTU1LDExNThdLFsxMTYwLDExNjFdLFsxNDI1LDE0NjldLFsxNDcxLDE0NzFdLFsxNDczLDE0NzRdLFsxNDc2LDE0NzddLFsxNDc5LDE0NzldLFsxNTM2LDE1MzldLFsxNTUyLDE1NTddLFsxNjExLDE2MzBdLFsxNjQ4LDE2NDhdLFsxNzUwLDE3NjRdLFsxNzY3LDE3NjhdLFsxNzcwLDE3NzNdLFsxODA3LDE4MDddLFsxODA5LDE4MDldLFsxODQwLDE4NjZdLFsxOTU4LDE5NjhdLFsyMDI3LDIwMzVdLFsyMzA1LDIzMDZdLFsyMzY0LDIzNjRdLFsyMzY5LDIzNzZdLFsyMzgxLDIzODFdLFsyMzg1LDIzODhdLFsyNDAyLDI0MDNdLFsyNDMzLDI0MzNdLFsyNDkyLDI0OTJdLFsyNDk3LDI1MDBdLFsyNTA5LDI1MDldLFsyNTMwLDI1MzFdLFsyNTYxLDI1NjJdLFsyNjIwLDI2MjBdLFsyNjI1LDI2MjZdLFsyNjMxLDI2MzJdLFsyNjM1LDI2MzddLFsyNjcyLDI2NzNdLFsyNjg5LDI2OTBdLFsyNzQ4LDI3NDhdLFsyNzUzLDI3NTddLFsyNzU5LDI3NjBdLFsyNzY1LDI3NjVdLFsyNzg2LDI3ODddLFsyODE3LDI4MTddLFsyODc2LDI4NzZdLFsyODc5LDI4NzldLFsyODgxLDI4ODNdLFsyODkzLDI4OTNdLFsyOTAyLDI5MDJdLFsyOTQ2LDI5NDZdLFszMDA4LDMwMDhdLFszMDIxLDMwMjFdLFszMTM0LDMxMzZdLFszMTQyLDMxNDRdLFszMTQ2LDMxNDldLFszMTU3LDMxNThdLFszMjYwLDMyNjBdLFszMjYzLDMyNjNdLFszMjcwLDMyNzBdLFszMjc2LDMyNzddLFszMjk4LDMyOTldLFszMzkzLDMzOTVdLFszNDA1LDM0MDVdLFszNTMwLDM1MzBdLFszNTM4LDM1NDBdLFszNTQyLDM1NDJdLFszNjMzLDM2MzNdLFszNjM2LDM2NDJdLFszNjU1LDM2NjJdLFszNzYxLDM3NjFdLFszNzY0LDM3NjldLFszNzcxLDM3NzJdLFszNzg0LDM3ODldLFszODY0LDM4NjVdLFszODkzLDM4OTNdLFszODk1LDM4OTVdLFszODk3LDM4OTddLFszOTUzLDM5NjZdLFszOTY4LDM5NzJdLFszOTc0LDM5NzVdLFszOTg0LDM5OTFdLFszOTkzLDQwMjhdLFs0MDM4LDQwMzhdLFs0MTQxLDQxNDRdLFs0MTQ2LDQxNDZdLFs0MTUwLDQxNTFdLFs0MTUzLDQxNTNdLFs0MTg0LDQxODVdLFs0NDQ4LDQ2MDddLFs0OTU5LDQ5NTldLFs1OTA2LDU5MDhdLFs1OTM4LDU5NDBdLFs1OTcwLDU5NzFdLFs2MDAyLDYwMDNdLFs2MDY4LDYwNjldLFs2MDcxLDYwNzddLFs2MDg2LDYwODZdLFs2MDg5LDYwOTldLFs2MTA5LDYxMDldLFs2MTU1LDYxNTddLFs2MzEzLDYzMTNdLFs2NDMyLDY0MzRdLFs2NDM5LDY0NDBdLFs2NDUwLDY0NTBdLFs2NDU3LDY0NTldLFs2Njc5LDY2ODBdLFs2OTEyLDY5MTVdLFs2OTY0LDY5NjRdLFs2OTY2LDY5NzBdLFs2OTcyLDY5NzJdLFs2OTc4LDY5NzhdLFs3MDE5LDcwMjddLFs3NjE2LDc2MjZdLFs3Njc4LDc2NzldLFs4MjAzLDgyMDddLFs4MjM0LDgyMzhdLFs4Mjg4LDgyOTFdLFs4Mjk4LDgzMDNdLFs4NDAwLDg0MzFdLFsxMjMzMCwxMjMzNV0sWzEyNDQxLDEyNDQyXSxbNDMwMTQsNDMwMTRdLFs0MzAxOSw0MzAxOV0sWzQzMDQ1LDQzMDQ2XSxbNjQyODYsNjQyODZdLFs2NTAyNCw2NTAzOV0sWzY1MDU2LDY1MDU5XSxbNjUyNzksNjUyNzldLFs2NTUyOSw2NTUzMV1dLHM9W1s2ODA5Nyw2ODA5OV0sWzY4MTAxLDY4MTAyXSxbNjgxMDgsNjgxMTFdLFs2ODE1Miw2ODE1NF0sWzY4MTU5LDY4MTU5XSxbMTE5MTQzLDExOTE0NV0sWzExOTE1NSwxMTkxNzBdLFsxMTkxNzMsMTE5MTc5XSxbMTE5MjEwLDExOTIxM10sWzExOTM2MiwxMTkzNjRdLFs5MTc1MDUsOTE3NTA1XSxbOTE3NTM2LDkxNzYzMV0sWzkxNzc2MCw5MTc5OTldXTtsZXQgcjt0LlVuaWNvZGVWNj1jbGFzc3tjb25zdHJ1Y3Rvcigpe2lmKHRoaXMudmVyc2lvbj1cIjZcIiwhcil7cj1uZXcgVWludDhBcnJheSg2NTUzNiksci5maWxsKDEpLHJbMF09MCxyLmZpbGwoMCwxLDMyKSxyLmZpbGwoMCwxMjcsMTYwKSxyLmZpbGwoMiw0MzUyLDQ0NDgpLHJbOTAwMV09MixyWzkwMDJdPTIsci5maWxsKDIsMTE5MDQsNDIxOTIpLHJbMTIzNTFdPTEsci5maWxsKDIsNDQwMzIsNTUyMDQpLHIuZmlsbCgyLDYzNzQ0LDY0MjU2KSxyLmZpbGwoMiw2NTA0MCw2NTA1MCksci5maWxsKDIsNjUwNzIsNjUxMzYpLHIuZmlsbCgyLDY1MjgwLDY1Mzc3KSxyLmZpbGwoMiw2NTUwNCw2NTUxMSk7Zm9yKGxldCBlPTA7ZTxpLmxlbmd0aDsrK2Upci5maWxsKDAsaVtlXVswXSxpW2VdWzFdKzEpfX13Y3dpZHRoKGUpe3JldHVybiBlPDMyPzA6ZTwxMjc/MTplPDY1NTM2P3JbZV06ZnVuY3Rpb24oZSx0KXtsZXQgaSxzPTAscj10Lmxlbmd0aC0xO2lmKGU8dFswXVswXXx8ZT50W3JdWzFdKXJldHVybiExO2Zvcig7cj49czspaWYoaT1zK3I+PjEsZT50W2ldWzFdKXM9aSsxO2Vsc2V7aWYoIShlPHRbaV1bMF0pKXJldHVybiEwO3I9aS0xfXJldHVybiExfShlLHMpPzA6ZT49MTMxMDcyJiZlPD0xOTY2MDV8fGU+PTE5NjYwOCYmZTw9MjYyMTQxPzI6MX19fSw1OTgxOihlLHQsaSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LldyaXRlQnVmZmVyPXZvaWQgMDtjb25zdCBzPWkoODQ2MCkscj1pKDg0NCk7Y2xhc3MgbiBleHRlbmRzIHIuRGlzcG9zYWJsZXtjb25zdHJ1Y3RvcihlKXtzdXBlcigpLHRoaXMuX2FjdGlvbj1lLHRoaXMuX3dyaXRlQnVmZmVyPVtdLHRoaXMuX2NhbGxiYWNrcz1bXSx0aGlzLl9wZW5kaW5nRGF0YT0wLHRoaXMuX2J1ZmZlck9mZnNldD0wLHRoaXMuX2lzU3luY1dyaXRpbmc9ITEsdGhpcy5fc3luY0NhbGxzPTAsdGhpcy5fZGlkVXNlcklucHV0PSExLHRoaXMuX29uV3JpdGVQYXJzZWQ9dGhpcy5yZWdpc3RlcihuZXcgcy5FdmVudEVtaXR0ZXIpLHRoaXMub25Xcml0ZVBhcnNlZD10aGlzLl9vbldyaXRlUGFyc2VkLmV2ZW50fWhhbmRsZVVzZXJJbnB1dCgpe3RoaXMuX2RpZFVzZXJJbnB1dD0hMH13cml0ZVN5bmMoZSx0KXtpZih2b2lkIDAhPT10JiZ0aGlzLl9zeW5jQ2FsbHM+dClyZXR1cm4gdm9pZCh0aGlzLl9zeW5jQ2FsbHM9MCk7aWYodGhpcy5fcGVuZGluZ0RhdGErPWUubGVuZ3RoLHRoaXMuX3dyaXRlQnVmZmVyLnB1c2goZSksdGhpcy5fY2FsbGJhY2tzLnB1c2godm9pZCAwKSx0aGlzLl9zeW5jQ2FsbHMrKyx0aGlzLl9pc1N5bmNXcml0aW5nKXJldHVybjtsZXQgaTtmb3IodGhpcy5faXNTeW5jV3JpdGluZz0hMDtpPXRoaXMuX3dyaXRlQnVmZmVyLnNoaWZ0KCk7KXt0aGlzLl9hY3Rpb24oaSk7Y29uc3QgZT10aGlzLl9jYWxsYmFja3Muc2hpZnQoKTtlJiZlKCl9dGhpcy5fcGVuZGluZ0RhdGE9MCx0aGlzLl9idWZmZXJPZmZzZXQ9MjE0NzQ4MzY0Nyx0aGlzLl9pc1N5bmNXcml0aW5nPSExLHRoaXMuX3N5bmNDYWxscz0wfXdyaXRlKGUsdCl7aWYodGhpcy5fcGVuZGluZ0RhdGE+NWU3KXRocm93IG5ldyBFcnJvcihcIndyaXRlIGRhdGEgZGlzY2FyZGVkLCB1c2UgZmxvdyBjb250cm9sIHRvIGF2b2lkIGxvc2luZyBkYXRhXCIpO2lmKCF0aGlzLl93cml0ZUJ1ZmZlci5sZW5ndGgpe2lmKHRoaXMuX2J1ZmZlck9mZnNldD0wLHRoaXMuX2RpZFVzZXJJbnB1dClyZXR1cm4gdGhpcy5fZGlkVXNlcklucHV0PSExLHRoaXMuX3BlbmRpbmdEYXRhKz1lLmxlbmd0aCx0aGlzLl93cml0ZUJ1ZmZlci5wdXNoKGUpLHRoaXMuX2NhbGxiYWNrcy5wdXNoKHQpLHZvaWQgdGhpcy5faW5uZXJXcml0ZSgpO3NldFRpbWVvdXQoKCgpPT50aGlzLl9pbm5lcldyaXRlKCkpKX10aGlzLl9wZW5kaW5nRGF0YSs9ZS5sZW5ndGgsdGhpcy5fd3JpdGVCdWZmZXIucHVzaChlKSx0aGlzLl9jYWxsYmFja3MucHVzaCh0KX1faW5uZXJXcml0ZShlPTAsdD0hMCl7Y29uc3QgaT1lfHxEYXRlLm5vdygpO2Zvcig7dGhpcy5fd3JpdGVCdWZmZXIubGVuZ3RoPnRoaXMuX2J1ZmZlck9mZnNldDspe2NvbnN0IGU9dGhpcy5fd3JpdGVCdWZmZXJbdGhpcy5fYnVmZmVyT2Zmc2V0XSxzPXRoaXMuX2FjdGlvbihlLHQpO2lmKHMpe2NvbnN0IGU9ZT0+RGF0ZS5ub3coKS1pPj0xMj9zZXRUaW1lb3V0KCgoKT0+dGhpcy5faW5uZXJXcml0ZSgwLGUpKSk6dGhpcy5faW5uZXJXcml0ZShpLGUpO3JldHVybiB2b2lkIHMuY2F0Y2goKGU9PihxdWV1ZU1pY3JvdGFzaygoKCk9Pnt0aHJvdyBlfSkpLFByb21pc2UucmVzb2x2ZSghMSkpKSkudGhlbihlKX1jb25zdCByPXRoaXMuX2NhbGxiYWNrc1t0aGlzLl9idWZmZXJPZmZzZXRdO2lmKHImJnIoKSx0aGlzLl9idWZmZXJPZmZzZXQrKyx0aGlzLl9wZW5kaW5nRGF0YS09ZS5sZW5ndGgsRGF0ZS5ub3coKS1pPj0xMilicmVha310aGlzLl93cml0ZUJ1ZmZlci5sZW5ndGg+dGhpcy5fYnVmZmVyT2Zmc2V0Pyh0aGlzLl9idWZmZXJPZmZzZXQ+NTAmJih0aGlzLl93cml0ZUJ1ZmZlcj10aGlzLl93cml0ZUJ1ZmZlci5zbGljZSh0aGlzLl9idWZmZXJPZmZzZXQpLHRoaXMuX2NhbGxiYWNrcz10aGlzLl9jYWxsYmFja3Muc2xpY2UodGhpcy5fYnVmZmVyT2Zmc2V0KSx0aGlzLl9idWZmZXJPZmZzZXQ9MCksc2V0VGltZW91dCgoKCk9PnRoaXMuX2lubmVyV3JpdGUoKSkpKToodGhpcy5fd3JpdGVCdWZmZXIubGVuZ3RoPTAsdGhpcy5fY2FsbGJhY2tzLmxlbmd0aD0wLHRoaXMuX3BlbmRpbmdEYXRhPTAsdGhpcy5fYnVmZmVyT2Zmc2V0PTApLHRoaXMuX29uV3JpdGVQYXJzZWQuZmlyZSgpfX10LldyaXRlQnVmZmVyPW59LDU5NDE6KGUsdCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LnRvUmdiU3RyaW5nPXQucGFyc2VDb2xvcj12b2lkIDA7Y29uc3QgaT0vXihbXFxkYS1mXSlcXC8oW1xcZGEtZl0pXFwvKFtcXGRhLWZdKSR8XihbXFxkYS1mXXsyfSlcXC8oW1xcZGEtZl17Mn0pXFwvKFtcXGRhLWZdezJ9KSR8XihbXFxkYS1mXXszfSlcXC8oW1xcZGEtZl17M30pXFwvKFtcXGRhLWZdezN9KSR8XihbXFxkYS1mXXs0fSlcXC8oW1xcZGEtZl17NH0pXFwvKFtcXGRhLWZdezR9KSQvLHM9L15bXFxkYS1mXSskLztmdW5jdGlvbiByKGUsdCl7Y29uc3QgaT1lLnRvU3RyaW5nKDE2KSxzPWkubGVuZ3RoPDI/XCIwXCIraTppO3N3aXRjaCh0KXtjYXNlIDQ6cmV0dXJuIGlbMF07Y2FzZSA4OnJldHVybiBzO2Nhc2UgMTI6cmV0dXJuKHMrcykuc2xpY2UoMCwzKTtkZWZhdWx0OnJldHVybiBzK3N9fXQucGFyc2VDb2xvcj1mdW5jdGlvbihlKXtpZighZSlyZXR1cm47bGV0IHQ9ZS50b0xvd2VyQ2FzZSgpO2lmKDA9PT10LmluZGV4T2YoXCJyZ2I6XCIpKXt0PXQuc2xpY2UoNCk7Y29uc3QgZT1pLmV4ZWModCk7aWYoZSl7Y29uc3QgdD1lWzFdPzE1OmVbNF0/MjU1OmVbN10/NDA5NTo2NTUzNTtyZXR1cm5bTWF0aC5yb3VuZChwYXJzZUludChlWzFdfHxlWzRdfHxlWzddfHxlWzEwXSwxNikvdCoyNTUpLE1hdGgucm91bmQocGFyc2VJbnQoZVsyXXx8ZVs1XXx8ZVs4XXx8ZVsxMV0sMTYpL3QqMjU1KSxNYXRoLnJvdW5kKHBhcnNlSW50KGVbM118fGVbNl18fGVbOV18fGVbMTJdLDE2KS90KjI1NSldfX1lbHNlIGlmKDA9PT10LmluZGV4T2YoXCIjXCIpJiYodD10LnNsaWNlKDEpLHMuZXhlYyh0KSYmWzMsNiw5LDEyXS5pbmNsdWRlcyh0Lmxlbmd0aCkpKXtjb25zdCBlPXQubGVuZ3RoLzMsaT1bMCwwLDBdO2ZvcihsZXQgcz0wO3M8MzsrK3Mpe2NvbnN0IHI9cGFyc2VJbnQodC5zbGljZShlKnMsZSpzK2UpLDE2KTtpW3NdPTE9PT1lP3I8PDQ6Mj09PWU/cjozPT09ZT9yPj40OnI+Pjh9cmV0dXJuIGl9fSx0LnRvUmdiU3RyaW5nPWZ1bmN0aW9uKGUsdD0xNil7Y29uc3RbaSxzLG5dPWU7cmV0dXJuYHJnYjoke3IoaSx0KX0vJHtyKHMsdCl9LyR7cihuLHQpfWB9fSw1NzcwOihlLHQpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5QQVlMT0FEX0xJTUlUPXZvaWQgMCx0LlBBWUxPQURfTElNSVQ9MWU3fSw2MzUxOihlLHQsaSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkRjc0hhbmRsZXI9dC5EY3NQYXJzZXI9dm9pZCAwO2NvbnN0IHM9aSg0ODIpLHI9aSg4NzQyKSxuPWkoNTc3MCksbz1bXTt0LkRjc1BhcnNlcj1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMuX2hhbmRsZXJzPU9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5fYWN0aXZlPW8sdGhpcy5faWRlbnQ9MCx0aGlzLl9oYW5kbGVyRmI9KCk9Pnt9LHRoaXMuX3N0YWNrPXtwYXVzZWQ6ITEsbG9vcFBvc2l0aW9uOjAsZmFsbFRocm91Z2g6ITF9fWRpc3Bvc2UoKXt0aGlzLl9oYW5kbGVycz1PYmplY3QuY3JlYXRlKG51bGwpLHRoaXMuX2hhbmRsZXJGYj0oKT0+e30sdGhpcy5fYWN0aXZlPW99cmVnaXN0ZXJIYW5kbGVyKGUsdCl7dm9pZCAwPT09dGhpcy5faGFuZGxlcnNbZV0mJih0aGlzLl9oYW5kbGVyc1tlXT1bXSk7Y29uc3QgaT10aGlzLl9oYW5kbGVyc1tlXTtyZXR1cm4gaS5wdXNoKHQpLHtkaXNwb3NlOigpPT57Y29uc3QgZT1pLmluZGV4T2YodCk7LTEhPT1lJiZpLnNwbGljZShlLDEpfX19Y2xlYXJIYW5kbGVyKGUpe3RoaXMuX2hhbmRsZXJzW2VdJiZkZWxldGUgdGhpcy5faGFuZGxlcnNbZV19c2V0SGFuZGxlckZhbGxiYWNrKGUpe3RoaXMuX2hhbmRsZXJGYj1lfXJlc2V0KCl7aWYodGhpcy5fYWN0aXZlLmxlbmd0aClmb3IobGV0IGU9dGhpcy5fc3RhY2sucGF1c2VkP3RoaXMuX3N0YWNrLmxvb3BQb3NpdGlvbi0xOnRoaXMuX2FjdGl2ZS5sZW5ndGgtMTtlPj0wOy0tZSl0aGlzLl9hY3RpdmVbZV0udW5ob29rKCExKTt0aGlzLl9zdGFjay5wYXVzZWQ9ITEsdGhpcy5fYWN0aXZlPW8sdGhpcy5faWRlbnQ9MH1ob29rKGUsdCl7aWYodGhpcy5yZXNldCgpLHRoaXMuX2lkZW50PWUsdGhpcy5fYWN0aXZlPXRoaXMuX2hhbmRsZXJzW2VdfHxvLHRoaXMuX2FjdGl2ZS5sZW5ndGgpZm9yKGxldCBlPXRoaXMuX2FjdGl2ZS5sZW5ndGgtMTtlPj0wO2UtLSl0aGlzLl9hY3RpdmVbZV0uaG9vayh0KTtlbHNlIHRoaXMuX2hhbmRsZXJGYih0aGlzLl9pZGVudCxcIkhPT0tcIix0KX1wdXQoZSx0LGkpe2lmKHRoaXMuX2FjdGl2ZS5sZW5ndGgpZm9yKGxldCBzPXRoaXMuX2FjdGl2ZS5sZW5ndGgtMTtzPj0wO3MtLSl0aGlzLl9hY3RpdmVbc10ucHV0KGUsdCxpKTtlbHNlIHRoaXMuX2hhbmRsZXJGYih0aGlzLl9pZGVudCxcIlBVVFwiLCgwLHMudXRmMzJUb1N0cmluZykoZSx0LGkpKX11bmhvb2soZSx0PSEwKXtpZih0aGlzLl9hY3RpdmUubGVuZ3RoKXtsZXQgaT0hMSxzPXRoaXMuX2FjdGl2ZS5sZW5ndGgtMSxyPSExO2lmKHRoaXMuX3N0YWNrLnBhdXNlZCYmKHM9dGhpcy5fc3RhY2subG9vcFBvc2l0aW9uLTEsaT10LHI9dGhpcy5fc3RhY2suZmFsbFRocm91Z2gsdGhpcy5fc3RhY2sucGF1c2VkPSExKSwhciYmITE9PT1pKXtmb3IoO3M+PTAmJihpPXRoaXMuX2FjdGl2ZVtzXS51bmhvb2soZSksITAhPT1pKTtzLS0paWYoaSBpbnN0YW5jZW9mIFByb21pc2UpcmV0dXJuIHRoaXMuX3N0YWNrLnBhdXNlZD0hMCx0aGlzLl9zdGFjay5sb29wUG9zaXRpb249cyx0aGlzLl9zdGFjay5mYWxsVGhyb3VnaD0hMSxpO3MtLX1mb3IoO3M+PTA7cy0tKWlmKGk9dGhpcy5fYWN0aXZlW3NdLnVuaG9vayghMSksaSBpbnN0YW5jZW9mIFByb21pc2UpcmV0dXJuIHRoaXMuX3N0YWNrLnBhdXNlZD0hMCx0aGlzLl9zdGFjay5sb29wUG9zaXRpb249cyx0aGlzLl9zdGFjay5mYWxsVGhyb3VnaD0hMCxpfWVsc2UgdGhpcy5faGFuZGxlckZiKHRoaXMuX2lkZW50LFwiVU5IT09LXCIsZSk7dGhpcy5fYWN0aXZlPW8sdGhpcy5faWRlbnQ9MH19O2NvbnN0IGE9bmV3IHIuUGFyYW1zO2EuYWRkUGFyYW0oMCksdC5EY3NIYW5kbGVyPWNsYXNze2NvbnN0cnVjdG9yKGUpe3RoaXMuX2hhbmRsZXI9ZSx0aGlzLl9kYXRhPVwiXCIsdGhpcy5fcGFyYW1zPWEsdGhpcy5faGl0TGltaXQ9ITF9aG9vayhlKXt0aGlzLl9wYXJhbXM9ZS5sZW5ndGg+MXx8ZS5wYXJhbXNbMF0/ZS5jbG9uZSgpOmEsdGhpcy5fZGF0YT1cIlwiLHRoaXMuX2hpdExpbWl0PSExfXB1dChlLHQsaSl7dGhpcy5faGl0TGltaXR8fCh0aGlzLl9kYXRhKz0oMCxzLnV0ZjMyVG9TdHJpbmcpKGUsdCxpKSx0aGlzLl9kYXRhLmxlbmd0aD5uLlBBWUxPQURfTElNSVQmJih0aGlzLl9kYXRhPVwiXCIsdGhpcy5faGl0TGltaXQ9ITApKX11bmhvb2soZSl7bGV0IHQ9ITE7aWYodGhpcy5faGl0TGltaXQpdD0hMTtlbHNlIGlmKGUmJih0PXRoaXMuX2hhbmRsZXIodGhpcy5fZGF0YSx0aGlzLl9wYXJhbXMpLHQgaW5zdGFuY2VvZiBQcm9taXNlKSlyZXR1cm4gdC50aGVuKChlPT4odGhpcy5fcGFyYW1zPWEsdGhpcy5fZGF0YT1cIlwiLHRoaXMuX2hpdExpbWl0PSExLGUpKSk7cmV0dXJuIHRoaXMuX3BhcmFtcz1hLHRoaXMuX2RhdGE9XCJcIix0aGlzLl9oaXRMaW1pdD0hMSx0fX19LDIwMTU6KGUsdCxpKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuRXNjYXBlU2VxdWVuY2VQYXJzZXI9dC5WVDUwMF9UUkFOU0lUSU9OX1RBQkxFPXQuVHJhbnNpdGlvblRhYmxlPXZvaWQgMDtjb25zdCBzPWkoODQ0KSxyPWkoODc0Miksbj1pKDYyNDIpLG89aSg2MzUxKTtjbGFzcyBhe2NvbnN0cnVjdG9yKGUpe3RoaXMudGFibGU9bmV3IFVpbnQ4QXJyYXkoZSl9c2V0RGVmYXVsdChlLHQpe3RoaXMudGFibGUuZmlsbChlPDw0fHQpfWFkZChlLHQsaSxzKXt0aGlzLnRhYmxlW3Q8PDh8ZV09aTw8NHxzfWFkZE1hbnkoZSx0LGkscyl7Zm9yKGxldCByPTA7cjxlLmxlbmd0aDtyKyspdGhpcy50YWJsZVt0PDw4fGVbcl1dPWk8PDR8c319dC5UcmFuc2l0aW9uVGFibGU9YTtjb25zdCBoPTE2MDt0LlZUNTAwX1RSQU5TSVRJT05fVEFCTEU9ZnVuY3Rpb24oKXtjb25zdCBlPW5ldyBhKDQwOTUpLHQ9QXJyYXkuYXBwbHkobnVsbCxBcnJheSgyNTYpKS5tYXAoKChlLHQpPT50KSksaT0oZSxpKT0+dC5zbGljZShlLGkpLHM9aSgzMiwxMjcpLHI9aSgwLDI0KTtyLnB1c2goMjUpLHIucHVzaC5hcHBseShyLGkoMjgsMzIpKTtjb25zdCBuPWkoMCwxNCk7bGV0IG87Zm9yKG8gaW4gZS5zZXREZWZhdWx0KDEsMCksZS5hZGRNYW55KHMsMCwyLDApLG4pZS5hZGRNYW55KFsyNCwyNiwxNTMsMTU0XSxvLDMsMCksZS5hZGRNYW55KGkoMTI4LDE0NCksbywzLDApLGUuYWRkTWFueShpKDE0NCwxNTIpLG8sMywwKSxlLmFkZCgxNTYsbywwLDApLGUuYWRkKDI3LG8sMTEsMSksZS5hZGQoMTU3LG8sNCw4KSxlLmFkZE1hbnkoWzE1MiwxNTgsMTU5XSxvLDAsNyksZS5hZGQoMTU1LG8sMTEsMyksZS5hZGQoMTQ0LG8sMTEsOSk7cmV0dXJuIGUuYWRkTWFueShyLDAsMywwKSxlLmFkZE1hbnkociwxLDMsMSksZS5hZGQoMTI3LDEsMCwxKSxlLmFkZE1hbnkociw4LDAsOCksZS5hZGRNYW55KHIsMywzLDMpLGUuYWRkKDEyNywzLDAsMyksZS5hZGRNYW55KHIsNCwzLDQpLGUuYWRkKDEyNyw0LDAsNCksZS5hZGRNYW55KHIsNiwzLDYpLGUuYWRkTWFueShyLDUsMyw1KSxlLmFkZCgxMjcsNSwwLDUpLGUuYWRkTWFueShyLDIsMywyKSxlLmFkZCgxMjcsMiwwLDIpLGUuYWRkKDkzLDEsNCw4KSxlLmFkZE1hbnkocyw4LDUsOCksZS5hZGQoMTI3LDgsNSw4KSxlLmFkZE1hbnkoWzE1NiwyNywyNCwyNiw3XSw4LDYsMCksZS5hZGRNYW55KGkoMjgsMzIpLDgsMCw4KSxlLmFkZE1hbnkoWzg4LDk0LDk1XSwxLDAsNyksZS5hZGRNYW55KHMsNywwLDcpLGUuYWRkTWFueShyLDcsMCw3KSxlLmFkZCgxNTYsNywwLDApLGUuYWRkKDEyNyw3LDAsNyksZS5hZGQoOTEsMSwxMSwzKSxlLmFkZE1hbnkoaSg2NCwxMjcpLDMsNywwKSxlLmFkZE1hbnkoaSg0OCw2MCksMyw4LDQpLGUuYWRkTWFueShbNjAsNjEsNjIsNjNdLDMsOSw0KSxlLmFkZE1hbnkoaSg0OCw2MCksNCw4LDQpLGUuYWRkTWFueShpKDY0LDEyNyksNCw3LDApLGUuYWRkTWFueShbNjAsNjEsNjIsNjNdLDQsMCw2KSxlLmFkZE1hbnkoaSgzMiw2NCksNiwwLDYpLGUuYWRkKDEyNyw2LDAsNiksZS5hZGRNYW55KGkoNjQsMTI3KSw2LDAsMCksZS5hZGRNYW55KGkoMzIsNDgpLDMsOSw1KSxlLmFkZE1hbnkoaSgzMiw0OCksNSw5LDUpLGUuYWRkTWFueShpKDQ4LDY0KSw1LDAsNiksZS5hZGRNYW55KGkoNjQsMTI3KSw1LDcsMCksZS5hZGRNYW55KGkoMzIsNDgpLDQsOSw1KSxlLmFkZE1hbnkoaSgzMiw0OCksMSw5LDIpLGUuYWRkTWFueShpKDMyLDQ4KSwyLDksMiksZS5hZGRNYW55KGkoNDgsMTI3KSwyLDEwLDApLGUuYWRkTWFueShpKDQ4LDgwKSwxLDEwLDApLGUuYWRkTWFueShpKDgxLDg4KSwxLDEwLDApLGUuYWRkTWFueShbODksOTAsOTJdLDEsMTAsMCksZS5hZGRNYW55KGkoOTYsMTI3KSwxLDEwLDApLGUuYWRkKDgwLDEsMTEsOSksZS5hZGRNYW55KHIsOSwwLDkpLGUuYWRkKDEyNyw5LDAsOSksZS5hZGRNYW55KGkoMjgsMzIpLDksMCw5KSxlLmFkZE1hbnkoaSgzMiw0OCksOSw5LDEyKSxlLmFkZE1hbnkoaSg0OCw2MCksOSw4LDEwKSxlLmFkZE1hbnkoWzYwLDYxLDYyLDYzXSw5LDksMTApLGUuYWRkTWFueShyLDExLDAsMTEpLGUuYWRkTWFueShpKDMyLDEyOCksMTEsMCwxMSksZS5hZGRNYW55KGkoMjgsMzIpLDExLDAsMTEpLGUuYWRkTWFueShyLDEwLDAsMTApLGUuYWRkKDEyNywxMCwwLDEwKSxlLmFkZE1hbnkoaSgyOCwzMiksMTAsMCwxMCksZS5hZGRNYW55KGkoNDgsNjApLDEwLDgsMTApLGUuYWRkTWFueShbNjAsNjEsNjIsNjNdLDEwLDAsMTEpLGUuYWRkTWFueShpKDMyLDQ4KSwxMCw5LDEyKSxlLmFkZE1hbnkociwxMiwwLDEyKSxlLmFkZCgxMjcsMTIsMCwxMiksZS5hZGRNYW55KGkoMjgsMzIpLDEyLDAsMTIpLGUuYWRkTWFueShpKDMyLDQ4KSwxMiw5LDEyKSxlLmFkZE1hbnkoaSg0OCw2NCksMTIsMCwxMSksZS5hZGRNYW55KGkoNjQsMTI3KSwxMiwxMiwxMyksZS5hZGRNYW55KGkoNjQsMTI3KSwxMCwxMiwxMyksZS5hZGRNYW55KGkoNjQsMTI3KSw5LDEyLDEzKSxlLmFkZE1hbnkociwxMywxMywxMyksZS5hZGRNYW55KHMsMTMsMTMsMTMpLGUuYWRkKDEyNywxMywwLDEzKSxlLmFkZE1hbnkoWzI3LDE1NiwyNCwyNl0sMTMsMTQsMCksZS5hZGQoaCwwLDIsMCksZS5hZGQoaCw4LDUsOCksZS5hZGQoaCw2LDAsNiksZS5hZGQoaCwxMSwwLDExKSxlLmFkZChoLDEzLDEzLDEzKSxlfSgpO2NsYXNzIGMgZXh0ZW5kcyBzLkRpc3Bvc2FibGV7Y29uc3RydWN0b3IoZT10LlZUNTAwX1RSQU5TSVRJT05fVEFCTEUpe3N1cGVyKCksdGhpcy5fdHJhbnNpdGlvbnM9ZSx0aGlzLl9wYXJzZVN0YWNrPXtzdGF0ZTowLGhhbmRsZXJzOltdLGhhbmRsZXJQb3M6MCx0cmFuc2l0aW9uOjAsY2h1bmtQb3M6MH0sdGhpcy5pbml0aWFsU3RhdGU9MCx0aGlzLmN1cnJlbnRTdGF0ZT10aGlzLmluaXRpYWxTdGF0ZSx0aGlzLl9wYXJhbXM9bmV3IHIuUGFyYW1zLHRoaXMuX3BhcmFtcy5hZGRQYXJhbSgwKSx0aGlzLl9jb2xsZWN0PTAsdGhpcy5wcmVjZWRpbmdDb2RlcG9pbnQ9MCx0aGlzLl9wcmludEhhbmRsZXJGYj0oZSx0LGkpPT57fSx0aGlzLl9leGVjdXRlSGFuZGxlckZiPWU9Pnt9LHRoaXMuX2NzaUhhbmRsZXJGYj0oZSx0KT0+e30sdGhpcy5fZXNjSGFuZGxlckZiPWU9Pnt9LHRoaXMuX2Vycm9ySGFuZGxlckZiPWU9PmUsdGhpcy5fcHJpbnRIYW5kbGVyPXRoaXMuX3ByaW50SGFuZGxlckZiLHRoaXMuX2V4ZWN1dGVIYW5kbGVycz1PYmplY3QuY3JlYXRlKG51bGwpLHRoaXMuX2NzaUhhbmRsZXJzPU9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5fZXNjSGFuZGxlcnM9T2JqZWN0LmNyZWF0ZShudWxsKSx0aGlzLnJlZ2lzdGVyKCgwLHMudG9EaXNwb3NhYmxlKSgoKCk9Pnt0aGlzLl9jc2lIYW5kbGVycz1PYmplY3QuY3JlYXRlKG51bGwpLHRoaXMuX2V4ZWN1dGVIYW5kbGVycz1PYmplY3QuY3JlYXRlKG51bGwpLHRoaXMuX2VzY0hhbmRsZXJzPU9iamVjdC5jcmVhdGUobnVsbCl9KSkpLHRoaXMuX29zY1BhcnNlcj10aGlzLnJlZ2lzdGVyKG5ldyBuLk9zY1BhcnNlciksdGhpcy5fZGNzUGFyc2VyPXRoaXMucmVnaXN0ZXIobmV3IG8uRGNzUGFyc2VyKSx0aGlzLl9lcnJvckhhbmRsZXI9dGhpcy5fZXJyb3JIYW5kbGVyRmIsdGhpcy5yZWdpc3RlckVzY0hhbmRsZXIoe2ZpbmFsOlwiXFxcXFwifSwoKCk9PiEwKSl9X2lkZW50aWZpZXIoZSx0PVs2NCwxMjZdKXtsZXQgaT0wO2lmKGUucHJlZml4KXtpZihlLnByZWZpeC5sZW5ndGg+MSl0aHJvdyBuZXcgRXJyb3IoXCJvbmx5IG9uZSBieXRlIGFzIHByZWZpeCBzdXBwb3J0ZWRcIik7aWYoaT1lLnByZWZpeC5jaGFyQ29kZUF0KDApLGkmJjYwPml8fGk+NjMpdGhyb3cgbmV3IEVycm9yKFwicHJlZml4IG11c3QgYmUgaW4gcmFuZ2UgMHgzYyAuLiAweDNmXCIpfWlmKGUuaW50ZXJtZWRpYXRlcyl7aWYoZS5pbnRlcm1lZGlhdGVzLmxlbmd0aD4yKXRocm93IG5ldyBFcnJvcihcIm9ubHkgdHdvIGJ5dGVzIGFzIGludGVybWVkaWF0ZXMgYXJlIHN1cHBvcnRlZFwiKTtmb3IobGV0IHQ9MDt0PGUuaW50ZXJtZWRpYXRlcy5sZW5ndGg7Kyt0KXtjb25zdCBzPWUuaW50ZXJtZWRpYXRlcy5jaGFyQ29kZUF0KHQpO2lmKDMyPnN8fHM+NDcpdGhyb3cgbmV3IEVycm9yKFwiaW50ZXJtZWRpYXRlIG11c3QgYmUgaW4gcmFuZ2UgMHgyMCAuLiAweDJmXCIpO2k8PD04LGl8PXN9fWlmKDEhPT1lLmZpbmFsLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoXCJmaW5hbCBtdXN0IGJlIGEgc2luZ2xlIGJ5dGVcIik7Y29uc3Qgcz1lLmZpbmFsLmNoYXJDb2RlQXQoMCk7aWYodFswXT5zfHxzPnRbMV0pdGhyb3cgbmV3IEVycm9yKGBmaW5hbCBtdXN0IGJlIGluIHJhbmdlICR7dFswXX0gLi4gJHt0WzFdfWApO3JldHVybiBpPDw9OCxpfD1zLGl9aWRlbnRUb1N0cmluZyhlKXtjb25zdCB0PVtdO2Zvcig7ZTspdC5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoMjU1JmUpKSxlPj49ODtyZXR1cm4gdC5yZXZlcnNlKCkuam9pbihcIlwiKX1zZXRQcmludEhhbmRsZXIoZSl7dGhpcy5fcHJpbnRIYW5kbGVyPWV9Y2xlYXJQcmludEhhbmRsZXIoKXt0aGlzLl9wcmludEhhbmRsZXI9dGhpcy5fcHJpbnRIYW5kbGVyRmJ9cmVnaXN0ZXJFc2NIYW5kbGVyKGUsdCl7Y29uc3QgaT10aGlzLl9pZGVudGlmaWVyKGUsWzQ4LDEyNl0pO3ZvaWQgMD09PXRoaXMuX2VzY0hhbmRsZXJzW2ldJiYodGhpcy5fZXNjSGFuZGxlcnNbaV09W10pO2NvbnN0IHM9dGhpcy5fZXNjSGFuZGxlcnNbaV07cmV0dXJuIHMucHVzaCh0KSx7ZGlzcG9zZTooKT0+e2NvbnN0IGU9cy5pbmRleE9mKHQpOy0xIT09ZSYmcy5zcGxpY2UoZSwxKX19fWNsZWFyRXNjSGFuZGxlcihlKXt0aGlzLl9lc2NIYW5kbGVyc1t0aGlzLl9pZGVudGlmaWVyKGUsWzQ4LDEyNl0pXSYmZGVsZXRlIHRoaXMuX2VzY0hhbmRsZXJzW3RoaXMuX2lkZW50aWZpZXIoZSxbNDgsMTI2XSldfXNldEVzY0hhbmRsZXJGYWxsYmFjayhlKXt0aGlzLl9lc2NIYW5kbGVyRmI9ZX1zZXRFeGVjdXRlSGFuZGxlcihlLHQpe3RoaXMuX2V4ZWN1dGVIYW5kbGVyc1tlLmNoYXJDb2RlQXQoMCldPXR9Y2xlYXJFeGVjdXRlSGFuZGxlcihlKXt0aGlzLl9leGVjdXRlSGFuZGxlcnNbZS5jaGFyQ29kZUF0KDApXSYmZGVsZXRlIHRoaXMuX2V4ZWN1dGVIYW5kbGVyc1tlLmNoYXJDb2RlQXQoMCldfXNldEV4ZWN1dGVIYW5kbGVyRmFsbGJhY2soZSl7dGhpcy5fZXhlY3V0ZUhhbmRsZXJGYj1lfXJlZ2lzdGVyQ3NpSGFuZGxlcihlLHQpe2NvbnN0IGk9dGhpcy5faWRlbnRpZmllcihlKTt2b2lkIDA9PT10aGlzLl9jc2lIYW5kbGVyc1tpXSYmKHRoaXMuX2NzaUhhbmRsZXJzW2ldPVtdKTtjb25zdCBzPXRoaXMuX2NzaUhhbmRsZXJzW2ldO3JldHVybiBzLnB1c2godCkse2Rpc3Bvc2U6KCk9Pntjb25zdCBlPXMuaW5kZXhPZih0KTstMSE9PWUmJnMuc3BsaWNlKGUsMSl9fX1jbGVhckNzaUhhbmRsZXIoZSl7dGhpcy5fY3NpSGFuZGxlcnNbdGhpcy5faWRlbnRpZmllcihlKV0mJmRlbGV0ZSB0aGlzLl9jc2lIYW5kbGVyc1t0aGlzLl9pZGVudGlmaWVyKGUpXX1zZXRDc2lIYW5kbGVyRmFsbGJhY2soZSl7dGhpcy5fY3NpSGFuZGxlckZiPWV9cmVnaXN0ZXJEY3NIYW5kbGVyKGUsdCl7cmV0dXJuIHRoaXMuX2Rjc1BhcnNlci5yZWdpc3RlckhhbmRsZXIodGhpcy5faWRlbnRpZmllcihlKSx0KX1jbGVhckRjc0hhbmRsZXIoZSl7dGhpcy5fZGNzUGFyc2VyLmNsZWFySGFuZGxlcih0aGlzLl9pZGVudGlmaWVyKGUpKX1zZXREY3NIYW5kbGVyRmFsbGJhY2soZSl7dGhpcy5fZGNzUGFyc2VyLnNldEhhbmRsZXJGYWxsYmFjayhlKX1yZWdpc3Rlck9zY0hhbmRsZXIoZSx0KXtyZXR1cm4gdGhpcy5fb3NjUGFyc2VyLnJlZ2lzdGVySGFuZGxlcihlLHQpfWNsZWFyT3NjSGFuZGxlcihlKXt0aGlzLl9vc2NQYXJzZXIuY2xlYXJIYW5kbGVyKGUpfXNldE9zY0hhbmRsZXJGYWxsYmFjayhlKXt0aGlzLl9vc2NQYXJzZXIuc2V0SGFuZGxlckZhbGxiYWNrKGUpfXNldEVycm9ySGFuZGxlcihlKXt0aGlzLl9lcnJvckhhbmRsZXI9ZX1jbGVhckVycm9ySGFuZGxlcigpe3RoaXMuX2Vycm9ySGFuZGxlcj10aGlzLl9lcnJvckhhbmRsZXJGYn1yZXNldCgpe3RoaXMuY3VycmVudFN0YXRlPXRoaXMuaW5pdGlhbFN0YXRlLHRoaXMuX29zY1BhcnNlci5yZXNldCgpLHRoaXMuX2Rjc1BhcnNlci5yZXNldCgpLHRoaXMuX3BhcmFtcy5yZXNldCgpLHRoaXMuX3BhcmFtcy5hZGRQYXJhbSgwKSx0aGlzLl9jb2xsZWN0PTAsdGhpcy5wcmVjZWRpbmdDb2RlcG9pbnQ9MCwwIT09dGhpcy5fcGFyc2VTdGFjay5zdGF0ZSYmKHRoaXMuX3BhcnNlU3RhY2suc3RhdGU9Mix0aGlzLl9wYXJzZVN0YWNrLmhhbmRsZXJzPVtdKX1fcHJlc2VydmVTdGFjayhlLHQsaSxzLHIpe3RoaXMuX3BhcnNlU3RhY2suc3RhdGU9ZSx0aGlzLl9wYXJzZVN0YWNrLmhhbmRsZXJzPXQsdGhpcy5fcGFyc2VTdGFjay5oYW5kbGVyUG9zPWksdGhpcy5fcGFyc2VTdGFjay50cmFuc2l0aW9uPXMsdGhpcy5fcGFyc2VTdGFjay5jaHVua1Bvcz1yfXBhcnNlKGUsdCxpKXtsZXQgcyxyPTAsbj0wLG89MDtpZih0aGlzLl9wYXJzZVN0YWNrLnN0YXRlKWlmKDI9PT10aGlzLl9wYXJzZVN0YWNrLnN0YXRlKXRoaXMuX3BhcnNlU3RhY2suc3RhdGU9MCxvPXRoaXMuX3BhcnNlU3RhY2suY2h1bmtQb3MrMTtlbHNle2lmKHZvaWQgMD09PWl8fDE9PT10aGlzLl9wYXJzZVN0YWNrLnN0YXRlKXRocm93IHRoaXMuX3BhcnNlU3RhY2suc3RhdGU9MSxuZXcgRXJyb3IoXCJpbXByb3BlciBjb250aW51YXRpb24gZHVlIHRvIHByZXZpb3VzIGFzeW5jIGhhbmRsZXIsIGdpdmluZyB1cCBwYXJzaW5nXCIpO2NvbnN0IHQ9dGhpcy5fcGFyc2VTdGFjay5oYW5kbGVycztsZXQgbj10aGlzLl9wYXJzZVN0YWNrLmhhbmRsZXJQb3MtMTtzd2l0Y2godGhpcy5fcGFyc2VTdGFjay5zdGF0ZSl7Y2FzZSAzOmlmKCExPT09aSYmbj4tMSlmb3IoO24+PTAmJihzPXRbbl0odGhpcy5fcGFyYW1zKSwhMCE9PXMpO24tLSlpZihzIGluc3RhbmNlb2YgUHJvbWlzZSlyZXR1cm4gdGhpcy5fcGFyc2VTdGFjay5oYW5kbGVyUG9zPW4sczt0aGlzLl9wYXJzZVN0YWNrLmhhbmRsZXJzPVtdO2JyZWFrO2Nhc2UgNDppZighMT09PWkmJm4+LTEpZm9yKDtuPj0wJiYocz10W25dKCksITAhPT1zKTtuLS0paWYocyBpbnN0YW5jZW9mIFByb21pc2UpcmV0dXJuIHRoaXMuX3BhcnNlU3RhY2suaGFuZGxlclBvcz1uLHM7dGhpcy5fcGFyc2VTdGFjay5oYW5kbGVycz1bXTticmVhaztjYXNlIDY6aWYocj1lW3RoaXMuX3BhcnNlU3RhY2suY2h1bmtQb3NdLHM9dGhpcy5fZGNzUGFyc2VyLnVuaG9vaygyNCE9PXImJjI2IT09cixpKSxzKXJldHVybiBzOzI3PT09ciYmKHRoaXMuX3BhcnNlU3RhY2sudHJhbnNpdGlvbnw9MSksdGhpcy5fcGFyYW1zLnJlc2V0KCksdGhpcy5fcGFyYW1zLmFkZFBhcmFtKDApLHRoaXMuX2NvbGxlY3Q9MDticmVhaztjYXNlIDU6aWYocj1lW3RoaXMuX3BhcnNlU3RhY2suY2h1bmtQb3NdLHM9dGhpcy5fb3NjUGFyc2VyLmVuZCgyNCE9PXImJjI2IT09cixpKSxzKXJldHVybiBzOzI3PT09ciYmKHRoaXMuX3BhcnNlU3RhY2sudHJhbnNpdGlvbnw9MSksdGhpcy5fcGFyYW1zLnJlc2V0KCksdGhpcy5fcGFyYW1zLmFkZFBhcmFtKDApLHRoaXMuX2NvbGxlY3Q9MH10aGlzLl9wYXJzZVN0YWNrLnN0YXRlPTAsbz10aGlzLl9wYXJzZVN0YWNrLmNodW5rUG9zKzEsdGhpcy5wcmVjZWRpbmdDb2RlcG9pbnQ9MCx0aGlzLmN1cnJlbnRTdGF0ZT0xNSZ0aGlzLl9wYXJzZVN0YWNrLnRyYW5zaXRpb259Zm9yKGxldCBpPW87aTx0OysraSl7c3dpdGNoKHI9ZVtpXSxuPXRoaXMuX3RyYW5zaXRpb25zLnRhYmxlW3RoaXMuY3VycmVudFN0YXRlPDw4fChyPDE2MD9yOmgpXSxuPj40KXtjYXNlIDI6Zm9yKGxldCBzPWkrMTs7KytzKXtpZihzPj10fHwocj1lW3NdKTwzMnx8cj4xMjYmJnI8aCl7dGhpcy5fcHJpbnRIYW5kbGVyKGUsaSxzKSxpPXMtMTticmVha31pZigrK3M+PXR8fChyPWVbc10pPDMyfHxyPjEyNiYmcjxoKXt0aGlzLl9wcmludEhhbmRsZXIoZSxpLHMpLGk9cy0xO2JyZWFrfWlmKCsrcz49dHx8KHI9ZVtzXSk8MzJ8fHI+MTI2JiZyPGgpe3RoaXMuX3ByaW50SGFuZGxlcihlLGkscyksaT1zLTE7YnJlYWt9aWYoKytzPj10fHwocj1lW3NdKTwzMnx8cj4xMjYmJnI8aCl7dGhpcy5fcHJpbnRIYW5kbGVyKGUsaSxzKSxpPXMtMTticmVha319YnJlYWs7Y2FzZSAzOnRoaXMuX2V4ZWN1dGVIYW5kbGVyc1tyXT90aGlzLl9leGVjdXRlSGFuZGxlcnNbcl0oKTp0aGlzLl9leGVjdXRlSGFuZGxlckZiKHIpLHRoaXMucHJlY2VkaW5nQ29kZXBvaW50PTA7YnJlYWs7Y2FzZSAwOmJyZWFrO2Nhc2UgMTppZih0aGlzLl9lcnJvckhhbmRsZXIoe3Bvc2l0aW9uOmksY29kZTpyLGN1cnJlbnRTdGF0ZTp0aGlzLmN1cnJlbnRTdGF0ZSxjb2xsZWN0OnRoaXMuX2NvbGxlY3QscGFyYW1zOnRoaXMuX3BhcmFtcyxhYm9ydDohMX0pLmFib3J0KXJldHVybjticmVhaztjYXNlIDc6Y29uc3Qgbz10aGlzLl9jc2lIYW5kbGVyc1t0aGlzLl9jb2xsZWN0PDw4fHJdO2xldCBhPW8/by5sZW5ndGgtMTotMTtmb3IoO2E+PTAmJihzPW9bYV0odGhpcy5fcGFyYW1zKSwhMCE9PXMpO2EtLSlpZihzIGluc3RhbmNlb2YgUHJvbWlzZSlyZXR1cm4gdGhpcy5fcHJlc2VydmVTdGFjaygzLG8sYSxuLGkpLHM7YTwwJiZ0aGlzLl9jc2lIYW5kbGVyRmIodGhpcy5fY29sbGVjdDw8OHxyLHRoaXMuX3BhcmFtcyksdGhpcy5wcmVjZWRpbmdDb2RlcG9pbnQ9MDticmVhaztjYXNlIDg6ZG97c3dpdGNoKHIpe2Nhc2UgNTk6dGhpcy5fcGFyYW1zLmFkZFBhcmFtKDApO2JyZWFrO2Nhc2UgNTg6dGhpcy5fcGFyYW1zLmFkZFN1YlBhcmFtKC0xKTticmVhaztkZWZhdWx0OnRoaXMuX3BhcmFtcy5hZGREaWdpdChyLTQ4KX19d2hpbGUoKytpPHQmJihyPWVbaV0pPjQ3JiZyPDYwKTtpLS07YnJlYWs7Y2FzZSA5OnRoaXMuX2NvbGxlY3Q8PD04LHRoaXMuX2NvbGxlY3R8PXI7YnJlYWs7Y2FzZSAxMDpjb25zdCBjPXRoaXMuX2VzY0hhbmRsZXJzW3RoaXMuX2NvbGxlY3Q8PDh8cl07bGV0IGw9Yz9jLmxlbmd0aC0xOi0xO2Zvcig7bD49MCYmKHM9Y1tsXSgpLCEwIT09cyk7bC0tKWlmKHMgaW5zdGFuY2VvZiBQcm9taXNlKXJldHVybiB0aGlzLl9wcmVzZXJ2ZVN0YWNrKDQsYyxsLG4saSkscztsPDAmJnRoaXMuX2VzY0hhbmRsZXJGYih0aGlzLl9jb2xsZWN0PDw4fHIpLHRoaXMucHJlY2VkaW5nQ29kZXBvaW50PTA7YnJlYWs7Y2FzZSAxMTp0aGlzLl9wYXJhbXMucmVzZXQoKSx0aGlzLl9wYXJhbXMuYWRkUGFyYW0oMCksdGhpcy5fY29sbGVjdD0wO2JyZWFrO2Nhc2UgMTI6dGhpcy5fZGNzUGFyc2VyLmhvb2sodGhpcy5fY29sbGVjdDw8OHxyLHRoaXMuX3BhcmFtcyk7YnJlYWs7Y2FzZSAxMzpmb3IobGV0IHM9aSsxOzsrK3MpaWYocz49dHx8MjQ9PT0ocj1lW3NdKXx8MjY9PT1yfHwyNz09PXJ8fHI+MTI3JiZyPGgpe3RoaXMuX2Rjc1BhcnNlci5wdXQoZSxpLHMpLGk9cy0xO2JyZWFrfWJyZWFrO2Nhc2UgMTQ6aWYocz10aGlzLl9kY3NQYXJzZXIudW5ob29rKDI0IT09ciYmMjYhPT1yKSxzKXJldHVybiB0aGlzLl9wcmVzZXJ2ZVN0YWNrKDYsW10sMCxuLGkpLHM7Mjc9PT1yJiYobnw9MSksdGhpcy5fcGFyYW1zLnJlc2V0KCksdGhpcy5fcGFyYW1zLmFkZFBhcmFtKDApLHRoaXMuX2NvbGxlY3Q9MCx0aGlzLnByZWNlZGluZ0NvZGVwb2ludD0wO2JyZWFrO2Nhc2UgNDp0aGlzLl9vc2NQYXJzZXIuc3RhcnQoKTticmVhaztjYXNlIDU6Zm9yKGxldCBzPWkrMTs7cysrKWlmKHM+PXR8fChyPWVbc10pPDMyfHxyPjEyNyYmcjxoKXt0aGlzLl9vc2NQYXJzZXIucHV0KGUsaSxzKSxpPXMtMTticmVha31icmVhaztjYXNlIDY6aWYocz10aGlzLl9vc2NQYXJzZXIuZW5kKDI0IT09ciYmMjYhPT1yKSxzKXJldHVybiB0aGlzLl9wcmVzZXJ2ZVN0YWNrKDUsW10sMCxuLGkpLHM7Mjc9PT1yJiYobnw9MSksdGhpcy5fcGFyYW1zLnJlc2V0KCksdGhpcy5fcGFyYW1zLmFkZFBhcmFtKDApLHRoaXMuX2NvbGxlY3Q9MCx0aGlzLnByZWNlZGluZ0NvZGVwb2ludD0wfXRoaXMuY3VycmVudFN0YXRlPTE1Jm59fX10LkVzY2FwZVNlcXVlbmNlUGFyc2VyPWN9LDYyNDI6KGUsdCxpKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuT3NjSGFuZGxlcj10Lk9zY1BhcnNlcj12b2lkIDA7Y29uc3Qgcz1pKDU3NzApLHI9aSg0ODIpLG49W107dC5Pc2NQYXJzZXI9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLl9zdGF0ZT0wLHRoaXMuX2FjdGl2ZT1uLHRoaXMuX2lkPS0xLHRoaXMuX2hhbmRsZXJzPU9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5faGFuZGxlckZiPSgpPT57fSx0aGlzLl9zdGFjaz17cGF1c2VkOiExLGxvb3BQb3NpdGlvbjowLGZhbGxUaHJvdWdoOiExfX1yZWdpc3RlckhhbmRsZXIoZSx0KXt2b2lkIDA9PT10aGlzLl9oYW5kbGVyc1tlXSYmKHRoaXMuX2hhbmRsZXJzW2VdPVtdKTtjb25zdCBpPXRoaXMuX2hhbmRsZXJzW2VdO3JldHVybiBpLnB1c2godCkse2Rpc3Bvc2U6KCk9Pntjb25zdCBlPWkuaW5kZXhPZih0KTstMSE9PWUmJmkuc3BsaWNlKGUsMSl9fX1jbGVhckhhbmRsZXIoZSl7dGhpcy5faGFuZGxlcnNbZV0mJmRlbGV0ZSB0aGlzLl9oYW5kbGVyc1tlXX1zZXRIYW5kbGVyRmFsbGJhY2soZSl7dGhpcy5faGFuZGxlckZiPWV9ZGlzcG9zZSgpe3RoaXMuX2hhbmRsZXJzPU9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5faGFuZGxlckZiPSgpPT57fSx0aGlzLl9hY3RpdmU9bn1yZXNldCgpe2lmKDI9PT10aGlzLl9zdGF0ZSlmb3IobGV0IGU9dGhpcy5fc3RhY2sucGF1c2VkP3RoaXMuX3N0YWNrLmxvb3BQb3NpdGlvbi0xOnRoaXMuX2FjdGl2ZS5sZW5ndGgtMTtlPj0wOy0tZSl0aGlzLl9hY3RpdmVbZV0uZW5kKCExKTt0aGlzLl9zdGFjay5wYXVzZWQ9ITEsdGhpcy5fYWN0aXZlPW4sdGhpcy5faWQ9LTEsdGhpcy5fc3RhdGU9MH1fc3RhcnQoKXtpZih0aGlzLl9hY3RpdmU9dGhpcy5faGFuZGxlcnNbdGhpcy5faWRdfHxuLHRoaXMuX2FjdGl2ZS5sZW5ndGgpZm9yKGxldCBlPXRoaXMuX2FjdGl2ZS5sZW5ndGgtMTtlPj0wO2UtLSl0aGlzLl9hY3RpdmVbZV0uc3RhcnQoKTtlbHNlIHRoaXMuX2hhbmRsZXJGYih0aGlzLl9pZCxcIlNUQVJUXCIpfV9wdXQoZSx0LGkpe2lmKHRoaXMuX2FjdGl2ZS5sZW5ndGgpZm9yKGxldCBzPXRoaXMuX2FjdGl2ZS5sZW5ndGgtMTtzPj0wO3MtLSl0aGlzLl9hY3RpdmVbc10ucHV0KGUsdCxpKTtlbHNlIHRoaXMuX2hhbmRsZXJGYih0aGlzLl9pZCxcIlBVVFwiLCgwLHIudXRmMzJUb1N0cmluZykoZSx0LGkpKX1zdGFydCgpe3RoaXMucmVzZXQoKSx0aGlzLl9zdGF0ZT0xfXB1dChlLHQsaSl7aWYoMyE9PXRoaXMuX3N0YXRlKXtpZigxPT09dGhpcy5fc3RhdGUpZm9yKDt0PGk7KXtjb25zdCBpPWVbdCsrXTtpZig1OT09PWkpe3RoaXMuX3N0YXRlPTIsdGhpcy5fc3RhcnQoKTticmVha31pZihpPDQ4fHw1NzxpKXJldHVybiB2b2lkKHRoaXMuX3N0YXRlPTMpOy0xPT09dGhpcy5faWQmJih0aGlzLl9pZD0wKSx0aGlzLl9pZD0xMCp0aGlzLl9pZCtpLTQ4fTI9PT10aGlzLl9zdGF0ZSYmaS10PjAmJnRoaXMuX3B1dChlLHQsaSl9fWVuZChlLHQ9ITApe2lmKDAhPT10aGlzLl9zdGF0ZSl7aWYoMyE9PXRoaXMuX3N0YXRlKWlmKDE9PT10aGlzLl9zdGF0ZSYmdGhpcy5fc3RhcnQoKSx0aGlzLl9hY3RpdmUubGVuZ3RoKXtsZXQgaT0hMSxzPXRoaXMuX2FjdGl2ZS5sZW5ndGgtMSxyPSExO2lmKHRoaXMuX3N0YWNrLnBhdXNlZCYmKHM9dGhpcy5fc3RhY2subG9vcFBvc2l0aW9uLTEsaT10LHI9dGhpcy5fc3RhY2suZmFsbFRocm91Z2gsdGhpcy5fc3RhY2sucGF1c2VkPSExKSwhciYmITE9PT1pKXtmb3IoO3M+PTAmJihpPXRoaXMuX2FjdGl2ZVtzXS5lbmQoZSksITAhPT1pKTtzLS0paWYoaSBpbnN0YW5jZW9mIFByb21pc2UpcmV0dXJuIHRoaXMuX3N0YWNrLnBhdXNlZD0hMCx0aGlzLl9zdGFjay5sb29wUG9zaXRpb249cyx0aGlzLl9zdGFjay5mYWxsVGhyb3VnaD0hMSxpO3MtLX1mb3IoO3M+PTA7cy0tKWlmKGk9dGhpcy5fYWN0aXZlW3NdLmVuZCghMSksaSBpbnN0YW5jZW9mIFByb21pc2UpcmV0dXJuIHRoaXMuX3N0YWNrLnBhdXNlZD0hMCx0aGlzLl9zdGFjay5sb29wUG9zaXRpb249cyx0aGlzLl9zdGFjay5mYWxsVGhyb3VnaD0hMCxpfWVsc2UgdGhpcy5faGFuZGxlckZiKHRoaXMuX2lkLFwiRU5EXCIsZSk7dGhpcy5fYWN0aXZlPW4sdGhpcy5faWQ9LTEsdGhpcy5fc3RhdGU9MH19fSx0Lk9zY0hhbmRsZXI9Y2xhc3N7Y29uc3RydWN0b3IoZSl7dGhpcy5faGFuZGxlcj1lLHRoaXMuX2RhdGE9XCJcIix0aGlzLl9oaXRMaW1pdD0hMX1zdGFydCgpe3RoaXMuX2RhdGE9XCJcIix0aGlzLl9oaXRMaW1pdD0hMX1wdXQoZSx0LGkpe3RoaXMuX2hpdExpbWl0fHwodGhpcy5fZGF0YSs9KDAsci51dGYzMlRvU3RyaW5nKShlLHQsaSksdGhpcy5fZGF0YS5sZW5ndGg+cy5QQVlMT0FEX0xJTUlUJiYodGhpcy5fZGF0YT1cIlwiLHRoaXMuX2hpdExpbWl0PSEwKSl9ZW5kKGUpe2xldCB0PSExO2lmKHRoaXMuX2hpdExpbWl0KXQ9ITE7ZWxzZSBpZihlJiYodD10aGlzLl9oYW5kbGVyKHRoaXMuX2RhdGEpLHQgaW5zdGFuY2VvZiBQcm9taXNlKSlyZXR1cm4gdC50aGVuKChlPT4odGhpcy5fZGF0YT1cIlwiLHRoaXMuX2hpdExpbWl0PSExLGUpKSk7cmV0dXJuIHRoaXMuX2RhdGE9XCJcIix0aGlzLl9oaXRMaW1pdD0hMSx0fX19LDg3NDI6KGUsdCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LlBhcmFtcz12b2lkIDA7Y29uc3QgaT0yMTQ3NDgzNjQ3O2NsYXNzIHN7c3RhdGljIGZyb21BcnJheShlKXtjb25zdCB0PW5ldyBzO2lmKCFlLmxlbmd0aClyZXR1cm4gdDtmb3IobGV0IGk9QXJyYXkuaXNBcnJheShlWzBdKT8xOjA7aTxlLmxlbmd0aDsrK2kpe2NvbnN0IHM9ZVtpXTtpZihBcnJheS5pc0FycmF5KHMpKWZvcihsZXQgZT0wO2U8cy5sZW5ndGg7KytlKXQuYWRkU3ViUGFyYW0oc1tlXSk7ZWxzZSB0LmFkZFBhcmFtKHMpfXJldHVybiB0fWNvbnN0cnVjdG9yKGU9MzIsdD0zMil7aWYodGhpcy5tYXhMZW5ndGg9ZSx0aGlzLm1heFN1YlBhcmFtc0xlbmd0aD10LHQ+MjU2KXRocm93IG5ldyBFcnJvcihcIm1heFN1YlBhcmFtc0xlbmd0aCBtdXN0IG5vdCBiZSBncmVhdGVyIHRoYW4gMjU2XCIpO3RoaXMucGFyYW1zPW5ldyBJbnQzMkFycmF5KGUpLHRoaXMubGVuZ3RoPTAsdGhpcy5fc3ViUGFyYW1zPW5ldyBJbnQzMkFycmF5KHQpLHRoaXMuX3N1YlBhcmFtc0xlbmd0aD0wLHRoaXMuX3N1YlBhcmFtc0lkeD1uZXcgVWludDE2QXJyYXkoZSksdGhpcy5fcmVqZWN0RGlnaXRzPSExLHRoaXMuX3JlamVjdFN1YkRpZ2l0cz0hMSx0aGlzLl9kaWdpdElzU3ViPSExfWNsb25lKCl7Y29uc3QgZT1uZXcgcyh0aGlzLm1heExlbmd0aCx0aGlzLm1heFN1YlBhcmFtc0xlbmd0aCk7cmV0dXJuIGUucGFyYW1zLnNldCh0aGlzLnBhcmFtcyksZS5sZW5ndGg9dGhpcy5sZW5ndGgsZS5fc3ViUGFyYW1zLnNldCh0aGlzLl9zdWJQYXJhbXMpLGUuX3N1YlBhcmFtc0xlbmd0aD10aGlzLl9zdWJQYXJhbXNMZW5ndGgsZS5fc3ViUGFyYW1zSWR4LnNldCh0aGlzLl9zdWJQYXJhbXNJZHgpLGUuX3JlamVjdERpZ2l0cz10aGlzLl9yZWplY3REaWdpdHMsZS5fcmVqZWN0U3ViRGlnaXRzPXRoaXMuX3JlamVjdFN1YkRpZ2l0cyxlLl9kaWdpdElzU3ViPXRoaXMuX2RpZ2l0SXNTdWIsZX10b0FycmF5KCl7Y29uc3QgZT1bXTtmb3IobGV0IHQ9MDt0PHRoaXMubGVuZ3RoOysrdCl7ZS5wdXNoKHRoaXMucGFyYW1zW3RdKTtjb25zdCBpPXRoaXMuX3N1YlBhcmFtc0lkeFt0XT4+OCxzPTI1NSZ0aGlzLl9zdWJQYXJhbXNJZHhbdF07cy1pPjAmJmUucHVzaChBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0aGlzLl9zdWJQYXJhbXMsaSxzKSl9cmV0dXJuIGV9cmVzZXQoKXt0aGlzLmxlbmd0aD0wLHRoaXMuX3N1YlBhcmFtc0xlbmd0aD0wLHRoaXMuX3JlamVjdERpZ2l0cz0hMSx0aGlzLl9yZWplY3RTdWJEaWdpdHM9ITEsdGhpcy5fZGlnaXRJc1N1Yj0hMX1hZGRQYXJhbShlKXtpZih0aGlzLl9kaWdpdElzU3ViPSExLHRoaXMubGVuZ3RoPj10aGlzLm1heExlbmd0aCl0aGlzLl9yZWplY3REaWdpdHM9ITA7ZWxzZXtpZihlPC0xKXRocm93IG5ldyBFcnJvcihcInZhbHVlcyBsZXNzZXIgdGhhbiAtMSBhcmUgbm90IGFsbG93ZWRcIik7dGhpcy5fc3ViUGFyYW1zSWR4W3RoaXMubGVuZ3RoXT10aGlzLl9zdWJQYXJhbXNMZW5ndGg8PDh8dGhpcy5fc3ViUGFyYW1zTGVuZ3RoLHRoaXMucGFyYW1zW3RoaXMubGVuZ3RoKytdPWU+aT9pOmV9fWFkZFN1YlBhcmFtKGUpe2lmKHRoaXMuX2RpZ2l0SXNTdWI9ITAsdGhpcy5sZW5ndGgpaWYodGhpcy5fcmVqZWN0RGlnaXRzfHx0aGlzLl9zdWJQYXJhbXNMZW5ndGg+PXRoaXMubWF4U3ViUGFyYW1zTGVuZ3RoKXRoaXMuX3JlamVjdFN1YkRpZ2l0cz0hMDtlbHNle2lmKGU8LTEpdGhyb3cgbmV3IEVycm9yKFwidmFsdWVzIGxlc3NlciB0aGFuIC0xIGFyZSBub3QgYWxsb3dlZFwiKTt0aGlzLl9zdWJQYXJhbXNbdGhpcy5fc3ViUGFyYW1zTGVuZ3RoKytdPWU+aT9pOmUsdGhpcy5fc3ViUGFyYW1zSWR4W3RoaXMubGVuZ3RoLTFdKyt9fWhhc1N1YlBhcmFtcyhlKXtyZXR1cm4oMjU1JnRoaXMuX3N1YlBhcmFtc0lkeFtlXSktKHRoaXMuX3N1YlBhcmFtc0lkeFtlXT4+OCk+MH1nZXRTdWJQYXJhbXMoZSl7Y29uc3QgdD10aGlzLl9zdWJQYXJhbXNJZHhbZV0+PjgsaT0yNTUmdGhpcy5fc3ViUGFyYW1zSWR4W2VdO3JldHVybiBpLXQ+MD90aGlzLl9zdWJQYXJhbXMuc3ViYXJyYXkodCxpKTpudWxsfWdldFN1YlBhcmFtc0FsbCgpe2NvbnN0IGU9e307Zm9yKGxldCB0PTA7dDx0aGlzLmxlbmd0aDsrK3Qpe2NvbnN0IGk9dGhpcy5fc3ViUGFyYW1zSWR4W3RdPj44LHM9MjU1JnRoaXMuX3N1YlBhcmFtc0lkeFt0XTtzLWk+MCYmKGVbdF09dGhpcy5fc3ViUGFyYW1zLnNsaWNlKGkscykpfXJldHVybiBlfWFkZERpZ2l0KGUpe2xldCB0O2lmKHRoaXMuX3JlamVjdERpZ2l0c3x8ISh0PXRoaXMuX2RpZ2l0SXNTdWI/dGhpcy5fc3ViUGFyYW1zTGVuZ3RoOnRoaXMubGVuZ3RoKXx8dGhpcy5fZGlnaXRJc1N1YiYmdGhpcy5fcmVqZWN0U3ViRGlnaXRzKXJldHVybjtjb25zdCBzPXRoaXMuX2RpZ2l0SXNTdWI/dGhpcy5fc3ViUGFyYW1zOnRoaXMucGFyYW1zLHI9c1t0LTFdO3NbdC0xXT1+cj9NYXRoLm1pbigxMCpyK2UsaSk6ZX19dC5QYXJhbXM9c30sNTc0MTooZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuQWRkb25NYW5hZ2VyPXZvaWQgMCx0LkFkZG9uTWFuYWdlcj1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMuX2FkZG9ucz1bXX1kaXNwb3NlKCl7Zm9yKGxldCBlPXRoaXMuX2FkZG9ucy5sZW5ndGgtMTtlPj0wO2UtLSl0aGlzLl9hZGRvbnNbZV0uaW5zdGFuY2UuZGlzcG9zZSgpfWxvYWRBZGRvbihlLHQpe2NvbnN0IGk9e2luc3RhbmNlOnQsZGlzcG9zZTp0LmRpc3Bvc2UsaXNEaXNwb3NlZDohMX07dGhpcy5fYWRkb25zLnB1c2goaSksdC5kaXNwb3NlPSgpPT50aGlzLl93cmFwcGVkQWRkb25EaXNwb3NlKGkpLHQuYWN0aXZhdGUoZSl9X3dyYXBwZWRBZGRvbkRpc3Bvc2UoZSl7aWYoZS5pc0Rpc3Bvc2VkKXJldHVybjtsZXQgdD0tMTtmb3IobGV0IGk9MDtpPHRoaXMuX2FkZG9ucy5sZW5ndGg7aSsrKWlmKHRoaXMuX2FkZG9uc1tpXT09PWUpe3Q9aTticmVha31pZigtMT09PXQpdGhyb3cgbmV3IEVycm9yKFwiQ291bGQgbm90IGRpc3Bvc2UgYW4gYWRkb24gdGhhdCBoYXMgbm90IGJlZW4gbG9hZGVkXCIpO2UuaXNEaXNwb3NlZD0hMCxlLmRpc3Bvc2UuYXBwbHkoZS5pbnN0YW5jZSksdGhpcy5fYWRkb25zLnNwbGljZSh0LDEpfX19LDg3NzE6KGUsdCxpKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuQnVmZmVyQXBpVmlldz12b2lkIDA7Y29uc3Qgcz1pKDM3ODUpLHI9aSg1MTEpO3QuQnVmZmVyQXBpVmlldz1jbGFzc3tjb25zdHJ1Y3RvcihlLHQpe3RoaXMuX2J1ZmZlcj1lLHRoaXMudHlwZT10fWluaXQoZSl7cmV0dXJuIHRoaXMuX2J1ZmZlcj1lLHRoaXN9Z2V0IGN1cnNvclkoKXtyZXR1cm4gdGhpcy5fYnVmZmVyLnl9Z2V0IGN1cnNvclgoKXtyZXR1cm4gdGhpcy5fYnVmZmVyLnh9Z2V0IHZpZXdwb3J0WSgpe3JldHVybiB0aGlzLl9idWZmZXIueWRpc3B9Z2V0IGJhc2VZKCl7cmV0dXJuIHRoaXMuX2J1ZmZlci55YmFzZX1nZXQgbGVuZ3RoKCl7cmV0dXJuIHRoaXMuX2J1ZmZlci5saW5lcy5sZW5ndGh9Z2V0TGluZShlKXtjb25zdCB0PXRoaXMuX2J1ZmZlci5saW5lcy5nZXQoZSk7aWYodClyZXR1cm4gbmV3IHMuQnVmZmVyTGluZUFwaVZpZXcodCl9Z2V0TnVsbENlbGwoKXtyZXR1cm4gbmV3IHIuQ2VsbERhdGF9fX0sMzc4NTooZSx0LGkpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5CdWZmZXJMaW5lQXBpVmlldz12b2lkIDA7Y29uc3Qgcz1pKDUxMSk7dC5CdWZmZXJMaW5lQXBpVmlldz1jbGFzc3tjb25zdHJ1Y3RvcihlKXt0aGlzLl9saW5lPWV9Z2V0IGlzV3JhcHBlZCgpe3JldHVybiB0aGlzLl9saW5lLmlzV3JhcHBlZH1nZXQgbGVuZ3RoKCl7cmV0dXJuIHRoaXMuX2xpbmUubGVuZ3RofWdldENlbGwoZSx0KXtpZighKGU8MHx8ZT49dGhpcy5fbGluZS5sZW5ndGgpKXJldHVybiB0Pyh0aGlzLl9saW5lLmxvYWRDZWxsKGUsdCksdCk6dGhpcy5fbGluZS5sb2FkQ2VsbChlLG5ldyBzLkNlbGxEYXRhKX10cmFuc2xhdGVUb1N0cmluZyhlLHQsaSl7cmV0dXJuIHRoaXMuX2xpbmUudHJhbnNsYXRlVG9TdHJpbmcoZSx0LGkpfX19LDgyODU6KGUsdCxpKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuQnVmZmVyTmFtZXNwYWNlQXBpPXZvaWQgMDtjb25zdCBzPWkoODc3MSkscj1pKDg0NjApLG49aSg4NDQpO2NsYXNzIG8gZXh0ZW5kcyBuLkRpc3Bvc2FibGV7Y29uc3RydWN0b3IoZSl7c3VwZXIoKSx0aGlzLl9jb3JlPWUsdGhpcy5fb25CdWZmZXJDaGFuZ2U9dGhpcy5yZWdpc3RlcihuZXcgci5FdmVudEVtaXR0ZXIpLHRoaXMub25CdWZmZXJDaGFuZ2U9dGhpcy5fb25CdWZmZXJDaGFuZ2UuZXZlbnQsdGhpcy5fbm9ybWFsPW5ldyBzLkJ1ZmZlckFwaVZpZXcodGhpcy5fY29yZS5idWZmZXJzLm5vcm1hbCxcIm5vcm1hbFwiKSx0aGlzLl9hbHRlcm5hdGU9bmV3IHMuQnVmZmVyQXBpVmlldyh0aGlzLl9jb3JlLmJ1ZmZlcnMuYWx0LFwiYWx0ZXJuYXRlXCIpLHRoaXMuX2NvcmUuYnVmZmVycy5vbkJ1ZmZlckFjdGl2YXRlKCgoKT0+dGhpcy5fb25CdWZmZXJDaGFuZ2UuZmlyZSh0aGlzLmFjdGl2ZSkpKX1nZXQgYWN0aXZlKCl7aWYodGhpcy5fY29yZS5idWZmZXJzLmFjdGl2ZT09PXRoaXMuX2NvcmUuYnVmZmVycy5ub3JtYWwpcmV0dXJuIHRoaXMubm9ybWFsO2lmKHRoaXMuX2NvcmUuYnVmZmVycy5hY3RpdmU9PT10aGlzLl9jb3JlLmJ1ZmZlcnMuYWx0KXJldHVybiB0aGlzLmFsdGVybmF0ZTt0aHJvdyBuZXcgRXJyb3IoXCJBY3RpdmUgYnVmZmVyIGlzIG5laXRoZXIgbm9ybWFsIG5vciBhbHRlcm5hdGVcIil9Z2V0IG5vcm1hbCgpe3JldHVybiB0aGlzLl9ub3JtYWwuaW5pdCh0aGlzLl9jb3JlLmJ1ZmZlcnMubm9ybWFsKX1nZXQgYWx0ZXJuYXRlKCl7cmV0dXJuIHRoaXMuX2FsdGVybmF0ZS5pbml0KHRoaXMuX2NvcmUuYnVmZmVycy5hbHQpfX10LkJ1ZmZlck5hbWVzcGFjZUFwaT1vfSw3OTc1OihlLHQpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5QYXJzZXJBcGk9dm9pZCAwLHQuUGFyc2VyQXBpPWNsYXNze2NvbnN0cnVjdG9yKGUpe3RoaXMuX2NvcmU9ZX1yZWdpc3RlckNzaUhhbmRsZXIoZSx0KXtyZXR1cm4gdGhpcy5fY29yZS5yZWdpc3RlckNzaUhhbmRsZXIoZSwoZT0+dChlLnRvQXJyYXkoKSkpKX1hZGRDc2lIYW5kbGVyKGUsdCl7cmV0dXJuIHRoaXMucmVnaXN0ZXJDc2lIYW5kbGVyKGUsdCl9cmVnaXN0ZXJEY3NIYW5kbGVyKGUsdCl7cmV0dXJuIHRoaXMuX2NvcmUucmVnaXN0ZXJEY3NIYW5kbGVyKGUsKChlLGkpPT50KGUsaS50b0FycmF5KCkpKSl9YWRkRGNzSGFuZGxlcihlLHQpe3JldHVybiB0aGlzLnJlZ2lzdGVyRGNzSGFuZGxlcihlLHQpfXJlZ2lzdGVyRXNjSGFuZGxlcihlLHQpe3JldHVybiB0aGlzLl9jb3JlLnJlZ2lzdGVyRXNjSGFuZGxlcihlLHQpfWFkZEVzY0hhbmRsZXIoZSx0KXtyZXR1cm4gdGhpcy5yZWdpc3RlckVzY0hhbmRsZXIoZSx0KX1yZWdpc3Rlck9zY0hhbmRsZXIoZSx0KXtyZXR1cm4gdGhpcy5fY29yZS5yZWdpc3Rlck9zY0hhbmRsZXIoZSx0KX1hZGRPc2NIYW5kbGVyKGUsdCl7cmV0dXJuIHRoaXMucmVnaXN0ZXJPc2NIYW5kbGVyKGUsdCl9fX0sNzA5MDooZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuVW5pY29kZUFwaT12b2lkIDAsdC5Vbmljb2RlQXBpPWNsYXNze2NvbnN0cnVjdG9yKGUpe3RoaXMuX2NvcmU9ZX1yZWdpc3RlcihlKXt0aGlzLl9jb3JlLnVuaWNvZGVTZXJ2aWNlLnJlZ2lzdGVyKGUpfWdldCB2ZXJzaW9ucygpe3JldHVybiB0aGlzLl9jb3JlLnVuaWNvZGVTZXJ2aWNlLnZlcnNpb25zfWdldCBhY3RpdmVWZXJzaW9uKCl7cmV0dXJuIHRoaXMuX2NvcmUudW5pY29kZVNlcnZpY2UuYWN0aXZlVmVyc2lvbn1zZXQgYWN0aXZlVmVyc2lvbihlKXt0aGlzLl9jb3JlLnVuaWNvZGVTZXJ2aWNlLmFjdGl2ZVZlcnNpb249ZX19fSw3NDQ6ZnVuY3Rpb24oZSx0LGkpe3ZhciBzPXRoaXMmJnRoaXMuX19kZWNvcmF0ZXx8ZnVuY3Rpb24oZSx0LGkscyl7dmFyIHIsbj1hcmd1bWVudHMubGVuZ3RoLG89bjwzP3Q6bnVsbD09PXM/cz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsaSk6cztpZihcIm9iamVjdFwiPT10eXBlb2YgUmVmbGVjdCYmXCJmdW5jdGlvblwiPT10eXBlb2YgUmVmbGVjdC5kZWNvcmF0ZSlvPVJlZmxlY3QuZGVjb3JhdGUoZSx0LGkscyk7ZWxzZSBmb3IodmFyIGE9ZS5sZW5ndGgtMTthPj0wO2EtLSkocj1lW2FdKSYmKG89KG48Mz9yKG8pOm4+Mz9yKHQsaSxvKTpyKHQsaSkpfHxvKTtyZXR1cm4gbj4zJiZvJiZPYmplY3QuZGVmaW5lUHJvcGVydHkodCxpLG8pLG99LHI9dGhpcyYmdGhpcy5fX3BhcmFtfHxmdW5jdGlvbihlLHQpe3JldHVybiBmdW5jdGlvbihpLHMpe3QoaSxzLGUpfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5CdWZmZXJTZXJ2aWNlPXQuTUlOSU1VTV9ST1dTPXQuTUlOSU1VTV9DT0xTPXZvaWQgMDtjb25zdCBuPWkoODQ2MCksbz1pKDg0NCksYT1pKDUyOTUpLGg9aSgyNTg1KTt0Lk1JTklNVU1fQ09MUz0yLHQuTUlOSU1VTV9ST1dTPTE7bGV0IGM9dC5CdWZmZXJTZXJ2aWNlPWNsYXNzIGV4dGVuZHMgby5EaXNwb3NhYmxle2dldCBidWZmZXIoKXtyZXR1cm4gdGhpcy5idWZmZXJzLmFjdGl2ZX1jb25zdHJ1Y3RvcihlKXtzdXBlcigpLHRoaXMuaXNVc2VyU2Nyb2xsaW5nPSExLHRoaXMuX29uUmVzaXplPXRoaXMucmVnaXN0ZXIobmV3IG4uRXZlbnRFbWl0dGVyKSx0aGlzLm9uUmVzaXplPXRoaXMuX29uUmVzaXplLmV2ZW50LHRoaXMuX29uU2Nyb2xsPXRoaXMucmVnaXN0ZXIobmV3IG4uRXZlbnRFbWl0dGVyKSx0aGlzLm9uU2Nyb2xsPXRoaXMuX29uU2Nyb2xsLmV2ZW50LHRoaXMuY29scz1NYXRoLm1heChlLnJhd09wdGlvbnMuY29sc3x8MCx0Lk1JTklNVU1fQ09MUyksdGhpcy5yb3dzPU1hdGgubWF4KGUucmF3T3B0aW9ucy5yb3dzfHwwLHQuTUlOSU1VTV9ST1dTKSx0aGlzLmJ1ZmZlcnM9dGhpcy5yZWdpc3RlcihuZXcgYS5CdWZmZXJTZXQoZSx0aGlzKSl9cmVzaXplKGUsdCl7dGhpcy5jb2xzPWUsdGhpcy5yb3dzPXQsdGhpcy5idWZmZXJzLnJlc2l6ZShlLHQpLHRoaXMuX29uUmVzaXplLmZpcmUoe2NvbHM6ZSxyb3dzOnR9KX1yZXNldCgpe3RoaXMuYnVmZmVycy5yZXNldCgpLHRoaXMuaXNVc2VyU2Nyb2xsaW5nPSExfXNjcm9sbChlLHQ9ITEpe2NvbnN0IGk9dGhpcy5idWZmZXI7bGV0IHM7cz10aGlzLl9jYWNoZWRCbGFua0xpbmUscyYmcy5sZW5ndGg9PT10aGlzLmNvbHMmJnMuZ2V0RmcoMCk9PT1lLmZnJiZzLmdldEJnKDApPT09ZS5iZ3x8KHM9aS5nZXRCbGFua0xpbmUoZSx0KSx0aGlzLl9jYWNoZWRCbGFua0xpbmU9cykscy5pc1dyYXBwZWQ9dDtjb25zdCByPWkueWJhc2UraS5zY3JvbGxUb3Asbj1pLnliYXNlK2kuc2Nyb2xsQm90dG9tO2lmKDA9PT1pLnNjcm9sbFRvcCl7Y29uc3QgZT1pLmxpbmVzLmlzRnVsbDtuPT09aS5saW5lcy5sZW5ndGgtMT9lP2kubGluZXMucmVjeWNsZSgpLmNvcHlGcm9tKHMpOmkubGluZXMucHVzaChzLmNsb25lKCkpOmkubGluZXMuc3BsaWNlKG4rMSwwLHMuY2xvbmUoKSksZT90aGlzLmlzVXNlclNjcm9sbGluZyYmKGkueWRpc3A9TWF0aC5tYXgoaS55ZGlzcC0xLDApKTooaS55YmFzZSsrLHRoaXMuaXNVc2VyU2Nyb2xsaW5nfHxpLnlkaXNwKyspfWVsc2V7Y29uc3QgZT1uLXIrMTtpLmxpbmVzLnNoaWZ0RWxlbWVudHMocisxLGUtMSwtMSksaS5saW5lcy5zZXQobixzLmNsb25lKCkpfXRoaXMuaXNVc2VyU2Nyb2xsaW5nfHwoaS55ZGlzcD1pLnliYXNlKSx0aGlzLl9vblNjcm9sbC5maXJlKGkueWRpc3ApfXNjcm9sbExpbmVzKGUsdCxpKXtjb25zdCBzPXRoaXMuYnVmZmVyO2lmKGU8MCl7aWYoMD09PXMueWRpc3ApcmV0dXJuO3RoaXMuaXNVc2VyU2Nyb2xsaW5nPSEwfWVsc2UgZStzLnlkaXNwPj1zLnliYXNlJiYodGhpcy5pc1VzZXJTY3JvbGxpbmc9ITEpO2NvbnN0IHI9cy55ZGlzcDtzLnlkaXNwPU1hdGgubWF4KE1hdGgubWluKHMueWRpc3ArZSxzLnliYXNlKSwwKSxyIT09cy55ZGlzcCYmKHR8fHRoaXMuX29uU2Nyb2xsLmZpcmUocy55ZGlzcCkpfX07dC5CdWZmZXJTZXJ2aWNlPWM9cyhbcigwLGguSU9wdGlvbnNTZXJ2aWNlKV0sYyl9LDc5OTQ6KGUsdCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkNoYXJzZXRTZXJ2aWNlPXZvaWQgMCx0LkNoYXJzZXRTZXJ2aWNlPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5nbGV2ZWw9MCx0aGlzLl9jaGFyc2V0cz1bXX1yZXNldCgpe3RoaXMuY2hhcnNldD12b2lkIDAsdGhpcy5fY2hhcnNldHM9W10sdGhpcy5nbGV2ZWw9MH1zZXRnTGV2ZWwoZSl7dGhpcy5nbGV2ZWw9ZSx0aGlzLmNoYXJzZXQ9dGhpcy5fY2hhcnNldHNbZV19c2V0Z0NoYXJzZXQoZSx0KXt0aGlzLl9jaGFyc2V0c1tlXT10LHRoaXMuZ2xldmVsPT09ZSYmKHRoaXMuY2hhcnNldD10KX19fSwxNzUzOmZ1bmN0aW9uKGUsdCxpKXt2YXIgcz10aGlzJiZ0aGlzLl9fZGVjb3JhdGV8fGZ1bmN0aW9uKGUsdCxpLHMpe3ZhciByLG49YXJndW1lbnRzLmxlbmd0aCxvPW48Mz90Om51bGw9PT1zP3M9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LGkpOnM7aWYoXCJvYmplY3RcIj09dHlwZW9mIFJlZmxlY3QmJlwiZnVuY3Rpb25cIj09dHlwZW9mIFJlZmxlY3QuZGVjb3JhdGUpbz1SZWZsZWN0LmRlY29yYXRlKGUsdCxpLHMpO2Vsc2UgZm9yKHZhciBhPWUubGVuZ3RoLTE7YT49MDthLS0pKHI9ZVthXSkmJihvPShuPDM/cihvKTpuPjM/cih0LGksbyk6cih0LGkpKXx8byk7cmV0dXJuIG4+MyYmbyYmT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsaSxvKSxvfSxyPXRoaXMmJnRoaXMuX19wYXJhbXx8ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZnVuY3Rpb24oaSxzKXt0KGkscyxlKX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuQ29yZU1vdXNlU2VydmljZT12b2lkIDA7Y29uc3Qgbj1pKDI1ODUpLG89aSg4NDYwKSxhPWkoODQ0KSxoPXtOT05FOntldmVudHM6MCxyZXN0cmljdDooKT0+ITF9LFgxMDp7ZXZlbnRzOjEscmVzdHJpY3Q6ZT0+NCE9PWUuYnV0dG9uJiYxPT09ZS5hY3Rpb24mJihlLmN0cmw9ITEsZS5hbHQ9ITEsZS5zaGlmdD0hMSwhMCl9LFZUMjAwOntldmVudHM6MTkscmVzdHJpY3Q6ZT0+MzIhPT1lLmFjdGlvbn0sRFJBRzp7ZXZlbnRzOjIzLHJlc3RyaWN0OmU9PjMyIT09ZS5hY3Rpb258fDMhPT1lLmJ1dHRvbn0sQU5ZOntldmVudHM6MzEscmVzdHJpY3Q6ZT0+ITB9fTtmdW5jdGlvbiBjKGUsdCl7bGV0IGk9KGUuY3RybD8xNjowKXwoZS5zaGlmdD80OjApfChlLmFsdD84OjApO3JldHVybiA0PT09ZS5idXR0b24/KGl8PTY0LGl8PWUuYWN0aW9uKTooaXw9MyZlLmJ1dHRvbiw0JmUuYnV0dG9uJiYoaXw9NjQpLDgmZS5idXR0b24mJihpfD0xMjgpLDMyPT09ZS5hY3Rpb24/aXw9MzI6MCE9PWUuYWN0aW9ufHx0fHwoaXw9MykpLGl9Y29uc3QgbD1TdHJpbmcuZnJvbUNoYXJDb2RlLGQ9e0RFRkFVTFQ6ZT0+e2NvbnN0IHQ9W2MoZSwhMSkrMzIsZS5jb2wrMzIsZS5yb3crMzJdO3JldHVybiB0WzBdPjI1NXx8dFsxXT4yNTV8fHRbMl0+MjU1P1wiXCI6YFx1MDAxYltNJHtsKHRbMF0pfSR7bCh0WzFdKX0ke2wodFsyXSl9YH0sU0dSOmU9Pntjb25zdCB0PTA9PT1lLmFjdGlvbiYmNCE9PWUuYnV0dG9uP1wibVwiOlwiTVwiO3JldHVybmBcdTAwMWJbPCR7YyhlLCEwKX07JHtlLmNvbH07JHtlLnJvd30ke3R9YH0sU0dSX1BJWEVMUzplPT57Y29uc3QgdD0wPT09ZS5hY3Rpb24mJjQhPT1lLmJ1dHRvbj9cIm1cIjpcIk1cIjtyZXR1cm5gXHUwMDFiWzwke2MoZSwhMCl9OyR7ZS54fTske2UueX0ke3R9YH19O2xldCBfPXQuQ29yZU1vdXNlU2VydmljZT1jbGFzcyBleHRlbmRzIGEuRGlzcG9zYWJsZXtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKCksdGhpcy5fYnVmZmVyU2VydmljZT1lLHRoaXMuX2NvcmVTZXJ2aWNlPXQsdGhpcy5fcHJvdG9jb2xzPXt9LHRoaXMuX2VuY29kaW5ncz17fSx0aGlzLl9hY3RpdmVQcm90b2NvbD1cIlwiLHRoaXMuX2FjdGl2ZUVuY29kaW5nPVwiXCIsdGhpcy5fbGFzdEV2ZW50PW51bGwsdGhpcy5fb25Qcm90b2NvbENoYW5nZT10aGlzLnJlZ2lzdGVyKG5ldyBvLkV2ZW50RW1pdHRlciksdGhpcy5vblByb3RvY29sQ2hhbmdlPXRoaXMuX29uUHJvdG9jb2xDaGFuZ2UuZXZlbnQ7Zm9yKGNvbnN0IGUgb2YgT2JqZWN0LmtleXMoaCkpdGhpcy5hZGRQcm90b2NvbChlLGhbZV0pO2Zvcihjb25zdCBlIG9mIE9iamVjdC5rZXlzKGQpKXRoaXMuYWRkRW5jb2RpbmcoZSxkW2VdKTt0aGlzLnJlc2V0KCl9YWRkUHJvdG9jb2woZSx0KXt0aGlzLl9wcm90b2NvbHNbZV09dH1hZGRFbmNvZGluZyhlLHQpe3RoaXMuX2VuY29kaW5nc1tlXT10fWdldCBhY3RpdmVQcm90b2NvbCgpe3JldHVybiB0aGlzLl9hY3RpdmVQcm90b2NvbH1nZXQgYXJlTW91c2VFdmVudHNBY3RpdmUoKXtyZXR1cm4gMCE9PXRoaXMuX3Byb3RvY29sc1t0aGlzLl9hY3RpdmVQcm90b2NvbF0uZXZlbnRzfXNldCBhY3RpdmVQcm90b2NvbChlKXtpZighdGhpcy5fcHJvdG9jb2xzW2VdKXRocm93IG5ldyBFcnJvcihgdW5rbm93biBwcm90b2NvbCBcIiR7ZX1cImApO3RoaXMuX2FjdGl2ZVByb3RvY29sPWUsdGhpcy5fb25Qcm90b2NvbENoYW5nZS5maXJlKHRoaXMuX3Byb3RvY29sc1tlXS5ldmVudHMpfWdldCBhY3RpdmVFbmNvZGluZygpe3JldHVybiB0aGlzLl9hY3RpdmVFbmNvZGluZ31zZXQgYWN0aXZlRW5jb2RpbmcoZSl7aWYoIXRoaXMuX2VuY29kaW5nc1tlXSl0aHJvdyBuZXcgRXJyb3IoYHVua25vd24gZW5jb2RpbmcgXCIke2V9XCJgKTt0aGlzLl9hY3RpdmVFbmNvZGluZz1lfXJlc2V0KCl7dGhpcy5hY3RpdmVQcm90b2NvbD1cIk5PTkVcIix0aGlzLmFjdGl2ZUVuY29kaW5nPVwiREVGQVVMVFwiLHRoaXMuX2xhc3RFdmVudD1udWxsfXRyaWdnZXJNb3VzZUV2ZW50KGUpe2lmKGUuY29sPDB8fGUuY29sPj10aGlzLl9idWZmZXJTZXJ2aWNlLmNvbHN8fGUucm93PDB8fGUucm93Pj10aGlzLl9idWZmZXJTZXJ2aWNlLnJvd3MpcmV0dXJuITE7aWYoND09PWUuYnV0dG9uJiYzMj09PWUuYWN0aW9uKXJldHVybiExO2lmKDM9PT1lLmJ1dHRvbiYmMzIhPT1lLmFjdGlvbilyZXR1cm4hMTtpZig0IT09ZS5idXR0b24mJigyPT09ZS5hY3Rpb258fDM9PT1lLmFjdGlvbikpcmV0dXJuITE7aWYoZS5jb2wrKyxlLnJvdysrLDMyPT09ZS5hY3Rpb24mJnRoaXMuX2xhc3RFdmVudCYmdGhpcy5fZXF1YWxFdmVudHModGhpcy5fbGFzdEV2ZW50LGUsXCJTR1JfUElYRUxTXCI9PT10aGlzLl9hY3RpdmVFbmNvZGluZykpcmV0dXJuITE7aWYoIXRoaXMuX3Byb3RvY29sc1t0aGlzLl9hY3RpdmVQcm90b2NvbF0ucmVzdHJpY3QoZSkpcmV0dXJuITE7Y29uc3QgdD10aGlzLl9lbmNvZGluZ3NbdGhpcy5fYWN0aXZlRW5jb2RpbmddKGUpO3JldHVybiB0JiYoXCJERUZBVUxUXCI9PT10aGlzLl9hY3RpdmVFbmNvZGluZz90aGlzLl9jb3JlU2VydmljZS50cmlnZ2VyQmluYXJ5RXZlbnQodCk6dGhpcy5fY29yZVNlcnZpY2UudHJpZ2dlckRhdGFFdmVudCh0LCEwKSksdGhpcy5fbGFzdEV2ZW50PWUsITB9ZXhwbGFpbkV2ZW50cyhlKXtyZXR1cm57ZG93bjohISgxJmUpLHVwOiEhKDImZSksZHJhZzohISg0JmUpLG1vdmU6ISEoOCZlKSx3aGVlbDohISgxNiZlKX19X2VxdWFsRXZlbnRzKGUsdCxpKXtpZihpKXtpZihlLnghPT10LngpcmV0dXJuITE7aWYoZS55IT09dC55KXJldHVybiExfWVsc2V7aWYoZS5jb2whPT10LmNvbClyZXR1cm4hMTtpZihlLnJvdyE9PXQucm93KXJldHVybiExfXJldHVybiBlLmJ1dHRvbj09PXQuYnV0dG9uJiZlLmFjdGlvbj09PXQuYWN0aW9uJiZlLmN0cmw9PT10LmN0cmwmJmUuYWx0PT09dC5hbHQmJmUuc2hpZnQ9PT10LnNoaWZ0fX07dC5Db3JlTW91c2VTZXJ2aWNlPV89cyhbcigwLG4uSUJ1ZmZlclNlcnZpY2UpLHIoMSxuLklDb3JlU2VydmljZSldLF8pfSw2OTc1OmZ1bmN0aW9uKGUsdCxpKXt2YXIgcz10aGlzJiZ0aGlzLl9fZGVjb3JhdGV8fGZ1bmN0aW9uKGUsdCxpLHMpe3ZhciByLG49YXJndW1lbnRzLmxlbmd0aCxvPW48Mz90Om51bGw9PT1zP3M9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LGkpOnM7aWYoXCJvYmplY3RcIj09dHlwZW9mIFJlZmxlY3QmJlwiZnVuY3Rpb25cIj09dHlwZW9mIFJlZmxlY3QuZGVjb3JhdGUpbz1SZWZsZWN0LmRlY29yYXRlKGUsdCxpLHMpO2Vsc2UgZm9yKHZhciBhPWUubGVuZ3RoLTE7YT49MDthLS0pKHI9ZVthXSkmJihvPShuPDM/cihvKTpuPjM/cih0LGksbyk6cih0LGkpKXx8byk7cmV0dXJuIG4+MyYmbyYmT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsaSxvKSxvfSxyPXRoaXMmJnRoaXMuX19wYXJhbXx8ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZnVuY3Rpb24oaSxzKXt0KGkscyxlKX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuQ29yZVNlcnZpY2U9dm9pZCAwO2NvbnN0IG49aSgxNDM5KSxvPWkoODQ2MCksYT1pKDg0NCksaD1pKDI1ODUpLGM9T2JqZWN0LmZyZWV6ZSh7aW5zZXJ0TW9kZTohMX0pLGw9T2JqZWN0LmZyZWV6ZSh7YXBwbGljYXRpb25DdXJzb3JLZXlzOiExLGFwcGxpY2F0aW9uS2V5cGFkOiExLGJyYWNrZXRlZFBhc3RlTW9kZTohMSxvcmlnaW46ITEscmV2ZXJzZVdyYXBhcm91bmQ6ITEsc2VuZEZvY3VzOiExLHdyYXBhcm91bmQ6ITB9KTtsZXQgZD10LkNvcmVTZXJ2aWNlPWNsYXNzIGV4dGVuZHMgYS5EaXNwb3NhYmxle2NvbnN0cnVjdG9yKGUsdCxpKXtzdXBlcigpLHRoaXMuX2J1ZmZlclNlcnZpY2U9ZSx0aGlzLl9sb2dTZXJ2aWNlPXQsdGhpcy5fb3B0aW9uc1NlcnZpY2U9aSx0aGlzLmlzQ3Vyc29ySW5pdGlhbGl6ZWQ9ITEsdGhpcy5pc0N1cnNvckhpZGRlbj0hMSx0aGlzLl9vbkRhdGE9dGhpcy5yZWdpc3RlcihuZXcgby5FdmVudEVtaXR0ZXIpLHRoaXMub25EYXRhPXRoaXMuX29uRGF0YS5ldmVudCx0aGlzLl9vblVzZXJJbnB1dD10aGlzLnJlZ2lzdGVyKG5ldyBvLkV2ZW50RW1pdHRlciksdGhpcy5vblVzZXJJbnB1dD10aGlzLl9vblVzZXJJbnB1dC5ldmVudCx0aGlzLl9vbkJpbmFyeT10aGlzLnJlZ2lzdGVyKG5ldyBvLkV2ZW50RW1pdHRlciksdGhpcy5vbkJpbmFyeT10aGlzLl9vbkJpbmFyeS5ldmVudCx0aGlzLl9vblJlcXVlc3RTY3JvbGxUb0JvdHRvbT10aGlzLnJlZ2lzdGVyKG5ldyBvLkV2ZW50RW1pdHRlciksdGhpcy5vblJlcXVlc3RTY3JvbGxUb0JvdHRvbT10aGlzLl9vblJlcXVlc3RTY3JvbGxUb0JvdHRvbS5ldmVudCx0aGlzLm1vZGVzPSgwLG4uY2xvbmUpKGMpLHRoaXMuZGVjUHJpdmF0ZU1vZGVzPSgwLG4uY2xvbmUpKGwpfXJlc2V0KCl7dGhpcy5tb2Rlcz0oMCxuLmNsb25lKShjKSx0aGlzLmRlY1ByaXZhdGVNb2Rlcz0oMCxuLmNsb25lKShsKX10cmlnZ2VyRGF0YUV2ZW50KGUsdD0hMSl7aWYodGhpcy5fb3B0aW9uc1NlcnZpY2UucmF3T3B0aW9ucy5kaXNhYmxlU3RkaW4pcmV0dXJuO2NvbnN0IGk9dGhpcy5fYnVmZmVyU2VydmljZS5idWZmZXI7dCYmdGhpcy5fb3B0aW9uc1NlcnZpY2UucmF3T3B0aW9ucy5zY3JvbGxPblVzZXJJbnB1dCYmaS55YmFzZSE9PWkueWRpc3AmJnRoaXMuX29uUmVxdWVzdFNjcm9sbFRvQm90dG9tLmZpcmUoKSx0JiZ0aGlzLl9vblVzZXJJbnB1dC5maXJlKCksdGhpcy5fbG9nU2VydmljZS5kZWJ1Zyhgc2VuZGluZyBkYXRhIFwiJHtlfVwiYCwoKCk9PmUuc3BsaXQoXCJcIikubWFwKChlPT5lLmNoYXJDb2RlQXQoMCkpKSkpLHRoaXMuX29uRGF0YS5maXJlKGUpfXRyaWdnZXJCaW5hcnlFdmVudChlKXt0aGlzLl9vcHRpb25zU2VydmljZS5yYXdPcHRpb25zLmRpc2FibGVTdGRpbnx8KHRoaXMuX2xvZ1NlcnZpY2UuZGVidWcoYHNlbmRpbmcgYmluYXJ5IFwiJHtlfVwiYCwoKCk9PmUuc3BsaXQoXCJcIikubWFwKChlPT5lLmNoYXJDb2RlQXQoMCkpKSkpLHRoaXMuX29uQmluYXJ5LmZpcmUoZSkpfX07dC5Db3JlU2VydmljZT1kPXMoW3IoMCxoLklCdWZmZXJTZXJ2aWNlKSxyKDEsaC5JTG9nU2VydmljZSkscigyLGguSU9wdGlvbnNTZXJ2aWNlKV0sZCl9LDkwNzQ6KGUsdCxpKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuRGVjb3JhdGlvblNlcnZpY2U9dm9pZCAwO2NvbnN0IHM9aSg4MDU1KSxyPWkoODQ2MCksbj1pKDg0NCksbz1pKDYxMDYpO2xldCBhPTAsaD0wO2NsYXNzIGMgZXh0ZW5kcyBuLkRpc3Bvc2FibGV7Z2V0IGRlY29yYXRpb25zKCl7cmV0dXJuIHRoaXMuX2RlY29yYXRpb25zLnZhbHVlcygpfWNvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLl9kZWNvcmF0aW9ucz1uZXcgby5Tb3J0ZWRMaXN0KChlPT5udWxsPT1lP3ZvaWQgMDplLm1hcmtlci5saW5lKSksdGhpcy5fb25EZWNvcmF0aW9uUmVnaXN0ZXJlZD10aGlzLnJlZ2lzdGVyKG5ldyByLkV2ZW50RW1pdHRlciksdGhpcy5vbkRlY29yYXRpb25SZWdpc3RlcmVkPXRoaXMuX29uRGVjb3JhdGlvblJlZ2lzdGVyZWQuZXZlbnQsdGhpcy5fb25EZWNvcmF0aW9uUmVtb3ZlZD10aGlzLnJlZ2lzdGVyKG5ldyByLkV2ZW50RW1pdHRlciksdGhpcy5vbkRlY29yYXRpb25SZW1vdmVkPXRoaXMuX29uRGVjb3JhdGlvblJlbW92ZWQuZXZlbnQsdGhpcy5yZWdpc3RlcigoMCxuLnRvRGlzcG9zYWJsZSkoKCgpPT50aGlzLnJlc2V0KCkpKSl9cmVnaXN0ZXJEZWNvcmF0aW9uKGUpe2lmKGUubWFya2VyLmlzRGlzcG9zZWQpcmV0dXJuO2NvbnN0IHQ9bmV3IGwoZSk7aWYodCl7Y29uc3QgZT10Lm1hcmtlci5vbkRpc3Bvc2UoKCgpPT50LmRpc3Bvc2UoKSkpO3Qub25EaXNwb3NlKCgoKT0+e3QmJih0aGlzLl9kZWNvcmF0aW9ucy5kZWxldGUodCkmJnRoaXMuX29uRGVjb3JhdGlvblJlbW92ZWQuZmlyZSh0KSxlLmRpc3Bvc2UoKSl9KSksdGhpcy5fZGVjb3JhdGlvbnMuaW5zZXJ0KHQpLHRoaXMuX29uRGVjb3JhdGlvblJlZ2lzdGVyZWQuZmlyZSh0KX1yZXR1cm4gdH1yZXNldCgpe2Zvcihjb25zdCBlIG9mIHRoaXMuX2RlY29yYXRpb25zLnZhbHVlcygpKWUuZGlzcG9zZSgpO3RoaXMuX2RlY29yYXRpb25zLmNsZWFyKCl9KmdldERlY29yYXRpb25zQXRDZWxsKGUsdCxpKXt2YXIgcyxyLG47bGV0IG89MCxhPTA7Zm9yKGNvbnN0IGggb2YgdGhpcy5fZGVjb3JhdGlvbnMuZ2V0S2V5SXRlcmF0b3IodCkpbz1udWxsIT09KHM9aC5vcHRpb25zLngpJiZ2b2lkIDAhPT1zP3M6MCxhPW8rKG51bGwhPT0ocj1oLm9wdGlvbnMud2lkdGgpJiZ2b2lkIDAhPT1yP3I6MSksZT49byYmZTxhJiYoIWl8fChudWxsIT09KG49aC5vcHRpb25zLmxheWVyKSYmdm9pZCAwIT09bj9uOlwiYm90dG9tXCIpPT09aSkmJih5aWVsZCBoKX1mb3JFYWNoRGVjb3JhdGlvbkF0Q2VsbChlLHQsaSxzKXt0aGlzLl9kZWNvcmF0aW9ucy5mb3JFYWNoQnlLZXkodCwodD0+e3ZhciByLG4sbzthPW51bGwhPT0ocj10Lm9wdGlvbnMueCkmJnZvaWQgMCE9PXI/cjowLGg9YSsobnVsbCE9PShuPXQub3B0aW9ucy53aWR0aCkmJnZvaWQgMCE9PW4/bjoxKSxlPj1hJiZlPGgmJighaXx8KG51bGwhPT0obz10Lm9wdGlvbnMubGF5ZXIpJiZ2b2lkIDAhPT1vP286XCJib3R0b21cIik9PT1pKSYmcyh0KX0pKX19dC5EZWNvcmF0aW9uU2VydmljZT1jO2NsYXNzIGwgZXh0ZW5kcyBuLkRpc3Bvc2FibGV7Z2V0IGlzRGlzcG9zZWQoKXtyZXR1cm4gdGhpcy5faXNEaXNwb3NlZH1nZXQgYmFja2dyb3VuZENvbG9yUkdCKCl7cmV0dXJuIG51bGw9PT10aGlzLl9jYWNoZWRCZyYmKHRoaXMub3B0aW9ucy5iYWNrZ3JvdW5kQ29sb3I/dGhpcy5fY2FjaGVkQmc9cy5jc3MudG9Db2xvcih0aGlzLm9wdGlvbnMuYmFja2dyb3VuZENvbG9yKTp0aGlzLl9jYWNoZWRCZz12b2lkIDApLHRoaXMuX2NhY2hlZEJnfWdldCBmb3JlZ3JvdW5kQ29sb3JSR0IoKXtyZXR1cm4gbnVsbD09PXRoaXMuX2NhY2hlZEZnJiYodGhpcy5vcHRpb25zLmZvcmVncm91bmRDb2xvcj90aGlzLl9jYWNoZWRGZz1zLmNzcy50b0NvbG9yKHRoaXMub3B0aW9ucy5mb3JlZ3JvdW5kQ29sb3IpOnRoaXMuX2NhY2hlZEZnPXZvaWQgMCksdGhpcy5fY2FjaGVkRmd9Y29uc3RydWN0b3IoZSl7c3VwZXIoKSx0aGlzLm9wdGlvbnM9ZSx0aGlzLm9uUmVuZGVyRW1pdHRlcj10aGlzLnJlZ2lzdGVyKG5ldyByLkV2ZW50RW1pdHRlciksdGhpcy5vblJlbmRlcj10aGlzLm9uUmVuZGVyRW1pdHRlci5ldmVudCx0aGlzLl9vbkRpc3Bvc2U9dGhpcy5yZWdpc3RlcihuZXcgci5FdmVudEVtaXR0ZXIpLHRoaXMub25EaXNwb3NlPXRoaXMuX29uRGlzcG9zZS5ldmVudCx0aGlzLl9jYWNoZWRCZz1udWxsLHRoaXMuX2NhY2hlZEZnPW51bGwsdGhpcy5tYXJrZXI9ZS5tYXJrZXIsdGhpcy5vcHRpb25zLm92ZXJ2aWV3UnVsZXJPcHRpb25zJiYhdGhpcy5vcHRpb25zLm92ZXJ2aWV3UnVsZXJPcHRpb25zLnBvc2l0aW9uJiYodGhpcy5vcHRpb25zLm92ZXJ2aWV3UnVsZXJPcHRpb25zLnBvc2l0aW9uPVwiZnVsbFwiKX1kaXNwb3NlKCl7dGhpcy5fb25EaXNwb3NlLmZpcmUoKSxzdXBlci5kaXNwb3NlKCl9fX0sNDM0ODooZSx0LGkpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5JbnN0YW50aWF0aW9uU2VydmljZT10LlNlcnZpY2VDb2xsZWN0aW9uPXZvaWQgMDtjb25zdCBzPWkoMjU4NSkscj1pKDgzNDMpO2NsYXNzIG57Y29uc3RydWN0b3IoLi4uZSl7dGhpcy5fZW50cmllcz1uZXcgTWFwO2Zvcihjb25zdFt0LGldb2YgZSl0aGlzLnNldCh0LGkpfXNldChlLHQpe2NvbnN0IGk9dGhpcy5fZW50cmllcy5nZXQoZSk7cmV0dXJuIHRoaXMuX2VudHJpZXMuc2V0KGUsdCksaX1mb3JFYWNoKGUpe2Zvcihjb25zdFt0LGldb2YgdGhpcy5fZW50cmllcy5lbnRyaWVzKCkpZSh0LGkpfWhhcyhlKXtyZXR1cm4gdGhpcy5fZW50cmllcy5oYXMoZSl9Z2V0KGUpe3JldHVybiB0aGlzLl9lbnRyaWVzLmdldChlKX19dC5TZXJ2aWNlQ29sbGVjdGlvbj1uLHQuSW5zdGFudGlhdGlvblNlcnZpY2U9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLl9zZXJ2aWNlcz1uZXcgbix0aGlzLl9zZXJ2aWNlcy5zZXQocy5JSW5zdGFudGlhdGlvblNlcnZpY2UsdGhpcyl9c2V0U2VydmljZShlLHQpe3RoaXMuX3NlcnZpY2VzLnNldChlLHQpfWdldFNlcnZpY2UoZSl7cmV0dXJuIHRoaXMuX3NlcnZpY2VzLmdldChlKX1jcmVhdGVJbnN0YW5jZShlLC4uLnQpe2NvbnN0IGk9KDAsci5nZXRTZXJ2aWNlRGVwZW5kZW5jaWVzKShlKS5zb3J0KCgoZSx0KT0+ZS5pbmRleC10LmluZGV4KSkscz1bXTtmb3IoY29uc3QgdCBvZiBpKXtjb25zdCBpPXRoaXMuX3NlcnZpY2VzLmdldCh0LmlkKTtpZighaSl0aHJvdyBuZXcgRXJyb3IoYFtjcmVhdGVJbnN0YW5jZV0gJHtlLm5hbWV9IGRlcGVuZHMgb24gVU5LTk9XTiBzZXJ2aWNlICR7dC5pZH0uYCk7cy5wdXNoKGkpfWNvbnN0IG49aS5sZW5ndGg+MD9pWzBdLmluZGV4OnQubGVuZ3RoO2lmKHQubGVuZ3RoIT09bil0aHJvdyBuZXcgRXJyb3IoYFtjcmVhdGVJbnN0YW5jZV0gRmlyc3Qgc2VydmljZSBkZXBlbmRlbmN5IG9mICR7ZS5uYW1lfSBhdCBwb3NpdGlvbiAke24rMX0gY29uZmxpY3RzIHdpdGggJHt0Lmxlbmd0aH0gc3RhdGljIGFyZ3VtZW50c2ApO3JldHVybiBuZXcgZSguLi5bLi4udCwuLi5zXSl9fX0sNzg2NjpmdW5jdGlvbihlLHQsaSl7dmFyIHM9dGhpcyYmdGhpcy5fX2RlY29yYXRlfHxmdW5jdGlvbihlLHQsaSxzKXt2YXIgcixuPWFyZ3VtZW50cy5sZW5ndGgsbz1uPDM/dDpudWxsPT09cz9zPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxpKTpzO2lmKFwib2JqZWN0XCI9PXR5cGVvZiBSZWZsZWN0JiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBSZWZsZWN0LmRlY29yYXRlKW89UmVmbGVjdC5kZWNvcmF0ZShlLHQsaSxzKTtlbHNlIGZvcih2YXIgYT1lLmxlbmd0aC0xO2E+PTA7YS0tKShyPWVbYV0pJiYobz0objwzP3Iobyk6bj4zP3IodCxpLG8pOnIodCxpKSl8fG8pO3JldHVybiBuPjMmJm8mJk9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGksbyksb30scj10aGlzJiZ0aGlzLl9fcGFyYW18fGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGkscyl7dChpLHMsZSl9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LnRyYWNlQ2FsbD10LnNldFRyYWNlTG9nZ2VyPXQuTG9nU2VydmljZT12b2lkIDA7Y29uc3Qgbj1pKDg0NCksbz1pKDI1ODUpLGE9e3RyYWNlOm8uTG9nTGV2ZWxFbnVtLlRSQUNFLGRlYnVnOm8uTG9nTGV2ZWxFbnVtLkRFQlVHLGluZm86by5Mb2dMZXZlbEVudW0uSU5GTyx3YXJuOm8uTG9nTGV2ZWxFbnVtLldBUk4sZXJyb3I6by5Mb2dMZXZlbEVudW0uRVJST1Isb2ZmOm8uTG9nTGV2ZWxFbnVtLk9GRn07bGV0IGgsYz10LkxvZ1NlcnZpY2U9Y2xhc3MgZXh0ZW5kcyBuLkRpc3Bvc2FibGV7Z2V0IGxvZ0xldmVsKCl7cmV0dXJuIHRoaXMuX2xvZ0xldmVsfWNvbnN0cnVjdG9yKGUpe3N1cGVyKCksdGhpcy5fb3B0aW9uc1NlcnZpY2U9ZSx0aGlzLl9sb2dMZXZlbD1vLkxvZ0xldmVsRW51bS5PRkYsdGhpcy5fdXBkYXRlTG9nTGV2ZWwoKSx0aGlzLnJlZ2lzdGVyKHRoaXMuX29wdGlvbnNTZXJ2aWNlLm9uU3BlY2lmaWNPcHRpb25DaGFuZ2UoXCJsb2dMZXZlbFwiLCgoKT0+dGhpcy5fdXBkYXRlTG9nTGV2ZWwoKSkpKSxoPXRoaXN9X3VwZGF0ZUxvZ0xldmVsKCl7dGhpcy5fbG9nTGV2ZWw9YVt0aGlzLl9vcHRpb25zU2VydmljZS5yYXdPcHRpb25zLmxvZ0xldmVsXX1fZXZhbExhenlPcHRpb25hbFBhcmFtcyhlKXtmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKylcImZ1bmN0aW9uXCI9PXR5cGVvZiBlW3RdJiYoZVt0XT1lW3RdKCkpfV9sb2coZSx0LGkpe3RoaXMuX2V2YWxMYXp5T3B0aW9uYWxQYXJhbXMoaSksZS5jYWxsKGNvbnNvbGUsKHRoaXMuX29wdGlvbnNTZXJ2aWNlLm9wdGlvbnMubG9nZ2VyP1wiXCI6XCJ4dGVybS5qczogXCIpK3QsLi4uaSl9dHJhY2UoZSwuLi50KXt2YXIgaSxzO3RoaXMuX2xvZ0xldmVsPD1vLkxvZ0xldmVsRW51bS5UUkFDRSYmdGhpcy5fbG9nKG51bGwhPT0ocz1udWxsPT09KGk9dGhpcy5fb3B0aW9uc1NlcnZpY2Uub3B0aW9ucy5sb2dnZXIpfHx2b2lkIDA9PT1pP3ZvaWQgMDppLnRyYWNlLmJpbmQodGhpcy5fb3B0aW9uc1NlcnZpY2Uub3B0aW9ucy5sb2dnZXIpKSYmdm9pZCAwIT09cz9zOmNvbnNvbGUubG9nLGUsdCl9ZGVidWcoZSwuLi50KXt2YXIgaSxzO3RoaXMuX2xvZ0xldmVsPD1vLkxvZ0xldmVsRW51bS5ERUJVRyYmdGhpcy5fbG9nKG51bGwhPT0ocz1udWxsPT09KGk9dGhpcy5fb3B0aW9uc1NlcnZpY2Uub3B0aW9ucy5sb2dnZXIpfHx2b2lkIDA9PT1pP3ZvaWQgMDppLmRlYnVnLmJpbmQodGhpcy5fb3B0aW9uc1NlcnZpY2Uub3B0aW9ucy5sb2dnZXIpKSYmdm9pZCAwIT09cz9zOmNvbnNvbGUubG9nLGUsdCl9aW5mbyhlLC4uLnQpe3ZhciBpLHM7dGhpcy5fbG9nTGV2ZWw8PW8uTG9nTGV2ZWxFbnVtLklORk8mJnRoaXMuX2xvZyhudWxsIT09KHM9bnVsbD09PShpPXRoaXMuX29wdGlvbnNTZXJ2aWNlLm9wdGlvbnMubG9nZ2VyKXx8dm9pZCAwPT09aT92b2lkIDA6aS5pbmZvLmJpbmQodGhpcy5fb3B0aW9uc1NlcnZpY2Uub3B0aW9ucy5sb2dnZXIpKSYmdm9pZCAwIT09cz9zOmNvbnNvbGUuaW5mbyxlLHQpfXdhcm4oZSwuLi50KXt2YXIgaSxzO3RoaXMuX2xvZ0xldmVsPD1vLkxvZ0xldmVsRW51bS5XQVJOJiZ0aGlzLl9sb2cobnVsbCE9PShzPW51bGw9PT0oaT10aGlzLl9vcHRpb25zU2VydmljZS5vcHRpb25zLmxvZ2dlcil8fHZvaWQgMD09PWk/dm9pZCAwOmkud2Fybi5iaW5kKHRoaXMuX29wdGlvbnNTZXJ2aWNlLm9wdGlvbnMubG9nZ2VyKSkmJnZvaWQgMCE9PXM/czpjb25zb2xlLndhcm4sZSx0KX1lcnJvcihlLC4uLnQpe3ZhciBpLHM7dGhpcy5fbG9nTGV2ZWw8PW8uTG9nTGV2ZWxFbnVtLkVSUk9SJiZ0aGlzLl9sb2cobnVsbCE9PShzPW51bGw9PT0oaT10aGlzLl9vcHRpb25zU2VydmljZS5vcHRpb25zLmxvZ2dlcil8fHZvaWQgMD09PWk/dm9pZCAwOmkuZXJyb3IuYmluZCh0aGlzLl9vcHRpb25zU2VydmljZS5vcHRpb25zLmxvZ2dlcikpJiZ2b2lkIDAhPT1zP3M6Y29uc29sZS5lcnJvcixlLHQpfX07dC5Mb2dTZXJ2aWNlPWM9cyhbcigwLG8uSU9wdGlvbnNTZXJ2aWNlKV0sYyksdC5zZXRUcmFjZUxvZ2dlcj1mdW5jdGlvbihlKXtoPWV9LHQudHJhY2VDYWxsPWZ1bmN0aW9uKGUsdCxpKXtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiBpLnZhbHVlKXRocm93IG5ldyBFcnJvcihcIm5vdCBzdXBwb3J0ZWRcIik7Y29uc3Qgcz1pLnZhbHVlO2kudmFsdWU9ZnVuY3Rpb24oLi4uZSl7aWYoaC5sb2dMZXZlbCE9PW8uTG9nTGV2ZWxFbnVtLlRSQUNFKXJldHVybiBzLmFwcGx5KHRoaXMsZSk7aC50cmFjZShgR2x5cGhSZW5kZXJlciMke3MubmFtZX0oJHtlLm1hcCgoZT0+SlNPTi5zdHJpbmdpZnkoZSkpKS5qb2luKFwiLCBcIil9KWApO2NvbnN0IHQ9cy5hcHBseSh0aGlzLGUpO3JldHVybiBoLnRyYWNlKGBHbHlwaFJlbmRlcmVyIyR7cy5uYW1lfSByZXR1cm5gLHQpLHR9fX0sNzMwMjooZSx0LGkpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5PcHRpb25zU2VydmljZT10LkRFRkFVTFRfT1BUSU9OUz12b2lkIDA7Y29uc3Qgcz1pKDg0NjApLHI9aSg4NDQpLG49aSg2MTE0KTt0LkRFRkFVTFRfT1BUSU9OUz17Y29sczo4MCxyb3dzOjI0LGN1cnNvckJsaW5rOiExLGN1cnNvclN0eWxlOlwiYmxvY2tcIixjdXJzb3JXaWR0aDoxLGN1cnNvckluYWN0aXZlU3R5bGU6XCJvdXRsaW5lXCIsY3VzdG9tR2x5cGhzOiEwLGRyYXdCb2xkVGV4dEluQnJpZ2h0Q29sb3JzOiEwLGZhc3RTY3JvbGxNb2RpZmllcjpcImFsdFwiLGZhc3RTY3JvbGxTZW5zaXRpdml0eTo1LGZvbnRGYW1pbHk6XCJjb3VyaWVyLW5ldywgY291cmllciwgbW9ub3NwYWNlXCIsZm9udFNpemU6MTUsZm9udFdlaWdodDpcIm5vcm1hbFwiLGZvbnRXZWlnaHRCb2xkOlwiYm9sZFwiLGlnbm9yZUJyYWNrZXRlZFBhc3RlTW9kZTohMSxsaW5lSGVpZ2h0OjEsbGV0dGVyU3BhY2luZzowLGxpbmtIYW5kbGVyOm51bGwsbG9nTGV2ZWw6XCJpbmZvXCIsbG9nZ2VyOm51bGwsc2Nyb2xsYmFjazoxZTMsc2Nyb2xsT25Vc2VySW5wdXQ6ITAsc2Nyb2xsU2Vuc2l0aXZpdHk6MSxzY3JlZW5SZWFkZXJNb2RlOiExLHNtb290aFNjcm9sbER1cmF0aW9uOjAsbWFjT3B0aW9uSXNNZXRhOiExLG1hY09wdGlvbkNsaWNrRm9yY2VzU2VsZWN0aW9uOiExLG1pbmltdW1Db250cmFzdFJhdGlvOjEsZGlzYWJsZVN0ZGluOiExLGFsbG93UHJvcG9zZWRBcGk6ITEsYWxsb3dUcmFuc3BhcmVuY3k6ITEsdGFiU3RvcFdpZHRoOjgsdGhlbWU6e30scmlnaHRDbGlja1NlbGVjdHNXb3JkOm4uaXNNYWMsd2luZG93T3B0aW9uczp7fSx3aW5kb3dzTW9kZTohMSx3aW5kb3dzUHR5Ont9LHdvcmRTZXBhcmF0b3I6XCIgKClbXXt9JyxcXFwiYFwiLGFsdENsaWNrTW92ZXNDdXJzb3I6ITAsY29udmVydEVvbDohMSx0ZXJtTmFtZTpcInh0ZXJtXCIsY2FuY2VsRXZlbnRzOiExLG92ZXJ2aWV3UnVsZXJXaWR0aDowfTtjb25zdCBvPVtcIm5vcm1hbFwiLFwiYm9sZFwiLFwiMTAwXCIsXCIyMDBcIixcIjMwMFwiLFwiNDAwXCIsXCI1MDBcIixcIjYwMFwiLFwiNzAwXCIsXCI4MDBcIixcIjkwMFwiXTtjbGFzcyBhIGV4dGVuZHMgci5EaXNwb3NhYmxle2NvbnN0cnVjdG9yKGUpe3N1cGVyKCksdGhpcy5fb25PcHRpb25DaGFuZ2U9dGhpcy5yZWdpc3RlcihuZXcgcy5FdmVudEVtaXR0ZXIpLHRoaXMub25PcHRpb25DaGFuZ2U9dGhpcy5fb25PcHRpb25DaGFuZ2UuZXZlbnQ7Y29uc3QgaT1PYmplY3QuYXNzaWduKHt9LHQuREVGQVVMVF9PUFRJT05TKTtmb3IoY29uc3QgdCBpbiBlKWlmKHQgaW4gaSl0cnl7Y29uc3Qgcz1lW3RdO2lbdF09dGhpcy5fc2FuaXRpemVBbmRWYWxpZGF0ZU9wdGlvbih0LHMpfWNhdGNoKGUpe2NvbnNvbGUuZXJyb3IoZSl9dGhpcy5yYXdPcHRpb25zPWksdGhpcy5vcHRpb25zPU9iamVjdC5hc3NpZ24oe30saSksdGhpcy5fc2V0dXBPcHRpb25zKCl9b25TcGVjaWZpY09wdGlvbkNoYW5nZShlLHQpe3JldHVybiB0aGlzLm9uT3B0aW9uQ2hhbmdlKChpPT57aT09PWUmJnQodGhpcy5yYXdPcHRpb25zW2VdKX0pKX1vbk11bHRpcGxlT3B0aW9uQ2hhbmdlKGUsdCl7cmV0dXJuIHRoaXMub25PcHRpb25DaGFuZ2UoKGk9PnstMSE9PWUuaW5kZXhPZihpKSYmdCgpfSkpfV9zZXR1cE9wdGlvbnMoKXtjb25zdCBlPWU9PntpZighKGUgaW4gdC5ERUZBVUxUX09QVElPTlMpKXRocm93IG5ldyBFcnJvcihgTm8gb3B0aW9uIHdpdGgga2V5IFwiJHtlfVwiYCk7cmV0dXJuIHRoaXMucmF3T3B0aW9uc1tlXX0saT0oZSxpKT0+e2lmKCEoZSBpbiB0LkRFRkFVTFRfT1BUSU9OUykpdGhyb3cgbmV3IEVycm9yKGBObyBvcHRpb24gd2l0aCBrZXkgXCIke2V9XCJgKTtpPXRoaXMuX3Nhbml0aXplQW5kVmFsaWRhdGVPcHRpb24oZSxpKSx0aGlzLnJhd09wdGlvbnNbZV0hPT1pJiYodGhpcy5yYXdPcHRpb25zW2VdPWksdGhpcy5fb25PcHRpb25DaGFuZ2UuZmlyZShlKSl9O2Zvcihjb25zdCB0IGluIHRoaXMucmF3T3B0aW9ucyl7Y29uc3Qgcz17Z2V0OmUuYmluZCh0aGlzLHQpLHNldDppLmJpbmQodGhpcyx0KX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMub3B0aW9ucyx0LHMpfX1fc2FuaXRpemVBbmRWYWxpZGF0ZU9wdGlvbihlLGkpe3N3aXRjaChlKXtjYXNlXCJjdXJzb3JTdHlsZVwiOmlmKGl8fChpPXQuREVGQVVMVF9PUFRJT05TW2VdKSwhZnVuY3Rpb24oZSl7cmV0dXJuXCJibG9ja1wiPT09ZXx8XCJ1bmRlcmxpbmVcIj09PWV8fFwiYmFyXCI9PT1lfShpKSl0aHJvdyBuZXcgRXJyb3IoYFwiJHtpfVwiIGlzIG5vdCBhIHZhbGlkIHZhbHVlIGZvciAke2V9YCk7YnJlYWs7Y2FzZVwid29yZFNlcGFyYXRvclwiOml8fChpPXQuREVGQVVMVF9PUFRJT05TW2VdKTticmVhaztjYXNlXCJmb250V2VpZ2h0XCI6Y2FzZVwiZm9udFdlaWdodEJvbGRcIjppZihcIm51bWJlclwiPT10eXBlb2YgaSYmMTw9aSYmaTw9MWUzKWJyZWFrO2k9by5pbmNsdWRlcyhpKT9pOnQuREVGQVVMVF9PUFRJT05TW2VdO2JyZWFrO2Nhc2VcImN1cnNvcldpZHRoXCI6aT1NYXRoLmZsb29yKGkpO2Nhc2VcImxpbmVIZWlnaHRcIjpjYXNlXCJ0YWJTdG9wV2lkdGhcIjppZihpPDEpdGhyb3cgbmV3IEVycm9yKGAke2V9IGNhbm5vdCBiZSBsZXNzIHRoYW4gMSwgdmFsdWU6ICR7aX1gKTticmVhaztjYXNlXCJtaW5pbXVtQ29udHJhc3RSYXRpb1wiOmk9TWF0aC5tYXgoMSxNYXRoLm1pbigyMSxNYXRoLnJvdW5kKDEwKmkpLzEwKSk7YnJlYWs7Y2FzZVwic2Nyb2xsYmFja1wiOmlmKChpPU1hdGgubWluKGksNDI5NDk2NzI5NSkpPDApdGhyb3cgbmV3IEVycm9yKGAke2V9IGNhbm5vdCBiZSBsZXNzIHRoYW4gMCwgdmFsdWU6ICR7aX1gKTticmVhaztjYXNlXCJmYXN0U2Nyb2xsU2Vuc2l0aXZpdHlcIjpjYXNlXCJzY3JvbGxTZW5zaXRpdml0eVwiOmlmKGk8PTApdGhyb3cgbmV3IEVycm9yKGAke2V9IGNhbm5vdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gMCwgdmFsdWU6ICR7aX1gKTticmVhaztjYXNlXCJyb3dzXCI6Y2FzZVwiY29sc1wiOmlmKCFpJiYwIT09aSl0aHJvdyBuZXcgRXJyb3IoYCR7ZX0gbXVzdCBiZSBudW1lcmljLCB2YWx1ZTogJHtpfWApO2JyZWFrO2Nhc2VcIndpbmRvd3NQdHlcIjppPW51bGwhPWk/aTp7fX1yZXR1cm4gaX19dC5PcHRpb25zU2VydmljZT1hfSwyNjYwOmZ1bmN0aW9uKGUsdCxpKXt2YXIgcz10aGlzJiZ0aGlzLl9fZGVjb3JhdGV8fGZ1bmN0aW9uKGUsdCxpLHMpe3ZhciByLG49YXJndW1lbnRzLmxlbmd0aCxvPW48Mz90Om51bGw9PT1zP3M9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LGkpOnM7aWYoXCJvYmplY3RcIj09dHlwZW9mIFJlZmxlY3QmJlwiZnVuY3Rpb25cIj09dHlwZW9mIFJlZmxlY3QuZGVjb3JhdGUpbz1SZWZsZWN0LmRlY29yYXRlKGUsdCxpLHMpO2Vsc2UgZm9yKHZhciBhPWUubGVuZ3RoLTE7YT49MDthLS0pKHI9ZVthXSkmJihvPShuPDM/cihvKTpuPjM/cih0LGksbyk6cih0LGkpKXx8byk7cmV0dXJuIG4+MyYmbyYmT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsaSxvKSxvfSxyPXRoaXMmJnRoaXMuX19wYXJhbXx8ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZnVuY3Rpb24oaSxzKXt0KGkscyxlKX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuT3NjTGlua1NlcnZpY2U9dm9pZCAwO2NvbnN0IG49aSgyNTg1KTtsZXQgbz10Lk9zY0xpbmtTZXJ2aWNlPWNsYXNze2NvbnN0cnVjdG9yKGUpe3RoaXMuX2J1ZmZlclNlcnZpY2U9ZSx0aGlzLl9uZXh0SWQ9MSx0aGlzLl9lbnRyaWVzV2l0aElkPW5ldyBNYXAsdGhpcy5fZGF0YUJ5TGlua0lkPW5ldyBNYXB9cmVnaXN0ZXJMaW5rKGUpe2NvbnN0IHQ9dGhpcy5fYnVmZmVyU2VydmljZS5idWZmZXI7aWYodm9pZCAwPT09ZS5pZCl7Y29uc3QgaT10LmFkZE1hcmtlcih0LnliYXNlK3QueSkscz17ZGF0YTplLGlkOnRoaXMuX25leHRJZCsrLGxpbmVzOltpXX07cmV0dXJuIGkub25EaXNwb3NlKCgoKT0+dGhpcy5fcmVtb3ZlTWFya2VyRnJvbUxpbmsocyxpKSkpLHRoaXMuX2RhdGFCeUxpbmtJZC5zZXQocy5pZCxzKSxzLmlkfWNvbnN0IGk9ZSxzPXRoaXMuX2dldEVudHJ5SWRLZXkoaSkscj10aGlzLl9lbnRyaWVzV2l0aElkLmdldChzKTtpZihyKXJldHVybiB0aGlzLmFkZExpbmVUb0xpbmsoci5pZCx0LnliYXNlK3QueSksci5pZDtjb25zdCBuPXQuYWRkTWFya2VyKHQueWJhc2UrdC55KSxvPXtpZDp0aGlzLl9uZXh0SWQrKyxrZXk6dGhpcy5fZ2V0RW50cnlJZEtleShpKSxkYXRhOmksbGluZXM6W25dfTtyZXR1cm4gbi5vbkRpc3Bvc2UoKCgpPT50aGlzLl9yZW1vdmVNYXJrZXJGcm9tTGluayhvLG4pKSksdGhpcy5fZW50cmllc1dpdGhJZC5zZXQoby5rZXksbyksdGhpcy5fZGF0YUJ5TGlua0lkLnNldChvLmlkLG8pLG8uaWR9YWRkTGluZVRvTGluayhlLHQpe2NvbnN0IGk9dGhpcy5fZGF0YUJ5TGlua0lkLmdldChlKTtpZihpJiZpLmxpbmVzLmV2ZXJ5KChlPT5lLmxpbmUhPT10KSkpe2NvbnN0IGU9dGhpcy5fYnVmZmVyU2VydmljZS5idWZmZXIuYWRkTWFya2VyKHQpO2kubGluZXMucHVzaChlKSxlLm9uRGlzcG9zZSgoKCk9PnRoaXMuX3JlbW92ZU1hcmtlckZyb21MaW5rKGksZSkpKX19Z2V0TGlua0RhdGEoZSl7dmFyIHQ7cmV0dXJuIG51bGw9PT0odD10aGlzLl9kYXRhQnlMaW5rSWQuZ2V0KGUpKXx8dm9pZCAwPT09dD92b2lkIDA6dC5kYXRhfV9nZXRFbnRyeUlkS2V5KGUpe3JldHVybmAke2UuaWR9Ozske2UudXJpfWB9X3JlbW92ZU1hcmtlckZyb21MaW5rKGUsdCl7Y29uc3QgaT1lLmxpbmVzLmluZGV4T2YodCk7LTEhPT1pJiYoZS5saW5lcy5zcGxpY2UoaSwxKSwwPT09ZS5saW5lcy5sZW5ndGgmJih2b2lkIDAhPT1lLmRhdGEuaWQmJnRoaXMuX2VudHJpZXNXaXRoSWQuZGVsZXRlKGUua2V5KSx0aGlzLl9kYXRhQnlMaW5rSWQuZGVsZXRlKGUuaWQpKSl9fTt0Lk9zY0xpbmtTZXJ2aWNlPW89cyhbcigwLG4uSUJ1ZmZlclNlcnZpY2UpXSxvKX0sODM0MzooZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuY3JlYXRlRGVjb3JhdG9yPXQuZ2V0U2VydmljZURlcGVuZGVuY2llcz10LnNlcnZpY2VSZWdpc3RyeT12b2lkIDA7Y29uc3QgaT1cImRpJHRhcmdldFwiLHM9XCJkaSRkZXBlbmRlbmNpZXNcIjt0LnNlcnZpY2VSZWdpc3RyeT1uZXcgTWFwLHQuZ2V0U2VydmljZURlcGVuZGVuY2llcz1mdW5jdGlvbihlKXtyZXR1cm4gZVtzXXx8W119LHQuY3JlYXRlRGVjb3JhdG9yPWZ1bmN0aW9uKGUpe2lmKHQuc2VydmljZVJlZ2lzdHJ5LmhhcyhlKSlyZXR1cm4gdC5zZXJ2aWNlUmVnaXN0cnkuZ2V0KGUpO2NvbnN0IHI9ZnVuY3Rpb24oZSx0LG4pe2lmKDMhPT1hcmd1bWVudHMubGVuZ3RoKXRocm93IG5ldyBFcnJvcihcIkBJU2VydmljZU5hbWUtZGVjb3JhdG9yIGNhbiBvbmx5IGJlIHVzZWQgdG8gZGVjb3JhdGUgYSBwYXJhbWV0ZXJcIik7IWZ1bmN0aW9uKGUsdCxyKXt0W2ldPT09dD90W3NdLnB1c2goe2lkOmUsaW5kZXg6cn0pOih0W3NdPVt7aWQ6ZSxpbmRleDpyfV0sdFtpXT10KX0ocixlLG4pfTtyZXR1cm4gci50b1N0cmluZz0oKT0+ZSx0LnNlcnZpY2VSZWdpc3RyeS5zZXQoZSxyKSxyfX0sMjU4NTooZSx0LGkpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5JRGVjb3JhdGlvblNlcnZpY2U9dC5JVW5pY29kZVNlcnZpY2U9dC5JT3NjTGlua1NlcnZpY2U9dC5JT3B0aW9uc1NlcnZpY2U9dC5JTG9nU2VydmljZT10LkxvZ0xldmVsRW51bT10LklJbnN0YW50aWF0aW9uU2VydmljZT10LklDaGFyc2V0U2VydmljZT10LklDb3JlU2VydmljZT10LklDb3JlTW91c2VTZXJ2aWNlPXQuSUJ1ZmZlclNlcnZpY2U9dm9pZCAwO2NvbnN0IHM9aSg4MzQzKTt2YXIgcjt0LklCdWZmZXJTZXJ2aWNlPSgwLHMuY3JlYXRlRGVjb3JhdG9yKShcIkJ1ZmZlclNlcnZpY2VcIiksdC5JQ29yZU1vdXNlU2VydmljZT0oMCxzLmNyZWF0ZURlY29yYXRvcikoXCJDb3JlTW91c2VTZXJ2aWNlXCIpLHQuSUNvcmVTZXJ2aWNlPSgwLHMuY3JlYXRlRGVjb3JhdG9yKShcIkNvcmVTZXJ2aWNlXCIpLHQuSUNoYXJzZXRTZXJ2aWNlPSgwLHMuY3JlYXRlRGVjb3JhdG9yKShcIkNoYXJzZXRTZXJ2aWNlXCIpLHQuSUluc3RhbnRpYXRpb25TZXJ2aWNlPSgwLHMuY3JlYXRlRGVjb3JhdG9yKShcIkluc3RhbnRpYXRpb25TZXJ2aWNlXCIpLGZ1bmN0aW9uKGUpe2VbZS5UUkFDRT0wXT1cIlRSQUNFXCIsZVtlLkRFQlVHPTFdPVwiREVCVUdcIixlW2UuSU5GTz0yXT1cIklORk9cIixlW2UuV0FSTj0zXT1cIldBUk5cIixlW2UuRVJST1I9NF09XCJFUlJPUlwiLGVbZS5PRkY9NV09XCJPRkZcIn0ocnx8KHQuTG9nTGV2ZWxFbnVtPXI9e30pKSx0LklMb2dTZXJ2aWNlPSgwLHMuY3JlYXRlRGVjb3JhdG9yKShcIkxvZ1NlcnZpY2VcIiksdC5JT3B0aW9uc1NlcnZpY2U9KDAscy5jcmVhdGVEZWNvcmF0b3IpKFwiT3B0aW9uc1NlcnZpY2VcIiksdC5JT3NjTGlua1NlcnZpY2U9KDAscy5jcmVhdGVEZWNvcmF0b3IpKFwiT3NjTGlua1NlcnZpY2VcIiksdC5JVW5pY29kZVNlcnZpY2U9KDAscy5jcmVhdGVEZWNvcmF0b3IpKFwiVW5pY29kZVNlcnZpY2VcIiksdC5JRGVjb3JhdGlvblNlcnZpY2U9KDAscy5jcmVhdGVEZWNvcmF0b3IpKFwiRGVjb3JhdGlvblNlcnZpY2VcIil9LDE0ODA6KGUsdCxpKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuVW5pY29kZVNlcnZpY2U9dm9pZCAwO2NvbnN0IHM9aSg4NDYwKSxyPWkoMjI1KTt0LlVuaWNvZGVTZXJ2aWNlPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5fcHJvdmlkZXJzPU9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5fYWN0aXZlPVwiXCIsdGhpcy5fb25DaGFuZ2U9bmV3IHMuRXZlbnRFbWl0dGVyLHRoaXMub25DaGFuZ2U9dGhpcy5fb25DaGFuZ2UuZXZlbnQ7Y29uc3QgZT1uZXcgci5Vbmljb2RlVjY7dGhpcy5yZWdpc3RlcihlKSx0aGlzLl9hY3RpdmU9ZS52ZXJzaW9uLHRoaXMuX2FjdGl2ZVByb3ZpZGVyPWV9ZGlzcG9zZSgpe3RoaXMuX29uQ2hhbmdlLmRpc3Bvc2UoKX1nZXQgdmVyc2lvbnMoKXtyZXR1cm4gT2JqZWN0LmtleXModGhpcy5fcHJvdmlkZXJzKX1nZXQgYWN0aXZlVmVyc2lvbigpe3JldHVybiB0aGlzLl9hY3RpdmV9c2V0IGFjdGl2ZVZlcnNpb24oZSl7aWYoIXRoaXMuX3Byb3ZpZGVyc1tlXSl0aHJvdyBuZXcgRXJyb3IoYHVua25vd24gVW5pY29kZSB2ZXJzaW9uIFwiJHtlfVwiYCk7dGhpcy5fYWN0aXZlPWUsdGhpcy5fYWN0aXZlUHJvdmlkZXI9dGhpcy5fcHJvdmlkZXJzW2VdLHRoaXMuX29uQ2hhbmdlLmZpcmUoZSl9cmVnaXN0ZXIoZSl7dGhpcy5fcHJvdmlkZXJzW2UudmVyc2lvbl09ZX13Y3dpZHRoKGUpe3JldHVybiB0aGlzLl9hY3RpdmVQcm92aWRlci53Y3dpZHRoKGUpfWdldFN0cmluZ0NlbGxXaWR0aChlKXtsZXQgdD0wO2NvbnN0IGk9ZS5sZW5ndGg7Zm9yKGxldCBzPTA7czxpOysrcyl7bGV0IHI9ZS5jaGFyQ29kZUF0KHMpO2lmKDU1Mjk2PD1yJiZyPD01NjMxOSl7aWYoKytzPj1pKXJldHVybiB0K3RoaXMud2N3aWR0aChyKTtjb25zdCBuPWUuY2hhckNvZGVBdChzKTs1NjMyMDw9biYmbjw9NTczNDM/cj0xMDI0KihyLTU1Mjk2KStuLTU2MzIwKzY1NTM2OnQrPXRoaXMud2N3aWR0aChuKX10Kz10aGlzLndjd2lkdGgocil9cmV0dXJuIHR9fX19LHQ9e307ZnVuY3Rpb24gaShzKXt2YXIgcj10W3NdO2lmKHZvaWQgMCE9PXIpcmV0dXJuIHIuZXhwb3J0czt2YXIgbj10W3NdPXtleHBvcnRzOnt9fTtyZXR1cm4gZVtzXS5jYWxsKG4uZXhwb3J0cyxuLG4uZXhwb3J0cyxpKSxuLmV4cG9ydHN9dmFyIHM9e307cmV0dXJuKCgpPT57dmFyIGU9cztPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxlLlRlcm1pbmFsPXZvaWQgMDtjb25zdCB0PWkoOTA0Mikscj1pKDMyMzYpLG49aSg4NDQpLG89aSg1NzQxKSxhPWkoODI4NSksaD1pKDc5NzUpLGM9aSg3MDkwKSxsPVtcImNvbHNcIixcInJvd3NcIl07Y2xhc3MgZCBleHRlbmRzIG4uRGlzcG9zYWJsZXtjb25zdHJ1Y3RvcihlKXtzdXBlcigpLHRoaXMuX2NvcmU9dGhpcy5yZWdpc3RlcihuZXcgci5UZXJtaW5hbChlKSksdGhpcy5fYWRkb25NYW5hZ2VyPXRoaXMucmVnaXN0ZXIobmV3IG8uQWRkb25NYW5hZ2VyKSx0aGlzLl9wdWJsaWNPcHRpb25zPU9iamVjdC5hc3NpZ24oe30sdGhpcy5fY29yZS5vcHRpb25zKTtjb25zdCB0PWU9PnRoaXMuX2NvcmUub3B0aW9uc1tlXSxpPShlLHQpPT57dGhpcy5fY2hlY2tSZWFkb25seU9wdGlvbnMoZSksdGhpcy5fY29yZS5vcHRpb25zW2VdPXR9O2Zvcihjb25zdCBlIGluIHRoaXMuX2NvcmUub3B0aW9ucyl7Y29uc3Qgcz17Z2V0OnQuYmluZCh0aGlzLGUpLHNldDppLmJpbmQodGhpcyxlKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMuX3B1YmxpY09wdGlvbnMsZSxzKX19X2NoZWNrUmVhZG9ubHlPcHRpb25zKGUpe2lmKGwuaW5jbHVkZXMoZSkpdGhyb3cgbmV3IEVycm9yKGBPcHRpb24gXCIke2V9XCIgY2FuIG9ubHkgYmUgc2V0IGluIHRoZSBjb25zdHJ1Y3RvcmApfV9jaGVja1Byb3Bvc2VkQXBpKCl7aWYoIXRoaXMuX2NvcmUub3B0aW9uc1NlcnZpY2UucmF3T3B0aW9ucy5hbGxvd1Byb3Bvc2VkQXBpKXRocm93IG5ldyBFcnJvcihcIllvdSBtdXN0IHNldCB0aGUgYWxsb3dQcm9wb3NlZEFwaSBvcHRpb24gdG8gdHJ1ZSB0byB1c2UgcHJvcG9zZWQgQVBJXCIpfWdldCBvbkJlbGwoKXtyZXR1cm4gdGhpcy5fY29yZS5vbkJlbGx9Z2V0IG9uQmluYXJ5KCl7cmV0dXJuIHRoaXMuX2NvcmUub25CaW5hcnl9Z2V0IG9uQ3Vyc29yTW92ZSgpe3JldHVybiB0aGlzLl9jb3JlLm9uQ3Vyc29yTW92ZX1nZXQgb25EYXRhKCl7cmV0dXJuIHRoaXMuX2NvcmUub25EYXRhfWdldCBvbktleSgpe3JldHVybiB0aGlzLl9jb3JlLm9uS2V5fWdldCBvbkxpbmVGZWVkKCl7cmV0dXJuIHRoaXMuX2NvcmUub25MaW5lRmVlZH1nZXQgb25SZW5kZXIoKXtyZXR1cm4gdGhpcy5fY29yZS5vblJlbmRlcn1nZXQgb25SZXNpemUoKXtyZXR1cm4gdGhpcy5fY29yZS5vblJlc2l6ZX1nZXQgb25TY3JvbGwoKXtyZXR1cm4gdGhpcy5fY29yZS5vblNjcm9sbH1nZXQgb25TZWxlY3Rpb25DaGFuZ2UoKXtyZXR1cm4gdGhpcy5fY29yZS5vblNlbGVjdGlvbkNoYW5nZX1nZXQgb25UaXRsZUNoYW5nZSgpe3JldHVybiB0aGlzLl9jb3JlLm9uVGl0bGVDaGFuZ2V9Z2V0IG9uV3JpdGVQYXJzZWQoKXtyZXR1cm4gdGhpcy5fY29yZS5vbldyaXRlUGFyc2VkfWdldCBlbGVtZW50KCl7cmV0dXJuIHRoaXMuX2NvcmUuZWxlbWVudH1nZXQgcGFyc2VyKCl7cmV0dXJuIHRoaXMuX3BhcnNlcnx8KHRoaXMuX3BhcnNlcj1uZXcgaC5QYXJzZXJBcGkodGhpcy5fY29yZSkpLHRoaXMuX3BhcnNlcn1nZXQgdW5pY29kZSgpe3JldHVybiB0aGlzLl9jaGVja1Byb3Bvc2VkQXBpKCksbmV3IGMuVW5pY29kZUFwaSh0aGlzLl9jb3JlKX1nZXQgdGV4dGFyZWEoKXtyZXR1cm4gdGhpcy5fY29yZS50ZXh0YXJlYX1nZXQgcm93cygpe3JldHVybiB0aGlzLl9jb3JlLnJvd3N9Z2V0IGNvbHMoKXtyZXR1cm4gdGhpcy5fY29yZS5jb2xzfWdldCBidWZmZXIoKXtyZXR1cm4gdGhpcy5fYnVmZmVyfHwodGhpcy5fYnVmZmVyPXRoaXMucmVnaXN0ZXIobmV3IGEuQnVmZmVyTmFtZXNwYWNlQXBpKHRoaXMuX2NvcmUpKSksdGhpcy5fYnVmZmVyfWdldCBtYXJrZXJzKCl7cmV0dXJuIHRoaXMuX2NoZWNrUHJvcG9zZWRBcGkoKSx0aGlzLl9jb3JlLm1hcmtlcnN9Z2V0IG1vZGVzKCl7Y29uc3QgZT10aGlzLl9jb3JlLmNvcmVTZXJ2aWNlLmRlY1ByaXZhdGVNb2RlcztsZXQgdD1cIm5vbmVcIjtzd2l0Y2godGhpcy5fY29yZS5jb3JlTW91c2VTZXJ2aWNlLmFjdGl2ZVByb3RvY29sKXtjYXNlXCJYMTBcIjp0PVwieDEwXCI7YnJlYWs7Y2FzZVwiVlQyMDBcIjp0PVwidnQyMDBcIjticmVhaztjYXNlXCJEUkFHXCI6dD1cImRyYWdcIjticmVhaztjYXNlXCJBTllcIjp0PVwiYW55XCJ9cmV0dXJue2FwcGxpY2F0aW9uQ3Vyc29yS2V5c01vZGU6ZS5hcHBsaWNhdGlvbkN1cnNvcktleXMsYXBwbGljYXRpb25LZXlwYWRNb2RlOmUuYXBwbGljYXRpb25LZXlwYWQsYnJhY2tldGVkUGFzdGVNb2RlOmUuYnJhY2tldGVkUGFzdGVNb2RlLGluc2VydE1vZGU6dGhpcy5fY29yZS5jb3JlU2VydmljZS5tb2Rlcy5pbnNlcnRNb2RlLG1vdXNlVHJhY2tpbmdNb2RlOnQsb3JpZ2luTW9kZTplLm9yaWdpbixyZXZlcnNlV3JhcGFyb3VuZE1vZGU6ZS5yZXZlcnNlV3JhcGFyb3VuZCxzZW5kRm9jdXNNb2RlOmUuc2VuZEZvY3VzLHdyYXBhcm91bmRNb2RlOmUud3JhcGFyb3VuZH19Z2V0IG9wdGlvbnMoKXtyZXR1cm4gdGhpcy5fcHVibGljT3B0aW9uc31zZXQgb3B0aW9ucyhlKXtmb3IoY29uc3QgdCBpbiBlKXRoaXMuX3B1YmxpY09wdGlvbnNbdF09ZVt0XX1ibHVyKCl7dGhpcy5fY29yZS5ibHVyKCl9Zm9jdXMoKXt0aGlzLl9jb3JlLmZvY3VzKCl9cmVzaXplKGUsdCl7dGhpcy5fdmVyaWZ5SW50ZWdlcnMoZSx0KSx0aGlzLl9jb3JlLnJlc2l6ZShlLHQpfW9wZW4oZSl7dGhpcy5fY29yZS5vcGVuKGUpfWF0dGFjaEN1c3RvbUtleUV2ZW50SGFuZGxlcihlKXt0aGlzLl9jb3JlLmF0dGFjaEN1c3RvbUtleUV2ZW50SGFuZGxlcihlKX1yZWdpc3RlckxpbmtQcm92aWRlcihlKXtyZXR1cm4gdGhpcy5fY29yZS5yZWdpc3RlckxpbmtQcm92aWRlcihlKX1yZWdpc3RlckNoYXJhY3RlckpvaW5lcihlKXtyZXR1cm4gdGhpcy5fY2hlY2tQcm9wb3NlZEFwaSgpLHRoaXMuX2NvcmUucmVnaXN0ZXJDaGFyYWN0ZXJKb2luZXIoZSl9ZGVyZWdpc3RlckNoYXJhY3RlckpvaW5lcihlKXt0aGlzLl9jaGVja1Byb3Bvc2VkQXBpKCksdGhpcy5fY29yZS5kZXJlZ2lzdGVyQ2hhcmFjdGVySm9pbmVyKGUpfXJlZ2lzdGVyTWFya2VyKGU9MCl7cmV0dXJuIHRoaXMuX3ZlcmlmeUludGVnZXJzKGUpLHRoaXMuX2NvcmUucmVnaXN0ZXJNYXJrZXIoZSl9cmVnaXN0ZXJEZWNvcmF0aW9uKGUpe3ZhciB0LGkscztyZXR1cm4gdGhpcy5fY2hlY2tQcm9wb3NlZEFwaSgpLHRoaXMuX3ZlcmlmeVBvc2l0aXZlSW50ZWdlcnMobnVsbCE9PSh0PWUueCkmJnZvaWQgMCE9PXQ/dDowLG51bGwhPT0oaT1lLndpZHRoKSYmdm9pZCAwIT09aT9pOjAsbnVsbCE9PShzPWUuaGVpZ2h0KSYmdm9pZCAwIT09cz9zOjApLHRoaXMuX2NvcmUucmVnaXN0ZXJEZWNvcmF0aW9uKGUpfWhhc1NlbGVjdGlvbigpe3JldHVybiB0aGlzLl9jb3JlLmhhc1NlbGVjdGlvbigpfXNlbGVjdChlLHQsaSl7dGhpcy5fdmVyaWZ5SW50ZWdlcnMoZSx0LGkpLHRoaXMuX2NvcmUuc2VsZWN0KGUsdCxpKX1nZXRTZWxlY3Rpb24oKXtyZXR1cm4gdGhpcy5fY29yZS5nZXRTZWxlY3Rpb24oKX1nZXRTZWxlY3Rpb25Qb3NpdGlvbigpe3JldHVybiB0aGlzLl9jb3JlLmdldFNlbGVjdGlvblBvc2l0aW9uKCl9Y2xlYXJTZWxlY3Rpb24oKXt0aGlzLl9jb3JlLmNsZWFyU2VsZWN0aW9uKCl9c2VsZWN0QWxsKCl7dGhpcy5fY29yZS5zZWxlY3RBbGwoKX1zZWxlY3RMaW5lcyhlLHQpe3RoaXMuX3ZlcmlmeUludGVnZXJzKGUsdCksdGhpcy5fY29yZS5zZWxlY3RMaW5lcyhlLHQpfWRpc3Bvc2UoKXtzdXBlci5kaXNwb3NlKCl9c2Nyb2xsTGluZXMoZSl7dGhpcy5fdmVyaWZ5SW50ZWdlcnMoZSksdGhpcy5fY29yZS5zY3JvbGxMaW5lcyhlKX1zY3JvbGxQYWdlcyhlKXt0aGlzLl92ZXJpZnlJbnRlZ2VycyhlKSx0aGlzLl9jb3JlLnNjcm9sbFBhZ2VzKGUpfXNjcm9sbFRvVG9wKCl7dGhpcy5fY29yZS5zY3JvbGxUb1RvcCgpfXNjcm9sbFRvQm90dG9tKCl7dGhpcy5fY29yZS5zY3JvbGxUb0JvdHRvbSgpfXNjcm9sbFRvTGluZShlKXt0aGlzLl92ZXJpZnlJbnRlZ2VycyhlKSx0aGlzLl9jb3JlLnNjcm9sbFRvTGluZShlKX1jbGVhcigpe3RoaXMuX2NvcmUuY2xlYXIoKX13cml0ZShlLHQpe3RoaXMuX2NvcmUud3JpdGUoZSx0KX13cml0ZWxuKGUsdCl7dGhpcy5fY29yZS53cml0ZShlKSx0aGlzLl9jb3JlLndyaXRlKFwiXFxyXFxuXCIsdCl9cGFzdGUoZSl7dGhpcy5fY29yZS5wYXN0ZShlKX1yZWZyZXNoKGUsdCl7dGhpcy5fdmVyaWZ5SW50ZWdlcnMoZSx0KSx0aGlzLl9jb3JlLnJlZnJlc2goZSx0KX1yZXNldCgpe3RoaXMuX2NvcmUucmVzZXQoKX1jbGVhclRleHR1cmVBdGxhcygpe3RoaXMuX2NvcmUuY2xlYXJUZXh0dXJlQXRsYXMoKX1sb2FkQWRkb24oZSl7dGhpcy5fYWRkb25NYW5hZ2VyLmxvYWRBZGRvbih0aGlzLGUpfXN0YXRpYyBnZXQgc3RyaW5ncygpe3JldHVybiB0fV92ZXJpZnlJbnRlZ2VycyguLi5lKXtmb3IoY29uc3QgdCBvZiBlKWlmKHQ9PT0xLzB8fGlzTmFOKHQpfHx0JTEhPTApdGhyb3cgbmV3IEVycm9yKFwiVGhpcyBBUEkgb25seSBhY2NlcHRzIGludGVnZXJzXCIpfV92ZXJpZnlQb3NpdGl2ZUludGVnZXJzKC4uLmUpe2Zvcihjb25zdCB0IG9mIGUpaWYodCYmKHQ9PT0xLzB8fGlzTmFOKHQpfHx0JTEhPTB8fHQ8MCkpdGhyb3cgbmV3IEVycm9yKFwiVGhpcyBBUEkgb25seSBhY2NlcHRzIHBvc2l0aXZlIGludGVnZXJzXCIpfX1lLlRlcm1pbmFsPWR9KSgpLHN9KSgpKSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD14dGVybS5qcy5tYXAiLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdC8vIG5vIG1vZHVsZS5pZCBuZWVkZWRcblx0XHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdKG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuIiwiaW1wb3J0IHsgSVRlcm1pbmFsQWRkb24sIElUZXJtaW5hbE9wdGlvbnMsIFRlcm1pbmFsIH0gZnJvbSAneHRlcm0nO1xyXG5cclxuZGVjbGFyZSB2YXIgRG90TmV0OiBhbnk7XHJcblxyXG5pbnRlcmZhY2UgSVRlcm1pbmFsT2JqZWN0IHtcclxuXHR0ZXJtaW5hbDogVGVybWluYWwsXHJcblx0YWRkb25zOiBNYXA8c3RyaW5nLCBJVGVybWluYWxBZGRvbj4sXHJcblx0Y3VzdG9tS2V5RXZlbnRIYW5kbGVyOiAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IGJvb2xlYW5cclxufVxyXG5cclxuY2xhc3MgWHRlcm1CbGF6b3Ige1xyXG5cdHByaXZhdGUgcmVhZG9ubHkgX0FTU0VNQkxZX05BTUUgPSAnWHRlcm1CbGF6b3InO1xyXG5cdHByaXZhdGUgcmVhZG9ubHkgX3Rlcm1pbmFscyA9IG5ldyBNYXA8c3RyaW5nLCBJVGVybWluYWxPYmplY3Q+KCk7XHJcblx0cHJpdmF0ZSByZWFkb25seSBfYWRkb25MaXN0ID0gbmV3IE1hcDxzdHJpbmcsIElUZXJtaW5hbEFkZG9uPigpO1xyXG5cclxuXHQvKipcclxuXHQgKiBSZWdpc3RlciBUZXJtaW5hbFxyXG5cdCAqIEBwYXJhbSBpZFxyXG5cdCAqIEBwYXJhbSByZWZcclxuXHQgKiBAcGFyYW0gb3B0aW9uc1xyXG5cdCAqIEBwYXJhbSBhZGRvbklkc1xyXG5cdCAqL1xyXG5cdHJlZ2lzdGVyVGVybWluYWwoaWQ6IHN0cmluZywgcmVmOiBIVE1MRWxlbWVudCwgb3B0aW9uczogSVRlcm1pbmFsT3B0aW9ucywgYWRkb25JZHM6IHN0cmluZ1tdKSB7XHJcblx0XHQvLyBTZXR1cCB0aGUgWFRlcm0gdGVybWluYWxcclxuXHRcdGNvbnN0IHRlcm1pbmFsID0gbmV3IFRlcm1pbmFsKG9wdGlvbnMpO1xyXG5cclxuXHRcdC8vIENyZWF0ZSBMaXN0ZW5lcnNcdFxyXG5cdFx0dGVybWluYWwub25CaW5hcnkoKGRhdGE6IHN0cmluZykgPT4gRG90TmV0Lmludm9rZU1ldGhvZEFzeW5jKHRoaXMuX0FTU0VNQkxZX05BTUUsICdPbkJpbmFyeScsIGlkLCBkYXRhKSk7XHJcblx0XHR0ZXJtaW5hbC5vbkN1cnNvck1vdmUoKCkgPT4gRG90TmV0Lmludm9rZU1ldGhvZEFzeW5jKHRoaXMuX0FTU0VNQkxZX05BTUUsICdPbkN1cnNvck1vdmUnLCBpZCkpO1xyXG5cdFx0dGVybWluYWwub25EYXRhKChkYXRhOiBzdHJpbmcpID0+IERvdE5ldC5pbnZva2VNZXRob2RBc3luYyh0aGlzLl9BU1NFTUJMWV9OQU1FLCAnT25EYXRhJywgaWQsIGRhdGEpKTtcclxuXHRcdHRlcm1pbmFsLm9uS2V5KChldmVudDogeyBrZXk6IHN0cmluZywgZG9tRXZlbnQ6IEtleWJvYXJkRXZlbnQgfSkgPT4gRG90TmV0Lmludm9rZU1ldGhvZEFzeW5jKHRoaXMuX0FTU0VNQkxZX05BTUUsICdPbktleScsIGlkLCB0aGlzLmNvbnZlcnRUb0FyZ3MoZXZlbnQuZG9tRXZlbnQpKSk7XHJcblx0XHR0ZXJtaW5hbC5vbkxpbmVGZWVkKCgpID0+IERvdE5ldC5pbnZva2VNZXRob2RBc3luYyh0aGlzLl9BU1NFTUJMWV9OQU1FLCAnT25MaW5lRmVlZCcsIGlkKSk7XHJcblx0XHR0ZXJtaW5hbC5vblNjcm9sbCgobmV3UG9zaXRpb246IG51bWJlcikgPT4gRG90TmV0Lmludm9rZU1ldGhvZEFzeW5jKHRoaXMuX0FTU0VNQkxZX05BTUUsICdPblNjcm9sbCcsIGlkLCBuZXdQb3NpdGlvbikpO1xyXG5cdFx0dGVybWluYWwub25TZWxlY3Rpb25DaGFuZ2UoKCkgPT4gRG90TmV0Lmludm9rZU1ldGhvZEFzeW5jKHRoaXMuX0FTU0VNQkxZX05BTUUsICdPblNlbGVjdGlvbkNoYW5nZScsIGlkKSk7XHJcblx0XHR0ZXJtaW5hbC5vblJlbmRlcigoZXZlbnQ6IHsgc3RhcnQ6IG51bWJlciwgZW5kOiBudW1iZXIgfSkgPT4gRG90TmV0Lmludm9rZU1ldGhvZEFzeW5jKHRoaXMuX0FTU0VNQkxZX05BTUUsICdPblJlbmRlcicsIGlkLCBldmVudCkpO1xyXG5cdFx0dGVybWluYWwub25SZXNpemUoKGV2ZW50OiB7IGNvbHM6IG51bWJlciwgcm93czogbnVtYmVyIH0pID0+IERvdE5ldC5pbnZva2VNZXRob2RBc3luYyh0aGlzLl9BU1NFTUJMWV9OQU1FLCAnT25SZXNpemUnLCBpZCwgeyBjb2x1bW5zOiBldmVudC5jb2xzLCByb3dzOiBldmVudC5yb3dzIH0pKTtcclxuXHRcdHRlcm1pbmFsLm9uVGl0bGVDaGFuZ2UoKHRpdGxlOiBzdHJpbmcpID0+IERvdE5ldC5pbnZva2VNZXRob2RBc3luYyh0aGlzLl9BU1NFTUJMWV9OQU1FLCAnT25UaXRsZUNoYW5nZScsIGlkLCB0aXRsZSkpO1xyXG5cdFx0dGVybWluYWwub25CZWxsKCgpID0+IERvdE5ldC5pbnZva2VNZXRob2RBc3luYyh0aGlzLl9BU1NFTUJMWV9OQU1FLCAnT25CZWxsJywgaWQpKTtcclxuXHRcdHRlcm1pbmFsLmF0dGFjaEN1c3RvbUtleUV2ZW50SGFuZGxlcigoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcclxuXHRcdFx0dHJ5IHtcclxuXHRcdFx0XHQvLyBTeW5jaHJvbm91cyBmb3IgQmxhem9yIFdlYkFzc2VtYmx5IGFwcHMgb25seS5cclxuXHRcdFx0XHRyZXR1cm4gRG90TmV0Lmludm9rZU1ldGhvZCh0aGlzLl9BU1NFTUJMWV9OQU1FLCAnQXR0YWNoQ3VzdG9tS2V5RXZlbnRIYW5kbGVyJywgaWQsIHRoaXMuY29udmVydFRvQXJncyhldmVudCkpO1xyXG5cdFx0XHR9IGNhdGNoIHtcclxuXHRcdFx0XHQvLyBBc3luY2hyb25vdXMgZm9yIGJvdGggQmxhem9yIFNlcnZlciBhbmQgQmxhem9yIFdlYkFzc2VtYmx5IGFwcHMuXHJcblx0XHRcdFx0RG90TmV0Lmludm9rZU1ldGhvZEFzeW5jKHRoaXMuX0FTU0VNQkxZX05BTUUsICdBdHRhY2hDdXN0b21LZXlFdmVudEhhbmRsZXInLCBpZCwgdGhpcy5jb252ZXJ0VG9BcmdzKGV2ZW50KSk7XHJcblx0XHRcdFx0cmV0dXJuIHRoaXMuZ2V0VGVybWluYWxCeUlkKGlkKS5jdXN0b21LZXlFdmVudEhhbmRsZXI/LmNhbGwoZXZlbnQpID8/IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcblx0XHQvLyBMb2FkIGFuZCBzZXQgYWRkb25zXHJcblx0XHRjb25zdCBhZGRvbnMgPSBuZXcgTWFwPHN0cmluZywgSVRlcm1pbmFsQWRkb24+KCk7XHJcblx0XHRhZGRvbklkcy5mb3JFYWNoKGFkZG9uSWQgPT4ge1xyXG5cdFx0XHRjb25zdCBhZGRvbiA9IE9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShPYmplY3QuZ2V0UHJvdG90eXBlT2YodGhpcy5fYWRkb25MaXN0LmdldChhZGRvbklkKSkpLCB0aGlzLl9hZGRvbkxpc3QuZ2V0KGFkZG9uSWQpKTtcclxuXHRcdFx0dGVybWluYWwubG9hZEFkZG9uKGFkZG9uKTtcclxuXHRcdFx0YWRkb25zLnNldChhZGRvbklkLCBhZGRvbik7XHJcblx0XHR9KTtcclxuXHJcblx0XHQvLyBPcGVucyB0aGUgdGVybWluYWxcclxuXHRcdHRlcm1pbmFsLm9wZW4ocmVmKTtcclxuXHJcblx0XHQvLyBTZXQgdGhlIHRlcm1pbmFsXHJcblx0XHR0aGlzLl90ZXJtaW5hbHMuc2V0KGlkLCB7XHJcblx0XHRcdHRlcm1pbmFsOiB0ZXJtaW5hbCxcclxuXHRcdFx0YWRkb25zOiBhZGRvbnMsXHJcblx0XHRcdGN1c3RvbUtleUV2ZW50SGFuZGxlcjogdW5kZWZpbmVkLFxyXG5cdFx0fSk7XHJcblxyXG5cdFx0Ly8gSW52b2tlIE9uRmlyc3RSZW5kZXJcclxuXHRcdERvdE5ldC5pbnZva2VNZXRob2RBc3luYyh0aGlzLl9BU1NFTUJMWV9OQU1FLCAnT25GaXJzdFJlbmRlcicsIGlkKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFJlZ2lzdGVyIEFkZG9uXHJcblx0ICogQHBhcmFtIGFkZG9uSWRcclxuXHQgKiBAcGFyYW0gYWRkb25cclxuXHQgKi9cclxuXHRyZWdpc3RlckFkZG9uKGFkZG9uSWQ6IHN0cmluZywgYWRkb246IElUZXJtaW5hbEFkZG9uKSB7XHJcblx0XHR0aGlzLl9hZGRvbkxpc3Quc2V0KGFkZG9uSWQsIGFkZG9uKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFJlZ2lzdGVyIEFkZG9uc1xyXG5cdCAqIEBwYXJhbSBhZGRvbnNcclxuXHQgKi9cclxuXHRyZWdpc3RlckFkZG9ucyhhZGRvbnM6IHsgW2lkOiBzdHJpbmddOiBJVGVybWluYWxBZGRvbiB9KSB7XHJcblx0XHRPYmplY3Qua2V5cyhhZGRvbnMpLmZvckVhY2goYWRkb25JZCA9PiB0aGlzLnJlZ2lzdGVyQWRkb24oYWRkb25JZCwgYWRkb25zW2FkZG9uSWRdKSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBEaXNwb3NlIFRlcm1pbmFsXHJcblx0ICogQHBhcmFtIGlkXHJcblx0ICovXHJcblx0ZGlzcG9zZVRlcm1pbmFsKGlkOiBzdHJpbmcpIHtcclxuXHRcdHRoaXMuX3Rlcm1pbmFscy5nZXQoaWQpPy50ZXJtaW5hbC5kaXNwb3NlKCk7XHJcblx0XHR0aGlzLl90ZXJtaW5hbHMuZGVsZXRlKGlkKTtcclxuXHR9XHJcblxyXG5cdC8vIFh0ZXJtIEZ1bmN0aW9uc1xyXG5cdGdldFJvd3MgPSAoaWQ6IHN0cmluZykgPT4gdGhpcy5nZXRUZXJtaW5hbEJ5SWQoaWQpLnRlcm1pbmFsLnJvd3M7XHJcblx0Z2V0Q29scyA9IChpZDogc3RyaW5nKSA9PiB0aGlzLmdldFRlcm1pbmFsQnlJZChpZCkudGVybWluYWwuY29scztcclxuXHRnZXRPcHRpb25zID0gKGlkOiBzdHJpbmcpID0+IHRoaXMuZ2V0VGVybWluYWxCeUlkKGlkKS50ZXJtaW5hbC5vcHRpb25zO1xyXG5cdHNldE9wdGlvbnMgPSAoaWQ6IHN0cmluZywgb3B0aW9uczogSVRlcm1pbmFsT3B0aW9ucykgPT4gdGhpcy5nZXRUZXJtaW5hbEJ5SWQoaWQpLnRlcm1pbmFsLm9wdGlvbnMgPSBvcHRpb25zO1xyXG5cdGJsdXIgPSAoaWQ6IHN0cmluZykgPT4gdGhpcy5nZXRUZXJtaW5hbEJ5SWQoaWQpLnRlcm1pbmFsLmJsdXIoKTtcclxuXHRmb2N1cyA9IChpZDogc3RyaW5nKSA9PiB0aGlzLmdldFRlcm1pbmFsQnlJZChpZCkudGVybWluYWwuZm9jdXMoKTtcclxuXHRyZXNpemUgPSAoaWQ6IHN0cmluZywgY29sdW1uczogbnVtYmVyLCByb3dzOiBudW1iZXIpID0+IHRoaXMuZ2V0VGVybWluYWxCeUlkKGlkKS50ZXJtaW5hbC5yZXNpemUoY29sdW1ucywgcm93cyk7XHJcblx0aGFzU2VsZWN0aW9uID0gKGlkOiBzdHJpbmcpID0+IHRoaXMuZ2V0VGVybWluYWxCeUlkKGlkKS50ZXJtaW5hbC5oYXNTZWxlY3Rpb24oKTtcclxuXHRnZXRTZWxlY3Rpb24gPSAoaWQ6IHN0cmluZykgPT4gdGhpcy5nZXRUZXJtaW5hbEJ5SWQoaWQpLnRlcm1pbmFsLmdldFNlbGVjdGlvbigpO1xyXG5cdGdldFNlbGVjdGlvblBvc2l0aW9uID0gKGlkOiBzdHJpbmcpID0+IHRoaXMuZ2V0VGVybWluYWxCeUlkKGlkKS50ZXJtaW5hbC5nZXRTZWxlY3Rpb25Qb3NpdGlvbigpO1xyXG5cdGNsZWFyU2VsZWN0aW9uID0gKGlkOiBzdHJpbmcpID0+IHRoaXMuZ2V0VGVybWluYWxCeUlkKGlkKS50ZXJtaW5hbC5jbGVhclNlbGVjdGlvbigpO1xyXG5cdHNlbGVjdCA9IChpZDogc3RyaW5nLCBjb2x1bW46IG51bWJlciwgcm93OiBudW1iZXIsIGxlbmd0aDogbnVtYmVyKSA9PiB0aGlzLmdldFRlcm1pbmFsQnlJZChpZCkudGVybWluYWwuc2VsZWN0KGNvbHVtbiwgcm93LCBsZW5ndGgpO1xyXG5cdHNlbGVjdEFsbCA9IChpZDogc3RyaW5nKSA9PiB0aGlzLmdldFRlcm1pbmFsQnlJZChpZCkudGVybWluYWwuc2VsZWN0QWxsKCk7XHJcblx0c2VsZWN0TGluZXMgPSAoaWQ6IHN0cmluZywgc3RhcnQ6IG51bWJlciwgZW5kOiBudW1iZXIpID0+IHRoaXMuZ2V0VGVybWluYWxCeUlkKGlkKS50ZXJtaW5hbC5zZWxlY3RMaW5lcyhzdGFydCwgZW5kKTtcclxuXHRzY3JvbGxMaW5lcyA9IChpZDogc3RyaW5nLCBhbW91bnQ6IG51bWJlcikgPT4gdGhpcy5nZXRUZXJtaW5hbEJ5SWQoaWQpLnRlcm1pbmFsLnNjcm9sbExpbmVzKGFtb3VudCk7XHJcblx0c2Nyb2xsUGFnZXMgPSAoaWQ6IHN0cmluZywgcGFnZUNvdW50OiBudW1iZXIpID0+IHRoaXMuZ2V0VGVybWluYWxCeUlkKGlkKS50ZXJtaW5hbC5zY3JvbGxQYWdlcyhwYWdlQ291bnQpO1xyXG5cdHNjcm9sbFRvVG9wID0gKGlkOiBzdHJpbmcpID0+IHRoaXMuZ2V0VGVybWluYWxCeUlkKGlkKS50ZXJtaW5hbC5zY3JvbGxUb1RvcCgpO1xyXG5cdHNjcm9sbFRvQm90dG9tID0gKGlkOiBzdHJpbmcpID0+IHRoaXMuZ2V0VGVybWluYWxCeUlkKGlkKS50ZXJtaW5hbC5zY3JvbGxUb0JvdHRvbSgpO1xyXG5cdHNjcm9sbFRvTGluZSA9IChpZDogc3RyaW5nLCBsaW5lOiBudW1iZXIpID0+IHRoaXMuZ2V0VGVybWluYWxCeUlkKGlkKS50ZXJtaW5hbC5zY3JvbGxUb0xpbmUobGluZSk7XHJcblx0Y2xlYXIgPSAoaWQ6IHN0cmluZykgPT4gdGhpcy5nZXRUZXJtaW5hbEJ5SWQoaWQpLnRlcm1pbmFsLmNsZWFyKCk7XHJcblx0d3JpdGUgPSAoaWQ6IHN0cmluZywgZGF0YTogc3RyaW5nKSA9PiB0aGlzLmdldFRlcm1pbmFsQnlJZChpZCkudGVybWluYWwud3JpdGUoZGF0YSk7XHJcblx0d3JpdGVsbiA9IChpZDogc3RyaW5nLCBkYXRhOiBzdHJpbmcpID0+IHRoaXMuZ2V0VGVybWluYWxCeUlkKGlkKS50ZXJtaW5hbC53cml0ZWxuKGRhdGEpO1xyXG5cdHBhc3RlID0gKGlkOiBzdHJpbmcsIGRhdGE6IHN0cmluZykgPT4gdGhpcy5nZXRUZXJtaW5hbEJ5SWQoaWQpLnRlcm1pbmFsLnBhc3RlKGRhdGEpO1xyXG5cdHJlZnJlc2ggPSAoaWQ6IHN0cmluZywgc3RhcnQ6IG51bWJlciwgZW5kOiBudW1iZXIpID0+IHRoaXMuZ2V0VGVybWluYWxCeUlkKGlkKS50ZXJtaW5hbC5yZWZyZXNoKHN0YXJ0LCBlbmQpO1xyXG5cdHJlc2V0ID0gKGlkOiBzdHJpbmcpID0+IHRoaXMuZ2V0VGVybWluYWxCeUlkKGlkKS50ZXJtaW5hbC5yZXNldCgpO1xyXG5cclxuXHQvKipcclxuXHQgKiBJbnZva2UgYWRkb24gZnVuY3Rpb25cclxuXHQgKiBAcGFyYW0gaWRcclxuXHQgKiBAcGFyYW0gYWRkb25JZFxyXG5cdCAqIEBwYXJhbSBmdW5jdGlvbk5hbWVcclxuXHQgKi9cclxuXHRpbnZva2VBZGRvbkZ1bmN0aW9uKGlkOiBzdHJpbmcsIGFkZG9uSWQ6IHN0cmluZywgZnVuY3Rpb25OYW1lOiBzdHJpbmcpIHtcclxuXHRcdHJldHVybiB0aGlzLmdldFRlcm1pbmFsQnlJZChpZCkuYWRkb25zLmdldChhZGRvbklkKVtmdW5jdGlvbk5hbWVdKC4uLmFyZ3VtZW50c1szXSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBHZXQgVGVybWluYWwgb2JqZWN0IGJ5IElkXHJcblx0ICogQHBhcmFtIGlkXHJcblx0ICovXHJcblx0Z2V0VGVybWluYWxCeUlkKGlkOiBzdHJpbmcpOiBJVGVybWluYWxPYmplY3Qge1xyXG5cdFx0Y29uc3QgdGVybWluYWwgPSB0aGlzLl90ZXJtaW5hbHMuZ2V0KGlkKTtcclxuXHJcblx0XHRpZiAoIXRlcm1pbmFsKSB7XHJcblx0XHRcdHRocm93IG5ldyBFcnJvcignRmFpbCB0byBnZXQgdGVybWluYWwgYnkgcmVmZXJlbmNlIGlkJyk7XHJcblx0XHR9XHJcblxyXG5cdFx0cmV0dXJuIHRlcm1pbmFsO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQ29udmVydCB0byBNaWNyb3NvZnQuQXNwTmV0Q29yZS5Db21wb25lbnRzLldlYi5LZXlib2FyZEV2ZW50QXJnc1xyXG5cdCAqIEBwYXJhbSBldmVudFxyXG5cdCAqL1xyXG5cdHByaXZhdGUgY29udmVydFRvQXJncyhldmVudDogS2V5Ym9hcmRFdmVudCkge1xyXG5cdFx0cmV0dXJuIHtcclxuXHRcdFx0a2V5OiBldmVudC5rZXksXHJcblx0XHRcdGNvZGU6IGV2ZW50LmNvZGUsXHJcblx0XHRcdGxvY2F0aW9uOiBldmVudC5sb2NhdGlvbixcclxuXHRcdFx0cmVwZWF0OiBldmVudC5yZXBlYXQsXHJcblx0XHRcdGN0cmxLZXk6IGV2ZW50LmN0cmxLZXksXHJcblx0XHRcdHNoaWZ0S2V5OiBldmVudC5zaGlmdEtleSxcclxuXHRcdFx0YWx0S2V5OiBldmVudC5hbHRLZXksXHJcblx0XHRcdG1ldGFLZXk6IGV2ZW50Lm1ldGFLZXksXHJcblx0XHRcdHR5cGU6IGV2ZW50LnR5cGVcclxuXHRcdH07XHJcblx0fVxyXG59XHJcblxyXG5kZWNsYXJlIGdsb2JhbCB7XHJcblx0aW50ZXJmYWNlIFdpbmRvdyB7XHJcblx0XHRYdGVybUJsYXpvcjogWHRlcm1CbGF6b3I7XHJcblx0fVxyXG59XHJcblxyXG53aW5kb3cuWHRlcm1CbGF6b3IgPSBuZXcgWHRlcm1CbGF6b3IoKTtcclxuIl0sIm5hbWVzIjpbInQiLCJzZWxmIiwiZSIsImkiLCJzIiwidGhpcyIsIl9fZGVjb3JhdGUiLCJyIiwibiIsImFyZ3VtZW50cyIsImxlbmd0aCIsIm8iLCJPYmplY3QiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJSZWZsZWN0IiwiZGVjb3JhdGUiLCJhIiwiZGVmaW5lUHJvcGVydHkiLCJfX3BhcmFtIiwidmFsdWUiLCJBY2Nlc3NpYmlsaXR5TWFuYWdlciIsImgiLCJjIiwibCIsImQiLCJfIiwiRGlzcG9zYWJsZSIsImNvbnN0cnVjdG9yIiwic3VwZXIiLCJfdGVybWluYWwiLCJfcmVuZGVyU2VydmljZSIsIl9saXZlUmVnaW9uTGluZUNvdW50IiwiX2NoYXJzVG9Db25zdW1lIiwiX2NoYXJzVG9Bbm5vdW5jZSIsIl9hY2Nlc3NpYmlsaXR5Q29udGFpbmVyIiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50IiwiY2xhc3NMaXN0IiwiYWRkIiwiX3Jvd0NvbnRhaW5lciIsInNldEF0dHJpYnV0ZSIsIl9yb3dFbGVtZW50cyIsInJvd3MiLCJfY3JlYXRlQWNjZXNzaWJpbGl0eVRyZWVOb2RlIiwiYXBwZW5kQ2hpbGQiLCJfdG9wQm91bmRhcnlGb2N1c0xpc3RlbmVyIiwiX2hhbmRsZUJvdW5kYXJ5Rm9jdXMiLCJfYm90dG9tQm91bmRhcnlGb2N1c0xpc3RlbmVyIiwiYWRkRXZlbnRMaXN0ZW5lciIsIl9yZWZyZXNoUm93c0RpbWVuc2lvbnMiLCJfbGl2ZVJlZ2lvbiIsIl9saXZlUmVnaW9uRGVib3VuY2VyIiwicmVnaXN0ZXIiLCJUaW1lQmFzZWREZWJvdW5jZXIiLCJfcmVuZGVyUm93cyIsImJpbmQiLCJlbGVtZW50IiwiRXJyb3IiLCJpbnNlcnRBZGphY2VudEVsZW1lbnQiLCJvblJlc2l6ZSIsIl9oYW5kbGVSZXNpemUiLCJvblJlbmRlciIsIl9yZWZyZXNoUm93cyIsInN0YXJ0IiwiZW5kIiwib25TY3JvbGwiLCJvbkExMXlDaGFyIiwiX2hhbmRsZUNoYXIiLCJvbkxpbmVGZWVkIiwib25BMTF5VGFiIiwiX2hhbmRsZVRhYiIsIm9uS2V5IiwiX2hhbmRsZUtleSIsImtleSIsIm9uQmx1ciIsIl9jbGVhckxpdmVSZWdpb24iLCJvbkRpbWVuc2lvbnNDaGFuZ2UiLCJfc2NyZWVuRHByTW9uaXRvciIsIlNjcmVlbkRwck1vbml0b3IiLCJ3aW5kb3ciLCJzZXRMaXN0ZW5lciIsImFkZERpc3Bvc2FibGVEb21MaXN0ZW5lciIsInRvRGlzcG9zYWJsZSIsInJlbW92ZSIsInNoaWZ0IiwidGV4dENvbnRlbnQiLCJ0b29NdWNoT3V0cHV0IiwiaXNNYWMiLCJwYXJlbnROb2RlIiwic2V0VGltZW91dCIsInRlc3QiLCJwdXNoIiwicmVmcmVzaCIsImJ1ZmZlciIsImxpbmVzIiwidG9TdHJpbmciLCJ0cmFuc2xhdGVCdWZmZXJMaW5lVG9TdHJpbmciLCJ5ZGlzcCIsImlubmVyVGV4dCIsIl9hbm5vdW5jZUNoYXJhY3RlcnMiLCJ0YXJnZXQiLCJnZXRBdHRyaWJ1dGUiLCJyZWxhdGVkVGFyZ2V0IiwicG9wIiwicmVtb3ZlQ2hpbGQiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwidW5zaGlmdCIsInNjcm9sbExpbmVzIiwiZm9jdXMiLCJwcmV2ZW50RGVmYXVsdCIsInN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbiIsImNoaWxkcmVuIiwidGFiSW5kZXgiLCJfcmVmcmVzaFJvd0RpbWVuc2lvbnMiLCJkaW1lbnNpb25zIiwiY3NzIiwiY2VsbCIsImhlaWdodCIsInN0eWxlIiwid2lkdGgiLCJjYW52YXMiLCJJUmVuZGVyU2VydmljZSIsInJlcGxhY2UiLCJkZWNQcml2YXRlTW9kZXMiLCJicmFja2V0ZWRQYXN0ZU1vZGUiLCJyYXdPcHRpb25zIiwiaWdub3JlQnJhY2tldGVkUGFzdGVNb2RlIiwidHJpZ2dlckRhdGFFdmVudCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsImNsaWVudFgiLCJsZWZ0IiwiY2xpZW50WSIsInRvcCIsInpJbmRleCIsInJpZ2h0Q2xpY2tIYW5kbGVyIiwibW92ZVRleHRBcmVhVW5kZXJNb3VzZUN1cnNvciIsInBhc3RlIiwiaGFuZGxlUGFzdGVFdmVudCIsImNvcHlIYW5kbGVyIiwiYnJhY2tldFRleHRGb3JQYXN0ZSIsInByZXBhcmVUZXh0Rm9yVGVybWluYWwiLCJjbGlwYm9hcmREYXRhIiwic2V0RGF0YSIsInNlbGVjdGlvblRleHQiLCJzdG9wUHJvcGFnYXRpb24iLCJnZXREYXRhIiwicmlnaHRDbGlja1NlbGVjdCIsInNlbGVjdCIsIkNvbG9yQ29udHJhc3RDYWNoZSIsIl9jb2xvciIsIlR3b0tleU1hcCIsIl9jc3MiLCJzZXRDc3MiLCJzZXQiLCJnZXRDc3MiLCJnZXQiLCJzZXRDb2xvciIsImdldENvbG9yIiwiY2xlYXIiLCJkaXNwb3NlIiwiTGlua2lmaWVyMiIsImN1cnJlbnRMaW5rIiwiX2N1cnJlbnRMaW5rIiwiX2J1ZmZlclNlcnZpY2UiLCJfbGlua1Byb3ZpZGVycyIsIl9saW5rQ2FjaGVEaXNwb3NhYmxlcyIsIl9pc01vdXNlT3V0IiwiX3dhc1Jlc2l6ZWQiLCJfYWN0aXZlTGluZSIsIl9vblNob3dMaW5rVW5kZXJsaW5lIiwiRXZlbnRFbWl0dGVyIiwib25TaG93TGlua1VuZGVybGluZSIsImV2ZW50IiwiX29uSGlkZUxpbmtVbmRlcmxpbmUiLCJvbkhpZGVMaW5rVW5kZXJsaW5lIiwiZ2V0RGlzcG9zZUFycmF5RGlzcG9zYWJsZSIsIl9sYXN0TW91c2VFdmVudCIsIl9jbGVhckN1cnJlbnRMaW5rIiwicmVnaXN0ZXJMaW5rUHJvdmlkZXIiLCJpbmRleE9mIiwic3BsaWNlIiwiYXR0YWNoVG9Eb20iLCJfZWxlbWVudCIsIl9tb3VzZVNlcnZpY2UiLCJfaGFuZGxlTW91c2VNb3ZlIiwiX2hhbmRsZU1vdXNlRG93biIsIl9oYW5kbGVNb3VzZVVwIiwiX3Bvc2l0aW9uRnJvbU1vdXNlRXZlbnQiLCJjb21wb3NlZFBhdGgiLCJjb250YWlucyIsIl9sYXN0QnVmZmVyQ2VsbCIsIngiLCJ5IiwiX2hhbmRsZUhvdmVyIiwiX2Fza0ZvckxpbmsiLCJfbGlua0F0UG9zaXRpb24iLCJsaW5rIiwiX2FjdGl2ZVByb3ZpZGVyUmVwbGllcyIsImZvckVhY2giLCJNYXAiLCJlbnRyaWVzIiwiX2NoZWNrTGlua1Byb3ZpZGVyUmVzdWx0IiwicHJvdmlkZUxpbmtzIiwibWFwIiwic2l6ZSIsIl9yZW1vdmVJbnRlcnNlY3RpbmdMaW5rcyIsIlNldCIsInJhbmdlIiwiY29scyIsImhhcyIsImZpbmQiLCJfaGFuZGxlTmV3TGluayIsIl9tb3VzZURvd25MaW5rIiwiYWN0aXZhdGUiLCJ0ZXh0IiwiX2xpbmtMZWF2ZSIsImRpc3Bvc2VBcnJheSIsInN0YXRlIiwiZGVjb3JhdGlvbnMiLCJ1bmRlcmxpbmUiLCJwb2ludGVyQ3Vyc29yIiwiaXNIb3ZlcmVkIiwiX2xpbmtIb3ZlciIsImRlZmluZVByb3BlcnRpZXMiLCJ0b2dnbGUiLCJfZmlyZVVuZGVybGluZUV2ZW50Iiwib25SZW5kZXJlZFZpZXdwb3J0Q2hhbmdlIiwiaG92ZXIiLCJfY3JlYXRlTGlua1VuZGVybGluZUV2ZW50IiwiZmlyZSIsImxlYXZlIiwiZ2V0Q29vcmRzIiwieDEiLCJ5MSIsIngyIiwieTIiLCJmZyIsIklCdWZmZXJTZXJ2aWNlIiwicHJvbXB0TGFiZWwiLCJPc2NMaW5rUHJvdmlkZXIiLCJfb3B0aW9uc1NlcnZpY2UiLCJfb3NjTGlua1NlcnZpY2UiLCJsaW5rSGFuZGxlciIsIkNlbGxEYXRhIiwiZ2V0VHJpbW1lZExlbmd0aCIsImhhc0NvbnRlbnQiLCJsb2FkQ2VsbCIsImhhc0V4dGVuZGVkQXR0cnMiLCJleHRlbmRlZCIsInVybElkIiwiZ2V0TGlua0RhdGEiLCJ1cmkiLCJhbGxvd05vbkh0dHBQcm90b2NvbHMiLCJVUkwiLCJpbmNsdWRlcyIsInByb3RvY29sIiwiY2FsbCIsImNvbmZpcm0iLCJvcGVuIiwib3BlbmVyIiwibG9jYXRpb24iLCJocmVmIiwiY29uc29sZSIsIndhcm4iLCJJT3B0aW9uc1NlcnZpY2UiLCJJT3NjTGlua1NlcnZpY2UiLCJSZW5kZXJEZWJvdW5jZXIiLCJfcGFyZW50V2luZG93IiwiX3JlbmRlckNhbGxiYWNrIiwiX3JlZnJlc2hDYWxsYmFja3MiLCJfYW5pbWF0aW9uRnJhbWUiLCJjYW5jZWxBbmltYXRpb25GcmFtZSIsImFkZFJlZnJlc2hDYWxsYmFjayIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsIl9pbm5lclJlZnJlc2giLCJfcm93Q291bnQiLCJfcm93U3RhcnQiLCJNYXRoIiwibWluIiwiX3Jvd0VuZCIsIm1heCIsIl9ydW5SZWZyZXNoQ2FsbGJhY2tzIiwiX2N1cnJlbnREZXZpY2VQaXhlbFJhdGlvIiwiZGV2aWNlUGl4ZWxSYXRpbyIsImNsZWFyTGlzdGVuZXIiLCJfbGlzdGVuZXIiLCJfb3V0ZXJMaXN0ZW5lciIsIl91cGRhdGVEcHIiLCJfcmVzb2x1dGlvbk1lZGlhTWF0Y2hMaXN0IiwicmVtb3ZlTGlzdGVuZXIiLCJtYXRjaE1lZGlhIiwiYWRkTGlzdGVuZXIiLCJUZXJtaW5hbCIsInUiLCJmIiwidiIsInAiLCJnIiwibSIsIlMiLCJDIiwiYiIsInciLCJFIiwiayIsIkwiLCJEIiwiUiIsIkEiLCJCIiwiVCIsIk0iLCJPIiwiUCIsIkNvcmVUZXJtaW5hbCIsIm9uRm9jdXMiLCJfb25Gb2N1cyIsIl9vbkJsdXIiLCJfb25BMTF5Q2hhckVtaXR0ZXIiLCJfb25BMTF5VGFiRW1pdHRlciIsIm9uV2lsbE9wZW4iLCJfb25XaWxsT3BlbiIsImJyb3dzZXIiLCJfa2V5RG93bkhhbmRsZWQiLCJfa2V5RG93blNlZW4iLCJfa2V5UHJlc3NIYW5kbGVkIiwiX3VucHJvY2Vzc2VkRGVhZEtleSIsIl9hY2Nlc3NpYmlsaXR5TWFuYWdlciIsIk11dGFibGVEaXNwb3NhYmxlIiwiX29uQ3Vyc29yTW92ZSIsIm9uQ3Vyc29yTW92ZSIsIl9vbktleSIsIl9vblJlbmRlciIsIl9vblNlbGVjdGlvbkNoYW5nZSIsIm9uU2VsZWN0aW9uQ2hhbmdlIiwiX29uVGl0bGVDaGFuZ2UiLCJvblRpdGxlQ2hhbmdlIiwiX29uQmVsbCIsIm9uQmVsbCIsIl9zZXR1cCIsImxpbmtpZmllcjIiLCJfaW5zdGFudGlhdGlvblNlcnZpY2UiLCJjcmVhdGVJbnN0YW5jZSIsIl9kZWNvcmF0aW9uU2VydmljZSIsIkRlY29yYXRpb25TZXJ2aWNlIiwic2V0U2VydmljZSIsIklEZWNvcmF0aW9uU2VydmljZSIsIl9pbnB1dEhhbmRsZXIiLCJvblJlcXVlc3RCZWxsIiwib25SZXF1ZXN0UmVmcmVzaFJvd3MiLCJvblJlcXVlc3RTZW5kRm9jdXMiLCJfcmVwb3J0Rm9jdXMiLCJvblJlcXVlc3RSZXNldCIsInJlc2V0Iiwib25SZXF1ZXN0V2luZG93c09wdGlvbnNSZXBvcnQiLCJfcmVwb3J0V2luZG93c09wdGlvbnMiLCJvbkNvbG9yIiwiX2hhbmRsZUNvbG9yRXZlbnQiLCJmb3J3YXJkRXZlbnQiLCJfYWZ0ZXJSZXNpemUiLCJfY3VzdG9tS2V5RXZlbnRIYW5kbGVyIiwiX3RoZW1lU2VydmljZSIsImluZGV4IiwidHlwZSIsImNvbG9yIiwidG9Db2xvclJHQiIsImNvbG9ycyIsImFuc2kiLCJjb3JlU2VydmljZSIsIkMwIiwiRVNDIiwidG9SZ2JTdHJpbmciLCJDMV9FU0NBUEVEIiwiU1QiLCJtb2RpZnlDb2xvcnMiLCJyZ2JhIiwidG9Db2xvciIsInJlc3RvcmVDb2xvciIsImJ1ZmZlcnMiLCJhY3RpdmUiLCJ0ZXh0YXJlYSIsInByZXZlbnRTY3JvbGwiLCJfaGFuZGxlU2NyZWVuUmVhZGVyTW9kZU9wdGlvbkNoYW5nZSIsIl9oYW5kbGVUZXh0QXJlYUZvY3VzIiwic2VuZEZvY3VzIiwidXBkYXRlQ3Vyc29yU3R5bGUiLCJfc2hvd0N1cnNvciIsImJsdXIiLCJfaGFuZGxlVGV4dEFyZWFCbHVyIiwiX3N5bmNUZXh0QXJlYSIsImlzQ3Vyc29ySW5WaWV3cG9ydCIsIl9jb21wb3NpdGlvbkhlbHBlciIsImlzQ29tcG9zaW5nIiwieWJhc2UiLCJnZXRXaWR0aCIsImxpbmVIZWlnaHQiLCJfaW5pdEdsb2JhbCIsIl9iaW5kS2V5cyIsImhhc1NlbGVjdGlvbiIsIl9zZWxlY3Rpb25TZXJ2aWNlIiwib3B0aW9uc1NlcnZpY2UiLCJpc0ZpcmVmb3giLCJidXR0b24iLCJzY3JlZW5FbGVtZW50Iiwib3B0aW9ucyIsInJpZ2h0Q2xpY2tTZWxlY3RzV29yZCIsImlzTGludXgiLCJfa2V5VXAiLCJfa2V5RG93biIsIl9rZXlQcmVzcyIsImNvbXBvc2l0aW9uc3RhcnQiLCJjb21wb3NpdGlvbnVwZGF0ZSIsImNvbXBvc2l0aW9uZW5kIiwiX2lucHV0RXZlbnQiLCJ1cGRhdGVDb21wb3NpdGlvbkVsZW1lbnRzIiwiaXNDb25uZWN0ZWQiLCJfbG9nU2VydmljZSIsImRlYnVnIiwiX2RvY3VtZW50Iiwib3duZXJEb2N1bWVudCIsImRpciIsImNyZWF0ZURvY3VtZW50RnJhZ21lbnQiLCJfdmlld3BvcnRFbGVtZW50IiwiX3ZpZXdwb3J0U2Nyb2xsQXJlYSIsIl9oZWxwZXJDb250YWluZXIiLCJpc0Nocm9tZU9TIiwiX2NvcmVCcm93c2VyU2VydmljZSIsIkNvcmVCcm93c2VyU2VydmljZSIsImRlZmF1bHRWaWV3IiwiSUNvcmVCcm93c2VyU2VydmljZSIsIl9jaGFyU2l6ZVNlcnZpY2UiLCJDaGFyU2l6ZVNlcnZpY2UiLCJJQ2hhclNpemVTZXJ2aWNlIiwiVGhlbWVTZXJ2aWNlIiwiSVRoZW1lU2VydmljZSIsIl9jaGFyYWN0ZXJKb2luZXJTZXJ2aWNlIiwiQ2hhcmFjdGVySm9pbmVyU2VydmljZSIsIklDaGFyYWN0ZXJKb2luZXJTZXJ2aWNlIiwiUmVuZGVyU2VydmljZSIsInJlc2l6ZSIsIl9jb21wb3NpdGlvblZpZXciLCJDb21wb3NpdGlvbkhlbHBlciIsImhhc1JlbmRlcmVyIiwic2V0UmVuZGVyZXIiLCJfY3JlYXRlUmVuZGVyZXIiLCJNb3VzZVNlcnZpY2UiLCJJTW91c2VTZXJ2aWNlIiwidmlld3BvcnQiLCJWaWV3cG9ydCIsIm9uUmVxdWVzdFNjcm9sbExpbmVzIiwiYW1vdW50Iiwic3VwcHJlc3NTY3JvbGxFdmVudCIsIm9uUmVxdWVzdFN5bmNTY3JvbGxCYXIiLCJzeW5jU2Nyb2xsQXJlYSIsImhhbmRsZUN1cnNvck1vdmUiLCJoYW5kbGVSZXNpemUiLCJoYW5kbGVCbHVyIiwiaGFuZGxlRm9jdXMiLCJTZWxlY3Rpb25TZXJ2aWNlIiwiSVNlbGVjdGlvblNlcnZpY2UiLCJvblJlcXVlc3RSZWRyYXciLCJoYW5kbGVTZWxlY3Rpb25DaGFuZ2VkIiwiY29sdW1uU2VsZWN0TW9kZSIsIm9uTGludXhNb3VzZVNlbGVjdGlvbiIsIl9vblNjcm9sbCIsIkJ1ZmZlckRlY29yYXRpb25SZW5kZXJlciIsImhhbmRsZU1vdXNlRG93biIsImNvcmVNb3VzZVNlcnZpY2UiLCJhcmVNb3VzZUV2ZW50c0FjdGl2ZSIsImRpc2FibGUiLCJlbmFibGUiLCJzY3JlZW5SZWFkZXJNb2RlIiwib25TcGVjaWZpY09wdGlvbkNoYW5nZSIsIm92ZXJ2aWV3UnVsZXJXaWR0aCIsIl9vdmVydmlld1J1bGVyUmVuZGVyZXIiLCJPdmVydmlld1J1bGVyUmVuZGVyZXIiLCJtZWFzdXJlIiwiYmluZE1vdXNlIiwiRG9tUmVuZGVyZXIiLCJnZXRNb3VzZVJlcG9ydENvb3JkcyIsIm92ZXJyaWRlVHlwZSIsImJ1dHRvbnMiLCJnZXRMaW5lc1Njcm9sbGVkIiwiZGVsdGFZIiwidHJpZ2dlck1vdXNlRXZlbnQiLCJjb2wiLCJyb3ciLCJhY3Rpb24iLCJjdHJsIiwiY3RybEtleSIsImFsdCIsImFsdEtleSIsInNoaWZ0S2V5IiwibW91c2V1cCIsIndoZWVsIiwibW91c2VkcmFnIiwibW91c2Vtb3ZlIiwiY2FuY2VsIiwib25Qcm90b2NvbENoYW5nZSIsImxvZ0xldmVsIiwiZXhwbGFpbkV2ZW50cyIsInBhc3NpdmUiLCJhY3RpdmVQcm90b2NvbCIsInNob3VsZEZvcmNlU2VsZWN0aW9uIiwiaGFzU2Nyb2xsYmFjayIsImFwcGxpY2F0aW9uQ3Vyc29yS2V5cyIsImFicyIsImhhbmRsZVdoZWVsIiwiaGFuZGxlVG91Y2hTdGFydCIsImhhbmRsZVRvdWNoTW92ZSIsInJlZnJlc2hSb3dzIiwic2hvdWxkQ29sdW1uU2VsZWN0IiwiaXNDdXJzb3JJbml0aWFsaXplZCIsImF0dGFjaEN1c3RvbUtleUV2ZW50SGFuZGxlciIsInJlZ2lzdGVyQ2hhcmFjdGVySm9pbmVyIiwiZGVyZWdpc3RlckNoYXJhY3RlckpvaW5lciIsImRlcmVnaXN0ZXIiLCJtYXJrZXJzIiwicmVnaXN0ZXJNYXJrZXIiLCJhZGRNYXJrZXIiLCJyZWdpc3RlckRlY29yYXRpb24iLCJzZXRTZWxlY3Rpb24iLCJnZXRTZWxlY3Rpb24iLCJnZXRTZWxlY3Rpb25Qb3NpdGlvbiIsInNlbGVjdGlvblN0YXJ0Iiwic2VsZWN0aW9uRW5kIiwiY2xlYXJTZWxlY3Rpb24iLCJzZWxlY3RBbGwiLCJzZWxlY3RMaW5lcyIsIm1hY09wdGlvbklzTWV0YSIsImtleWRvd24iLCJzY3JvbGxPblVzZXJJbnB1dCIsInNjcm9sbFRvQm90dG9tIiwiZXZhbHVhdGVLZXlib2FyZEV2ZW50IiwiX2lzVGhpcmRMZXZlbFNoaWZ0IiwibWV0YUtleSIsImNoYXJDb2RlQXQiLCJFVFgiLCJDUiIsImRvbUV2ZW50IiwiaXNXaW5kb3dzIiwiZ2V0TW9kaWZpZXJTdGF0ZSIsImtleUNvZGUiLCJjaGFyQ29kZSIsIndoaWNoIiwiU3RyaW5nIiwiZnJvbUNoYXJDb2RlIiwiZGF0YSIsImlucHV0VHlwZSIsImNvbXBvc2VkIiwiaGFzVmFsaWRTaXplIiwiY2xlYXJBbGxNYXJrZXJzIiwiZ2V0QmxhbmtMaW5lIiwiREVGQVVMVF9BVFRSX0RBVEEiLCJwb3NpdGlvbiIsInNvdXJjZSIsImNsZWFyVGV4dHVyZUF0bGFzIiwiV2luZG93c09wdGlvbnNSZXBvcnRUeXBlIiwiR0VUX1dJTl9TSVpFX1BJWEVMUyIsInRvRml4ZWQiLCJHRVRfQ0VMTF9TSVpFX1BJWEVMUyIsImNhbmNlbEV2ZW50cyIsIl9kZWJvdW5jZVRocmVzaG9sZE1TIiwiX2xhc3RSZWZyZXNoTXMiLCJfYWRkaXRpb25hbFJlZnJlc2hSZXF1ZXN0ZWQiLCJfcmVmcmVzaFRpbWVvdXRJRCIsImNsZWFyVGltZW91dCIsIkRhdGUiLCJub3ciLCJfc2Nyb2xsQXJlYSIsInNjcm9sbEJhcldpZHRoIiwiX2N1cnJlbnRSb3dIZWlnaHQiLCJfY3VycmVudERldmljZUNlbGxIZWlnaHQiLCJfbGFzdFJlY29yZGVkQnVmZmVyTGVuZ3RoIiwiX2xhc3RSZWNvcmRlZFZpZXdwb3J0SGVpZ2h0IiwiX2xhc3RSZWNvcmRlZEJ1ZmZlckhlaWdodCIsIl9sYXN0VG91Y2hZIiwiX2xhc3RTY3JvbGxUb3AiLCJfd2hlZWxQYXJ0aWFsU2Nyb2xsIiwiX3JlZnJlc2hBbmltYXRpb25GcmFtZSIsIl9pZ25vcmVOZXh0U2Nyb2xsRXZlbnQiLCJfc21vb3RoU2Nyb2xsU3RhdGUiLCJzdGFydFRpbWUiLCJvcmlnaW4iLCJfb25SZXF1ZXN0U2Nyb2xsTGluZXMiLCJvZmZzZXRXaWR0aCIsIl9oYW5kbGVTY3JvbGwiLCJfYWN0aXZlQnVmZmVyIiwib25CdWZmZXJBY3RpdmF0ZSIsImFjdGl2ZUJ1ZmZlciIsIl9yZW5kZXJEaW1lbnNpb25zIiwiX2hhbmRsZVRoZW1lQ2hhbmdlIiwib25DaGFuZ2VDb2xvcnMiLCJiYWNrZ3JvdW5kQ29sb3IiLCJiYWNrZ3JvdW5kIiwiX3JlZnJlc2giLCJkZXZpY2UiLCJkcHIiLCJvZmZzZXRIZWlnaHQiLCJyb3VuZCIsInNjcm9sbFRvcCIsIm9mZnNldFBhcmVudCIsIl9zbW9vdGhTY3JvbGwiLCJfaXNEaXNwb3NlZCIsIl9zbW9vdGhTY3JvbGxQZXJjZW50IiwiX2NsZWFyU21vb3RoU2Nyb2xsU3RhdGUiLCJzbW9vdGhTY3JvbGxEdXJhdGlvbiIsIl9idWJibGVTY3JvbGwiLCJjYW5jZWxhYmxlIiwiX2dldFBpeGVsc1Njcm9sbGVkIiwic2Nyb2xsSGVpZ2h0IiwiX2FwcGx5U2Nyb2xsTW9kaWZpZXIiLCJkZWx0YU1vZGUiLCJXaGVlbEV2ZW50IiwiRE9NX0RFTFRBX0xJTkUiLCJET01fREVMVEFfUEFHRSIsImdldEJ1ZmZlckVsZW1lbnRzIiwiaXNXcmFwcGVkIiwidHJhbnNsYXRlVG9TdHJpbmciLCJidWZmZXJFbGVtZW50cyIsImN1cnNvckVsZW1lbnQiLCJET01fREVMVEFfUElYRUwiLCJmbG9vciIsImZhc3RTY3JvbGxNb2RpZmllciIsImZhc3RTY3JvbGxTZW5zaXRpdml0eSIsInNjcm9sbFNlbnNpdGl2aXR5IiwidG91Y2hlcyIsInBhZ2VZIiwiX3NjcmVlbkVsZW1lbnQiLCJfZGVjb3JhdGlvbkVsZW1lbnRzIiwiX2FsdEJ1ZmZlcklzQWN0aXZlIiwiX2RpbWVuc2lvbnNDaGFuZ2VkIiwiX2NvbnRhaW5lciIsIl9kb1JlZnJlc2hEZWNvcmF0aW9ucyIsIl9xdWV1ZVJlZnJlc2giLCJvbkRlY29yYXRpb25SZWdpc3RlcmVkIiwib25EZWNvcmF0aW9uUmVtb3ZlZCIsIl9yZW1vdmVEZWNvcmF0aW9uIiwiX3JlbmRlckRlY29yYXRpb24iLCJfcmVmcmVzaFN0eWxlIiwiX3JlZnJlc2hYUG9zaXRpb24iLCJfY3JlYXRlRWxlbWVudCIsImxheWVyIiwibWFya2VyIiwibGluZSIsImRpc3BsYXkiLCJvblJlbmRlckVtaXR0ZXIiLCJvbkRpc3Bvc2UiLCJkZWxldGUiLCJhbmNob3IiLCJyaWdodCIsIkNvbG9yWm9uZVN0b3JlIiwiX3pvbmVzIiwiX3pvbmVQb29sIiwiX3pvbmVQb29sSW5kZXgiLCJfbGluZVBhZGRpbmciLCJmdWxsIiwiY2VudGVyIiwiem9uZXMiLCJhZGREZWNvcmF0aW9uIiwib3ZlcnZpZXdSdWxlck9wdGlvbnMiLCJfbGluZUludGVyc2VjdHNab25lIiwiX2xpbmVBZGphY2VudFRvWm9uZSIsIl9hZGRMaW5lVG9ab25lIiwic3RhcnRCdWZmZXJMaW5lIiwiZW5kQnVmZmVyTGluZSIsInNldFBhZGRpbmciLCJfd2lkdGgiLCJfY29yZUJyb3dzZVNlcnZpY2UiLCJfY29sb3Jab25lU3RvcmUiLCJfc2hvdWxkVXBkYXRlRGltZW5zaW9ucyIsIl9zaG91bGRVcGRhdGVBbmNob3IiLCJfbGFzdEtub3duQnVmZmVyTGVuZ3RoIiwiX2NhbnZhcyIsIl9yZWZyZXNoQ2FudmFzRGltZW5zaW9ucyIsInBhcmVudEVsZW1lbnQiLCJpbnNlcnRCZWZvcmUiLCJnZXRDb250ZXh0IiwiX2N0eCIsIl9yZWdpc3RlckRlY29yYXRpb25MaXN0ZW5lcnMiLCJfcmVnaXN0ZXJCdWZmZXJDaGFuZ2VMaXN0ZW5lcnMiLCJfcmVnaXN0ZXJEaW1lbnNpb25DaGFuZ2VMaXN0ZW5lcnMiLCJub3JtYWwiLCJfcmVmcmVzaERyYXdIZWlnaHRDb25zdGFudHMiLCJfcmVmcmVzaENvbG9yWm9uZVBhZGRpbmciLCJfY29udGFpbmVySGVpZ2h0IiwiY2xpZW50SGVpZ2h0IiwiX3JlZnJlc2hEcmF3Q29uc3RhbnRzIiwiY2VpbCIsIl9yZWZyZXNoRGVjb3JhdGlvbnMiLCJjbGVhclJlY3QiLCJsaW5lV2lkdGgiLCJfcmVuZGVyQ29sb3Jab25lIiwiZmlsbFN0eWxlIiwiZmlsbFJlY3QiLCJfaXNDb21wb3NpbmciLCJfdGV4dGFyZWEiLCJfY29yZVNlcnZpY2UiLCJfaXNTZW5kaW5nQ29tcG9zaXRpb24iLCJfY29tcG9zaXRpb25Qb3NpdGlvbiIsIl9kYXRhQWxyZWFkeVNlbnQiLCJfZmluYWxpemVDb21wb3NpdGlvbiIsIl9oYW5kbGVBbnlUZXh0YXJlYUNoYW5nZXMiLCJzdWJzdHJpbmciLCJERUwiLCJmb250RmFtaWx5IiwiZm9udFNpemUiLCJJQ29yZVNlcnZpY2UiLCJnZXRDb21wdXRlZFN0eWxlIiwicGFyc2VJbnQiLCJnZXRQcm9wZXJ0eVZhbHVlIiwiZ2V0Q29vcmRzUmVsYXRpdmVUb0VsZW1lbnQiLCJtb3ZlVG9DZWxsU2VxdWVuY2UiLCJfbGlua2lmaWVyMiIsIl90ZXJtaW5hbENsYXNzIiwiX3JlZnJlc2hSb3dFbGVtZW50cyIsIl9zZWxlY3Rpb25Db250YWluZXIiLCJjcmVhdGVSZW5kZXJEaW1lbnNpb25zIiwiX3VwZGF0ZURpbWVuc2lvbnMiLCJvbk9wdGlvbkNoYW5nZSIsIl9oYW5kbGVPcHRpb25zQ2hhbmdlZCIsIl9pbmplY3RDc3MiLCJfcm93RmFjdG9yeSIsIkRvbVJlbmRlcmVyUm93RmFjdG9yeSIsIl9oYW5kbGVMaW5rSG92ZXIiLCJfaGFuZGxlTGlua0xlYXZlIiwiX3dpZHRoQ2FjaGUiLCJfdGhlbWVTdHlsZUVsZW1lbnQiLCJfZGltZW5zaW9uc1N0eWxlRWxlbWVudCIsIldpZHRoQ2FjaGUiLCJzZXRGb250IiwiZm9udFdlaWdodCIsImZvbnRXZWlnaHRCb2xkIiwiX3NldERlZmF1bHRTcGFjaW5nIiwiY2hhciIsImxldHRlclNwYWNpbmciLCJvdmVyZmxvdyIsIl90ZXJtaW5hbFNlbGVjdG9yIiwiZm9yZWdyb3VuZCIsIm11bHRpcGx5T3BhY2l0eSIsImN1cnNvciIsImN1cnNvckFjY2VudCIsImN1cnNvcldpZHRoIiwic2VsZWN0aW9uQmFja2dyb3VuZE9wYXF1ZSIsInNlbGVjdGlvbkluYWN0aXZlQmFja2dyb3VuZE9wYXF1ZSIsIklOVkVSVEVEX0RFRkFVTFRfQ09MT1IiLCJvcGFxdWUiLCJkZWZhdWx0U3BhY2luZyIsImhhbmRsZURldmljZVBpeGVsUmF0aW9DaGFuZ2UiLCJoYW5kbGVDaGFyU2l6ZUNoYW5nZWQiLCJyZW5kZXJSb3dzIiwicmVwbGFjZUNoaWxkcmVuIiwiX2NyZWF0ZVNlbGVjdGlvbkVsZW1lbnQiLCJjdXJzb3JCbGluayIsImN1cnNvclN0eWxlIiwiY3Vyc29ySW5hY3RpdmVTdHlsZSIsImNyZWF0ZVJvdyIsIl9zZXRDZWxsVW5kZXJsaW5lIiwiSUluc3RhbnRpYXRpb25TZXJ2aWNlIiwiX3dvcmtDZWxsIiwiX2NvbHVtblNlbGVjdE1vZGUiLCJfc2VsZWN0aW9uU3RhcnQiLCJfc2VsZWN0aW9uRW5kIiwiZ2V0Sm9pbmVkQ2hhcmFjdGVycyIsImdldE5vQmdUcmltbWVkTGVuZ3RoIiwiSSIsIkpvaW5lZENlbGxEYXRhIiwiSCIsIl9pc0NlbGxJblNlbGVjdGlvbiIsIkYiLCJXIiwiVSIsImZvckVhY2hEZWNvcmF0aW9uQXRDZWxsIiwiTiIsImdldENoYXJzIiwiV0hJVEVTUEFDRV9DRUxMX0NIQVIiLCJpc1VuZGVybGluZSIsImlzT3ZlcmxpbmUiLCJpc0JvbGQiLCJpc0l0YWxpYyIsImJnIiwic2VsZWN0aW9uRm9yZWdyb3VuZCIsImV4dCIsImlzQ3Vyc29ySGlkZGVuIiwiaXNGb2N1c2VkIiwiaXNEaW0iLCJpc0ludmlzaWJsZSIsInVuZGVybGluZVN0eWxlIiwiaXNVbmRlcmxpbmVDb2xvckRlZmF1bHQiLCJpc1VuZGVybGluZUNvbG9yUkdCIiwidGV4dERlY29yYXRpb25Db2xvciIsIkF0dHJpYnV0ZURhdGEiLCJnZXRVbmRlcmxpbmVDb2xvciIsImpvaW4iLCJkcmF3Qm9sZFRleHRJbkJyaWdodENvbG9ycyIsImlzU3RyaWtldGhyb3VnaCIsInRleHREZWNvcmF0aW9uIiwiJCIsImdldEZnQ29sb3IiLCJqIiwiZ2V0RmdDb2xvck1vZGUiLCJ6IiwiZ2V0QmdDb2xvciIsIksiLCJnZXRCZ0NvbG9yTW9kZSIsInEiLCJpc0ludmVyc2UiLCJWIiwiRyIsIlgiLCJKIiwiYmFja2dyb3VuZENvbG9yUkdCIiwiZm9yZWdyb3VuZENvbG9yUkdCIiwiX2FkZFN0eWxlIiwiX2FwcGx5TWluaW11bUNvbnRyYXN0IiwiY2xhc3NOYW1lIiwibWluaW11bUNvbnRyYXN0UmF0aW8iLCJleGNsdWRlRnJvbUNvbnRyYXN0UmF0aW9EZW1hbmRzIiwiZ2V0Q29kZSIsIl9nZXRDb250cmFzdENhY2hlIiwiZW5zdXJlQ29udHJhc3RSYXRpbyIsImhhbGZDb250cmFzdENhY2hlIiwiY29udHJhc3RDYWNoZSIsIl9mbGF0IiwiRmxvYXQzMkFycmF5IiwiX2ZvbnQiLCJfZm9udFNpemUiLCJfd2VpZ2h0IiwiX3dlaWdodEJvbGQiLCJfbWVhc3VyZUVsZW1lbnRzIiwid2hpdGVTcGFjZSIsImZvbnRLZXJuaW5nIiwiZm9udFN0eWxlIiwiYm9keSIsIl9ob2xleSIsImZpbGwiLCJfbWVhc3VyZSIsInJlcGVhdCIsIlRFWFRfQkFTRUxJTkUiLCJESU1fT1BBQ0lUWSIsImlzTGVnYWN5RWRnZSIsImlzUmVzdHJpY3RlZFBvd2VybGluZUdseXBoIiwiaXNQb3dlcmxpbmVHbHlwaCIsInRocm93SWZGYWxzeSIsIlNlbGVjdGlvbk1vZGVsIiwiaXNTZWxlY3RBbGxBY3RpdmUiLCJzZWxlY3Rpb25TdGFydExlbmd0aCIsImZpbmFsU2VsZWN0aW9uU3RhcnQiLCJhcmVTZWxlY3Rpb25WYWx1ZXNSZXZlcnNlZCIsImZpbmFsU2VsZWN0aW9uRW5kIiwiaGFuZGxlVHJpbSIsIl9vbkNoYXJTaXplQ2hhbmdlIiwib25DaGFyU2l6ZUNoYW5nZSIsIl9tZWFzdXJlU3RyYXRlZ3kiLCJvbk11bHRpcGxlT3B0aW9uQ2hhbmdlIiwiX3BhcmVudEVsZW1lbnQiLCJfcmVzdWx0IiwiX21lYXN1cmVFbGVtZW50IiwiTnVtYmVyIiwiY29udGVudCIsImNvbWJpbmVkRGF0YSIsImlzQ29tYmluZWQiLCJzZXRGcm9tQ2hhckRhdGEiLCJnZXRBc0NoYXJEYXRhIiwiX2NoYXJhY3RlckpvaW5lcnMiLCJfbmV4dENoYXJhY3RlckpvaW5lcklkIiwiaWQiLCJoYW5kbGVyIiwiZ2V0RmciLCJnZXRCZyIsIl9nZXRKb2luZWRSYW5nZXMiLCJlcnJvciIsIl9tZXJnZVJhbmdlcyIsIl9zdHJpbmdSYW5nZXNUb0NlbGxSYW5nZXMiLCJnZXRTdHJpbmciLCJfaXNGb2N1c2VkIiwiX2NhY2hlZElzRm9jdXNlZCIsImhhc0ZvY3VzIiwicXVldWVNaWNyb3Rhc2siLCJfcmVuZGVyZXIiLCJfcGF1c2VkUmVzaXplVGFzayIsIkRlYm91bmNlZElkbGVUYXNrIiwiX2lzUGF1c2VkIiwiX25lZWRzRnVsbFJlZnJlc2giLCJfaXNOZXh0UmVuZGVyUmVkcmF3T25seSIsIl9uZWVkc1NlbGVjdGlvblJlZnJlc2giLCJfY2FudmFzV2lkdGgiLCJfY2FudmFzSGVpZ2h0IiwiX3NlbGVjdGlvblN0YXRlIiwiX29uRGltZW5zaW9uc0NoYW5nZSIsIl9vblJlbmRlcmVkVmlld3BvcnRDaGFuZ2UiLCJfb25SZWZyZXNoUmVxdWVzdCIsIm9uUmVmcmVzaFJlcXVlc3QiLCJfcmVuZGVyRGVib3VuY2VyIiwiX2Z1bGxSZWZyZXNoIiwiSW50ZXJzZWN0aW9uT2JzZXJ2ZXIiLCJfaGFuZGxlSW50ZXJzZWN0aW9uQ2hhbmdlIiwidGhyZXNob2xkIiwib2JzZXJ2ZSIsImRpc2Nvbm5lY3QiLCJpc0ludGVyc2VjdGluZyIsImludGVyc2VjdGlvblJhdGlvIiwiZmx1c2giLCJfZmlyZU9uQ2FudmFzUmVzaXplIiwiUmVnRXhwIiwiX2xpbmtpZmllciIsIl9kcmFnU2Nyb2xsQW1vdW50IiwiX2VuYWJsZWQiLCJfbW91c2VEb3duVGltZVN0YW1wIiwiX29sZEhhc1NlbGVjdGlvbiIsIl9vbGRTZWxlY3Rpb25TdGFydCIsIl9vbGRTZWxlY3Rpb25FbmQiLCJfb25MaW51eE1vdXNlU2VsZWN0aW9uIiwiX29uUmVkcmF3UmVxdWVzdCIsIl9tb3VzZU1vdmVMaXN0ZW5lciIsIl9tb3VzZVVwTGlzdGVuZXIiLCJvblVzZXJJbnB1dCIsIl90cmltTGlzdGVuZXIiLCJvblRyaW0iLCJfaGFuZGxlVHJpbSIsIl9oYW5kbGVCdWZmZXJBY3RpdmF0ZSIsIl9tb2RlbCIsIl9hY3RpdmVTZWxlY3Rpb25Nb2RlIiwiX3JlbW92ZU1vdXNlRG93bkxpc3RlbmVycyIsIl9pc0NsaWNrSW5TZWxlY3Rpb24iLCJfZ2V0TW91c2VCdWZmZXJDb29yZHMiLCJfYXJlQ29vcmRzSW5TZWxlY3Rpb24iLCJpc0NlbGxJblNlbGVjdGlvbiIsIl9zZWxlY3RXb3JkQXRDdXJzb3IiLCJnZXRSYW5nZUxlbmd0aCIsIl9zZWxlY3RXb3JkQXQiLCJfZ2V0TW91c2VFdmVudFNjcm9sbEFtb3VudCIsIm1hY09wdGlvbkNsaWNrRm9yY2VzU2VsZWN0aW9uIiwidGltZVN0YW1wIiwiX2hhbmRsZUluY3JlbWVudGFsQ2xpY2siLCJkZXRhaWwiLCJfaGFuZGxlU2luZ2xlQ2xpY2siLCJfaGFuZGxlRG91YmxlQ2xpY2siLCJfaGFuZGxlVHJpcGxlQ2xpY2siLCJfYWRkTW91c2VEb3duTGlzdGVuZXJzIiwiX2RyYWdTY3JvbGxJbnRlcnZhbFRpbWVyIiwic2V0SW50ZXJ2YWwiLCJfZHJhZ1Njcm9sbCIsImNsZWFySW50ZXJ2YWwiLCJoYXNXaWR0aCIsIl9zZWxlY3RMaW5lQXQiLCJfc2VsZWN0VG9Xb3JkQXQiLCJhbHRDbGlja01vdmVzQ3Vyc29yIiwiX2ZpcmVFdmVudElmU2VsZWN0aW9uQ2hhbmdlZCIsIl9maXJlT25TZWxlY3Rpb25DaGFuZ2UiLCJfY29udmVydFZpZXdwb3J0Q29sVG9DaGFyYWN0ZXJJbmRleCIsIl9nZXRXb3JkQXQiLCJjaGFyQXQiLCJfaXNDaGFyV29yZFNlcGFyYXRvciIsInNsaWNlIiwidHJpbSIsImdldENvZGVQb2ludCIsIndvcmRTZXBhcmF0b3IiLCJnZXRXcmFwcGVkUmFuZ2VGb3JMaW5lIiwiZmlyc3QiLCJsYXN0IiwiY3JlYXRlRGVjb3JhdG9yIiwiREVGQVVMVF9BTlNJX0NPTE9SUyIsImZyZWV6ZSIsImNoYW5uZWxzIiwidG9Dc3MiLCJ0b1JnYmEiLCJfY29sb3JzIiwiX2NvbnRyYXN0Q2FjaGUiLCJfaGFsZkNvbnRyYXN0Q2FjaGUiLCJfb25DaGFuZ2VDb2xvcnMiLCJzZWxlY3Rpb25CYWNrZ3JvdW5kVHJhbnNwYXJlbnQiLCJibGVuZCIsInNlbGVjdGlvbkluYWN0aXZlQmFja2dyb3VuZFRyYW5zcGFyZW50IiwiX3VwZGF0ZVJlc3RvcmVDb2xvcnMiLCJfc2V0VGhlbWUiLCJ0aGVtZSIsInNlbGVjdGlvbkJhY2tncm91bmQiLCJzZWxlY3Rpb25JbmFjdGl2ZUJhY2tncm91bmQiLCJOVUxMX0NPTE9SIiwiaXNPcGFxdWUiLCJvcGFjaXR5IiwiYmxhY2siLCJyZWQiLCJncmVlbiIsInllbGxvdyIsImJsdWUiLCJtYWdlbnRhIiwiY3lhbiIsIndoaXRlIiwiYnJpZ2h0QmxhY2siLCJicmlnaHRSZWQiLCJicmlnaHRHcmVlbiIsImJyaWdodFllbGxvdyIsImJyaWdodEJsdWUiLCJicmlnaHRNYWdlbnRhIiwiYnJpZ2h0Q3lhbiIsImJyaWdodFdoaXRlIiwiZXh0ZW5kZWRBbnNpIiwiX3Jlc3RvcmVDb2xvciIsIl9yZXN0b3JlQ29sb3JzIiwiQ2lyY3VsYXJMaXN0IiwiX21heExlbmd0aCIsIm9uRGVsZXRlRW1pdHRlciIsIm9uRGVsZXRlIiwib25JbnNlcnRFbWl0dGVyIiwib25JbnNlcnQiLCJvblRyaW1FbWl0dGVyIiwiX2FycmF5IiwiQXJyYXkiLCJfc3RhcnRJbmRleCIsIl9sZW5ndGgiLCJtYXhMZW5ndGgiLCJfZ2V0Q3ljbGljSW5kZXgiLCJyZWN5Y2xlIiwiaXNGdWxsIiwidHJpbVN0YXJ0Iiwic2hpZnRFbGVtZW50cyIsImNsb25lIiwiaXNBcnJheSIsImNvbnRyYXN0UmF0aW8iLCJ0b1BhZGRlZEhleCIsInJnYiIsInRvQ2hhbm5lbHMiLCJpc05vZGUiLCJ3aWxsUmVhZEZyZXF1ZW50bHkiLCJnbG9iYWxDb21wb3NpdGVPcGVyYXRpb24iLCJjcmVhdGVMaW5lYXJHcmFkaWVudCIsIm1hdGNoIiwicGFyc2VGbG9hdCIsImdldEltYWdlRGF0YSIsInBvdyIsInJlbGF0aXZlTHVtaW5hbmNlIiwicmVsYXRpdmVMdW1pbmFuY2UyIiwicmVkdWNlTHVtaW5hbmNlIiwiaW5jcmVhc2VMdW1pbmFuY2UiLCJfb25TY3JvbGxBcGkiLCJfd2luZG93c1dyYXBwaW5nSGV1cmlzdGljcyIsIl9vbkJpbmFyeSIsIm9uQmluYXJ5IiwiX29uRGF0YSIsIm9uRGF0YSIsIl9vbkxpbmVGZWVkIiwiX29uUmVzaXplIiwiX29uV3JpdGVQYXJzZWQiLCJvbldyaXRlUGFyc2VkIiwiSW5zdGFudGlhdGlvblNlcnZpY2UiLCJPcHRpb25zU2VydmljZSIsIkJ1ZmZlclNlcnZpY2UiLCJMb2dTZXJ2aWNlIiwiSUxvZ1NlcnZpY2UiLCJDb3JlU2VydmljZSIsIkNvcmVNb3VzZVNlcnZpY2UiLCJJQ29yZU1vdXNlU2VydmljZSIsInVuaWNvZGVTZXJ2aWNlIiwiVW5pY29kZVNlcnZpY2UiLCJJVW5pY29kZVNlcnZpY2UiLCJfY2hhcnNldFNlcnZpY2UiLCJDaGFyc2V0U2VydmljZSIsIklDaGFyc2V0U2VydmljZSIsIk9zY0xpbmtTZXJ2aWNlIiwiSW5wdXRIYW5kbGVyIiwib25SZXF1ZXN0U2Nyb2xsVG9Cb3R0b20iLCJfd3JpdGVCdWZmZXIiLCJoYW5kbGVVc2VySW5wdXQiLCJfaGFuZGxlV2luZG93c1B0eU9wdGlvbkNoYW5nZSIsIm1hcmtSYW5nZURpcnR5Iiwic2Nyb2xsQm90dG9tIiwiV3JpdGVCdWZmZXIiLCJwYXJzZSIsIndyaXRlIiwid3JpdGVTeW5jIiwiTG9nTGV2ZWxFbnVtIiwiV0FSTiIsImlzTmFOIiwiTUlOSU1VTV9DT0xTIiwiTUlOSU1VTV9ST1dTIiwic2Nyb2xsIiwic2Nyb2xsUGFnZXMiLCJzY3JvbGxUb1RvcCIsInNjcm9sbFRvTGluZSIsInJlZ2lzdGVyRXNjSGFuZGxlciIsInJlZ2lzdGVyRGNzSGFuZGxlciIsInJlZ2lzdGVyQ3NpSGFuZGxlciIsInJlZ2lzdGVyT3NjSGFuZGxlciIsIndpbmRvd3NQdHkiLCJidWlsZE51bWJlciIsImJhY2tlbmQiLCJ3aW5kb3dzTW9kZSIsIl9lbmFibGVXaW5kb3dzV3JhcHBpbmdIZXVyaXN0aWNzIiwidXBkYXRlV2luZG93c01vZGVXcmFwcGVkU3RhdGUiLCJmaW5hbCIsIl9saXN0ZW5lcnMiLCJfZGlzcG9zZWQiLCJfZXZlbnQiLCJjbGVhckxpc3RlbmVycyIsInNldFdpbkxpbmVzIiwicmVzdG9yZVdpbiIsIm1pbmltaXplV2luIiwic2V0V2luUG9zaXRpb24iLCJzZXRXaW5TaXplUGl4ZWxzIiwicmFpc2VXaW4iLCJsb3dlcldpbiIsInJlZnJlc2hXaW4iLCJzZXRXaW5TaXplQ2hhcnMiLCJtYXhpbWl6ZVdpbiIsImZ1bGxzY3JlZW5XaW4iLCJnZXRXaW5TdGF0ZSIsImdldFdpblBvc2l0aW9uIiwiZ2V0V2luU2l6ZVBpeGVscyIsImdldFNjcmVlblNpemVQaXhlbHMiLCJnZXRDZWxsU2l6ZVBpeGVscyIsImdldFdpblNpemVDaGFycyIsImdldFNjcmVlblNpemVDaGFycyIsImdldEljb25UaXRsZSIsImdldFdpblRpdGxlIiwicHVzaFRpdGxlIiwicG9wVGl0bGUiLCJnZXRBdHRyRGF0YSIsIl9jdXJBdHRyRGF0YSIsIkVzY2FwZVNlcXVlbmNlUGFyc2VyIiwiX2NvcmVNb3VzZVNlcnZpY2UiLCJfdW5pY29kZVNlcnZpY2UiLCJfcGFyc2VyIiwiX3BhcnNlQnVmZmVyIiwiVWludDMyQXJyYXkiLCJfc3RyaW5nRGVjb2RlciIsIlN0cmluZ1RvVXRmMzIiLCJfdXRmOERlY29kZXIiLCJVdGY4VG9VdGYzMiIsIl93aW5kb3dUaXRsZSIsIl9pY29uTmFtZSIsIl93aW5kb3dUaXRsZVN0YWNrIiwiX2ljb25OYW1lU3RhY2siLCJfZXJhc2VBdHRyRGF0YUludGVybmFsIiwiX29uUmVxdWVzdEJlbGwiLCJfb25SZXF1ZXN0UmVmcmVzaFJvd3MiLCJfb25SZXF1ZXN0UmVzZXQiLCJfb25SZXF1ZXN0U2VuZEZvY3VzIiwiX29uUmVxdWVzdFN5bmNTY3JvbGxCYXIiLCJfb25SZXF1ZXN0V2luZG93c09wdGlvbnNSZXBvcnQiLCJfb25BMTF5Q2hhciIsIl9vbkExMXlUYWIiLCJfb25Db2xvciIsIl9wYXJzZVN0YWNrIiwicGF1c2VkIiwiY3Vyc29yU3RhcnRYIiwiY3Vyc29yU3RhcnRZIiwiZGVjb2RlZExlbmd0aCIsIl9zcGVjaWFsQ29sb3JzIiwiX2RpcnR5Um93VHJhY2tlciIsInNldENzaUhhbmRsZXJGYWxsYmFjayIsImlkZW50aWZpZXIiLCJpZGVudFRvU3RyaW5nIiwicGFyYW1zIiwidG9BcnJheSIsInNldEVzY0hhbmRsZXJGYWxsYmFjayIsInNldEV4ZWN1dGVIYW5kbGVyRmFsbGJhY2siLCJjb2RlIiwic2V0T3NjSGFuZGxlckZhbGxiYWNrIiwic2V0RGNzSGFuZGxlckZhbGxiYWNrIiwicGF5bG9hZCIsInNldFByaW50SGFuZGxlciIsInByaW50IiwiaW5zZXJ0Q2hhcnMiLCJpbnRlcm1lZGlhdGVzIiwic2Nyb2xsTGVmdCIsImN1cnNvclVwIiwic2Nyb2xsUmlnaHQiLCJjdXJzb3JEb3duIiwiY3Vyc29yRm9yd2FyZCIsImN1cnNvckJhY2t3YXJkIiwiY3Vyc29yTmV4dExpbmUiLCJjdXJzb3JQcmVjZWRpbmdMaW5lIiwiY3Vyc29yQ2hhckFic29sdXRlIiwiY3Vyc29yUG9zaXRpb24iLCJjdXJzb3JGb3J3YXJkVGFiIiwiZXJhc2VJbkRpc3BsYXkiLCJwcmVmaXgiLCJlcmFzZUluTGluZSIsImluc2VydExpbmVzIiwiZGVsZXRlTGluZXMiLCJkZWxldGVDaGFycyIsInNjcm9sbFVwIiwic2Nyb2xsRG93biIsImVyYXNlQ2hhcnMiLCJjdXJzb3JCYWNrd2FyZFRhYiIsImNoYXJQb3NBYnNvbHV0ZSIsImhQb3NpdGlvblJlbGF0aXZlIiwicmVwZWF0UHJlY2VkaW5nQ2hhcmFjdGVyIiwic2VuZERldmljZUF0dHJpYnV0ZXNQcmltYXJ5Iiwic2VuZERldmljZUF0dHJpYnV0ZXNTZWNvbmRhcnkiLCJsaW5lUG9zQWJzb2x1dGUiLCJ2UG9zaXRpb25SZWxhdGl2ZSIsImhWUG9zaXRpb24iLCJ0YWJDbGVhciIsInNldE1vZGUiLCJzZXRNb2RlUHJpdmF0ZSIsInJlc2V0TW9kZSIsInJlc2V0TW9kZVByaXZhdGUiLCJjaGFyQXR0cmlidXRlcyIsImRldmljZVN0YXR1cyIsImRldmljZVN0YXR1c1ByaXZhdGUiLCJzb2Z0UmVzZXQiLCJzZXRDdXJzb3JTdHlsZSIsInNldFNjcm9sbFJlZ2lvbiIsInNhdmVDdXJzb3IiLCJ3aW5kb3dPcHRpb25zIiwicmVzdG9yZUN1cnNvciIsImluc2VydENvbHVtbnMiLCJkZWxldGVDb2x1bW5zIiwic2VsZWN0UHJvdGVjdGVkIiwicmVxdWVzdE1vZGUiLCJzZXRFeGVjdXRlSGFuZGxlciIsIkJFTCIsImJlbGwiLCJMRiIsImxpbmVGZWVkIiwiVlQiLCJGRiIsImNhcnJpYWdlUmV0dXJuIiwiQlMiLCJiYWNrc3BhY2UiLCJIVCIsInRhYiIsIlNPIiwic2hpZnRPdXQiLCJTSSIsInNoaWZ0SW4iLCJDMSIsIklORCIsIk5FTCIsIm5leHRMaW5lIiwiSFRTIiwidGFiU2V0IiwiT3NjSGFuZGxlciIsInNldFRpdGxlIiwic2V0SWNvbk5hbWUiLCJzZXRPclJlcG9ydEluZGV4ZWRDb2xvciIsInNldEh5cGVybGluayIsInNldE9yUmVwb3J0RmdDb2xvciIsInNldE9yUmVwb3J0QmdDb2xvciIsInNldE9yUmVwb3J0Q3Vyc29yQ29sb3IiLCJyZXN0b3JlSW5kZXhlZENvbG9yIiwicmVzdG9yZUZnQ29sb3IiLCJyZXN0b3JlQmdDb2xvciIsInJlc3RvcmVDdXJzb3JDb2xvciIsInJldmVyc2VJbmRleCIsImtleXBhZEFwcGxpY2F0aW9uTW9kZSIsImtleXBhZE51bWVyaWNNb2RlIiwiZnVsbFJlc2V0Iiwic2V0Z0xldmVsIiwic2VsZWN0RGVmYXVsdENoYXJzZXQiLCJDSEFSU0VUUyIsInNlbGVjdENoYXJzZXQiLCJzY3JlZW5BbGlnbm1lbnRQYXR0ZXJuIiwic2V0RXJyb3JIYW5kbGVyIiwiRGNzSGFuZGxlciIsInJlcXVlc3RTdGF0dXNTdHJpbmciLCJfcHJlc2VydmVTdGFjayIsIl9sb2dTbG93UmVzb2x2aW5nQXN5bmMiLCJQcm9taXNlIiwicmFjZSIsImNhdGNoIiwiX2dldEN1cnJlbnRMaW5rSWQiLCJERUJVRyIsInByb3RvdHlwZSIsInNwbGl0IiwiY2xlYXJSYW5nZSIsImRlY29kZSIsInN1YmFycmF5IiwiY2hhcnNldCIsIndyYXBhcm91bmQiLCJtb2RlcyIsImluc2VydE1vZGUiLCJtYXJrRGlydHkiLCJzZXRDZWxsRnJvbUNvZGVQb2ludCIsIndjd2lkdGgiLCJzdHJpbmdGcm9tQ29kZVBvaW50IiwiYWRkTGluZVRvTGluayIsIl9lcmFzZUF0dHJEYXRhIiwiaW5zZXJ0Q2VsbHMiLCJnZXROdWxsQ2VsbCIsIk5VTExfQ0VMTF9DT0RFIiwiTlVMTF9DRUxMX1dJRFRIIiwiYWRkQ29kZXBvaW50VG9DZWxsIiwicHJlY2VkaW5nQ29kZXBvaW50IiwiY29udmVydEVvbCIsInJldmVyc2VXcmFwYXJvdW5kIiwiX3Jlc3RyaWN0Q3Vyc29yIiwibmV4dFN0b3AiLCJfc2V0Q3Vyc29yIiwiX21vdmVDdXJzb3IiLCJ0YWJzIiwicHJldlN0b3AiLCJfZXJhc2VJbkJ1ZmZlckxpbmUiLCJyZXBsYWNlQ2VsbHMiLCJfcmVzZXRCdWZmZXJMaW5lIiwiY2xlYXJNYXJrZXJzIiwiZGVsZXRlQ2VsbHMiLCJfaXMiLCJ0ZXJtTmFtZSIsInNldGdDaGFyc2V0IiwiREVGQVVMVF9DSEFSU0VUIiwiYXBwbGljYXRpb25LZXlwYWQiLCJhY3RpdmVFbmNvZGluZyIsImFjdGl2YXRlQWx0QnVmZmVyIiwiYWN0aXZhdGVOb3JtYWxCdWZmZXIiLCJfdXBkYXRlQXR0ckNvbG9yIiwiZnJvbUNvbG9yUkdCIiwiX2V4dHJhY3RDb2xvciIsImhhc1N1YlBhcmFtcyIsImdldFN1YlBhcmFtcyIsInVuZGVybGluZUNvbG9yIiwiX3Byb2Nlc3NVbmRlcmxpbmUiLCJ1cGRhdGVFeHRlbmRlZCIsIl9wcm9jZXNzU0dSMCIsInNhdmVkWCIsInNhdmVkWSIsInNhdmVkQ3VyQXR0ckRhdGEiLCJzYXZlZENoYXJzZXQiLCJfc2F2ZWRDaGFyc2V0IiwiZXhlYyIsInBhcnNlQ29sb3IiLCJfY3JlYXRlSHlwZXJsaW5rIiwiX2ZpbmlzaEh5cGVybGluayIsImZpbmRJbmRleCIsInN0YXJ0c1dpdGgiLCJyZWdpc3RlckxpbmsiLCJfc2V0T3JSZXBvcnRTcGVjaWFsQ29sb3IiLCJtYXJrQWxsRGlydHkiLCJpc1Byb3RlY3RlZCIsImJsb2NrIiwiYmFyIiwiX2Rpc3Bvc2FibGVzIiwidW5yZWdpc3RlciIsIl92YWx1ZSIsIkZvdXJLZXlNYXAiLCJfZGF0YSIsImlzSXBob25lIiwiaXNJcGFkIiwiZ2V0U2FmYXJpVmVyc2lvbiIsImlzU2FmYXJpIiwibmF2aWdhdG9yIiwidXNlckFnZW50IiwicGxhdGZvcm0iLCJTb3J0ZWRMaXN0IiwiX2dldEtleSIsImluc2VydCIsIl9zZWFyY2giLCJnZXRLZXlJdGVyYXRvciIsImZvckVhY2hCeUtleSIsInZhbHVlcyIsIklkbGVUYXNrUXVldWUiLCJQcmlvcml0eVRhc2tRdWV1ZSIsIl90YXNrcyIsIl9pIiwiZW5xdWV1ZSIsIl9zdGFydCIsIl9pZGxlQ2FsbGJhY2siLCJfY2FuY2VsQ2FsbGJhY2siLCJfcmVxdWVzdENhbGxiYWNrIiwiX3Byb2Nlc3MiLCJ0aW1lUmVtYWluaW5nIiwiX2NyZWF0ZURlYWRsaW5lIiwicmVxdWVzdElkbGVDYWxsYmFjayIsImNhbmNlbElkbGVDYWxsYmFjayIsIl9xdWV1ZSIsIkNIQVJfREFUQV9DT0RFX0lOREVYIiwiV0hJVEVTUEFDRV9DRUxMX0NPREUiLCJFeHRlbmRlZEF0dHJzIiwiaXNCbGluayIsImlzRmdSR0IiLCJpc0JnUkdCIiwiaXNGZ1BhbGV0dGUiLCJpc0JnUGFsZXR0ZSIsImlzRmdEZWZhdWx0IiwiaXNCZ0RlZmF1bHQiLCJpc0F0dHJpYnV0ZURlZmF1bHQiLCJpc0VtcHR5IiwiZ2V0VW5kZXJsaW5lQ29sb3JNb2RlIiwiaXNVbmRlcmxpbmVDb2xvclBhbGV0dGUiLCJnZXRVbmRlcmxpbmVTdHlsZSIsIl91cmxJZCIsIl9leHQiLCJCdWZmZXIiLCJNQVhfQlVGRkVSX1NJWkUiLCJfaGFzU2Nyb2xsYmFjayIsIl9udWxsQ2VsbCIsImZyb21DaGFyRGF0YSIsIk5VTExfQ0VMTF9DSEFSIiwiX3doaXRlc3BhY2VDZWxsIiwiV0hJVEVTUEFDRV9DRUxMX1dJRFRIIiwiX2lzQ2xlYXJpbmciLCJfbWVtb3J5Q2xlYW51cFF1ZXVlIiwiX21lbW9yeUNsZWFudXBQb3NpdGlvbiIsIl9jb2xzIiwiX3Jvd3MiLCJfZ2V0Q29ycmVjdEJ1ZmZlckxlbmd0aCIsInNldHVwVGFiU3RvcHMiLCJnZXRXaGl0ZXNwYWNlQ2VsbCIsIkJ1ZmZlckxpbmUiLCJzY3JvbGxiYWNrIiwiZmlsbFZpZXdwb3J0Um93cyIsIl9pc1JlZmxvd0VuYWJsZWQiLCJfcmVmbG93IiwiX2JhdGNoZWRNZW1vcnlDbGVhbnVwIiwiY2xlYW51cE1lbW9yeSIsIl9yZWZsb3dMYXJnZXIiLCJfcmVmbG93U21hbGxlciIsInJlZmxvd0xhcmdlckdldExpbmVzVG9SZW1vdmUiLCJyZWZsb3dMYXJnZXJDcmVhdGVOZXdMYXlvdXQiLCJyZWZsb3dMYXJnZXJBcHBseU5ld0xheW91dCIsImxheW91dCIsIl9yZWZsb3dMYXJnZXJBZGp1c3RWaWV3cG9ydCIsImNvdW50UmVtb3ZlZCIsInJlZmxvd1NtYWxsZXJHZXROZXdMaW5lTGVuZ3RocyIsIm5ld0xpbmVzIiwiY29weUNlbGxzRnJvbSIsImdldFdyYXBwZWRMaW5lVHJpbW1lZExlbmd0aCIsInNldENlbGwiLCJ0YWJTdG9wV2lkdGgiLCJNYXJrZXIiLCJfcmVtb3ZlTWFya2VyIiwiX2NvbWJpbmVkIiwiX2V4dGVuZGVkQXR0cnMiLCJDSEFSX0RBVEFfQVRUUl9JTkRFWCIsIkNIQVJfREFUQV9DSEFSX0lOREVYIiwiQ0hBUl9EQVRBX1dJRFRIX0lOREVYIiwiYnl0ZUxlbmd0aCIsImtleXMiLCJjb3B5RnJvbSIsInJlZHVjZSIsIkJ1ZmZlclNldCIsIl9vbkJ1ZmZlckFjdGl2YXRlIiwiX25vcm1hbCIsIl9hbHQiLCJpbmFjdGl2ZUJ1ZmZlciIsIkRFRkFVTFRfRVhUIiwiREVGQVVMVF9BVFRSIiwiREVGQVVMVF9DT0xPUiIsIl9pZCIsImlzRGlzcG9zZWQiLCJfbmV4dElkIiwiX29uRGlzcG9zZSIsIlEiLCJZIiwiWiIsIk5VTCIsIlNPSCIsIlNUWCIsIkVPVCIsIkVOUSIsIkFDSyIsIkRMRSIsIkRDMSIsIkRDMiIsIkRDMyIsIkRDNCIsIk5BSyIsIlNZTiIsIkVUQiIsIkNBTiIsIkVNIiwiU1VCIiwiRlMiLCJHUyIsIlJTIiwiVVMiLCJTUCIsIlBBRCIsIkhPUCIsIkJQSCIsIk5CSCIsIlNTQSIsIkVTQSIsIkhUSiIsIlZUUyIsIlBMRCIsIlBMVSIsIlJJIiwiU1MyIiwiU1MzIiwiRENTIiwiUFUxIiwiUFUyIiwiU1RTIiwiQ0NIIiwiTVciLCJTUEEiLCJFUEEiLCJTT1MiLCJTR0NJIiwiU0NJIiwiQ1NJIiwiT1NDIiwiUE0iLCJBUEMiLCJ0b1VwcGVyQ2FzZSIsInRvTG93ZXJDYXNlIiwidXRmMzJUb1N0cmluZyIsIl9pbnRlcmltIiwiaW50ZXJpbSIsIlVpbnQ4QXJyYXkiLCJVbmljb2RlVjYiLCJ2ZXJzaW9uIiwiX2FjdGlvbiIsIl9jYWxsYmFja3MiLCJfcGVuZGluZ0RhdGEiLCJfYnVmZmVyT2Zmc2V0IiwiX2lzU3luY1dyaXRpbmciLCJfc3luY0NhbGxzIiwiX2RpZFVzZXJJbnB1dCIsIl9pbm5lcldyaXRlIiwicmVzb2x2ZSIsInRoZW4iLCJQQVlMT0FEX0xJTUlUIiwiRGNzUGFyc2VyIiwiX2hhbmRsZXJzIiwiY3JlYXRlIiwiX2FjdGl2ZSIsIl9pZGVudCIsIl9oYW5kbGVyRmIiLCJfc3RhY2siLCJsb29wUG9zaXRpb24iLCJmYWxsVGhyb3VnaCIsInJlZ2lzdGVySGFuZGxlciIsImNsZWFySGFuZGxlciIsInNldEhhbmRsZXJGYWxsYmFjayIsInVuaG9vayIsImhvb2siLCJwdXQiLCJQYXJhbXMiLCJhZGRQYXJhbSIsIl9oYW5kbGVyIiwiX3BhcmFtcyIsIl9oaXRMaW1pdCIsIlZUNTAwX1RSQU5TSVRJT05fVEFCTEUiLCJUcmFuc2l0aW9uVGFibGUiLCJ0YWJsZSIsInNldERlZmF1bHQiLCJhZGRNYW55IiwiYXBwbHkiLCJfdHJhbnNpdGlvbnMiLCJoYW5kbGVycyIsImhhbmRsZXJQb3MiLCJ0cmFuc2l0aW9uIiwiY2h1bmtQb3MiLCJpbml0aWFsU3RhdGUiLCJjdXJyZW50U3RhdGUiLCJfY29sbGVjdCIsIl9wcmludEhhbmRsZXJGYiIsIl9leGVjdXRlSGFuZGxlckZiIiwiX2NzaUhhbmRsZXJGYiIsIl9lc2NIYW5kbGVyRmIiLCJfZXJyb3JIYW5kbGVyRmIiLCJfcHJpbnRIYW5kbGVyIiwiX2V4ZWN1dGVIYW5kbGVycyIsIl9jc2lIYW5kbGVycyIsIl9lc2NIYW5kbGVycyIsIl9vc2NQYXJzZXIiLCJPc2NQYXJzZXIiLCJfZGNzUGFyc2VyIiwiX2Vycm9ySGFuZGxlciIsIl9pZGVudGlmaWVyIiwicmV2ZXJzZSIsImNsZWFyUHJpbnRIYW5kbGVyIiwiY2xlYXJFc2NIYW5kbGVyIiwiY2xlYXJFeGVjdXRlSGFuZGxlciIsImNsZWFyQ3NpSGFuZGxlciIsImNsZWFyRGNzSGFuZGxlciIsImNsZWFyT3NjSGFuZGxlciIsImNsZWFyRXJyb3JIYW5kbGVyIiwiY29sbGVjdCIsImFib3J0IiwiYWRkU3ViUGFyYW0iLCJhZGREaWdpdCIsIl9zdGF0ZSIsIl9wdXQiLCJmcm9tQXJyYXkiLCJtYXhTdWJQYXJhbXNMZW5ndGgiLCJJbnQzMkFycmF5IiwiX3N1YlBhcmFtcyIsIl9zdWJQYXJhbXNMZW5ndGgiLCJfc3ViUGFyYW1zSWR4IiwiVWludDE2QXJyYXkiLCJfcmVqZWN0RGlnaXRzIiwiX3JlamVjdFN1YkRpZ2l0cyIsIl9kaWdpdElzU3ViIiwiZ2V0U3ViUGFyYW1zQWxsIiwiQWRkb25NYW5hZ2VyIiwiX2FkZG9ucyIsImluc3RhbmNlIiwibG9hZEFkZG9uIiwiX3dyYXBwZWRBZGRvbkRpc3Bvc2UiLCJCdWZmZXJBcGlWaWV3IiwiX2J1ZmZlciIsImluaXQiLCJjdXJzb3JZIiwiY3Vyc29yWCIsInZpZXdwb3J0WSIsImJhc2VZIiwiZ2V0TGluZSIsIkJ1ZmZlckxpbmVBcGlWaWV3IiwiX2xpbmUiLCJnZXRDZWxsIiwiQnVmZmVyTmFtZXNwYWNlQXBpIiwiX2NvcmUiLCJfb25CdWZmZXJDaGFuZ2UiLCJvbkJ1ZmZlckNoYW5nZSIsIl9hbHRlcm5hdGUiLCJhbHRlcm5hdGUiLCJQYXJzZXJBcGkiLCJhZGRDc2lIYW5kbGVyIiwiYWRkRGNzSGFuZGxlciIsImFkZEVzY0hhbmRsZXIiLCJhZGRPc2NIYW5kbGVyIiwiVW5pY29kZUFwaSIsInZlcnNpb25zIiwiYWN0aXZlVmVyc2lvbiIsImlzVXNlclNjcm9sbGluZyIsIl9jYWNoZWRCbGFua0xpbmUiLCJnbGV2ZWwiLCJfY2hhcnNldHMiLCJOT05FIiwiZXZlbnRzIiwicmVzdHJpY3QiLCJYMTAiLCJWVDIwMCIsIkRSQUciLCJBTlkiLCJERUZBVUxUIiwiU0dSIiwiU0dSX1BJWEVMUyIsIl9wcm90b2NvbHMiLCJfZW5jb2RpbmdzIiwiX2FjdGl2ZVByb3RvY29sIiwiX2FjdGl2ZUVuY29kaW5nIiwiX2xhc3RFdmVudCIsIl9vblByb3RvY29sQ2hhbmdlIiwiYWRkUHJvdG9jb2wiLCJhZGRFbmNvZGluZyIsIl9lcXVhbEV2ZW50cyIsInRyaWdnZXJCaW5hcnlFdmVudCIsImRvd24iLCJ1cCIsImRyYWciLCJtb3ZlIiwiX29uVXNlcklucHV0IiwiX29uUmVxdWVzdFNjcm9sbFRvQm90dG9tIiwiZGlzYWJsZVN0ZGluIiwiX2RlY29yYXRpb25zIiwiX29uRGVjb3JhdGlvblJlZ2lzdGVyZWQiLCJfb25EZWNvcmF0aW9uUmVtb3ZlZCIsImdldERlY29yYXRpb25zQXRDZWxsIiwiX2NhY2hlZEJnIiwiX2NhY2hlZEZnIiwiZm9yZWdyb3VuZENvbG9yIiwiU2VydmljZUNvbGxlY3Rpb24iLCJfZW50cmllcyIsIl9zZXJ2aWNlcyIsImdldFNlcnZpY2UiLCJnZXRTZXJ2aWNlRGVwZW5kZW5jaWVzIiwic29ydCIsIm5hbWUiLCJ0cmFjZUNhbGwiLCJzZXRUcmFjZUxvZ2dlciIsInRyYWNlIiwiVFJBQ0UiLCJpbmZvIiwiSU5GTyIsIkVSUk9SIiwib2ZmIiwiT0ZGIiwiX2xvZ0xldmVsIiwiX3VwZGF0ZUxvZ0xldmVsIiwiX2V2YWxMYXp5T3B0aW9uYWxQYXJhbXMiLCJfbG9nIiwibG9nZ2VyIiwibG9nIiwiSlNPTiIsInN0cmluZ2lmeSIsIkRFRkFVTFRfT1BUSU9OUyIsImN1c3RvbUdseXBocyIsImFsbG93UHJvcG9zZWRBcGkiLCJhbGxvd1RyYW5zcGFyZW5jeSIsIl9vbk9wdGlvbkNoYW5nZSIsImFzc2lnbiIsIl9zYW5pdGl6ZUFuZFZhbGlkYXRlT3B0aW9uIiwiX3NldHVwT3B0aW9ucyIsIl9lbnRyaWVzV2l0aElkIiwiX2RhdGFCeUxpbmtJZCIsIl9yZW1vdmVNYXJrZXJGcm9tTGluayIsIl9nZXRFbnRyeUlkS2V5IiwiZXZlcnkiLCJzZXJ2aWNlUmVnaXN0cnkiLCJfcHJvdmlkZXJzIiwiX29uQ2hhbmdlIiwib25DaGFuZ2UiLCJfYWN0aXZlUHJvdmlkZXIiLCJnZXRTdHJpbmdDZWxsV2lkdGgiLCJleHBvcnRzIiwiX2FkZG9uTWFuYWdlciIsIl9wdWJsaWNPcHRpb25zIiwiX2NoZWNrUmVhZG9ubHlPcHRpb25zIiwiX2NoZWNrUHJvcG9zZWRBcGkiLCJwYXJzZXIiLCJ1bmljb2RlIiwiYXBwbGljYXRpb25DdXJzb3JLZXlzTW9kZSIsImFwcGxpY2F0aW9uS2V5cGFkTW9kZSIsIm1vdXNlVHJhY2tpbmdNb2RlIiwib3JpZ2luTW9kZSIsInJldmVyc2VXcmFwYXJvdW5kTW9kZSIsInNlbmRGb2N1c01vZGUiLCJ3cmFwYXJvdW5kTW9kZSIsIl92ZXJpZnlJbnRlZ2VycyIsIl92ZXJpZnlQb3NpdGl2ZUludGVnZXJzIiwid3JpdGVsbiIsInN0cmluZ3MiLCJtb2R1bGUiLCJfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18iLCJfX3dlYnBhY2tfcmVxdWlyZV9fIiwibW9kdWxlSWQiLCJjYWNoZWRNb2R1bGUiLCJ1bmRlZmluZWQiLCJfX3dlYnBhY2tfbW9kdWxlc19fIiwiX0FTU0VNQkxZX05BTUUiLCJfdGVybWluYWxzIiwiX2FkZG9uTGlzdCIsImdldFJvd3MiLCJnZXRUZXJtaW5hbEJ5SWQiLCJ0ZXJtaW5hbCIsImdldENvbHMiLCJnZXRPcHRpb25zIiwic2V0T3B0aW9ucyIsImNvbHVtbnMiLCJjb2x1bW4iLCJwYWdlQ291bnQiLCJyZWdpc3RlclRlcm1pbmFsIiwicmVmIiwiYWRkb25JZHMiLCJEb3ROZXQiLCJpbnZva2VNZXRob2RBc3luYyIsImNvbnZlcnRUb0FyZ3MiLCJuZXdQb3NpdGlvbiIsInRpdGxlIiwiaW52b2tlTWV0aG9kIiwiY3VzdG9tS2V5RXZlbnRIYW5kbGVyIiwiYWRkb25zIiwiYWRkb25JZCIsImFkZG9uIiwiZ2V0UHJvdG90eXBlT2YiLCJyZWdpc3RlckFkZG9uIiwicmVnaXN0ZXJBZGRvbnMiLCJkaXNwb3NlVGVybWluYWwiLCJpbnZva2VBZGRvbkZ1bmN0aW9uIiwiZnVuY3Rpb25OYW1lIiwiWHRlcm1CbGF6b3IiXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file