sonamu 0.8.11 → 0.8.13

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.
@@ -130,7 +130,8 @@ import { Sonamu } from "../api/sonamu.js";
130
130
  waitFlag: "--wait"
131
131
  }
132
132
  };
133
- /** 앱 번들 CLI 경로를 resolve */ function resolveEditorCli() {
133
+ /** 앱 번들 CLI 경로를 resolve. wait=false이면 --wait 플래그를 생략 */ function resolveEditorCli(options) {
134
+ const wait = options?.wait ?? true;
134
135
  const appName = Sonamu.config.externalEditor ?? "Visual Studio Code";
135
136
  const mapping = EDITOR_CLI_MAP[appName];
136
137
  if (!mapping) {
@@ -150,9 +151,9 @@ import { Sonamu } from "../api/sonamu.js";
150
151
  }
151
152
  return {
152
153
  bin: cliBin,
153
- args: [
154
+ args: wait ? [
154
155
  mapping.waitFlag
155
- ]
156
+ ] : []
156
157
  };
157
158
  }
158
159
  /** 에디터 CLI를 실행하고 탭이 닫힐 때까지 대기 */ function runEditor(editor, filePath) {
@@ -175,5 +176,22 @@ import { Sonamu } from "../api/sonamu.js";
175
176
  });
176
177
  });
177
178
  }
179
+ /** 소스 파일을 외부 에디터로 열기 (대기하지 않음) */ export function openSourceFile(filePath) {
180
+ const absPath = path.isAbsolute(filePath) ? filePath : path.resolve(Sonamu.apiRootPath, filePath);
181
+ if (!fs.existsSync(absPath)) {
182
+ throw new Error(`파일을 찾을 수 없습니다: ${filePath}`);
183
+ }
184
+ const editor = resolveEditorCli({
185
+ wait: false
186
+ });
187
+ const child = spawn(editor.bin, [
188
+ ...editor.args,
189
+ absPath
190
+ ], {
191
+ stdio: "ignore",
192
+ detached: true
193
+ });
194
+ child.unref();
195
+ }
178
196
 
179
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91aS9jZGQtc2VydmljZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzcGF3biB9IGZyb20gXCJjaGlsZF9wcm9jZXNzXCI7XG5pbXBvcnQgY3J5cHRvIGZyb20gXCJjcnlwdG9cIjtcbmltcG9ydCBmcyBmcm9tIFwiZnNcIjtcbmltcG9ydCBvcyBmcm9tIFwib3NcIjtcbmltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgeyBTb25hbXUgfSBmcm9tIFwiLi4vYXBpL3NvbmFtdVwiO1xuXG5leHBvcnQgdHlwZSBDZGRGaWxlVHlwZSA9IFwiY29udHJhY3RcIiB8IFwic3BlY1wiO1xuXG5leHBvcnQgdHlwZSBDZGRUcmVlTm9kZSA9IHtcbiAgbmFtZTogc3RyaW5nO1xuICAvKiogY29udHJhY3QvIOq4sOykgCDsg4HrjIAg6rK966GcICovXG4gIHBhdGg6IHN0cmluZztcbiAgdHlwZTogXCJmaWxlXCIgfCBcImRpcmVjdG9yeVwiO1xuICAvKiogZmlsZeyduCDqsr3smrDrp4wg7KG07J6sICovXG4gIGZpbGVUeXBlPzogQ2RkRmlsZVR5cGU7XG4gIC8qKiBkaXJlY3Rvcnnsnbgg6rK97Jqw66eMIOyhtOyerCAqL1xuICBjaGlsZHJlbj86IENkZFRyZWVOb2RlW107XG59O1xuXG4vKiogY29udHJhY3QvIOuUlOugie2EsOumrCDsoIjrjIAg6rK966GcIOuwmO2ZmCAoYXBpUm9vdFBhdGgg6riw7KSAKSAqL1xuZnVuY3Rpb24gZ2V0Q29udHJhY3REaXIoKTogc3RyaW5nIHtcbiAgcmV0dXJuIHBhdGguam9pbihTb25hbXUuYXBpUm9vdFBhdGgsIFwiY29udHJhY3RcIik7XG59XG5cbi8qKiDqsr3roZzqsIAgY29udHJhY3QvIOuUlOugie2EsOumrCDrgrTrtoDsnbjsp4Ag6rKA7KadICovXG5mdW5jdGlvbiBhc3NlcnRJbnNpZGVDb250cmFjdERpcihmaWxlUGF0aDogc3RyaW5nKTogdm9pZCB7XG4gIGNvbnN0IGNvbnRyYWN0RGlyID0gZ2V0Q29udHJhY3REaXIoKTtcbiAgY29uc3QgcmVzb2x2ZWQgPSBwYXRoLnJlc29sdmUoY29udHJhY3REaXIsIGZpbGVQYXRoKTtcbiAgaWYgKCFyZXNvbHZlZC5zdGFydHNXaXRoKGNvbnRyYWN0RGlyICsgcGF0aC5zZXApICYmIHJlc29sdmVkICE9PSBjb250cmFjdERpcikge1xuICAgIHRocm93IG5ldyBFcnJvcihg6rK966Gc6rCAIGNvbnRyYWN0LyDrlJTroInthLDrpqwg67CW7J2EIOywuOyhsO2VqeuLiOuLpDogJHtmaWxlUGF0aH1gKTtcbiAgfVxufVxuXG4vKiog7YyM7J2866qF7JeQ7IScIENkZEZpbGVUeXBlIO2MkOuzhCAqL1xuZnVuY3Rpb24gZGV0ZWN0RmlsZVR5cGUoZmlsZU5hbWU6IHN0cmluZyk6IENkZEZpbGVUeXBlIHwgdW5kZWZpbmVkIHtcbiAgaWYgKGZpbGVOYW1lLmVuZHNXaXRoKFwiLmNvbnRyYWN0Lmpzb25cIikpIHJldHVybiBcImNvbnRyYWN0XCI7XG4gIGlmIChmaWxlTmFtZS5lbmRzV2l0aChcIi5zcGVjLmpzb25cIikpIHJldHVybiBcInNwZWNcIjtcbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuLyoqIOuUlOugie2EsOumrOulvCDsnqzqt4Ag7YOQ7IOJ7ZWY7JesIENkZFRyZWVOb2RlIO2KuOumrOulvCDsg53shLEgKi9cbmZ1bmN0aW9uIHNjYW5EaXJlY3RvcnkoZGlyUGF0aDogc3RyaW5nLCByZWxhdGl2ZVRvOiBzdHJpbmcpOiBDZGRUcmVlTm9kZVtdIHtcbiAgY29uc3QgZW50cmllcyA9IGZzLnJlYWRkaXJTeW5jKGRpclBhdGgsIHsgd2l0aEZpbGVUeXBlczogdHJ1ZSB9KTtcbiAgY29uc3Qgbm9kZXM6IENkZFRyZWVOb2RlW10gPSBbXTtcblxuICBmb3IgKGNvbnN0IGVudHJ5IG9mIGVudHJpZXMpIHtcbiAgICBjb25zdCBmdWxsUGF0aCA9IHBhdGguam9pbihkaXJQYXRoLCBlbnRyeS5uYW1lKTtcbiAgICBjb25zdCByZWxQYXRoID0gcGF0aC5yZWxhdGl2ZShyZWxhdGl2ZVRvLCBmdWxsUGF0aCk7XG5cbiAgICBpZiAoZW50cnkuaXNEaXJlY3RvcnkoKSkge1xuICAgICAgY29uc3QgY2hpbGRyZW4gPSBzY2FuRGlyZWN0b3J5KGZ1bGxQYXRoLCByZWxhdGl2ZVRvKTtcbiAgICAgIG5vZGVzLnB1c2goe1xuICAgICAgICBuYW1lOiBlbnRyeS5uYW1lLFxuICAgICAgICBwYXRoOiByZWxQYXRoLFxuICAgICAgICB0eXBlOiBcImRpcmVjdG9yeVwiLFxuICAgICAgICBjaGlsZHJlbixcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAoZW50cnkuaXNGaWxlKCkpIHtcbiAgICAgIGNvbnN0IGZpbGVUeXBlID0gZGV0ZWN0RmlsZVR5cGUoZW50cnkubmFtZSk7XG4gICAgICBpZiAoZmlsZVR5cGUpIHtcbiAgICAgICAgbm9kZXMucHVzaCh7XG4gICAgICAgICAgbmFtZTogZW50cnkubmFtZSxcbiAgICAgICAgICBwYXRoOiByZWxQYXRoLFxuICAgICAgICAgIHR5cGU6IFwiZmlsZVwiLFxuICAgICAgICAgIGZpbGVUeXBlLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gbm9kZXM7XG59XG5cbi8qKiBjb250cmFjdC8g65SU66CJ7YSw66as7J2YIO2KuOumrCDqtazsobDrpbwg67CY7ZmYICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q2RkVHJlZSgpOiB7IGV4aXN0czogYm9vbGVhbjsgdHJlZTogQ2RkVHJlZU5vZGVbXSB9IHtcbiAgY29uc3QgY29udHJhY3REaXIgPSBnZXRDb250cmFjdERpcigpO1xuICBpZiAoIWZzLmV4aXN0c1N5bmMoY29udHJhY3REaXIpKSB7XG4gICAgcmV0dXJuIHsgZXhpc3RzOiBmYWxzZSwgdHJlZTogW10gfTtcbiAgfVxuICBjb25zdCB0cmVlID0gc2NhbkRpcmVjdG9yeShjb250cmFjdERpciwgY29udHJhY3REaXIpO1xuICByZXR1cm4geyBleGlzdHM6IHRydWUsIHRyZWUgfTtcbn1cblxuLyoqIGNvbnRlbnQg7ZWE65Oc66W8IHN0cmluZ+ycvOuhnCDrs4DtmZggKHN0cmluZ1tdIOuwjyBzdHJpbmcg66qo65GQIOyngOybkCkgKi9cbmZ1bmN0aW9uIGNvbnRlbnRUb1N0cmluZyhjb250ZW50OiB1bmtub3duKTogc3RyaW5nIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoY29udGVudCkpIHJldHVybiBjb250ZW50LmpvaW4oXCJcXG5cIik7XG4gIGlmICh0eXBlb2YgY29udGVudCA9PT0gXCJzdHJpbmdcIikgcmV0dXJuIGNvbnRlbnQ7XG4gIHJldHVybiBcIlwiO1xufVxuXG4vKiogSlNPTiDtjIzsnbzsnZgg7KCE7LK0IOuCtOyaqeydhCDsnb3slrQg67CY7ZmYIChjb250ZW5064qUIHN0cmluZ+ycvOuhnCDrs4DtmZgpICovXG5leHBvcnQgZnVuY3Rpb24gcmVhZENvbnRlbnQoZmlsZVBhdGg6IHN0cmluZyk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgYXNzZXJ0SW5zaWRlQ29udHJhY3REaXIoZmlsZVBhdGgpO1xuXG4gIGNvbnN0IGNvbnRyYWN0RGlyID0gZ2V0Q29udHJhY3REaXIoKTtcbiAgY29uc3QgYWJzUGF0aCA9IHBhdGgucmVzb2x2ZShjb250cmFjdERpciwgZmlsZVBhdGgpO1xuXG4gIGlmICghZnMuZXhpc3RzU3luYyhhYnNQYXRoKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihg7YyM7J287J2EIOywvuydhCDsiJgg7JeG7Iq164uI64ukOiAke2ZpbGVQYXRofWApO1xuICB9XG5cbiAgY29uc3QgcmF3ID0gZnMucmVhZEZpbGVTeW5jKGFic1BhdGgsIFwidXRmLThcIik7XG4gIGNvbnN0IGpzb24gPSBKU09OLnBhcnNlKHJhdykgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIHJldHVybiB7IC4uLmpzb24sIGNvbnRlbnQ6IGNvbnRlbnRUb1N0cmluZyhqc29uLmNvbnRlbnQpIH07XG59XG5cbi8qKiBKU09OIO2MjOydvOydmCBjb250ZW50IO2VhOuTnOulvCDsmbjrtoAg7JeQ65SU7YSw66GcIO2OuOynkSAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGVkaXRDb250ZW50KFxuICBmaWxlUGF0aDogc3RyaW5nLFxuKTogUHJvbWlzZTx7IHN1Y2Nlc3M6IGJvb2xlYW47IGZpbGVQYXRoOiBzdHJpbmcgfT4ge1xuICBhc3NlcnRJbnNpZGVDb250cmFjdERpcihmaWxlUGF0aCk7XG5cbiAgY29uc3QgY29udHJhY3REaXIgPSBnZXRDb250cmFjdERpcigpO1xuICBjb25zdCBhYnNQYXRoID0gcGF0aC5yZXNvbHZlKGNvbnRyYWN0RGlyLCBmaWxlUGF0aCk7XG5cbiAgaWYgKCFmcy5leGlzdHNTeW5jKGFic1BhdGgpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGDtjIzsnbzsnYQg7LC+7J2EIOyImCDsl4bsirXri4jri6Q6ICR7ZmlsZVBhdGh9YCk7XG4gIH1cblxuICBjb25zdCBlZGl0b3IgPSByZXNvbHZlRWRpdG9yQ2xpKCk7XG5cbiAgY29uc3QgcmF3ID0gZnMucmVhZEZpbGVTeW5jKGFic1BhdGgsIFwidXRmLThcIik7XG4gIGNvbnN0IGpzb246IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0gSlNPTi5wYXJzZShyYXcpO1xuXG4gIGNvbnN0IGNvbnRlbnQgPSBjb250ZW50VG9TdHJpbmcoanNvbi5jb250ZW50KTtcblxuICBjb25zdCB0bXBGaWxlTmFtZSA9IGBjZGQtZWRpdC0ke2NyeXB0by5yYW5kb21VVUlEKCl9Lm1kYDtcbiAgY29uc3QgdG1wRmlsZVBhdGggPSBwYXRoLmpvaW4ob3MudG1wZGlyKCksIHRtcEZpbGVOYW1lKTtcblxuICBmcy53cml0ZUZpbGVTeW5jKHRtcEZpbGVQYXRoLCBjb250ZW50LCBcInV0Zi04XCIpO1xuXG4gIHRyeSB7XG4gICAgYXdhaXQgcnVuRWRpdG9yKGVkaXRvciwgdG1wRmlsZVBhdGgpO1xuXG4gICAgY29uc3QgZWRpdGVkID0gZnMucmVhZEZpbGVTeW5jKHRtcEZpbGVQYXRoLCBcInV0Zi04XCIpO1xuICAgIGpzb24uY29udGVudCA9IGVkaXRlZC5zcGxpdChcIlxcblwiKTtcblxuICAgIGNvbnN0IHRvZGF5ID0gbmV3IERhdGUoKTtcbiAgICBjb25zdCB5eXl5ID0gdG9kYXkuZ2V0RnVsbFllYXIoKTtcbiAgICBjb25zdCBtbSA9IFN0cmluZyh0b2RheS5nZXRNb250aCgpICsgMSkucGFkU3RhcnQoMiwgXCIwXCIpO1xuICAgIGNvbnN0IGRkID0gU3RyaW5nKHRvZGF5LmdldERhdGUoKSkucGFkU3RhcnQoMiwgXCIwXCIpO1xuICAgIGpzb24ubGFzdE1vZGlmaWVkID0gYCR7eXl5eX0tJHttbX0tJHtkZH1gO1xuXG4gICAgZnMud3JpdGVGaWxlU3luYyhhYnNQYXRoLCBgJHtKU09OLnN0cmluZ2lmeShqc29uLCBudWxsLCAyKX1cXG5gLCBcInV0Zi04XCIpO1xuXG4gICAgcmV0dXJuIHsgc3VjY2VzczogdHJ1ZSwgZmlsZVBhdGggfTtcbiAgfSBmaW5hbGx5IHtcbiAgICBpZiAoZnMuZXhpc3RzU3luYyh0bXBGaWxlUGF0aCkpIHtcbiAgICAgIGZzLnVubGlua1N5bmModG1wRmlsZVBhdGgpO1xuICAgIH1cbiAgfVxufVxuXG4vKiog7JeQ65SU7YSw67OEIOyVsSDrsojrk6Qg64K0IENMSSDqsr3roZwgKyAtLXdhaXQg7ZSM656Y6re4IOunpO2VkSAqL1xuY29uc3QgRURJVE9SX0NMSV9NQVA6IFJlY29yZDxzdHJpbmcsIHsgY2xpOiBzdHJpbmc7IHdhaXRGbGFnOiBzdHJpbmcgfT4gPSB7XG4gIFwiVmlzdWFsIFN0dWRpbyBDb2RlXCI6IHsgY2xpOiBcIkNvbnRlbnRzL1Jlc291cmNlcy9hcHAvYmluL2NvZGVcIiwgd2FpdEZsYWc6IFwiLS13YWl0XCIgfSxcbiAgWmVkOiB7IGNsaTogXCJDb250ZW50cy9NYWNPUy9jbGlcIiwgd2FpdEZsYWc6IFwiLS13YWl0XCIgfSxcbiAgQ3Vyc29yOiB7IGNsaTogXCJDb250ZW50cy9SZXNvdXJjZXMvYXBwL2Jpbi9jdXJzb3JcIiwgd2FpdEZsYWc6IFwiLS13YWl0XCIgfSxcbn07XG5cbi8qKiDslbEg67KI65OkIENMSSDqsr3roZzrpbwgcmVzb2x2ZSAqL1xuZnVuY3Rpb24gcmVzb2x2ZUVkaXRvckNsaSgpOiB7IGJpbjogc3RyaW5nOyBhcmdzOiBzdHJpbmdbXSB9IHtcbiAgY29uc3QgYXBwTmFtZSA9IFNvbmFtdS5jb25maWcuZXh0ZXJuYWxFZGl0b3IgPz8gXCJWaXN1YWwgU3R1ZGlvIENvZGVcIjtcbiAgY29uc3QgbWFwcGluZyA9IEVESVRPUl9DTElfTUFQW2FwcE5hbWVdO1xuICBpZiAoIW1hcHBpbmcpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBg7KeA7JuQ65CY7KeAIOyViuuKlCDsl5DrlJTthLDsnoXri4jri6Q6ICR7YXBwTmFtZX0gKOyngOybkDogJHtPYmplY3Qua2V5cyhFRElUT1JfQ0xJX01BUCkuam9pbihcIiwgXCIpfSlgLFxuICAgICk7XG4gIH1cblxuICBjb25zdCBzZWFyY2hQYXRocyA9IFtcbiAgICBgL0FwcGxpY2F0aW9ucy8ke2FwcE5hbWV9LmFwcGAsXG4gICAgYCR7b3MuaG9tZWRpcigpfS9BcHBsaWNhdGlvbnMvJHthcHBOYW1lfS5hcHBgLFxuICBdO1xuICBjb25zdCBidW5kbGVQYXRoID0gc2VhcmNoUGF0aHMuZmluZCgocCkgPT4gZnMuZXhpc3RzU3luYyhwKSk7XG4gIGlmICghYnVuZGxlUGF0aCkge1xuICAgIHRocm93IG5ldyBFcnJvcihg7JWxIOuyiOuTpOydhCDssL7snYQg7IiYIOyXhuyKteuLiOuLpDogJHthcHBOYW1lfSAoL0FwcGxpY2F0aW9ucyDtmZXsnbgpYCk7XG4gIH1cblxuICBjb25zdCBjbGlCaW4gPSBwYXRoLmpvaW4oYnVuZGxlUGF0aCwgbWFwcGluZy5jbGkpO1xuICBpZiAoIWZzLmV4aXN0c1N5bmMoY2xpQmluKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihg7JeQ65SU7YSwIENMSeulvCDssL7snYQg7IiYIOyXhuyKteuLiOuLpDogJHtjbGlCaW59YCk7XG4gIH1cblxuICByZXR1cm4geyBiaW46IGNsaUJpbiwgYXJnczogW21hcHBpbmcud2FpdEZsYWddIH07XG59XG5cbi8qKiDsl5DrlJTthLAgQ0xJ66W8IOyLpO2Wie2VmOqzoCDtg63snbQg64ur7Z6QIOuVjOq5jOyngCDrjIDquLAgKi9cbmZ1bmN0aW9uIHJ1bkVkaXRvcihlZGl0b3I6IHsgYmluOiBzdHJpbmc7IGFyZ3M6IHN0cmluZ1tdIH0sIGZpbGVQYXRoOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCBjaGlsZCA9IHNwYXduKGVkaXRvci5iaW4sIFsuLi5lZGl0b3IuYXJncywgZmlsZVBhdGhdLCB7XG4gICAgICBzdGRpbzogXCJpbmhlcml0XCIsXG4gICAgfSk7XG5cbiAgICBjaGlsZC5vbihcImVycm9yXCIsIChlcnIpID0+IHtcbiAgICAgIHJlamVjdChuZXcgRXJyb3IoYOyXkOuUlO2EsCDsi6Ttlokg7Iuk7YyoICgke2VkaXRvci5iaW59KTogJHtlcnIubWVzc2FnZX1gKSk7XG4gICAgfSk7XG5cbiAgICBjaGlsZC5vbihcImNsb3NlXCIsIChjb2RlKSA9PiB7XG4gICAgICBpZiAoY29kZSA9PT0gMCkge1xuICAgICAgICByZXNvbHZlKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZWplY3QobmV3IEVycm9yKGDsl5DrlJTthLDqsIAg67mE7KCV7IOBIOyiheujjOuQmOyXiOyKteuLiOuLpCAoZXhpdCBjb2RlOiAke2NvZGV9KWApKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG59XG4iXSwibmFtZXMiOlsic3Bhd24iLCJjcnlwdG8iLCJmcyIsIm9zIiwicGF0aCIsIlNvbmFtdSIsImdldENvbnRyYWN0RGlyIiwiam9pbiIsImFwaVJvb3RQYXRoIiwiYXNzZXJ0SW5zaWRlQ29udHJhY3REaXIiLCJmaWxlUGF0aCIsImNvbnRyYWN0RGlyIiwicmVzb2x2ZWQiLCJyZXNvbHZlIiwic3RhcnRzV2l0aCIsInNlcCIsIkVycm9yIiwiZGV0ZWN0RmlsZVR5cGUiLCJmaWxlTmFtZSIsImVuZHNXaXRoIiwidW5kZWZpbmVkIiwic2NhbkRpcmVjdG9yeSIsImRpclBhdGgiLCJyZWxhdGl2ZVRvIiwiZW50cmllcyIsInJlYWRkaXJTeW5jIiwid2l0aEZpbGVUeXBlcyIsIm5vZGVzIiwiZW50cnkiLCJmdWxsUGF0aCIsIm5hbWUiLCJyZWxQYXRoIiwicmVsYXRpdmUiLCJpc0RpcmVjdG9yeSIsImNoaWxkcmVuIiwicHVzaCIsInR5cGUiLCJpc0ZpbGUiLCJmaWxlVHlwZSIsImdldENkZFRyZWUiLCJleGlzdHNTeW5jIiwiZXhpc3RzIiwidHJlZSIsImNvbnRlbnRUb1N0cmluZyIsImNvbnRlbnQiLCJBcnJheSIsImlzQXJyYXkiLCJyZWFkQ29udGVudCIsImFic1BhdGgiLCJyYXciLCJyZWFkRmlsZVN5bmMiLCJqc29uIiwiSlNPTiIsInBhcnNlIiwiZWRpdENvbnRlbnQiLCJlZGl0b3IiLCJyZXNvbHZlRWRpdG9yQ2xpIiwidG1wRmlsZU5hbWUiLCJyYW5kb21VVUlEIiwidG1wRmlsZVBhdGgiLCJ0bXBkaXIiLCJ3cml0ZUZpbGVTeW5jIiwicnVuRWRpdG9yIiwiZWRpdGVkIiwic3BsaXQiLCJ0b2RheSIsIkRhdGUiLCJ5eXl5IiwiZ2V0RnVsbFllYXIiLCJtbSIsIlN0cmluZyIsImdldE1vbnRoIiwicGFkU3RhcnQiLCJkZCIsImdldERhdGUiLCJsYXN0TW9kaWZpZWQiLCJzdHJpbmdpZnkiLCJzdWNjZXNzIiwidW5saW5rU3luYyIsIkVESVRPUl9DTElfTUFQIiwiY2xpIiwid2FpdEZsYWciLCJaZWQiLCJDdXJzb3IiLCJhcHBOYW1lIiwiY29uZmlnIiwiZXh0ZXJuYWxFZGl0b3IiLCJtYXBwaW5nIiwiT2JqZWN0Iiwia2V5cyIsInNlYXJjaFBhdGhzIiwiaG9tZWRpciIsImJ1bmRsZVBhdGgiLCJmaW5kIiwicCIsImNsaUJpbiIsImJpbiIsImFyZ3MiLCJQcm9taXNlIiwicmVqZWN0IiwiY2hp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
197
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91aS9jZGQtc2VydmljZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzcGF3biB9IGZyb20gXCJjaGlsZF9wcm9jZXNzXCI7XG5pbXBvcnQgY3J5cHRvIGZyb20gXCJjcnlwdG9cIjtcbmltcG9ydCBmcyBmcm9tIFwiZnNcIjtcbmltcG9ydCBvcyBmcm9tIFwib3NcIjtcbmltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgeyBTb25hbXUgfSBmcm9tIFwiLi4vYXBpL3NvbmFtdVwiO1xuXG5leHBvcnQgdHlwZSBDZGRGaWxlVHlwZSA9IFwiY29udHJhY3RcIiB8IFwic3BlY1wiO1xuXG5leHBvcnQgdHlwZSBDZGRUcmVlTm9kZSA9IHtcbiAgbmFtZTogc3RyaW5nO1xuICAvKiogY29udHJhY3QvIOq4sOykgCDsg4HrjIAg6rK966GcICovXG4gIHBhdGg6IHN0cmluZztcbiAgdHlwZTogXCJmaWxlXCIgfCBcImRpcmVjdG9yeVwiO1xuICAvKiogZmlsZeyduCDqsr3smrDrp4wg7KG07J6sICovXG4gIGZpbGVUeXBlPzogQ2RkRmlsZVR5cGU7XG4gIC8qKiBkaXJlY3Rvcnnsnbgg6rK97Jqw66eMIOyhtOyerCAqL1xuICBjaGlsZHJlbj86IENkZFRyZWVOb2RlW107XG59O1xuXG4vKiogY29udHJhY3QvIOuUlOugie2EsOumrCDsoIjrjIAg6rK966GcIOuwmO2ZmCAoYXBpUm9vdFBhdGgg6riw7KSAKSAqL1xuZnVuY3Rpb24gZ2V0Q29udHJhY3REaXIoKTogc3RyaW5nIHtcbiAgcmV0dXJuIHBhdGguam9pbihTb25hbXUuYXBpUm9vdFBhdGgsIFwiY29udHJhY3RcIik7XG59XG5cbi8qKiDqsr3roZzqsIAgY29udHJhY3QvIOuUlOugie2EsOumrCDrgrTrtoDsnbjsp4Ag6rKA7KadICovXG5mdW5jdGlvbiBhc3NlcnRJbnNpZGVDb250cmFjdERpcihmaWxlUGF0aDogc3RyaW5nKTogdm9pZCB7XG4gIGNvbnN0IGNvbnRyYWN0RGlyID0gZ2V0Q29udHJhY3REaXIoKTtcbiAgY29uc3QgcmVzb2x2ZWQgPSBwYXRoLnJlc29sdmUoY29udHJhY3REaXIsIGZpbGVQYXRoKTtcbiAgaWYgKCFyZXNvbHZlZC5zdGFydHNXaXRoKGNvbnRyYWN0RGlyICsgcGF0aC5zZXApICYmIHJlc29sdmVkICE9PSBjb250cmFjdERpcikge1xuICAgIHRocm93IG5ldyBFcnJvcihg6rK966Gc6rCAIGNvbnRyYWN0LyDrlJTroInthLDrpqwg67CW7J2EIOywuOyhsO2VqeuLiOuLpDogJHtmaWxlUGF0aH1gKTtcbiAgfVxufVxuXG4vKiog7YyM7J2866qF7JeQ7IScIENkZEZpbGVUeXBlIO2MkOuzhCAqL1xuZnVuY3Rpb24gZGV0ZWN0RmlsZVR5cGUoZmlsZU5hbWU6IHN0cmluZyk6IENkZEZpbGVUeXBlIHwgdW5kZWZpbmVkIHtcbiAgaWYgKGZpbGVOYW1lLmVuZHNXaXRoKFwiLmNvbnRyYWN0Lmpzb25cIikpIHJldHVybiBcImNvbnRyYWN0XCI7XG4gIGlmIChmaWxlTmFtZS5lbmRzV2l0aChcIi5zcGVjLmpzb25cIikpIHJldHVybiBcInNwZWNcIjtcbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuLyoqIOuUlOugie2EsOumrOulvCDsnqzqt4Ag7YOQ7IOJ7ZWY7JesIENkZFRyZWVOb2RlIO2KuOumrOulvCDsg53shLEgKi9cbmZ1bmN0aW9uIHNjYW5EaXJlY3RvcnkoZGlyUGF0aDogc3RyaW5nLCByZWxhdGl2ZVRvOiBzdHJpbmcpOiBDZGRUcmVlTm9kZVtdIHtcbiAgY29uc3QgZW50cmllcyA9IGZzLnJlYWRkaXJTeW5jKGRpclBhdGgsIHsgd2l0aEZpbGVUeXBlczogdHJ1ZSB9KTtcbiAgY29uc3Qgbm9kZXM6IENkZFRyZWVOb2RlW10gPSBbXTtcblxuICBmb3IgKGNvbnN0IGVudHJ5IG9mIGVudHJpZXMpIHtcbiAgICBjb25zdCBmdWxsUGF0aCA9IHBhdGguam9pbihkaXJQYXRoLCBlbnRyeS5uYW1lKTtcbiAgICBjb25zdCByZWxQYXRoID0gcGF0aC5yZWxhdGl2ZShyZWxhdGl2ZVRvLCBmdWxsUGF0aCk7XG5cbiAgICBpZiAoZW50cnkuaXNEaXJlY3RvcnkoKSkge1xuICAgICAgY29uc3QgY2hpbGRyZW4gPSBzY2FuRGlyZWN0b3J5KGZ1bGxQYXRoLCByZWxhdGl2ZVRvKTtcbiAgICAgIG5vZGVzLnB1c2goe1xuICAgICAgICBuYW1lOiBlbnRyeS5uYW1lLFxuICAgICAgICBwYXRoOiByZWxQYXRoLFxuICAgICAgICB0eXBlOiBcImRpcmVjdG9yeVwiLFxuICAgICAgICBjaGlsZHJlbixcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAoZW50cnkuaXNGaWxlKCkpIHtcbiAgICAgIGNvbnN0IGZpbGVUeXBlID0gZGV0ZWN0RmlsZVR5cGUoZW50cnkubmFtZSk7XG4gICAgICBpZiAoZmlsZVR5cGUpIHtcbiAgICAgICAgbm9kZXMucHVzaCh7XG4gICAgICAgICAgbmFtZTogZW50cnkubmFtZSxcbiAgICAgICAgICBwYXRoOiByZWxQYXRoLFxuICAgICAgICAgIHR5cGU6IFwiZmlsZVwiLFxuICAgICAgICAgIGZpbGVUeXBlLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gbm9kZXM7XG59XG5cbi8qKiBjb250cmFjdC8g65SU66CJ7YSw66as7J2YIO2KuOumrCDqtazsobDrpbwg67CY7ZmYICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q2RkVHJlZSgpOiB7IGV4aXN0czogYm9vbGVhbjsgdHJlZTogQ2RkVHJlZU5vZGVbXSB9IHtcbiAgY29uc3QgY29udHJhY3REaXIgPSBnZXRDb250cmFjdERpcigpO1xuICBpZiAoIWZzLmV4aXN0c1N5bmMoY29udHJhY3REaXIpKSB7XG4gICAgcmV0dXJuIHsgZXhpc3RzOiBmYWxzZSwgdHJlZTogW10gfTtcbiAgfVxuICBjb25zdCB0cmVlID0gc2NhbkRpcmVjdG9yeShjb250cmFjdERpciwgY29udHJhY3REaXIpO1xuICByZXR1cm4geyBleGlzdHM6IHRydWUsIHRyZWUgfTtcbn1cblxuLyoqIGNvbnRlbnQg7ZWE65Oc66W8IHN0cmluZ+ycvOuhnCDrs4DtmZggKHN0cmluZ1tdIOuwjyBzdHJpbmcg66qo65GQIOyngOybkCkgKi9cbmZ1bmN0aW9uIGNvbnRlbnRUb1N0cmluZyhjb250ZW50OiB1bmtub3duKTogc3RyaW5nIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoY29udGVudCkpIHJldHVybiBjb250ZW50LmpvaW4oXCJcXG5cIik7XG4gIGlmICh0eXBlb2YgY29udGVudCA9PT0gXCJzdHJpbmdcIikgcmV0dXJuIGNvbnRlbnQ7XG4gIHJldHVybiBcIlwiO1xufVxuXG4vKiogSlNPTiDtjIzsnbzsnZgg7KCE7LK0IOuCtOyaqeydhCDsnb3slrQg67CY7ZmYIChjb250ZW5064qUIHN0cmluZ+ycvOuhnCDrs4DtmZgpICovXG5leHBvcnQgZnVuY3Rpb24gcmVhZENvbnRlbnQoZmlsZVBhdGg6IHN0cmluZyk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgYXNzZXJ0SW5zaWRlQ29udHJhY3REaXIoZmlsZVBhdGgpO1xuXG4gIGNvbnN0IGNvbnRyYWN0RGlyID0gZ2V0Q29udHJhY3REaXIoKTtcbiAgY29uc3QgYWJzUGF0aCA9IHBhdGgucmVzb2x2ZShjb250cmFjdERpciwgZmlsZVBhdGgpO1xuXG4gIGlmICghZnMuZXhpc3RzU3luYyhhYnNQYXRoKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihg7YyM7J287J2EIOywvuydhCDsiJgg7JeG7Iq164uI64ukOiAke2ZpbGVQYXRofWApO1xuICB9XG5cbiAgY29uc3QgcmF3ID0gZnMucmVhZEZpbGVTeW5jKGFic1BhdGgsIFwidXRmLThcIik7XG4gIGNvbnN0IGpzb24gPSBKU09OLnBhcnNlKHJhdykgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIHJldHVybiB7IC4uLmpzb24sIGNvbnRlbnQ6IGNvbnRlbnRUb1N0cmluZyhqc29uLmNvbnRlbnQpIH07XG59XG5cbi8qKiBKU09OIO2MjOydvOydmCBjb250ZW50IO2VhOuTnOulvCDsmbjrtoAg7JeQ65SU7YSw66GcIO2OuOynkSAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGVkaXRDb250ZW50KFxuICBmaWxlUGF0aDogc3RyaW5nLFxuKTogUHJvbWlzZTx7IHN1Y2Nlc3M6IGJvb2xlYW47IGZpbGVQYXRoOiBzdHJpbmcgfT4ge1xuICBhc3NlcnRJbnNpZGVDb250cmFjdERpcihmaWxlUGF0aCk7XG5cbiAgY29uc3QgY29udHJhY3REaXIgPSBnZXRDb250cmFjdERpcigpO1xuICBjb25zdCBhYnNQYXRoID0gcGF0aC5yZXNvbHZlKGNvbnRyYWN0RGlyLCBmaWxlUGF0aCk7XG5cbiAgaWYgKCFmcy5leGlzdHNTeW5jKGFic1BhdGgpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGDtjIzsnbzsnYQg7LC+7J2EIOyImCDsl4bsirXri4jri6Q6ICR7ZmlsZVBhdGh9YCk7XG4gIH1cblxuICBjb25zdCBlZGl0b3IgPSByZXNvbHZlRWRpdG9yQ2xpKCk7XG5cbiAgY29uc3QgcmF3ID0gZnMucmVhZEZpbGVTeW5jKGFic1BhdGgsIFwidXRmLThcIik7XG4gIGNvbnN0IGpzb246IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0gSlNPTi5wYXJzZShyYXcpO1xuXG4gIGNvbnN0IGNvbnRlbnQgPSBjb250ZW50VG9TdHJpbmcoanNvbi5jb250ZW50KTtcblxuICBjb25zdCB0bXBGaWxlTmFtZSA9IGBjZGQtZWRpdC0ke2NyeXB0by5yYW5kb21VVUlEKCl9Lm1kYDtcbiAgY29uc3QgdG1wRmlsZVBhdGggPSBwYXRoLmpvaW4ob3MudG1wZGlyKCksIHRtcEZpbGVOYW1lKTtcblxuICBmcy53cml0ZUZpbGVTeW5jKHRtcEZpbGVQYXRoLCBjb250ZW50LCBcInV0Zi04XCIpO1xuXG4gIHRyeSB7XG4gICAgYXdhaXQgcnVuRWRpdG9yKGVkaXRvciwgdG1wRmlsZVBhdGgpO1xuXG4gICAgY29uc3QgZWRpdGVkID0gZnMucmVhZEZpbGVTeW5jKHRtcEZpbGVQYXRoLCBcInV0Zi04XCIpO1xuICAgIGpzb24uY29udGVudCA9IGVkaXRlZC5zcGxpdChcIlxcblwiKTtcblxuICAgIGNvbnN0IHRvZGF5ID0gbmV3IERhdGUoKTtcbiAgICBjb25zdCB5eXl5ID0gdG9kYXkuZ2V0RnVsbFllYXIoKTtcbiAgICBjb25zdCBtbSA9IFN0cmluZyh0b2RheS5nZXRNb250aCgpICsgMSkucGFkU3RhcnQoMiwgXCIwXCIpO1xuICAgIGNvbnN0IGRkID0gU3RyaW5nKHRvZGF5LmdldERhdGUoKSkucGFkU3RhcnQoMiwgXCIwXCIpO1xuICAgIGpzb24ubGFzdE1vZGlmaWVkID0gYCR7eXl5eX0tJHttbX0tJHtkZH1gO1xuXG4gICAgZnMud3JpdGVGaWxlU3luYyhhYnNQYXRoLCBgJHtKU09OLnN0cmluZ2lmeShqc29uLCBudWxsLCAyKX1cXG5gLCBcInV0Zi04XCIpO1xuXG4gICAgcmV0dXJuIHsgc3VjY2VzczogdHJ1ZSwgZmlsZVBhdGggfTtcbiAgfSBmaW5hbGx5IHtcbiAgICBpZiAoZnMuZXhpc3RzU3luYyh0bXBGaWxlUGF0aCkpIHtcbiAgICAgIGZzLnVubGlua1N5bmModG1wRmlsZVBhdGgpO1xuICAgIH1cbiAgfVxufVxuXG4vKiog7JeQ65SU7YSw67OEIOyVsSDrsojrk6Qg64K0IENMSSDqsr3roZwgKyAtLXdhaXQg7ZSM656Y6re4IOunpO2VkSAqL1xuY29uc3QgRURJVE9SX0NMSV9NQVA6IFJlY29yZDxzdHJpbmcsIHsgY2xpOiBzdHJpbmc7IHdhaXRGbGFnOiBzdHJpbmcgfT4gPSB7XG4gIFwiVmlzdWFsIFN0dWRpbyBDb2RlXCI6IHsgY2xpOiBcIkNvbnRlbnRzL1Jlc291cmNlcy9hcHAvYmluL2NvZGVcIiwgd2FpdEZsYWc6IFwiLS13YWl0XCIgfSxcbiAgWmVkOiB7IGNsaTogXCJDb250ZW50cy9NYWNPUy9jbGlcIiwgd2FpdEZsYWc6IFwiLS13YWl0XCIgfSxcbiAgQ3Vyc29yOiB7IGNsaTogXCJDb250ZW50cy9SZXNvdXJjZXMvYXBwL2Jpbi9jdXJzb3JcIiwgd2FpdEZsYWc6IFwiLS13YWl0XCIgfSxcbn07XG5cbi8qKiDslbEg67KI65OkIENMSSDqsr3roZzrpbwgcmVzb2x2ZS4gd2FpdD1mYWxzZeydtOuptCAtLXdhaXQg7ZSM656Y6re466W8IOyDneuetSAqL1xuZnVuY3Rpb24gcmVzb2x2ZUVkaXRvckNsaShvcHRpb25zPzogeyB3YWl0PzogYm9vbGVhbiB9KTogeyBiaW46IHN0cmluZzsgYXJnczogc3RyaW5nW10gfSB7XG4gIGNvbnN0IHdhaXQgPSBvcHRpb25zPy53YWl0ID8/IHRydWU7XG4gIGNvbnN0IGFwcE5hbWUgPSBTb25hbXUuY29uZmlnLmV4dGVybmFsRWRpdG9yID8/IFwiVmlzdWFsIFN0dWRpbyBDb2RlXCI7XG4gIGNvbnN0IG1hcHBpbmcgPSBFRElUT1JfQ0xJX01BUFthcHBOYW1lXTtcbiAgaWYgKCFtYXBwaW5nKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYOyngOybkOuQmOyngCDslYrripQg7JeQ65SU7YSw7J6F64uI64ukOiAke2FwcE5hbWV9ICjsp4Dsm5A6ICR7T2JqZWN0LmtleXMoRURJVE9SX0NMSV9NQVApLmpvaW4oXCIsIFwiKX0pYCxcbiAgICApO1xuICB9XG5cbiAgY29uc3Qgc2VhcmNoUGF0aHMgPSBbXG4gICAgYC9BcHBsaWNhdGlvbnMvJHthcHBOYW1lfS5hcHBgLFxuICAgIGAke29zLmhvbWVkaXIoKX0vQXBwbGljYXRpb25zLyR7YXBwTmFtZX0uYXBwYCxcbiAgXTtcbiAgY29uc3QgYnVuZGxlUGF0aCA9IHNlYXJjaFBhdGhzLmZpbmQoKHApID0+IGZzLmV4aXN0c1N5bmMocCkpO1xuICBpZiAoIWJ1bmRsZVBhdGgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYOyVsSDrsojrk6TsnYQg7LC+7J2EIOyImCDsl4bsirXri4jri6Q6ICR7YXBwTmFtZX0gKC9BcHBsaWNhdGlvbnMg7ZmV7J24KWApO1xuICB9XG5cbiAgY29uc3QgY2xpQmluID0gcGF0aC5qb2luKGJ1bmRsZVBhdGgsIG1hcHBpbmcuY2xpKTtcbiAgaWYgKCFmcy5leGlzdHNTeW5jKGNsaUJpbikpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYOyXkOuUlO2EsCBDTEnrpbwg7LC+7J2EIOyImCDsl4bsirXri4jri6Q6ICR7Y2xpQmlufWApO1xuICB9XG5cbiAgcmV0dXJuIHsgYmluOiBjbGlCaW4sIGFyZ3M6IHdhaXQgPyBbbWFwcGluZy53YWl0RmxhZ10gOiBbXSB9O1xufVxuXG4vKiog7JeQ65SU7YSwIENMSeulvCDsi6TtlontlZjqs6Ag7YOt7J20IOuLq+2ekCDrlYzquYzsp4Ag64yA6riwICovXG5mdW5jdGlvbiBydW5FZGl0b3IoZWRpdG9yOiB7IGJpbjogc3RyaW5nOyBhcmdzOiBzdHJpbmdbXSB9LCBmaWxlUGF0aDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3QgY2hpbGQgPSBzcGF3bihlZGl0b3IuYmluLCBbLi4uZWRpdG9yLmFyZ3MsIGZpbGVQYXRoXSwge1xuICAgICAgc3RkaW86IFwiaW5oZXJpdFwiLFxuICAgIH0pO1xuXG4gICAgY2hpbGQub24oXCJlcnJvclwiLCAoZXJyKSA9PiB7XG4gICAgICByZWplY3QobmV3IEVycm9yKGDsl5DrlJTthLAg7Iuk7ZaJIOyLpO2MqCAoJHtlZGl0b3IuYmlufSk6ICR7ZXJyLm1lc3NhZ2V9YCkpO1xuICAgIH0pO1xuXG4gICAgY2hpbGQub24oXCJjbG9zZVwiLCAoY29kZSkgPT4ge1xuICAgICAgaWYgKGNvZGUgPT09IDApIHtcbiAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVqZWN0KG5ldyBFcnJvcihg7JeQ65SU7YSw6rCAIOu5hOygleyDgSDsooXro4zrkJjsl4jsirXri4jri6QgKGV4aXQgY29kZTogJHtjb2RlfSlgKSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xufVxuXG4vKiog7IaM7IqkIO2MjOydvOydhCDsmbjrtoAg7JeQ65SU7YSw66GcIOyXtOq4sCAo64yA6riw7ZWY7KeAIOyViuydjCkgKi9cbmV4cG9ydCBmdW5jdGlvbiBvcGVuU291cmNlRmlsZShmaWxlUGF0aDogc3RyaW5nKTogdm9pZCB7XG4gIGNvbnN0IGFic1BhdGggPSBwYXRoLmlzQWJzb2x1dGUoZmlsZVBhdGgpID8gZmlsZVBhdGggOiBwYXRoLnJlc29sdmUoU29uYW11LmFwaVJvb3RQYXRoLCBmaWxlUGF0aCk7XG5cbiAgaWYgKCFmcy5leGlzdHNTeW5jKGFic1BhdGgpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGDtjIzsnbzsnYQg7LC+7J2EIOyImCDsl4bsirXri4jri6Q6ICR7ZmlsZVBhdGh9YCk7XG4gIH1cblxuICBjb25zdCBlZGl0b3IgPSByZXNvbHZlRWRpdG9yQ2xpKHsgd2FpdDogZmFsc2UgfSk7XG4gIGNvbnN0IGNoaWxkID0gc3Bhd24oZWRpdG9yLmJpbiwgWy4uLmVkaXRvci5hcmdzLCBhYnNQYXRoXSwge1xuICAgIHN0ZGlvOiBcImlnbm9yZVwiLFxuICAgIGRldGFjaGVkOiB0cnVlLFxuICB9KTtcbiAgY2hpbGQudW5yZWYoKTtcbn1cbiJdLCJuYW1lcyI6WyJzcGF3biIsImNyeXB0byIsImZzIiwib3MiLCJwYXRoIiwiU29uYW11IiwiZ2V0Q29udHJhY3REaXIiLCJqb2luIiwiYXBpUm9vdFBhdGgiLCJhc3NlcnRJbnNpZGVDb250cmFjdERpciIsImZpbGVQYXRoIiwiY29udHJhY3REaXIiLCJyZXNvbHZlZCIsInJlc29sdmUiLCJzdGFydHNXaXRoIiwic2VwIiwiRXJyb3IiLCJkZXRlY3RGaWxlVHlwZSIsImZpbGVOYW1lIiwiZW5kc1dpdGgiLCJ1bmRlZmluZWQiLCJzY2FuRGlyZWN0b3J5IiwiZGlyUGF0aCIsInJlbGF0aXZlVG8iLCJlbnRyaWVzIiwicmVhZGRpclN5bmMiLCJ3aXRoRmlsZVR5cGVzIiwibm9kZXMiLCJlbnRyeSIsImZ1bGxQYXRoIiwibmFtZSIsInJlbFBhdGgiLCJyZWxhdGl2ZSIsImlzRGlyZWN0b3J5IiwiY2hpbGRyZW4iLCJwdXNoIiwidHlwZSIsImlzRmlsZSIsImZpbGVUeXBlIiwiZ2V0Q2RkVHJlZSIsImV4aXN0c1N5bmMiLCJleGlzdHMiLCJ0cmVlIiwiY29udGVudFRvU3RyaW5nIiwiY29udGVudCIsIkFycmF5IiwiaXNBcnJheSIsInJlYWRDb250ZW50IiwiYWJzUGF0aCIsInJhdyIsInJlYWRGaWxlU3luYyIsImpzb24iLCJKU09OIiwicGFyc2UiLCJlZGl0Q29udGVudCIsImVkaXRvciIsInJlc29sdmVFZGl0b3JDbGkiLCJ0bXBGaWxlTmFtZSIsInJhbmRvbVVVSUQiLCJ0bXBGaWxlUGF0aCIsInRtcGRpciIsIndyaXRlRmlsZVN5bmMiLCJydW5FZGl0b3IiLCJlZGl0ZWQiLCJzcGxpdCIsInRvZGF5IiwiRGF0ZSIsInl5eXkiLCJnZXRGdWxsWWVhciIsIm1tIiwiU3RyaW5nIiwiZ2V0TW9udGgiLCJwYWRTdGFydCIsImRkIiwiZ2V0RGF0ZSIsImxhc3RNb2RpZmllZCIsInN0cmluZ2lmeSIsInN1Y2Nlc3MiLCJ1bmxpbmtTeW5jIiwiRURJVE9SX0NMSV9NQVAiLCJjbGkiLCJ3YWl0RmxhZyIsIlplZCIsIkN1cnNvciIsIm9wdGlvbnMiLCJ3YWl0IiwiYXBwTmFtZSIsImNvbmZpZyIsImV4dGVybmFsRWRpdG9yIiwibWFwcGluZyIsIk9iamVjdCIsImtleXMiLCJzZWFyY2hQYXRocyIsImhvbWVkaXIiLCJidW5kbGVQYXRoIiwiZmluZCIsInAiLCJjbGlCaW4iLCJiaW4iLCJhcmdzIiwiUHJvbWlzZSIsInJlamVjdCIsImNoaWxkIiwic3RkaW8iLCJvbiIsImVyciIsIm1lc3NhZ2UiLCJjb2RlIiwib3BlblNvdXJjZUZpbGUiLCJpc0Fic29sdXRlIiwiZGV0YWNoZWQiLCJ1bnJlZiJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsS0FBSyxRQUFRLGdCQUFnQjtBQUN0QyxPQUFPQyxZQUFZLFNBQVM7QUFDNUIsT0FBT0MsUUFBUSxLQUFLO0FBQ3BCLE9BQU9DLFFBQVEsS0FBSztBQUNwQixPQUFPQyxVQUFVLE9BQU87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