ngx-mask 13.1.4 → 13.1.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -112,6 +112,8 @@ For separator you can add thousandSeparator
112
112
  | 000.000.000-99 | 048.457.987-98 |
113
113
  | AAAA | 0F6g |
114
114
  | SSSS | asDF |
115
+ | UUUU | ASDF |
116
+ | LLLL | asdf |
115
117
 
116
118
  ## Mask Options
117
119
 
@@ -163,6 +165,8 @@ We have next default patterns:
163
165
  | **9** | digits (like 0 to 9 numbers), but optional |
164
166
  | **A** | letters (uppercase or lowercase) and digits |
165
167
  | **S** | only letters (uppercase or lowercase) |
168
+ | **U** | only letters uppercase |
169
+ | **L** | only letters lowercase |
166
170
 
167
171
  ##### Usage
168
172
 
@@ -40,6 +40,12 @@ export const initialConfig = {
40
40
  S: {
41
41
  pattern: new RegExp('[a-zA-Z]'),
42
42
  },
43
+ U: {
44
+ pattern: new RegExp('[A-Z]'),
45
+ },
46
+ L: {
47
+ pattern: new RegExp('[a-z]'),
48
+ },
43
49
  d: {
44
50
  pattern: new RegExp('\\d'),
45
51
  },
@@ -72,4 +78,4 @@ export const withoutValidation = [
72
78
  'd0',
73
79
  'M0',
74
80
  ];
75
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW1hc2stbGliL3NyYy9saWIvY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBK0I3RCxNQUFNLENBQUMsTUFBTSxNQUFNLEdBQTRCLElBQUksY0FBYyxDQUFDLGlCQUFpQixDQUFDLENBQUM7QUFDckYsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUE0QixJQUFJLGNBQWMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0FBQzdGLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBNEIsSUFBSSxjQUFjLENBQ3hFLHlCQUF5QixDQUN6QixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFZO0lBQ3JDLE1BQU0sRUFBRSxFQUFFO0lBQ1YsTUFBTSxFQUFFLEVBQUU7SUFDVixpQkFBaUIsRUFBRSxHQUFHO0lBQ3RCLGFBQWEsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUM7SUFDekIsZUFBZSxFQUFFLEtBQUs7SUFDdEIsWUFBWSxFQUFFLEtBQUs7SUFDbkIsYUFBYSxFQUFFLEtBQUs7SUFDcEIsb0JBQW9CLEVBQUUsR0FBRztJQUN6QixxQkFBcUIsRUFBRSxJQUFJO0lBQzNCLFdBQVcsRUFBRSxTQUFTO0lBQ3RCLG1CQUFtQixFQUFFLEVBQUU7SUFDdkIsY0FBYyxFQUFFLEVBQUU7SUFDbEIsb0JBQW9CLEVBQUUsS0FBSztJQUMzQixVQUFVLEVBQUUsSUFBSTtJQUNoQixxREFBcUQ7SUFDckQsaUJBQWlCLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0lBQ3pGLGdCQUFnQixFQUFFLEtBQUs7SUFDdkIsbUJBQW1CLEVBQUUsS0FBSztJQUMxQixVQUFVLEVBQUUsSUFBSSxZQUFZLEVBQVE7SUFDcEMsUUFBUSxFQUFFO1FBQ1QsR0FBRyxFQUFFO1lBQ0osT0FBTyxFQUFFLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQztTQUMxQjtRQUNELEdBQUcsRUFBRTtZQUNKLE9BQU8sRUFBRSxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUM7WUFDMUIsUUFBUSxFQUFFLElBQUk7U0FDZDtRQUNELENBQUMsRUFBRTtZQUNGLE9BQU8sRUFBRSxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUM7WUFDMUIsTUFBTSxFQUFFLEdBQUc7U0FDWDtRQUNELENBQUMsRUFBRTtZQUNGLE9BQU8sRUFBRSxJQUFJLE1BQU0sQ0FBQyxhQUFhLENBQUM7U0FDbEM7UUFDRCxDQUFDLEVBQUU7WUFDRixPQUFPLEVBQUUsSUFBSSxNQUFNLENBQUMsVUFBVSxDQUFDO1NBQy9CO1FBQ0QsQ0FBQyxFQUFFO1lBQ0YsT0FBTyxFQUFFLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQztTQUMxQjtRQUNELENBQUMsRUFBRTtZQUNGLE9BQU8sRUFBRSxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUM7U0FDMUI7UUFDRCxDQUFDLEVBQUU7WUFDRixPQUFPLEVBQUUsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDO1NBQzFCO1FBQ0QsQ0FBQyxFQUFFO1lBQ0YsT0FBTyxFQUFFLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQztTQUMxQjtRQUNELENBQUMsRUFBRTtZQUNGLE9BQU8sRUFBRSxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUM7U0FDMUI7UUFDRCxDQUFDLEVBQUU7WUFDRixPQUFPLEVBQUUsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDO1NBQzFCO0tBQ0Q7Q0FDRCxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFhLENBQUMsVUFBVSxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztBQUVsRSxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBYTtJQUMxQyxTQUFTO0lBQ1QsSUFBSTtJQUNKLElBQUk7SUFDSixJQUFJO0lBQ0osV0FBVztJQUNYLFlBQVk7SUFDWixPQUFPO0lBQ1AsSUFBSTtJQUNKLElBQUk7Q0FDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4sIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElDb25maWcge1xuXHRzdWZmaXg6IHN0cmluZztcblx0cHJlZml4OiBzdHJpbmc7XG5cdHRob3VzYW5kU2VwYXJhdG9yOiBzdHJpbmc7XG5cdGRlY2ltYWxNYXJrZXI6ICcuJyB8ICcsJyB8IFsnLicsICcsJ107XG5cdGNsZWFySWZOb3RNYXRjaDogYm9vbGVhbjtcblx0c2hvd1RlbXBsYXRlOiBib29sZWFuO1xuXHRzaG93TWFza1R5cGVkOiBib29sZWFuO1xuXHRwbGFjZUhvbGRlckNoYXJhY3Rlcjogc3RyaW5nO1xuXHRzaG93bk1hc2tFeHByZXNzaW9uOiBzdHJpbmc7XG5cdGRyb3BTcGVjaWFsQ2hhcmFjdGVyczogYm9vbGVhbiB8IHN0cmluZ1tdO1xuXHRzcGVjaWFsQ2hhcmFjdGVyczogc3RyaW5nW107XG5cdGhpZGRlbklucHV0OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXHR2YWxpZGF0aW9uOiBib29sZWFuO1xuXHRzZXBhcmF0b3JMaW1pdDogc3RyaW5nO1xuXHRhbGxvd05lZ2F0aXZlTnVtYmVyczogYm9vbGVhbjtcblx0bGVhZFplcm9EYXRlVGltZTogYm9vbGVhbjtcblx0dHJpZ2dlck9uTWFza0NoYW5nZTogYm9vbGVhbjtcblx0bWFza0ZpbGxlZDogRXZlbnRFbWl0dGVyPHZvaWQ+O1xuXHRwYXR0ZXJuczoge1xuXHRcdFtjaGFyYWN0ZXI6IHN0cmluZ106IHtcblx0XHRcdHBhdHRlcm46IFJlZ0V4cDtcblx0XHRcdG9wdGlvbmFsPzogYm9vbGVhbjtcblx0XHRcdHN5bWJvbD86IHN0cmluZztcblx0XHR9O1xuXHR9O1xufVxuXG5leHBvcnQgdHlwZSBvcHRpb25zQ29uZmlnID0gUGFydGlhbDxJQ29uZmlnPjtcbmV4cG9ydCBjb25zdCBjb25maWc6IEluamVjdGlvblRva2VuPElDb25maWc+ID0gbmV3IEluamVjdGlvblRva2VuKCduZ3gtbWFzayBjb25maWcnKTtcbmV4cG9ydCBjb25zdCBORVdfQ09ORklHOiBJbmplY3Rpb25Ub2tlbjxJQ29uZmlnPiA9IG5ldyBJbmplY3Rpb25Ub2tlbignbmV3IG5neC1tYXNrIGNvbmZpZycpO1xuZXhwb3J0IGNvbnN0IElOSVRJQUxfQ09ORklHOiBJbmplY3Rpb25Ub2tlbjxJQ29uZmlnPiA9IG5ldyBJbmplY3Rpb25Ub2tlbihcblx0J2luaXRpYWwgbmd4LW1hc2sgY29uZmlnJyxcbik7XG5cbmV4cG9ydCBjb25zdCBpbml0aWFsQ29uZmlnOiBJQ29uZmlnID0ge1xuXHRzdWZmaXg6ICcnLFxuXHRwcmVmaXg6ICcnLFxuXHR0aG91c2FuZFNlcGFyYXRvcjogJyAnLFxuXHRkZWNpbWFsTWFya2VyOiBbJy4nLCAnLCddLFxuXHRjbGVhcklmTm90TWF0Y2g6IGZhbHNlLFxuXHRzaG93VGVtcGxhdGU6IGZhbHNlLFxuXHRzaG93TWFza1R5cGVkOiBmYWxzZSxcblx0cGxhY2VIb2xkZXJDaGFyYWN0ZXI6ICdfJyxcblx0ZHJvcFNwZWNpYWxDaGFyYWN0ZXJzOiB0cnVlLFxuXHRoaWRkZW5JbnB1dDogdW5kZWZpbmVkLFxuXHRzaG93bk1hc2tFeHByZXNzaW9uOiAnJyxcblx0c2VwYXJhdG9yTGltaXQ6ICcnLFxuXHRhbGxvd05lZ2F0aXZlTnVtYmVyczogZmFsc2UsXG5cdHZhbGlkYXRpb246IHRydWUsXG5cdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvcXVvdGVzXG5cdHNwZWNpYWxDaGFyYWN0ZXJzOiBbJy0nLCAnLycsICcoJywgJyknLCAnLicsICc6JywgJyAnLCAnKycsICcsJywgJ0AnLCAnWycsICddJywgJ1wiJywgXCInXCJdLFxuXHRsZWFkWmVyb0RhdGVUaW1lOiBmYWxzZSxcblx0dHJpZ2dlck9uTWFza0NoYW5nZTogZmFsc2UsXG5cdG1hc2tGaWxsZWQ6IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKSxcblx0cGF0dGVybnM6IHtcblx0XHQnMCc6IHtcblx0XHRcdHBhdHRlcm46IG5ldyBSZWdFeHAoJ1xcXFxkJyksXG5cdFx0fSxcblx0XHQnOSc6IHtcblx0XHRcdHBhdHRlcm46IG5ldyBSZWdFeHAoJ1xcXFxkJyksXG5cdFx0XHRvcHRpb25hbDogdHJ1ZSxcblx0XHR9LFxuXHRcdFg6IHtcblx0XHRcdHBhdHRlcm46IG5ldyBSZWdFeHAoJ1xcXFxkJyksXG5cdFx0XHRzeW1ib2w6ICcqJyxcblx0XHR9LFxuXHRcdEE6IHtcblx0XHRcdHBhdHRlcm46IG5ldyBSZWdFeHAoJ1thLXpBLVowLTldJyksXG5cdFx0fSxcblx0XHRTOiB7XG5cdFx0XHRwYXR0ZXJuOiBuZXcgUmVnRXhwKCdbYS16QS1aXScpLFxuXHRcdH0sXG5cdFx0ZDoge1xuXHRcdFx0cGF0dGVybjogbmV3IFJlZ0V4cCgnXFxcXGQnKSxcblx0XHR9LFxuXHRcdG06IHtcblx0XHRcdHBhdHRlcm46IG5ldyBSZWdFeHAoJ1xcXFxkJyksXG5cdFx0fSxcblx0XHRNOiB7XG5cdFx0XHRwYXR0ZXJuOiBuZXcgUmVnRXhwKCdcXFxcZCcpLFxuXHRcdH0sXG5cdFx0SDoge1xuXHRcdFx0cGF0dGVybjogbmV3IFJlZ0V4cCgnXFxcXGQnKSxcblx0XHR9LFxuXHRcdGg6IHtcblx0XHRcdHBhdHRlcm46IG5ldyBSZWdFeHAoJ1xcXFxkJyksXG5cdFx0fSxcblx0XHRzOiB7XG5cdFx0XHRwYXR0ZXJuOiBuZXcgUmVnRXhwKCdcXFxcZCcpLFxuXHRcdH0sXG5cdH0sXG59O1xuXG5leHBvcnQgY29uc3QgdGltZU1hc2tzOiBzdHJpbmdbXSA9IFsnSGg6bTA6czAnLCAnSGg6bTAnLCAnbTA6czAnXTtcblxuZXhwb3J0IGNvbnN0IHdpdGhvdXRWYWxpZGF0aW9uOiBzdHJpbmdbXSA9IFtcblx0J3BlcmNlbnQnLFxuXHQnSGgnLFxuXHQnczAnLFxuXHQnbTAnLFxuXHQnc2VwYXJhdG9yJyxcblx0J2QwL00wLzAwMDAnLFxuXHQnZDAvTTAnLFxuXHQnZDAnLFxuXHQnTTAnLFxuXTtcbiJdfQ==
81
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW1hc2stbGliL3NyYy9saWIvY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBK0I3RCxNQUFNLENBQUMsTUFBTSxNQUFNLEdBQTRCLElBQUksY0FBYyxDQUFDLGlCQUFpQixDQUFDLENBQUM7QUFDckYsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUE0QixJQUFJLGNBQWMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0FBQzdGLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBNEIsSUFBSSxjQUFjLENBQ3hFLHlCQUF5QixDQUN6QixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFZO0lBQ3JDLE1BQU0sRUFBRSxFQUFFO0lBQ1YsTUFBTSxFQUFFLEVBQUU7SUFDVixpQkFBaUIsRUFBRSxHQUFHO0lBQ3RCLGFBQWEsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUM7SUFDekIsZUFBZSxFQUFFLEtBQUs7SUFDdEIsWUFBWSxFQUFFLEtBQUs7SUFDbkIsYUFBYSxFQUFFLEtBQUs7SUFDcEIsb0JBQW9CLEVBQUUsR0FBRztJQUN6QixxQkFBcUIsRUFBRSxJQUFJO0lBQzNCLFdBQVcsRUFBRSxTQUFTO0lBQ3RCLG1CQUFtQixFQUFFLEVBQUU7SUFDdkIsY0FBYyxFQUFFLEVBQUU7SUFDbEIsb0JBQW9CLEVBQUUsS0FBSztJQUMzQixVQUFVLEVBQUUsSUFBSTtJQUNoQixxREFBcUQ7SUFDckQsaUJBQWlCLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0lBQ3pGLGdCQUFnQixFQUFFLEtBQUs7SUFDdkIsbUJBQW1CLEVBQUUsS0FBSztJQUMxQixVQUFVLEVBQUUsSUFBSSxZQUFZLEVBQVE7SUFDcEMsUUFBUSxFQUFFO1FBQ1QsR0FBRyxFQUFFO1lBQ0osT0FBTyxFQUFFLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQztTQUMxQjtRQUNELEdBQUcsRUFBRTtZQUNKLE9BQU8sRUFBRSxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUM7WUFDMUIsUUFBUSxFQUFFLElBQUk7U0FDZDtRQUNELENBQUMsRUFBRTtZQUNGLE9BQU8sRUFBRSxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUM7WUFDMUIsTUFBTSxFQUFFLEdBQUc7U0FDWDtRQUNELENBQUMsRUFBRTtZQUNGLE9BQU8sRUFBRSxJQUFJLE1BQU0sQ0FBQyxhQUFhLENBQUM7U0FDbEM7UUFDRCxDQUFDLEVBQUU7WUFDRixPQUFPLEVBQUUsSUFBSSxNQUFNLENBQUMsVUFBVSxDQUFDO1NBQy9CO1FBQ0QsQ0FBQyxFQUFFO1lBQ0YsT0FBTyxFQUFFLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQztTQUM1QjtRQUNELENBQUMsRUFBRTtZQUNGLE9BQU8sRUFBRSxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUM7U0FDNUI7UUFDRCxDQUFDLEVBQUU7WUFDRixPQUFPLEVBQUUsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDO1NBQzFCO1FBQ0QsQ0FBQyxFQUFFO1lBQ0YsT0FBTyxFQUFFLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQztTQUMxQjtRQUNELENBQUMsRUFBRTtZQUNGLE9BQU8sRUFBRSxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUM7U0FDMUI7UUFDRCxDQUFDLEVBQUU7WUFDRixPQUFPLEVBQUUsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDO1NBQzFCO1FBQ0QsQ0FBQyxFQUFFO1lBQ0YsT0FBTyxFQUFFLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQztTQUMxQjtRQUNELENBQUMsRUFBRTtZQUNGLE9BQU8sRUFBRSxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUM7U0FDMUI7S0FDRDtDQUNELENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxTQUFTLEdBQWEsQ0FBQyxVQUFVLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBRWxFLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFhO0lBQzFDLFNBQVM7SUFDVCxJQUFJO0lBQ0osSUFBSTtJQUNKLElBQUk7SUFDSixXQUFXO0lBQ1gsWUFBWTtJQUNaLE9BQU87SUFDUCxJQUFJO0lBQ0osSUFBSTtDQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUNvbmZpZyB7XG5cdHN1ZmZpeDogc3RyaW5nO1xuXHRwcmVmaXg6IHN0cmluZztcblx0dGhvdXNhbmRTZXBhcmF0b3I6IHN0cmluZztcblx0ZGVjaW1hbE1hcmtlcjogJy4nIHwgJywnIHwgWycuJywgJywnXTtcblx0Y2xlYXJJZk5vdE1hdGNoOiBib29sZWFuO1xuXHRzaG93VGVtcGxhdGU6IGJvb2xlYW47XG5cdHNob3dNYXNrVHlwZWQ6IGJvb2xlYW47XG5cdHBsYWNlSG9sZGVyQ2hhcmFjdGVyOiBzdHJpbmc7XG5cdHNob3duTWFza0V4cHJlc3Npb246IHN0cmluZztcblx0ZHJvcFNwZWNpYWxDaGFyYWN0ZXJzOiBib29sZWFuIHwgc3RyaW5nW107XG5cdHNwZWNpYWxDaGFyYWN0ZXJzOiBzdHJpbmdbXTtcblx0aGlkZGVuSW5wdXQ6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5cdHZhbGlkYXRpb246IGJvb2xlYW47XG5cdHNlcGFyYXRvckxpbWl0OiBzdHJpbmc7XG5cdGFsbG93TmVnYXRpdmVOdW1iZXJzOiBib29sZWFuO1xuXHRsZWFkWmVyb0RhdGVUaW1lOiBib29sZWFuO1xuXHR0cmlnZ2VyT25NYXNrQ2hhbmdlOiBib29sZWFuO1xuXHRtYXNrRmlsbGVkOiBFdmVudEVtaXR0ZXI8dm9pZD47XG5cdHBhdHRlcm5zOiB7XG5cdFx0W2NoYXJhY3Rlcjogc3RyaW5nXToge1xuXHRcdFx0cGF0dGVybjogUmVnRXhwO1xuXHRcdFx0b3B0aW9uYWw/OiBib29sZWFuO1xuXHRcdFx0c3ltYm9sPzogc3RyaW5nO1xuXHRcdH07XG5cdH07XG59XG5cbmV4cG9ydCB0eXBlIG9wdGlvbnNDb25maWcgPSBQYXJ0aWFsPElDb25maWc+O1xuZXhwb3J0IGNvbnN0IGNvbmZpZzogSW5qZWN0aW9uVG9rZW48SUNvbmZpZz4gPSBuZXcgSW5qZWN0aW9uVG9rZW4oJ25neC1tYXNrIGNvbmZpZycpO1xuZXhwb3J0IGNvbnN0IE5FV19DT05GSUc6IEluamVjdGlvblRva2VuPElDb25maWc+ID0gbmV3IEluamVjdGlvblRva2VuKCduZXcgbmd4LW1hc2sgY29uZmlnJyk7XG5leHBvcnQgY29uc3QgSU5JVElBTF9DT05GSUc6IEluamVjdGlvblRva2VuPElDb25maWc+ID0gbmV3IEluamVjdGlvblRva2VuKFxuXHQnaW5pdGlhbCBuZ3gtbWFzayBjb25maWcnLFxuKTtcblxuZXhwb3J0IGNvbnN0IGluaXRpYWxDb25maWc6IElDb25maWcgPSB7XG5cdHN1ZmZpeDogJycsXG5cdHByZWZpeDogJycsXG5cdHRob3VzYW5kU2VwYXJhdG9yOiAnICcsXG5cdGRlY2ltYWxNYXJrZXI6IFsnLicsICcsJ10sXG5cdGNsZWFySWZOb3RNYXRjaDogZmFsc2UsXG5cdHNob3dUZW1wbGF0ZTogZmFsc2UsXG5cdHNob3dNYXNrVHlwZWQ6IGZhbHNlLFxuXHRwbGFjZUhvbGRlckNoYXJhY3RlcjogJ18nLFxuXHRkcm9wU3BlY2lhbENoYXJhY3RlcnM6IHRydWUsXG5cdGhpZGRlbklucHV0OiB1bmRlZmluZWQsXG5cdHNob3duTWFza0V4cHJlc3Npb246ICcnLFxuXHRzZXBhcmF0b3JMaW1pdDogJycsXG5cdGFsbG93TmVnYXRpdmVOdW1iZXJzOiBmYWxzZSxcblx0dmFsaWRhdGlvbjogdHJ1ZSxcblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9xdW90ZXNcblx0c3BlY2lhbENoYXJhY3RlcnM6IFsnLScsICcvJywgJygnLCAnKScsICcuJywgJzonLCAnICcsICcrJywgJywnLCAnQCcsICdbJywgJ10nLCAnXCInLCBcIidcIl0sXG5cdGxlYWRaZXJvRGF0ZVRpbWU6IGZhbHNlLFxuXHR0cmlnZ2VyT25NYXNrQ2hhbmdlOiBmYWxzZSxcblx0bWFza0ZpbGxlZDogbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpLFxuXHRwYXR0ZXJuczoge1xuXHRcdCcwJzoge1xuXHRcdFx0cGF0dGVybjogbmV3IFJlZ0V4cCgnXFxcXGQnKSxcblx0XHR9LFxuXHRcdCc5Jzoge1xuXHRcdFx0cGF0dGVybjogbmV3IFJlZ0V4cCgnXFxcXGQnKSxcblx0XHRcdG9wdGlvbmFsOiB0cnVlLFxuXHRcdH0sXG5cdFx0WDoge1xuXHRcdFx0cGF0dGVybjogbmV3IFJlZ0V4cCgnXFxcXGQnKSxcblx0XHRcdHN5bWJvbDogJyonLFxuXHRcdH0sXG5cdFx0QToge1xuXHRcdFx0cGF0dGVybjogbmV3IFJlZ0V4cCgnW2EtekEtWjAtOV0nKSxcblx0XHR9LFxuXHRcdFM6IHtcblx0XHRcdHBhdHRlcm46IG5ldyBSZWdFeHAoJ1thLXpBLVpdJyksXG5cdFx0fSxcblx0XHRVOiB7XG5cdFx0XHRwYXR0ZXJuOiBuZXcgUmVnRXhwKCdbQS1aXScpLFxuXHRcdH0sXG5cdFx0TDoge1xuXHRcdFx0cGF0dGVybjogbmV3IFJlZ0V4cCgnW2Etel0nKSxcblx0XHR9LFxuXHRcdGQ6IHtcblx0XHRcdHBhdHRlcm46IG5ldyBSZWdFeHAoJ1xcXFxkJyksXG5cdFx0fSxcblx0XHRtOiB7XG5cdFx0XHRwYXR0ZXJuOiBuZXcgUmVnRXhwKCdcXFxcZCcpLFxuXHRcdH0sXG5cdFx0TToge1xuXHRcdFx0cGF0dGVybjogbmV3IFJlZ0V4cCgnXFxcXGQnKSxcblx0XHR9LFxuXHRcdEg6IHtcblx0XHRcdHBhdHRlcm46IG5ldyBSZWdFeHAoJ1xcXFxkJyksXG5cdFx0fSxcblx0XHRoOiB7XG5cdFx0XHRwYXR0ZXJuOiBuZXcgUmVnRXhwKCdcXFxcZCcpLFxuXHRcdH0sXG5cdFx0czoge1xuXHRcdFx0cGF0dGVybjogbmV3IFJlZ0V4cCgnXFxcXGQnKSxcblx0XHR9LFxuXHR9LFxufTtcblxuZXhwb3J0IGNvbnN0IHRpbWVNYXNrczogc3RyaW5nW10gPSBbJ0hoOm0wOnMwJywgJ0hoOm0wJywgJ20wOnMwJ107XG5cbmV4cG9ydCBjb25zdCB3aXRob3V0VmFsaWRhdGlvbjogc3RyaW5nW10gPSBbXG5cdCdwZXJjZW50Jyxcblx0J0hoJyxcblx0J3MwJyxcblx0J20wJyxcblx0J3NlcGFyYXRvcicsXG5cdCdkMC9NMC8wMDAwJyxcblx0J2QwL00wJyxcblx0J2QwJyxcblx0J00wJyxcbl07XG4iXX0=
@@ -389,7 +389,8 @@ export class MaskApplierService {
389
389
  if (!!inputArray[cursor] &&
390
390
  maskExpression !== '099.099.099.099' &&
391
391
  maskExpression !== '000.000.000-00' &&
392
- maskExpression !== '00.000.000/0000-00') {
392
+ maskExpression !== '00.000.000/0000-00' &&
393
+ !maskExpression.match(/^9+\.0+$/)) {
393
394
  result += inputArray[cursor];
394
395
  }
395
396
  cursor++;
@@ -494,4 +495,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImpor
494
495
  type: Inject,
495
496
  args: [config]
496
497
  }] }]; } });
497
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFzay1hcHBsaWVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbWFzay1saWIvc3JjL2xpYi9tYXNrLWFwcGxpZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsTUFBTSxFQUFXLE1BQU0sVUFBVSxDQUFDOztBQUczQyxNQUFNLE9BQU8sa0JBQWtCO0lBK0M5QixZQUE2QyxPQUFnQjtRQUFoQixZQUFPLEdBQVAsT0FBTyxDQUFTO1FBdEN0RCxtQkFBYyxHQUFXLEVBQUUsQ0FBQztRQUU1QixnQkFBVyxHQUFXLEVBQUUsQ0FBQztRQUV6Qix3QkFBbUIsR0FBVyxFQUFFLENBQUM7UUEyZGhDLDBCQUFxQixHQUFHLENBQy9CLEdBQVcsRUFDWCxxQkFBNkIsRUFDN0IsWUFBK0IsRUFDL0IsU0FBaUIsRUFDaEIsRUFBRTtZQUNILElBQUksQ0FBQyxHQUFhLEVBQUUsQ0FBQztZQUNyQixJQUFJLFdBQVcsR0FBVyxFQUFFLENBQUM7WUFDN0IsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxFQUFFO2dCQUNoQyxNQUFNLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FDeEIsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQ2xGLENBQUM7Z0JBQ0YsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ3RCLFdBQVcsR0FBRyxHQUFHLENBQUMsS0FBSyxD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VSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsV0FBVztnQ0FDMUQsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQzt3QkFDbEMsMENBQTBDO3dCQUMxQyxNQUFNLGNBQWMsR0FDbkIsTUFBTSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxTQUFTOzRCQUM1RCxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQzs0QkFDdkQsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQzs0QkFDbkQsTUFBTSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxHQUFHLFdBQVcsQ0FBQzt3QkFDNUQsNkNBQTZDO3dCQUM3QyxNQUFNLGNBQWMsR0FDbkIsTUFBTSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxTQUFTOzRCQUM3RCxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQzs0QkFDdkQsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsS0FBSyxHQUFHOzRCQUM5QixNQUFNLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLFdBQVcsQ0FBQzt3QkFFaEUsSUFDQyxDQUFDLE1BQU0sQ0FB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QyxLQUFLLEtBQUssYUFBYSxDQUFDO0lBQzVCLENBQUM7OytHQXBuQlcsa0JBQWtCLGtCQStDSCxNQUFNO21IQS9DckIsa0JBQWtCOzJGQUFsQixrQkFBa0I7a0JBRDlCLFVBQVU7OzBCQWdEVSxNQUFNOzJCQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNvbmZpZywgSUNvbmZpZyB9IGZyb20gJy4vY29uZmlnJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE1hc2tBcHBsaWVyU2VydmljZSB7XG5cdHB1YmxpYyBkcm9wU3BlY2lhbENoYXJhY3RlcnM6IElDb25maWdbJ2Ryb3BTcGVjaWFsQ2hhcmFjdGVycyddO1xuXG5cdHB1YmxpYyBoaWRkZW5JbnB1dDogSUNvbmZpZ1snaGlkZGVuSW5wdXQnXTtcblxuXHRwdWJsaWMgc2hvd1RlbXBsYXRlITogSUNvbmZpZ1snc2hvd1RlbXBsYXRlJ107XG5cblx0cHVibGljIGNsZWFySWZOb3RNYXRjaCE6IElDb25maWdbJ2NsZWFySWZOb3RNYXRjaCddO1xuXG5cdHB1YmxpYyBtYXNrRXhwcmVzc2lvbjogc3RyaW5nID0gJyc7XG5cblx0cHVibGljIGFjdHVhbFZhbHVlOiBzdHJpbmcgPSAnJztcblxuXHRwdWJsaWMgc2hvd25NYXNrRXhwcmVzc2lvbjogc3RyaW5nID0gJyc7XG5cblx0cHVibGljIG1hc2tTcGVjaWFsQ2hhcmFjdGVycyE6IElDb25maWdbJ3NwZWNpYWxDaGFyYWN0ZXJzJ107XG5cblx0cHVibGljIG1hc2tBdmFpbGFibGVQYXR0ZXJucyE6IElDb25maWdbJ3BhdHRlcm5zJ107XG5cblx0cHVibGljIHByZWZpeCE6IElDb25maWdbJ3ByZWZpeCddO1xuXG5cdHB1YmxpYyBzdWZmaXghOiBJQ29uZmlnWydzdWZmaXgnXTtcblxuXHRwdWJsaWMgdGhvdXNhbmRTZXBhcmF0b3IhOiBJQ29uZmlnWyd0aG91c2FuZFNlcGFyYXRvciddO1xuXG5cdHB1YmxpYyBkZWNpbWFsTWFya2VyITogSUNvbmZpZ1snZGVjaW1hbE1hcmtlciddO1xuXG5cdHB1YmxpYyBjdXN0b21QYXR0ZXJuITogSUNvbmZpZ1sncGF0dGVybnMnXTtcblxuXHRwdWJsaWMgaXBFcnJvcj86IGJvb2xlYW47XG5cblx0cHVibGljIGNwZkNucGpFcnJvcj86IGJvb2xlYW47XG5cblx0cHVibGljIHNob3dNYXNrVHlwZWQhOiBJQ29uZmlnWydzaG93TWFza1R5cGVkJ107XG5cblx0cHVibGljIHBsYWNlSG9sZGVyQ2hhcmFjdGVyITogSUNvbmZpZ1sncGxhY2VIb2xkZXJDaGFyYWN0ZXInXTtcblxuXHRwdWJsaWMgdmFsaWRhdGlvbjogSUNvbmZpZ1sndmFsaWRhdGlvbiddO1xuXG5cdHB1YmxpYyBzZXBhcmF0b3JMaW1pdDogSUNvbmZpZ1snc2VwYXJhdG9yTGltaXQnXTtcblxuXHRwdWJsaWMgYWxsb3dOZWdhdGl2ZU51bWJlcnM6IElDb25maWdbJ2FsbG93TmVnYXRpdmVOdW1iZXJzJ107XG5cblx0cHVibGljIGxlYWRaZXJvRGF0ZVRpbWU6IElDb25maWdbJ2xlYWRaZXJvRGF0ZVRpbWUnXTtcblxuXHRwcml2YXRlIF9zaGlmdCE6IFNldDxudW1iZXI+O1xuXG5cdHB1YmxpYyBjb25zdHJ1Y3RvcihASW5qZWN0KGNvbmZpZykgcHJvdGVjdGVkIF9jb25maWc6IElDb25maWcpIHtcblx0XHR0aGlzLl9zaGlmdCA9IG5ldyBTZXQoKTtcblx0XHR0aGlzLmNsZWFySWZOb3RNYXRjaCA9IHRoaXMuX2NvbmZpZy5jbGVhcklmTm90TWF0Y2g7XG5cdFx0dGhpcy5kcm9wU3BlY2lhbENoYXJhY3RlcnMgPSB0aGlzLl9jb25maWcuZHJvcFNwZWNpYWxDaGFyYWN0ZXJzO1xuXHRcdHRoaXMubWFza1NwZWNpYWxDaGFyYWN0ZXJzID0gdGhpcy5fY29uZmlnLnNwZWNpYWxDaGFyYWN0ZXJzO1xuXHRcdHRoaXMubWFza0F2YWlsYWJsZVBhdHRlcm5zID0gdGhpcy5fY29uZmlnLnBhdHRlcm5zO1xuXHRcdHRoaXMucHJlZml4ID0gdGhpcy5fY29uZmlnLnByZWZpeDtcblx0XHR0aGlzLnN1ZmZpeCA9IHRoaXMuX2NvbmZpZy5zdWZmaXg7XG5cdFx0dGhpcy50aG91c2FuZFNlcGFyYXRvciA9IHRoaXMuX2NvbmZpZy50aG91c2FuZFNlcGFyYXRvcjtcblx0XHR0aGlzLmRlY2ltYWxNYXJrZXIgPSB0aGlzLl9jb25maWcuZGVjaW1hbE1hcmtlcjtcblx0XHR0aGlzLmhpZGRlbklucHV0ID0gdGhpcy5fY29uZmlnLmhpZGRlbklucHV0O1xuXHRcdHRoaXMuc2hvd01hc2tUeXBlZCA9IHRoaXMuX2NvbmZpZy5zaG93TWFza1R5cGVkO1xuXHRcdHRoaXMucGxhY2VIb2xkZXJDaGFyYWN0ZXIgPSB0aGlzLl9jb25maWcucGxhY2VIb2xkZXJDaGFyYWN0ZXI7XG5cdFx0dGhpcy52YWxpZGF0aW9uID0gdGhpcy5fY29uZmlnLnZhbGlkYXRpb247XG5cdFx0dGhpcy5zZXBhcmF0b3JMaW1pdCA9IHRoaXMuX2NvbmZpZy5zZXBhcmF0b3JMaW1pdDtcblx0XHR0aGlzLmFsbG93TmVnYXRpdmVOdW1iZXJzID0gdGhpcy5fY29uZmlnLmFsbG93TmVnYXRpdmVOdW1iZXJzO1xuXHRcdHRoaXMubGVhZFplcm9EYXRlVGltZSA9IHRoaXMuX2NvbmZpZy5sZWFkWmVyb0RhdGVUaW1lO1xuXHR9XG5cblx0cHVibGljIGFwcGx5TWFza1dpdGhQYXR0ZXJuKFxuXHRcdGlucHV0VmFsdWU6IHN0cmluZyxcblx0XHRtYXNrQW5kUGF0dGVybjogW3N0cmluZywgSUNvbmZpZ1sncGF0dGVybnMnXV0sXG5cdCk6IHN0cmluZyB7XG5cdFx0Y29uc3QgW21hc2ssIGN1c3RvbVBhdHRlcm5dID0gbWFza0FuZFBhdHRlcm47XG5cdFx0dGhpcy5jdXN0b21QYXR0ZXJuID0gY3VzdG9tUGF0dGVybjtcblx0XHRyZXR1cm4gdGhpcy5hcHBseU1hc2soaW5wdXRWYWx1ZSwgbWFzayk7XG5cdH1cblxuXHRwdWJsaWMgYXBwbHlNYXNrKFxuXHRcdGlucHV0VmFsdWU6IHN0cmluZyB8IG9iamVjdCB8IGJvb2xlYW4gfCBudWxsIHwgdW5kZWZpbmVkLFxuXHRcdG1hc2tFeHByZXNzaW9uOiBzdHJpbmcsXG5cdFx0cG9zaXRpb246IG51bWJlciA9IDAsXG5cdFx0anVzdFBhc3RlZDogYm9vbGVhbiA9IGZhbHNlLFxuXHRcdGJhY2tzcGFjZWQ6IGJvb2xlYW4gPSBmYWxzZSxcblx0XHRjYjogRnVuY3Rpb24gPSAoKSA9PiB7fSxcblx0KTogc3RyaW5nIHtcblx0XHRpZiAoIW1hc2tFeHByZXNzaW9uIHx8IHR5cGVvZiBpbnB1dFZhbHVlICE9PSAnc3RyaW5nJykge1xuXHRcdFx0cmV0dXJuICcnO1xuXHRcdH1cblx0XHRsZXQgY3Vyc29yID0gMDtcblx0XHRsZXQgcmVzdWx0ID0gJyc7XG5cdFx0bGV0IG11bHRpID0gZmFsc2U7XG5cdFx0bGV0IGJhY2tzcGFjZVNoaWZ0ID0gZmFsc2U7XG5cdFx0bGV0IHNoaWZ0ID0gMTtcblx0XHRsZXQgc3RlcEJhY2sgPSBmYWxzZTtcblx0XHRpZiAoaW5wdXRWYWx1ZS5zbGljZSgwLCB0aGlzLnByZWZpeC5sZW5ndGgpID09PSB0aGlzLnByZWZpeCkge1xuXHRcdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG5cdFx0XHRpbnB1dFZhbHVlID0gaW5wdXRWYWx1ZS5zbGljZSh0aGlzLnByZWZpeC5sZW5ndGgsIGlucHV0VmFsdWUubGVuZ3RoKTtcblx0XHR9XG5cdFx0aWYgKCEhdGhpcy5zdWZmaXggJiYgaW5wdXRWYWx1ZT8ubGVuZ3RoID4gMCkge1xuXHRcdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG5cdFx0XHRpbnB1dFZhbHVlID0gdGhpcy5jaGVja0FuZFJlbW92ZVN1ZmZpeChpbnB1dFZhbHVlKTtcblx0XHR9XG5cdFx0Y29uc3QgaW5wdXRBcnJheTogc3RyaW5nW10gPSBpbnB1dFZhbHVlLnRvU3RyaW5nKCkuc3BsaXQoJycpO1xuXHRcdGlmIChtYXNrRXhwcmVzc2lvbiA9PT0gJ0lQJykge1xuXHRcdFx0dGhpcy5pcEVycm9yID1cblx0XHRcdFx0aW5wdXRBcnJheS5maWx0ZXIoKGk6IHN0cmluZykgPT4gaSA9PT0gJy4nKS5sZW5ndGggPCAzICYmIGlucHV0QXJyYXkubGVuZ3RoIDwgNztcblx0XHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuXHRcdFx0bWFza0V4cHJlc3Npb24gPSAnMDk5LjA5OS4wOTkuMDk5Jztcblx0XHR9XG5cdFx0Y29uc3QgYXJyOiBzdHJpbmdbXSA9IFtdO1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgaW5wdXRWYWx1ZS5sZW5ndGg7IGkrKykge1xuXHRcdFx0aWYgKGlucHV0VmFsdWVbaV0/Lm1hdGNoKCdcXFxcZCcpKSB7XG5cdFx0XHRcdGFyci5wdXNoKGlucHV0VmFsdWVbaV0hKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0aWYgKG1hc2tFeHByZXNzaW9uID09PSAnQ1BGX0NOUEonKSB7XG5cdFx0XHR0aGlzLmNwZkNucGpFcnJvciA9IGFyci5sZW5ndGggIT09IDExICYmIGFyci5sZW5ndGggIT09IDE0O1xuXHRcdFx0aWYgKGFyci5sZW5ndGggPiAxMSkge1xuXHRcdFx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cblx0XHRcdFx0bWFza0V4cHJlc3Npb24gPSAnMDAuMDAwLjAwMC8wMDAwLTAwJztcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuXHRcdFx0XHRtYXNrRXhwcmVzc2lvbiA9ICcwMDAuMDAwLjAwMC0wMCc7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGlmIChtYXNrRXhwcmVzc2lvbi5zdGFydHNXaXRoKCdwZXJjZW50JykpIHtcblx0XHRcdGlmIChcblx0XHRcdFx0aW5wdXRWYWx1ZS5tYXRjaCgnW2Etel18W0EtWl0nKSB8fFxuXHRcdFx0XHRpbnB1dFZhbHVlLm1hdGNoKC9bLSEkJV4mKigpXyt8fj1ge31cXFtcXF06XCI7Jzw+PyxcXC8uXS8pXG5cdFx0XHQpIHtcblx0XHRcdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG5cdFx0XHRcdGlucHV0VmFsdWUgPSB0aGlzLl9zdHJpcFRvRGVjaW1hbChpbnB1dFZhbHVlKTtcblx0XHRcdFx0Y29uc3QgcHJlY2lzaW9uOiBudW1iZXIgPSB0aGlzLmdldFByZWNpc2lvbihtYXNrRXhwcmVzc2lvbik7XG5cdFx0XHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuXHRcdFx0XHRpbnB1dFZhbHVlID0gdGhpcy5jaGVja0lucHV0UHJlY2lzaW9uKGlucHV0VmFsdWUsIHByZWNpc2lvbiwgdGhpcy5kZWNpbWFsTWFya2VyKTtcblx0XHRcdH1cblx0XHRcdGlmIChcblx0XHRcdFx0aW5wdXRWYWx1ZS5pbmRleE9mKCcuJykgPiAwICYmXG5cdFx0XHRcdCF0aGlzLnBlcmNlbnRhZ2UoaW5wdXRWYWx1ZS5zdWJzdHJpbmcoMCwgaW5wdXRWYWx1ZS5pbmRleE9mKCcuJykpKVxuXHRcdFx0KSB7XG5cdFx0XHRcdGNvbnN0IGJhc2U6IHN0cmluZyA9IGlucHV0VmFsdWUuc3Vic3RyaW5nKDAsIGlucHV0VmFsdWUuaW5kZXhPZignLicpIC0gMSk7XG5cdFx0XHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuXHRcdFx0XHRpbnB1dFZhbHVlID0gYCR7YmFzZX0ke2lucHV0VmFsdWUuc3Vic3RyaW5nKGlucHV0VmFsdWUuaW5kZXhPZignLicpLCBpbnB1dFZhbHVlLmxlbmd0aCl9YDtcblx0XHRcdH1cblx0XHRcdGlmICh0aGlzLnBlcmNlbnRhZ2UoaW5wdXRWYWx1ZSkpIHtcblx0XHRcdFx0cmVzdWx0ID0gaW5wdXRWYWx1ZTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHJlc3VsdCA9IGlucHV0VmFsdWUuc3Vic3RyaW5nKDAsIGlucHV0VmFsdWUubGVuZ3RoIC0gMSk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIGlmIChtYXNrRXhwcmVzc2lvbi5zdGFydHNXaXRoKCdzZXBhcmF0b3InKSkge1xuXHRcdFx0aWYgKFxuXHRcdFx0XHRpbnB1dFZhbHVlLm1hdGNoKCdbd9CwLdGP0JAt0K9dJykgfHxcblx0XHRcdFx0aW5wdXRWYWx1ZS5tYXRjaCgnW9CB0ZHQkC3Rj10nKSB8fFxuXHRcdFx0XHRpbnB1dFZhbHVlLm1hdGNoKCdbYS16XXxbQS1aXScpIHx8XG5cdFx0XHRcdGlucHV0VmFsdWUubWF0Y2goL1stQCMhJCVcXFxcXiYqKClfwqPCrCcrfH49YHt9XFxbXFxdOlwiOzw+Lj9cXC9dLykgfHxcblx0XHRcdFx0aW5wdXRWYWx1ZS5tYXRjaCgnW15BLVphLXowLTksXScpXG5cdFx0XHQpIHtcblx0XHRcdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG5cdFx0XHRcdGlucHV0VmFsdWUgPSB0aGlzLl9zdHJpcFRvRGVjaW1hbChpbnB1dFZhbHVlKTtcblx0XHRcdH1cblx0XHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuXHRcdFx0aW5wdXRWYWx1ZSA9XG5cdFx0XHRcdGlucHV0VmFsdWUubGVuZ3RoID4gMSAmJlxuXHRcdFx0XHRpbnB1dFZhbHVlWzBdID09PSAnMCcgJiZcblx0XHRcdFx0IXRoaXMuX2NvbXBhcmVPckluY2x1ZGVzKGlucHV0VmFsdWVbMV0sIHRoaXMuZGVjaW1hbE1hcmtlciwgdGhpcy50aG91c2FuZFNlcGFyYXRvcikgJiZcblx0XHRcdFx0IWJhY2tzcGFjZWRcblx0XHRcdFx0XHQ/IGlucHV0VmFsdWUuc2xpY2UoMSwgaW5wdXRWYWx1ZS5sZW5ndGgpXG5cdFx0XHRcdFx0OiBpbnB1dFZhbHVlO1xuXG5cdFx0XHRpZiAoYmFja3NwYWNlZCkge1xuXHRcdFx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cblx0XHRcdFx0aW5wdXRWYWx1ZSA9IHRoaXMuX2NvbXBhcmVPckluY2x1ZGVzKFxuXHRcdFx0XHRcdGlucHV0VmFsdWVbaW5wdXRWYWx1ZS5sZW5ndGggLSAxXSxcblx0XHRcdFx0XHR0aGlzLmRlY2ltYWxNYXJrZXIsXG5cdFx0XHRcdFx0dGhpcy50aG91c2FuZFNlcGFyYXRvcixcblx0XHRcdFx0KVxuXHRcdFx0XHRcdD8gaW5wdXRWYWx1ZS5zbGljZSgwLCBpbnB1dFZhbHVlLmxlbmd0aCAtIDEpXG5cdFx0XHRcdFx0OiBpbnB1dFZhbHVlO1xuXHRcdFx0fVxuXHRcdFx0Ly8gVE9ETzogd2UgaGFkIGRpZmZlcmVudCByZXhleHBzIGhlcmUgZm9yIHRoZSBkaWZmZXJlbnQgY2FzZXMuLi4gYnV0IHRlc3RzIGRvbnQgc2VhbSB0byBib3RoZXIgLSBjaGVjayB0aGlzXG5cdFx0XHQvLyAgc2VwYXJhdG9yOiBubyBDT01NQSwgZG90LXNlcDogbm8gU1BBQ0UsIENPTU1BIE9LLCBjb21tYS1zZXA6IG5vIFNQQUNFLCBDT01NQSBPS1xuXG5cdFx0XHRjb25zdCB0aG91c2FuZFNlcGFyYXRvckNoYXJFc2NhcGVkOiBzdHJpbmcgPSB0aGlzLl9jaGFyVG9SZWdFeHBFeHByZXNzaW9uKFxuXHRcdFx0XHR0aGlzLnRob3VzYW5kU2VwYXJhdG9yLFxuXHRcdFx0KTtcblx0XHRcdGxldCBpbnZhbGlkQ2hhcnM6IHN0cmluZyA9ICdAIyEkJV4mKigpXyt8fj1ge31cXFxcW1xcXFxdOlxcXFxzLFxcXFwuXCI7PD4/XFxcXC8nLnJlcGxhY2UoXG5cdFx0XHRcdHRob3VzYW5kU2VwYXJhdG9yQ2hhckVzY2FwZWQsXG5cdFx0XHRcdCcnLFxuXHRcdFx0KTtcblx0XHRcdC8vLnJlcGxhY2UoZGVjaW1hbE1hcmtlckVzY2FwZWQsICcnKTtcblx0XHRcdGlmIChBcnJheS5pc0FycmF5KHRoaXMuZGVjaW1hbE1hcmtlcikpIHtcblx0XHRcdFx0Zm9yIChjb25zdCBtYXJrZXIgb2YgdGhpcy5kZWNpbWFsTWFya2VyKSB7XG5cdFx0XHRcdFx0aW52YWxpZENoYXJzID0gaW52YWxpZENoYXJzLnJlcGxhY2UodGhpcy5fY2hhclRvUmVnRXhwRXhwcmVzc2lvbihtYXJrZXIpLCAnJyk7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGludmFsaWRDaGFycyA9IGludmFsaWRDaGFycy5yZXBsYWNlKHRoaXMuX2NoYXJUb1JlZ0V4cEV4cHJlc3Npb24odGhpcy5kZWNpbWFsTWFya2VyKSwgJycpO1xuXHRcdFx0fVxuXG5cdFx0XHRjb25zdCBpbnZhbGlkQ2hhclJlZ2V4cDogUmVnRXhwID0gbmV3IFJlZ0V4cCgnWycgKyBpbnZhbGlkQ2hhcnMgKyAnXScpO1xuXG5cdFx0XHRpZiAoXG5cdFx0XHRcdGlucHV0VmFsdWUubWF0Y2goaW52YWxpZENoYXJSZWdleHApIHx8XG5cdFx0XHRcdChpbnB1dFZhbHVlLmxlbmd0aCA9PT0gMSAmJlxuXHRcdFx0XHRcdHRoaXMuX2NvbXBhcmVPckluY2x1ZGVzKGlucHV0VmFsdWUsIHRoaXMuZGVjaW1hbE1hcmtlciwgdGhpcy50aG91c2FuZFNlcGFyYXRvcikpXG5cdFx0XHQpIHtcblx0XHRcdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG5cdFx0XHRcdGlucHV0VmFsdWUgPSBpbnB1dFZhbHVlLnN1YnN0cmluZygwLCBpbnB1dFZhbHVlLmxlbmd0aCAtIDEpO1xuXHRcdFx0fVxuXG5cdFx0XHRjb25zdCBwcmVjaXNpb246IG51bWJlciA9IHRoaXMuZ2V0UHJlY2lzaW9uKG1hc2tFeHByZXNzaW9uKTtcblx0XHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuXHRcdFx0aW5wdXRWYWx1ZSA9IHRoaXMuY2hlY2tJbnB1dFByZWNpc2lvbihpbnB1dFZhbHVlLCBwcmVjaXNpb24sIHRoaXMuZGVjaW1hbE1hcmtlcik7XG5cdFx0XHRjb25zdCBzdHJGb3JTZXA6IHN0cmluZyA9IGlucHV0VmFsdWUucmVwbGFjZShcblx0XHRcdFx0bmV3IFJlZ0V4cCh0aG91c2FuZFNlcGFyYXRvckNoYXJFc2NhcGVkLCAnZycpLFxuXHRcdFx0XHQnJyxcblx0XHRcdCk7XG5cdFx0XHRyZXN1bHQgPSB0aGlzLl9mb3JtYXRXaXRoU2VwYXJhdG9ycyhcblx0XHRcdFx0c3RyRm9yU2VwLFxuXHRcdFx0XHR0aGlzLnRob3VzYW5kU2VwYXJhdG9yLFxuXHRcdFx0XHR0aGlzLmRlY2ltYWxNYXJrZXIsXG5cdFx0XHRcdHByZWNpc2lvbixcblx0XHRcdCk7XG5cdFx0XHRjb25zdCBjb21tYVNoaWZ0OiBudW1iZXIgPSByZXN1bHQuaW5kZXhPZignLCcpIC0gaW5wdXRWYWx1ZS5pbmRleE9mKCcsJyk7XG5cdFx0XHRjb25zdCBzaGlmdFN0ZXA6IG51bWJlciA9IHJlc3VsdC5sZW5ndGggLSBpbnB1dFZhbHVlLmxlbmd0aDtcblxuXHRcdFx0aWYgKHNoaWZ0U3RlcCA+IDAgJiYgcmVzdWx0W3Bvc2l0aW9uXSAhPT0gJywnKSB7XG5cdFx0XHRcdGJhY2tzcGFjZVNoaWZ0ID0gdHJ1ZTtcblx0XHRcdFx0bGV0IF9zaGlmdCA9IDA7XG5cdFx0XHRcdGRvIHtcblx0XHRcdFx0XHR0aGlzLl9zaGlmdC5hZGQocG9zaXRpb24gKyBfc2hpZnQpO1xuXHRcdFx0XHRcdF9zaGlmdCsrO1xuXHRcdFx0XHR9IHdoaWxlIChfc2hpZnQgPCBzaGlmdFN0ZXApO1xuXHRcdFx0fSBlbHNlIGlmIChcblx0XHRcdFx0KGNvbW1hU2hpZnQgIT09IDAgJiYgcG9zaXRpb24gPiAwICYmICEocmVzdWx0LmluZGV4T2YoJywnKSA+PSBwb3NpdGlvbiAmJiBwb3NpdGlvbiA+IDMpKSB8fFxuXHRcdFx0XHQoIShyZXN1bHQuaW5kZXhPZignLicpID49IHBvc2l0aW9uICYmIHBvc2l0aW9uID4gMykgJiYgc2hpZnRTdGVwIDw9IDApXG5cdFx0XHQpIHtcblx0XHRcdFx0dGhpcy5fc2hpZnQuY2xlYXIoKTtcblx0XHRcdFx0YmFja3NwYWNlU2hpZnQgPSB0cnVlO1xuXHRcdFx0XHRzaGlmdCA9IHNoaWZ0U3RlcDtcblx0XHRcdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG5cdFx0XHRcdHBvc2l0aW9uICs9IHNoaWZ0U3RlcDtcblx0XHRcdFx0dGhpcy5fc2hpZnQuYWRkKHBvc2l0aW9uKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHRoaXMuX3NoaWZ0LmNsZWFyKCk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdGZvciAoXG5cdFx0XHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuXHRcdFx0XHRsZXQgaTogbnVtYmVyID0gMCwgaW5wdXRTeW1ib2w6IHN0cmluZyA9IGlucHV0QXJyYXlbMF0hO1xuXHRcdFx0XHRpIDwgaW5wdXRBcnJheS5sZW5ndGg7XG5cdFx0XHRcdGkrKywgaW5wdXRTeW1ib2wgPSBpbnB1dEFycmF5W2ldIVxuXHRcdFx0KSB7XG5cdFx0XHRcdGlmIChjdXJzb3IgPT09IG1hc2tFeHByZXNzaW9uLmxlbmd0aCkge1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChcblx0XHRcdFx0XHR0aGlzLl9jaGVja1N5bWJvbE1hc2soaW5wdXRTeW1ib2wsIG1hc2tFeHByZXNzaW9uW2N1cnNvcl0hKSAmJlxuXHRcdFx0XHRcdG1hc2tFeHByZXNzaW9uW2N1cnNvciArIDFdID09PSAnPydcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0cmVzdWx0ICs9IGlucHV0U3ltYm9sO1xuXHRcdFx0XHRcdGN1cnNvciArPSAyO1xuXHRcdFx0XHR9IGVsc2UgaWYgKFxuXHRcdFx0XHRcdG1hc2tFeHByZXNzaW9uW2N1cnNvciArIDFdID09PSAnKicgJiZcblx0XHRcdFx0XHRtdWx0aSAmJlxuXHRcdFx0XHRcdHRoaXMuX2NoZWNrU3ltYm9sTWFzayhpbnB1dFN5bWJvbCwgbWFza0V4cHJlc3Npb25bY3Vyc29yICsgMl0hKVxuXHRcdFx0XHQpIHtcblx0XHRcdFx0XHRyZXN1bHQgKz0gaW5wdXRTeW1ib2w7XG5cdFx0XHRcdFx0Y3Vyc29yICs9IDM7XG5cdFx0XHRcdFx0bXVsdGkgPSBmYWxzZTtcblx0XHRcdFx0fSBlbHNlIGlmIChcblx0XHRcdFx0XHR0aGlzLl9jaGVja1N5bWJvbE1hc2soaW5wdXRTeW1ib2wsIG1hc2tFeHByZXNzaW9uW2N1cnNvcl0hKSAmJlxuXHRcdFx0XHRcdG1hc2tFeHByZXNzaW9uW2N1cnNvciArIDFdID09PSAnKidcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0cmVzdWx0ICs9IGlucHV0U3ltYm9sO1xuXHRcdFx0XHRcdG11bHRpID0gdHJ1ZTtcblx0XHRcdFx0fSBlbHNlIGlmIChcblx0XHRcdFx0XHRtYXNrRXhwcmVzc2lvbltjdXJzb3IgKyAxXSA9PT0gJz8nICYmXG5cdFx0XHRcdFx0dGhpcy5fY2hlY2tTeW1ib2xNYXNrKGlucHV0U3ltYm9sLCBtYXNrRXhwcmVzc2lvbltjdXJzb3IgKyAyXSEpXG5cdFx0XHRcdCkge1xuXHRcdFx0XHRcdHJlc3VsdCArPSBpbnB1dFN5bWJvbDtcblx0XHRcdFx0XHRjdXJzb3IgKz0gMztcblx0XHRcdFx0fSBlbHNlIGlmICh0aGlzLl9jaGVja1N5bWJvbE1hc2soaW5wdXRTeW1ib2wsIG1hc2tFeHByZXNzaW9uW2N1cnNvcl0hKSkge1xuXHRcdFx0XHRcdGlmIChtYXNrRXhwcmVzc2lvbltjdXJzb3JdID09PSAnSCcpIHtcblx0XHRcdFx0XHRcdGlmIChOdW1iZXIoaW5wdXRTeW1ib2wpID4gMikge1xuXHRcdFx0XHRcdFx0XHRjdXJzb3IgKz0gMTtcblx0XHRcdFx0XHRcdFx0dGhpcy5fc2hpZnRTdGVwKG1hc2tFeHByZXNzaW9uLCBjdXJzb3IsIGlucHV0QXJyYXkubGVuZ3RoKTtcblx0XHRcdFx0XHRcdFx0aS0tO1xuXHRcdFx0XHRcdFx0XHRpZiAodGhpcy5sZWFkWmVyb0RhdGVUaW1lKSB7XG5cdFx0XHRcdFx0XHRcdFx0cmVzdWx0ICs9ICcwJztcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRjb250aW51ZTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYgKG1hc2tFeHByZXNzaW9uW2N1cnNvcl0gPT09ICdoJykge1xuXHRcdFx0XHRcdFx0aWYgKHJlc3VsdCA9PT0gJzInICYmIE51bWJlcihpbnB1dFN5bWJvbCkgPiAzKSB7XG5cdFx0XHRcdFx0XHRcdGN1cnNvciArPSAxO1xuXHRcdFx0XHRcdFx0XHRpLS07XG5cdFx0XHRcdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZiAobWFza0V4cHJlc3Npb25bY3Vyc29yXSA9PT0gJ20nKSB7XG5cdFx0XHRcdFx0XHRpZiAoTnVtYmVyKGlucHV0U3ltYm9sKSA+IDUpIHtcblx0XHRcdFx0XHRcdFx0Y3Vyc29yICs9IDE7XG5cdFx0XHRcdFx0XHRcdHRoaXMuX3NoaWZ0U3RlcChtYXNrRXhwcmVzc2lvbiwgY3Vyc29yLCBpbnB1dEFycmF5Lmxlbmd0aCk7XG5cdFx0XHRcdFx0XHRcdGktLTtcblx0XHRcdFx0XHRcdFx0aWYgKHRoaXMubGVhZFplcm9EYXRlVGltZSkge1xuXHRcdFx0XHRcdFx0XHRcdHJlc3VsdCArPSAnMCc7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0Y29udGludWU7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmIChtYXNrRXhwcmVzc2lvbltjdXJzb3JdID09PSAncycpIHtcblx0XHRcdFx0XHRcdGlmIChOdW1iZXIoaW5wdXRTeW1ib2wpID4gNSkge1xuXHRcdFx0XHRcdFx0XHRjdXJzb3IgKz0gMTtcblx0XHRcdFx0XHRcdFx0dGhpcy5fc2hpZnRTdGVwKG1hc2tFeHByZXNzaW9uLCBjdXJzb3IsIGlucHV0QXJyYXkubGVuZ3RoKTtcblx0XHRcdFx0XHRcdFx0aS0tO1xuXHRcdFx0XHRcdFx0XHRpZiAodGhpcy5sZWFkWmVyb0RhdGVUaW1lKSB7XG5cdFx0XHRcdFx0XHRcdFx0cmVzdWx0ICs9ICcwJztcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRjb250aW51ZTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y29uc3QgZGF5c0NvdW50ID0gMzE7XG5cdFx0XHRcdFx0aWYgKG1hc2tFeHByZXNzaW9uW2N1cnNvcl0gPT09ICdkJykge1xuXHRcdFx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdFx0XHQoTnVtYmVyKGlucHV0U3ltYm9sKSA+IDMgJiYgdGhpcy5sZWFkWmVyb0RhdGVUaW1lKSB8fFxuXHRcdFx0XHRcdFx0XHROdW1iZXIoaW5wdXRWYWx1ZS5zbGljZShjdXJzb3IsIGN1cnNvciArIDIpKSA+IGRheXNDb3VudCB8fFxuXHRcdFx0XHRcdFx0XHRpbnB1dFZhbHVlW2N1cnNvciArIDFdID09PSAnLydcblx0XHRcdFx0XHRcdCkge1xuXHRcdFx0XHRcdFx0XHRjdXJzb3IgKz0gMTtcblx0XHRcdFx0XHRcdFx0dGhpcy5fc2hpZnRTdGVwKG1hc2tFeHByZXNzaW9uLCBjdXJzb3IsIGlucHV0QXJyYXkubGVuZ3RoKTtcblx0XHRcdFx0XHRcdFx0aS0tO1xuXHRcdFx0XHRcdFx0XHRpZiAodGhpcy5sZWFkWmVyb0RhdGVUaW1lKSB7XG5cdFx0XHRcdFx0XHRcdFx0cmVzdWx0ICs9ICcwJztcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRjb250aW51ZTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYgKG1hc2tFeHByZXNzaW9uW2N1cnNvcl0gPT09ICdNJykge1xuXHRcdFx0XHRcdFx0Y29uc3QgbW9udGhzQ291bnQgPSAxMjtcblx0XHRcdFx0XHRcdC8vIG1hc2sgd2l0aG91dCBkYXlcblx0XHRcdFx0XHRcdGNvbnN0IHdpdGhvdXREYXlzOiBib29sZWFuID1cblx0XHRcdFx0XHRcdFx0Y3Vyc29yID09PSAwICYmXG5cdFx0XHRcdFx0XHRcdChOdW1iZXIoaW5wdXRTeW1ib2wpID4gMiB8fFxuXHRcdFx0XHRcdFx0XHRcdE51bWJlcihpbnB1dFZhbHVlLnNsaWNlKGN1cnNvciwgY3Vyc29yICsgMikpID4gbW9udGhzQ291bnQgfHxcblx0XHRcdFx0XHRcdFx0XHRpbnB1dFZhbHVlW2N1cnNvciArIDFdID09PSAnLycpO1xuXHRcdFx0XHRcdFx0Ly8gZGF5PDEwICYmIG1vbnRoPDEyIGZvciBpbnB1dFxuXHRcdFx0XHRcdFx0Y29uc3QgZGF5MW1vbnRoSW5wdXQ6IGJvb2xlYW4gPVxuXHRcdFx0XHRcdFx0XHRpbnB1dFZhbHVlLnNsaWNlKGN1cnNvciAtIDMsIGN1cnNvciAtIDEpLmluY2x1ZGVzKCcvJykgJiZcblx0XHRcdFx0XHRcdFx0KChpbnB1dFZhbHVlW2N1cnNvciAtIDJdID09PSAnLycgJiZcblx0XHRcdFx0XHRcdFx0XHROdW1iZXIoaW5wdXRWYWx1ZS5zbGljZShjdXJzb3IgLSAxLCBjdXJzb3IgKyAxKSkgPiBtb250aHNDb3VudCAmJlxuXHRcdFx0XHRcdFx0XHRcdGlucHV0VmFsdWVbY3Vyc29yXSAhPT0gJy8nKSB8fFxuXHRcdFx0XHRcdFx0XHRcdGlucHV0VmFsdWVbY3Vyc29yXSA9PT0gJy8nIHx8XG5cdFx0XHRcdFx0XHRcdFx0KGlucHV0VmFsdWVbY3Vyc29yIC0gM10gPT09ICcvJyAmJlxuXHRcdFx0XHRcdFx0XHRcdFx0TnVtYmVyKGlucHV0VmFsdWUuc2xpY2UoY3Vyc29yIC0gMiwgY3Vyc29yKSkgPiBtb250aHNDb3VudCAmJlxuXHRcdFx0XHRcdFx0XHRcdFx0aW5wdXRWYWx1ZVtjdXJzb3IgLSAxXSAhPT0gJy8nKSB8fFxuXHRcdFx0XHRcdFx0XHRcdGlucHV0VmFsdWVbY3Vyc29yIC0gMV0gPT09ICcvJyk7XG5cdFx0XHRcdFx0XHQvLyAxMDxkYXk8MzEgJiYgbW9udGg8MTIgZm9yIGlucHV0XG5cdFx0XHRcdFx0XHRjb25zdCBkYXkybW9udGhJbnB1dDogYm9vbGVhbiA9XG5cdFx0XHRcdFx0XHRcdE51bWJlcihpbnB1dFZhbHVlLnNsaWNlKGN1cnNvciAtIDMsIGN1cnNvciAtIDEpKSA8PSBkYXlzQ291bnQgJiZcblx0XHRcdFx0XHRcdFx0IWlucHV0VmFsdWUuc2xpY2UoY3Vyc29yIC0gMywgY3Vyc29yIC0gMSkuaW5jbHVkZXMoJy8nKSAmJlxuXHRcdFx0XHRcdFx0XHRpbnB1dFZhbHVlW2N1cnNvciAtIDFdID09PSAnLycgJiZcblx0XHRcdFx0XHRcdFx0KE51bWJlcihpbnB1dFZhbHVlLnNsaWNlKGN1cnNvciwgY3Vyc29yICsgMikpID4gbW9udGhzQ291bnQgfHxcblx0XHRcdFx0XHRcdFx0XHRpbnB1dFZhbHVlW2N1cnNvciArIDFdID09PSAnLycpO1xuXHRcdFx0XHRcdFx0Ly8gZGF5PDEwICYmIG1vbnRoPDEyIGZvciBwYXN0ZSB3aG9sZSBkYXRhXG5cdFx0XHRcdFx0XHRjb25zdCBkYXkxbW9udGhQYXN0ZTogYm9vbGVhbiA9XG5cdFx0XHRcdFx0XHRcdE51bWJlcihpbnB1dFZhbHVlLnNsaWNlKGN1cnNvciAtIDMsIGN1cnNvciAtIDEpKSA+IGRheXNDb3VudCAmJlxuXHRcdFx0XHRcdFx0XHQhaW5wdXRWYWx1ZS5zbGljZShjdXJzb3IgLSAzLCBjdXJzb3IgLSAxKS5pbmNsdWRlcygnLycpICYmXG5cdFx0XHRcdFx0XHRcdCFpbnB1dFZhbHVlLnNsaWNlKGN1cnNvciAtIDIsIGN1cnNvcikuaW5jbHVkZXMoJy8nKSAmJlxuXHRcdFx0XHRcdFx0XHROdW1iZXIoaW5wdXRWYWx1ZS5zbGljZShjdXJzb3IgLSAyLCBjdXJzb3IpKSA+IG1vbnRoc0NvdW50O1xuXHRcdFx0XHRcdFx0Ly8gMTA8ZGF5PDMxICYmIG1vbnRoPDEyIGZvciBwYXN0ZSB3aG9sZSBkYXRhXG5cdFx0XHRcdFx0XHRjb25zdCBkYXkybW9udGhQYXN0ZTogYm9vbGVhbiA9XG5cdFx0XHRcdFx0XHRcdE51bWJlcihpbnB1dFZhbHVlLnNsaWNlKGN1cnNvciAtIDMsIGN1cnNvciAtIDEpKSA8PSBkYXlzQ291bnQgJiZcblx0XHRcdFx0XHRcdFx0IWlucHV0VmFsdWUuc2xpY2UoY3Vyc29yIC0gMywgY3Vyc29yIC0gMSkuaW5jbHVkZXMoJy8nKSAmJlxuXHRcdFx0XHRcdFx0XHRpbnB1dFZhbHVlW2N1cnNvciAtIDFdICE9PSAnLycgJiZcblx0XHRcdFx0XHRcdFx0TnVtYmVyKGlucHV0VmFsdWUuc2xpY2UoY3Vyc29yIC0gMSwgY3Vyc29yICsgMSkpID4gbW9udGhzQ291bnQ7XG5cblx0XHRcdFx0XHRcdGlmIChcblx0XHRcdFx0XHRcdFx0KE51bWJlcihpbnB1dFN5bWJvbCkgPiAxICYmIHRoaXMubGVhZFplcm9EYXRlVGltZSkgfHxcblx0XHRcdFx0XHRcdFx0d2l0aG91dERheXMgfHxcblx0XHRcdFx0XHRcdFx0ZGF5MW1vbnRoSW5wdXQgfHxcblx0XHRcdFx0XHRcdFx0ZGF5Mm1vbnRoSW5wdXQgfHxcblx0XHRcdFx0XHRcdFx0ZGF5MW1vbnRoUGFzdGUgfHxcblx0XHRcdFx0XHRcdFx0ZGF5Mm1vbnRoUGFzdGVcblx0XHRcdFx0XHRcdCkge1xuXHRcdFx0XHRcdFx0XHRjdXJzb3IgKz0gMTtcblx0XHRcdFx0XHRcdFx0dGhpcy5fc2hpZnRTdGVwKG1hc2tFeHByZXNzaW9uLCBjdXJzb3IsIGlucHV0QXJyYXkubGVuZ3RoKTtcblx0XHRcdFx0XHRcdFx0aS0tO1xuXHRcdFx0XHRcdFx0XHRpZiAodGhpcy5sZWFkWmVyb0RhdGVUaW1lKSB7XG5cdFx0XHRcdFx0XHRcdFx0cmVzdWx0ICs9ICcwJztcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRjb250aW51ZTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0cmVzdWx0ICs9IGlucHV0U3ltYm9sO1xuXHRcdFx0XHRcdGN1cnNvcisrO1xuXHRcdFx0XHR9IGVsc2UgaWYgKHRoaXMubWFza1NwZWNpYWxDaGFyYWN0ZXJzLmluZGV4T2YobWFza0V4cHJlc3Npb25bY3Vyc29yXSEpICE9PSAtMSkge1xuXHRcdFx0XHRcdHJlc3VsdCArPSBtYXNrRXhwcmVzc2lvbltjdXJzb3JdO1xuXHRcdFx0XHRcdGN1cnNvcisrO1xuXHRcdFx0XHRcdHRoaXMuX3NoaWZ0U3RlcChtYXNrRXhwcmVzc2lvbiwgY3Vyc29yLCBpbnB1dEFycmF5Lmxlbmd0aCk7XG5cdFx0XHRcdFx0aS0tO1xuXHRcdFx0XHR9IGVsc2UgaWYgKFxuXHRcdFx0XHRcdHRoaXMubWFza1NwZWNpYWxDaGFyYWN0ZXJzLmluZGV4T2YoaW5wdXRTeW1ib2wpID4gLTEgJiZcblx0XHRcdFx0XHR0aGlzLm1hc2tBdmFpbGFibGVQYXR0ZXJuc1ttYXNrRXhwcmVzc2lvbltjdXJzb3JdIV0gJiZcblx0XHRcdFx0XHR0aGlzLm1hc2tBdmFpbGFibGVQYXR0ZXJuc1ttYXNrRXhwcmVzc2lvbltjdXJzb3JdIV0/Lm9wdGlvbmFsXG5cdFx0XHRcdCkge1xuXHRcdFx0XHRcdGlmIChcblx0XHRcdFx0XHRcdCEhaW5wdXRBcnJheVtjdXJzb3JdICYmXG5cdFx0XHRcdFx0XHRtYXNrRXhwcmVzc2lvbiAhPT0gJzA5OS4wOTkuMDk5LjA5OScgJiZcblx0XHRcdFx0XHRcdG1hc2tFeHByZXNzaW9uICE9PSAnMDAwLjAwMC4wMDAtMDAnICYmXG5cdFx0XHRcdFx0XHRtYXNrRXhwcmVzc2lvbiAhPT0gJzAwLjAwMC4wMDAvMDAwMC0wMCdcblx0XHRcdFx0XHQpIHtcblx0XHRcdFx0XHRcdHJlc3VsdCArPSBpbnB1dEFycmF5W2N1cnNvcl07XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGN1cnNvcisrO1xuXHRcdFx0XHRcdGktLTtcblx0XHRcdFx0fSBlbHNlIGlmIChcblx0XHRcdFx0XHR0aGlzLm1hc2tFeHByZXNzaW9uW2N1cnNvciArIDFdID09PSAnKicgJiZcblx0XHRcdFx0XHR0aGlzLl9maW5kU3BlY2lhbENoYXIodGhpcy5tYXNrRXhwcmVzc2lvbltjdXJzb3IgKyAyXSEpICYmXG5cdFx0XHRcdFx0dGhpcy5fZmluZFNwZWNpYWxDaGFyKGlucHV0U3ltYm9sKSA9PT0gdGhpcy5tYXNrRXhwcmVzc2lvbltjdXJzb3IgKyAyXSAmJlxuXHRcdFx0XHRcdG11bHRpXG5cdFx0XHRcdCkge1xuXHRcdFx0XHRcdGN1cnNvciArPSAzO1xuXHRcdFx0XHRcdHJlc3VsdCArPSBpbnB1dFN5bWJvbDtcblx0XHRcdFx0fSBlbHNlIGlmIChcblx0XHRcdFx0XHR0aGlzLm1hc2tFeHByZXNzaW9uW2N1cnNvciArIDFdID09PSAnPycgJiZcblx0XHRcdFx0XHR0aGlzLl9maW5kU3BlY2lhbENoYXIodGhpcy5tYXNrRXhwcmVzc2lvbltjdXJzb3IgKyAyXSEpICYmXG5cdFx0XHRcdFx0dGhpcy5fZmluZFNwZWNpYWxDaGFyKGlucHV0U3ltYm9sKSA9PT0gdGhpcy5tYXNrRXhwcmVzc2lvbltjdXJzb3IgKyAyXSAmJlxuXHRcdFx0XHRcdG11bHRpXG5cdFx0XHRcdCkge1xuXHRcdFx0XHRcdGN1cnNvciArPSAzO1xuXHRcdFx0XHRcdHJlc3VsdCArPSBpbnB1dFN5bWJvbDtcblx0XHRcdFx0fSBlbHNlIGlmIChcblx0XHRcdFx0XHR0aGlzLnNob3dNYXNrVHlwZWQgJiZcblx0XHRcdFx0XHR0aGlzLm1hc2tTcGVjaWFsQ2hhcmFjdGVycy5pbmRleE9mKGlucHV0U3ltYm9sKSA8IDAgJiZcblx0XHRcdFx0XHRpbnB1dFN5bWJvbCAhPT0gdGhpcy5wbGFjZUhvbGRlckNoYXJhY3RlclxuXHRcdFx0XHQpIHtcblx0XHRcdFx0XHRzdGVwQmFjayA9IHRydWU7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0aWYgKFxuXHRcdFx0cmVzdWx0Lmxlbmd0aCArIDEgPT09IG1hc2tFeHByZXNzaW9uLmxlbmd0aCAmJlxuXHRcdFx0dGhpcy5tYXNrU3BlY2lhbENoYXJhY3RlcnMuaW5kZXhPZihtYXNrRXhwcmVzc2lvblttYXNrRXhwcmVzc2lvbi5sZW5ndGggLSAxXSEpICE9PSAtMVxuXHRcdCkge1xuXHRcdFx0cmVzdWx0ICs9IG1hc2tFeHByZXNzaW9uW21hc2tFeHByZXNzaW9uLmxlbmd0aCAtIDFdO1xuXHRcdH1cblxuXHRcdGxldCBuZXdQb3NpdGlvbjogbnVtYmVyID0gcG9zaXRpb24gKyAxO1xuXG5cdFx0d2hpbGUgKHRoaXMuX3NoaWZ0LmhhcyhuZXdQb3NpdGlvbikpIHtcblx0XHRcdHNoaWZ0Kys7XG5cdFx0XHRuZXdQb3NpdGlvbisrO1xuXHRcdH1cblxuXHRcdGxldCBhY3R1YWxTaGlmdDogbnVtYmVyID0ganVzdFBhc3RlZCA/IGN1cnNvciA6IHRoaXMuX3NoaWZ0Lmhhcyhwb3NpdGlvbikgPyBzaGlmdCA6IDA7XG5cdFx0aWYgKHN0ZXBCYWNrKSB7XG5cdFx0XHRhY3R1YWxTaGlmdC0tO1xuXHRcdH1cblxuXHRcdGNiKGFjdHVhbFNoaWZ0LCBiYWNrc3BhY2VTaGlmdCk7XG5cdFx0aWYgKHNoaWZ0IDwgMCkge1xuXHRcdFx0dGhpcy5fc2hpZnQuY2xlYXIoKTtcblx0XHR9XG5cdFx0bGV0IG9ubHlTcGVjaWFsID0gZmFsc2U7XG5cdFx0aWYgKGJhY2tzcGFjZWQpIHtcblx0XHRcdG9ubHlTcGVjaWFsID0gaW5wdXRBcnJheS5ldmVyeSgoY2hhcikgPT4gdGhpcy5tYXNrU3BlY2lhbENoYXJhY3RlcnMuaW5jbHVkZXMoY2hhcikpO1xuXHRcdH1cblx0XHRsZXQgcmVzID0gYCR7dGhpcy5wcmVmaXh9JHtvbmx5U3BlY2lhbCA/ICcnIDogcmVzdWx0fSR7dGhpcy5zdWZmaXh9YDtcblx0XHRpZiAocmVzdWx0Lmxlbmd0aCA9PT0gMCkge1xuXHRcdFx0cmVzID0gYCR7dGhpcy5wcmVmaXh9JHtyZXN1bHR9YDtcblx0XHR9XG5cdFx0cmV0dXJuIHJlcztcblx0fVxuXG5cdHB1YmxpYyBfZmluZFNwZWNpYWxDaGFyKGlucHV0U3ltYm9sOiBzdHJpbmcpOiB1bmRlZmluZWQgfCBzdHJpbmcge1xuXHRcdHJldHVybiB0aGlzLm1hc2tTcGVjaWFsQ2hhcmFjdGVycy5maW5kKCh2YWw6IHN0cmluZykgPT4gdmFsID09PSBpbnB1dFN5bWJvbCk7XG5cdH1cblxuXHRwcm90ZWN0ZWQgX2NoZWNrU3ltYm9sTWFzayhpbnB1dFN5bWJvbDogc3RyaW5nLCBtYXNrU3ltYm9sOiBzdHJpbmcpOiBib29sZWFuIHtcblx0XHR0aGlzLm1hc2tBdmFpbGFibGVQYXR0ZXJucyA9IHRoaXMuY3VzdG9tUGF0dGVyblxuXHRcdFx0PyB0aGlzLmN1c3RvbVBhdHRlcm5cblx0XHRcdDogdGhpcy5tYXNrQXZhaWxhYmxlUGF0dGVybnM7XG5cdFx0cmV0dXJuIChcblx0XHRcdHRoaXMubWFza0F2YWlsYWJsZVBhdHRlcm5zW21hc2tTeW1ib2xdISAmJlxuXHRcdFx0dGhpcy5tYXNrQXZhaWxhYmxlUGF0dGVybnNbbWFza1N5bWJvbF0hLnBhdHRlcm4gJiZcblx0XHRcdHRoaXMubWFza0F2YWlsYWJsZVBhdHRlcm5zW21hc2tTeW1ib2xdIS5wYXR0ZXJuLnRlc3QoaW5wdXRTeW1ib2wpXG5cdFx0KTtcblx0fVxuXG5cdHByaXZhdGUgX2Zvcm1hdFdpdGhTZXBhcmF0b3JzID0gKFxuXHRcdHN0cjogc3RyaW5nLFxuXHRcdHRob3VzYW5kU2VwYXJhdG9yQ2hhcjogc3RyaW5nLFxuXHRcdGRlY2ltYWxDaGFyczogc3RyaW5nIHwgc3RyaW5nW10sXG5cdFx0cHJlY2lzaW9uOiBudW1iZXIsXG5cdCkgPT4ge1xuXHRcdGxldCB4OiBzdHJpbmdbXSA9IFtdO1xuXHRcdGxldCBkZWNpbWFsQ2hhcjogc3RyaW5nID0gJyc7XG5cdFx0aWYgKEFycmF5LmlzQXJyYXkoZGVjaW1hbENoYXJzKSkge1xuXHRcdFx0Y29uc3QgcmVnRXhwID0gbmV3IFJlZ0V4cChcblx0XHRcdFx0ZGVjaW1hbENoYXJzLm1hcCgodikgPT4gKCdbXFxcXF4kLnw/KisoKScuaW5kZXhPZih2KSA+PSAwID8gYFxcXFwke3Z9YCA6IHYpKS5qb2luKCd8JyksXG5cdFx0XHQpO1xuXHRcdFx0eCA9IHN0ci5zcGxpdChyZWdFeHApO1xuXHRcdFx0ZGVjaW1hbENoYXIgPSBzdHIubWF0Y2gocmVnRXhwKT8uWzBdID8/ICcnO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR4ID0gc3RyLnNwbGl0KGRlY2ltYWxDaGFycyk7XG5cdFx0XHRkZWNpbWFsQ2hhciA9IGRlY2ltYWxDaGFycztcblx0XHR9XG5cdFx0Y29uc3QgZGVjaW1hbHM6IHN0cmluZyA9IHgubGVuZ3RoID4gMSA/IGAke2RlY2ltYWxDaGFyfSR7eFsxXX1gIDogJyc7XG5cdFx0bGV0IHJlczogc3RyaW5nID0geFswXSE7XG5cdFx0Y29uc3Qgc2VwYXJhdG9yTGltaXQ6IHN0cmluZyA9IHRoaXMuc2VwYXJhdG9yTGltaXQucmVwbGFjZSgvXFxzL2csICcnKTtcblx0XHRpZiAoc2VwYXJhdG9yTGltaXQgJiYgK3NlcGFyYXRvckxpbWl0KSB7XG5cdFx0XHRpZiAocmVzWzBdID09PSAnLScpIHtcblx0XHRcdFx0cmVzID0gYC0ke3Jlcy5zbGljZSgxLCByZXMubGVuZ3RoKS5zbGljZSgwLCBzZXBhcmF0b3JMaW1pdC5sZW5ndGgpfWA7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRyZXMgPSByZXMuc2xpY2UoMCwgc2VwYXJhdG9yTGltaXQubGVuZ3RoKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0Y29uc3Qgcmd4OiBSZWdFeHAgPSAvKFxcZCspKFxcZHszfSkvO1xuXG5cdFx0d2hpbGUgKHRob3VzYW5kU2VwYXJhdG9yQ2hhciAmJiByZ3gudGVzdChyZXMpKSB7XG5cdFx0XHRyZXMgPSByZXMucmVwbGFjZShyZ3gsICckMScgKyB0aG91c2FuZFNlcGFyYXRvckNoYXIgKyAnJDInKTtcblx0XHR9XG5cblx0XHRpZiAocHJlY2lzaW9uID09PSB1bmRlZmluZWQpIHtcblx0XHRcdHJldHVybiByZXMgKyBkZWNpbWFscztcblx0XHR9IGVsc2UgaWYgKHByZWNpc2lvbiA9PT0gMCkge1xuXHRcdFx0cmV0dXJuIHJlcztcblx0XHR9XG5cdFx0cmV0dXJuIHJlcyArIGRlY2ltYWxzLnN1YnN0cigwLCBwcmVjaXNpb24gKyAxKTtcblx0fTtcblxuXHRwcml2YXRlIHBlcmNlbnRhZ2UgPSAoc3RyOiBzdHJpbmcpOiBib29sZWFuID0+IHtcblx0XHRyZXR1cm4gTnVtYmVyKHN0cikgPj0gMCAmJiBOdW1iZXIoc3RyKSA8PSAxMDA7XG5cdH07XG5cblx0cHJpdmF0ZSBnZXRQcmVjaXNpb24gPSAobWFza0V4cHJlc3Npb246IHN0cmluZyk6IG51bWJlciA9PiB7XG5cdFx0Y29uc3QgeDogc3RyaW5nW10gPSBtYXNrRXhwcmVzc2lvbi5zcGxpdCgnLicpO1xuXHRcdGlmICh4Lmxlbmd0aCA+IDEpIHtcblx0XHRcdHJldHVybiBOdW1iZXIoeFt4Lmxlbmd0aCAtIDFdKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gSW5maW5pdHk7XG5cdH07XG5cblx0cHJpdmF0ZSBjaGVja0FuZFJlbW92ZVN1ZmZpeCA9IChpbnB1dFZhbHVlOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuXHRcdGZvciAobGV0IGkgPSB0aGlzLnN1ZmZpeD8ubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcblx0XHRcdGNvbnN0IHN1YnN0ciA9IHRoaXMuc3VmZml4LnN1YnN0cihpLCB0aGlzLnN1ZmZpeD8ubGVuZ3RoKTtcblx0XHRcdGlmIChcblx0XHRcdFx0aW5wdXRWYWx1ZS5pbmNsdWRlcyhzdWJzdHIpICYmXG5cdFx0XHRcdChpIC0gMSA8IDAgfHwgIWlucHV0VmFsdWUuaW5jbHVkZXModGhpcy5zdWZmaXguc3Vic3RyKGkgLSAxLCB0aGlzLnN1ZmZpeD8ubGVuZ3RoKSkpXG5cdFx0XHQpIHtcblx0XHRcdFx0cmV0dXJuIGlucHV0VmFsdWUucmVwbGFjZShzdWJzdHIsICcnKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIGlucHV0VmFsdWU7XG5cdH07XG5cblx0cHJpdmF0ZSBjaGVja0lucHV0UHJlY2lzaW9uID0gKFxuXHRcdGlucHV0VmFsdWU6IHN0cmluZyxcblx0XHRwcmVjaXNpb246IG51bWJlcixcblx0XHRkZWNpbWFsTWFya2VyOiBJQ29uZmlnWydkZWNpbWFsTWFya2VyJ10sXG5cdCk6IHN0cmluZyA9PiB7XG5cdFx0aWYgKHByZWNpc2lvbiA8IEluZmluaXR5KSB7XG5cdFx0XHQvLyBUT0RPIG5lZWQgdGhpbmsgYWJvdXQgZGVjaW1hbE1hcmtlclxuXHRcdFx0aWYgKEFycmF5LmlzQXJyYXkoZGVjaW1hbE1hcmtlcikpIHtcblx0XHRcdFx0Y29uc3QgbWFya2VyID0gZGVjaW1hbE1hcmtlci5maW5kKChkbSkgPT4gZG0gIT09IHRoaXMudGhvdXNhbmRTZXBhcmF0b3IpO1xuXHRcdFx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cblx0XHRcdFx0ZGVjaW1hbE1hcmtlciA9IG1hcmtlciA/IG1hcmtlciA6IGRlY2ltYWxNYXJrZXJbMF07XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBwcmVjaXNpb25SZWdFeDogUmVnRXhwID0gbmV3IFJlZ0V4cChcblx0XHRcdFx0dGhpcy5fY2hhclRvUmVnRXhwRXhwcmVzc2lvbihkZWNpbWFsTWFya2VyKSArIGBcXFxcZHske3ByZWNpc2lvbn19LiokYCxcblx0XHRcdCk7XG5cblx0XHRcdGNvbnN0IHByZWNpc2lvbk1hdGNoOiBSZWdFeHBNYXRjaEFycmF5IHwgbnVsbCA9IGlucHV0VmFsdWUubWF0Y2gocHJlY2lzaW9uUmVnRXgpO1xuXHRcdFx0aWYgKHByZWNpc2lvbk1hdGNoICYmIHByZWNpc2lvbk1hdGNoWzBdIS5sZW5ndGggLSAxID4gcHJlY2lzaW9uKSB7XG5cdFx0XHRcdGNvbnN0IGRpZmYgPSBwcmVjaXNpb25NYXRjaFswXSEubGVuZ3RoIC0gMSAtIHByZWNpc2lvbjtcblx0XHRcdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG5cdFx0XHRcdGlucHV0VmFsdWUgPSBpbnB1dFZhbHVlLnN1YnN0cmluZygwLCBpbnB1dFZhbHVlLmxlbmd0aCAtIGRpZmYpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKFxuXHRcdFx0XHRwcmVjaXNpb24gPT09IDAgJiZcblx0XHRcdFx0dGhpcy5fY29tcGFyZU9ySW5jbHVkZXMoXG5cdFx0XHRcdFx0aW5wdXRWYWx1ZVtpbnB1dFZhbHVlLmxlbmd0aCAtIDFdLFxuXHRcdFx0XHRcdGRlY2ltYWxNYXJrZXIsXG5cdFx0XHRcdFx0dGhpcy50aG91c2FuZFNlcGFyYXRvcixcblx0XHRcdFx0KVxuXHRcdFx0KSB7XG5cdFx0XHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuXHRcdFx0XHRpbnB1dFZhbHVlID0gaW5wdXRWYWx1ZS5zdWJzdHJpbmcoMCwgaW5wdXRWYWx1ZS5sZW5ndGggLSAxKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIGlucHV0VmFsdWU7XG5cdH07XG5cblx0cHJpdmF0ZSBfc3RyaXBUb0RlY2ltYWwoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuXHRcdHJldHVybiBzdHJcblx0XHRcdC5zcGxpdCgnJylcblx0XHRcdC5maWx0ZXIoKGk6IHN0cmluZywgaWR4OiBudW1iZXIpID0+IHtcblx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRpLm1hdGNoKCdeLT9cXFxcZCcpIHx8XG5cdFx0XHRcdFx0aS5tYXRjaCgnXFxcXHMnKSB8fFxuXHRcdFx0XHRcdGkgPT09ICcuJyB8fFxuXHRcdFx0XHRcdGkgPT09ICcsJyB8fFxuXHRcdFx0XHRcdChpID09PSAnLScgJiYgaWR4ID09PSAwICYmIHRoaXMuYWxsb3dOZWdhdGl2ZU51bWJlcnMpXG5cdFx0XHRcdCk7XG5cdFx0XHR9KVxuXHRcdFx0LmpvaW4oJycpO1xuXHR9XG5cblx0cHJpdmF0ZSBfY2hhclRvUmVnRXhwRXhwcmVzc2lvbihjaGFyOiBzdHJpbmcpOiBzdHJpbmcge1xuXHRcdC8vIGlmIChBcnJheS5pc0FycmF5KGNoYXIpKSB7XG5cdFx0Ly8gXHRyZXR1cm4gY2hhci5tYXAoKHYpID0+ICgnW1xcXFxeJC58PyorKCknLmluZGV4T2YodikgPj0gMCA/IGBcXFxcJHt2fWAgOiB2KSkuam9pbignfCcpO1xuXHRcdC8vIH1cblx0XHRpZiAoY2hhcikge1xuXHRcdFx0Y29uc3QgY2hhcnNUb0VzY2FwZSA9ICdbXFxcXF4kLnw/KisoKSc7XG5cdFx0XHRyZXR1cm4gY2hhciA9PT0gJyAnID8gJ1xcXFxzJyA6IGNoYXJzVG9Fc2NhcGUuaW5kZXhPZihjaGFyKSA+PSAwID8gYFxcXFwke2NoYXJ9YCA6IGNoYXI7XG5cdFx0fVxuXHRcdHJldHVybiBjaGFyO1xuXHR9XG5cblx0cHJpdmF0ZSBfc2hpZnRTdGVwKG1hc2tFeHByZXNzaW9uOiBzdHJpbmcsIGN1cnNvcjogbnVtYmVyLCBpbnB1dExlbmd0aDogbnVtYmVyKSB7XG5cdFx0Y29uc3Qgc2hpZnRTdGVwOiBudW1iZXIgPSAvWyo/XS9nLnRlc3QobWFza0V4cHJlc3Npb24uc2xpY2UoMCwgY3Vyc29yKSkgPyBpbnB1dExlbmd0aCA6IGN1cnNvcjtcblx0XHR0aGlzLl9zaGlmdC5hZGQoc2hpZnRTdGVwICsgdGhpcy5wcmVmaXgubGVuZ3RoIHx8IDApO1xuXHR9XG5cblx0cHJvdGVjdGVkIF9jb21wYXJlT3JJbmNsdWRlczxUPih2YWx1ZTogVCwgY29tcGFyZWRWYWx1ZTogVCB8IFRbXSwgZXhjbHVkZWRWYWx1ZTogVCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBBcnJheS5pc0FycmF5KGNvbXBhcmVkVmFsdWUpXG5cdFx0XHQ/IGNvbXBhcmVkVmFsdWUuZmlsdGVyKCh2KSA9PiB2ICE9PSBleGNsdWRlZFZhbHVlKS5pbmNsdWRlcyh2YWx1ZSlcblx0XHRcdDogdmFsdWUgPT09IGNvbXBhcmVkVmFsdWU7XG5cdH1cbn1cbiJdfQ==
498
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFzay1hcHBsaWVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbWFzay1saWIvc3JjL2xpYi9tYXNrLWFwcGxpZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsTUFBTSxFQUFXLE1BQU0sVUFBVSxDQUFDOztBQUczQyxNQUFNLE9BQU8sa0JBQWtCO0lBK0M5QixZQUE2QyxPQUFnQjtRQUFoQixZQUFPLEdBQVAsT0FBTyxDQUFTO1FBdEN0RCxtQkFBYyxHQUFXLEVBQUUsQ0FBQztRQUU1QixnQkFBVyxHQUFXLEVBQUUsQ0FBQztRQUV6Qix3QkFBbUIsR0FBVyxFQUFFLENBQUM7UUE0ZGhDLDBCQUFxQixHQUFHLENBQy9CLEdBQVcsRUFDWCxxQkFBNkIsRUFDN0IsWUFBK0IsRUFDL0IsU0FBaUIsRUFDaEIsRUFBRTtZQUNILElBQUksQ0FBQyxHQUFhLEVBQUUsQ0FBQztZQUNyQixJQUFJLFdBQVcsR0FBVyxFQUFFLENBQUM7WUFDN0IsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxFQUFFO2dCQUNoQyxNQUFNLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FDeEIsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQ2xGLENBQUM7Z0JBQ0YsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ3RCLFdBQVcsR0FBRyxHQUFHLENBQUMsS0FBSyxD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VSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsV0FBVztnQ0FDMUQsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQzt3QkFDbEMsMENBQTBDO3dCQUMxQyxNQUFNLGNBQWMsR0FDbkIsTUFBTSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxTQUFTOzRCQUM1RCxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQzs0QkFDdkQsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQzs0QkFDbkQsTUFBTSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxHQUFHLFdBQVcsQ0FBQzt3QkFDNUQsNkNBQTZDO3dCQUM3QyxNQUFNLGNBQWMsR0FDbkIsTUFBTSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxTQUFTOzRCQUM3RCxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQzs0QkFDdkQsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsS0FBSyxHQUFHOzRCQUM5QixNQUFNLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLFdBQVcsQ0FBQzt3QkFFaEUsSUFDQyxDQUFDLE1BQU0sQ0FB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QUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO1lBQ2xFLENBQUMsQ0FBQyxLQUFLLEtBQUssYUFBYSxDQUFDO0lBQzVCLENBQUM7OytHQXJuQlcsa0JBQWtCLGtCQStDSCxNQUFNO21IQS9DckIsa0JBQWtCOzJGQUFsQixrQkFBa0I7a0JBRDlCLFVBQVU7OzBCQWdEVSxNQUFNOzJCQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNvbmZpZywgSUNvbmZpZyB9IGZyb20gJy4vY29uZmlnJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE1hc2tBcHBsaWVyU2VydmljZSB7XG5cdHB1YmxpYyBkcm9wU3BlY2lhbENoYXJhY3RlcnM6IElDb25maWdbJ2Ryb3BTcGVjaWFsQ2hhcmFjdGVycyddO1xuXG5cdHB1YmxpYyBoaWRkZW5JbnB1dDogSUNvbmZpZ1snaGlkZGVuSW5wdXQnXTtcblxuXHRwdWJsaWMgc2hvd1RlbXBsYXRlITogSUNvbmZpZ1snc2hvd1RlbXBsYXRlJ107XG5cblx0cHVibGljIGNsZWFySWZOb3RNYXRjaCE6IElDb25maWdbJ2NsZWFySWZOb3RNYXRjaCddO1xuXG5cdHB1YmxpYyBtYXNrRXhwcmVzc2lvbjogc3RyaW5nID0gJyc7XG5cblx0cHVibGljIGFjdHVhbFZhbHVlOiBzdHJpbmcgPSAnJztcblxuXHRwdWJsaWMgc2hvd25NYXNrRXhwcmVzc2lvbjogc3RyaW5nID0gJyc7XG5cblx0cHVibGljIG1hc2tTcGVjaWFsQ2hhcmFjdGVycyE6IElDb25maWdbJ3NwZWNpYWxDaGFyYWN0ZXJzJ107XG5cblx0cHVibGljIG1hc2tBdmFpbGFibGVQYXR0ZXJucyE6IElDb25maWdbJ3BhdHRlcm5zJ107XG5cblx0cHVibGljIHByZWZpeCE6IElDb25maWdbJ3ByZWZpeCddO1xuXG5cdHB1YmxpYyBzdWZmaXghOiBJQ29uZmlnWydzdWZmaXgnXTtcblxuXHRwdWJsaWMgdGhvdXNhbmRTZXBhcmF0b3IhOiBJQ29uZmlnWyd0aG91c2FuZFNlcGFyYXRvciddO1xuXG5cdHB1YmxpYyBkZWNpbWFsTWFya2VyITogSUNvbmZpZ1snZGVjaW1hbE1hcmtlciddO1xuXG5cdHB1YmxpYyBjdXN0b21QYXR0ZXJuITogSUNvbmZpZ1sncGF0dGVybnMnXTtcblxuXHRwdWJsaWMgaXBFcnJvcj86IGJvb2xlYW47XG5cblx0cHVibGljIGNwZkNucGpFcnJvcj86IGJvb2xlYW47XG5cblx0cHVibGljIHNob3dNYXNrVHlwZWQhOiBJQ29uZmlnWydzaG93TWFza1R5cGVkJ107XG5cblx0cHVibGljIHBsYWNlSG9sZGVyQ2hhcmFjdGVyITogSUNvbmZpZ1sncGxhY2VIb2xkZXJDaGFyYWN0ZXInXTtcblxuXHRwdWJsaWMgdmFsaWRhdGlvbjogSUNvbmZpZ1sndmFsaWRhdGlvbiddO1xuXG5cdHB1YmxpYyBzZXBhcmF0b3JMaW1pdDogSUNvbmZpZ1snc2VwYXJhdG9yTGltaXQnXTtcblxuXHRwdWJsaWMgYWxsb3dOZWdhdGl2ZU51bWJlcnM6IElDb25maWdbJ2FsbG93TmVnYXRpdmVOdW1iZXJzJ107XG5cblx0cHVibGljIGxlYWRaZXJvRGF0ZVRpbWU6IElDb25maWdbJ2xlYWRaZXJvRGF0ZVRpbWUnXTtcblxuXHRwcml2YXRlIF9zaGlmdCE6IFNldDxudW1iZXI+O1xuXG5cdHB1YmxpYyBjb25zdHJ1Y3RvcihASW5qZWN0KGNvbmZpZykgcHJvdGVjdGVkIF9jb25maWc6IElDb25maWcpIHtcblx0XHR0aGlzLl9zaGlmdCA9IG5ldyBTZXQoKTtcblx0XHR0aGlzLmNsZWFySWZOb3RNYXRjaCA9IHRoaXMuX2NvbmZpZy5jbGVhcklmTm90TWF0Y2g7XG5cdFx0dGhpcy5kcm9wU3BlY2lhbENoYXJhY3RlcnMgPSB0aGlzLl9jb25maWcuZHJvcFNwZWNpYWxDaGFyYWN0ZXJzO1xuXHRcdHRoaXMubWFza1NwZWNpYWxDaGFyYWN0ZXJzID0gdGhpcy5fY29uZmlnLnNwZWNpYWxDaGFyYWN0ZXJzO1xuXHRcdHRoaXMubWFza0F2YWlsYWJsZVBhdHRlcm5zID0gdGhpcy5fY29uZmlnLnBhdHRlcm5zO1xuXHRcdHRoaXMucHJlZml4ID0gdGhpcy5fY29uZmlnLnByZWZpeDtcblx0XHR0aGlzLnN1ZmZpeCA9IHRoaXMuX2NvbmZpZy5zdWZmaXg7XG5cdFx0dGhpcy50aG91c2FuZFNlcGFyYXRvciA9IHRoaXMuX2NvbmZpZy50aG91c2FuZFNlcGFyYXRvcjtcblx0XHR0aGlzLmRlY2ltYWxNYXJrZXIgPSB0aGlzLl9jb25maWcuZGVjaW1hbE1hcmtlcjtcblx0XHR0aGlzLmhpZGRlbklucHV0ID0gdGhpcy5fY29uZmlnLmhpZGRlbklucHV0O1xuXHRcdHRoaXMuc2hvd01hc2tUeXBlZCA9IHRoaXMuX2NvbmZpZy5zaG93TWFza1R5cGVkO1xuXHRcdHRoaXMucGxhY2VIb2xkZXJDaGFyYWN0ZXIgPSB0aGlzLl9jb25maWcucGxhY2VIb2xkZXJDaGFyYWN0ZXI7XG5cdFx0dGhpcy52YWxpZGF0aW9uID0gdGhpcy5fY29uZmlnLnZhbGlkYXRpb247XG5cdFx0dGhpcy5zZXBhcmF0b3JMaW1pdCA9IHRoaXMuX2NvbmZpZy5zZXBhcmF0b3JMaW1pdDtcblx0XHR0aGlzLmFsbG93TmVnYXRpdmVOdW1iZXJzID0gdGhpcy5fY29uZmlnLmFsbG93TmVnYXRpdmVOdW1iZXJzO1xuXHRcdHRoaXMubGVhZFplcm9EYXRlVGltZSA9IHRoaXMuX2NvbmZpZy5sZWFkWmVyb0RhdGVUaW1lO1xuXHR9XG5cblx0cHVibGljIGFwcGx5TWFza1dpdGhQYXR0ZXJuKFxuXHRcdGlucHV0VmFsdWU6IHN0cmluZyxcblx0XHRtYXNrQW5kUGF0dGVybjogW3N0cmluZywgSUNvbmZpZ1sncGF0dGVybnMnXV0sXG5cdCk6IHN0cmluZyB7XG5cdFx0Y29uc3QgW21hc2ssIGN1c3RvbVBhdHRlcm5dID0gbWFza0FuZFBhdHRlcm47XG5cdFx0dGhpcy5jdXN0b21QYXR0ZXJuID0gY3VzdG9tUGF0dGVybjtcblx0XHRyZXR1cm4gdGhpcy5hcHBseU1hc2soaW5wdXRWYWx1ZSwgbWFzayk7XG5cdH1cblxuXHRwdWJsaWMgYXBwbHlNYXNrKFxuXHRcdGlucHV0VmFsdWU6IHN0cmluZyB8IG9iamVjdCB8IGJvb2xlYW4gfCBudWxsIHwgdW5kZWZpbmVkLFxuXHRcdG1hc2tFeHByZXNzaW9uOiBzdHJpbmcsXG5cdFx0cG9zaXRpb246IG51bWJlciA9IDAsXG5cdFx0anVzdFBhc3RlZDogYm9vbGVhbiA9IGZhbHNlLFxuXHRcdGJhY2tzcGFjZWQ6IGJvb2xlYW4gPSBmYWxzZSxcblx0XHRjYjogRnVuY3Rpb24gPSAoKSA9PiB7fSxcblx0KTogc3RyaW5nIHtcblx0XHRpZiAoIW1hc2tFeHByZXNzaW9uIHx8IHR5cGVvZiBpbnB1dFZhbHVlICE9PSAnc3RyaW5nJykge1xuXHRcdFx0cmV0dXJuICcnO1xuXHRcdH1cblx0XHRsZXQgY3Vyc29yID0gMDtcblx0XHRsZXQgcmVzdWx0ID0gJyc7XG5cdFx0bGV0IG11bHRpID0gZmFsc2U7XG5cdFx0bGV0IGJhY2tzcGFjZVNoaWZ0ID0gZmFsc2U7XG5cdFx0bGV0IHNoaWZ0ID0gMTtcblx0XHRsZXQgc3RlcEJhY2sgPSBmYWxzZTtcblx0XHRpZiAoaW5wdXRWYWx1ZS5zbGljZSgwLCB0aGlzLnByZWZpeC5sZW5ndGgpID09PSB0aGlzLnByZWZpeCkge1xuXHRcdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG5cdFx0XHRpbnB1dFZhbHVlID0gaW5wdXRWYWx1ZS5zbGljZSh0aGlzLnByZWZpeC5sZW5ndGgsIGlucHV0VmFsdWUubGVuZ3RoKTtcblx0XHR9XG5cdFx0aWYgKCEhdGhpcy5zdWZmaXggJiYgaW5wdXRWYWx1ZT8ubGVuZ3RoID4gMCkge1xuXHRcdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG5cdFx0XHRpbnB1dFZhbHVlID0gdGhpcy5jaGVja0FuZFJlbW92ZVN1ZmZpeChpbnB1dFZhbHVlKTtcblx0XHR9XG5cdFx0Y29uc3QgaW5wdXRBcnJheTogc3RyaW5nW10gPSBpbnB1dFZhbHVlLnRvU3RyaW5nKCkuc3BsaXQoJycpO1xuXHRcdGlmIChtYXNrRXhwcmVzc2lvbiA9PT0gJ0lQJykge1xuXHRcdFx0dGhpcy5pcEVycm9yID1cblx0XHRcdFx0aW5wdXRBcnJheS5maWx0ZXIoKGk6IHN0cmluZykgPT4gaSA9PT0gJy4nKS5sZW5ndGggPCAzICYmIGlucHV0QXJyYXkubGVuZ3RoIDwgNztcblx0XHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuXHRcdFx0bWFza0V4cHJlc3Npb24gPSAnMDk5LjA5OS4wOTkuMDk5Jztcblx0XHR9XG5cdFx0Y29uc3QgYXJyOiBzdHJpbmdbXSA9IFtdO1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgaW5wdXRWYWx1ZS5sZW5ndGg7IGkrKykge1xuXHRcdFx0aWYgKGlucHV0VmFsdWVbaV0/Lm1hdGNoKCdcXFxcZCcpKSB7XG5cdFx0XHRcdGFyci5wdXNoKGlucHV0VmFsdWVbaV0hKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0aWYgKG1hc2tFeHByZXNzaW9uID09PSAnQ1BGX0NOUEonKSB7XG5cdFx0XHR0aGlzLmNwZkNucGpFcnJvciA9IGFyci5sZW5ndGggIT09IDExICYmIGFyci5sZW5ndGggIT09IDE0O1xuXHRcdFx0aWYgKGFyci5sZW5ndGggPiAxMSkge1xuXHRcdFx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cblx0XHRcdFx0bWFza0V4cHJlc3Npb24gPSAnMDAuMDAwLjAwMC8wMDAwLTAwJztcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuXHRcdFx0XHRtYXNrRXhwcmVzc2lvbiA9ICcwMDAuMDAwLjAwMC0wMCc7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGlmIChtYXNrRXhwcmVzc2lvbi5zdGFydHNXaXRoKCdwZXJjZW50JykpIHtcblx0XHRcdGlmIChcblx0XHRcdFx0aW5wdXRWYWx1ZS5tYXRjaCgnW2Etel18W0EtWl0nKSB8fFxuXHRcdFx0XHRpbnB1dFZhbHVlLm1hdGNoKC9bLSEkJV4mKigpXyt8fj1ge31cXFtcXF06XCI7Jzw+PyxcXC8uXS8pXG5cdFx0XHQpIHtcblx0XHRcdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG5cdFx0XHRcdGlucHV0VmFsdWUgPSB0aGlzLl9zdHJpcFRvRGVjaW1hbChpbnB1dFZhbHVlKTtcblx0XHRcdFx0Y29uc3QgcHJlY2lzaW9uOiBudW1iZXIgPSB0aGlzLmdldFByZWNpc2lvbihtYXNrRXhwcmVzc2lvbik7XG5cdFx0XHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuXHRcdFx0XHRpbnB1dFZhbHVlID0gdGhpcy5jaGVja0lucHV0UHJlY2lzaW9uKGlucHV0VmFsdWUsIHByZWNpc2lvbiwgdGhpcy5kZWNpbWFsTWFya2VyKTtcblx0XHRcdH1cblx0XHRcdGlmIChcblx0XHRcdFx0aW5wdXRWYWx1ZS5pbmRleE9mKCcuJykgPiAwICYmXG5cdFx0XHRcdCF0aGlzLnBlcmNlbnRhZ2UoaW5wdXRWYWx1ZS5zdWJzdHJpbmcoMCwgaW5wdXRWYWx1ZS5pbmRleE9mKCcuJykpKVxuXHRcdFx0KSB7XG5cdFx0XHRcdGNvbnN0IGJhc2U6IHN0cmluZyA9IGlucHV0VmFsdWUuc3Vic3RyaW5nKDAsIGlucHV0VmFsdWUuaW5kZXhPZignLicpIC0gMSk7XG5cdFx0XHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuXHRcdFx0XHRpbnB1dFZhbHVlID0gYCR7YmFzZX0ke2lucHV0VmFsdWUuc3Vic3RyaW5nKGlucHV0VmFsdWUuaW5kZXhPZignLicpLCBpbnB1dFZhbHVlLmxlbmd0aCl9YDtcblx0XHRcdH1cblx0XHRcdGlmICh0aGlzLnBlcmNlbnRhZ2UoaW5wdXRWYWx1ZSkpIHtcblx0XHRcdFx0cmVzdWx0ID0gaW5wdXRWYWx1ZTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHJlc3VsdCA9IGlucHV0VmFsdWUuc3Vic3RyaW5nKDAsIGlucHV0VmFsdWUubGVuZ3RoIC0gMSk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIGlmIChtYXNrRXhwcmVzc2lvbi5zdGFydHNXaXRoKCdzZXBhcmF0b3InKSkge1xuXHRcdFx0aWYgKFxuXHRcdFx0XHRpbnB1dFZhbHVlLm1hdGNoKCdbd9CwLdGP0JAt0K9dJykgfHxcblx0XHRcdFx0aW5wdXRWYWx1ZS5tYXRjaCgnW9CB0ZHQkC3Rj10nKSB8fFxuXHRcdFx0XHRpbnB1dFZhbHVlLm1hdGNoKCdbYS16XXxbQS1aXScpIHx8XG5cdFx0XHRcdGlucHV0VmFsdWUubWF0Y2goL1stQCMhJCVcXFxcXiYqKClfwqPCrCcrfH49YHt9XFxbXFxdOlwiOzw+Lj9cXC9dLykgfHxcblx0XHRcdFx0aW5wdXRWYWx1ZS5tYXRjaCgnW15BLVphLXowLTksXScpXG5cdFx0XHQpIHtcblx0XHRcdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG5cdFx0XHRcdGlucHV0VmFsdWUgPSB0aGlzLl9zdHJpcFRvRGVjaW1hbChpbnB1dFZhbHVlKTtcblx0XHRcdH1cblx0XHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuXHRcdFx0aW5wdXRWYWx1ZSA9XG5cdFx0XHRcdGlucHV0VmFsdWUubGVuZ3RoID4gMSAmJlxuXHRcdFx0XHRpbnB1dFZhbHVlWzBdID09PSAnMCcgJiZcblx0XHRcdFx0IXRoaXMuX2NvbXBhcmVPckluY2x1ZGVzKGlucHV0VmFsdWVbMV0sIHRoaXMuZGVjaW1hbE1hcmtlciwgdGhpcy50aG91c2FuZFNlcGFyYXRvcikgJiZcblx0XHRcdFx0IWJhY2tzcGFjZWRcblx0XHRcdFx0XHQ/IGlucHV0VmFsdWUuc2xpY2UoMSwgaW5wdXRWYWx1ZS5sZW5ndGgpXG5cdFx0XHRcdFx0OiBpbnB1dFZhbHVlO1xuXG5cdFx0XHRpZiAoYmFja3NwYWNlZCkge1xuXHRcdFx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cblx0XHRcdFx0aW5wdXRWYWx1ZSA9IHRoaXMuX2NvbXBhcmVPckluY2x1ZGVzKFxuXHRcdFx0XHRcdGlucHV0VmFsdWVbaW5wdXRWYWx1ZS5sZW5ndGggLSAxXSxcblx0XHRcdFx0XHR0aGlzLmRlY2ltYWxNYXJrZXIsXG5cdFx0XHRcdFx0dGhpcy50aG91c2FuZFNlcGFyYXRvcixcblx0XHRcdFx0KVxuXHRcdFx0XHRcdD8gaW5wdXRWYWx1ZS5zbGljZSgwLCBpbnB1dFZhbHVlLmxlbmd0aCAtIDEpXG5cdFx0XHRcdFx0OiBpbnB1dFZhbHVlO1xuXHRcdFx0fVxuXHRcdFx0Ly8gVE9ETzogd2UgaGFkIGRpZmZlcmVudCByZXhleHBzIGhlcmUgZm9yIHRoZSBkaWZmZXJlbnQgY2FzZXMuLi4gYnV0IHRlc3RzIGRvbnQgc2VhbSB0byBib3RoZXIgLSBjaGVjayB0aGlzXG5cdFx0XHQvLyAgc2VwYXJhdG9yOiBubyBDT01NQSwgZG90LXNlcDogbm8gU1BBQ0UsIENPTU1BIE9LLCBjb21tYS1zZXA6IG5vIFNQQUNFLCBDT01NQSBPS1xuXG5cdFx0XHRjb25zdCB0aG91c2FuZFNlcGFyYXRvckNoYXJFc2NhcGVkOiBzdHJpbmcgPSB0aGlzLl9jaGFyVG9SZWdFeHBFeHByZXNzaW9uKFxuXHRcdFx0XHR0aGlzLnRob3VzYW5kU2VwYXJhdG9yLFxuXHRcdFx0KTtcblx0XHRcdGxldCBpbnZhbGlkQ2hhcnM6IHN0cmluZyA9ICdAIyEkJV4mKigpXyt8fj1ge31cXFxcW1xcXFxdOlxcXFxzLFxcXFwuXCI7PD4/XFxcXC8nLnJlcGxhY2UoXG5cdFx0XHRcdHRob3VzYW5kU2VwYXJhdG9yQ2hhckVzY2FwZWQsXG5cdFx0XHRcdCcnLFxuXHRcdFx0KTtcblx0XHRcdC8vLnJlcGxhY2UoZGVjaW1hbE1hcmtlckVzY2FwZWQsICcnKTtcblx0XHRcdGlmIChBcnJheS5pc0FycmF5KHRoaXMuZGVjaW1hbE1hcmtlcikpIHtcblx0XHRcdFx0Zm9yIChjb25zdCBtYXJrZXIgb2YgdGhpcy5kZWNpbWFsTWFya2VyKSB7XG5cdFx0XHRcdFx0aW52YWxpZENoYXJzID0gaW52YWxpZENoYXJzLnJlcGxhY2UodGhpcy5fY2hhclRvUmVnRXhwRXhwcmVzc2lvbihtYXJrZXIpLCAnJyk7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGludmFsaWRDaGFycyA9IGludmFsaWRDaGFycy5yZXBsYWNlKHRoaXMuX2NoYXJUb1JlZ0V4cEV4cHJlc3Npb24odGhpcy5kZWNpbWFsTWFya2VyKSwgJycpO1xuXHRcdFx0fVxuXG5cdFx0XHRjb25zdCBpbnZhbGlkQ2hhclJlZ2V4cDogUmVnRXhwID0gbmV3IFJlZ0V4cCgnWycgKyBpbnZhbGlkQ2hhcnMgKyAnXScpO1xuXG5cdFx0XHRpZiAoXG5cdFx0XHRcdGlucHV0VmFsdWUubWF0Y2goaW52YWxpZENoYXJSZWdleHApIHx8XG5cdFx0XHRcdChpbnB1dFZhbHVlLmxlbmd0aCA9PT0gMSAmJlxuXHRcdFx0XHRcdHRoaXMuX2NvbXBhcmVPckluY2x1ZGVzKGlucHV0VmFsdWUsIHRoaXMuZGVjaW1hbE1hcmtlciwgdGhpcy50aG91c2FuZFNlcGFyYXRvcikpXG5cdFx0XHQpIHtcblx0XHRcdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG5cdFx0XHRcdGlucHV0VmFsdWUgPSBpbnB1dFZhbHVlLnN1YnN0cmluZygwLCBpbnB1dFZhbHVlLmxlbmd0aCAtIDEpO1xuXHRcdFx0fVxuXG5cdFx0XHRjb25zdCBwcmVjaXNpb246IG51bWJlciA9IHRoaXMuZ2V0UHJlY2lzaW9uKG1hc2tFeHByZXNzaW9uKTtcblx0XHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuXHRcdFx0aW5wdXRWYWx1ZSA9IHRoaXMuY2hlY2tJbnB1dFByZWNpc2lvbihpbnB1dFZhbHVlLCBwcmVjaXNpb24sIHRoaXMuZGVjaW1hbE1hcmtlcik7XG5cdFx0XHRjb25zdCBzdHJGb3JTZXA6IHN0cmluZyA9IGlucHV0VmFsdWUucmVwbGFjZShcblx0XHRcdFx0bmV3IFJlZ0V4cCh0aG91c2FuZFNlcGFyYXRvckNoYXJFc2NhcGVkLCAnZycpLFxuXHRcdFx0XHQnJyxcblx0XHRcdCk7XG5cdFx0XHRyZXN1bHQgPSB0aGlzLl9mb3JtYXRXaXRoU2VwYXJhdG9ycyhcblx0XHRcdFx0c3RyRm9yU2VwLFxuXHRcdFx0XHR0aGlzLnRob3VzYW5kU2VwYXJhdG9yLFxuXHRcdFx0XHR0aGlzLmRlY2ltYWxNYXJrZXIsXG5cdFx0XHRcdHByZWNpc2lvbixcblx0XHRcdCk7XG5cdFx0XHRjb25zdCBjb21tYVNoaWZ0OiBudW1iZXIgPSByZXN1bHQuaW5kZXhPZignLCcpIC0gaW5wdXRWYWx1ZS5pbmRleE9mKCcsJyk7XG5cdFx0XHRjb25zdCBzaGlmdFN0ZXA6IG51bWJlciA9IHJlc3VsdC5sZW5ndGggLSBpbnB1dFZhbHVlLmxlbmd0aDtcblxuXHRcdFx0aWYgKHNoaWZ0U3RlcCA+IDAgJiYgcmVzdWx0W3Bvc2l0aW9uXSAhPT0gJywnKSB7XG5cdFx0XHRcdGJhY2tzcGFjZVNoaWZ0ID0gdHJ1ZTtcblx0XHRcdFx0bGV0IF9zaGlmdCA9IDA7XG5cdFx0XHRcdGRvIHtcblx0XHRcdFx0XHR0aGlzLl9zaGlmdC5hZGQocG9zaXRpb24gKyBfc2hpZnQpO1xuXHRcdFx0XHRcdF9zaGlmdCsrO1xuXHRcdFx0XHR9IHdoaWxlIChfc2hpZnQgPCBzaGlmdFN0ZXApO1xuXHRcdFx0fSBlbHNlIGlmIChcblx0XHRcdFx0KGNvbW1hU2hpZnQgIT09IDAgJiYgcG9zaXRpb24gPiAwICYmICEocmVzdWx0LmluZGV4T2YoJywnKSA+PSBwb3NpdGlvbiAmJiBwb3NpdGlvbiA+IDMpKSB8fFxuXHRcdFx0XHQoIShyZXN1bHQuaW5kZXhPZignLicpID49IHBvc2l0aW9uICYmIHBvc2l0aW9uID4gMykgJiYgc2hpZnRTdGVwIDw9IDApXG5cdFx0XHQpIHtcblx0XHRcdFx0dGhpcy5fc2hpZnQuY2xlYXIoKTtcblx0XHRcdFx0YmFja3NwYWNlU2hpZnQgPSB0cnVlO1xuXHRcdFx0XHRzaGlmdCA9IHNoaWZ0U3RlcDtcblx0XHRcdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG5cdFx0XHRcdHBvc2l0aW9uICs9IHNoaWZ0U3RlcDtcblx0XHRcdFx0dGhpcy5fc2hpZnQuYWRkKHBvc2l0aW9uKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHRoaXMuX3NoaWZ0LmNsZWFyKCk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdGZvciAoXG5cdFx0XHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuXHRcdFx0XHRsZXQgaTogbnVtYmVyID0gMCwgaW5wdXRTeW1ib2w6IHN0cmluZyA9IGlucHV0QXJyYXlbMF0hO1xuXHRcdFx0XHRpIDwgaW5wdXRBcnJheS5sZW5ndGg7XG5cdFx0XHRcdGkrKywgaW5wdXRTeW1ib2wgPSBpbnB1dEFycmF5W2ldIVxuXHRcdFx0KSB7XG5cdFx0XHRcdGlmIChjdXJzb3IgPT09IG1hc2tFeHByZXNzaW9uLmxlbmd0aCkge1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChcblx0XHRcdFx0XHR0aGlzLl9jaGVja1N5bWJvbE1hc2soaW5wdXRTeW1ib2wsIG1hc2tFeHByZXNzaW9uW2N1cnNvcl0hKSAmJlxuXHRcdFx0XHRcdG1hc2tFeHByZXNzaW9uW2N1cnNvciArIDFdID09PSAnPydcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0cmVzdWx0ICs9IGlucHV0U3ltYm9sO1xuXHRcdFx0XHRcdGN1cnNvciArPSAyO1xuXHRcdFx0XHR9IGVsc2UgaWYgKFxuXHRcdFx0XHRcdG1hc2tFeHByZXNzaW9uW2N1cnNvciArIDFdID09PSAnKicgJiZcblx0XHRcdFx0XHRtdWx0aSAmJlxuXHRcdFx0XHRcdHRoaXMuX2NoZWNrU3ltYm9sTWFzayhpbnB1dFN5bWJvbCwgbWFza0V4cHJlc3Npb25bY3Vyc29yICsgMl0hKVxuXHRcdFx0XHQpIHtcblx0XHRcdFx0XHRyZXN1bHQgKz0gaW5wdXRTeW1ib2w7XG5cdFx0XHRcdFx0Y3Vyc29yICs9IDM7XG5cdFx0XHRcdFx0bXVsdGkgPSBmYWxzZTtcblx0XHRcdFx0fSBlbHNlIGlmIChcblx0XHRcdFx0XHR0aGlzLl9jaGVja1N5bWJvbE1hc2soaW5wdXRTeW1ib2wsIG1hc2tFeHByZXNzaW9uW2N1cnNvcl0hKSAmJlxuXHRcdFx0XHRcdG1hc2tFeHByZXNzaW9uW2N1cnNvciArIDFdID09PSAnKidcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0cmVzdWx0ICs9IGlucHV0U3ltYm9sO1xuXHRcdFx0XHRcdG11bHRpID0gdHJ1ZTtcblx0XHRcdFx0fSBlbHNlIGlmIChcblx0XHRcdFx0XHRtYXNrRXhwcmVzc2lvbltjdXJzb3IgKyAxXSA9PT0gJz8nICYmXG5cdFx0XHRcdFx0dGhpcy5fY2hlY2tTeW1ib2xNYXNrKGlucHV0U3ltYm9sLCBtYXNrRXhwcmVzc2lvbltjdXJzb3IgKyAyXSEpXG5cdFx0XHRcdCkge1xuXHRcdFx0XHRcdHJlc3VsdCArPSBpbnB1dFN5bWJvbDtcblx0XHRcdFx0XHRjdXJzb3IgKz0gMztcblx0XHRcdFx0fSBlbHNlIGlmICh0aGlzLl9jaGVja1N5bWJvbE1hc2soaW5wdXRTeW1ib2wsIG1hc2tFeHByZXNzaW9uW2N1cnNvcl0hKSkge1xuXHRcdFx0XHRcdGlmIChtYXNrRXhwcmVzc2lvbltjdXJzb3JdID09PSAnSCcpIHtcblx0XHRcdFx0XHRcdGlmIChOdW1iZXIoaW5wdXRTeW1ib2wpID4gMikge1xuXHRcdFx0XHRcdFx0XHRjdXJzb3IgKz0gMTtcblx0XHRcdFx0XHRcdFx0dGhpcy5fc2hpZnRTdGVwKG1hc2tFeHByZXNzaW9uLCBjdXJzb3IsIGlucHV0QXJyYXkubGVuZ3RoKTtcblx0XHRcdFx0XHRcdFx0aS0tO1xuXHRcdFx0XHRcdFx0XHRpZiAodGhpcy5sZWFkWmVyb0RhdGVUaW1lKSB7XG5cdFx0XHRcdFx0XHRcdFx0cmVzdWx0ICs9ICcwJztcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRjb250aW51ZTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYgKG1hc2tFeHByZXNzaW9uW2N1cnNvcl0gPT09ICdoJykge1xuXHRcdFx0XHRcdFx0aWYgKHJlc3VsdCA9PT0gJzInICYmIE51bWJlcihpbnB1dFN5bWJvbCkgPiAzKSB7XG5cdFx0XHRcdFx0XHRcdGN1cnNvciArPSAxO1xuXHRcdFx0XHRcdFx0XHRpLS07XG5cdFx0XHRcdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZiAobWFza0V4cHJlc3Npb25bY3Vyc29yXSA9PT0gJ20nKSB7XG5cdFx0XHRcdFx0XHRpZiAoTnVtYmVyKGlucHV0U3ltYm9sKSA+IDUpIHtcblx0XHRcdFx0XHRcdFx0Y3Vyc29yICs9IDE7XG5cdFx0XHRcdFx0XHRcdHRoaXMuX3NoaWZ0U3RlcChtYXNrRXhwcmVzc2lvbiwgY3Vyc29yLCBpbnB1dEFycmF5Lmxlbmd0aCk7XG5cdFx0XHRcdFx0XHRcdGktLTtcblx0XHRcdFx0XHRcdFx0aWYgKHRoaXMubGVhZFplcm9EYXRlVGltZSkge1xuXHRcdFx0XHRcdFx0XHRcdHJlc3VsdCArPSAnMCc7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0Y29udGludWU7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmIChtYXNrRXhwcmVzc2lvbltjdXJzb3JdID09PSAncycpIHtcblx0XHRcdFx0XHRcdGlmIChOdW1iZXIoaW5wdXRTeW1ib2wpID4gNSkge1xuXHRcdFx0XHRcdFx0XHRjdXJzb3IgKz0gMTtcblx0XHRcdFx0XHRcdFx0dGhpcy5fc2hpZnRTdGVwKG1hc2tFeHByZXNzaW9uLCBjdXJzb3IsIGlucHV0QXJyYXkubGVuZ3RoKTtcblx0XHRcdFx0XHRcdFx0aS0tO1xuXHRcdFx0XHRcdFx0XHRpZiAodGhpcy5sZWFkWmVyb0RhdGVUaW1lKSB7XG5cdFx0XHRcdFx0XHRcdFx0cmVzdWx0ICs9ICcwJztcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRjb250aW51ZTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y29uc3QgZGF5c0NvdW50ID0gMzE7XG5cdFx0XHRcdFx0aWYgKG1hc2tFeHByZXNzaW9uW2N1cnNvcl0gPT09ICdkJykge1xuXHRcdFx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdFx0XHQoTnVtYmVyKGlucHV0U3ltYm9sKSA+IDMgJiYgdGhpcy5sZWFkWmVyb0RhdGVUaW1lKSB8fFxuXHRcdFx0XHRcdFx0XHROdW1iZXIoaW5wdXRWYWx1ZS5zbGljZShjdXJzb3IsIGN1cnNvciArIDIpKSA+IGRheXNDb3VudCB8fFxuXHRcdFx0XHRcdFx0XHRpbnB1dFZhbHVlW2N1cnNvciArIDFdID09PSAnLydcblx0XHRcdFx0XHRcdCkge1xuXHRcdFx0XHRcdFx0XHRjdXJzb3IgKz0gMTtcblx0XHRcdFx0XHRcdFx0dGhpcy5fc2hpZnRTdGVwKG1hc2tFeHByZXNzaW9uLCBjdXJzb3IsIGlucHV0QXJyYXkubGVuZ3RoKTtcblx0XHRcdFx0XHRcdFx0aS0tO1xuXHRcdFx0XHRcdFx0XHRpZiAodGhpcy5sZWFkWmVyb0RhdGVUaW1lKSB7XG5cdFx0XHRcdFx0XHRcdFx0cmVzdWx0ICs9ICcwJztcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRjb250aW51ZTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYgKG1hc2tFeHByZXNzaW9uW2N1cnNvcl0gPT09ICdNJykge1xuXHRcdFx0XHRcdFx0Y29uc3QgbW9udGhzQ291bnQgPSAxMjtcblx0XHRcdFx0XHRcdC8vIG1hc2sgd2l0aG91dCBkYXlcblx0XHRcdFx0XHRcdGNvbnN0IHdpdGhvdXREYXlzOiBib29sZWFuID1cblx0XHRcdFx0XHRcdFx0Y3Vyc29yID09PSAwICYmXG5cdFx0XHRcdFx0XHRcdChOdW1iZXIoaW5wdXRTeW1ib2wpID4gMiB8fFxuXHRcdFx0XHRcdFx0XHRcdE51bWJlcihpbnB1dFZhbHVlLnNsaWNlKGN1cnNvciwgY3Vyc29yICsgMikpID4gbW9udGhzQ291bnQgfHxcblx0XHRcdFx0XHRcdFx0XHRpbnB1dFZhbHVlW2N1cnNvciArIDFdID09PSAnLycpO1xuXHRcdFx0XHRcdFx0Ly8gZGF5PDEwICYmIG1vbnRoPDEyIGZvciBpbnB1dFxuXHRcdFx0XHRcdFx0Y29uc3QgZGF5MW1vbnRoSW5wdXQ6IGJvb2xlYW4gPVxuXHRcdFx0XHRcdFx0XHRpbnB1dFZhbHVlLnNsaWNlKGN1cnNvciAtIDMsIGN1cnNvciAtIDEpLmluY2x1ZGVzKCcvJykgJiZcblx0XHRcdFx0XHRcdFx0KChpbnB1dFZhbHVlW2N1cnNvciAtIDJdID09PSAnLycgJiZcblx0XHRcdFx0XHRcdFx0XHROdW1iZXIoaW5wdXRWYWx1ZS5zbGljZShjdXJzb3IgLSAxLCBjdXJzb3IgKyAxKSkgPiBtb250aHNDb3VudCAmJlxuXHRcdFx0XHRcdFx0XHRcdGlucHV0VmFsdWVbY3Vyc29yXSAhPT0gJy8nKSB8fFxuXHRcdFx0XHRcdFx0XHRcdGlucHV0VmFsdWVbY3Vyc29yXSA9PT0gJy8nIHx8XG5cdFx0XHRcdFx0XHRcdFx0KGlucHV0VmFsdWVbY3Vyc29yIC0gM10gPT09ICcvJyAmJlxuXHRcdFx0XHRcdFx0XHRcdFx0TnVtYmVyKGlucHV0VmFsdWUuc2xpY2UoY3Vyc29yIC0gMiwgY3Vyc29yKSkgPiBtb250aHNDb3VudCAmJlxuXHRcdFx0XHRcdFx0XHRcdFx0aW5wdXRWYWx1ZVtjdXJzb3IgLSAxXSAhPT0gJy8nKSB8fFxuXHRcdFx0XHRcdFx0XHRcdGlucHV0VmFsdWVbY3Vyc29yIC0gMV0gPT09ICcvJyk7XG5cdFx0XHRcdFx0XHQvLyAxMDxkYXk8MzEgJiYgbW9udGg8MTIgZm9yIGlucHV0XG5cdFx0XHRcdFx0XHRjb25zdCBkYXkybW9udGhJbnB1dDogYm9vbGVhbiA9XG5cdFx0XHRcdFx0XHRcdE51bWJlcihpbnB1dFZhbHVlLnNsaWNlKGN1cnNvciAtIDMsIGN1cnNvciAtIDEpKSA8PSBkYXlzQ291bnQgJiZcblx0XHRcdFx0XHRcdFx0IWlucHV0VmFsdWUuc2xpY2UoY3Vyc29yIC0gMywgY3Vyc29yIC0gMSkuaW5jbHVkZXMoJy8nKSAmJlxuXHRcdFx0XHRcdFx0XHRpbnB1dFZhbHVlW2N1cnNvciAtIDFdID09PSAnLycgJiZcblx0XHRcdFx0XHRcdFx0KE51bWJlcihpbnB1dFZhbHVlLnNsaWNlKGN1cnNvciwgY3Vyc29yICsgMikpID4gbW9udGhzQ291bnQgfHxcblx0XHRcdFx0XHRcdFx0XHRpbnB1dFZhbHVlW2N1cnNvciArIDFdID09PSAnLycpO1xuXHRcdFx0XHRcdFx0Ly8gZGF5PDEwICYmIG1vbnRoPDEyIGZvciBwYXN0ZSB3aG9sZSBkYXRhXG5cdFx0XHRcdFx0XHRjb25zdCBkYXkxbW9udGhQYXN0ZTogYm9vbGVhbiA9XG5cdFx0XHRcdFx0XHRcdE51bWJlcihpbnB1dFZhbHVlLnNsaWNlKGN1cnNvciAtIDMsIGN1cnNvciAtIDEpKSA+IGRheXNDb3VudCAmJlxuXHRcdFx0XHRcdFx0XHQhaW5wdXRWYWx1ZS5zbGljZShjdXJzb3IgLSAzLCBjdXJzb3IgLSAxKS5pbmNsdWRlcygnLycpICYmXG5cdFx0XHRcdFx0XHRcdCFpbnB1dFZhbHVlLnNsaWNlKGN1cnNvciAtIDIsIGN1cnNvcikuaW5jbHVkZXMoJy8nKSAmJlxuXHRcdFx0XHRcdFx0XHROdW1iZXIoaW5wdXRWYWx1ZS5zbGljZShjdXJzb3IgLSAyLCBjdXJzb3IpKSA+IG1vbnRoc0NvdW50O1xuXHRcdFx0XHRcdFx0Ly8gMTA8ZGF5PDMxICYmIG1vbnRoPDEyIGZvciBwYXN0ZSB3aG9sZSBkYXRhXG5cdFx0XHRcdFx0XHRjb25zdCBkYXkybW9udGhQYXN0ZTogYm9vbGVhbiA9XG5cdFx0XHRcdFx0XHRcdE51bWJlcihpbnB1dFZhbHVlLnNsaWNlKGN1cnNvciAtIDMsIGN1cnNvciAtIDEpKSA8PSBkYXlzQ291bnQgJiZcblx0XHRcdFx0XHRcdFx0IWlucHV0VmFsdWUuc2xpY2UoY3Vyc29yIC0gMywgY3Vyc29yIC0gMSkuaW5jbHVkZXMoJy8nKSAmJlxuXHRcdFx0XHRcdFx0XHRpbnB1dFZhbHVlW2N1cnNvciAtIDFdICE9PSAnLycgJiZcblx0XHRcdFx0XHRcdFx0TnVtYmVyKGlucHV0VmFsdWUuc2xpY2UoY3Vyc29yIC0gMSwgY3Vyc29yICsgMSkpID4gbW9udGhzQ291bnQ7XG5cblx0XHRcdFx0XHRcdGlmIChcblx0XHRcdFx0XHRcdFx0KE51bWJlcihpbnB1dFN5bWJvbCkgPiAxICYmIHRoaXMubGVhZFplcm9EYXRlVGltZSkgfHxcblx0XHRcdFx0XHRcdFx0d2l0aG91dERheXMgfHxcblx0XHRcdFx0XHRcdFx0ZGF5MW1vbnRoSW5wdXQgfHxcblx0XHRcdFx0XHRcdFx0ZGF5Mm1vbnRoSW5wdXQgfHxcblx0XHRcdFx0XHRcdFx0ZGF5MW1vbnRoUGFzdGUgfHxcblx0XHRcdFx0XHRcdFx0ZGF5Mm1vbnRoUGFzdGVcblx0XHRcdFx0XHRcdCkge1xuXHRcdFx0XHRcdFx0XHRjdXJzb3IgKz0gMTtcblx0XHRcdFx0XHRcdFx0dGhpcy5fc2hpZnRTdGVwKG1hc2tFeHByZXNzaW9uLCBjdXJzb3IsIGlucHV0QXJyYXkubGVuZ3RoKTtcblx0XHRcdFx0XHRcdFx0aS0tO1xuXHRcdFx0XHRcdFx0XHRpZiAodGhpcy5sZWFkWmVyb0RhdGVUaW1lKSB7XG5cdFx0XHRcdFx0XHRcdFx0cmVzdWx0ICs9ICcwJztcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRjb250aW51ZTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0cmVzdWx0ICs9IGlucHV0U3ltYm9sO1xuXHRcdFx0XHRcdGN1cnNvcisrO1xuXHRcdFx0XHR9IGVsc2UgaWYgKHRoaXMubWFza1NwZWNpYWxDaGFyYWN0ZXJzLmluZGV4T2YobWFza0V4cHJlc3Npb25bY3Vyc29yXSEpICE9PSAtMSkge1xuXHRcdFx0XHRcdHJlc3VsdCArPSBtYXNrRXhwcmVzc2lvbltjdXJzb3JdO1xuXHRcdFx0XHRcdGN1cnNvcisrO1xuXHRcdFx0XHRcdHRoaXMuX3NoaWZ0U3RlcChtYXNrRXhwcmVzc2lvbiwgY3Vyc29yLCBpbnB1dEFycmF5Lmxlbmd0aCk7XG5cdFx0XHRcdFx0aS0tO1xuXHRcdFx0XHR9IGVsc2UgaWYgKFxuXHRcdFx0XHRcdHRoaXMubWFza1NwZWNpYWxDaGFyYWN0ZXJzLmluZGV4T2YoaW5wdXRTeW1ib2wpID4gLTEgJiZcblx0XHRcdFx0XHR0aGlzLm1hc2tBdmFpbGFibGVQYXR0ZXJuc1ttYXNrRXhwcmVzc2lvbltjdXJzb3JdIV0gJiZcblx0XHRcdFx0XHR0aGlzLm1hc2tBdmFpbGFibGVQYXR0ZXJuc1ttYXNrRXhwcmVzc2lvbltjdXJzb3JdIV0/Lm9wdGlvbmFsXG5cdFx0XHRcdCkge1xuXHRcdFx0XHRcdGlmIChcblx0XHRcdFx0XHRcdCEhaW5wdXRBcnJheVtjdXJzb3JdICYmXG5cdFx0XHRcdFx0XHRtYXNrRXhwcmVzc2lvbiAhPT0gJzA5OS4wOTkuMDk5LjA5OScgJiZcblx0XHRcdFx0XHRcdG1hc2tFeHByZXNzaW9uICE9PSAnMDAwLjAwMC4wMDAtMDAnICYmXG5cdFx0XHRcdFx0XHRtYXNrRXhwcmVzc2lvbiAhPT0gJzAwLjAwMC4wMDAvMDAwMC0wMCcgJiZcblx0XHRcdFx0XHRcdCFtYXNrRXhwcmVzc2lvbi5tYXRjaCgvXjkrXFwuMCskLylcblx0XHRcdFx0XHQpIHtcblx0XHRcdFx0XHRcdHJlc3VsdCArPSBpbnB1dEFycmF5W2N1cnNvcl07XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGN1cnNvcisrO1xuXHRcdFx0XHRcdGktLTtcblx0XHRcdFx0fSBlbHNlIGlmIChcblx0XHRcdFx0XHR0aGlzLm1hc2tFeHByZXNzaW9uW2N1cnNvciArIDFdID09PSAnKicgJiZcblx0XHRcdFx0XHR0aGlzLl9maW5kU3BlY2lhbENoYXIodGhpcy5tYXNrRXhwcmVzc2lvbltjdXJzb3IgKyAyXSEpICYmXG5cdFx0XHRcdFx0dGhpcy5fZmluZFNwZWNpYWxDaGFyKGlucHV0U3ltYm9sKSA9PT0gdGhpcy5tYXNrRXhwcmVzc2lvbltjdXJzb3IgKyAyXSAmJlxuXHRcdFx0XHRcdG11bHRpXG5cdFx0XHRcdCkge1xuXHRcdFx0XHRcdGN1cnNvciArPSAzO1xuXHRcdFx0XHRcdHJlc3VsdCArPSBpbnB1dFN5bWJvbDtcblx0XHRcdFx0fSBlbHNlIGlmIChcblx0XHRcdFx0XHR0aGlzLm1hc2tFeHByZXNzaW9uW2N1cnNvciArIDFdID09PSAnPycgJiZcblx0XHRcdFx0XHR0aGlzLl9maW5kU3BlY2lhbENoYXIodGhpcy5tYXNrRXhwcmVzc2lvbltjdXJzb3IgKyAyXSEpICYmXG5cdFx0XHRcdFx0dGhpcy5fZmluZFNwZWNpYWxDaGFyKGlucHV0U3ltYm9sKSA9PT0gdGhpcy5tYXNrRXhwcmVzc2lvbltjdXJzb3IgKyAyXSAmJlxuXHRcdFx0XHRcdG11bHRpXG5cdFx0XHRcdCkge1xuXHRcdFx0XHRcdGN1cnNvciArPSAzO1xuXHRcdFx0XHRcdHJlc3VsdCArPSBpbnB1dFN5bWJvbDtcblx0XHRcdFx0fSBlbHNlIGlmIChcblx0XHRcdFx0XHR0aGlzLnNob3dNYXNrVHlwZWQgJiZcblx0XHRcdFx0XHR0aGlzLm1hc2tTcGVjaWFsQ2hhcmFjdGVycy5pbmRleE9mKGlucHV0U3ltYm9sKSA8IDAgJiZcblx0XHRcdFx0XHRpbnB1dFN5bWJvbCAhPT0gdGhpcy5wbGFjZUhvbGRlckNoYXJhY3RlclxuXHRcdFx0XHQpIHtcblx0XHRcdFx0XHRzdGVwQmFjayA9IHRydWU7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0aWYgKFxuXHRcdFx0cmVzdWx0Lmxlbmd0aCArIDEgPT09IG1hc2tFeHByZXNzaW9uLmxlbmd0aCAmJlxuXHRcdFx0dGhpcy5tYXNrU3BlY2lhbENoYXJhY3RlcnMuaW5kZXhPZihtYXNrRXhwcmVzc2lvblttYXNrRXhwcmVzc2lvbi5sZW5ndGggLSAxXSEpICE9PSAtMVxuXHRcdCkge1xuXHRcdFx0cmVzdWx0ICs9IG1hc2tFeHByZXNzaW9uW21hc2tFeHByZXNzaW9uLmxlbmd0aCAtIDFdO1xuXHRcdH1cblxuXHRcdGxldCBuZXdQb3NpdGlvbjogbnVtYmVyID0gcG9zaXRpb24gKyAxO1xuXG5cdFx0d2hpbGUgKHRoaXMuX3NoaWZ0LmhhcyhuZXdQb3NpdGlvbikpIHtcblx0XHRcdHNoaWZ0Kys7XG5cdFx0XHRuZXdQb3NpdGlvbisrO1xuXHRcdH1cblxuXHRcdGxldCBhY3R1YWxTaGlmdDogbnVtYmVyID0ganVzdFBhc3RlZCA/IGN1cnNvciA6IHRoaXMuX3NoaWZ0Lmhhcyhwb3NpdGlvbikgPyBzaGlmdCA6IDA7XG5cdFx0aWYgKHN0ZXBCYWNrKSB7XG5cdFx0XHRhY3R1YWxTaGlmdC0tO1xuXHRcdH1cblxuXHRcdGNiKGFjdHVhbFNoaWZ0LCBiYWNrc3BhY2VTaGlmdCk7XG5cdFx0aWYgKHNoaWZ0IDwgMCkge1xuXHRcdFx0dGhpcy5fc2hpZnQuY2xlYXIoKTtcblx0XHR9XG5cdFx0bGV0IG9ubHlTcGVjaWFsID0gZmFsc2U7XG5cdFx0aWYgKGJhY2tzcGFjZWQpIHtcblx0XHRcdG9ubHlTcGVjaWFsID0gaW5wdXRBcnJheS5ldmVyeSgoY2hhcikgPT4gdGhpcy5tYXNrU3BlY2lhbENoYXJhY3RlcnMuaW5jbHVkZXMoY2hhcikpO1xuXHRcdH1cblx0XHRsZXQgcmVzID0gYCR7dGhpcy5wcmVmaXh9JHtvbmx5U3BlY2lhbCA/ICcnIDogcmVzdWx0fSR7dGhpcy5zdWZmaXh9YDtcblx0XHRpZiAocmVzdWx0Lmxlbmd0aCA9PT0gMCkge1xuXHRcdFx0cmVzID0gYCR7dGhpcy5wcmVmaXh9JHtyZXN1bHR9YDtcblx0XHR9XG5cdFx0cmV0dXJuIHJlcztcblx0fVxuXG5cdHB1YmxpYyBfZmluZFNwZWNpYWxDaGFyKGlucHV0U3ltYm9sOiBzdHJpbmcpOiB1bmRlZmluZWQgfCBzdHJpbmcge1xuXHRcdHJldHVybiB0aGlzLm1hc2tTcGVjaWFsQ2hhcmFjdGVycy5maW5kKCh2YWw6IHN0cmluZykgPT4gdmFsID09PSBpbnB1dFN5bWJvbCk7XG5cdH1cblxuXHRwcm90ZWN0ZWQgX2NoZWNrU3ltYm9sTWFzayhpbnB1dFN5bWJvbDogc3RyaW5nLCBtYXNrU3ltYm9sOiBzdHJpbmcpOiBib29sZWFuIHtcblx0XHR0aGlzLm1hc2tBdmFpbGFibGVQYXR0ZXJucyA9IHRoaXMuY3VzdG9tUGF0dGVyblxuXHRcdFx0PyB0aGlzLmN1c3RvbVBhdHRlcm5cblx0XHRcdDogdGhpcy5tYXNrQXZhaWxhYmxlUGF0dGVybnM7XG5cdFx0cmV0dXJuIChcblx0XHRcdHRoaXMubWFza0F2YWlsYWJsZVBhdHRlcm5zW21hc2tTeW1ib2xdISAmJlxuXHRcdFx0dGhpcy5tYXNrQXZhaWxhYmxlUGF0dGVybnNbbWFza1N5bWJvbF0hLnBhdHRlcm4gJiZcblx0XHRcdHRoaXMubWFza0F2YWlsYWJsZVBhdHRlcm5zW21hc2tTeW1ib2xdIS5wYXR0ZXJuLnRlc3QoaW5wdXRTeW1ib2wpXG5cdFx0KTtcblx0fVxuXG5cdHByaXZhdGUgX2Zvcm1hdFdpdGhTZXBhcmF0b3JzID0gKFxuXHRcdHN0cjogc3RyaW5nLFxuXHRcdHRob3VzYW5kU2VwYXJhdG9yQ2hhcjogc3RyaW5nLFxuXHRcdGRlY2ltYWxDaGFyczogc3RyaW5nIHwgc3RyaW5nW10sXG5cdFx0cHJlY2lzaW9uOiBudW1iZXIsXG5cdCkgPT4ge1xuXHRcdGxldCB4OiBzdHJpbmdbXSA9IFtdO1xuXHRcdGxldCBkZWNpbWFsQ2hhcjogc3RyaW5nID0gJyc7XG5cdFx0aWYgKEFycmF5LmlzQXJyYXkoZGVjaW1hbENoYXJzKSkge1xuXHRcdFx0Y29uc3QgcmVnRXhwID0gbmV3IFJlZ0V4cChcblx0XHRcdFx0ZGVjaW1hbENoYXJzLm1hcCgodikgPT4gKCdbXFxcXF4kLnw/KisoKScuaW5kZXhPZih2KSA+PSAwID8gYFxcXFwke3Z9YCA6IHYpKS5qb2luKCd8JyksXG5cdFx0XHQpO1xuXHRcdFx0eCA9IHN0ci5zcGxpdChyZWdFeHApO1xuXHRcdFx0ZGVjaW1hbENoYXIgPSBzdHIubWF0Y2gocmVnRXhwKT8uWzBdID8/ICcnO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR4ID0gc3RyLnNwbGl0KGRlY2ltYWxDaGFycyk7XG5cdFx0XHRkZWNpbWFsQ2hhciA9IGRlY2ltYWxDaGFycztcblx0XHR9XG5cdFx0Y29uc3QgZGVjaW1hbHM6IHN0cmluZyA9IHgubGVuZ3RoID4gMSA/IGAke2RlY2ltYWxDaGFyfSR7eFsxXX1gIDogJyc7XG5cdFx0bGV0IHJlczogc3RyaW5nID0geFswXSE7XG5cdFx0Y29uc3Qgc2VwYXJhdG9yTGltaXQ6IHN0cmluZyA9IHRoaXMuc2VwYXJhdG9yTGltaXQucmVwbGFjZSgvXFxzL2csICcnKTtcblx0XHRpZiAoc2VwYXJhdG9yTGltaXQgJiYgK3NlcGFyYXRvckxpbWl0KSB7XG5cdFx0XHRpZiAocmVzWzBdID09PSAnLScpIHtcblx0XHRcdFx0cmVzID0gYC0ke3Jlcy5zbGljZSgxLCByZXMubGVuZ3RoKS5zbGljZSgwLCBzZXBhcmF0b3JMaW1pdC5sZW5ndGgpfWA7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRyZXMgPSByZXMuc2xpY2UoMCwgc2VwYXJhdG9yTGltaXQubGVuZ3RoKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0Y29uc3Qgcmd4OiBSZWdFeHAgPSAvKFxcZCspKFxcZHszfSkvO1xuXG5cdFx0d2hpbGUgKHRob3VzYW5kU2VwYXJhdG9yQ2hhciAmJiByZ3gudGVzdChyZXMpKSB7XG5cdFx0XHRyZXMgPSByZXMucmVwbGFjZShyZ3gsICckMScgKyB0aG91c2FuZFNlcGFyYXRvckNoYXIgKyAnJDInKTtcblx0XHR9XG5cblx0XHRpZiAocHJlY2lzaW9uID09PSB1bmRlZmluZWQpIHtcblx0XHRcdHJldHVybiByZXMgKyBkZWNpbWFscztcblx0XHR9IGVsc2UgaWYgKHByZWNpc2lvbiA9PT0gMCkge1xuXHRcdFx0cmV0dXJuIHJlcztcblx0XHR9XG5cdFx0cmV0dXJuIHJlcyArIGRlY2ltYWxzLnN1YnN0cigwLCBwcmVjaXNpb24gKyAxKTtcblx0fTtcblxuXHRwcml2YXRlIHBlcmNlbnRhZ2UgPSAoc3RyOiBzdHJpbmcpOiBib29sZWFuID0+IHtcblx0XHRyZXR1cm4gTnVtYmVyKHN0cikgPj0gMCAmJiBOdW1iZXIoc3RyKSA8PSAxMDA7XG5cdH07XG5cblx0cHJpdmF0ZSBnZXRQcmVjaXNpb24gPSAobWFza0V4cHJlc3Npb246IHN0cmluZyk6IG51bWJlciA9PiB7XG5cdFx0Y29uc3QgeDogc3RyaW5nW10gPSBtYXNrRXhwcmVzc2lvbi5zcGxpdCgnLicpO1xuXHRcdGlmICh4Lmxlbmd0aCA+IDEpIHtcblx0XHRcdHJldHVybiBOdW1iZXIoeFt4Lmxlbmd0aCAtIDFdKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gSW5maW5pdHk7XG5cdH07XG5cblx0cHJpdmF0ZSBjaGVja0FuZFJlbW92ZVN1ZmZpeCA9IChpbnB1dFZhbHVlOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuXHRcdGZvciAobGV0IGkgPSB0aGlzLnN1ZmZpeD8ubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcblx0XHRcdGNvbnN0IHN1YnN0ciA9IHRoaXMuc3VmZml4LnN1YnN0cihpLCB0aGlzLnN1ZmZpeD8ubGVuZ3RoKTtcblx0XHRcdGlmIChcblx0XHRcdFx0aW5wdXRWYWx1ZS5pbmNsdWRlcyhzdWJzdHIpICYmXG5cdFx0XHRcdChpIC0gMSA8IDAgfHwgIWlucHV0VmFsdWUuaW5jbHVkZXModGhpcy5zdWZmaXguc3Vic3RyKGkgLSAxLCB0aGlzLnN1ZmZpeD8ubGVuZ3RoKSkpXG5cdFx0XHQpIHtcblx0XHRcdFx0cmV0dXJuIGlucHV0VmFsdWUucmVwbGFjZShzdWJzdHIsICcnKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIGlucHV0VmFsdWU7XG5cdH07XG5cblx0cHJpdmF0ZSBjaGVja0lucHV0UHJlY2lzaW9uID0gKFxuXHRcdGlucHV0VmFsdWU6IHN0cmluZyxcblx0XHRwcmVjaXNpb246IG51bWJlcixcblx0XHRkZWNpbWFsTWFya2VyOiBJQ29uZmlnWydkZWNpbWFsTWFya2VyJ10sXG5cdCk6IHN0cmluZyA9PiB7XG5cdFx0aWYgKHByZWNpc2lvbiA8IEluZmluaXR5KSB7XG5cdFx0XHQvLyBUT0RPIG5lZWQgdGhpbmsgYWJvdXQgZGVjaW1hbE1hcmtlclxuXHRcdFx0aWYgKEFycmF5LmlzQXJyYXkoZGVjaW1hbE1hcmtlcikpIHtcblx0XHRcdFx0Y29uc3QgbWFya2VyID0gZGVjaW1hbE1hcmtlci5maW5kKChkbSkgPT4gZG0gIT09IHRoaXMudGhvdXNhbmRTZXBhcmF0b3IpO1xuXHRcdFx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cblx0XHRcdFx0ZGVjaW1hbE1hcmtlciA9IG1hcmtlciA/IG1hcmtlciA6IGRlY2ltYWxNYXJrZXJbMF07XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBwcmVjaXNpb25SZWdFeDogUmVnRXhwID0gbmV3IFJlZ0V4cChcblx0XHRcdFx0dGhpcy5fY2hhclRvUmVnRXhwRXhwcmVzc2lvbihkZWNpbWFsTWFya2VyKSArIGBcXFxcZHske3ByZWNpc2lvbn19LiokYCxcblx0XHRcdCk7XG5cblx0XHRcdGNvbnN0IHByZWNpc2lvbk1hdGNoOiBSZWdFeHBNYXRjaEFycmF5IHwgbnVsbCA9IGlucHV0VmFsdWUubWF0Y2gocHJlY2lzaW9uUmVnRXgpO1xuXHRcdFx0aWYgKHByZWNpc2lvbk1hdGNoICYmIHByZWNpc2lvbk1hdGNoWzBdIS5sZW5ndGggLSAxID4gcHJlY2lzaW9uKSB7XG5cdFx0XHRcdGNvbnN0IGRpZmYgPSBwcmVjaXNpb25NYXRjaFswXSEubGVuZ3RoIC0gMSAtIHByZWNpc2lvbjtcblx0XHRcdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG5cdFx0XHRcdGlucHV0VmFsdWUgPSBpbnB1dFZhbHVlLnN1YnN0cmluZygwLCBpbnB1dFZhbHVlLmxlbmd0aCAtIGRpZmYpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKFxuXHRcdFx0XHRwcmVjaXNpb24gPT09IDAgJiZcblx0XHRcdFx0dGhpcy5fY29tcGFyZU9ySW5jbHVkZXMoXG5cdFx0XHRcdFx0aW5wdXRWYWx1ZVtpbnB1dFZhbHVlLmxlbmd0aCAtIDFdLFxuXHRcdFx0XHRcdGRlY2ltYWxNYXJrZXIsXG5cdFx0XHRcdFx0dGhpcy50aG91c2FuZFNlcGFyYXRvcixcblx0XHRcdFx0KVxuXHRcdFx0KSB7XG5cdFx0XHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuXHRcdFx0XHRpbnB1dFZhbHVlID0gaW5wdXRWYWx1ZS5zdWJzdHJpbmcoMCwgaW5wdXRWYWx1ZS5sZW5ndGggLSAxKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIGlucHV0VmFsdWU7XG5cdH07XG5cblx0cHJpdmF0ZSBfc3RyaXBUb0RlY2ltYWwoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuXHRcdHJldHVybiBzdHJcblx0XHRcdC5zcGxpdCgnJylcblx0XHRcdC5maWx0ZXIoKGk6IHN0cmluZywgaWR4OiBudW1iZXIpID0+IHtcblx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRpLm1hdGNoKCdeLT9cXFxcZCcpIHx8XG5cdFx0XHRcdFx0aS5tYXRjaCgnXFxcXHMnKSB8fFxuXHRcdFx0XHRcdGkgPT09ICcuJyB8fFxuXHRcdFx0XHRcdGkgPT09ICcsJyB8fFxuXHRcdFx0XHRcdChpID09PSAnLScgJiYgaWR4ID09PSAwICYmIHRoaXMuYWxsb3dOZWdhdGl2ZU51bWJlcnMpXG5cdFx0XHRcdCk7XG5cdFx0XHR9KVxuXHRcdFx0LmpvaW4oJycpO1xuXHR9XG5cblx0cHJpdmF0ZSBfY2hhclRvUmVnRXhwRXhwcmVzc2lvbihjaGFyOiBzdHJpbmcpOiBzdHJpbmcge1xuXHRcdC8vIGlmIChBcnJheS5pc0FycmF5KGNoYXIpKSB7XG5cdFx0Ly8gXHRyZXR1cm4gY2hhci5tYXAoKHYpID0+ICgnW1xcXFxeJC58PyorKCknLmluZGV4T2YodikgPj0gMCA/IGBcXFxcJHt2fWAgOiB2KSkuam9pbignfCcpO1xuXHRcdC8vIH1cblx0XHRpZiAoY2hhcikge1xuXHRcdFx0Y29uc3QgY2hhcnNUb0VzY2FwZSA9ICdbXFxcXF4kLnw/KisoKSc7XG5cdFx0XHRyZXR1cm4gY2hhciA9PT0gJyAnID8gJ1xcXFxzJyA6IGNoYXJzVG9Fc2NhcGUuaW5kZXhPZihjaGFyKSA+PSAwID8gYFxcXFwke2NoYXJ9YCA6IGNoYXI7XG5cdFx0fVxuXHRcdHJldHVybiBjaGFyO1xuXHR9XG5cblx0cHJpdmF0ZSBfc2hpZnRTdGVwKG1hc2tFeHByZXNzaW9uOiBzdHJpbmcsIGN1cnNvcjogbnVtYmVyLCBpbnB1dExlbmd0aDogbnVtYmVyKSB7XG5cdFx0Y29uc3Qgc2hpZnRTdGVwOiBudW1iZXIgPSAvWyo/XS9nLnRlc3QobWFza0V4cHJlc3Npb24uc2xpY2UoMCwgY3Vyc29yKSkgPyBpbnB1dExlbmd0aCA6IGN1cnNvcjtcblx0XHR0aGlzLl9zaGlmdC5hZGQoc2hpZnRTdGVwICsgdGhpcy5wcmVmaXgubGVuZ3RoIHx8IDApO1xuXHR9XG5cblx0cHJvdGVjdGVkIF9jb21wYXJlT3JJbmNsdWRlczxUPih2YWx1ZTogVCwgY29tcGFyZWRWYWx1ZTogVCB8IFRbXSwgZXhjbHVkZWRWYWx1ZTogVCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBBcnJheS5pc0FycmF5KGNvbXBhcmVkVmFsdWUpXG5cdFx0XHQ/IGNvbXBhcmVkVmFsdWUuZmlsdGVyKCh2KSA9PiB2ICE9PSBleGNsdWRlZFZhbHVlKS5pbmNsdWRlcyh2YWx1ZSlcblx0XHRcdDogdmFsdWUgPT09IGNvbXBhcmVkVmFsdWU7XG5cdH1cbn1cbiJdfQ==