@kontur.candy/tools 2.138.0 → 2.140.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,19 @@
|
|
|
1
|
+
<a name="2.140.0"></a>
|
|
2
|
+
# [2.140.0](https://git.skbkontur.ru/ke/candy-utils/compare/release/tools/v2.139.0...release/tools/v2.140.0) (2022-11-30)
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
### Bug Fixes
|
|
6
|
+
|
|
7
|
+
* **Tools:** Исправлен доступ к файлу серверной нормализации для билд сервера ([384d588](https://git.skbkontur.ru/ke/candy-utils/commit/384d588))
|
|
8
|
+
|
|
9
|
+
<a name="2.139.0"></a>
|
|
10
|
+
# [2.139.0](https://git.skbkontur.ru/ke/candy-utils/compare/release/tools/v2.138.0...release/tools/v2.139.0) (2022-11-25)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
### Bug Fixes
|
|
14
|
+
|
|
15
|
+
* **Tools:** Исправлено чтение файлов из webpack file system в devServer ([f388559](https://git.skbkontur.ru/ke/candy-utils/commit/f388559))
|
|
16
|
+
|
|
1
17
|
<a name="2.138.0"></a>
|
|
2
18
|
# [2.138.0](https://git.skbkontur.ru/ke/candy-utils/compare/release/tools/v2.137.0...release/tools/v2.138.0) (2022-11-24)
|
|
3
19
|
|
|
@@ -154,9 +154,15 @@ class BuildFormDevServer {
|
|
|
154
154
|
const allPossibleFilePath = this.allFarmConfig.map(i => _path.default.join(i, "forms", this.gfv, "form", filename));
|
|
155
155
|
|
|
156
156
|
for (const pth of allPossibleFilePath) {
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
157
|
+
try {
|
|
158
|
+
var _this$webpackHybridFi2;
|
|
159
|
+
|
|
160
|
+
if ((_this$webpackHybridFi2 = this.webpackHybridFileSystem) !== null && _this$webpackHybridFi2 !== void 0 && _this$webpackHybridFi2.statSync(pth)) {
|
|
161
|
+
fileName = pth;
|
|
162
|
+
break;
|
|
163
|
+
}
|
|
164
|
+
} catch (e) {
|
|
165
|
+
continue;
|
|
160
166
|
}
|
|
161
167
|
}
|
|
162
168
|
|
|
@@ -165,9 +171,9 @@ class BuildFormDevServer {
|
|
|
165
171
|
}
|
|
166
172
|
|
|
167
173
|
return new Promise((resolve, reject) => {
|
|
168
|
-
var _this$
|
|
174
|
+
var _this$webpackHybridFi3;
|
|
169
175
|
|
|
170
|
-
(_this$
|
|
176
|
+
(_this$webpackHybridFi3 = this.webpackHybridFileSystem) === null || _this$webpackHybridFi3 === void 0 ? void 0 : _this$webpackHybridFi3.readFile(fileName, "utf-8", (error, data) => {
|
|
171
177
|
if (error) {
|
|
172
178
|
reject(error);
|
|
173
179
|
} else {
|
|
@@ -208,4 +214,4 @@ class BuildFormDevServer {
|
|
|
208
214
|
}
|
|
209
215
|
|
|
210
216
|
exports.BuildFormDevServer = BuildFormDevServer;
|
|
211
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9DTElDb21tYW5kcy9CdWlsZFNlcnZlci9SZXNvdXJjZXNDb250cm9sbGVycy9EZXZTZXJ2ZXJzL0J1aWxkRm9ybURldlNlcnZlci50cyJdLCJuYW1lcyI6WyJCdWlsZEZvcm1EZXZTZXJ2ZXIiLCJjb25zdHJ1Y3RvciIsInBvcnQiLCJhbGxGYXJtQ29uZmlnIiwiZ2Z2IiwiY2FuZHlNb2R1bGVzRGlyZWN0b3J5IiwiZmFybUNvbmZpZ0FycmF5IiwidXNlR2VuZXJhdG9yRnJvbUxvY2FsU291cmNlcyIsImVuZ2luZURpcmVjdG9yeSIsImJ1aWxkRGVidWdPbmx5Iiwic2tpcENvZGVSZWZvcm1hdHRpbmciLCJuaWdodGx5IiwiZmFybURpcmVjdG9yeSIsInN0YXJ0UGFyYWxsZWxMaW1pdCIsImdlbmVyYXRlQ2hhaW4iLCJ3ZWJwYWNrRGV2U2VydmVyU3RhcnRlZCIsIndlYnBhY2tIeWJyaWRGaWxlU3lzdGVtIiwic3RhcnQiLCJ1bmRlZmluZWQiLCJhbGxQb3NzaWJsZUZpbGVQYXRoIiwibWFwIiwiaSIsInBhdGgiLCJqb2luIiwiZm9ybURpclBhdGgiLCJwdGgiLCJFcnJvciIsIldlYnBhY2tIeWJyaWRGaWxlU3lzdGVtIiwiT2JzZXJ2ZSIsImZpbGUiLCJ0cmFuc2Zvcm0iLCJmb3JtSnNvbkZpbGUiLCJ4IiwiZ2VuZXJhdG9yU291cmNlIiwiZW5naW5lU291cmNlIiwiZ2VuZXJhdG9yVmVyc2lvbiIsImVuZ2luZVZlcnNpb24iLCJhdHRhY2giLCJmaSIsInkiLCJnZW5lcmF0b3IiLCJmaWxlcyIsImZvcm1Tb3VyY2VzUGF0aCIsImRvIiwiRm9ybXNEaXJXaXRoSGxQYXRoIiwiZmluZCIsInN0YXJ0c1dpdGgiLCJobEZhcm1EaXJlY3RvcnlQYXRoIiwicmVzb3VyY2VzSGFzaCIsImUiLCJmb3JtRW50cnlQb2ludFBhdGgiLCJ3cml0ZUJhdGNoIiwiZm9ybWF0RXJyb3IiLCJvYnNlcnZlIiwiZ2V0R2VuZXJhdGVkRmlsZUFzU3RyZWFtIiwiZmlsZW5hbWUiLCJmaWxlTmFtZSIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwicmVhZEZpbGUiLCJlcnJvciIsImRhdGEiLCJSZWFkYWJsZSIsImZyb20iLCJnZXRGaWxlQXNTdHJlYW0iLCJyZXNwb25zZSIsIm1ldGhvZCIsImFnZW50IiwiQWdlbnQiLCJyZWplY3RVbmF1dGhvcml6ZWQiLCJzdGF0dXMiLCJ0ZXh0UmVzcG9uc2UiLCJ0ZXh0IiwiYm9keSIsInN0YWNrIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFFQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFNQTs7QUFDQTs7QUFHQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFFTyxNQUFNQSxrQkFBTixDQUF5QjtBQVE1QjtBQVVPQyxFQUFBQSxXQUFXLENBQ2RDLElBRGMsRUFFZEMsYUFGYyxFQUdkQyxHQUhjLEVBSWRDLHFCQUpjLEVBS2RDLGVBTGMsRUFNZEMsNEJBTmMsRUFPZEMsZUFQYyxFQVFkQyxjQVJjLEVBU2RDLG9CQVRjLEVBVWRDLE9BVmMsRUFXaEI7QUFBQSxTQTVCZVQsSUE0QmY7QUFBQSxTQTNCZUMsYUEyQmY7QUFBQSxTQTFCZUMsR0EwQmY7QUFBQSxTQXpCZUMscUJBeUJmO0FBQUEsU0F4Qk1PLGFBd0JOO0FBQUEsU0F2QmVOLGVBdUJmO0FBQUEsU0F0QmVPLGtCQXNCZjtBQUFBLFNBcEJNQyxhQW9CTjtBQUFBLFNBbkJNQyx1QkFtQk4sR0FuQmdDLEtBbUJoQztBQUFBLFNBbEJlUiw0QkFrQmY7QUFBQSxTQWpCZUMsZUFpQmY7QUFBQSxTQWhCZUcsT0FnQmY7QUFBQSxTQWZlRixjQWVmO0FBQUEsU0FkZUMsb0JBY2Y7QUFBQSxTQWJNTSx1QkFhTjtBQUNFLFNBQUtkLElBQUwsR0FBWUEsSUFBWjtBQUNBLFNBQUtDLGFBQUwsR0FBcUJBLGFBQXJCO0FBQ0EsU0FBS0MsR0FBTCxHQUFXQSxHQUFYO0FBQ0EsU0FBS0MscUJBQUwsR0FBNkJBLHFC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LEVBQUFBLFdBQVcsQ0FBQ0gsQ0FBRCxFQUEyQjtBQUMxQyxRQUFJQSxDQUFDLFlBQVl2QixLQUFqQixFQUF3QjtBQUNwQixhQUFRLEdBQUV1QixDQUFFLEtBQUlBLENBQUMsQ0FBQzBCLEtBQU0sRUFBeEI7QUFDSDs7QUFDRCxXQUFRLEdBQUUxQixDQUFFLEVBQVo7QUFDSDs7QUFqTjJCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIjtcbmltcG9ydCB7IFJlYWRhYmxlIH0gZnJvbSBcInN0cmVhbVwiO1xuaW1wb3J0IHsgQWdlbnQgfSBmcm9tIFwiaHR0cHNcIjtcblxuaW1wb3J0IGZldGNoIGZyb20gXCJub2RlLWZldGNoXCI7XG5pbXBvcnQgcExpbWl0LCB7IExpbWl0IH0gZnJvbSBcInAtbGltaXRcIjtcbmltcG9ydCB7IEZhcm1Db25maWcgfSBmcm9tIFwiVG9vbHMvc3JjL0NhbmR5Q0xJXCI7XG5pbXBvcnQgeyBwYXRoRXhpc3RzIH0gZnJvbSBcImZzLWV4dHJhXCI7XG5cbmltcG9ydCB7IGdlbmVyYXRlRm9ybSB9IGZyb20gXCIuLi8uLi8uLi8uLi9CdWlsZFRhc2tzL0Zvcm0vR2VuZXJhdGVGb3JtXCI7XG5pbXBvcnQgeyBnZW5lcmF0b3JGYWN0b3J5LCBnZXRHZW5lcmF0b3JTb3VyY2VLZXkgfSBmcm9tIFwiLi4vLi4vLi4vLi4vQnVpbGRUYXNrcy9HZW5lcmF0b3IvQWNxdWlyZUZvcm1HZW5lcmF0b3JcIjtcbmltcG9ydCB7XG4gICAgcmVzb2x2ZUVuZ2luZVZlcnNpb24sXG4gICAgcmVzb2x2ZUdlbmVyYXRvclZlcnNpb24sXG4gICAgcmVzb2x2ZUxvY2FsRW5naW5lU291cmNlLFxuICAgIHJlc29sdmVMb2NhbEdlbmVyYXRvclNvdXJjZSxcbn0gZnJvbSBcIi4uLy4uLy4uLy4uL0J1aWxkVGFza3MvUHVibGlzaGVkVmVyc2lvblV0aWxzXCI7XG5pbXBvcnQgeyByZXNvbHZlRm9ybUluZm8gfSBmcm9tIFwiLi4vLi4vLi4vLi4vQnVpbGRUYXNrcy9SZXNvbHZlRm9ybUluZm9cIjtcbmltcG9ydCB7IGRlbGF5IH0gZnJvbSBcIi4uLy4uLy4uLy4uLy4uLy4uL0NvbW1vbi9Bc3luY1V0aWxzXCI7XG5pbXBvcnQgeyBSZWFzb25PckVycm9yIH0gZnJvbSBcIi4uLy4uLy4uLy4uL0NvbW1vbnMvRXJyb3JVbnR5cGVkXCI7XG5pbXBvcnQgeyBDaGFpbmFibGVWYWx1ZVByb2R1Y2VyIH0gZnJvbSBcIi4uLy4uLy4uLy4uL0NvbW1vbnMvVGFza3NDb3JlL0NoYWluYWJsZVZhbHVlUHJvZHVjZXJcIjtcbmltcG9ydCB7IE9ic2VydmUgfSBmcm9tIFwiLi4vLi4vLi4vLi4vQ29tbW9ucy9UYXNrc0NvcmUvT2JzZXJ2ZVwiO1xuXG5pbXBvcnQgeyBnZXRSZXBvcnRHZW5lcmF0b3JFcnJvclRvUGFnZUJvZHlTY3JpcHQgfSBmcm9tIFwiLi9SZXBvcnRHZW5lcmF0b3JFcnJvclRvUGFnZUJvZHlcIjtcbmltcG9ydCB7IHJ1bkZvcm1Db21waWxhdGlvblZpYVdlYnBhY2tEZXZTZXJ2ZXIgfSBmcm9tIFwiLi9SdW5Gb3JtQ29tcGlsYXRpb25WaWFXZWJwYWNrRGV2U2VydmVyXCI7XG5pbXBvcnQgeyBXZWJwYWNrSHlicmlkRmlsZVN5c3RlbSB9IGZyb20gXCIuL1dlYnBhY2tJbk1lbW9yeVV0aWxzL1dlYnBhY2tIeWJyaWRGaWxlU3lzdGVtXCI7XG5cbmV4cG9ydCBjbGFzcyBCdWlsZEZvcm1EZXZTZXJ2ZXIge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcG9ydDogbnVtYmVyO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgYWxsRmFybUNvbmZpZzogc3RyaW5nW107XG4gICAgcHJpdmF0ZSByZWFkb25seSBnZnY6IHN0cmluZztcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNhbmR5TW9kdWxlc0RpcmVjdG9yeTogc3RyaW5nO1xuICAgIHByaXZhdGUgZmFybURpcmVjdG9yeTogc3RyaW5nO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZmFybUNvbmZpZ0FycmF5OiBGYXJtQ29uZmlnW107XG4gICAgcHJpdmF0ZSByZWFkb25seSBzdGFydFBhcmFsbGVsTGltaXQ6IExpbWl0O1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgcHJpdmF0ZSBnZW5lcmF0ZUNoYWluPzogQ2hhaW5hYmxlVmFsdWVQcm9kdWNlcjxhbnk+O1xuICAgIHByaXZhdGUgd2VicGFja0RldlNlcnZlclN0YXJ0ZWQgPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHVzZUdlbmVyYXRvckZyb21Mb2NhbFNvdXJjZXM6IGJvb2xlYW47XG4gICAgcHJpdmF0ZSByZWFkb25seSBlbmdpbmVEaXJlY3Rvcnk6IHN0cmluZztcbiAgICBwcml2YXRlIHJlYWRvbmx5IG5pZ2h0bHk6IGJvb2xlYW47XG4gICAgcHJpdmF0ZSByZWFkb25seSBidWlsZERlYnVnT25seTogYm9vbGVhbjtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNraXBDb2RlUmVmb3JtYXR0aW5nOiBib29sZWFuO1xuICAgIHByaXZhdGUgd2VicGFja0h5YnJpZEZpbGVTeXN0ZW0/OiBXZWJwYWNrSHlicmlkRmlsZVN5c3RlbTtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICAgICAgcG9ydDogbnVtYmVyLFxuICAgICAgICBhbGxGYXJtQ29uZmlnOiBzdHJpbmdbXSxcbiAgICAgICAgZ2Z2OiBzdHJpbmcsXG4gICAgICAgIGNhbmR5TW9kdWxlc0RpcmVjdG9yeTogc3RyaW5nLFxuICAgICAgICBmYXJtQ29uZmlnQXJyYXk6IEZhcm1Db25maWdbXSxcbiAgICAgICAgdXNlR2VuZXJhdG9yRnJvbUxvY2FsU291cmNlczogYm9vbGVhbixcbiAgICAgICAgZW5naW5lRGlyZWN0b3J5OiBzdHJpbmcsXG4gICAgICAgIGJ1aWxkRGVidWdPbmx5OiBib29sZWFuLFxuICAgICAgICBza2lwQ29kZVJlZm9ybWF0dGluZzogYm9vbGVhbixcbiAgICAgICAgbmlnaHRseTogYm9vbGVhblxuICAgICkge1xuICAgICAgICB0aGlzLnBvcnQgPSBwb3J0O1xuICAgICAgICB0aGlzLmFsbEZhcm1Db25maWcgPSBhbGxGYXJtQ29uZmlnO1xuICAgICAgICB0aGlzLmdmdiA9IGdmdjtcbiAgICAgICAgdGhpcy5jYW5keU1vZHVsZXNEaXJlY3RvcnkgPSBjYW5keU1vZHVsZXNEaXJlY3Rvcnk7XG4gICAgICAgIHRoaXMuZmFybUNvbmZpZ0FycmF5ID0gZmFybUNvbmZpZ0FycmF5O1xuICAgICAgICB0aGlzLnN0YXJ0UGFyYWxsZWxMaW1pdCA9IHBMaW1pdCgxKTtcbiAgICAgICAgdGhpcy51c2VHZW5lcmF0b3JGcm9tTG9jYWxTb3VyY2VzID0gdXNlR2VuZXJhdG9yRnJvbUxvY2FsU291cmNlcztcbiAgICAgICAgdGhpcy5lbmdpbmVEaXJlY3RvcnkgPSBlbmdpbmVEaXJlY3Rvcnk7XG4gICAgICAgIHRoaXMuYnVpbGREZWJ1Z09ubHkgPSBidWlsZERlYnVnT25seTtcbiAgICAgICAgdGhpcy5za2lwQ29kZVJlZm9ybWF0dGluZyA9IHNraXBDb2RlUmVmb3JtYXR0aW5nO1xuICAgICAgICB0aGlzLm5pZ2h0bHkgPSBuaWdodGx5O1xuICAgICAgICB0aGlzLmZhcm1EaXJlY3RvcnkgPSBcIlwiO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGFydCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhcnRQYXJhbGxlbExpbWl0KGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmdlbmVyYXRlQ2hhaW4gIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgYWxsUG9zc2libGVGaWxlUGF0aCA9IHRoaXMuYWxsRmFybUNvbmZpZy5tYXAoaSA9PiBwYXRoLmpvaW4oaSwgXCJmb3Jtc1wiLCB0aGlzLmdmdikpO1xuICAgICAgICAgICAgbGV0IGZvcm1EaXJQYXRoID0gXCJcIjtcbiAgICAgICAgICAgIGZvciAoY29uc3QgcHRoIG9mIGFsbFBvc3NpYmxlRmlsZVBhdGgpIHtcbiAgICAgICAgICAgICAgICBpZiAoYXdhaXQgcGF0aEV4aXN0cyhwdGgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvcm1EaXJQYXRoID0gcHRoO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZhcm1EaXJlY3RvcnkgPSBwYXRoLmpvaW4ocHRoLCBcIi4uXCIsIFwiLi5cIik7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGZvcm1EaXJQYXRoID09PSBcIlwiKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoXCJmb3JtRGlyUGF0aCBub3QgZm91bmRcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIShhd2FpdCBwYXRoRXhpc3RzKHRoaXMuZmFybURpcmVjdG9yeSkpKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoYEZhcm1EaXJlY3RvcnkgPSAke3RoaXMuZmFybURpcmVjdG9yeX0gbm90IGV4aXN0YCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMud2VicGFja0h5YnJpZEZpbGVTeXN0ZW0gPSBuZXcgV2VicGFja0h5YnJpZEZpbGVTeXN0ZW0ocGF0aC5qb2luKGZvcm1EaXJQYXRoLCBcImZvcm1cIikpO1xuXG4gICAgICAgICAgICB0aGlzLmdlbmVyYXRlQ2hhaW4gPSBPYnNlcnZlLmZpbGUocGF0aC5qb2luKGZvcm1EaXJQYXRoLCBcImZvcm0uanNvblwiKSlcbiAgICAgICAgICAgICAgICAudHJhbnNmb3JtKGZvcm1Kc29uRmlsZSA9PlxuICAgICAgICAgICAgICAgICAgICByZXNvbHZlRm9ybUluZm8oXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtSnNvbkZpbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtRGlyUGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubmlnaHRseVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC50cmFuc2Zvcm0oYXN5bmMgeCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnVzZUdlbmVyYXRvckZyb21Mb2NhbFNvdXJjZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ueCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3JTb3VyY2U6IHJlc29sdmVMb2NhbEdlbmVyYXRvclNvdXJjZSh0aGlzLmVuZ2luZURpcmVjdG9yeSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5naW5lU291cmNlOiByZXNvbHZlTG9jYWxFbmdpbmVTb3VyY2UodGhpcy5lbmdpbmVEaXJlY3RvcnkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh4LmdlbmVyYXRvclZlcnNpb24gPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiZ2VuZXJhdG9yVmVyc2lvbiBpcyBubyBkZWZpbmVkXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHguZW5naW5lVmVyc2lvbiA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJlbmdpbmVWZXJzaW9uIGlzIG5vIGRlZmluZWRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLngsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yU291cmNlOiBhd2FpdCByZXNvbHZlR2VuZXJhdG9yVmVyc2lvbih4LmdlbmVyYXRvclZlcnNpb24pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZ2luZVNvdXJjZTogYXdhaXQgcmVzb2x2ZUVuZ2luZVZlcnNpb24oeC5lbmdpbmVWZXJzaW9uKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5hdHRhY2goXG4gICAgICAgICAgICAgICAgICAgIGFzeW5jIGZpID0+IGdlbmVyYXRvckZhY3RvcnkoZmkuZ2VuZXJhdG9yU291cmNlLCB0aGlzLmNhbmR5TW9kdWxlc0RpcmVjdG9yeSwgZmFsc2UsIHVuZGVmaW5lZCksXG4gICAgICAgICAgICAgICAgICAgIGFzeW5jIChmaSwgeSkgPT4gKHsgLi4uZmksIGdlbmVyYXRvcjogeSB9KSxcbiAgICAgICAgICAgICAgICAgICAgYXN5bmMgZmkgPT4gZ2V0R2VuZXJhdG9yU291cmNlS2V5KGZpLmdlbmVyYXRvclNvdXJjZSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PlxuICAgICAgICAgICAgICAgICAgICBPYnNlcnZlLmZpbGVzKFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZm9ybVNvdXJjZXNQYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCIuLi8uLi9jb250cm9scy8qKi9nZW5lcmF0b3IvKlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJzY2hlbWFzLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwic3VnYXIvKiovKlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJjb250cm9scy8qKi8qXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcImF1dG9jYWxjLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiaGVscGVycy8qKi8qXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcInZhbGlkYXRpb25zLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwibG9jYWxpemF0aW9uLyoqLypcIlxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5kbyhhc3luYyBmaSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGb3Jtc0RpcldpdGhIbFBhdGggPSB0aGlzLmZhcm1Db25maWdBcnJheS5maW5kKGkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtRGlyUGF0aC5zdGFydHNXaXRoKGkuZmFybURpcmVjdG9yeSlcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoRm9ybXNEaXJXaXRoSGxQYXRoID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yKFwiRm9ybXNEaXJXaXRoSGxQYXRoID09PSB1bmRlZmluZWRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCBnZW5lcmF0ZUZvcm0oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmkuZm9ybVNvdXJjZXNQYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmFybURpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3Jtc0RpcldpdGhIbFBhdGguaGxGYXJtRGlyZWN0b3J5UGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaS5nZW5lcmF0b3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2tpcENvZGVSZWZvcm1hdHRpbmc6IHRoaXMuc2tpcENvZGVSZWZvcm1hdHRpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlc0hhc2g6IFwibG9jYWwtaGFzaFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy53ZWJwYWNrSHlicmlkRmlsZVN5c3RlbVxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZm9ybUVudHJ5UG9pbnRQYXRoID0gcGF0aC5qb2luKHRoaXMuZmFybURpcmVjdG9yeSwgXCJmb3Jtc1wiLCB0aGlzLmdmdiwgXCJmb3JtXCIsIFwid2ViLmpzXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy53ZWJwYWNrSHlicmlkRmlsZVN5c3RlbT8ud3JpdGVCYXRjaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1FbnRyeVBvaW50UGF0aF06IGdldFJlcG9ydEdlbmVyYXRvckVycm9yVG9QYWdlQm9keVNjcmlwdCh0aGlzLmZvcm1hdEVycm9yKGUpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGF3YWl0IHRoaXMuZ2VuZXJhdGVDaGFpbi5vYnNlcnZlKCk7XG4gICAgICAgICAgICBhd2FpdCBydW5Gb3JtQ29tcGlsYXRpb25WaWFXZWJwYWNrRGV2U2VydmVyKFxuICAgICAgICAgICAgICAgIHRoaXMuZ2Z2LFxuICAgICAgICAgICAgICAgIHRoaXMuZmFybURpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICBwYXRoLmpvaW4odGhpcy5mYXJtRGlyZWN0b3J5LCBcInJlc1wiKSxcbiAgICAgICAgICAgICAgICBcImxvY2FsLWhhc2hcIixcbiAgICAgICAgICAgICAgICB0aGlzLmJ1aWxkRGVidWdPbmx5LFxuICAgICAgICAgICAgICAgIHRoaXMud2VicGFja0h5YnJpZEZpbGVTeXN0ZW0sXG4gICAgICAgICAgICAgICAgdGhpcy5wb3J0XG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy53ZWJwYWNrRGV2U2VydmVyU3RhcnRlZCA9IHRydWU7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRHZW5lcmF0ZWRGaWxlQXNTdHJlYW0oZmlsZW5hbWU6IHN0cmluZyk6IFByb21pc2U8Tm9kZUpTLlJlYWRhYmxlU3RyZWFtPiB7XG4gICAgICAgIHdoaWxlICghdGhpcy53ZWJwYWNrRGV2U2VydmVyU3RhcnRlZCkge1xuICAgICAgICAgICAgYXdhaXQgZGVsYXkoNTAwKTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgZmlsZU5hbWUgPSBcIlwiO1xuICAgICAgICBjb25zdCBhbGxQb3NzaWJsZUZpbGVQYXRoID0gdGhpcy5hbGxGYXJtQ29uZmlnLm1hcChpID0+IHBhdGguam9pbihpLCBcImZvcm1zXCIsIHRoaXMuZ2Z2LCBcImZvcm1cIiwgZmlsZW5hbWUpKTtcbiAgICAgICAgZm9yIChjb25zdCBwdGggb2YgYWxsUG9zc2libGVGaWxlUGF0aCkge1xuICAgICAgICAgICAgaWYgKGF3YWl0IHBhdGhFeGlzdHMocHRoKSkge1xuICAgICAgICAgICAgICAgIGZpbGVOYW1lID0gcHRoO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChmaWxlTmFtZSA9PT0gXCJcIikge1xuICAgICAgICAgICAgdGhyb3cgRXJyb3IoXCJnZXRHZW5lcmF0ZWRGaWxlQXNTdHJlYW0gZmlsZW5hbWUgbm90IGZvdW5kXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIHRoaXMud2VicGFja0h5YnJpZEZpbGVTeXN0ZW0/LnJlYWRGaWxlKGZpbGVOYW1lLCBcInV0Zi04XCIsIChlcnJvciwgZGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgICAgICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoUmVhZGFibGUuZnJvbShbZGF0YV0pKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldEZpbGVBc1N0cmVhbShmaWxlbmFtZTogc3RyaW5nKTogUHJvbWlzZTxOb2RlSlMuUmVhZGFibGVTdHJlYW0+IHtcbiAgICAgICAgd2hpbGUgKCF0aGlzLndlYnBhY2tEZXZTZXJ2ZXJTdGFydGVkKSB7XG4gICAgICAgICAgICBhd2FpdCBkZWxheSg1MDApO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goYGh0dHBzOi8vbG9jYWxob3N0OiR7dGhpcy5wb3J0fS8ke2ZpbGVuYW1lfWAsIHtcbiAgICAgICAgICAgIG1ldGhvZDogXCJHRVRcIixcbiAgICAgICAgICAgIGFnZW50OiBuZXcgQWdlbnQoeyByZWplY3RVbmF1dGhvcml6ZWQ6IGZhbHNlIH0pLFxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyAhPSAyMDApIHtcbiAgICAgICAgICAgIGNvbnN0IHRleHRSZXNwb25zZSA9IGF3YWl0IHJlc3BvbnNlLnRleHQoKTtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcih0ZXh0UmVzcG9uc2UpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXNwb25zZS5ib2R5O1xuICAgIH1cblxuICAgIHByaXZhdGUgZm9ybWF0RXJyb3IoZTogUmVhc29uT3JFcnJvcik6IHN0cmluZyB7XG4gICAgICAgIGlmIChlIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgICAgIHJldHVybiBgJHtlfVxcbiR7ZS5zdGFja31gO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBgJHtlfWA7XG4gICAgfVxufVxuIl19
|
|
217
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9DTElDb21tYW5kcy9CdWlsZFNlcnZlci9SZXNvdXJjZXNDb250cm9sbGVycy9EZXZTZXJ2ZXJzL0J1aWxkRm9ybURldlNlcnZlci50cyJdLCJuYW1lcyI6WyJCdWlsZEZvcm1EZXZTZXJ2ZXIiLCJjb25zdHJ1Y3RvciIsInBvcnQiLCJhbGxGYXJtQ29uZmlnIiwiZ2Z2IiwiY2FuZHlNb2R1bGVzRGlyZWN0b3J5IiwiZmFybUNvbmZpZ0FycmF5IiwidXNlR2VuZXJhdG9yRnJvbUxvY2FsU291cmNlcyIsImVuZ2luZURpcmVjdG9yeSIsImJ1aWxkRGVidWdPbmx5Iiwic2tpcENvZGVSZWZvcm1hdHRpbmciLCJuaWdodGx5IiwiZmFybURpcmVjdG9yeSIsInN0YXJ0UGFyYWxsZWxMaW1pdCIsImdlbmVyYXRlQ2hhaW4iLCJ3ZWJwYWNrRGV2U2VydmVyU3RhcnRlZCIsIndlYnBhY2tIeWJyaWRGaWxlU3lzdGVtIiwic3RhcnQiLCJ1bmRlZmluZWQiLCJhbGxQb3NzaWJsZUZpbGVQYXRoIiwibWFwIiwiaSIsInBhdGgiLCJqb2luIiwiZm9ybURpclBhdGgiLCJwdGgiLCJFcnJvciIsIldlYnBhY2tIeWJyaWRGaWxlU3lzdGVtIiwiT2JzZXJ2ZSIsImZpbGUiLCJ0cmFuc2Zvcm0iLCJmb3JtSnNvbkZpbGUiLCJ4IiwiZ2VuZXJhdG9yU291cmNlIiwiZW5naW5lU291cmNlIiwiZ2VuZXJhdG9yVmVyc2lvbiIsImVuZ2luZVZlcnNpb24iLCJhdHRhY2giLCJmaSIsInkiLCJnZW5lcmF0b3IiLCJmaWxlcyIsImZvcm1Tb3VyY2VzUGF0aCIsImRvIiwiRm9ybXNEaXJXaXRoSGxQYXRoIiwiZmluZCIsInN0YXJ0c1dpdGgiLCJobEZhcm1EaXJlY3RvcnlQYXRoIiwicmVzb3VyY2VzSGFzaCIsImUiLCJmb3JtRW50cnlQb2ludFBhdGgiLCJ3cml0ZUJhdGNoIiwiZm9ybWF0RXJyb3IiLCJvYnNlcnZlIiwiZ2V0R2VuZXJhdGVkRmlsZUFzU3RyZWFtIiwiZmlsZW5hbWUiLCJmaWxlTmFtZSIsInN0YXRTeW5jIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJyZWFkRmlsZSIsImVycm9yIiwiZGF0YSIsIlJlYWRhYmxlIiwiZnJvbSIsImdldEZpbGVBc1N0cmVhbSIsInJlc3BvbnNlIiwibWV0aG9kIiwiYWdlbnQiLCJBZ2VudCIsInJlamVjdFVuYXV0aG9yaXplZCIsInN0YXR1cyIsInRleHRSZXNwb25zZSIsInRleHQiLCJib2R5Iiwic3RhY2siXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUVBOztBQUNBOztBQUVBOztBQUVBOztBQUNBOztBQUNBOztBQU1BOztBQUNBOztBQUdBOztBQUVBOztBQUNBOztBQUNBOztBQUVPLE1BQU1BLGtCQUFOLENBQXlCO0FBUTVCO0FBVU9DLEVBQUFBLFdBQVcsQ0FDZEMsSUFEYyxFQUVkQyxhQUZjLEVBR2RDLEdBSGMsRUFJZEMscUJBSmMsRUFLZEMsZUFMYyxFQU1kQyw0QkFOYyxFQU9kQyxlQVBjLEVBUWRDLGNBUmMsRUFTZEMsb0JBVGMsRUFVZEMsT0FWYyxFQVdoQjtBQUFBLFNBNUJlVCxJQTRCZjtBQUFBLFNBM0JlQyxhQTJCZjtBQUFBLFNBMUJlQyxHQTBCZjtBQUFBLFNBekJlQyxxQkF5QmY7QUFBQSxTQXhCTU8sYUF3Qk47QUFBQSxTQXZCZU4sZUF1QmY7QUFBQSxTQXRCZU8sa0JBc0JmO0FBQUEsU0FwQk1DLGFBb0JOO0FBQUEsU0FuQk1DLHVCQW1CTixHQW5CZ0MsS0FtQmhDO0FBQUEsU0FsQmVSLDRCQWtCZjtBQUFBLFNBakJlQyxlQWlCZjtBQUFBLFNBaEJlRyxPQWdCZjtBQUFBLFNBZmVGLGNBZWY7QUFBQSxTQWRlQyxvQkFjZjtBQUFBLFNBYk1NLHVCQWFOO0FBQ0UsU0FBS2QsSUFBTCxHQUFZQSxJQUFaO0FBQ0EsU0FBS0MsYUFBTCxHQUFxQkEsYUFBckI7QUFDQSxTQUFLQyxHQUFMLEdBQVdBLEdBQVg7QUFDQSxTQUFLQyxxQkFB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Q08sSUFBVCxFQUEzQjtBQUNBLFlBQU0sSUFBSWhELEtBQUosQ0FBVStDLFlBQVYsQ0FBTjtBQUNIOztBQUNELFdBQU9OLFFBQVEsQ0FBQ1EsSUFBaEI7QUFDSDs7QUFFT3ZCLEVBQUFBLFdBQVcsQ0FBQ0gsQ0FBRCxFQUEyQjtBQUMxQyxRQUFJQSxDQUFDLFlBQVl2QixLQUFqQixFQUF3QjtBQUNwQixhQUFRLEdBQUV1QixDQUFFLEtBQUlBLENBQUMsQ0FBQzJCLEtBQU0sRUFBeEI7QUFDSDs7QUFDRCxXQUFRLEdBQUUzQixDQUFFLEVBQVo7QUFDSDs7QUFyTjJCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIjtcbmltcG9ydCB7IFJlYWRhYmxlIH0gZnJvbSBcInN0cmVhbVwiO1xuaW1wb3J0IHsgQWdlbnQgfSBmcm9tIFwiaHR0cHNcIjtcblxuaW1wb3J0IGZldGNoIGZyb20gXCJub2RlLWZldGNoXCI7XG5pbXBvcnQgcExpbWl0LCB7IExpbWl0IH0gZnJvbSBcInAtbGltaXRcIjtcbmltcG9ydCB7IEZhcm1Db25maWcgfSBmcm9tIFwiVG9vbHMvc3JjL0NhbmR5Q0xJXCI7XG5pbXBvcnQgeyBwYXRoRXhpc3RzIH0gZnJvbSBcImZzLWV4dHJhXCI7XG5cbmltcG9ydCB7IGdlbmVyYXRlRm9ybSB9IGZyb20gXCIuLi8uLi8uLi8uLi9CdWlsZFRhc2tzL0Zvcm0vR2VuZXJhdGVGb3JtXCI7XG5pbXBvcnQgeyBnZW5lcmF0b3JGYWN0b3J5LCBnZXRHZW5lcmF0b3JTb3VyY2VLZXkgfSBmcm9tIFwiLi4vLi4vLi4vLi4vQnVpbGRUYXNrcy9HZW5lcmF0b3IvQWNxdWlyZUZvcm1HZW5lcmF0b3JcIjtcbmltcG9ydCB7XG4gICAgcmVzb2x2ZUVuZ2luZVZlcnNpb24sXG4gICAgcmVzb2x2ZUdlbmVyYXRvclZlcnNpb24sXG4gICAgcmVzb2x2ZUxvY2FsRW5naW5lU291cmNlLFxuICAgIHJlc29sdmVMb2NhbEdlbmVyYXRvclNvdXJjZSxcbn0gZnJvbSBcIi4uLy4uLy4uLy4uL0J1aWxkVGFza3MvUHVibGlzaGVkVmVyc2lvblV0aWxzXCI7XG5pbXBvcnQgeyByZXNvbHZlRm9ybUluZm8gfSBmcm9tIFwiLi4vLi4vLi4vLi4vQnVpbGRUYXNrcy9SZXNvbHZlRm9ybUluZm9cIjtcbmltcG9ydCB7IGRlbGF5IH0gZnJvbSBcIi4uLy4uLy4uLy4uLy4uLy4uL0NvbW1vbi9Bc3luY1V0aWxzXCI7XG5pbXBvcnQgeyBSZWFzb25PckVycm9yIH0gZnJvbSBcIi4uLy4uLy4uLy4uL0NvbW1vbnMvRXJyb3JVbnR5cGVkXCI7XG5pbXBvcnQgeyBDaGFpbmFibGVWYWx1ZVByb2R1Y2VyIH0gZnJvbSBcIi4uLy4uLy4uLy4uL0NvbW1vbnMvVGFza3NDb3JlL0NoYWluYWJsZVZhbHVlUHJvZHVjZXJcIjtcbmltcG9ydCB7IE9ic2VydmUgfSBmcm9tIFwiLi4vLi4vLi4vLi4vQ29tbW9ucy9UYXNrc0NvcmUvT2JzZXJ2ZVwiO1xuXG5pbXBvcnQgeyBnZXRSZXBvcnRHZW5lcmF0b3JFcnJvclRvUGFnZUJvZHlTY3JpcHQgfSBmcm9tIFwiLi9SZXBvcnRHZW5lcmF0b3JFcnJvclRvUGFnZUJvZHlcIjtcbmltcG9ydCB7IHJ1bkZvcm1Db21waWxhdGlvblZpYVdlYnBhY2tEZXZTZXJ2ZXIgfSBmcm9tIFwiLi9SdW5Gb3JtQ29tcGlsYXRpb25WaWFXZWJwYWNrRGV2U2VydmVyXCI7XG5pbXBvcnQgeyBXZWJwYWNrSHlicmlkRmlsZVN5c3RlbSB9IGZyb20gXCIuL1dlYnBhY2tJbk1lbW9yeVV0aWxzL1dlYnBhY2tIeWJyaWRGaWxlU3lzdGVtXCI7XG5cbmV4cG9ydCBjbGFzcyBCdWlsZEZvcm1EZXZTZXJ2ZXIge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcG9ydDogbnVtYmVyO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgYWxsRmFybUNvbmZpZzogc3RyaW5nW107XG4gICAgcHJpdmF0ZSByZWFkb25seSBnZnY6IHN0cmluZztcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNhbmR5TW9kdWxlc0RpcmVjdG9yeTogc3RyaW5nO1xuICAgIHByaXZhdGUgZmFybURpcmVjdG9yeTogc3RyaW5nO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZmFybUNvbmZpZ0FycmF5OiBGYXJtQ29uZmlnW107XG4gICAgcHJpdmF0ZSByZWFkb25seSBzdGFydFBhcmFsbGVsTGltaXQ6IExpbWl0O1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgcHJpdmF0ZSBnZW5lcmF0ZUNoYWluPzogQ2hhaW5hYmxlVmFsdWVQcm9kdWNlcjxhbnk+O1xuICAgIHByaXZhdGUgd2VicGFja0RldlNlcnZlclN0YXJ0ZWQgPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHVzZUdlbmVyYXRvckZyb21Mb2NhbFNvdXJjZXM6IGJvb2xlYW47XG4gICAgcHJpdmF0ZSByZWFkb25seSBlbmdpbmVEaXJlY3Rvcnk6IHN0cmluZztcbiAgICBwcml2YXRlIHJlYWRvbmx5IG5pZ2h0bHk6IGJvb2xlYW47XG4gICAgcHJpdmF0ZSByZWFkb25seSBidWlsZERlYnVnT25seTogYm9vbGVhbjtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNraXBDb2RlUmVmb3JtYXR0aW5nOiBib29sZWFuO1xuICAgIHByaXZhdGUgd2VicGFja0h5YnJpZEZpbGVTeXN0ZW0/OiBXZWJwYWNrSHlicmlkRmlsZVN5c3RlbTtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICAgICAgcG9ydDogbnVtYmVyLFxuICAgICAgICBhbGxGYXJtQ29uZmlnOiBzdHJpbmdbXSxcbiAgICAgICAgZ2Z2OiBzdHJpbmcsXG4gICAgICAgIGNhbmR5TW9kdWxlc0RpcmVjdG9yeTogc3RyaW5nLFxuICAgICAgICBmYXJtQ29uZmlnQXJyYXk6IEZhcm1Db25maWdbXSxcbiAgICAgICAgdXNlR2VuZXJhdG9yRnJvbUxvY2FsU291cmNlczogYm9vbGVhbixcbiAgICAgICAgZW5naW5lRGlyZWN0b3J5OiBzdHJpbmcsXG4gICAgICAgIGJ1aWxkRGVidWdPbmx5OiBib29sZWFuLFxuICAgICAgICBza2lwQ29kZVJlZm9ybWF0dGluZzogYm9vbGVhbixcbiAgICAgICAgbmlnaHRseTogYm9vbGVhblxuICAgICkge1xuICAgICAgICB0aGlzLnBvcnQgPSBwb3J0O1xuICAgICAgICB0aGlzLmFsbEZhcm1Db25maWcgPSBhbGxGYXJtQ29uZmlnO1xuICAgICAgICB0aGlzLmdmdiA9IGdmdjtcbiAgICAgICAgdGhpcy5jYW5keU1vZHVsZXNEaXJlY3RvcnkgPSBjYW5keU1vZHVsZXNEaXJlY3Rvcnk7XG4gICAgICAgIHRoaXMuZmFybUNvbmZpZ0FycmF5ID0gZmFybUNvbmZpZ0FycmF5O1xuICAgICAgICB0aGlzLnN0YXJ0UGFyYWxsZWxMaW1pdCA9IHBMaW1pdCgxKTtcbiAgICAgICAgdGhpcy51c2VHZW5lcmF0b3JGcm9tTG9jYWxTb3VyY2VzID0gdXNlR2VuZXJhdG9yRnJvbUxvY2FsU291cmNlcztcbiAgICAgICAgdGhpcy5lbmdpbmVEaXJlY3RvcnkgPSBlbmdpbmVEaXJlY3Rvcnk7XG4gICAgICAgIHRoaXMuYnVpbGREZWJ1Z09ubHkgPSBidWlsZERlYnVnT25seTtcbiAgICAgICAgdGhpcy5za2lwQ29kZVJlZm9ybWF0dGluZyA9IHNraXBDb2RlUmVmb3JtYXR0aW5nO1xuICAgICAgICB0aGlzLm5pZ2h0bHkgPSBuaWdodGx5O1xuICAgICAgICB0aGlzLmZhcm1EaXJlY3RvcnkgPSBcIlwiO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGFydCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhcnRQYXJhbGxlbExpbWl0KGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmdlbmVyYXRlQ2hhaW4gIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgYWxsUG9zc2libGVGaWxlUGF0aCA9IHRoaXMuYWxsRmFybUNvbmZpZy5tYXAoaSA9PiBwYXRoLmpvaW4oaSwgXCJmb3Jtc1wiLCB0aGlzLmdmdikpO1xuICAgICAgICAgICAgbGV0IGZvcm1EaXJQYXRoID0gXCJcIjtcbiAgICAgICAgICAgIGZvciAoY29uc3QgcHRoIG9mIGFsbFBvc3NpYmxlRmlsZVBhdGgpIHtcbiAgICAgICAgICAgICAgICBpZiAoYXdhaXQgcGF0aEV4aXN0cyhwdGgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvcm1EaXJQYXRoID0gcHRoO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZhcm1EaXJlY3RvcnkgPSBwYXRoLmpvaW4ocHRoLCBcIi4uXCIsIFwiLi5cIik7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGZvcm1EaXJQYXRoID09PSBcIlwiKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoXCJmb3JtRGlyUGF0aCBub3QgZm91bmRcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIShhd2FpdCBwYXRoRXhpc3RzKHRoaXMuZmFybURpcmVjdG9yeSkpKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoYEZhcm1EaXJlY3RvcnkgPSAke3RoaXMuZmFybURpcmVjdG9yeX0gbm90IGV4aXN0YCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMud2VicGFja0h5YnJpZEZpbGVTeXN0ZW0gPSBuZXcgV2VicGFja0h5YnJpZEZpbGVTeXN0ZW0ocGF0aC5qb2luKGZvcm1EaXJQYXRoLCBcImZvcm1cIikpO1xuXG4gICAgICAgICAgICB0aGlzLmdlbmVyYXRlQ2hhaW4gPSBPYnNlcnZlLmZpbGUocGF0aC5qb2luKGZvcm1EaXJQYXRoLCBcImZvcm0uanNvblwiKSlcbiAgICAgICAgICAgICAgICAudHJhbnNmb3JtKGZvcm1Kc29uRmlsZSA9PlxuICAgICAgICAgICAgICAgICAgICByZXNvbHZlRm9ybUluZm8oXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtSnNvbkZpbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtRGlyUGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubmlnaHRseVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC50cmFuc2Zvcm0oYXN5bmMgeCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnVzZUdlbmVyYXRvckZyb21Mb2NhbFNvdXJjZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ueCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3JTb3VyY2U6IHJlc29sdmVMb2NhbEdlbmVyYXRvclNvdXJjZSh0aGlzLmVuZ2luZURpcmVjdG9yeSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5naW5lU291cmNlOiByZXNvbHZlTG9jYWxFbmdpbmVTb3VyY2UodGhpcy5lbmdpbmVEaXJlY3RvcnkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh4LmdlbmVyYXRvclZlcnNpb24gPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiZ2VuZXJhdG9yVmVyc2lvbiBpcyBubyBkZWZpbmVkXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHguZW5naW5lVmVyc2lvbiA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJlbmdpbmVWZXJzaW9uIGlzIG5vIGRlZmluZWRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLngsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yU291cmNlOiBhd2FpdCByZXNvbHZlR2VuZXJhdG9yVmVyc2lvbih4LmdlbmVyYXRvclZlcnNpb24pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZ2luZVNvdXJjZTogYXdhaXQgcmVzb2x2ZUVuZ2luZVZlcnNpb24oeC5lbmdpbmVWZXJzaW9uKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5hdHRhY2goXG4gICAgICAgICAgICAgICAgICAgIGFzeW5jIGZpID0+IGdlbmVyYXRvckZhY3RvcnkoZmkuZ2VuZXJhdG9yU291cmNlLCB0aGlzLmNhbmR5TW9kdWxlc0RpcmVjdG9yeSwgZmFsc2UsIHVuZGVmaW5lZCksXG4gICAgICAgICAgICAgICAgICAgIGFzeW5jIChmaSwgeSkgPT4gKHsgLi4uZmksIGdlbmVyYXRvcjogeSB9KSxcbiAgICAgICAgICAgICAgICAgICAgYXN5bmMgZmkgPT4gZ2V0R2VuZXJhdG9yU291cmNlS2V5KGZpLmdlbmVyYXRvclNvdXJjZSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PlxuICAgICAgICAgICAgICAgICAgICBPYnNlcnZlLmZpbGVzKFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZm9ybVNvdXJjZXNQYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCIuLi8uLi9jb250cm9scy8qKi9nZW5lcmF0b3IvKlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJzY2hlbWFzLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwic3VnYXIvKiovKlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJjb250cm9scy8qKi8qXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcImF1dG9jYWxjLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiaGVscGVycy8qKi8qXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcInZhbGlkYXRpb25zLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwibG9jYWxpemF0aW9uLyoqLypcIlxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5kbyhhc3luYyBmaSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGb3Jtc0RpcldpdGhIbFBhdGggPSB0aGlzLmZhcm1Db25maWdBcnJheS5maW5kKGkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtRGlyUGF0aC5zdGFydHNXaXRoKGkuZmFybURpcmVjdG9yeSlcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoRm9ybXNEaXJXaXRoSGxQYXRoID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yKFwiRm9ybXNEaXJXaXRoSGxQYXRoID09PSB1bmRlZmluZWRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCBnZW5lcmF0ZUZvcm0oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmkuZm9ybVNvdXJjZXNQYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmFybURpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3Jtc0RpcldpdGhIbFBhdGguaGxGYXJtRGlyZWN0b3J5UGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaS5nZW5lcmF0b3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2tpcENvZGVSZWZvcm1hdHRpbmc6IHRoaXMuc2tpcENvZGVSZWZvcm1hdHRpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlc0hhc2g6IFwibG9jYWwtaGFzaFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy53ZWJwYWNrSHlicmlkRmlsZVN5c3RlbVxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZm9ybUVudHJ5UG9pbnRQYXRoID0gcGF0aC5qb2luKHRoaXMuZmFybURpcmVjdG9yeSwgXCJmb3Jtc1wiLCB0aGlzLmdmdiwgXCJmb3JtXCIsIFwid2ViLmpzXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy53ZWJwYWNrSHlicmlkRmlsZVN5c3RlbT8ud3JpdGVCYXRjaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1FbnRyeVBvaW50UGF0aF06IGdldFJlcG9ydEdlbmVyYXRvckVycm9yVG9QYWdlQm9keVNjcmlwdCh0aGlzLmZvcm1hdEVycm9yKGUpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGF3YWl0IHRoaXMuZ2VuZXJhdGVDaGFpbi5vYnNlcnZlKCk7XG4gICAgICAgICAgICBhd2FpdCBydW5Gb3JtQ29tcGlsYXRpb25WaWFXZWJwYWNrRGV2U2VydmVyKFxuICAgICAgICAgICAgICAgIHRoaXMuZ2Z2LFxuICAgICAgICAgICAgICAgIHRoaXMuZmFybURpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICBwYXRoLmpvaW4odGhpcy5mYXJtRGlyZWN0b3J5LCBcInJlc1wiKSxcbiAgICAgICAgICAgICAgICBcImxvY2FsLWhhc2hcIixcbiAgICAgICAgICAgICAgICB0aGlzLmJ1aWxkRGVidWdPbmx5LFxuICAgICAgICAgICAgICAgIHRoaXMud2VicGFja0h5YnJpZEZpbGVTeXN0ZW0sXG4gICAgICAgICAgICAgICAgdGhpcy5wb3J0XG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy53ZWJwYWNrRGV2U2VydmVyU3RhcnRlZCA9IHRydWU7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRHZW5lcmF0ZWRGaWxlQXNTdHJlYW0oZmlsZW5hbWU6IHN0cmluZyk6IFByb21pc2U8Tm9kZUpTLlJlYWRhYmxlU3RyZWFtPiB7XG4gICAgICAgIHdoaWxlICghdGhpcy53ZWJwYWNrRGV2U2VydmVyU3RhcnRlZCkge1xuICAgICAgICAgICAgYXdhaXQgZGVsYXkoNTAwKTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgZmlsZU5hbWUgPSBcIlwiO1xuICAgICAgICBjb25zdCBhbGxQb3NzaWJsZUZpbGVQYXRoID0gdGhpcy5hbGxGYXJtQ29uZmlnLm1hcChpID0+IHBhdGguam9pbihpLCBcImZvcm1zXCIsIHRoaXMuZ2Z2LCBcImZvcm1cIiwgZmlsZW5hbWUpKTtcbiAgICAgICAgZm9yIChjb25zdCBwdGggb2YgYWxsUG9zc2libGVGaWxlUGF0aCkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy53ZWJwYWNrSHlicmlkRmlsZVN5c3RlbT8uc3RhdFN5bmMocHRoKSkge1xuICAgICAgICAgICAgICAgICAgICBmaWxlTmFtZSA9IHB0aDtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChmaWxlTmFtZSA9PT0gXCJcIikge1xuICAgICAgICAgICAgdGhyb3cgRXJyb3IoXCJnZXRHZW5lcmF0ZWRGaWxlQXNTdHJlYW0gZmlsZW5hbWUgbm90IGZvdW5kXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIHRoaXMud2VicGFja0h5YnJpZEZpbGVTeXN0ZW0/LnJlYWRGaWxlKGZpbGVOYW1lLCBcInV0Zi04XCIsIChlcnJvciwgZGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgICAgICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoUmVhZGFibGUuZnJvbShbZGF0YV0pKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldEZpbGVBc1N0cmVhbShmaWxlbmFtZTogc3RyaW5nKTogUHJvbWlzZTxOb2RlSlMuUmVhZGFibGVTdHJlYW0+IHtcbiAgICAgICAgd2hpbGUgKCF0aGlzLndlYnBhY2tEZXZTZXJ2ZXJTdGFydGVkKSB7XG4gICAgICAgICAgICBhd2FpdCBkZWxheSg1MDApO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goYGh0dHBzOi8vbG9jYWxob3N0OiR7dGhpcy5wb3J0fS8ke2ZpbGVuYW1lfWAsIHtcbiAgICAgICAgICAgIG1ldGhvZDogXCJHRVRcIixcbiAgICAgICAgICAgIGFnZW50OiBuZXcgQWdlbnQoeyByZWplY3RVbmF1dGhvcml6ZWQ6IGZhbHNlIH0pLFxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyAhPSAyMDApIHtcbiAgICAgICAgICAgIGNvbnN0IHRleHRSZXNwb25zZSA9IGF3YWl0IHJlc3BvbnNlLnRleHQoKTtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcih0ZXh0UmVzcG9uc2UpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXNwb25zZS5ib2R5O1xuICAgIH1cblxuICAgIHByaXZhdGUgZm9ybWF0RXJyb3IoZTogUmVhc29uT3JFcnJvcik6IHN0cmluZyB7XG4gICAgICAgIGlmIChlIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgICAgIHJldHVybiBgJHtlfVxcbiR7ZS5zdGFja31gO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBgJHtlfWA7XG4gICAgfVxufVxuIl19
|