obsidian-dev-utils 63.1.0 → 65.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (129) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/dist/dev/main.js +33 -27
  3. package/dist/lib/cjs/library.cjs +1 -1
  4. package/dist/lib/cjs/obsidian/attachment-path.cjs +2 -2
  5. package/dist/lib/cjs/obsidian/command-handlers/abstract-file-command-handler.cjs +11 -11
  6. package/dist/lib/cjs/obsidian/command-handlers/abstract-file-command-handler.d.cts +9 -9
  7. package/dist/lib/cjs/obsidian/command-handlers/command-handler.cjs +1 -1
  8. package/dist/lib/cjs/obsidian/command-handlers/command-handler.d.cts +2 -2
  9. package/dist/lib/cjs/obsidian/command-handlers/editor-command-handler.cjs +10 -10
  10. package/dist/lib/cjs/obsidian/command-handlers/editor-command-handler.d.cts +9 -9
  11. package/dist/lib/cjs/obsidian/command-handlers/file-command-handler.cjs +2 -1
  12. package/dist/lib/cjs/obsidian/command-handlers/file-command-handler.d.cts +2 -2
  13. package/dist/lib/cjs/obsidian/command-handlers/folder-command-handler.cjs +2 -1
  14. package/dist/lib/cjs/obsidian/command-handlers/folder-command-handler.d.cts +2 -2
  15. package/dist/lib/cjs/obsidian/command-handlers/global-command-handler.cjs +2 -1
  16. package/dist/lib/cjs/obsidian/command-handlers/global-command-handler.d.cts +2 -2
  17. package/dist/lib/cjs/obsidian/command-handlers/open-settings-command-handler.cjs +9 -6
  18. package/dist/lib/cjs/obsidian/command-handlers/open-settings-command-handler.d.cts +18 -4
  19. package/dist/lib/cjs/obsidian/components/setting-components/code-highlighter-component.cjs +2 -2
  20. package/dist/lib/cjs/obsidian/constructors/getDomEventsHandlersConstructor.cjs +1 -1
  21. package/dist/lib/cjs/obsidian/constructors/getDomEventsHandlersConstructor.d.cts +1 -1
  22. package/dist/lib/cjs/obsidian/file-change.cjs +2 -2
  23. package/dist/lib/cjs/obsidian/file-system.cjs +2 -2
  24. package/dist/lib/cjs/obsidian/frontmatter-link-cache-with-offsets.cjs +2 -2
  25. package/dist/lib/cjs/obsidian/link.cjs +2 -2
  26. package/dist/lib/cjs/obsidian/markdown-code-block-processor.cjs +1 -1
  27. package/dist/lib/cjs/obsidian/markdown.cjs +2 -2
  28. package/dist/lib/cjs/obsidian/metadata-cache.cjs +2 -2
  29. package/dist/lib/cjs/obsidian/metadata-cache.d.cts +1 -1
  30. package/dist/lib/cjs/obsidian/modals/confirm.cjs +1 -1
  31. package/dist/lib/cjs/obsidian/modals/confirm.d.cts +1 -1
  32. package/dist/lib/cjs/obsidian/plugin/components/plugin-settings-component.cjs +2 -2
  33. package/dist/lib/cjs/obsidian/plugin/components/plugin-settings-component.d.cts +1 -1
  34. package/dist/lib/cjs/obsidian/plugin/plugin-settings-tab.cjs +1 -1
  35. package/dist/lib/cjs/obsidian/plugin/plugin.cjs +1 -1
  36. package/dist/lib/cjs/obsidian/plugin/plugin.d.cts +4 -3
  37. package/dist/lib/cjs/obsidian/reference.cjs +2 -2
  38. package/dist/lib/cjs/obsidian/rename-delete-handler.cjs +2 -2
  39. package/dist/lib/cjs/obsidian/resource-url.cjs +2 -2
  40. package/dist/lib/cjs/obsidian/vault.cjs +2 -2
  41. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/obsidian-plugin-builder.cjs +1 -1
  42. package/dist/lib/cjs/script-utils/exec.cjs +1 -1
  43. package/dist/lib/cjs/script-utils/exec.d.cts +3 -3
  44. package/dist/lib/cjs/script-utils/formatters/dprint.cjs +1 -1
  45. package/dist/lib/cjs/script-utils/formatters/dprint.d.cts +2 -2
  46. package/dist/lib/cjs/script-utils/linters/cspell.cjs +1 -1
  47. package/dist/lib/cjs/script-utils/linters/cspell.d.cts +1 -1
  48. package/dist/lib/cjs/script-utils/linters/eslint-config.cjs +3 -1
  49. package/dist/lib/cjs/script-utils/linters/eslint-config.d.cts +2 -2
  50. package/dist/lib/cjs/script-utils/linters/eslint-rules/index.cjs +7 -1
  51. package/dist/lib/cjs/script-utils/linters/eslint-rules/index.d.cts +2 -0
  52. package/dist/lib/cjs/script-utils/linters/eslint-rules/obsidian-dev-utils-plugin.cjs +5 -1
  53. package/dist/lib/cjs/script-utils/linters/eslint-rules/params-options-name-match.cjs +277 -0
  54. package/dist/lib/cjs/script-utils/linters/eslint-rules/params-options-name-match.d.cts +19 -0
  55. package/dist/lib/cjs/script-utils/linters/eslint-rules/readonly-params-options-members.cjs +172 -0
  56. package/dist/lib/cjs/script-utils/linters/eslint-rules/readonly-params-options-members.d.cts +13 -0
  57. package/dist/lib/cjs/script-utils/linters/eslint-rules/require-super-call.cjs +29 -4
  58. package/dist/lib/cjs/script-utils/linters/eslint.cjs +1 -1
  59. package/dist/lib/cjs/script-utils/linters/eslint.d.cts +2 -2
  60. package/dist/lib/cjs/script-utils/linters/markdownlint.cjs +1 -1
  61. package/dist/lib/cjs/script-utils/linters/markdownlint.d.cts +2 -2
  62. package/dist/lib/cjs/script-utils/root.cjs +1 -1
  63. package/dist/lib/cjs/script-utils/test-runners/vitest.cjs +1 -1
  64. package/dist/lib/cjs/script-utils/test-runners/vitest.d.cts +2 -2
  65. package/dist/lib/esm/library.mjs +1 -1
  66. package/dist/lib/esm/obsidian/attachment-path.mjs +2 -2
  67. package/dist/lib/esm/obsidian/command-handlers/abstract-file-command-handler.d.mts +9 -9
  68. package/dist/lib/esm/obsidian/command-handlers/abstract-file-command-handler.mjs +11 -11
  69. package/dist/lib/esm/obsidian/command-handlers/command-handler.d.mts +2 -2
  70. package/dist/lib/esm/obsidian/command-handlers/command-handler.mjs +1 -1
  71. package/dist/lib/esm/obsidian/command-handlers/editor-command-handler.d.mts +9 -9
  72. package/dist/lib/esm/obsidian/command-handlers/editor-command-handler.mjs +10 -10
  73. package/dist/lib/esm/obsidian/command-handlers/file-command-handler.d.mts +2 -2
  74. package/dist/lib/esm/obsidian/command-handlers/file-command-handler.mjs +2 -1
  75. package/dist/lib/esm/obsidian/command-handlers/folder-command-handler.d.mts +2 -2
  76. package/dist/lib/esm/obsidian/command-handlers/folder-command-handler.mjs +2 -1
  77. package/dist/lib/esm/obsidian/command-handlers/global-command-handler.d.mts +2 -2
  78. package/dist/lib/esm/obsidian/command-handlers/global-command-handler.mjs +2 -1
  79. package/dist/lib/esm/obsidian/command-handlers/open-settings-command-handler.d.mts +18 -4
  80. package/dist/lib/esm/obsidian/command-handlers/open-settings-command-handler.mjs +9 -6
  81. package/dist/lib/esm/obsidian/components/setting-components/code-highlighter-component.mjs +2 -2
  82. package/dist/lib/esm/obsidian/constructors/getDomEventsHandlersConstructor.d.mts +1 -1
  83. package/dist/lib/esm/obsidian/constructors/getDomEventsHandlersConstructor.mjs +1 -1
  84. package/dist/lib/esm/obsidian/file-change.mjs +2 -2
  85. package/dist/lib/esm/obsidian/file-system.mjs +7 -7
  86. package/dist/lib/esm/obsidian/frontmatter-link-cache-with-offsets.mjs +2 -2
  87. package/dist/lib/esm/obsidian/link.mjs +2 -2
  88. package/dist/lib/esm/obsidian/markdown-code-block-processor.mjs +1 -1
  89. package/dist/lib/esm/obsidian/markdown.mjs +2 -2
  90. package/dist/lib/esm/obsidian/metadata-cache.d.mts +1 -1
  91. package/dist/lib/esm/obsidian/metadata-cache.mjs +2 -2
  92. package/dist/lib/esm/obsidian/modals/confirm.d.mts +1 -1
  93. package/dist/lib/esm/obsidian/modals/confirm.mjs +1 -1
  94. package/dist/lib/esm/obsidian/plugin/components/plugin-settings-component.d.mts +1 -1
  95. package/dist/lib/esm/obsidian/plugin/components/plugin-settings-component.mjs +2 -2
  96. package/dist/lib/esm/obsidian/plugin/plugin-settings-tab.mjs +1 -1
  97. package/dist/lib/esm/obsidian/plugin/plugin.d.mts +4 -3
  98. package/dist/lib/esm/obsidian/plugin/plugin.mjs +1 -1
  99. package/dist/lib/esm/obsidian/reference.mjs +2 -2
  100. package/dist/lib/esm/obsidian/rename-delete-handler.mjs +5 -5
  101. package/dist/lib/esm/obsidian/resource-url.mjs +2 -2
  102. package/dist/lib/esm/obsidian/vault.mjs +6 -6
  103. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/obsidian-plugin-builder.mjs +1 -1
  104. package/dist/lib/esm/script-utils/exec.d.mts +3 -3
  105. package/dist/lib/esm/script-utils/exec.mjs +1 -1
  106. package/dist/lib/esm/script-utils/formatters/dprint.d.mts +2 -2
  107. package/dist/lib/esm/script-utils/formatters/dprint.mjs +1 -1
  108. package/dist/lib/esm/script-utils/linters/cspell.d.mts +1 -1
  109. package/dist/lib/esm/script-utils/linters/cspell.mjs +1 -1
  110. package/dist/lib/esm/script-utils/linters/eslint-config.d.mts +2 -2
  111. package/dist/lib/esm/script-utils/linters/eslint-config.mjs +3 -1
  112. package/dist/lib/esm/script-utils/linters/eslint-rules/index.d.mts +2 -0
  113. package/dist/lib/esm/script-utils/linters/eslint-rules/index.mjs +5 -1
  114. package/dist/lib/esm/script-utils/linters/eslint-rules/obsidian-dev-utils-plugin.mjs +5 -1
  115. package/dist/lib/esm/script-utils/linters/eslint-rules/params-options-name-match.d.mts +19 -0
  116. package/dist/lib/esm/script-utils/linters/eslint-rules/params-options-name-match.mjs +168 -0
  117. package/dist/lib/esm/script-utils/linters/eslint-rules/readonly-params-options-members.d.mts +13 -0
  118. package/dist/lib/esm/script-utils/linters/eslint-rules/readonly-params-options-members.mjs +63 -0
  119. package/dist/lib/esm/script-utils/linters/eslint-rules/require-super-call.mjs +29 -4
  120. package/dist/lib/esm/script-utils/linters/eslint.d.mts +2 -2
  121. package/dist/lib/esm/script-utils/linters/eslint.mjs +1 -1
  122. package/dist/lib/esm/script-utils/linters/markdownlint.d.mts +2 -2
  123. package/dist/lib/esm/script-utils/linters/markdownlint.mjs +1 -1
  124. package/dist/lib/esm/script-utils/root.mjs +1 -1
  125. package/dist/lib/esm/script-utils/test-runners/vitest.d.mts +2 -2
  126. package/dist/lib/esm/script-utils/test-runners/vitest.mjs +1 -1
  127. package/package.json +11 -19
  128. package/script-utils/linters/eslint-rules/params-options-name-match/package.json +6 -0
  129. package/script-utils/linters/eslint-rules/readonly-params-options-members/package.json +6 -0
@@ -0,0 +1,168 @@
1
+ /*
2
+ THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
3
+ if you want to view the source, please visit the github repository of this plugin
4
+ */
5
+
6
+ (function initEsm() {
7
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
8
+ if (globalThis.process) {
9
+ return;
10
+ }
11
+
12
+ const browserProcess = {
13
+ browser: true,
14
+ cwd() {
15
+ return '/';
16
+ },
17
+ env: {},
18
+ platform: 'android'
19
+ };
20
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
21
+ globalThis.process = browserProcess;
22
+ })();
23
+
24
+ const PARAMS_OPTIONS_SUFFIX_PATTERN = /^(?<prefix>.+?)(?<suffix>Params|Options)$/;
25
+ const MESSAGE_ID = "paramsOptionsNameMatch";
26
+ const paramsOptionsNameMatch = {
27
+ create(context) {
28
+ return {
29
+ ":function[params.length>0]"(node) {
30
+ if (!isPublicOrExported(node)) {
31
+ return;
32
+ }
33
+ const fnNode = node;
34
+ const expectedPrefix = getExpectedPrefix(node);
35
+ if (!expectedPrefix) {
36
+ return;
37
+ }
38
+ for (const param of fnNode.params) {
39
+ const typeInfo = getTypeAnnotationInfo(param);
40
+ if (!typeInfo) {
41
+ continue;
42
+ }
43
+ const match = PARAMS_OPTIONS_SUFFIX_PATTERN.exec(typeInfo.name);
44
+ if (!match?.groups) {
45
+ continue;
46
+ }
47
+ const actualPrefix = match.groups["prefix"] ?? "";
48
+ const suffix = match.groups["suffix"] ?? "";
49
+ if (actualPrefix !== expectedPrefix) {
50
+ context.report({
51
+ data: {
52
+ actualName: typeInfo.name,
53
+ expectedName: `${expectedPrefix}${suffix}`
54
+ },
55
+ messageId: MESSAGE_ID,
56
+ node: typeInfo.node
57
+ });
58
+ }
59
+ }
60
+ }
61
+ };
62
+ function isPublicOrExported(node) {
63
+ const methodDef = node.parent;
64
+ if (methodDef?.type === "MethodDefinition") {
65
+ const accessibility = "accessibility" in methodDef ? methodDef.accessibility : void 0;
66
+ if (accessibility === "private") {
67
+ return false;
68
+ }
69
+ const classBody = methodDef.parent;
70
+ const classNode = classBody?.parent;
71
+ if (!classNode) {
72
+ return false;
73
+ }
74
+ const classParent = classNode.parent;
75
+ return classParent?.type === "ExportNamedDeclaration" || classParent?.type === "ExportDefaultDeclaration";
76
+ }
77
+ if (node.type === "FunctionDeclaration") {
78
+ const parentNode = node.parent;
79
+ return parentNode?.type === "ExportNamedDeclaration" || parentNode?.type === "ExportDefaultDeclaration";
80
+ }
81
+ if (node.parent?.type === "VariableDeclarator") {
82
+ const varDecl = node.parent.parent;
83
+ if (varDecl?.parent?.type === "ExportNamedDeclaration") {
84
+ return true;
85
+ }
86
+ }
87
+ return false;
88
+ }
89
+ function getExpectedPrefix(node) {
90
+ const methodPrefix = getMethodExpectedPrefix(node);
91
+ if (methodPrefix !== void 0) {
92
+ return methodPrefix;
93
+ }
94
+ return getFunctionExpectedPrefix(node);
95
+ }
96
+ function getMethodExpectedPrefix(node) {
97
+ const methodDef = node.parent;
98
+ if (methodDef?.type !== "MethodDefinition") {
99
+ return void 0;
100
+ }
101
+ if (!("key" in methodDef) || !methodDef.key || typeof methodDef.key !== "object" || !("name" in methodDef.key) || typeof methodDef.key.name !== "string") {
102
+ return void 0;
103
+ }
104
+ const methodName = methodDef.key.name;
105
+ const className = getClassName(methodDef);
106
+ if (!className) {
107
+ return void 0;
108
+ }
109
+ if (methodName === "constructor") {
110
+ return `${className}Constructor`;
111
+ }
112
+ return className + toPascalCase(methodName);
113
+ }
114
+ function getClassName(methodDef) {
115
+ const classBody = methodDef.parent;
116
+ const classNode = classBody?.parent;
117
+ if (!classNode || !("id" in classNode) || !classNode.id || typeof classNode.id !== "object" || !("name" in classNode.id) || typeof classNode.id.name !== "string") {
118
+ return void 0;
119
+ }
120
+ return classNode.id.name;
121
+ }
122
+ function getFunctionExpectedPrefix(node) {
123
+ if ("id" in node && node.id && typeof node.id === "object" && "name" in node.id && typeof node.id.name === "string") {
124
+ return toPascalCase(node.id.name);
125
+ }
126
+ if (node.parent?.type === "VariableDeclarator" && "id" in node.parent && node.parent.id && typeof node.parent.id === "object" && "name" in node.parent.id && typeof node.parent.id.name === "string") {
127
+ return toPascalCase(node.parent.id.name);
128
+ }
129
+ return void 0;
130
+ }
131
+ function getTypeAnnotationInfo(param) {
132
+ if (!("typeAnnotation" in param) || !param.typeAnnotation) {
133
+ return void 0;
134
+ }
135
+ const annotation = param.typeAnnotation;
136
+ const typeNode = annotation["typeAnnotation"];
137
+ if (!typeNode || typeof typeNode !== "object") {
138
+ return void 0;
139
+ }
140
+ const typeNodeObj = typeNode;
141
+ if (typeNodeObj["type"] === "TSTypeReference" && typeNodeObj["typeName"] && typeof typeNodeObj["typeName"] === "object") {
142
+ const typeName = typeNodeObj["typeName"];
143
+ if (typeName["type"] === "Identifier" && typeof typeName["name"] === "string") {
144
+ return { name: typeName["name"], node: typeNode };
145
+ }
146
+ }
147
+ return void 0;
148
+ }
149
+ function toPascalCase(name) {
150
+ return name.charAt(0).toUpperCase() + name.slice(1);
151
+ }
152
+ },
153
+ meta: {
154
+ docs: {
155
+ description: "Require `*Params`/`*Options` type names to match the function or constructor they belong to"
156
+ },
157
+ messages: {
158
+ [MESSAGE_ID]: 'Type "{{ actualName }}" does not match the expected name "{{ expectedName }}" for this function/constructor.'
159
+ },
160
+ schema: [],
161
+ type: "suggestion"
162
+ }
163
+ };
164
+ export {
165
+ MESSAGE_ID,
166
+ paramsOptionsNameMatch
167
+ };
168
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL3NjcmlwdC11dGlscy9saW50ZXJzL2VzbGludC1ydWxlcy9wYXJhbXMtb3B0aW9ucy1uYW1lLW1hdGNoLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogRVNMaW50IHJ1bGU6IHBhcmFtcy1vcHRpb25zLW5hbWUtbWF0Y2hcbiAqXG4gKiBFbnN1cmVzIHRoYXQgcGFyYW1ldGVyLWJhZyB0eXBlIG5hbWVzIG1hdGNoIHRoZSBmdW5jdGlvbiBvciBjb25zdHJ1Y3RvciB0aGV5XG4gKiBiZWxvbmcgdG86XG4gKlxuICogLSBgZm9vQmFyKHBhcmFtczogRm9vQmFyUGFyYW1zKWAgXHUyMDE0IFBhc2NhbENhc2Ugb2YgZnVuY3Rpb24gbmFtZSArIGBQYXJhbXNgXG4gKiAtIGBjbGFzcyBCYXogeyBjb25zdHJ1Y3RvcihwYXJhbXM6IEJhekNvbnN0cnVjdG9yUGFyYW1zKSB9YCBcdTIwMTQgQ2xhc3NOYW1lICsgYENvbnN0cnVjdG9yUGFyYW1zYFxuICogLSBgY2xhc3MgQmF6IHsgbWV0aG9kKHBhcmFtczogQmF6TWV0aG9kUGFyYW1zKSB9YCBcdTIwMTQgQ2xhc3NOYW1lICsgUGFzY2FsQ2FzZShtZXRob2ROYW1lKSArIGBQYXJhbXNgXG4gKlxuICogT25seSBjaGVja3MgcGFyYW1ldGVycyB3aG9zZSB0eXBlIGFubm90YXRpb24gbmFtZSBlbmRzIHdpdGggYFBhcmFtc2Agb3JcbiAqIGBPcHRpb25zYC4gT25seSBjaGVja3MgZXhwb3J0ZWQgZnVuY3Rpb25zIGFuZCBwdWJsaWMvcHJvdGVjdGVkIGNsYXNzIG1lbWJlcnNcbiAqIHRvIGF2b2lkIGZhbHNlIHBvc2l0aXZlcyBmcm9tIGludGVybmFsIG9wdGlvbnMtcGFzc3Rocm91Z2ggaGVscGVycy5cbiAqL1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5uZWNlc3NhcnktY29uZGl0aW9uIC0tIFJ1bGUuTm9kZSBwYXJlbnQvcHJvcGVydHkgdHlwZXMgYXJlIHdpZGVyIHRoYW4gd2hhdCB0aGUgdHlwZSBjaGVja2VyIGluZmVyczsgZGVmZW5zaXZlIGNoZWNrcyBhcmUgYXBwcm9wcmlhdGUgZm9yIEFTVCB0cmF2ZXJzYWwuICovXG5cbmltcG9ydCB0eXBlIHsgUnVsZSB9IGZyb20gJ2VzbGludCc7XG5cbmNvbnN0IFBBUkFNU19PUFRJT05TX1NVRkZJWF9QQVRURVJOID0gL14oPzxwcmVmaXg+Lis/KSg/PHN1ZmZpeD5QYXJhbXN8T3B0aW9ucykkLztcblxuZXhwb3J0IGNvbnN0IE1FU1NBR0VfSUQgPSAncGFyYW1zT3B0aW9uc05hbWVNYXRjaCc7XG5cbmludGVyZmFjZSBGdW5jdGlvbk5vZGVXaXRoUGFyYW1zIHtcbiAgcmVhZG9ubHkgcGFyYW1zOiBSdWxlLk5vZGVbXTtcbn1cblxuaW50ZXJmYWNlIFR5cGVBbm5vdGF0aW9uSW5mbyB7XG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgbm9kZTogUnVsZS5Ob2RlO1xufVxuXG5leHBvcnQgY29uc3QgcGFyYW1zT3B0aW9uc05hbWVNYXRjaDogUnVsZS5SdWxlTW9kdWxlID0ge1xuICBjcmVhdGUoY29udGV4dCkge1xuICAgIHJldHVybiB7XG4gICAgICAnOmZ1bmN0aW9uW3BhcmFtcy5sZW5ndGg+MF0nKG5vZGU6IFJ1bGUuTm9kZSk6IHZvaWQge1xuICAgICAgICBpZiAoIWlzUHVibGljT3JFeHBvcnRlZChub2RlKSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGZuTm9kZSA9IG5vZGUgYXMgRnVuY3Rpb25Ob2RlV2l0aFBhcmFtcyAmIFJ1bGUuTm9kZTtcbiAgICAgICAgY29uc3QgZXhwZWN0ZWRQcmVmaXggPSBnZXRFeHBlY3RlZFByZWZpeChub2RlKTtcbiAgICAgICAgaWYgKCFleHBlY3RlZFByZWZpeCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoY29uc3QgcGFyYW0gb2YgZm5Ob2RlLnBhcmFtcykge1xuICAgICAgICAgIGNvbnN0IHR5cGVJbmZvID0gZ2V0VHlwZUFubm90YXRpb25JbmZvKHBhcmFtKTtcbiAgICAgICAgICBpZiAoIXR5cGVJbmZvKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBtYXRjaCA9IFBBUkFNU19PUFRJT05TX1NVRkZJWF9QQVRURVJOLmV4ZWModHlwZUluZm8ubmFtZSk7XG4gICAgICAgICAgaWYgKCFtYXRjaD8uZ3JvdXBzKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvKiB2OCBpZ25vcmUgc3RhcnQgLS0gRGVmZW5zaXZlIGZhbGxiYWNrOiByZWdleCBuYW1lZCBncm91cHMgYWx3YXlzIGNhcHR1cmUgd2hlbiBtYXRjaCBzdWNjZWVkcy4gKi9cbiAgICAgICAgICBjb25zdCBhY3R1YWxQcmVmaXggPSBtYXRjaC5ncm91cHNbJ3ByZWZpeCddID8/ICcnO1xuICAgICAgICAgIGNvbnN0IHN1ZmZpeCA9IG1hdGNoLmdyb3Vwc1snc3VmZml4J10gPz8gJyc7XG4gICAgICAgICAgLyogdjggaWdub3JlIHN0b3AgKi9cblxuICAgICAgICAgIGlmIChhY3R1YWxQcmVmaXggIT09IGV4cGVjdGVkUHJlZml4KSB7XG4gICAgICAgICAgICBjb250ZXh0LnJlcG9ydCh7XG4gICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICBhY3R1YWxOYW1lOiB0eXBlSW5mby5uYW1lLFxuICAgICAgICAgICAgICAgIGV4cGVjdGVkTmFtZTogYCR7ZXhwZWN0ZWRQcmVmaXh9JHtzdWZmaXh9YFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBtZXNzYWdlSWQ6IE1FU1NBR0VfSUQsXG4gICAgICAgICAgICAgIG5vZGU6IHR5cGVJbmZvLm5vZGVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBpc1B1YmxpY09yRXhwb3J0ZWQobm9kZTogUnVsZS5Ob2RlKTogYm9vbGVhbiB7XG4gICAgICAvLyBDbGFzcyBtZXRob2Qgb3IgY29uc3RydWN0b3I6IGNoZWNrIGFjY2Vzc2liaWxpdHkgQU5EIHRoYXQgdGhlIGNsYXNzIGlzIGV4cG9ydGVkXG4gICAgICBjb25zdCBtZXRob2REZWYgPSBub2RlLnBhcmVudDtcbiAgICAgIGlmIChtZXRob2REZWY/LnR5cGUgPT09ICdNZXRob2REZWZpbml0aW9uJykge1xuICAgICAgICAvKiB2OCBpZ25vcmUgc3RhcnQgLS0gRGVmZW5zaXZlIGd1YXJkOiBUeXBlU2NyaXB0IHBhcnNlciBhbHdheXMgaW5jbHVkZXMgYWNjZXNzaWJpbGl0eSBvbiBNZXRob2REZWZpbml0aW9uLiAqL1xuICAgICAgICBjb25zdCBhY2Nlc3NpYmlsaXR5ID0gJ2FjY2Vzc2liaWxpdHknIGluIG1ldGhvZERlZiA/IG1ldGhvZERlZi5hY2Nlc3NpYmlsaXR5IDogdW5kZWZpbmVkO1xuICAgICAgICAvKiB2OCBpZ25vcmUgc3RvcCAqL1xuICAgICAgICBpZiAoYWNjZXNzaWJpbGl0eSA9PT0gJ3ByaXZhdGUnKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIC8vIENoZWNrIGlmIHRoZSBjbGFzcyBpdHNlbGYgaXMgZXhwb3J0ZWRcbiAgICAgICAgY29uc3QgY2xhc3NCb2R5ID0gbWV0aG9kRGVmLnBhcmVudDtcbiAgICAgICAgY29uc3QgY2xhc3NOb2RlID0gY2xhc3NCb2R5Py5wYXJlbnQ7XG4gICAgICAgIC8qIHY4IGlnbm9yZSBzdGFydCAtLSBEZWZlbnNpdmUgZ3VhcmQ6IEVTTGludCBBU1QgYWx3YXlzIGhhcyBwYXJlbnQgY2hhaW4gZm9yIGNsYXNzIG1ldGhvZHMuICovXG4gICAgICAgIGlmICghY2xhc3NOb2RlKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIC8qIHY4IGlnbm9yZSBzdG9wICovXG4gICAgICAgIGNvbnN0IGNsYXNzUGFyZW50ID0gY2xhc3NOb2RlLnBhcmVudDtcbiAgICAgICAgcmV0dXJuIGNsYXNzUGFyZW50Py50eXBlID09PSAnRXhwb3J0TmFtZWREZWNsYXJhdGlvbicgfHwgY2xhc3NQYXJlbnQ/LnR5cGUgPT09ICdFeHBvcnREZWZhdWx0RGVjbGFyYXRpb24nO1xuICAgICAgfVxuXG4gICAgICAvLyBUb3AtbGV2ZWwgZnVuY3Rpb246IGNoZWNrIGlmIGV4cG9ydGVkXG4gICAgICBpZiAobm9kZS50eXBlID09PSAnRnVuY3Rpb25EZWNsYXJhdGlvbicpIHtcbiAgICAgICAgY29uc3QgcGFyZW50Tm9kZSA9IG5vZGUucGFyZW50O1xuICAgICAgICByZXR1cm4gcGFyZW50Tm9kZT8udHlwZSA9PT0gJ0V4cG9ydE5hbWVkRGVjbGFyYXRpb24nIHx8IHBhcmVudE5vZGU/LnR5cGUgPT09ICdFeHBvcnREZWZhdWx0RGVjbGFyYXRpb24nO1xuICAgICAgfVxuXG4gICAgICAvLyBBcnJvdyBmdW5jdGlvbiBpbiB2YXJpYWJsZTogY2hlY2sgaWYgdGhlIHZhcmlhYmxlIGRlY2xhcmF0aW9uIGlzIGV4cG9ydGVkXG4gICAgICBpZiAobm9kZS5wYXJlbnQ/LnR5cGUgPT09ICdWYXJpYWJsZURlY2xhcmF0b3InKSB7XG4gICAgICAgIGNvbnN0IHZhckRlY2wgPSBub2RlLnBhcmVudC5wYXJlbnQ7XG4gICAgICAgIGlmICh2YXJEZWNsPy5wYXJlbnQ/LnR5cGUgPT09ICdFeHBvcnROYW1lZERlY2xhcmF0aW9uJykge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRFeHBlY3RlZFByZWZpeChub2RlOiBSdWxlLk5vZGUpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgICAgY29uc3QgbWV0aG9kUHJlZml4ID0gZ2V0TWV0aG9kRXhwZWN0ZWRQcmVmaXgobm9kZSk7XG4gICAgICBpZiAobWV0aG9kUHJlZml4ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIG1ldGhvZFByZWZpeDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGdldEZ1bmN0aW9uRXhwZWN0ZWRQcmVmaXgobm9kZSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0TWV0aG9kRXhwZWN0ZWRQcmVmaXgobm9kZTogUnVsZS5Ob2RlKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICAgIGNvbnN0IG1ldGhvZERlZiA9IG5vZGUucGFyZW50O1xuICAgICAgaWYgKG1ldGhvZERlZj8udHlwZSAhPT0gJ01ldGhvZERlZmluaXRpb24nKSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICB9XG5cbiAgICAgIC8qIHY4IGlnbm9yZSBzdGFydCAtLSBEZWZlbnNpdmUgZ3VhcmQ6IEVTTGludCBBU1QgTWV0aG9kRGVmaW5pdGlvbiBhbHdheXMgaGFzIGEgbmFtZWQga2V5LiAqL1xuICAgICAgaWYgKFxuICAgICAgICAhKCdrZXknIGluIG1ldGhvZERlZikgfHwgIW1ldGhvZERlZi5rZXkgfHwgdHlwZW9mIG1ldGhvZERlZi5rZXkgIT09ICdvYmplY3QnIHx8ICEoJ25hbWUnIGluIG1ldGhvZERlZi5rZXkpIHx8IHR5cGVvZiBtZXRob2REZWYua2V5Lm5hbWUgIT09ICdzdHJpbmcnXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIC8qIHY4IGlnbm9yZSBzdG9wICovXG5cbiAgICAgIGNvbnN0IG1ldGhvZE5hbWUgPSBtZXRob2REZWYua2V5Lm5hbWU7XG4gICAgICBjb25zdCBjbGFzc05hbWUgPSBnZXRDbGFzc05hbWUobWV0aG9kRGVmKTtcbiAgICAgIGlmICghY2xhc3NOYW1lKSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICB9XG5cbiAgICAgIGlmIChtZXRob2ROYW1lID09PSAnY29uc3RydWN0b3InKSB7XG4gICAgICAgIHJldHVybiBgJHtjbGFzc05hbWV9Q29uc3RydWN0b3JgO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY2xhc3NOYW1lICsgdG9QYXNjYWxDYXNlKG1ldGhvZE5hbWUpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldENsYXNzTmFtZShtZXRob2REZWY6IFJ1bGUuTm9kZSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgICBjb25zdCBjbGFzc0JvZHkgPSBtZXRob2REZWYucGFyZW50O1xuICAgICAgY29uc3QgY2xhc3NOb2RlID0gY2xhc3NCb2R5Py5wYXJlbnQ7XG4gICAgICBpZiAoXG4gICAgICAgICFjbGFzc05vZGUgfHwgISgnaWQnIGluIGNsYXNzTm9kZSkgfHwgIWNsYXNzTm9kZS5pZCB8fCB0eXBlb2YgY2xhc3NOb2RlLmlkICE9PSAnb2JqZWN0JyB8fCAhKCduYW1lJyBpbiBjbGFzc05vZGUuaWQpXG4gICAgICAgIHx8IHR5cGVvZiBjbGFzc05vZGUuaWQubmFtZSAhPT0gJ3N0cmluZydcbiAgICAgICkge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGNsYXNzTm9kZS5pZC5uYW1lO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldEZ1bmN0aW9uRXhwZWN0ZWRQcmVmaXgobm9kZTogUnVsZS5Ob2RlKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICAgIC8vIE5hbWVkIGZ1bmN0aW9uIGRlY2xhcmF0aW9uOiBmdW5jdGlvbiBmb29CYXIocGFyYW1zOiBGb29CYXJQYXJhbXMpXG4gICAgICBpZiAoJ2lkJyBpbiBub2RlICYmIG5vZGUuaWQgJiYgdHlwZW9mIG5vZGUuaWQgPT09ICdvYmplY3QnICYmICduYW1lJyBpbiBub2RlLmlkICYmIHR5cGVvZiBub2RlLmlkLm5hbWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiB0b1Bhc2NhbENhc2Uobm9kZS5pZC5uYW1lKTtcbiAgICAgIH1cblxuICAgICAgLy8gQXJyb3cgZnVuY3Rpb24gYXNzaWduZWQgdG8gYSB2YXJpYWJsZTogY29uc3QgZm9vQmFyID0gKHBhcmFtczogRm9vQmFyUGFyYW1zKSA9PiAuLi5cbiAgICAgIGlmIChcbiAgICAgICAgbm9kZS5wYXJlbnQ/LnR5cGUgPT09ICdWYXJpYWJsZURlY2xhcmF0b3InICYmICdpZCcgaW4gbm9kZS5wYXJlbnQgJiYgbm9kZS5wYXJlbnQuaWQgJiYgdHlwZW9mIG5vZGUucGFyZW50LmlkID09PSAnb2JqZWN0JyAmJiAnbmFtZScgaW4gbm9kZS5wYXJlbnQuaWRcbiAgICAgICAgJiYgdHlwZW9mIG5vZGUucGFyZW50LmlkLm5hbWUgPT09ICdzdHJpbmcnXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuIHRvUGFzY2FsQ2FzZShub2RlLnBhcmVudC5pZC5uYW1lKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRUeXBlQW5ub3RhdGlvbkluZm8ocGFyYW06IFJ1bGUuTm9kZSk6IFR5cGVBbm5vdGF0aW9uSW5mbyB8IHVuZGVmaW5lZCB7XG4gICAgICAvKiB2OCBpZ25vcmUgc3RhcnQgLS0gRGVmZW5zaXZlIGd1YXJkOiBUeXBlU2NyaXB0LXBhcnNlZCBwYXJhbXMgYWx3YXlzIGhhdmUgdHlwZUFubm90YXRpb24gd2hlbiB0eXBlZC4gKi9cbiAgICAgIGlmICghKCd0eXBlQW5ub3RhdGlvbicgaW4gcGFyYW0pIHx8ICFwYXJhbS50eXBlQW5ub3RhdGlvbikge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgLyogdjggaWdub3JlIHN0b3AgKi9cblxuICAgICAgY29uc3QgYW5ub3RhdGlvbiA9IHBhcmFtLnR5cGVBbm5vdGF0aW9uIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgICAgY29uc3QgdHlwZU5vZGUgPSBhbm5vdGF0aW9uWyd0eXBlQW5ub3RhdGlvbiddO1xuICAgICAgLyogdjggaWdub3JlIHN0YXJ0IC0tIERlZmVuc2l2ZSBndWFyZDogdGhlIFR5cGVTY3JpcHQgcGFyc2VyIGFsd2F5cyBwcm9kdWNlcyBhbiBBU1Qgbm9kZSBmb3IgdHlwZUFubm90YXRpb24uICovXG4gICAgICBpZiAoIXR5cGVOb2RlIHx8IHR5cGVvZiB0eXBlTm9kZSAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIC8qIHY4IGlnbm9yZSBzdG9wICovXG5cbiAgICAgIGNvbnN0IHR5cGVOb2RlT2JqID0gdHlwZU5vZGUgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG5cbiAgICAgIC8vIERpcmVjdCByZWZlcmVuY2U6IEZvb0JhclBhcmFtc1xuICAgICAgaWYgKHR5cGVOb2RlT2JqWyd0eXBlJ10gPT09ICdUU1R5cGVSZWZlcmVuY2UnICYmIHR5cGVOb2RlT2JqWyd0eXBlTmFtZSddICYmIHR5cGVvZiB0eXBlTm9kZU9ialsndHlwZU5hbWUnXSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgY29uc3QgdHlwZU5hbWUgPSB0eXBlTm9kZU9ialsndHlwZU5hbWUnXSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgICAgICAgLyogdjggaWdub3JlIHN0YXJ0IC0tIERlZmVuc2l2ZSBndWFyZDogVFNUeXBlUmVmZXJlbmNlIHR5cGVOYW1lIGlzIGFsd2F5cyBhbiBJZGVudGlmaWVyIHdpdGggYSBzdHJpbmcgbmFtZS4gKi9cbiAgICAgICAgaWYgKHR5cGVOYW1lWyd0eXBlJ10gPT09ICdJZGVudGlmaWVyJyAmJiB0eXBlb2YgdHlwZU5hbWVbJ25hbWUnXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAvKiB2OCBpZ25vcmUgc3RvcCAqL1xuICAgICAgICAgIHJldHVybiB7IG5hbWU6IHR5cGVOYW1lWyduYW1lJ10sIG5vZGU6IHR5cGVOb2RlIGFzIFJ1bGUuTm9kZSB9O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdG9QYXNjYWxDYXNlKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICByZXR1cm4gbmFtZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIG5hbWUuc2xpY2UoMSk7XG4gICAgfVxuICB9LFxuICBtZXRhOiB7XG4gICAgZG9jczoge1xuICAgICAgZGVzY3JpcHRpb246ICdSZXF1aXJlIGAqUGFyYW1zYC9gKk9wdGlvbnNgIHR5cGUgbmFtZXMgdG8gbWF0Y2ggdGhlIGZ1bmN0aW9uIG9yIGNvbnN0cnVjdG9yIHRoZXkgYmVsb25nIHRvJ1xuICAgIH0sXG4gICAgbWVzc2FnZXM6IHtcbiAgICAgIFtNRVNTQUdFX0lEXTogJ1R5cGUgXCJ7eyBhY3R1YWxOYW1lIH19XCIgZG9lcyBub3QgbWF0Y2ggdGhlIGV4cGVjdGVkIG5hbWUgXCJ7eyBleHBlY3RlZE5hbWUgfX1cIiBmb3IgdGhpcyBmdW5jdGlvbi9jb25zdHJ1Y3Rvci4nXG4gICAgfSxcbiAgICBzY2hlbWE6IFtdLFxuICAgIHR5cGU6ICdzdWdnZXN0aW9uJ1xuICB9XG59O1xuXG4vKiBlc2xpbnQtZW5hYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby11bm5lY2Vzc2FyeS1jb25kaXRpb24gLS0gUmUtZW5hYmxlIGFmdGVyIEFTVCB0cmF2ZXJzYWwgY29kZS4gKi9cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBcUJBLE1BQU0sZ0NBQWdDO0FBRS9CLE1BQU0sYUFBYTtBQVduQixNQUFNLHlCQUEwQztBQUFBLEVBQ3JELE9BQU8sU0FBUztBQUNkLFdBQU87QUFBQSxNQUNMLDZCQUE2QixNQUF1QjtBQUNsRCxZQUFJLENBQUMsbUJBQW1CLElBQUksR0FBRztBQUM3QjtBQUFBLFFBQ0Y7QUFFQSxjQUFNLFNBQVM7QUFDZixjQUFNLGlCQUFpQixrQkFBa0IsSUFBSTtBQUM3QyxZQUFJLENBQUMsZ0JBQWdCO0FB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QixNQUFxQztBQUV0RSxVQUFJLFFBQVEsUUFBUSxLQUFLLE1BQU0sT0FBTyxLQUFLLE9BQU8sWUFBWSxVQUFVLEtBQUssTUFBTSxPQUFPLEtBQUssR0FBRyxTQUFTLFVBQVU7QUFDbkgsZUFBTyxhQUFhLEtBQUssR0FBRyxJQUFJO0FBQUEsTUFDbEM7QUFHQSxVQUNFLEtBQUssUUFBUSxTQUFTLHdCQUF3QixRQUFRLEtBQUssVUFBVSxLQUFLLE9BQU8sTUFBTSxPQUFPLEtBQUssT0FBTyxPQUFPLFlBQVksVUFBVSxLQUFLLE9BQU8sTUFDaEosT0FBTyxLQUFLLE9BQU8sR0FBRyxTQUFTLFVBQ2xDO0FBQ0EsZUFBTyxhQUFhLEtBQUssT0FBTyxHQUFHLElBQUk7QUFBQSxNQUN6QztBQUVBLGFBQU87QUFBQSxJQUNUO0FBRUEsYUFBUyxzQkFBc0IsT0FBa0Q7QUFFL0UsVUFBSSxFQUFFLG9CQUFvQixVQUFVLENBQUMsTUFBTSxnQkFBZ0I7QUFDekQsZUFBTztBQUFBLE1BQ1Q7QUFHQSxZQUFNLGFBQWEsTUFBTTtBQUN6QixZQUFNLFdBQVcsV0FBVyxnQkFBZ0I7QUFFNUMsVUFBSSxDQUFDLFlBQVksT0FBTyxhQUFhLFVBQVU7QUFDN0MsZUFBTztBQUFBLE1BQ1Q7QUFHQSxZQUFNLGNBQWM7QUFHcEIsVUFBSSxZQUFZLE1BQU0sTUFBTSxxQkFBcUIsWUFBWSxVQUFVLEtBQUssT0FBTyxZQUFZLFVBQVUsTUFBTSxVQUFVO0FBQ3ZILGNBQU0sV0FBVyxZQUFZLFVBQVU7QUFFdkMsWUFBSSxTQUFTLE1BQU0sTUFBTSxnQkFBZ0IsT0FBTyxTQUFTLE1BQU0sTUFBTSxVQUFVO0FBRTdFLGlCQUFPLEVBQUUsTUFBTSxTQUFTLE1BQU0sR0FBRyxNQUFNLFNBQXNCO0FBQUEsUUFDL0Q7QUFBQSxNQUNGO0FBRUEsYUFBTztBQUFBLElBQ1Q7QUFFQSxhQUFTLGFBQWEsTUFBc0I7QUFDMUMsYUFBTyxLQUFLLE9BQU8sQ0FBQyxFQUFFLFlBQVksSUFBSSxLQUFLLE1BQU0sQ0FBQztBQUFBLElBQ3BEO0FBQUEsRUFDRjtBQUFBLEVBQ0EsTUFBTTtBQUFBLElBQ0osTUFBTTtBQUFBLE1BQ0osYUFBYTtBQUFBLElBQ2Y7QUFBQSxJQUNBLFVBQVU7QUFBQSxNQUNSLENBQUMsVUFBVSxHQUFHO0FBQUEsSUFDaEI7QUFBQSxJQUNBLFFBQVEsQ0FBQztBQUFBLElBQ1QsTUFBTTtBQUFBLEVBQ1I7QUFDRjsiLAogICJuYW1lcyI6IFtdCn0K
@@ -0,0 +1,13 @@
1
+ /**
2
+ * @file
3
+ *
4
+ * ESLint rule: readonly-params-options-members
5
+ *
6
+ * Reports an error when an interface or type alias whose name ends with
7
+ * `Params` or `Options` has a property signature that is not `readonly`.
8
+ * Parameter/options bags should be immutable — callers should never mutate
9
+ * the object they received.
10
+ */
11
+ import type { Rule } from 'eslint';
12
+ export declare const MESSAGE_ID = "readonlyParamsOptionsMembers";
13
+ export declare const readonlyParamsOptionsMembers: Rule.RuleModule;
@@ -0,0 +1,63 @@
1
+ /*
2
+ THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
3
+ if you want to view the source, please visit the github repository of this plugin
4
+ */
5
+
6
+ (function initEsm() {
7
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
8
+ if (globalThis.process) {
9
+ return;
10
+ }
11
+
12
+ const browserProcess = {
13
+ browser: true,
14
+ cwd() {
15
+ return '/';
16
+ },
17
+ env: {},
18
+ platform: 'android'
19
+ };
20
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
21
+ globalThis.process = browserProcess;
22
+ })();
23
+
24
+ import { ensureNonNullable } from "../../../type-guards.mjs";
25
+ const MESSAGE_ID = "readonlyParamsOptionsMembers";
26
+ const readonlyParamsOptionsMembers = {
27
+ create(context) {
28
+ return {
29
+ "TSInterfaceDeclaration[id.name=/(?:Params|Options)$/] TSPropertySignature[readonly=false]"(node) {
30
+ reportNonReadonly(context, node);
31
+ },
32
+ "TSTypeAliasDeclaration[id.name=/(?:Params|Options)$/] TSPropertySignature[readonly=false]"(node) {
33
+ reportNonReadonly(context, node);
34
+ }
35
+ };
36
+ function reportNonReadonly(ctx, node) {
37
+ const propertyNode = node;
38
+ ctx.report({
39
+ fix(fixer) {
40
+ return fixer.insertTextBefore(ensureNonNullable(propertyNode.key), "readonly ");
41
+ },
42
+ messageId: MESSAGE_ID,
43
+ node
44
+ });
45
+ }
46
+ },
47
+ meta: {
48
+ docs: {
49
+ description: "Require all properties in `*Params` and `*Options` interfaces to be `readonly`"
50
+ },
51
+ fixable: "code",
52
+ messages: {
53
+ [MESSAGE_ID]: "Property must be `readonly`. Params/Options interfaces should be immutable."
54
+ },
55
+ schema: [],
56
+ type: "suggestion"
57
+ }
58
+ };
59
+ export {
60
+ MESSAGE_ID,
61
+ readonlyParamsOptionsMembers
62
+ };
63
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL3NjcmlwdC11dGlscy9saW50ZXJzL2VzbGludC1ydWxlcy9yZWFkb25seS1wYXJhbXMtb3B0aW9ucy1tZW1iZXJzLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogRVNMaW50IHJ1bGU6IHJlYWRvbmx5LXBhcmFtcy1vcHRpb25zLW1lbWJlcnNcbiAqXG4gKiBSZXBvcnRzIGFuIGVycm9yIHdoZW4gYW4gaW50ZXJmYWNlIG9yIHR5cGUgYWxpYXMgd2hvc2UgbmFtZSBlbmRzIHdpdGhcbiAqIGBQYXJhbXNgIG9yIGBPcHRpb25zYCBoYXMgYSBwcm9wZXJ0eSBzaWduYXR1cmUgdGhhdCBpcyBub3QgYHJlYWRvbmx5YC5cbiAqIFBhcmFtZXRlci9vcHRpb25zIGJhZ3Mgc2hvdWxkIGJlIGltbXV0YWJsZSBcdTIwMTQgY2FsbGVycyBzaG91bGQgbmV2ZXIgbXV0YXRlXG4gKiB0aGUgb2JqZWN0IHRoZXkgcmVjZWl2ZWQuXG4gKi9cbmltcG9ydCB0eXBlIHsgUnVsZSB9IGZyb20gJ2VzbGludCc7XG5cbmltcG9ydCB7IGVuc3VyZU5vbk51bGxhYmxlIH0gZnJvbSAnLi4vLi4vLi4vdHlwZS1ndWFyZHMudHMnO1xuXG5leHBvcnQgY29uc3QgTUVTU0FHRV9JRCA9ICdyZWFkb25seVBhcmFtc09wdGlvbnNNZW1iZXJzJztcblxuaW50ZXJmYWNlIFByb3BlcnR5U2lnbmF0dXJlTm9kZSB7XG4gIHJlYWRvbmx5IGtleTogUnVsZS5Ob2RlO1xufVxuXG5leHBvcnQgY29uc3QgcmVhZG9ubHlQYXJhbXNPcHRpb25zTWVtYmVyczogUnVsZS5SdWxlTW9kdWxlID0ge1xuICBjcmVhdGUoY29udGV4dCkge1xuICAgIHJldHVybiB7XG4gICAgICAnVFNJbnRlcmZhY2VEZWNsYXJhdGlvbltpZC5uYW1lPS8oPzpQYXJhbXN8T3B0aW9ucykkL10gVFNQcm9wZXJ0eVNpZ25hdHVyZVtyZWFkb25seT1mYWxzZV0nKG5vZGU6IFJ1bGUuTm9kZSk6IHZvaWQge1xuICAgICAgICByZXBvcnROb25SZWFkb25seShjb250ZXh0LCBub2RlKTtcbiAgICAgIH0sXG4gICAgICAnVFNUeXBlQWxpYXNEZWNsYXJhdGlvbltpZC5uYW1lPS8oPzpQYXJhbXN8T3B0aW9ucykkL10gVFNQcm9wZXJ0eVNpZ25hdHVyZVtyZWFkb25seT1mYWxzZV0nKG5vZGU6IFJ1bGUuTm9kZSk6IHZvaWQge1xuICAgICAgICByZXBvcnROb25SZWFkb25seShjb250ZXh0LCBub2RlKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gcmVwb3J0Tm9uUmVhZG9ubHkoY3R4OiBSdWxlLlJ1bGVDb250ZXh0LCBub2RlOiBSdWxlLk5vZGUpOiB2b2lkIHtcbiAgICAgIGNvbnN0IHByb3BlcnR5Tm9kZSA9IG5vZGUgYXMgUGFydGlhbDxQcm9wZXJ0eVNpZ25hdHVyZU5vZGU+O1xuICAgICAgY3R4LnJlcG9ydCh7XG4gICAgICAgIGZpeChmaXhlcikge1xuICAgICAgICAgIHJldHVybiBmaXhlci5pbnNlcnRUZXh0QmVmb3JlKGVuc3VyZU5vbk51bGxhYmxlKHByb3BlcnR5Tm9kZS5rZXkpLCAncmVhZG9ubHkgJyk7XG4gICAgICAgIH0sXG4gICAgICAgIG1lc3NhZ2VJZDogTUVTU0FHRV9JRCxcbiAgICAgICAgbm9kZVxuICAgICAgfSk7XG4gICAgfVxuICB9LFxuICBtZXRhOiB7XG4gICAgZG9jczoge1xuICAgICAgZGVzY3JpcHRpb246ICdSZXF1aXJlIGFsbCBwcm9wZXJ0aWVzIGluIGAqUGFyYW1zYCBhbmQgYCpPcHRpb25zYCBpbnRlcmZhY2VzIHRvIGJlIGByZWFkb25seWAnXG4gICAgfSxcbiAgICBmaXhhYmxlOiAnY29kZScsXG4gICAgbWVzc2FnZXM6IHtcbiAgICAgIFtNRVNTQUdFX0lEXTogJ1Byb3BlcnR5IG11c3QgYmUgYHJlYWRvbmx5YC4gUGFyYW1zL09wdGlvbnMgaW50ZXJmYWNlcyBzaG91bGQgYmUgaW1tdXRhYmxlLidcbiAgICB9LFxuICAgIHNjaGVtYTogW10sXG4gICAgdHlwZTogJ3N1Z2dlc3Rpb24nXG4gIH1cbn07XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVlBLFNBQVMseUJBQXlCO0FBRTNCLE1BQU0sYUFBYTtBQU1uQixNQUFNLCtCQUFnRDtBQUFBLEVBQzNELE9BQU8sU0FBUztBQUNkLFdBQU87QUFBQSxNQUNMLDRGQUE0RixNQUF1QjtBQUNqSCwwQkFBa0IsU0FBUyxJQUFJO0FBQUEsTUFDakM7QUFBQSxNQUNBLDRGQUE0RixNQUF1QjtBQUNqSCwwQkFBa0IsU0FBUyxJQUFJO0FBQUEsTUFDakM7QUFBQSxJQUNGO0FBRUEsYUFBUyxrQkFBa0IsS0FBdUIsTUFBdUI7QUFDdkUsWUFBTSxlQUFlO0FBQ3JCLFVBQUksT0FBTztBQUFBLFFBQ1QsSUFBSSxPQUFPO0FBQ1QsaUJBQU8sTUFBTSxpQkFBaUIsa0JBQWtCLGFBQWEsR0FBRyxHQUFHLFdBQVc7QUFBQSxRQUNoRjtBQUFBLFFBQ0EsV0FBVztBQUFBLFFBQ1g7QUFBQSxNQUNGLENBQUM7QUFBQSxJQUNIO0FBQUEsRUFDRjtBQUFBLEVBQ0EsTUFBTTtBQUFBLElBQ0osTUFBTTtBQUFBLE1BQ0osYUFBYTtBQUFBLElBQ2Y7QUFBQSxJQUNBLFNBQVM7QUFBQSxJQUNULFVBQVU7QUFBQSxNQUNSLENBQUMsVUFBVSxHQUFHO0FBQUEsSUFDaEI7QUFBQSxJQUNBLFFBQVEsQ0FBQztBQUFBLElBQ1QsTUFBTTtBQUFBLEVBQ1I7QUFDRjsiLAogICJuYW1lcyI6IFtdCn0K
@@ -34,9 +34,19 @@ const requireSuperCall = {
34
34
  const checker = services.program.getTypeChecker();
35
35
  const methodStack = [];
36
36
  return {
37
+ "AssignmentExpression"(node) {
38
+ const current = methodStack[methodStack.length - 1];
39
+ if (current?.kind !== "set") {
40
+ return;
41
+ }
42
+ const assignNode = node;
43
+ if (checkIsSuperPropertyAccess(assignNode.left, current.methodName)) {
44
+ current.hasSuperCall = true;
45
+ }
46
+ },
37
47
  "CallExpression"(node) {
38
48
  const current = methodStack[methodStack.length - 1];
39
- if (!current) {
49
+ if (current?.kind !== "method") {
40
50
  return;
41
51
  }
42
52
  const callNode = node;
@@ -44,6 +54,16 @@ const requireSuperCall = {
44
54
  current.hasSuperCall = true;
45
55
  }
46
56
  },
57
+ "MemberExpression"(node) {
58
+ const current = methodStack[methodStack.length - 1];
59
+ if (current?.kind !== "get") {
60
+ return;
61
+ }
62
+ const memberNode = node;
63
+ if (checkIsSuperPropertyAccess(memberNode, current.methodName)) {
64
+ current.hasSuperCall = true;
65
+ }
66
+ },
47
67
  "MethodDefinition"(node) {
48
68
  const methodNode = node;
49
69
  if (!methodNode.override) {
@@ -52,8 +72,10 @@ const requireSuperCall = {
52
72
  if (methodNode.key.type !== "Identifier") {
53
73
  return;
54
74
  }
75
+ const kind = methodNode.kind === "get" || methodNode.kind === "set" ? methodNode.kind : "method";
55
76
  methodStack.push({
56
77
  hasSuperCall: false,
78
+ kind,
57
79
  methodName: methodNode.key.name,
58
80
  node: methodNode,
59
81
  reportNode: node
@@ -72,7 +94,7 @@ const requireSuperCall = {
72
94
  return;
73
95
  }
74
96
  context.report({
75
- data: { methodName: info.methodName },
97
+ data: { kind: info.kind, methodName: info.methodName },
76
98
  messageId: MESSAGE_ID,
77
99
  node: info.reportNode
78
100
  });
@@ -84,7 +106,7 @@ const requireSuperCall = {
84
106
  description: "Require `override` methods to call `super.methodName()`"
85
107
  },
86
108
  messages: {
87
- [MESSAGE_ID]: "Override method `{{ methodName }}` must call `super.{{ methodName }}()`."
109
+ [MESSAGE_ID]: "Override {{ kind }} `{{ methodName }}` must access `super.{{ methodName }}`."
88
110
  },
89
111
  schema: [],
90
112
  type: "problem"
@@ -124,8 +146,11 @@ function checkIsSuperMethodCall(node, methodName) {
124
146
  const callee = node.callee;
125
147
  return callee.type === "MemberExpression" && callee.object.type === "Super" && callee.property.type === "Identifier" && callee.property.name === methodName;
126
148
  }
149
+ function checkIsSuperPropertyAccess(node, propertyName) {
150
+ return node.type === "MemberExpression" && node.object.type === "Super" && node.property.type === "Identifier" && node.property.name === propertyName;
151
+ }
127
152
  export {
128
153
  MESSAGE_ID,
129
154
  requireSuperCall
130
155
  };
131
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL3NjcmlwdC11dGlscy9saW50ZXJzL2VzbGludC1ydWxlcy9yZXF1aXJlLXN1cGVyLWNhbGwudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBFU0xpbnQgcnVsZTogcmVxdWlyZS1zdXBlci1jYWxsXG4gKlxuICogUmVwb3J0cyBhbiBlcnJvciB3aGVuIGFuIGBvdmVycmlkZWAgbWV0aG9kIGRvZXMgbm90IGNhbGwgYHN1cGVyLm1ldGhvZE5hbWUoKWBcbiAqIGFueXdoZXJlIGluIGl0cyBib2R5LiBPdmVycmlkaW5nIGEgbWV0aG9kIHdpdGhvdXQgY2FsbGluZyBgc3VwZXJgIGlzIGFsbW9zdFxuICogYWx3YXlzIGEgbWlzdGFrZSB0aGF0IHNpbGVudGx5IGJyZWFrcyBwYXJlbnQtY2xhc3MgYmVoYXZpb3IgKGxpZmVjeWNsZSBob29rcyxcbiAqIGluaXRpYWxpemF0aW9uLCBldmVudCB3aXJpbmcsIGV0Yy4pLlxuICpcbiAqIFRoZSBzdXBlciBjYWxsIGNhbiBhcHBlYXIgYW55d2hlcmUgaW4gdGhlIG1ldGhvZCBib2R5IFx1MjAxNCBhcyBhIHN0YW5kYWxvbmVcbiAqIHN0YXRlbWVudCwgYXdhaXRlZCwgYXNzaWduZWQgdG8gYSB2YXJpYWJsZSwgb3IgbmVzdGVkIGluIGFueSBleHByZXNzaW9uLlxuICpcbiAqIFRoZSBydWxlIGF1dG9tYXRpY2FsbHkgc2tpcHMgbWV0aG9kcyB3aGVyZSB0aGUgcGFyZW50IGltcGxlbWVudGF0aW9uIGlzXG4gKiBgYWJzdHJhY3RgLCBzaW5jZSB0aGVyZSBpcyBubyBjb25jcmV0ZSBgc3VwZXJgIHRvIGNhbGwuXG4gKlxuICogSWYgdGhlIG92ZXJyaWRlIGludGVudGlvbmFsbHkgcmVwbGFjZXMgdGhlIHBhcmVudCBpbXBsZW1lbnRhdGlvbiwgZGlzYWJsZSB0aGVcbiAqIHJ1bGUgb24gdGhhdCBsaW5lIHdpdGggYW4gZXhwbGFuYXRvcnkgY29tbWVudC5cbiAqL1xuaW1wb3J0IHR5cGUge1xuICBQYXJzZXJTZXJ2aWNlc1dpdGhUeXBlSW5mb3JtYXRpb24sXG4gIFRTRVNUcmVlXG59IGZyb20gJ0B0eXBlc2NyaXB0LWVzbGludC91dGlscyc7XG5pbXBvcnQgdHlwZSB7IFJ1bGUgfSBmcm9tICdlc2xpbnQnO1xuaW1wb3J0IHR5cGUge1xuICBEZWNsYXJhdGlvbixcbiAgVHlwZUNoZWNrZXJcbn0gZnJvbSAndHlwZXNjcmlwdCc7XG5cbmltcG9ydCB7XG4gIGNhbkhhdmVNb2RpZmllcnMsXG4gIGdldE1vZGlmaWVycyxcbiAgU3ludGF4S2luZFxufSBmcm9tICd0eXBlc2NyaXB0JztcblxuaW1wb3J0IHsgYXNzZXJ0IH0gZnJvbSAnLi4vLi4vLi4vdHlwZS1ndWFyZHMudHMnO1xuXG5leHBvcnQgY29uc3QgTUVTU0FHRV9JRCA9ICdyZXF1aXJlU3VwZXJDYWxsJztcblxuaW50ZXJmYWNlIE92ZXJyaWRlTWV0aG9kSW5mbyB7XG4gIGhhc1N1cGVyQ2FsbDogYm9vbGVhbjtcbiAgbWV0aG9kTmFtZTogc3RyaW5nO1xuICBub2RlOiBUU0VTVHJlZS5NZXRob2REZWZpbml0aW9uO1xuICByZXBvcnROb2RlOiBSdWxlLk5vZGU7XG59XG5cbmV4cG9ydCBjb25zdCByZXF1aXJlU3VwZXJDYWxsOiBSdWxlLlJ1bGVNb2R1bGUgPSB7XG4gIGNyZWF0ZShjb250ZXh0KSB7XG4gICAgY29uc3Qgc2VydmljZXMgPSBjb250ZXh0LnNvdXJjZUNvZGUucGFyc2VyU2VydmljZXMgYXMgUGFyc2VyU2VydmljZXNXaXRoVHlwZUluZm9ybWF0aW9uO1xuICAgIGNvbnN0IGNoZWNrZXIgPSBzZXJ2aWNlcy5wcm9ncmFtLmdldFR5cGVDaGVja2VyKCk7XG4gICAgY29uc3QgbWV0aG9kU3RhY2s6IE92ZXJyaWRlTWV0aG9kSW5mb1tdID0gW107XG5cbiAgICByZXR1cm4ge1xuICAgICAgJ0NhbGxFeHByZXNzaW9uJyhub2RlOiBSdWxlLk5vZGUpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY3VycmVudCA9IG1ldGhvZFN0YWNrW21ldGhvZFN0YWNrLmxlbmd0aCAtIDFdO1xuICAgICAgICBpZiAoIWN1cnJlbnQpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjYWxsTm9kZSA9IG5vZGUgYXMgVFNFU1RyZWUuQ2FsbEV4cHJlc3Npb247XG4gICAgICAgIGlmIChjaGVja0lzU3VwZXJNZXRob2RDYWxsKGNhbGxOb2RlLCBjdXJyZW50Lm1ldGhvZE5hbWUpKSB7XG4gICAgICAgICAgY3VycmVudC5oYXNTdXBlckNhbGwgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgJ01ldGhvZERlZmluaXRpb24nKG5vZGU6IFJ1bGUuTm9kZSk6IHZvaWQge1xuICAgICAgICBjb25zdCBtZXRob2ROb2RlID0gbm9kZSBhcyBUU0VTVHJlZS5NZXRob2REZWZpbml0aW9uO1xuXG4gICAgICAgIGlmICghbWV0aG9kTm9kZS5vdmVycmlkZSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLWVudW0tY29tcGFyaXNvbiAtLSBBU1Qgbm9kZSB0eXBlIHN0cmluZyBsaXRlcmFscyBtYXRjaCB0aGUgVFNFU1RyZWUgZW51bSB2YWx1ZXMuXG4gICAgICAgIGlmIChtZXRob2ROb2RlLmtleS50eXBlICE9PSAnSWRlbnRpZmllcicpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBtZXRob2RTdGFjay5wdXNoKHtcbiAgICAgICAgICBoYXNTdXBlckNhbGw6IGZhbHNlLFxuICAgICAgICAgIG1ldGhvZE5hbWU6IG1ldGhvZE5vZGUua2V5Lm5hbWUsXG4gICAgICAgICAgbm9kZTogbWV0aG9kTm9kZSxcbiAgICAgICAgICByZXBvcnROb2RlOiBub2RlXG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICAgICdNZXRob2REZWZpbml0aW9uOmV4aXQnKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBpbmZvID0gbWV0aG9kU3RhY2tbbWV0aG9kU3RhY2subGVuZ3RoIC0gMV07XG4gICAgICAgIGlmICghaW5mbykge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIG1ldGhvZFN0YWNrLnBvcCgpO1xuXG4gICAgICAgIGlmIChpbmZvLmhhc1N1cGVyQ2FsbCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjaGVja0lzUGFyZW50TWV0aG9kQWJzdHJhY3Qoc2VydmljZXMsIGNoZWNrZXIsIGluZm8ubm9kZSwgaW5mby5tZXRob2ROYW1lKSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnRleHQucmVwb3J0KHtcbiAgICAgICAgICBkYXRhOiB7IG1ldGhvZE5hbWU6IGluZm8ubWV0aG9kTmFtZSB9LFxuICAgICAgICAgIG1lc3NhZ2VJZDogTUVTU0FHRV9JRCxcbiAgICAgICAgICBub2RlOiBpbmZvLnJlcG9ydE5vZGVcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfTtcbiAgfSxcbiAgbWV0YToge1xuICAgIGRvY3M6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnUmVxdWlyZSBgb3ZlcnJpZGVgIG1ldGhvZHMgdG8gY2FsbCBgc3VwZXIubWV0aG9kTmFtZSgpYCdcbiAgICB9LFxuICAgIG1lc3NhZ2VzOiB7XG4gICAgICBbTUVTU0FHRV9JRF06ICdPdmVycmlkZSBtZXRob2QgYHt7IG1ldGhvZE5hbWUgfX1gIG11c3QgY2FsbCBgc3VwZXIue3sgbWV0aG9kTmFtZSB9fSgpYC4nXG4gICAgfSxcbiAgICBzY2hlbWE6IFtdLFxuICAgIHR5cGU6ICdwcm9ibGVtJ1xuICB9XG59O1xuXG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIGEgZGVjbGFyYXRpb24gaGFzIHRoZSBgYWJzdHJhY3RgIG1vZGlmaWVyLlxuICpcbiAqIEBwYXJhbSBkZWNsIC0gVGhlIFR5cGVTY3JpcHQgZGVjbGFyYXRpb24gdG8gaW5zcGVjdC5cbiAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgZGVjbGFyYXRpb24gaXMgYWJzdHJhY3QuXG4gKi9cbmZ1bmN0aW9uIGNoZWNrSXNBYnN0cmFjdChkZWNsOiBEZWNsYXJhdGlvbik6IGJvb2xlYW4ge1xuICBhc3NlcnQoY2FuSGF2ZU1vZGlmaWVycyhkZWNsKSwgJ0V4cGVjdGVkIG1ldGhvZCBkZWNsYXJhdGlvbiB0byBzdXBwb3J0IG1vZGlmaWVycycpO1xuXG4gIGNvbnN0IG1vZGlmaWVycyA9IGdldE1vZGlmaWVycyhkZWNsKTtcbiAgcmV0dXJuIG1vZGlmaWVycz8uc29tZSgobW9kKSA9PiBtb2Qua2luZCA9PT0gU3ludGF4S2luZC5BYnN0cmFjdEtleXdvcmQpID8/IGZhbHNlO1xufVxuXG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIHRoZSBwYXJlbnQgY2xhc3MncyB2ZXJzaW9uIG9mIHRoZSBtZXRob2QgaXMgYGFic3RyYWN0YC5cbiAqXG4gKiBAcGFyYW0gc2VydmljZXMgLSBUaGUgcGFyc2VyIHNlcnZpY2VzIHdpdGggdHlwZSBpbmZvcm1hdGlvbi5cbiAqIEBwYXJhbSBjaGVja2VyIC0gVGhlIFR5cGVTY3JpcHQgdHlwZSBjaGVja2VyLlxuICogQHBhcmFtIG1ldGhvZE5vZGUgLSBUaGUgb3ZlcnJpZGUgbWV0aG9kIGRlZmluaXRpb24gQVNUIG5vZGUuXG4gKiBAcGFyYW0gbWV0aG9kTmFtZSAtIFRoZSBtZXRob2QgbmFtZSB0byBsb29rIHVwIGluIHRoZSBwYXJlbnQgY2xhc3MuXG4gKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHBhcmVudCBtZXRob2QgaXMgYWJzdHJhY3QuXG4gKi9cbmZ1bmN0aW9uIGNoZWNrSXNQYXJlbnRNZXRob2RBYnN0cmFjdChcbiAgc2VydmljZXM6IFBhcnNlclNlcnZpY2VzV2l0aFR5cGVJbmZvcm1hdGlvbixcbiAgY2hlY2tlcjogVHlwZUNoZWNrZXIsXG4gIG1ldGhvZE5vZGU6IFRTRVNUcmVlLk1ldGhvZERlZmluaXRpb24sXG4gIG1ldGhvZE5hbWU6IHN0cmluZ1xuKTogYm9vbGVhbiB7XG4gIGNvbnN0IGNsYXNzRGVjbCA9IG1ldGhvZE5vZGUucGFyZW50LnBhcmVudDtcbiAgY29uc3QgdHNDbGFzc05vZGUgPSBzZXJ2aWNlcy5lc1RyZWVOb2RlVG9UU05vZGVNYXAuZ2V0KGNsYXNzRGVjbCk7XG4gIGNvbnN0IGNsYXNzVHlwZSA9IGNoZWNrZXIuZ2V0VHlwZUF0TG9jYXRpb24odHNDbGFzc05vZGUpO1xuICBjb25zdCBiYXNlVHlwZXMgPSBjbGFzc1R5cGUuZ2V0QmFzZVR5cGVzKCk7XG5cbiAgaWYgKCFiYXNlVHlwZXMpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBmb3IgKGNvbnN0IGJhc2VUeXBlIG9mIGJhc2VUeXBlcykge1xuICAgIGNvbnN0IHByb3AgPSBiYXNlVHlwZS5nZXRQcm9wZXJ0eShtZXRob2ROYW1lKTtcblxuICAgIGlmICghcHJvcCkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgY29uc3QgZGVjbGFyYXRpb25zID0gcHJvcC5nZXREZWNsYXJhdGlvbnMoKTtcblxuICAgIGlmICghZGVjbGFyYXRpb25zKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGRlY2wgb2YgZGVjbGFyYXRpb25zKSB7XG4gICAgICBpZiAoY2hlY2tJc0Fic3RyYWN0KGRlY2wpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciBhIGNhbGwgZXhwcmVzc2lvbiBpcyBgc3VwZXIubWV0aG9kTmFtZSguLi4pYC5cbiAqXG4gKiBAcGFyYW0gbm9kZSAtIFRoZSBjYWxsIGV4cHJlc3Npb24gbm9kZS5cbiAqIEBwYXJhbSBtZXRob2ROYW1lIC0gVGhlIGV4cGVjdGVkIG1ldGhvZCBuYW1lLlxuICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBub2RlIGlzIGEgbWF0Y2hpbmcgc3VwZXIgbWV0aG9kIGNhbGwuXG4gKi9cbmZ1bmN0aW9uIGNoZWNrSXNTdXBlck1ldGhvZENhbGwobm9kZTogVFNFU1RyZWUuQ2FsbEV4cHJlc3Npb24sIG1ldGhvZE5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBjb25zdCBjYWxsZWUgPSBub2RlLmNhbGxlZTtcbiAgLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1lbnVtLWNvbXBhcmlzb24gLS0gQVNUIG5vZGUgdHlwZSBzdHJpbmcgbGl0ZXJhbHMgbWF0Y2ggdGhlIFRTRVNUcmVlIGVudW0gdmFsdWVzLiAqL1xuICByZXR1cm4gY2FsbGVlLnR5cGUgPT09ICdNZW1iZXJFeHByZXNzaW9uJ1xuICAgICYmIGNhbGxlZS5vYmplY3QudHlwZSA9PT0gJ1N1cGVyJ1xuICAgICYmIGNhbGxlZS5wcm9wZXJ0eS50eXBlID09PSAnSWRlbnRpZmllcidcbiAgICAmJiBjYWxsZWUucHJvcGVydHkubmFtZSA9PT0gbWV0aG9kTmFtZTtcbiAgLyogZXNsaW50LWVuYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLWVudW0tY29tcGFyaXNvbiAtLSBSZS1lbmFibGUgYWZ0ZXIgbXVsdGktbGluZSBzdHJpbmcgY29tcGFyaXNvbiBibG9jay4gKi9cbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBNkJBO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUVQLFNBQVMsY0FBYztBQUVoQixNQUFNLGFBQWE7QUFTbkIsTUFBTSxtQkFBb0M7QUFBQSxFQUMvQyxPQUFPLFNBQVM7QUFDZCxVQUFNLFdBQVcsUUFBUSxXQUFXO0FBQ3BDLFVBQU0sVUFBVSxTQUFTLFFBQVEsZUFBZTtBQUNoRCxVQUFNLGNBQW9DLENBQUM7QUFFM0MsV0FBTztB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
156
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL3NjcmlwdC11dGlscy9saW50ZXJzL2VzbGludC1ydWxlcy9yZXF1aXJlLXN1cGVyLWNhbGwudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBFU0xpbnQgcnVsZTogcmVxdWlyZS1zdXBlci1jYWxsXG4gKlxuICogUmVwb3J0cyBhbiBlcnJvciB3aGVuIGFuIGBvdmVycmlkZWAgbWV0aG9kIGRvZXMgbm90IGNhbGwgYHN1cGVyLm1ldGhvZE5hbWUoKWBcbiAqIGFueXdoZXJlIGluIGl0cyBib2R5LiBPdmVycmlkaW5nIGEgbWV0aG9kIHdpdGhvdXQgY2FsbGluZyBgc3VwZXJgIGlzIGFsbW9zdFxuICogYWx3YXlzIGEgbWlzdGFrZSB0aGF0IHNpbGVudGx5IGJyZWFrcyBwYXJlbnQtY2xhc3MgYmVoYXZpb3IgKGxpZmVjeWNsZSBob29rcyxcbiAqIGluaXRpYWxpemF0aW9uLCBldmVudCB3aXJpbmcsIGV0Yy4pLlxuICpcbiAqIFRoZSBzdXBlciBjYWxsIGNhbiBhcHBlYXIgYW55d2hlcmUgaW4gdGhlIG1ldGhvZCBib2R5IFx1MjAxNCBhcyBhIHN0YW5kYWxvbmVcbiAqIHN0YXRlbWVudCwgYXdhaXRlZCwgYXNzaWduZWQgdG8gYSB2YXJpYWJsZSwgb3IgbmVzdGVkIGluIGFueSBleHByZXNzaW9uLlxuICpcbiAqIFRoZSBydWxlIGF1dG9tYXRpY2FsbHkgc2tpcHMgbWV0aG9kcyB3aGVyZSB0aGUgcGFyZW50IGltcGxlbWVudGF0aW9uIGlzXG4gKiBgYWJzdHJhY3RgLCBzaW5jZSB0aGVyZSBpcyBubyBjb25jcmV0ZSBgc3VwZXJgIHRvIGNhbGwuXG4gKlxuICogSWYgdGhlIG92ZXJyaWRlIGludGVudGlvbmFsbHkgcmVwbGFjZXMgdGhlIHBhcmVudCBpbXBsZW1lbnRhdGlvbiwgZGlzYWJsZSB0aGVcbiAqIHJ1bGUgb24gdGhhdCBsaW5lIHdpdGggYW4gZXhwbGFuYXRvcnkgY29tbWVudC5cbiAqL1xuaW1wb3J0IHR5cGUge1xuICBQYXJzZXJTZXJ2aWNlc1dpdGhUeXBlSW5mb3JtYXRpb24sXG4gIFRTRVNUcmVlXG59IGZyb20gJ0B0eXBlc2NyaXB0LWVzbGludC91dGlscyc7XG5pbXBvcnQgdHlwZSB7IFJ1bGUgfSBmcm9tICdlc2xpbnQnO1xuaW1wb3J0IHR5cGUge1xuICBEZWNsYXJhdGlvbixcbiAgVHlwZUNoZWNrZXJcbn0gZnJvbSAndHlwZXNjcmlwdCc7XG5cbmltcG9ydCB7XG4gIGNhbkhhdmVNb2RpZmllcnMsXG4gIGdldE1vZGlmaWVycyxcbiAgU3ludGF4S2luZFxufSBmcm9tICd0eXBlc2NyaXB0JztcblxuaW1wb3J0IHsgYXNzZXJ0IH0gZnJvbSAnLi4vLi4vLi4vdHlwZS1ndWFyZHMudHMnO1xuXG5leHBvcnQgY29uc3QgTUVTU0FHRV9JRCA9ICdyZXF1aXJlU3VwZXJDYWxsJztcblxudHlwZSBNZXRob2RLaW5kID0gJ2dldCcgfCAnbWV0aG9kJyB8ICdzZXQnO1xuXG5pbnRlcmZhY2UgT3ZlcnJpZGVNZXRob2RJbmZvIHtcbiAgaGFzU3VwZXJDYWxsOiBib29sZWFuO1xuICBraW5kOiBNZXRob2RLaW5kO1xuICBtZXRob2ROYW1lOiBzdHJpbmc7XG4gIG5vZGU6IFRTRVNUcmVlLk1ldGhvZERlZmluaXRpb247XG4gIHJlcG9ydE5vZGU6IFJ1bGUuTm9kZTtcbn1cblxuZXhwb3J0IGNvbnN0IHJlcXVpcmVTdXBlckNhbGw6IFJ1bGUuUnVsZU1vZHVsZSA9IHtcbiAgY3JlYXRlKGNvbnRleHQpIHtcbiAgICBjb25zdCBzZXJ2aWNlcyA9IGNvbnRleHQuc291cmNlQ29kZS5wYXJzZXJTZXJ2aWNlcyBhcyBQYXJzZXJTZXJ2aWNlc1dpdGhUeXBlSW5mb3JtYXRpb247XG4gICAgY29uc3QgY2hlY2tlciA9IHNlcnZpY2VzLnByb2dyYW0uZ2V0VHlwZUNoZWNrZXIoKTtcbiAgICBjb25zdCBtZXRob2RTdGFjazogT3ZlcnJpZGVNZXRob2RJbmZvW10gPSBbXTtcblxuICAgIHJldHVybiB7XG4gICAgICAnQXNzaWdubWVudEV4cHJlc3Npb24nKG5vZGU6IFJ1bGUuTm9kZSk6IHZvaWQge1xuICAgICAgICBjb25zdCBjdXJyZW50ID0gbWV0aG9kU3RhY2tbbWV0aG9kU3RhY2subGVuZ3RoIC0gMV07XG4gICAgICAgIGlmIChjdXJyZW50Py5raW5kICE9PSAnc2V0Jykge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGFzc2lnbk5vZGUgPSBub2RlIGFzIFRTRVNUcmVlLkFzc2lnbm1lbnRFeHByZXNzaW9uO1xuICAgICAgICBpZiAoY2hlY2tJc1N1cGVyUHJvcGVydHlBY2Nlc3MoYXNzaWduTm9kZS5sZWZ0LCBjdXJyZW50Lm1ldGhvZE5hbWUpKSB7XG4gICAgICAgICAgY3VycmVudC5oYXNTdXBlckNhbGwgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgJ0NhbGxFeHByZXNzaW9uJyhub2RlOiBSdWxlLk5vZGUpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY3VycmVudCA9IG1ldGhvZFN0YWNrW21ldGhvZFN0YWNrLmxlbmd0aCAtIDFdO1xuICAgICAgICBpZiAoY3VycmVudD8ua2luZCAhPT0gJ21ldGhvZCcpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjYWxsTm9kZSA9IG5vZGUgYXMgVFNFU1RyZWUuQ2FsbEV4cHJlc3Npb247XG4gICAgICAgIGlmIChjaGVja0lzU3VwZXJNZXRob2RDYWxsKGNhbGxOb2RlLCBjdXJyZW50Lm1ldGhvZE5hbWUpKSB7XG4gICAgICAgICAgY3VycmVudC5oYXNTdXBlckNhbGwgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgJ01lbWJlckV4cHJlc3Npb24nKG5vZGU6IFJ1bGUuTm9kZSk6IHZvaWQge1xuICAgICAgICBjb25zdCBjdXJyZW50ID0gbWV0aG9kU3RhY2tbbWV0aG9kU3RhY2subGVuZ3RoIC0gMV07XG4gICAgICAgIGlmIChjdXJyZW50Py5raW5kICE9PSAnZ2V0Jykge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG1lbWJlck5vZGUgPSBub2RlIGFzIFRTRVNUcmVlLk1lbWJlckV4cHJlc3Npb247XG4gICAgICAgIGlmIChjaGVja0lzU3VwZXJQcm9wZXJ0eUFjY2VzcyhtZW1iZXJOb2RlLCBjdXJyZW50Lm1ldGhvZE5hbWUpKSB7XG4gICAgICAgICAgY3VycmVudC5oYXNTdXBlckNhbGwgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgJ01ldGhvZERlZmluaXRpb24nKG5vZGU6IFJ1bGUuTm9kZSk6IHZvaWQge1xuICAgICAgICBjb25zdCBtZXRob2ROb2RlID0gbm9kZSBhcyBUU0VTVHJlZS5NZXRob2REZWZpbml0aW9uO1xuXG4gICAgICAgIGlmICghbWV0aG9kTm9kZS5vdmVycmlkZSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLWVudW0tY29tcGFyaXNvbiAtLSBBU1Qgbm9kZSB0eXBlIHN0cmluZyBsaXRlcmFscyBtYXRjaCB0aGUgVFNFU1RyZWUgZW51bSB2YWx1ZXMuXG4gICAgICAgIGlmIChtZXRob2ROb2RlLmtleS50eXBlICE9PSAnSWRlbnRpZmllcicpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBraW5kID0gbWV0aG9kTm9kZS5raW5kID09PSAnZ2V0JyB8fCBtZXRob2ROb2RlLmtpbmQgPT09ICdzZXQnID8gbWV0aG9kTm9kZS5raW5kIDogJ21ldGhvZCc7XG5cbiAgICAgICAgbWV0aG9kU3RhY2sucHVzaCh7XG4gICAgICAgICAgaGFzU3VwZXJDYWxsOiBmYWxzZSxcbiAgICAgICAgICBraW5kLFxuICAgICAgICAgIG1ldGhvZE5hbWU6IG1ldGhvZE5vZGUua2V5Lm5hbWUsXG4gICAgICAgICAgbm9kZTogbWV0aG9kTm9kZSxcbiAgICAgICAgICByZXBvcnROb2RlOiBub2RlXG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICAgICdNZXRob2REZWZpbml0aW9uOmV4aXQnKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBpbmZvID0gbWV0aG9kU3RhY2tbbWV0aG9kU3RhY2subGVuZ3RoIC0gMV07XG4gICAgICAgIGlmICghaW5mbykge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIG1ldGhvZFN0YWNrLnBvcCgpO1xuXG4gICAgICAgIGlmIChpbmZvLmhhc1N1cGVyQ2FsbCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjaGVja0lzUGFyZW50TWV0aG9kQWJzdHJhY3Qoc2VydmljZXMsIGNoZWNrZXIsIGluZm8ubm9kZSwgaW5mby5tZXRob2ROYW1lKSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnRleHQucmVwb3J0KHtcbiAgICAgICAgICBkYXRhOiB7IGtpbmQ6IGluZm8ua2luZCwgbWV0aG9kTmFtZTogaW5mby5tZXRob2ROYW1lIH0sXG4gICAgICAgICAgbWVzc2FnZUlkOiBNRVNTQUdFX0lELFxuICAgICAgICAgIG5vZGU6IGluZm8ucmVwb3J0Tm9kZVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9O1xuICB9LFxuICBtZXRhOiB7XG4gICAgZG9jczoge1xuICAgICAgZGVzY3JpcHRpb246ICdSZXF1aXJlIGBvdmVycmlkZWAgbWV0aG9kcyB0byBjYWxsIGBzdXBlci5tZXRob2ROYW1lKClgJ1xuICAgIH0sXG4gICAgbWVzc2FnZXM6IHtcbiAgICAgIFtNRVNTQUdFX0lEXTogJ092ZXJyaWRlIHt7IGtpbmQgfX0gYHt7IG1ldGhvZE5hbWUgfX1gIG11c3QgYWNjZXNzIGBzdXBlci57eyBtZXRob2ROYW1lIH19YC4nXG4gICAgfSxcbiAgICBzY2hlbWE6IFtdLFxuICAgIHR5cGU6ICdwcm9ibGVtJ1xuICB9XG59O1xuXG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIGEgZGVjbGFyYXRpb24gaGFzIHRoZSBgYWJzdHJhY3RgIG1vZGlmaWVyLlxuICpcbiAqIEBwYXJhbSBkZWNsIC0gVGhlIFR5cGVTY3JpcHQgZGVjbGFyYXRpb24gdG8gaW5zcGVjdC5cbiAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgZGVjbGFyYXRpb24gaXMgYWJzdHJhY3QuXG4gKi9cbmZ1bmN0aW9uIGNoZWNrSXNBYnN0cmFjdChkZWNsOiBEZWNsYXJhdGlvbik6IGJvb2xlYW4ge1xuICBhc3NlcnQoY2FuSGF2ZU1vZGlmaWVycyhkZWNsKSwgJ0V4cGVjdGVkIG1ldGhvZCBkZWNsYXJhdGlvbiB0byBzdXBwb3J0IG1vZGlmaWVycycpO1xuXG4gIGNvbnN0IG1vZGlmaWVycyA9IGdldE1vZGlmaWVycyhkZWNsKTtcbiAgcmV0dXJuIG1vZGlmaWVycz8uc29tZSgobW9kKSA9PiBtb2Qua2luZCA9PT0gU3ludGF4S2luZC5BYnN0cmFjdEtleXdvcmQpID8/IGZhbHNlO1xufVxuXG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIHRoZSBwYXJlbnQgY2xhc3MncyB2ZXJzaW9uIG9mIHRoZSBtZXRob2QgaXMgYGFic3RyYWN0YC5cbiAqXG4gKiBAcGFyYW0gc2VydmljZXMgLSBUaGUgcGFyc2VyIHNlcnZpY2VzIHdpdGggdHlwZSBpbmZvcm1hdGlvbi5cbiAqIEBwYXJhbSBjaGVja2VyIC0gVGhlIFR5cGVTY3JpcHQgdHlwZSBjaGVja2VyLlxuICogQHBhcmFtIG1ldGhvZE5vZGUgLSBUaGUgb3ZlcnJpZGUgbWV0aG9kIGRlZmluaXRpb24gQVNUIG5vZGUuXG4gKiBAcGFyYW0gbWV0aG9kTmFtZSAtIFRoZSBtZXRob2QgbmFtZSB0byBsb29rIHVwIGluIHRoZSBwYXJlbnQgY2xhc3MuXG4gKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHBhcmVudCBtZXRob2QgaXMgYWJzdHJhY3QuXG4gKi9cbmZ1bmN0aW9uIGNoZWNrSXNQYXJlbnRNZXRob2RBYnN0cmFjdChcbiAgc2VydmljZXM6IFBhcnNlclNlcnZpY2VzV2l0aFR5cGVJbmZvcm1hdGlvbixcbiAgY2hlY2tlcjogVHlwZUNoZWNrZXIsXG4gIG1ldGhvZE5vZGU6IFRTRVNUcmVlLk1ldGhvZERlZmluaXRpb24sXG4gIG1ldGhvZE5hbWU6IHN0cmluZ1xuKTogYm9vbGVhbiB7XG4gIGNvbnN0IGNsYXNzRGVjbCA9IG1ldGhvZE5vZGUucGFyZW50LnBhcmVudDtcbiAgY29uc3QgdHNDbGFzc05vZGUgPSBzZXJ2aWNlcy5lc1RyZWVOb2RlVG9UU05vZGVNYXAuZ2V0KGNsYXNzRGVjbCk7XG4gIGNvbnN0IGNsYXNzVHlwZSA9IGNoZWNrZXIuZ2V0VHlwZUF0TG9jYXRpb24odHNDbGFzc05vZGUpO1xuICBjb25zdCBiYXNlVHlwZXMgPSBjbGFzc1R5cGUuZ2V0QmFzZVR5cGVzKCk7XG5cbiAgaWYgKCFiYXNlVHlwZXMpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBmb3IgKGNvbnN0IGJhc2VUeXBlIG9mIGJhc2VUeXBlcykge1xuICAgIGNvbnN0IHByb3AgPSBiYXNlVHlwZS5nZXRQcm9wZXJ0eShtZXRob2ROYW1lKTtcblxuICAgIGlmICghcHJvcCkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgY29uc3QgZGVjbGFyYXRpb25zID0gcHJvcC5nZXREZWNsYXJhdGlvbnMoKTtcblxuICAgIGlmICghZGVjbGFyYXRpb25zKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGRlY2wgb2YgZGVjbGFyYXRpb25zKSB7XG4gICAgICBpZiAoY2hlY2tJc0Fic3RyYWN0KGRlY2wpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciBhIGNhbGwgZXhwcmVzc2lvbiBpcyBgc3VwZXIubWV0aG9kTmFtZSguLi4pYC5cbiAqXG4gKiBAcGFyYW0gbm9kZSAtIFRoZSBjYWxsIGV4cHJlc3Npb24gbm9kZS5cbiAqIEBwYXJhbSBtZXRob2ROYW1lIC0gVGhlIGV4cGVjdGVkIG1ldGhvZCBuYW1lLlxuICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBub2RlIGlzIGEgbWF0Y2hpbmcgc3VwZXIgbWV0aG9kIGNhbGwuXG4gKi9cbmZ1bmN0aW9uIGNoZWNrSXNTdXBlck1ldGhvZENhbGwobm9kZTogVFNFU1RyZWUuQ2FsbEV4cHJlc3Npb24sIG1ldGhvZE5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBjb25zdCBjYWxsZWUgPSBub2RlLmNhbGxlZTtcbiAgLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1lbnVtLWNvbXBhcmlzb24gLS0gQVNUIG5vZGUgdHlwZSBzdHJpbmcgbGl0ZXJhbHMgbWF0Y2ggdGhlIFRTRVNUcmVlIGVudW0gdmFsdWVzLiAqL1xuICByZXR1cm4gY2FsbGVlLnR5cGUgPT09ICdNZW1iZXJFeHByZXNzaW9uJ1xuICAgICYmIGNhbGxlZS5vYmplY3QudHlwZSA9PT0gJ1N1cGVyJ1xuICAgICYmIGNhbGxlZS5wcm9wZXJ0eS50eXBlID09PSAnSWRlbnRpZmllcidcbiAgICAmJiBjYWxsZWUucHJvcGVydHkubmFtZSA9PT0gbWV0aG9kTmFtZTtcbiAgLyogZXNsaW50LWVuYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLWVudW0tY29tcGFyaXNvbiAtLSBSZS1lbmFibGUgYWZ0ZXIgbXVsdGktbGluZSBzdHJpbmcgY29tcGFyaXNvbiBibG9jay4gKi9cbn1cblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciBhIG5vZGUgaXMgYSBgc3VwZXIucHJvcGVydHlOYW1lYCBtZW1iZXIgZXhwcmVzc2lvbi5cbiAqXG4gKiBAcGFyYW0gbm9kZSAtIFRoZSBBU1Qgbm9kZSB0byBjaGVjayAoTWVtYmVyRXhwcmVzc2lvbiBvciBBc3NpZ25tZW50RXhwcmVzc2lvbiBsZWZ0LWhhbmQgc2lkZSkuXG4gKiBAcGFyYW0gcHJvcGVydHlOYW1lIC0gVGhlIGV4cGVjdGVkIHByb3BlcnR5IG5hbWUuXG4gKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIG5vZGUgaXMgYSBtYXRjaGluZyBzdXBlciBwcm9wZXJ0eSBhY2Nlc3MuXG4gKi9cbmZ1bmN0aW9uIGNoZWNrSXNTdXBlclByb3BlcnR5QWNjZXNzKG5vZGU6IFRTRVNUcmVlLk5vZGUsIHByb3BlcnR5TmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIC8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtZW51bS1jb21wYXJpc29uIC0tIEFTVCBub2RlIHR5cGUgc3RyaW5nIGxpdGVyYWxzIG1hdGNoIHRoZSBUU0VTVHJlZSBlbnVtIHZhbHVlcy4gKi9cbiAgcmV0dXJuIG5vZGUudHlwZSA9PT0gJ01lbWJlckV4cHJlc3Npb24nXG4gICAgJiYgbm9kZS5vYmplY3QudHlwZSA9PT0gJ1N1cGVyJ1xuICAgICYmIG5vZGUucHJvcGVydHkudHlwZSA9PT0gJ0lkZW50aWZpZXInXG4gICAgJiYgbm9kZS5wcm9wZXJ0eS5uYW1lID09PSBwcm9wZXJ0eU5hbWU7XG4gIC8qIGVzbGludC1lbmFibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1lbnVtLWNvbXBhcmlzb24gLS0gUmUtZW5hYmxlIGFmdGVyIG11bHRpLWxpbmUgc3RyaW5nIGNvbXBhcmlzb24gYmxvY2suICovXG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQTZCQTtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFFUCxTQUFTLGNBQWM7QUFFaEIsTUFBTSxhQUFhO0FBWW5CLE1BQU0sbUJBQW9DO0FBQUEsRUFDL0MsT0FBTyxTQUFTO0FBQ2QsVUFBTSxXQUFXLFFBQVEsV0FBVztBQUNwQyxVQUFNLFVBQVUsU0FBUyxR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
@@ -13,11 +13,11 @@ export interface LintParams {
13
13
  /**
14
14
  * Optional file paths to lint. If omitted, lints the entire project.
15
15
  */
16
- paths?: string[] | undefined;
16
+ readonly paths?: string[] | undefined;
17
17
  /**
18
18
  * Whether to fix linting issues automatically.
19
19
  */
20
- shouldFix?: boolean | undefined;
20
+ readonly shouldFix?: boolean | undefined;
21
21
  }
22
22
  /**
23
23
  * Lint the project with ESLint.
@@ -65,4 +65,4 @@ async function lint(params) {
65
65
  export {
66
66
  lint
67
67
  };
68
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL3NjcmlwdC11dGlscy9saW50ZXJzL2VzbGludC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIExpbnRpbmcgdXRpbGl0eSBmb3IgRVNMaW50IGNvbmZpZ3VyYXRpb24gd2l0aCBzdXBwb3J0IGZvciBhdXRvbWF0aWMgZml4aW5nLlxuICpcbiAqIFRoaXMgbW9kdWxlIHByb3ZpZGVzIGEgZnVuY3Rpb24gdG8gbGludCBmaWxlcyBiYXNlZCBvbiB0aGUgRVNMaW50IGNvbmZpZ3VyYXRpb24gZGVmaW5lZCBpbiBgZXNsaW50LmNvbmZpZy50c2AuXG4gKiBJdCBjYW4gYXV0b21hdGljYWxseSBmaXggbGludGluZyBpc3N1ZXMgaWYgc3BlY2lmaWVkLCBhbmQgbG9ncyByZXN1bHRzIHRvIHRoZSBjb25zb2xlLlxuICovXG5cbmltcG9ydCB7IGV4aXN0c1N5bmMgfSBmcm9tICdub2RlOmZzJztcbmltcG9ydCB7IGNwIH0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcyc7XG5cbmltcG9ydCB7IGdldExpYkRlYnVnZ2VyIH0gZnJvbSAnLi4vLi4vZGVidWcudHMnO1xuaW1wb3J0IHsgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMgfSBmcm9tICcuLi8uLi9vYnNpZGlhbi9wbHVnaW4vb2JzaWRpYW4tcGx1Z2luLXJlcG8tcGF0aHMudHMnO1xuaW1wb3J0IHtcbiAgZ2V0Rm9sZGVyTmFtZSxcbiAgam9pblxufSBmcm9tICcuLi8uLi9wYXRoLnRzJztcbmltcG9ydCB7IGFzc2VydE5vbk51bGxhYmxlIH0gZnJvbSAnLi4vLi4vdHlwZS1ndWFyZHMudHMnO1xuaW1wb3J0IHsgT2JzaWRpYW5EZXZVdGlsc1JlcG9QYXRocyB9IGZyb20gJy4uL29ic2lkaWFuLWRldi11dGlscy1yZXBvLXBhdGhzLnRzJztcbmltcG9ydCB7XG4gIGV4ZWNGcm9tUm9vdCxcbiAgZ2V0Um9vdEZvbGRlcixcbiAgcmVzb2x2ZVBhdGhGcm9tUm9vdFNhZmVcbn0gZnJvbSAnLi4vcm9vdC50cyc7XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3IgdGhlIHtAbGluayBsaW50fSBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMaW50UGFyYW1zIHtcbiAgLyoqXG4gICAqIE9wdGlvbmFsIGZpbGUgcGF0aHMgdG8gbGludC4gSWYgb21pdHRlZCwgbGludHMgdGhlIGVudGlyZSBwcm9qZWN0LlxuICAgKi9cbiAgcGF0aHM/OiBzdHJpbmdbXSB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogV2hldGhlciB0byBmaXggbGludGluZyBpc3N1ZXMgYXV0b21hdGljYWxseS5cbiAgICovXG4gIHNob3VsZEZpeD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogTGludCB0aGUgcHJvamVjdCB3aXRoIEVTTGludC5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHtAbGluayBMaW50UGFyYW1zfS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxpbnQocGFyYW1zPzogTGludFBhcmFtcyk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCB7IHBhdGhzLCBzaG91bGRGaXggfSA9IHBhcmFtcyA/PyB7fTtcbiAgY29uc3QgY29uZmlnRmlsZXMgPSBbXG4gICAgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuRXNsaW50Q29uZmlnSnMsXG4gICAgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuRXNsaW50Q29uZmlnTWpzLFxuICAgIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkVzbGludENvbmZpZ0NqcyxcbiAgICBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5Fc2xpbnRDb25maWdUcyxcbiAgICBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5Fc2xpbnRDb25maWdNdHMsXG4gICAgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuRXNsaW50Q29uZmlnQ3RzXG4gIF07XG5cbiAgY29uc3QgY29uZmlnRmlsZUV4aXN0ID0gY29uZmlnRmlsZXMuc29tZSgoY29uZmlnRmlsZSkgPT4ge1xuICAgIGNvbnN0IGNvbmZpZ0ZpbGVQYXRoID0gcmVzb2x2ZVBhdGhGcm9tUm9vdFNhZmUoY29uZmlnRmlsZSk7XG4gICAgcmV0dXJuIGV4aXN0c1N5bmMoY29uZmlnRmlsZVBhdGgpO1xuICB9KTtcblxuICBpZiAoIWNvbmZpZ0ZpbGVFeGlzdCkge1xuICAgIGdldExpYkRlYnVnZ2VyKCdFU0xpbnQ6bGludCcpKCdFU0xpbnQgY29uZmlndXJhdGlvbiBmaWxlIG5vdCBmb3VuZC4gQ3JlYXRpbmcgZGVmYXVsdCBjb25maWcuLi4nKTtcbiAgICBjb25zdCBwYWNrYWdlRm9sZGVyID0gZ2V0Um9vdEZvbGRlcihnZXRGb2xkZXJOYW1lKGltcG9ydC5tZXRhLnVybCkpO1xuICAgIGFzc2VydE5vbk51bGxhYmxlKHBhY2thZ2VGb2xkZXIsICdQYWNrYWdlIGZvbGRlciBub3QgZm91bmQnKTtcbiAgICBhd2FpdCBjcChcbiAgICAgIGpvaW4ocGFja2FnZUZvbGRlciwgT2JzaWRpYW5EZXZVdGlsc1JlcG9QYXRocy5EaXN0LCBPYnNpZGlhbkRldlV0aWxzUmVwb1BhdGhzLkVzbGludENvbmZpZ010cyksXG4gICAgICByZXNvbHZlUGF0aEZyb21Sb290U2FmZShPYnNpZGlhblBsdWdpblJlcG9QYXRocy5Fc2xpbnRDb25maWdNdHMpXG4gICAgKTtcbiAgfVxuXG4gIC8qIHY4IGlnbm9yZSBzdGFydCAtLSBUaGUgcGF0aHMtcHJvdmlkZWQgYnJhbmNoIGlzIG9ubHkgZXhlcmNpc2VkIGJ5IGNvbnN1bWVyIHByb2plY3RzIHBhc3NpbmcgZmlsZSBsaXN0cy4gKi9cbiAgY29uc3QgdGFyZ2V0cyA9IHBhdGhzPy5sZW5ndGggPyBwYXRocyA6IFtPYnNpZGlhblBsdWdpblJlcG9QYXRocy5DdXJyZW50Rm9sZGVyXTtcbiAgLyogdjggaWdub3JlIHN0b3AgKi9cbiAgYXdhaXQgZXhlY0Zyb21Sb290KFsnbnB4JywgJ2VzbGludCcsIC4uLihzaG91bGRGaXggPyBbJy0tZml4J10gOiBbXSksIHsgYmF0Y2hlZEFyZ3M6IHRhcmdldHMgfV0pO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFTQSxTQUFTLGtCQUFrQjtBQUMzQixTQUFTLFVBQVU7QUFFbkIsU0FBUyxzQkFBc0I7QUFDL0IsU0FBUywrQkFBK0I7QUFDeEM7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUCxTQUFTLHlCQUF5QjtBQUNsQyxTQUFTLGlDQUFpQztBQUMxQztBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFzQlAsZUFBc0IsS0FBSyxRQUFvQztBQUM3RCxRQUFNLEVBQUUsT0FBTyxVQUFVLElBQUksVUFBVSxDQUFDO0FBQ3hDLFFBQU0sY0FBYztBQUFBLElBQ2xCLHdCQUF3QjtBQUFBLElBQ3hCLHdCQUF3QjtBQUFBLElBQ3hCLHdCQUF3QjtBQUFBLElBQ3hCLHdCQUF3QjtBQUFBLElBQ3hCLHdCQUF3QjtBQUFBLElBQ3hCLHdCQUF3QjtBQUFBLEVBQzFCO0FBRUEsUUFBTSxrQkFBa0IsWUFBWSxLQUFLLENBQUMsZUFBZTtBQUN2RCxVQUFNLGlCQUFpQix3QkFBd0IsVUFBVTtBQUN6RCxXQUFPLFdBQVcsY0FBYztBQUFBLEVBQ2xDLENBQUM7QUFFRCxNQUFJLENBQUMsaUJBQWlCO0FBQ3BCLG1CQUFlLGFBQWEsRUFBRSxpRUFBaUU7QUFDL0YsVUFBTSxnQkFBZ0IsY0FBYyxjQUFjLFlBQVksR0FBRyxDQUFDO0FBQ2xFLHNCQUFrQixlQUFlLDBCQUEwQjtBQUMzRCxVQUFNO0FBQUEsTUFDSixLQUFLLGVBQWUsMEJBQTBCLE1BQU0sMEJBQTBCLGVBQWU7QUFBQSxNQUM3Rix3QkFBd0Isd0JBQXdCLGVBQWU7QUFBQSxJQUNqRTtBQUFBLEVBQ0Y7QUFHQSxRQUFNLFVBQVUsT0FBTyxTQUFTLFFBQVEsQ0FBQyx3QkFBd0IsYUFBYTtBQUU5RSxRQUFNLGFBQWEsQ0FBQyxPQUFPLFVBQVUsR0FBSSxZQUFZLENBQUMsT0FBTyxJQUFJLENBQUMsR0FBSSxFQUFFLGFBQWEsUUFBUSxDQUFDLENBQUM7QUFDakc7IiwKICAibmFtZXMiOiBbXQp9Cg==
68
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL3NjcmlwdC11dGlscy9saW50ZXJzL2VzbGludC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIExpbnRpbmcgdXRpbGl0eSBmb3IgRVNMaW50IGNvbmZpZ3VyYXRpb24gd2l0aCBzdXBwb3J0IGZvciBhdXRvbWF0aWMgZml4aW5nLlxuICpcbiAqIFRoaXMgbW9kdWxlIHByb3ZpZGVzIGEgZnVuY3Rpb24gdG8gbGludCBmaWxlcyBiYXNlZCBvbiB0aGUgRVNMaW50IGNvbmZpZ3VyYXRpb24gZGVmaW5lZCBpbiBgZXNsaW50LmNvbmZpZy50c2AuXG4gKiBJdCBjYW4gYXV0b21hdGljYWxseSBmaXggbGludGluZyBpc3N1ZXMgaWYgc3BlY2lmaWVkLCBhbmQgbG9ncyByZXN1bHRzIHRvIHRoZSBjb25zb2xlLlxuICovXG5cbmltcG9ydCB7IGV4aXN0c1N5bmMgfSBmcm9tICdub2RlOmZzJztcbmltcG9ydCB7IGNwIH0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcyc7XG5cbmltcG9ydCB7IGdldExpYkRlYnVnZ2VyIH0gZnJvbSAnLi4vLi4vZGVidWcudHMnO1xuaW1wb3J0IHsgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMgfSBmcm9tICcuLi8uLi9vYnNpZGlhbi9wbHVnaW4vb2JzaWRpYW4tcGx1Z2luLXJlcG8tcGF0aHMudHMnO1xuaW1wb3J0IHtcbiAgZ2V0Rm9sZGVyTmFtZSxcbiAgam9pblxufSBmcm9tICcuLi8uLi9wYXRoLnRzJztcbmltcG9ydCB7IGFzc2VydE5vbk51bGxhYmxlIH0gZnJvbSAnLi4vLi4vdHlwZS1ndWFyZHMudHMnO1xuaW1wb3J0IHsgT2JzaWRpYW5EZXZVdGlsc1JlcG9QYXRocyB9IGZyb20gJy4uL29ic2lkaWFuLWRldi11dGlscy1yZXBvLXBhdGhzLnRzJztcbmltcG9ydCB7XG4gIGV4ZWNGcm9tUm9vdCxcbiAgZ2V0Um9vdEZvbGRlcixcbiAgcmVzb2x2ZVBhdGhGcm9tUm9vdFNhZmVcbn0gZnJvbSAnLi4vcm9vdC50cyc7XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3IgdGhlIHtAbGluayBsaW50fSBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMaW50UGFyYW1zIHtcbiAgLyoqXG4gICAqIE9wdGlvbmFsIGZpbGUgcGF0aHMgdG8gbGludC4gSWYgb21pdHRlZCwgbGludHMgdGhlIGVudGlyZSBwcm9qZWN0LlxuICAgKi9cbiAgcmVhZG9ubHkgcGF0aHM/OiBzdHJpbmdbXSB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogV2hldGhlciB0byBmaXggbGludGluZyBpc3N1ZXMgYXV0b21hdGljYWxseS5cbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZEZpeD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogTGludCB0aGUgcHJvamVjdCB3aXRoIEVTTGludC5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHtAbGluayBMaW50UGFyYW1zfS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxpbnQocGFyYW1zPzogTGludFBhcmFtcyk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCB7IHBhdGhzLCBzaG91bGRGaXggfSA9IHBhcmFtcyA/PyB7fTtcbiAgY29uc3QgY29uZmlnRmlsZXMgPSBbXG4gICAgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuRXNsaW50Q29uZmlnSnMsXG4gICAgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuRXNsaW50Q29uZmlnTWpzLFxuICAgIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkVzbGludENvbmZpZ0NqcyxcbiAgICBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5Fc2xpbnRDb25maWdUcyxcbiAgICBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5Fc2xpbnRDb25maWdNdHMsXG4gICAgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuRXNsaW50Q29uZmlnQ3RzXG4gIF07XG5cbiAgY29uc3QgY29uZmlnRmlsZUV4aXN0ID0gY29uZmlnRmlsZXMuc29tZSgoY29uZmlnRmlsZSkgPT4ge1xuICAgIGNvbnN0IGNvbmZpZ0ZpbGVQYXRoID0gcmVzb2x2ZVBhdGhGcm9tUm9vdFNhZmUoY29uZmlnRmlsZSk7XG4gICAgcmV0dXJuIGV4aXN0c1N5bmMoY29uZmlnRmlsZVBhdGgpO1xuICB9KTtcblxuICBpZiAoIWNvbmZpZ0ZpbGVFeGlzdCkge1xuICAgIGdldExpYkRlYnVnZ2VyKCdFU0xpbnQ6bGludCcpKCdFU0xpbnQgY29uZmlndXJhdGlvbiBmaWxlIG5vdCBmb3VuZC4gQ3JlYXRpbmcgZGVmYXVsdCBjb25maWcuLi4nKTtcbiAgICBjb25zdCBwYWNrYWdlRm9sZGVyID0gZ2V0Um9vdEZvbGRlcihnZXRGb2xkZXJOYW1lKGltcG9ydC5tZXRhLnVybCkpO1xuICAgIGFzc2VydE5vbk51bGxhYmxlKHBhY2thZ2VGb2xkZXIsICdQYWNrYWdlIGZvbGRlciBub3QgZm91bmQnKTtcbiAgICBhd2FpdCBjcChcbiAgICAgIGpvaW4ocGFja2FnZUZvbGRlciwgT2JzaWRpYW5EZXZVdGlsc1JlcG9QYXRocy5EaXN0LCBPYnNpZGlhbkRldlV0aWxzUmVwb1BhdGhzLkVzbGludENvbmZpZ010cyksXG4gICAgICByZXNvbHZlUGF0aEZyb21Sb290U2FmZShPYnNpZGlhblBsdWdpblJlcG9QYXRocy5Fc2xpbnRDb25maWdNdHMpXG4gICAgKTtcbiAgfVxuXG4gIC8qIHY4IGlnbm9yZSBzdGFydCAtLSBUaGUgcGF0aHMtcHJvdmlkZWQgYnJhbmNoIGlzIG9ubHkgZXhlcmNpc2VkIGJ5IGNvbnN1bWVyIHByb2plY3RzIHBhc3NpbmcgZmlsZSBsaXN0cy4gKi9cbiAgY29uc3QgdGFyZ2V0cyA9IHBhdGhzPy5sZW5ndGggPyBwYXRocyA6IFtPYnNpZGlhblBsdWdpblJlcG9QYXRocy5DdXJyZW50Rm9sZGVyXTtcbiAgLyogdjggaWdub3JlIHN0b3AgKi9cbiAgYXdhaXQgZXhlY0Zyb21Sb290KFsnbnB4JywgJ2VzbGludCcsIC4uLihzaG91bGRGaXggPyBbJy0tZml4J10gOiBbXSksIHsgYmF0Y2hlZEFyZ3M6IHRhcmdldHMgfV0pO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFTQSxTQUFTLGtCQUFrQjtBQUMzQixTQUFTLFVBQVU7QUFFbkIsU0FBUyxzQkFBc0I7QUFDL0IsU0FBUywrQkFBK0I7QUFDeEM7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUCxTQUFTLHlCQUF5QjtBQUNsQyxTQUFTLGlDQUFpQztBQUMxQztBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFzQlAsZUFBc0IsS0FBSyxRQUFvQztBQUM3RCxRQUFNLEVBQUUsT0FBTyxVQUFVLElBQUksVUFBVSxDQUFDO0FBQ3hDLFFBQU0sY0FBYztBQUFBLElBQ2xCLHdCQUF3QjtBQUFBLElBQ3hCLHdCQUF3QjtBQUFBLElBQ3hCLHdCQUF3QjtBQUFBLElBQ3hCLHdCQUF3QjtBQUFBLElBQ3hCLHdCQUF3QjtBQUFBLElBQ3hCLHdCQUF3QjtBQUFBLEVBQzFCO0FBRUEsUUFBTSxrQkFBa0IsWUFBWSxLQUFLLENBQUMsZUFBZTtBQUN2RCxVQUFNLGlCQUFpQix3QkFBd0IsVUFBVTtBQUN6RCxXQUFPLFdBQVcsY0FBYztBQUFBLEVBQ2xDLENBQUM7QUFFRCxNQUFJLENBQUMsaUJBQWlCO0FBQ3BCLG1CQUFlLGFBQWEsRUFBRSxpRUFBaUU7QUFDL0YsVUFBTSxnQkFBZ0IsY0FBYyxjQUFjLFlBQVksR0FBRyxDQUFDO0FBQ2xFLHNCQUFrQixlQUFlLDBCQUEwQjtBQUMzRCxVQUFNO0FBQUEsTUFDSixLQUFLLGVBQWUsMEJBQTBCLE1BQU0sMEJBQTBCLGVBQWU7QUFBQSxNQUM3Rix3QkFBd0Isd0JBQXdCLGVBQWU7QUFBQSxJQUNqRTtBQUFBLEVBQ0Y7QUFHQSxRQUFNLFVBQVUsT0FBTyxTQUFTLFFBQVEsQ0FBQyx3QkFBd0IsYUFBYTtBQUU5RSxRQUFNLGFBQWEsQ0FBQyxPQUFPLFVBQVUsR0FBSSxZQUFZLENBQUMsT0FBTyxJQUFJLENBQUMsR0FBSSxFQUFFLGFBQWEsUUFBUSxDQUFDLENBQUM7QUFDakc7IiwKICAibmFtZXMiOiBbXQp9Cg==
@@ -10,11 +10,11 @@ export interface LintParams {
10
10
  /**
11
11
  * Optional file paths to lint. If omitted, lints the entire project.
12
12
  */
13
- paths?: string[] | undefined;
13
+ readonly paths?: string[] | undefined;
14
14
  /**
15
15
  * Whether to fix linting issues automatically.
16
16
  */
17
- shouldFix?: boolean | undefined;
17
+ readonly shouldFix?: boolean | undefined;
18
18
  }
19
19
  /**
20
20
  * Lint markdown documentation using `markdownlint-cli2` and `linkinator`.
@@ -101,4 +101,4 @@ async function lint(params) {
101
101
  export {
102
102
  lint
103
103
  };
104
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL3NjcmlwdC11dGlscy9saW50ZXJzL21hcmtkb3dubGludC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIExpbnQgbWFya2Rvd24gZG9jdW1lbnRhdGlvbiB1c2luZyBgbWFya2Rvd25saW50LWNsaTJgIGFuZCBgbGlua2luYXRvcmAuXG4gKi9cblxuaW1wb3J0IHsgZXhpc3RzU3luYyB9IGZyb20gJ25vZGU6ZnMnO1xuaW1wb3J0IHtcbiAgY3AsXG4gIGdsb2Jcbn0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcyc7XG5pbXBvcnQgeyByZWxhdGl2ZSB9IGZyb20gJ25vZGU6cGF0aCc7XG5cbmltcG9ydCB7IHRvQXJyYXkgfSBmcm9tICcuLi8uLi9hc3luYy50cyc7XG5pbXBvcnQgeyBnZXRMaWJEZWJ1Z2dlciB9IGZyb20gJy4uLy4uL2RlYnVnLnRzJztcbmltcG9ydCB7IE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzIH0gZnJvbSAnLi4vLi4vb2JzaWRpYW4vcGx1Z2luL29ic2lkaWFuLXBsdWdpbi1yZXBvLXBhdGhzLnRzJztcbmltcG9ydCB7XG4gIGdldEZvbGRlck5hbWUsXG4gIGpvaW5cbn0gZnJvbSAnLi4vLi4vcGF0aC50cyc7XG5pbXBvcnQgeyBhc3NlcnROb25OdWxsYWJsZSB9IGZyb20gJy4uLy4uL3R5cGUtZ3VhcmRzLnRzJztcbmltcG9ydCB7IE9ic2lkaWFuRGV2VXRpbHNSZXBvUGF0aHMgfSBmcm9tICcuLi9vYnNpZGlhbi1kZXYtdXRpbHMtcmVwby1wYXRocy50cyc7XG5pbXBvcnQge1xuICBleGVjRnJvbVJvb3QsXG4gIGdldFJvb3RGb2xkZXIsXG4gIHJlc29sdmVQYXRoRnJvbVJvb3RTYWZlXG59IGZyb20gJy4uL3Jvb3QudHMnO1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHRoZSB7QGxpbmsgbGludH0gZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGludFBhcmFtcyB7XG4gIC8qKlxuICAgKiBPcHRpb25hbCBmaWxlIHBhdGhzIHRvIGxpbnQuIElmIG9taXR0ZWQsIGxpbnRzIHRoZSBlbnRpcmUgcHJvamVjdC5cbiAgICovXG4gIHBhdGhzPzogc3RyaW5nW10gfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZml4IGxpbnRpbmcgaXNzdWVzIGF1dG9tYXRpY2FsbHkuXG4gICAqL1xuICBzaG91bGRGaXg/OiBib29sZWFuIHwgdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIExpbnQgbWFya2Rvd24gZG9jdW1lbnRhdGlvbiB1c2luZyBgbWFya2Rvd25saW50LWNsaTJgIGFuZCBgbGlua2luYXRvcmAuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSB7QGxpbmsgTGludFBhcmFtc30uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsaW50KHBhcmFtcz86IExpbnRQYXJhbXMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgeyBwYXRocywgc2hvdWxkRml4ID0gZmFsc2UgfSA9IHBhcmFtcyA/PyB7fTtcbiAgY29uc3QgY29uZmlnRmlsZXMgPSBbXG4gICAgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuTWFya2Rvd25saW50Q2xpMkNvbmZpZ0pzb25jLFxuICAgIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLk1hcmtkb3dubGludENsaTJDb25maWdZYW1sLFxuICAgIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLk1hcmtkb3dubGludENsaTJDb25maWdDanMsXG4gICAgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuTWFya2Rvd25saW50Q2xpMkNvbmZpZ01qcyxcbiAgICBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5NYXJrZG93bmxpbnRDb25maWdKc29uYyxcbiAgICBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5NYXJrZG93bmxpbnRDb25maWdKc29uLFxuICAgIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLk1hcmtkb3dubGludENvbmZpZ1lhbWwsXG4gICAgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuTWFya2Rvd25saW50Q29uZmlnWW1sLFxuICAgIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLk1hcmtkb3dubGludENvbmZpZ0NqcyxcbiAgICBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5NYXJrZG93bmxpbnRDb25maWdNanNcbiAgXTtcblxuICBjb25zdCBjb25maWdGaWxlRXhpc3QgPSBjb25maWdGaWxlcy5zb21lKChjb25maWdGaWxlKSA9PiB7XG4gICAgY29uc3QgY29uZmlnRmlsZVBhdGggPSByZXNvbHZlUGF0aEZyb21Sb290U2FmZShjb25maWdGaWxlKTtcbiAgICByZXR1cm4gZXhpc3RzU3luYyhjb25maWdGaWxlUGF0aCk7XG4gIH0pO1xuXG4gIGlmICghY29uZmlnRmlsZUV4aXN0KSB7XG4gICAgZ2V0TGliRGVidWdnZXIoJ21hcmtkb3dubGludDpsaW50JykoJ21hcmtkb3dubGludCBjb25maWd1cmF0aW9uIGZpbGUgbm90IGZvdW5kLiBDcmVhdGluZyBkZWZhdWx0IGNvbmZpZy4uLicpO1xuICAgIGNvbnN0IHBhY2thZ2VGb2xkZXIgPSBnZXRSb290Rm9sZGVyKGdldEZvbGRlck5hbWUoaW1wb3J0Lm1ldGEudXJsKSk7XG4gICAgYXNzZXJ0Tm9uTnVsbGFibGUocGFja2FnZUZvbGRlciwgJ1BhY2thZ2UgZm9sZGVyIG5vdCBmb3VuZCcpO1xuICAgIGF3YWl0IGNwKFxuICAgICAgam9pbihwYWNrYWdlRm9sZGVyLCBPYnNpZGlhbkRldlV0aWxzUmVwb1BhdGhzLkRpc3QsIE9ic2lkaWFuRGV2VXRpbHNSZXBvUGF0aHMuTWFya2Rvd25saW50Q2xpMkNvbmZpZ01qcyksXG4gICAgICByZXNvbHZlUGF0aEZyb21Sb290U2FmZShPYnNpZGlhblBsdWdpblJlcG9QYXRocy5NYXJrZG93bmxpbnRDbGkyQ29uZmlnTWpzKVxuICAgICk7XG5cbiAgICBhd2FpdCBjcChcbiAgICAgIGpvaW4ocGFja2FnZUZvbGRlciwgT2JzaWRpYW5EZXZVdGlsc1JlcG9QYXRocy5EaXN0LCBPYnNpZGlhbkRldlV0aWxzUmVwb1BhdGhzLk1hcmtkb3dubGludENsaTJDb25maWdNdHMpLFxuICAgICAgcmVzb2x2ZVBhdGhGcm9tUm9vdFNhZmUoT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuTWFya2Rvd25saW50Q2xpMkNvbmZpZ010cylcbiAgICApO1xuICB9XG5cbiAgLyogdjggaWdub3JlIHN0YXJ0IC0tIFRoZSBwYXRocy1wcm92aWRlZCBicmFuY2hlcyBhcmUgb25seSBleGVyY2lzZWQgYnkgY29uc3VtZXIgcHJvamVjdHMgcGFzc2luZyBmaWxlIGxpc3RzLiAqL1xuICBjb25zdCB0YXJnZXRzID0gcGF0aHM/Lmxlbmd0aCA/IHBhdGhzIDogW09ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkN1cnJlbnRGb2xkZXJdO1xuICAvKiB2OCBpZ25vcmUgc3RvcCAqL1xuICBhd2FpdCBleGVjRnJvbVJvb3QoWyducHgnLCAnbWFya2Rvd25saW50LWNsaTInLCAuLi4oc2hvdWxkRml4ID8gWyctLWZpeCddIDogW10pLCB7IGJhdGNoZWRBcmdzOiB0YXJnZXRzIH1dKTtcblxuICAvKiB2OCBpZ25vcmUgc3RhcnQgLS0gVGhlIHBhdGhzLXByb3ZpZGVkIGJyYW5jaCBpcyBvbmx5IGV4ZXJjaXNlZCBieSBjb25zdW1lciBwcm9qZWN0cyBwYXNzaW5nIGZpbGUgbGlzdHMuICovXG4gIGNvbnN0IHJvb3RGb2xkZXIgPSBnZXRSb290Rm9sZGVyKCkgPz8gcHJvY2Vzcy5jd2QoKTtcbiAgY29uc3QgbWRGaWxlcyA9IHBhdGhzPy5sZW5ndGhcbiAgICA/IHBhdGhzLm1hcCgocCkgPT4gcmVsYXRpdmUocm9vdEZvbGRlciwgcCkucmVwbGFjZSgvXFxcXC9nLCAnLycpIHx8IHApXG4gICAgOiBhd2FpdCB0b0FycmF5KGdsb2IoWycqKi8qLm1kJ10sIHtcbiAgICAgIGV4Y2x1ZGU6IFtcbiAgICAgICAgJy5naXQvKionLFxuICAgICAgICAnZGlzdC8qKicsXG4gICAgICAgICdub2RlX21vZHVsZXMvKionXG4gICAgICBdXG4gICAgfSkpO1xuICAvKiB2OCBpZ25vcmUgc3RvcCAqL1xuICBhd2FpdCBleGVjRnJvbVJvb3QoW1xuICAgICducHgnLFxuICAgICdsaW5raW5hdG9yJyxcbiAgICAnLS1yZXRyeScsXG4gICAgJy0tcmV0cnktZXJyb3JzJyxcbiAgICAnLS1yZXRyeS1lcnJvcnMtY291bnQnLFxuICAgICczJyxcbiAgICAnLS1yZXRyeS1lcnJvcnMtaml0dGVyJyxcbiAgICAnNScsXG4gICAgJy0tdXJsLXJld3JpdGUtc2VhcmNoJyxcbiAgICAnaHR0cHM6Ly93d3dcXFxcLm5wbWpzXFxcXC5jb20vcGFja2FnZS8nLFxuICAgICctLXVybC1yZXdyaXRlLXJlcGxhY2UnLFxuICAgICdodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy8nLFxuICAgIHsgYmF0Y2hlZEFyZ3M6IG1kRmlsZXMgfVxuICBdKTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBTUEsU0FBUyxrQkFBa0I7QUFDM0I7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUCxTQUFTLGdCQUFnQjtBQUV6QixTQUFTLGVBQWU7QUFDeEIsU0FBUyxzQkFBc0I7QUFDL0IsU0FBUywrQkFBK0I7QUFDeEM7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUCxTQUFTLHlCQUF5QjtBQUNsQyxTQUFTLGlDQUFpQztBQUMxQztBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFzQlAsZUFBc0IsS0FBSyxRQUFvQztBQUM3RCxRQUFNLEVBQUUsT0FBTyxZQUFZLE1BQU0sSUFBSSxVQUFVLENBQUM7QUFDaEQsUUFBTSxjQUFjO0FBQUEsSUFDbEIsd0JBQXdCO0FBQUEsSUFDeEIsd0JBQXdCO0FBQUEsSUFDeEIsd0JBQXdCO0FBQUEsSUFDeEIsd0JBQXdCO0FBQUEsSUFDeEIsd0JBQXdCO0FBQUEsSUFDeEIsd0JBQXdCO0FBQUEsSUFDeEIsd0JBQXdCO0FBQUEsSUFDeEIsd0JBQXdCO0FBQUEsSUFDeEIsd0JBQXdCO0FBQUEsSUFDeEIsd0JBQXdCO0FBQUEsRUFDMUI7QUFFQSxRQUFNLGtCQUFrQixZQUFZLEtBQUssQ0FBQyxlQUFlO0FBQ3ZELFVBQU0saUJBQWlCLHdCQUF3QixVQUFVO0FBQ3pELFdBQU8sV0FBVyxjQUFjO0FBQUEsRUFDbEMsQ0FBQztBQUVELE1BQUksQ0FBQyxpQkFBaUI7QUFDcEIsbUJBQWUsbUJBQW1CLEVBQUUsdUVBQXVFO0FBQzNHLFVBQU0sZ0JBQWdCLGNBQWMsY0FBYyxZQUFZLEdBQUcsQ0FBQztBQUNsRSxzQkFBa0IsZUFBZSwwQkFBMEI7QUFDM0QsVUFBTTtBQUFBLE1BQ0osS0FBSyxlQUFlLDBCQUEwQixNQUFNLDBCQUEwQix5QkFBeUI7QUFBQSxNQUN2Ryx3QkFBd0Isd0JBQXdCLHlCQUF5QjtBQUFBLElBQzNFO0FBRUEsVUFBTTtBQUFBLE1BQ0osS0FBSyxlQUFlLDBCQUEwQixNQUFNLDBCQUEwQix5QkFBeUI7QUFBQSxNQUN2Ryx3QkFBd0Isd0JBQXdCLHlCQUF5QjtBQUFBLElBQzNFO0FBQUEsRUFDRjtBQUdBLFFBQU0sVUFBVSxPQUFPLFNBQVMsUUFBUSxDQUFDLHdCQUF3QixhQUFhO0FBRTlFLFFBQU0sYUFBYSxDQUFDLE9BQU8scUJBQXFCLEdBQUksWUFBWSxDQUFDLE9BQU8sSUFBSSxDQUFDLEdBQUksRUFBRSxhQUFhLFFBQVEsQ0FBQyxDQUFDO0FBRzFHLFFBQU0sYUFBYSxjQUFjLEtBQUssUUFBUSxJQUFJO0FBQ2xELFFBQU0sVUFBVSxPQUFPLFNBQ25CLE1BQU0sSUFBSSxDQUFDLE1BQU0sU0FBUyxZQUFZLENBQUMsRUFBRSxRQUFRLE9BQU8sR0FBRyxLQUFLLENBQUMsSUFDakUsTUFBTSxRQUFRLEtBQUssQ0FBQyxTQUFTLEdBQUc7QUFBQSxJQUNoQyxTQUFTO0FBQUEsTUFDUDtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsSUFDRjtBQUFBLEVBQ0YsQ0FBQyxDQUFDO0FBRUosUUFBTSxhQUFhO0FBQUEsSUFDakI7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0EsRUFBRSxhQUFhLFFBQVE7QUFBQSxFQUN6QixDQUFDO0FBQ0g7IiwKICAibmFtZXMiOiBbXQp9Cg==
104
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL3NjcmlwdC11dGlscy9saW50ZXJzL21hcmtkb3dubGludC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIExpbnQgbWFya2Rvd24gZG9jdW1lbnRhdGlvbiB1c2luZyBgbWFya2Rvd25saW50LWNsaTJgIGFuZCBgbGlua2luYXRvcmAuXG4gKi9cblxuaW1wb3J0IHsgZXhpc3RzU3luYyB9IGZyb20gJ25vZGU6ZnMnO1xuaW1wb3J0IHtcbiAgY3AsXG4gIGdsb2Jcbn0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcyc7XG5pbXBvcnQgeyByZWxhdGl2ZSB9IGZyb20gJ25vZGU6cGF0aCc7XG5cbmltcG9ydCB7IHRvQXJyYXkgfSBmcm9tICcuLi8uLi9hc3luYy50cyc7XG5pbXBvcnQgeyBnZXRMaWJEZWJ1Z2dlciB9IGZyb20gJy4uLy4uL2RlYnVnLnRzJztcbmltcG9ydCB7IE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzIH0gZnJvbSAnLi4vLi4vb2JzaWRpYW4vcGx1Z2luL29ic2lkaWFuLXBsdWdpbi1yZXBvLXBhdGhzLnRzJztcbmltcG9ydCB7XG4gIGdldEZvbGRlck5hbWUsXG4gIGpvaW5cbn0gZnJvbSAnLi4vLi4vcGF0aC50cyc7XG5pbXBvcnQgeyBhc3NlcnROb25OdWxsYWJsZSB9IGZyb20gJy4uLy4uL3R5cGUtZ3VhcmRzLnRzJztcbmltcG9ydCB7IE9ic2lkaWFuRGV2VXRpbHNSZXBvUGF0aHMgfSBmcm9tICcuLi9vYnNpZGlhbi1kZXYtdXRpbHMtcmVwby1wYXRocy50cyc7XG5pbXBvcnQge1xuICBleGVjRnJvbVJvb3QsXG4gIGdldFJvb3RGb2xkZXIsXG4gIHJlc29sdmVQYXRoRnJvbVJvb3RTYWZlXG59IGZyb20gJy4uL3Jvb3QudHMnO1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHRoZSB7QGxpbmsgbGludH0gZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGludFBhcmFtcyB7XG4gIC8qKlxuICAgKiBPcHRpb25hbCBmaWxlIHBhdGhzIHRvIGxpbnQuIElmIG9taXR0ZWQsIGxpbnRzIHRoZSBlbnRpcmUgcHJvamVjdC5cbiAgICovXG4gIHJlYWRvbmx5IHBhdGhzPzogc3RyaW5nW10gfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZml4IGxpbnRpbmcgaXNzdWVzIGF1dG9tYXRpY2FsbHkuXG4gICAqL1xuICByZWFkb25seSBzaG91bGRGaXg/OiBib29sZWFuIHwgdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIExpbnQgbWFya2Rvd24gZG9jdW1lbnRhdGlvbiB1c2luZyBgbWFya2Rvd25saW50LWNsaTJgIGFuZCBgbGlua2luYXRvcmAuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSB7QGxpbmsgTGludFBhcmFtc30uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsaW50KHBhcmFtcz86IExpbnRQYXJhbXMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgeyBwYXRocywgc2hvdWxkRml4ID0gZmFsc2UgfSA9IHBhcmFtcyA/PyB7fTtcbiAgY29uc3QgY29uZmlnRmlsZXMgPSBbXG4gICAgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuTWFya2Rvd25saW50Q2xpMkNvbmZpZ0pzb25jLFxuICAgIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLk1hcmtkb3dubGludENsaTJDb25maWdZYW1sLFxuICAgIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLk1hcmtkb3dubGludENsaTJDb25maWdDanMsXG4gICAgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuTWFya2Rvd25saW50Q2xpMkNvbmZpZ01qcyxcbiAgICBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5NYXJrZG93bmxpbnRDb25maWdKc29uYyxcbiAgICBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5NYXJrZG93bmxpbnRDb25maWdKc29uLFxuICAgIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLk1hcmtkb3dubGludENvbmZpZ1lhbWwsXG4gICAgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuTWFya2Rvd25saW50Q29uZmlnWW1sLFxuICAgIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLk1hcmtkb3dubGludENvbmZpZ0NqcyxcbiAgICBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5NYXJrZG93bmxpbnRDb25maWdNanNcbiAgXTtcblxuICBjb25zdCBjb25maWdGaWxlRXhpc3QgPSBjb25maWdGaWxlcy5zb21lKChjb25maWdGaWxlKSA9PiB7XG4gICAgY29uc3QgY29uZmlnRmlsZVBhdGggPSByZXNvbHZlUGF0aEZyb21Sb290U2FmZShjb25maWdGaWxlKTtcbiAgICByZXR1cm4gZXhpc3RzU3luYyhjb25maWdGaWxlUGF0aCk7XG4gIH0pO1xuXG4gIGlmICghY29uZmlnRmlsZUV4aXN0KSB7XG4gICAgZ2V0TGliRGVidWdnZXIoJ21hcmtkb3dubGludDpsaW50JykoJ21hcmtkb3dubGludCBjb25maWd1cmF0aW9uIGZpbGUgbm90IGZvdW5kLiBDcmVhdGluZyBkZWZhdWx0IGNvbmZpZy4uLicpO1xuICAgIGNvbnN0IHBhY2thZ2VGb2xkZXIgPSBnZXRSb290Rm9sZGVyKGdldEZvbGRlck5hbWUoaW1wb3J0Lm1ldGEudXJsKSk7XG4gICAgYXNzZXJ0Tm9uTnVsbGFibGUocGFja2FnZUZvbGRlciwgJ1BhY2thZ2UgZm9sZGVyIG5vdCBmb3VuZCcpO1xuICAgIGF3YWl0IGNwKFxuICAgICAgam9pbihwYWNrYWdlRm9sZGVyLCBPYnNpZGlhbkRldlV0aWxzUmVwb1BhdGhzLkRpc3QsIE9ic2lkaWFuRGV2VXRpbHNSZXBvUGF0aHMuTWFya2Rvd25saW50Q2xpMkNvbmZpZ01qcyksXG4gICAgICByZXNvbHZlUGF0aEZyb21Sb290U2FmZShPYnNpZGlhblBsdWdpblJlcG9QYXRocy5NYXJrZG93bmxpbnRDbGkyQ29uZmlnTWpzKVxuICAgICk7XG5cbiAgICBhd2FpdCBjcChcbiAgICAgIGpvaW4ocGFja2FnZUZvbGRlciwgT2JzaWRpYW5EZXZVdGlsc1JlcG9QYXRocy5EaXN0LCBPYnNpZGlhbkRldlV0aWxzUmVwb1BhdGhzLk1hcmtkb3dubGludENsaTJDb25maWdNdHMpLFxuICAgICAgcmVzb2x2ZVBhdGhGcm9tUm9vdFNhZmUoT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuTWFya2Rvd25saW50Q2xpMkNvbmZpZ010cylcbiAgICApO1xuICB9XG5cbiAgLyogdjggaWdub3JlIHN0YXJ0IC0tIFRoZSBwYXRocy1wcm92aWRlZCBicmFuY2hlcyBhcmUgb25seSBleGVyY2lzZWQgYnkgY29uc3VtZXIgcHJvamVjdHMgcGFzc2luZyBmaWxlIGxpc3RzLiAqL1xuICBjb25zdCB0YXJnZXRzID0gcGF0aHM/Lmxlbmd0aCA/IHBhdGhzIDogW09ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkN1cnJlbnRGb2xkZXJdO1xuICAvKiB2OCBpZ25vcmUgc3RvcCAqL1xuICBhd2FpdCBleGVjRnJvbVJvb3QoWyducHgnLCAnbWFya2Rvd25saW50LWNsaTInLCAuLi4oc2hvdWxkRml4ID8gWyctLWZpeCddIDogW10pLCB7IGJhdGNoZWRBcmdzOiB0YXJnZXRzIH1dKTtcblxuICAvKiB2OCBpZ25vcmUgc3RhcnQgLS0gVGhlIHBhdGhzLXByb3ZpZGVkIGJyYW5jaCBpcyBvbmx5IGV4ZXJjaXNlZCBieSBjb25zdW1lciBwcm9qZWN0cyBwYXNzaW5nIGZpbGUgbGlzdHMuICovXG4gIGNvbnN0IHJvb3RGb2xkZXIgPSBnZXRSb290Rm9sZGVyKCkgPz8gcHJvY2Vzcy5jd2QoKTtcbiAgY29uc3QgbWRGaWxlcyA9IHBhdGhzPy5sZW5ndGhcbiAgICA/IHBhdGhzLm1hcCgocCkgPT4gcmVsYXRpdmUocm9vdEZvbGRlciwgcCkucmVwbGFjZSgvXFxcXC9nLCAnLycpIHx8IHApXG4gICAgOiBhd2FpdCB0b0FycmF5KGdsb2IoWycqKi8qLm1kJ10sIHtcbiAgICAgIGV4Y2x1ZGU6IFtcbiAgICAgICAgJy5naXQvKionLFxuICAgICAgICAnZGlzdC8qKicsXG4gICAgICAgICdub2RlX21vZHVsZXMvKionXG4gICAgICBdXG4gICAgfSkpO1xuICAvKiB2OCBpZ25vcmUgc3RvcCAqL1xuICBhd2FpdCBleGVjRnJvbVJvb3QoW1xuICAgICducHgnLFxuICAgICdsaW5raW5hdG9yJyxcbiAgICAnLS1yZXRyeScsXG4gICAgJy0tcmV0cnktZXJyb3JzJyxcbiAgICAnLS1yZXRyeS1lcnJvcnMtY291bnQnLFxuICAgICczJyxcbiAgICAnLS1yZXRyeS1lcnJvcnMtaml0dGVyJyxcbiAgICAnNScsXG4gICAgJy0tdXJsLXJld3JpdGUtc2VhcmNoJyxcbiAgICAnaHR0cHM6Ly93d3dcXFxcLm5wbWpzXFxcXC5jb20vcGFja2FnZS8nLFxuICAgICctLXVybC1yZXdyaXRlLXJlcGxhY2UnLFxuICAgICdodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy8nLFxuICAgIHsgYmF0Y2hlZEFyZ3M6IG1kRmlsZXMgfVxuICBdKTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBTUEsU0FBUyxrQkFBa0I7QUFDM0I7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUCxTQUFTLGdCQUFnQjtBQUV6QixTQUFTLGVBQWU7QUFDeEIsU0FBUyxzQkFBc0I7QUFDL0IsU0FBUywrQkFBK0I7QUFDeEM7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUCxTQUFTLHlCQUF5QjtBQUNsQyxTQUFTLGlDQUFpQztBQUMxQztBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFzQlAsZUFBc0IsS0FBSyxRQUFvQztBQUM3RCxRQUFNLEVBQUUsT0FBTyxZQUFZLE1BQU0sSUFBSSxVQUFVLENBQUM7QUFDaEQsUUFBTSxjQUFjO0FBQUEsSUFDbEIsd0JBQXdCO0FBQUEsSUFDeEIsd0JBQXdCO0FBQUEsSUFDeEIsd0JBQXdCO0FBQUEsSUFDeEIsd0JBQXdCO0FBQUEsSUFDeEIsd0JBQXdCO0FBQUEsSUFDeEIsd0JBQXdCO0FBQUEsSUFDeEIsd0JBQXdCO0FBQUEsSUFDeEIsd0JBQXdCO0FBQUEsSUFDeEIsd0JBQXdCO0FBQUEsSUFDeEIsd0JBQXdCO0FBQUEsRUFDMUI7QUFFQSxRQUFNLGtCQUFrQixZQUFZLEtBQUssQ0FBQyxlQUFlO0FBQ3ZELFVBQU0saUJBQWlCLHdCQUF3QixVQUFVO0FBQ3pELFdBQU8sV0FBVyxjQUFjO0FBQUEsRUFDbEMsQ0FBQztBQUVELE1BQUksQ0FBQyxpQkFBaUI7QUFDcEIsbUJBQWUsbUJBQW1CLEVBQUUsdUVBQXVFO0FBQzNHLFVBQU0sZ0JBQWdCLGNBQWMsY0FBYyxZQUFZLEdBQUcsQ0FBQztBQUNsRSxzQkFBa0IsZUFBZSwwQkFBMEI7QUFDM0QsVUFBTTtBQUFBLE1BQ0osS0FBSyxlQUFlLDBCQUEwQixNQUFNLDBCQUEwQix5QkFBeUI7QUFBQSxNQUN2Ryx3QkFBd0Isd0JBQXdCLHlCQUF5QjtBQUFBLElBQzNFO0FBRUEsVUFBTTtBQUFBLE1BQ0osS0FBSyxlQUFlLDBCQUEwQixNQUFNLDBCQUEwQix5QkFBeUI7QUFBQSxNQUN2Ryx3QkFBd0Isd0JBQXdCLHlCQUF5QjtBQUFBLElBQzNFO0FBQUEsRUFDRjtBQUdBLFFBQU0sVUFBVSxPQUFPLFNBQVMsUUFBUSxDQUFDLHdCQUF3QixhQUFhO0FBRTlFLFFBQU0sYUFBYSxDQUFDLE9BQU8scUJBQXFCLEdBQUksWUFBWSxDQUFDLE9BQU8sSUFBSSxDQUFDLEdBQUksRUFBRSxhQUFhLFFBQVEsQ0FBQyxDQUFDO0FBRzFHLFFBQU0sYUFBYSxjQUFjLEtBQUssUUFBUSxJQUFJO0FBQ2xELFFBQU0sVUFBVSxPQUFPLFNBQ25CLE1BQU0sSUFBSSxDQUFDLE1BQU0sU0FBUyxZQUFZLENBQUMsRUFBRSxRQUFRLE9BQU8sR0FBRyxLQUFLLENBQUMsSUFDakUsTUFBTSxRQUFRLEtBQUssQ0FBQyxTQUFTLEdBQUc7QUFBQSxJQUNoQyxTQUFTO0FBQUEsTUFDUDtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsSUFDRjtBQUFBLEVBQ0YsQ0FBQyxDQUFDO0FBRUosUUFBTSxhQUFhO0FBQUEsSUFDakI7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0EsRUFBRSxhQUFhLFFBQVE7QUFBQSxFQUN6QixDQUFDO0FBQ0g7IiwKICAibmFtZXMiOiBbXQp9Cg==
@@ -79,4 +79,4 @@ export {
79
79
  resolvePathFromRootSafe,
80
80
  toRelativeFromRoot
81
81
  };
82
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL3NjcmlwdC11dGlscy9yb290LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogQ29udGFpbnMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIGV4ZWN1dGluZyBjb21tYW5kcyBmcm9tIHRoZSByb290IGZvbGRlciBvZiBhIHByb2plY3QsXG4gKiByZXNvbHZpbmcgcGF0aHMgcmVsYXRpdmUgdG8gdGhlIHJvb3QuXG4gKi9cblxuaW1wb3J0IHsgZXhpc3RzU3luYyB9IGZyb20gJ25vZGU6ZnMnO1xuXG5pbXBvcnQgdHlwZSB7XG4gIENvbW1hbmRQYXJ0LFxuICBFeGVjRGV0YWlsZWRPcHRpb25zLFxuICBFeGVjT3B0aW9uLFxuICBFeGVjUmVzdWx0LFxuICBFeGVjU2ltcGxlT3B0aW9uc1xufSBmcm9tICcuL2V4ZWMudHMnO1xuXG5pbXBvcnQge1xuICBkaXJuYW1lLFxuICBqb2luLFxuICByZWxhdGl2ZSxcbiAgcmVzb2x2ZSxcbiAgdG9Qb3NpeFBhdGhcbn0gZnJvbSAnLi4vcGF0aC50cyc7XG5pbXBvcnQgeyBleGVjIH0gZnJvbSAnLi9leGVjLnRzJztcbmltcG9ydCB7IE9ic2lkaWFuRGV2VXRpbHNSZXBvUGF0aHMgfSBmcm9tICcuL29ic2lkaWFuLWRldi11dGlscy1yZXBvLXBhdGhzLnRzJztcblxuLyoqXG4gKiBFeGVjdXRlcyBhIGNvbW1hbmQgZnJvbSB0aGUgcm9vdCBmb2xkZXIgb2YgdGhlIHByb2plY3QuXG4gKlxuICogQHBhcmFtIGNvbW1hbmQgLSBUaGUgY29tbWFuZCB0byBleGVjdXRlLiBJdCBjYW4gYmUgYSBzdHJpbmcgb3IgYW4gYXJyYXkgb2Ygc3RyaW5ncy5cbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIHRoZSBleGVjdXRpb24uXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIG91dHB1dCBvZiB0aGUgY29tbWFuZC5cbiAqIEB0aHJvd3MgSWYgdGhlIGNvbW1hbmQgZmFpbHMgd2l0aCBhIG5vbi16ZXJvIGV4aXQgY29kZSBhbmQgaWdub3JlRXhpdENvZGUgaXMgYGZhbHNlYC5cbiAqICAgICAgICAgVGhlIGVycm9yIG1lc3NhZ2UgaW5jbHVkZXMgdGhlIGV4aXQgY29kZSBhbmQgc3RkZXJyLlxuICogICAgICAgICBJZiBhbiBlcnJvciBvY2N1cnMgZHVyaW5nIHRoZSBleGVjdXRpb24gYW5kIGlnbm9yZUV4aXRDb2RlIGlzIGB0cnVlYCxcbiAqICAgICAgICAgdGhlIGVycm9yIGlzIHJlc29sdmVkIHdpdGggdGhlIHN0ZG91dCBhbmQgc3RkZXJyLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZXhlY0Zyb21Sb290KGNvbW1hbmQ6IENvbW1hbmRQYXJ0W10gfCBzdHJpbmcsIG9wdGlvbnM/OiBFeGVjU2ltcGxlT3B0aW9ucyk6IFByb21pc2U8c3RyaW5nPjtcbi8qKlxuICogRXhlY3V0ZXMgYSBjb21tYW5kIGZyb20gdGhlIHJvb3QgZm9sZGVyIG9mIHRoZSBwcm9qZWN0LlxuICpcbiAqIEBwYXJhbSBjb21tYW5kIC0gVGhlIGNvbW1hbmQgdG8gZXhlY3V0ZS4gSXQgY2FuIGJlIGEgc3RyaW5nIG9yIGFuIGFycmF5IG9mIHN0cmluZ3MuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciB0aGUgZXhlY3V0aW9uLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aXRoIEV4ZWNSZXN1bHQgb2JqZWN0LlxuICogICAgICAgICAgVGhlIEV4ZWNSZXN1bHQgb2JqZWN0IGNvbnRhaW5zIHRoZSBleGl0IGNvZGUsIGV4aXQgc2lnbmFsLCBzdGRlcnIsIGFuZCBzdGRvdXQuXG4gKiBAdGhyb3dzIElmIHRoZSBjb21tYW5kIGZhaWxzIHdpdGggYSBub24temVybyBleGl0IGNvZGUgYW5kIGlnbm9yZUV4aXRDb2RlIGlzIGBmYWxzZWAuXG4gKiAgICAgICAgIFRoZSBlcnJvciBtZXNzYWdlIGluY2x1ZGVzIHRoZSBleGl0IGNvZGUgYW5kIHN0ZGVyci5cbiAqICAgICAgICAgSWYgYW4gZXJyb3Igb2NjdXJzIGR1cmluZyB0aGUgZXhlY3V0aW9uIGFuZCBpZ25vcmVFeGl0Q29kZSBpcyBgdHJ1ZWAsXG4gKiAgICAgICAgIHRoZSBlcnJvciBpcyByZXNvbHZlZCB3aXRoIHRoZSBzdGRvdXQgYW5kIHN0ZGVyci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4ZWNGcm9tUm9vdChjb21tYW5kOiBDb21tYW5kUGFydFtdIHwgc3RyaW5nLCBvcHRpb25zOiBFeGVjRGV0YWlsZWRPcHRpb25zKTogUHJvbWlzZTxFeGVjUmVzdWx0Pjtcbi8qKlxuICogRXhlY3V0ZXMgYSBjb21tYW5kIGZyb20gdGhlIHJvb3QgZm9sZGVyIG9mIHRoZSBwcm9qZWN0LlxuICpcbiAqIEBwYXJhbSBjb21tYW5kIC0gVGhlIGNvbW1hbmQgdG8gZXhlY3V0ZS4gSXQgY2FuIGJlIGEgc3RyaW5nIG9yIGFuIGFycmF5IG9mIHN0cmluZ3MuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciB0aGUgZXhlY3V0aW9uLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aXRoIHRoZSBvdXRwdXQgb2YgdGhlIGNvbW1hbmQgb3IgYW4gRXhlY1Jlc3VsdCBvYmplY3QuXG4gKiAgICAgICAgICBUaGUgRXhlY1Jlc3VsdCBvYmplY3QgY29udGFpbnMgdGhlIGV4aXQgY29kZSwgZXhpdCBzaWduYWwsIHN0ZGVyciwgYW5kIHN0ZG91dC5cbiAqIEB0aHJvd3MgSWYgdGhlIGNvbW1hbmQgZmFpbHMgd2l0aCBhIG5vbi16ZXJvIGV4aXQgY29kZSBhbmQgaWdub3JlRXhpdENvZGUgaXMgYGZhbHNlYC5cbiAqICAgICAgICAgVGhlIGVycm9yIG1lc3NhZ2UgaW5jbHVkZXMgdGhlIGV4aXQgY29kZSBhbmQgc3RkZXJyLlxuICogICAgICAgICBJZiBhbiBlcnJvciBvY2N1cnMgZHVyaW5nIHRoZSBleGVjdXRpb24gYW5kIGlnbm9yZUV4aXRDb2RlIGlzIGB0cnVlYCxcbiAqICAgICAgICAgdGhlIGVycm9yIGlzIHJlc29sdmVkIHdpdGggdGhlIHN0ZG91dCBhbmQgc3RkZXJyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZXhlY0Zyb21Sb290KGNvbW1hbmQ6IENvbW1hbmRQYXJ0W10gfCBzdHJpbmcsIG9wdGlvbnM6IEV4ZWNPcHRpb24gPSB7fSk6IFByb21pc2U8RXhlY1Jlc3VsdCB8IHN0cmluZz4ge1xuICBsZXQgcm9vdCA9IGdldFJvb3RGb2xkZXIob3B0aW9ucy5jd2QpO1xuXG4gIGlmICghcm9vdCkge1xuICAgIGlmIChvcHRpb25zLnNob3VsZEZhaWxJZkNhbGxlZEZyb21PdXRzaWRlUm9vdCA/PyB0cnVlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvdWxkIG5vdCBmaW5kIHJvb3QgZm9sZGVyJyk7XG4gICAgfVxuXG4gICAgcm9vdCA9IG9wdGlvbnMuY3dkID8/IHByb2Nlc3MuY3dkKCk7XG4gIH1cblxuICBpZiAob3B0aW9ucy5zaG91bGRJbmNsdWRlRGV0YWlscykge1xuICAgIHJldHVybiBleGVjKGNvbW1hbmQsIHsgLi4ub3B0aW9ucywgY3dkOiByb290LCBzaG91bGRJbmNsdWRlRGV0YWlsczogdHJ1ZSB9KTtcbiAgfVxuXG4gIHJldHVybiBleGVjKGNvbW1hbmQsIHsgLi4ub3B0aW9ucywgY3dkOiByb290LCBzaG91bGRJbmNsdWRlRGV0YWlsczogZmFsc2UgfSk7XG59XG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSByb290IGZvbGRlciBvZiB0aGUgcHJvamVjdC5cbiAqXG4gKiBAcGFyYW0gY3dkIC0gVGhlIGN1cnJlbnQgd29ya2luZyBmb2xkZXIgdG8gcmVzb2x2ZSBmcm9tLlxuICogQHJldHVybnMgVGhlIHBhdGggdG8gdGhlIHJvb3QgZm9sZGVyLlxuICogQHRocm93cyBJZiB0aGUgcm9vdCBmb2xkZXIgY2Fubm90IGJlIGZvdW5kLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Um9vdEZvbGRlcihjd2Q/OiBzdHJpbmcpOiBudWxsIHwgc3RyaW5nIHtcbiAgbGV0IGN1cnJlbnRGb2xkZXIgPSB0b1Bvc2l4UGF0aChjd2QgPz8gcHJvY2Vzcy5jd2QoKSk7XG4gIHdoaWxlIChjdXJyZW50Rm9sZGVyICE9PSBPYnNpZGlhbkRldlV0aWxzUmVwb1BhdGhzLkN1cnJlbnRGb2xkZXIgYXMgc3RyaW5nICYmIGN1cnJlbnRGb2xkZXIgIT09IE9ic2lkaWFuRGV2VXRpbHNSZXBvUGF0aHMuUm9vdEZvbGRlciBhcyBzdHJpbmcpIHtcbiAgICBpZiAoZXhpc3RzU3luYyhqb2luKGN1cnJlbnRGb2xkZXIsIE9ic2lkaWFuRGV2VXRpbHNSZXBvUGF0aHMuUGFja2FnZUpzb24pKSkge1xuICAgICAgcmV0dXJuIHRvUG9zaXhQYXRoKGN1cnJlbnRGb2xkZXIpO1xuICAgIH1cbiAgICBjdXJyZW50Rm9sZGVyID0gZGlybmFtZShjdXJyZW50Rm9sZGVyKTtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuXG4vKipcbiAqIFJlc29sdmVzIGEgcGF0aCByZWxhdGl2ZSB0byB0aGUgcm9vdCBmb2xkZXIgb2YgdGhlIHByb2plY3QuXG4gKlxuICogQHBhcmFtIHBhdGggLSBUaGUgcGF0aCB0byByZXNvbHZlLlxuICogQHBhcmFtIGN3ZCAtIFRoZSBjdXJyZW50IHdvcmtpbmcgZm9sZGVyIHRvIHJlc29sdmUgZnJvbS5cbiAqIEByZXR1cm5zIFRoZSByZXNvbHZlZCBhYnNvbHV0ZSBwYXRoLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZVBhdGhGcm9tUm9vdChwYXRoOiBzdHJpbmcsIGN3ZD86IHN0cmluZyk6IG51bGwgfCBzdHJpbmcge1xuICBjb25zdCByb290Rm9sZGVyID0gZ2V0Um9vdEZvbGRlcihjd2QpO1xuICBpZiAoIXJvb3RGb2xkZXIpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJldHVybiByZXNvbHZlKHJvb3RGb2xkZXIsIHBhdGgpO1xufVxuXG4vKipcbiAqIFJlc29sdmVzIGEgcGF0aCByZWxhdGl2ZSB0byB0aGUgcm9vdCBmb2xkZXIsIHJldHVybmluZyB0aGUgcmVzb2x2ZWQgcGF0aCBvciB0aGUgb3JpZ2luYWwgcGF0aCBpZiBpdCBkb2VzIG5vdCBleGlzdC5cbiAqXG4gKiBAcGFyYW0gcGF0aCAtIFRoZSBwYXRoIHRvIHJlc29sdmUuXG4gKiBAcGFyYW0gY3dkIC0gVGhlIGN1cnJlbnQgd29ya2luZyBmb2xkZXIgdG8gcmVzb2x2ZSBmcm9tLlxuICogQHJldHVybnMgVGhlIHJlc29sdmVkIHBhdGggb3IgdGhlIG9yaWdpbmFsIHBhdGggaWYgaXQgZG9lcyBub3QgZXhpc3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlUGF0aEZyb21Sb290U2FmZShwYXRoOiBzdHJpbmcsIGN3ZD86IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiByZXNvbHZlUGF0aEZyb21Sb290KHBhdGgsIGN3ZCkgPz8gcGF0aDtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBhYnNvbHV0ZSBwYXRoIHRvIGEgcmVsYXRpdmUgcGF0aCBmcm9tIHRoZSByb290IGZvbGRlciBvZiB0aGUgcHJvamVjdC5cbiAqXG4gKiBAcGFyYW0gcGF0aCAtIFRoZSBhYnNvbHV0ZSBwYXRoIHRvIGNvbnZlcnQuXG4gKiBAcGFyYW0gY3dkIC0gVGhlIGN1cnJlbnQgd29ya2luZyBmb2xkZXIgdG8gcmVzb2x2ZSBmcm9tLlxuICogQHJldHVybnMgVGhlIHJlbGF0aXZlIHBhdGggZnJvbSB0aGUgcm9vdCBmb2xkZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b1JlbGF0aXZlRnJvbVJvb3QocGF0aDogc3RyaW5nLCBjd2Q/OiBzdHJpbmcpOiBudWxsIHwgc3RyaW5nIHtcbiAgY29uc3Qgcm9vdEZvbGRlciA9IGdldFJvb3RGb2xkZXIoY3dkKTtcbiAgaWYgKCFyb290Rm9sZGVyKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwYXRoID0gdG9Qb3NpeFBhdGgocGF0aCk7XG4gIHJldHVybiByZWxhdGl2ZShyb290Rm9sZGVyLCBwYXRoKTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBT0EsU0FBUyxrQkFBa0I7QUFVM0I7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUCxTQUFTLFlBQVk7QUFDckIsU0FBUyxpQ0FBaUM7QUF1Q25DLFNBQVMsYUFBYSxTQUFpQyxVQUFzQixDQUFDLEdBQWlDO0FBQ3BILE1BQUksT0FBTyxjQUFjLFFBQVEsR0FBRztBQUVwQyxNQUFJLENBQUMsTUFBTTtBQUNULFFBQUksUUFBUSxxQ0FBcUMsTUFBTTtBQUNyRCxZQUFNLElBQUksTUFBTSw0QkFBNEI7QUFBQSxJQUM5QztBQUVBLFdBQU8sUUFBUSxPQUFPLFFBQVEsSUFBSTtBQUFBLEVBQ3BDO0FBRUEsTUFBSSxRQUFRLHNCQUFzQjtBQUNoQyxXQUFPLEtBQUssU0FBUyxFQUFFLEdBQUcsU0FBUyxLQUFLLE1BQU0sc0JBQXNCLEtBQUssQ0FBQztBQUFBLEVBQzVFO0FBRUEsU0FBTyxLQUFLLFNBQVMsRUFBRSxHQUFHLFNBQVMsS0FBSyxNQUFNLHNCQUFzQixNQUFNLENBQUM7QUFDN0U7QUFTTyxTQUFTLGNBQWMsS0FBNkI7QUFDekQsTUFBSSxnQkFBZ0IsWUFBWSxPQUFPLFFBQVEsSUFBSSxDQUFDO0FBQ3BELFNBQU8sa0JBQWtCLDBCQUEwQixpQkFBMkIsa0JBQWtCLDBCQUEwQixZQUFzQjtBQUM5SSxRQUFJLFdBQVcsS0FBSyxlQUFlLDBCQUEwQixXQUFXLENBQUMsR0FBRztBQUMxRSxhQUFPLFlBQVksYUFBYTtBQUFBLElBQ2xDO0FBQ0Esb0JBQWdCLFFBQVEsYUFBYTtBQUFBLEVBQ3ZDO0FBRUEsU0FBTztBQUNUO0FBU08sU0FBUyxvQkFBb0IsTUFBYyxLQUE2QjtBQUM3RSxRQUFNLGFBQWEsY0FBYyxHQUFHO0FBQ3BDLE1BQUksQ0FBQyxZQUFZO0FBQ2YsV0FBTztBQUFBLEVBQ1Q7QUFFQSxTQUFPLFFBQVEsWUFBWSxJQUFJO0FBQ2pDO0FBU08sU0FBUyx3QkFBd0IsTUFBYyxLQUFzQjtBQUMxRSxTQUFPLG9CQUFvQixNQUFNLEdBQUcsS0FBSztBQUMzQztBQVNPLFNBQVMsbUJBQW1CLE1BQWMsS0FBNkI7QUFDNUUsUUFBTSxhQUFhLGNBQWMsR0FBRztBQUNwQyxNQUFJLENBQUMsWUFBWTtBQUNmLFdBQU87QUFBQSxFQUNUO0FBRUEsU0FBTyxZQUFZLElBQUk7QUFDdkIsU0FBTyxTQUFTLFlBQVksSUFBSTtBQUNsQzsiLAogICJuYW1lcyI6IFtdCn0K
82
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL3NjcmlwdC11dGlscy9yb290LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogQ29udGFpbnMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIGV4ZWN1dGluZyBjb21tYW5kcyBmcm9tIHRoZSByb290IGZvbGRlciBvZiBhIHByb2plY3QsXG4gKiByZXNvbHZpbmcgcGF0aHMgcmVsYXRpdmUgdG8gdGhlIHJvb3QuXG4gKi9cblxuaW1wb3J0IHsgZXhpc3RzU3luYyB9IGZyb20gJ25vZGU6ZnMnO1xuXG5pbXBvcnQgdHlwZSB7XG4gIENvbW1hbmRQYXJ0LFxuICBFeGVjRGV0YWlsZWRPcHRpb25zLFxuICBFeGVjT3B0aW9ucyxcbiAgRXhlY1Jlc3VsdCxcbiAgRXhlY1NpbXBsZU9wdGlvbnNcbn0gZnJvbSAnLi9leGVjLnRzJztcblxuaW1wb3J0IHtcbiAgZGlybmFtZSxcbiAgam9pbixcbiAgcmVsYXRpdmUsXG4gIHJlc29sdmUsXG4gIHRvUG9zaXhQYXRoXG59IGZyb20gJy4uL3BhdGgudHMnO1xuaW1wb3J0IHsgZXhlYyB9IGZyb20gJy4vZXhlYy50cyc7XG5pbXBvcnQgeyBPYnNpZGlhbkRldlV0aWxzUmVwb1BhdGhzIH0gZnJvbSAnLi9vYnNpZGlhbi1kZXYtdXRpbHMtcmVwby1wYXRocy50cyc7XG5cbi8qKlxuICogRXhlY3V0ZXMgYSBjb21tYW5kIGZyb20gdGhlIHJvb3QgZm9sZGVyIG9mIHRoZSBwcm9qZWN0LlxuICpcbiAqIEBwYXJhbSBjb21tYW5kIC0gVGhlIGNvbW1hbmQgdG8gZXhlY3V0ZS4gSXQgY2FuIGJlIGEgc3RyaW5nIG9yIGFuIGFycmF5IG9mIHN0cmluZ3MuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciB0aGUgZXhlY3V0aW9uLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aXRoIHRoZSBvdXRwdXQgb2YgdGhlIGNvbW1hbmQuXG4gKiBAdGhyb3dzIElmIHRoZSBjb21tYW5kIGZhaWxzIHdpdGggYSBub24temVybyBleGl0IGNvZGUgYW5kIGlnbm9yZUV4aXRDb2RlIGlzIGBmYWxzZWAuXG4gKiAgICAgICAgIFRoZSBlcnJvciBtZXNzYWdlIGluY2x1ZGVzIHRoZSBleGl0IGNvZGUgYW5kIHN0ZGVyci5cbiAqICAgICAgICAgSWYgYW4gZXJyb3Igb2NjdXJzIGR1cmluZyB0aGUgZXhlY3V0aW9uIGFuZCBpZ25vcmVFeGl0Q29kZSBpcyBgdHJ1ZWAsXG4gKiAgICAgICAgIHRoZSBlcnJvciBpcyByZXNvbHZlZCB3aXRoIHRoZSBzdGRvdXQgYW5kIHN0ZGVyci5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGV4ZWNGcm9tUm9vdChjb21tYW5kOiBDb21tYW5kUGFydFtdIHwgc3RyaW5nLCBvcHRpb25zPzogRXhlY1NpbXBsZU9wdGlvbnMpOiBQcm9taXNlPHN0cmluZz47XG4vKipcbiAqIEV4ZWN1dGVzIGEgY29tbWFuZCBmcm9tIHRoZSByb290IGZvbGRlciBvZiB0aGUgcHJvamVjdC5cbiAqXG4gKiBAcGFyYW0gY29tbWFuZCAtIFRoZSBjb21tYW5kIHRvIGV4ZWN1dGUuIEl0IGNhbiBiZSBhIHN0cmluZyBvciBhbiBhcnJheSBvZiBzdHJpbmdzLlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgdGhlIGV4ZWN1dGlvbi5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2l0aCBFeGVjUmVzdWx0IG9iamVjdC5cbiAqICAgICAgICAgIFRoZSBFeGVjUmVzdWx0IG9iamVjdCBjb250YWlucyB0aGUgZXhpdCBjb2RlLCBleGl0IHNpZ25hbCwgc3RkZXJyLCBhbmQgc3Rkb3V0LlxuICogQHRocm93cyBJZiB0aGUgY29tbWFuZCBmYWlscyB3aXRoIGEgbm9uLXplcm8gZXhpdCBjb2RlIGFuZCBpZ25vcmVFeGl0Q29kZSBpcyBgZmFsc2VgLlxuICogICAgICAgICBUaGUgZXJyb3IgbWVzc2FnZSBpbmNsdWRlcyB0aGUgZXhpdCBjb2RlIGFuZCBzdGRlcnIuXG4gKiAgICAgICAgIElmIGFuIGVycm9yIG9jY3VycyBkdXJpbmcgdGhlIGV4ZWN1dGlvbiBhbmQgaWdub3JlRXhpdENvZGUgaXMgYHRydWVgLFxuICogICAgICAgICB0aGUgZXJyb3IgaXMgcmVzb2x2ZWQgd2l0aCB0aGUgc3Rkb3V0IGFuZCBzdGRlcnIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleGVjRnJvbVJvb3QoY29tbWFuZDogQ29tbWFuZFBhcnRbXSB8IHN0cmluZywgb3B0aW9uczogRXhlY0RldGFpbGVkT3B0aW9ucyk6IFByb21pc2U8RXhlY1Jlc3VsdD47XG4vKipcbiAqIEV4ZWN1dGVzIGEgY29tbWFuZCBmcm9tIHRoZSByb290IGZvbGRlciBvZiB0aGUgcHJvamVjdC5cbiAqXG4gKiBAcGFyYW0gY29tbWFuZCAtIFRoZSBjb21tYW5kIHRvIGV4ZWN1dGUuIEl0IGNhbiBiZSBhIHN0cmluZyBvciBhbiBhcnJheSBvZiBzdHJpbmdzLlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgdGhlIGV4ZWN1dGlvbi5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgb3V0cHV0IG9mIHRoZSBjb21tYW5kIG9yIGFuIEV4ZWNSZXN1bHQgb2JqZWN0LlxuICogICAgICAgICAgVGhlIEV4ZWNSZXN1bHQgb2JqZWN0IGNvbnRhaW5zIHRoZSBleGl0IGNvZGUsIGV4aXQgc2lnbmFsLCBzdGRlcnIsIGFuZCBzdGRvdXQuXG4gKiBAdGhyb3dzIElmIHRoZSBjb21tYW5kIGZhaWxzIHdpdGggYSBub24temVybyBleGl0IGNvZGUgYW5kIGlnbm9yZUV4aXRDb2RlIGlzIGBmYWxzZWAuXG4gKiAgICAgICAgIFRoZSBlcnJvciBtZXNzYWdlIGluY2x1ZGVzIHRoZSBleGl0IGNvZGUgYW5kIHN0ZGVyci5cbiAqICAgICAgICAgSWYgYW4gZXJyb3Igb2NjdXJzIGR1cmluZyB0aGUgZXhlY3V0aW9uIGFuZCBpZ25vcmVFeGl0Q29kZSBpcyBgdHJ1ZWAsXG4gKiAgICAgICAgIHRoZSBlcnJvciBpcyByZXNvbHZlZCB3aXRoIHRoZSBzdGRvdXQgYW5kIHN0ZGVyci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4ZWNGcm9tUm9vdChjb21tYW5kOiBDb21tYW5kUGFydFtdIHwgc3RyaW5nLCBvcHRpb25zOiBFeGVjT3B0aW9ucyA9IHt9KTogUHJvbWlzZTxFeGVjUmVzdWx0IHwgc3RyaW5nPiB7XG4gIGxldCByb290ID0gZ2V0Um9vdEZvbGRlcihvcHRpb25zLmN3ZCk7XG5cbiAgaWYgKCFyb290KSB7XG4gICAgaWYgKG9wdGlvbnMuc2hvdWxkRmFpbElmQ2FsbGVkRnJvbU91dHNpZGVSb290ID8/IHRydWUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ291bGQgbm90IGZpbmQgcm9vdCBmb2xkZXInKTtcbiAgICB9XG5cbiAgICByb290ID0gb3B0aW9ucy5jd2QgPz8gcHJvY2Vzcy5jd2QoKTtcbiAgfVxuXG4gIGlmIChvcHRpb25zLnNob3VsZEluY2x1ZGVEZXRhaWxzKSB7XG4gICAgcmV0dXJuIGV4ZWMoY29tbWFuZCwgeyAuLi5vcHRpb25zLCBjd2Q6IHJvb3QsIHNob3VsZEluY2x1ZGVEZXRhaWxzOiB0cnVlIH0pO1xuICB9XG5cbiAgcmV0dXJuIGV4ZWMoY29tbWFuZCwgeyAuLi5vcHRpb25zLCBjd2Q6IHJvb3QsIHNob3VsZEluY2x1ZGVEZXRhaWxzOiBmYWxzZSB9KTtcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgdGhlIHJvb3QgZm9sZGVyIG9mIHRoZSBwcm9qZWN0LlxuICpcbiAqIEBwYXJhbSBjd2QgLSBUaGUgY3VycmVudCB3b3JraW5nIGZvbGRlciB0byByZXNvbHZlIGZyb20uXG4gKiBAcmV0dXJucyBUaGUgcGF0aCB0byB0aGUgcm9vdCBmb2xkZXIuXG4gKiBAdGhyb3dzIElmIHRoZSByb290IGZvbGRlciBjYW5ub3QgYmUgZm91bmQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRSb290Rm9sZGVyKGN3ZD86IHN0cmluZyk6IG51bGwgfCBzdHJpbmcge1xuICBsZXQgY3VycmVudEZvbGRlciA9IHRvUG9zaXhQYXRoKGN3ZCA/PyBwcm9jZXNzLmN3ZCgpKTtcbiAgd2hpbGUgKGN1cnJlbnRGb2xkZXIgIT09IE9ic2lkaWFuRGV2VXRpbHNSZXBvUGF0aHMuQ3VycmVudEZvbGRlciBhcyBzdHJpbmcgJiYgY3VycmVudEZvbGRlciAhPT0gT2JzaWRpYW5EZXZVdGlsc1JlcG9QYXRocy5Sb290Rm9sZGVyIGFzIHN0cmluZykge1xuICAgIGlmIChleGlzdHNTeW5jKGpvaW4oY3VycmVudEZvbGRlciwgT2JzaWRpYW5EZXZVdGlsc1JlcG9QYXRocy5QYWNrYWdlSnNvbikpKSB7XG4gICAgICByZXR1cm4gdG9Qb3NpeFBhdGgoY3VycmVudEZvbGRlcik7XG4gICAgfVxuICAgIGN1cnJlbnRGb2xkZXIgPSBkaXJuYW1lKGN1cnJlbnRGb2xkZXIpO1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG5cbi8qKlxuICogUmVzb2x2ZXMgYSBwYXRoIHJlbGF0aXZlIHRvIHRoZSByb290IGZvbGRlciBvZiB0aGUgcHJvamVjdC5cbiAqXG4gKiBAcGFyYW0gcGF0aCAtIFRoZSBwYXRoIHRvIHJlc29sdmUuXG4gKiBAcGFyYW0gY3dkIC0gVGhlIGN1cnJlbnQgd29ya2luZyBmb2xkZXIgdG8gcmVzb2x2ZSBmcm9tLlxuICogQHJldHVybnMgVGhlIHJlc29sdmVkIGFic29sdXRlIHBhdGguXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlUGF0aEZyb21Sb290KHBhdGg6IHN0cmluZywgY3dkPzogc3RyaW5nKTogbnVsbCB8IHN0cmluZyB7XG4gIGNvbnN0IHJvb3RGb2xkZXIgPSBnZXRSb290Rm9sZGVyKGN3ZCk7XG4gIGlmICghcm9vdEZvbGRlcikge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcmV0dXJuIHJlc29sdmUocm9vdEZvbGRlciwgcGF0aCk7XG59XG5cbi8qKlxuICogUmVzb2x2ZXMgYSBwYXRoIHJlbGF0aXZlIHRvIHRoZSByb290IGZvbGRlciwgcmV0dXJuaW5nIHRoZSByZXNvbHZlZCBwYXRoIG9yIHRoZSBvcmlnaW5hbCBwYXRoIGlmIGl0IGRvZXMgbm90IGV4aXN0LlxuICpcbiAqIEBwYXJhbSBwYXRoIC0gVGhlIHBhdGggdG8gcmVzb2x2ZS5cbiAqIEBwYXJhbSBjd2QgLSBUaGUgY3VycmVudCB3b3JraW5nIGZvbGRlciB0byByZXNvbHZlIGZyb20uXG4gKiBAcmV0dXJucyBUaGUgcmVzb2x2ZWQgcGF0aCBvciB0aGUgb3JpZ2luYWwgcGF0aCBpZiBpdCBkb2VzIG5vdCBleGlzdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVQYXRoRnJvbVJvb3RTYWZlKHBhdGg6IHN0cmluZywgY3dkPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHJlc29sdmVQYXRoRnJvbVJvb3QocGF0aCwgY3dkKSA/PyBwYXRoO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIGFic29sdXRlIHBhdGggdG8gYSByZWxhdGl2ZSBwYXRoIGZyb20gdGhlIHJvb3QgZm9sZGVyIG9mIHRoZSBwcm9qZWN0LlxuICpcbiAqIEBwYXJhbSBwYXRoIC0gVGhlIGFic29sdXRlIHBhdGggdG8gY29udmVydC5cbiAqIEBwYXJhbSBjd2QgLSBUaGUgY3VycmVudCB3b3JraW5nIGZvbGRlciB0byByZXNvbHZlIGZyb20uXG4gKiBAcmV0dXJucyBUaGUgcmVsYXRpdmUgcGF0aCBmcm9tIHRoZSByb290IGZvbGRlci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvUmVsYXRpdmVGcm9tUm9vdChwYXRoOiBzdHJpbmcsIGN3ZD86IHN0cmluZyk6IG51bGwgfCBzdHJpbmcge1xuICBjb25zdCByb290Rm9sZGVyID0gZ2V0Um9vdEZvbGRlcihjd2QpO1xuICBpZiAoIXJvb3RGb2xkZXIpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHBhdGggPSB0b1Bvc2l4UGF0aChwYXRoKTtcbiAgcmV0dXJuIHJlbGF0aXZlKHJvb3RGb2xkZXIsIHBhdGgpO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFPQSxTQUFTLGtCQUFrQjtBQVUzQjtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQLFNBQVMsWUFBWTtBQUNyQixTQUFTLGlDQUFpQztBQXVDbkMsU0FBUyxhQUFhLFNBQWlDLFVBQXVCLENBQUMsR0FBaUM7QUFDckgsTUFBSSxPQUFPLGNBQWMsUUFBUSxHQUFHO0FBRXBDLE1BQUksQ0FBQyxNQUFNO0FBQ1QsUUFBSSxRQUFRLHFDQUFxQyxNQUFNO0FBQ3JELFlBQU0sSUFBSSxNQUFNLDRCQUE0QjtBQUFBLElBQzlDO0FBRUEsV0FBTyxRQUFRLE9BQU8sUUFBUSxJQUFJO0FBQUEsRUFDcEM7QUFFQSxNQUFJLFFBQVEsc0JBQXNCO0FBQ2hDLFdBQU8sS0FBSyxTQUFTLEVBQUUsR0FBRyxTQUFTLEtBQUssTUFBTSxzQkFBc0IsS0FBSyxDQUFDO0FBQUEsRUFDNUU7QUFFQSxTQUFPLEtBQUssU0FBUyxFQUFFLEdBQUcsU0FBUyxLQUFLLE1BQU0sc0JBQXNCLE1BQU0sQ0FBQztBQUM3RTtBQVNPLFNBQVMsY0FBYyxLQUE2QjtBQUN6RCxNQUFJLGdCQUFnQixZQUFZLE9BQU8sUUFBUSxJQUFJLENBQUM7QUFDcEQsU0FBTyxrQkFBa0IsMEJBQTBCLGlCQUEyQixrQkFBa0IsMEJBQTBCLFlBQXNCO0FBQzlJLFFBQUksV0FBVyxLQUFLLGVBQWUsMEJBQTBCLFdBQVcsQ0FBQyxHQUFHO0FBQzFFLGFBQU8sWUFBWSxhQUFhO0FBQUEsSUFDbEM7QUFDQSxvQkFBZ0IsUUFBUSxhQUFhO0FBQUEsRUFDdkM7QUFFQSxTQUFPO0FBQ1Q7QUFTTyxTQUFTLG9CQUFvQixNQUFjLEtBQTZCO0FBQzdFLFFBQU0sYUFBYSxjQUFjLEdBQUc7QUFDcEMsTUFBSSxDQUFDLFlBQVk7QUFDZixXQUFPO0FBQUEsRUFDVDtBQUVBLFNBQU8sUUFBUSxZQUFZLElBQUk7QUFDakM7QUFTTyxTQUFTLHdCQUF3QixNQUFjLEtBQXNCO0FBQzFFLFNBQU8sb0JBQW9CLE1BQU0sR0FBRyxLQUFLO0FBQzNDO0FBU08sU0FBUyxtQkFBbUIsTUFBYyxLQUE2QjtBQUM1RSxRQUFNLGFBQWEsY0FBYyxHQUFHO0FBQ3BDLE1BQUksQ0FBQyxZQUFZO0FBQ2YsV0FBTztBQUFBLEVBQ1Q7QUFFQSxTQUFPLFlBQVksSUFBSTtBQUN2QixTQUFPLFNBQVMsWUFBWSxJQUFJO0FBQ2xDOyIsCiAgIm5hbWVzIjogW10KfQo=
@@ -11,7 +11,7 @@ export interface TestCoverageParams extends TestParams {
11
11
  * Minimum coverage percentage required. If the actual coverage falls below
12
12
  * this threshold, the process exits with a non-zero code.
13
13
  */
14
- minCoverageInPercents?: number;
14
+ readonly minCoverageInPercents?: number;
15
15
  }
16
16
  /**
17
17
  * Parameters for running tests.
@@ -20,7 +20,7 @@ export interface TestParams {
20
20
  /**
21
21
  * The projects to run.
22
22
  */
23
- projects?: string[];
23
+ readonly projects?: string[];
24
24
  }
25
25
  /**
26
26
  * Runs the test suite.
@@ -49,4 +49,4 @@ export {
49
49
  testCoverage,
50
50
  testWatch
51
51
  };
52
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL3NjcmlwdC11dGlscy90ZXN0LXJ1bm5lcnMvdml0ZXN0LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgZnVuY3Rpb25zIGZvciBydW5uaW5nIHRlc3RzIHVzaW5nIHRoZSBWaXRlc3QgZnJhbWV3b3JrLlxuICovXG5cbi8qIHY4IGlnbm9yZSBzdGFydCAtLSBFeGVjdXRlcyB2aXRlc3QgYXMgYSBDTEkgc3VicHJvY2VzczsgY29ycmVjdG5lc3MgaXMgdmVyaWZpZWQgYnkgcnVubmluZyB0ZXN0cywgbm90IHVuaXQgdGVzdHMuICovXG5cbmltcG9ydCB7IGV4ZWNGcm9tUm9vdCB9IGZyb20gJy4uL3Jvb3QudHMnO1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHJ1bm5pbmcgdGVzdHMgd2l0aCBjb3ZlcmFnZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUZXN0Q292ZXJhZ2VQYXJhbXMgZXh0ZW5kcyBUZXN0UGFyYW1zIHtcbiAgLyoqXG4gICAqIE1pbmltdW0gY292ZXJhZ2UgcGVyY2VudGFnZSByZXF1aXJlZC4gSWYgdGhlIGFjdHVhbCBjb3ZlcmFnZSBmYWxscyBiZWxvd1xuICAgKiB0aGlzIHRocmVzaG9sZCwgdGhlIHByb2Nlc3MgZXhpdHMgd2l0aCBhIG5vbi16ZXJvIGNvZGUuXG4gICAqL1xuICBtaW5Db3ZlcmFnZUluUGVyY2VudHM/OiBudW1iZXI7XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3IgcnVubmluZyB0ZXN0cy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUZXN0UGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBwcm9qZWN0cyB0byBydW4uXG4gICAqL1xuICBwcm9qZWN0cz86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIFJ1bnMgdGhlIHRlc3Qgc3VpdGUuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgdGVzdC5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgdGVzdHMgaGF2ZSBjb21wbGV0ZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB0ZXN0KHBhcmFtczogVGVzdFBhcmFtcyA9IHt9KTogUHJvbWlzZTx2b2lkPiB7XG4gIGF3YWl0IGV4ZWNGcm9tUm9vdChbJ3ZpdGVzdCcsICdydW4nLCAuLi5idWlsZFByb2plY3RGbGFncyhwYXJhbXMucHJvamVjdHMpXSk7XG59XG5cbi8qKlxuICogUnVucyB0aGUgdGVzdCBzdWl0ZSB3aXRoIGNvdmVyYWdlLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBPcHRpb25hbCBjb3ZlcmFnZSBjb25maWd1cmF0aW9uLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSB0ZXN0cyBoYXZlIGNvbXBsZXRlZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHRlc3RDb3ZlcmFnZShwYXJhbXM6IFRlc3RDb3ZlcmFnZVBhcmFtcyA9IHt9KTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHRocmVzaG9sZCA9IFN0cmluZyhwYXJhbXMubWluQ292ZXJhZ2VJblBlcmNlbnRzID8/IDApO1xuICBhd2FpdCBleGVjRnJvbVJvb3QoW1xuICAgICd2aXRlc3QnLFxuICAgICdydW4nLFxuICAgIC4uLmJ1aWxkUHJvamVjdEZsYWdzKHBhcmFtcy5wcm9qZWN0cyksXG4gICAgJy0tY292ZXJhZ2UnLFxuICAgIGAtLWNvdmVyYWdlLnRocmVzaG9sZHMubGluZXM9JHt0aHJlc2hvbGR9YCxcbiAgICBgLS1jb3ZlcmFnZS50aHJlc2hvbGRzLmZ1bmN0aW9ucz0ke3RocmVzaG9sZH1gLFxuICAgIGAtLWNvdmVyYWdlLnRocmVzaG9sZHMuYnJhbmNoZXM9JHt0aHJlc2hvbGR9YCxcbiAgICBgLS1jb3ZlcmFnZS50aHJlc2hvbGRzLnN0YXRlbWVudHM9JHt0aHJlc2hvbGR9YFxuICBdKTtcbn1cblxuLyoqXG4gKiBSdW5zIHRoZSB0ZXN0IHN1aXRlIGluIHdhdGNoIG1vZGUuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgdGVzdC5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgdGVzdHMgaGF2ZSBjb21wbGV0ZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB0ZXN0V2F0Y2gocGFyYW1zOiBUZXN0UGFyYW1zID0ge30pOiBQcm9taXNlPHZvaWQ+IHtcbiAgYXdhaXQgZXhlY0Zyb21Sb290KFsndml0ZXN0JywgLi4uYnVpbGRQcm9qZWN0RmxhZ3MocGFyYW1zLnByb2plY3RzKV0pO1xufVxuXG4vKipcbiAqIEJ1aWxkcyBgLS1wcm9qZWN0YCBmbGFncyBmb3IgdGhlIGdpdmVuIHByb2plY3QgcHJlZml4ZXMuXG4gKiBFYWNoIHByZWZpeCBleHBhbmRzIHRvIGJvdGggYC0tcHJvamVjdD1wcmVmaXhgIChleGFjdCBtYXRjaClcbiAqIGFuZCBgLS1wcm9qZWN0PXByZWZpeDoqYCAoc3ViLXByb2plY3RzKS5cbiAqXG4gKiBAcGFyYW0gcHJvamVjdHMgLSBUaGUgcHJvamVjdCBuYW1lIHByZWZpeGVzLlxuICogQHJldHVybnMgVGhlIGAtLXByb2plY3RgIGZsYWdzIGFycmF5LlxuICovXG5mdW5jdGlvbiBidWlsZFByb2plY3RGbGFncyhwcm9qZWN0cz86IHN0cmluZ1tdKTogc3RyaW5nW10ge1xuICByZXR1cm4gKHByb2plY3RzID8/IFtdKS5mbGF0TWFwKChwcm9qZWN0KSA9PiBbYC0tcHJvamVjdD0ke3Byb2plY3R9YCwgYC0tcHJvamVjdD0ke3Byb2plY3R9OipgXSk7XG59XG5cbi8qIHY4IGlnbm9yZSBzdG9wICovXG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVFBLFNBQVMsb0JBQW9CO0FBNkI3QixlQUFzQixLQUFLLFNBQXFCLENBQUMsR0FBa0I7QUFDakUsUUFBTSxhQUFhLENBQUMsVUFBVSxPQUFPLEdBQUcsa0JBQWtCLE9BQU8sUUFBUSxDQUFDLENBQUM7QUFDN0U7QUFRQSxlQUFzQixhQUFhLFNBQTZCLENBQUMsR0FBa0I7QUFDakYsUUFBTSxZQUFZLE9BQU8sT0FBTyx5QkFBeUIsQ0FBQztBQUMxRCxRQUFNLGFBQWE7QUFBQSxJQUNqQjtBQUFBLElBQ0E7QUFBQSxJQUNBLEdBQUcsa0JBQWtCLE9BQU8sUUFBUTtBQUFBLElBQ3BDO0FBQUEsSUFDQSwrQkFBK0IsU0FBUztBQUFBLElBQ3hDLG1DQUFtQyxTQUFTO0FBQUEsSUFDNUMsa0NBQWtDLFNBQVM7QUFBQSxJQUMzQyxvQ0FBb0MsU0FBUztBQUFBLEVBQy9DLENBQUM7QUFDSDtBQVFBLGVBQXNCLFVBQVUsU0FBcUIsQ0FBQyxHQUFrQjtBQUN0RSxRQUFNLGFBQWEsQ0FBQyxVQUFVLEdBQUcsa0JBQWtCLE9BQU8sUUFBUSxDQUFDLENBQUM7QUFDdEU7QUFVQSxTQUFTLGtCQUFrQixVQUErQjtBQUN4RCxVQUFRLFlBQVksQ0FBQyxHQUFHLFFBQVEsQ0FBQyxZQUFZLENBQUMsYUFBYSxPQUFPLElBQUksYUFBYSxPQUFPLElBQUksQ0FBQztBQUNqRzsiLAogICJuYW1lcyI6IFtdCn0K
52
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL3NjcmlwdC11dGlscy90ZXN0LXJ1bm5lcnMvdml0ZXN0LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgZnVuY3Rpb25zIGZvciBydW5uaW5nIHRlc3RzIHVzaW5nIHRoZSBWaXRlc3QgZnJhbWV3b3JrLlxuICovXG5cbi8qIHY4IGlnbm9yZSBzdGFydCAtLSBFeGVjdXRlcyB2aXRlc3QgYXMgYSBDTEkgc3VicHJvY2VzczsgY29ycmVjdG5lc3MgaXMgdmVyaWZpZWQgYnkgcnVubmluZyB0ZXN0cywgbm90IHVuaXQgdGVzdHMuICovXG5cbmltcG9ydCB7IGV4ZWNGcm9tUm9vdCB9IGZyb20gJy4uL3Jvb3QudHMnO1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHJ1bm5pbmcgdGVzdHMgd2l0aCBjb3ZlcmFnZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUZXN0Q292ZXJhZ2VQYXJhbXMgZXh0ZW5kcyBUZXN0UGFyYW1zIHtcbiAgLyoqXG4gICAqIE1pbmltdW0gY292ZXJhZ2UgcGVyY2VudGFnZSByZXF1aXJlZC4gSWYgdGhlIGFjdHVhbCBjb3ZlcmFnZSBmYWxscyBiZWxvd1xuICAgKiB0aGlzIHRocmVzaG9sZCwgdGhlIHByb2Nlc3MgZXhpdHMgd2l0aCBhIG5vbi16ZXJvIGNvZGUuXG4gICAqL1xuICByZWFkb25seSBtaW5Db3ZlcmFnZUluUGVyY2VudHM/OiBudW1iZXI7XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3IgcnVubmluZyB0ZXN0cy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUZXN0UGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBwcm9qZWN0cyB0byBydW4uXG4gICAqL1xuICByZWFkb25seSBwcm9qZWN0cz86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIFJ1bnMgdGhlIHRlc3Qgc3VpdGUuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgdGVzdC5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgdGVzdHMgaGF2ZSBjb21wbGV0ZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB0ZXN0KHBhcmFtczogVGVzdFBhcmFtcyA9IHt9KTogUHJvbWlzZTx2b2lkPiB7XG4gIGF3YWl0IGV4ZWNGcm9tUm9vdChbJ3ZpdGVzdCcsICdydW4nLCAuLi5idWlsZFByb2plY3RGbGFncyhwYXJhbXMucHJvamVjdHMpXSk7XG59XG5cbi8qKlxuICogUnVucyB0aGUgdGVzdCBzdWl0ZSB3aXRoIGNvdmVyYWdlLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBPcHRpb25hbCBjb3ZlcmFnZSBjb25maWd1cmF0aW9uLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSB0ZXN0cyBoYXZlIGNvbXBsZXRlZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHRlc3RDb3ZlcmFnZShwYXJhbXM6IFRlc3RDb3ZlcmFnZVBhcmFtcyA9IHt9KTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHRocmVzaG9sZCA9IFN0cmluZyhwYXJhbXMubWluQ292ZXJhZ2VJblBlcmNlbnRzID8/IDApO1xuICBhd2FpdCBleGVjRnJvbVJvb3QoW1xuICAgICd2aXRlc3QnLFxuICAgICdydW4nLFxuICAgIC4uLmJ1aWxkUHJvamVjdEZsYWdzKHBhcmFtcy5wcm9qZWN0cyksXG4gICAgJy0tY292ZXJhZ2UnLFxuICAgIGAtLWNvdmVyYWdlLnRocmVzaG9sZHMubGluZXM9JHt0aHJlc2hvbGR9YCxcbiAgICBgLS1jb3ZlcmFnZS50aHJlc2hvbGRzLmZ1bmN0aW9ucz0ke3RocmVzaG9sZH1gLFxuICAgIGAtLWNvdmVyYWdlLnRocmVzaG9sZHMuYnJhbmNoZXM9JHt0aHJlc2hvbGR9YCxcbiAgICBgLS1jb3ZlcmFnZS50aHJlc2hvbGRzLnN0YXRlbWVudHM9JHt0aHJlc2hvbGR9YFxuICBdKTtcbn1cblxuLyoqXG4gKiBSdW5zIHRoZSB0ZXN0IHN1aXRlIGluIHdhdGNoIG1vZGUuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgdGVzdC5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgdGVzdHMgaGF2ZSBjb21wbGV0ZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB0ZXN0V2F0Y2gocGFyYW1zOiBUZXN0UGFyYW1zID0ge30pOiBQcm9taXNlPHZvaWQ+IHtcbiAgYXdhaXQgZXhlY0Zyb21Sb290KFsndml0ZXN0JywgLi4uYnVpbGRQcm9qZWN0RmxhZ3MocGFyYW1zLnByb2plY3RzKV0pO1xufVxuXG4vKipcbiAqIEJ1aWxkcyBgLS1wcm9qZWN0YCBmbGFncyBmb3IgdGhlIGdpdmVuIHByb2plY3QgcHJlZml4ZXMuXG4gKiBFYWNoIHByZWZpeCBleHBhbmRzIHRvIGJvdGggYC0tcHJvamVjdD1wcmVmaXhgIChleGFjdCBtYXRjaClcbiAqIGFuZCBgLS1wcm9qZWN0PXByZWZpeDoqYCAoc3ViLXByb2plY3RzKS5cbiAqXG4gKiBAcGFyYW0gcHJvamVjdHMgLSBUaGUgcHJvamVjdCBuYW1lIHByZWZpeGVzLlxuICogQHJldHVybnMgVGhlIGAtLXByb2plY3RgIGZsYWdzIGFycmF5LlxuICovXG5mdW5jdGlvbiBidWlsZFByb2plY3RGbGFncyhwcm9qZWN0cz86IHN0cmluZ1tdKTogc3RyaW5nW10ge1xuICByZXR1cm4gKHByb2plY3RzID8/IFtdKS5mbGF0TWFwKChwcm9qZWN0KSA9PiBbYC0tcHJvamVjdD0ke3Byb2plY3R9YCwgYC0tcHJvamVjdD0ke3Byb2plY3R9OipgXSk7XG59XG5cbi8qIHY4IGlnbm9yZSBzdG9wICovXG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVFBLFNBQVMsb0JBQW9CO0FBNkI3QixlQUFzQixLQUFLLFNBQXFCLENBQUMsR0FBa0I7QUFDakUsUUFBTSxhQUFhLENBQUMsVUFBVSxPQUFPLEdBQUcsa0JBQWtCLE9BQU8sUUFBUSxDQUFDLENBQUM7QUFDN0U7QUFRQSxlQUFzQixhQUFhLFNBQTZCLENBQUMsR0FBa0I7QUFDakYsUUFBTSxZQUFZLE9BQU8sT0FBTyx5QkFBeUIsQ0FBQztBQUMxRCxRQUFNLGFBQWE7QUFBQSxJQUNqQjtBQUFBLElBQ0E7QUFBQSxJQUNBLEdBQUcsa0JBQWtCLE9BQU8sUUFBUTtBQUFBLElBQ3BDO0FBQUEsSUFDQSwrQkFBK0IsU0FBUztBQUFBLElBQ3hDLG1DQUFtQyxTQUFTO0FBQUEsSUFDNUMsa0NBQWtDLFNBQVM7QUFBQSxJQUMzQyxvQ0FBb0MsU0FBUztBQUFBLEVBQy9DLENBQUM7QUFDSDtBQVFBLGVBQXNCLFVBQVUsU0FBcUIsQ0FBQyxHQUFrQjtBQUN0RSxRQUFNLGFBQWEsQ0FBQyxVQUFVLEdBQUcsa0JBQWtCLE9BQU8sUUFBUSxDQUFDLENBQUM7QUFDdEU7QUFVQSxTQUFTLGtCQUFrQixVQUErQjtBQUN4RCxVQUFRLFlBQVksQ0FBQyxHQUFHLFFBQVEsQ0FBQyxZQUFZLENBQUMsYUFBYSxPQUFPLElBQUksYUFBYSxPQUFPLElBQUksQ0FBQztBQUNqRzsiLAogICJuYW1lcyI6IFtdCn0K