every-plugin 0.4.4 → 0.4.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/build/rspack/index.cjs +300 -0
- package/dist/build/rspack/index.d.cts +20 -0
- package/dist/build/rspack/index.d.mts +20 -0
- package/dist/build/rspack/index.mjs +298 -0
- package/dist/chunk-QQAxy9l9.mjs +31 -0
- package/dist/chunk-zltIcp7o.cjs +46 -0
- package/dist/effect.cjs +9 -0
- package/dist/effect.d.cts +1 -0
- package/dist/effect.d.mts +1 -0
- package/dist/effect.mjs +3 -0
- package/dist/errors-CVnoPl9v.cjs +68 -0
- package/dist/errors-Car4tFVP.d.mts +75 -0
- package/dist/errors-D7keKf7a.mjs +63 -0
- package/dist/errors-DKPPPYYT.d.cts +75 -0
- package/dist/errors.cjs +4 -0
- package/dist/errors.d.cts +3 -0
- package/dist/errors.d.mts +3 -0
- package/dist/errors.mjs +4 -0
- package/dist/fetch-Cc95-7kM.cjs +336 -0
- package/dist/fetch-KLktuWuM.mjs +335 -0
- package/dist/index-bwAhA9ca.d.mts +383 -0
- package/dist/index-matrPV4m.d.cts +382 -0
- package/dist/index.cjs +57 -0
- package/dist/index.d.cts +5 -0
- package/dist/index.d.mts +5 -0
- package/dist/index.mjs +52 -0
- package/dist/{runtime/services/normalize.d.ts → normalize-BLTyqFww.d.mts} +5 -2
- package/dist/{runtime/services/normalize.js → normalize-BW7kk8Lk.d.cts} +5 -1
- package/dist/normalize-D4Qh0wVk.cjs +28 -0
- package/dist/normalize-D7nae0Hn.mjs +22 -0
- package/dist/openapi.DrTcell5-C6kyDyUK.mjs +669 -0
- package/dist/openapi.DrTcell5-DDf4D5V3.cjs +687 -0
- package/dist/orpc.cjs +46 -0
- package/dist/orpc.d.cts +7 -0
- package/dist/orpc.d.mts +7 -0
- package/dist/orpc.mjs +11 -0
- package/dist/package-CmegWGdE.cjs +154 -0
- package/dist/package-Dn-xZ55N.mjs +149 -0
- package/dist/plugins-C-7lh5gK.cjs +128 -0
- package/dist/plugins-Ps5Xxpk2.mjs +128 -0
- package/dist/runtime/index.cjs +6 -0
- package/dist/runtime/index.d.cts +5 -0
- package/dist/runtime/index.d.mts +5 -0
- package/dist/runtime/index.mjs +5 -0
- package/dist/runtime/services/normalize.cjs +3 -0
- package/dist/runtime/services/normalize.d.cts +2 -0
- package/dist/runtime/services/normalize.d.mts +2 -0
- package/dist/runtime/services/normalize.mjs +3 -0
- package/dist/runtime-CgRUExK3.cjs +523 -0
- package/dist/runtime-Da2NjzYy.mjs +458 -0
- package/dist/standard-DaxKTFui.mjs +595 -0
- package/dist/standard-eUgUkWaf.cjs +702 -0
- package/dist/testing/index.cjs +78 -0
- package/dist/testing/index.d.cts +60 -0
- package/dist/testing/index.d.mts +60 -0
- package/dist/testing/index.mjs +75 -0
- package/dist/zod-A7Pti5IV.d.cts +4 -0
- package/dist/zod-BVo51kgJ.mjs +10 -0
- package/dist/zod-D4CFw8d9.d.mts +4 -0
- package/dist/zod-DYghWCz1.cjs +14 -0
- package/dist/zod.cjs +10 -0
- package/dist/zod.d.cts +2 -0
- package/dist/zod.d.mts +2 -0
- package/dist/zod.mjs +5 -0
- package/dist/zod4-BXTBR1od.cjs +318 -0
- package/dist/zod4-VpXuwRO7.mjs +317 -0
- package/package.json +64 -23
- package/dist/effect.d.ts +0 -2
- package/dist/effect.d.ts.map +0 -1
- package/dist/effect.js +0 -1
- package/dist/errors.d.ts +0 -70
- package/dist/errors.d.ts.map +0 -1
- package/dist/errors.js +0 -61
- package/dist/index.d.ts +0 -6
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -5
- package/dist/orpc.d.ts +0 -10
- package/dist/orpc.d.ts.map +0 -1
- package/dist/orpc.js +0 -6
- package/dist/plugin.d.ts +0 -57
- package/dist/plugin.d.ts.map +0 -1
- package/dist/plugin.js +0 -43
- package/dist/runtime/errors.d.ts +0 -36
- package/dist/runtime/errors.d.ts.map +0 -1
- package/dist/runtime/errors.js +0 -47
- package/dist/runtime/index.d.ts +0 -20
- package/dist/runtime/index.d.ts.map +0 -1
- package/dist/runtime/index.js +0 -131
- package/dist/runtime/services/module-federation.service.d.ts +0 -13
- package/dist/runtime/services/module-federation.service.d.ts.map +0 -1
- package/dist/runtime/services/module-federation.service.js +0 -155
- package/dist/runtime/services/normalize.d.ts.map +0 -1
- package/dist/runtime/services/plugin-lifecycle.service.d.ts +0 -14
- package/dist/runtime/services/plugin-lifecycle.service.d.ts.map +0 -1
- package/dist/runtime/services/plugin-lifecycle.service.js +0 -34
- package/dist/runtime/services/plugin-loader.service.d.ts +0 -45
- package/dist/runtime/services/plugin-loader.service.d.ts.map +0 -1
- package/dist/runtime/services/plugin-loader.service.js +0 -93
- package/dist/runtime/services/plugin.service.d.ts +0 -36
- package/dist/runtime/services/plugin.service.d.ts.map +0 -1
- package/dist/runtime/services/plugin.service.js +0 -31
- package/dist/runtime/services/secrets.service.d.ts +0 -15
- package/dist/runtime/services/secrets.service.d.ts.map +0 -1
- package/dist/runtime/services/secrets.service.js +0 -35
- package/dist/runtime/services.d.ts +0 -6
- package/dist/runtime/services.d.ts.map +0 -1
- package/dist/runtime/services.js +0 -5
- package/dist/runtime/validation.d.ts +0 -5
- package/dist/runtime/validation.d.ts.map +0 -1
- package/dist/runtime/validation.js +0 -13
- package/dist/testing/index.d.ts +0 -59
- package/dist/testing/index.d.ts.map +0 -1
- package/dist/testing/index.js +0 -45
- package/dist/testing/mocks/module-federation.service.d.ts +0 -6
- package/dist/testing/mocks/module-federation.service.d.ts.map +0 -1
- package/dist/testing/mocks/module-federation.service.js +0 -29
- package/dist/tsconfig.tsbuildinfo +0 -1
- package/dist/types.d.ts +0 -187
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -1
- package/dist/zod.d.ts +0 -2
- package/dist/zod.d.ts.map +0 -1
- package/dist/zod.js +0 -1
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import { h as stringifyJSON, m as once, v as value } from "./standard-DaxKTFui.mjs";
|
|
2
|
+
import { t as OpenAPIGenerator } from "./openapi.DrTcell5-C6kyDyUK.mjs";
|
|
3
|
+
import "@orpc/server";
|
|
4
|
+
import "@orpc/contract";
|
|
5
|
+
|
|
6
|
+
//#region ../../node_modules/.bun/@orpc+openapi@1.10.4/node_modules/@orpc/openapi/dist/plugins/index.mjs
|
|
7
|
+
var OpenAPIReferencePlugin = class {
|
|
8
|
+
generator;
|
|
9
|
+
specGenerateOptions;
|
|
10
|
+
specPath;
|
|
11
|
+
docsPath;
|
|
12
|
+
docsTitle;
|
|
13
|
+
docsHead;
|
|
14
|
+
docsProvider;
|
|
15
|
+
docsScriptUrl;
|
|
16
|
+
docsCssUrl;
|
|
17
|
+
docsConfig;
|
|
18
|
+
renderDocsHtml;
|
|
19
|
+
constructor(options = {}) {
|
|
20
|
+
this.specGenerateOptions = options.specGenerateOptions;
|
|
21
|
+
this.docsPath = options.docsPath ?? "/";
|
|
22
|
+
this.docsTitle = options.docsTitle ?? "API Reference";
|
|
23
|
+
this.docsConfig = options.docsConfig ?? void 0;
|
|
24
|
+
this.docsProvider = options.docsProvider ?? "scalar";
|
|
25
|
+
this.docsScriptUrl = options.docsScriptUrl ?? (this.docsProvider === "swagger" ? "https://unpkg.com/swagger-ui-dist/swagger-ui-bundle.js" : "https://cdn.jsdelivr.net/npm/@scalar/api-reference");
|
|
26
|
+
this.docsCssUrl = options.docsCssUrl ?? (this.docsProvider === "swagger" ? "https://unpkg.com/swagger-ui-dist/swagger-ui.css" : void 0);
|
|
27
|
+
this.docsHead = options.docsHead ?? "";
|
|
28
|
+
this.specPath = options.specPath ?? "/spec.json";
|
|
29
|
+
this.generator = new OpenAPIGenerator(options);
|
|
30
|
+
const esc = (s) => s.replace(/&/g, "&").replace(/"/g, """).replace(/</g, "<").replace(/>/g, ">");
|
|
31
|
+
this.renderDocsHtml = options.renderDocsHtml ?? ((specUrl, title, head, scriptUrl, config, spec, docsProvider, cssUrl) => {
|
|
32
|
+
let body;
|
|
33
|
+
if (docsProvider === "swagger") {
|
|
34
|
+
const swaggerConfig = {
|
|
35
|
+
dom_id: "#app",
|
|
36
|
+
spec,
|
|
37
|
+
deepLinking: true,
|
|
38
|
+
presets: ["SwaggerUIBundle.presets.apis", "SwaggerUIBundle.presets.standalone"],
|
|
39
|
+
plugins: ["SwaggerUIBundle.plugins.DownloadUrl"],
|
|
40
|
+
...config
|
|
41
|
+
};
|
|
42
|
+
body = `
|
|
43
|
+
<body>
|
|
44
|
+
<div id="app"></div>
|
|
45
|
+
|
|
46
|
+
<script src="${esc(scriptUrl)}"><\/script>
|
|
47
|
+
|
|
48
|
+
<script>
|
|
49
|
+
window.onload = () => {
|
|
50
|
+
window.ui = SwaggerUIBundle(${stringifyJSON(swaggerConfig).replace(/"(SwaggerUIBundle\.[^"]+)"/g, "$1")})
|
|
51
|
+
}
|
|
52
|
+
<\/script>
|
|
53
|
+
</body>
|
|
54
|
+
`;
|
|
55
|
+
} else body = `
|
|
56
|
+
<body>
|
|
57
|
+
<div id="app" data-config="${esc(stringifyJSON({
|
|
58
|
+
content: stringifyJSON(spec),
|
|
59
|
+
...config
|
|
60
|
+
}))}"></div>
|
|
61
|
+
|
|
62
|
+
<script src="${esc(scriptUrl)}"><\/script>
|
|
63
|
+
|
|
64
|
+
<script>
|
|
65
|
+
Scalar.createApiReference('#app', JSON.parse(document.getElementById('app').dataset.config))
|
|
66
|
+
<\/script>
|
|
67
|
+
</body>
|
|
68
|
+
`;
|
|
69
|
+
return `
|
|
70
|
+
<!doctype html>
|
|
71
|
+
<html>
|
|
72
|
+
<head>
|
|
73
|
+
<meta charset="utf-8" />
|
|
74
|
+
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
75
|
+
<title>${esc(title)}</title>
|
|
76
|
+
${cssUrl ? `<link rel="stylesheet" type="text/css" href="${esc(cssUrl)}" />` : ""}
|
|
77
|
+
${head}
|
|
78
|
+
</head>
|
|
79
|
+
${body}
|
|
80
|
+
</html>
|
|
81
|
+
`;
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
init(options, router) {
|
|
85
|
+
options.interceptors ??= [];
|
|
86
|
+
options.interceptors.push(async (options2) => {
|
|
87
|
+
const res = await options2.next();
|
|
88
|
+
if (res.matched || options2.request.method !== "GET") return res;
|
|
89
|
+
const prefix = options2.prefix ?? "";
|
|
90
|
+
const requestPathname = options2.request.url.pathname.replace(/\/$/, "") || "/";
|
|
91
|
+
const docsUrl = new URL(`${prefix}${this.docsPath}`.replace(/\/$/, ""), options2.request.url.origin);
|
|
92
|
+
const specUrl = new URL(`${prefix}${this.specPath}`.replace(/\/$/, ""), options2.request.url.origin);
|
|
93
|
+
const generateSpec = once(async () => {
|
|
94
|
+
return await this.generator.generate(router, {
|
|
95
|
+
servers: [{ url: new URL(prefix, options2.request.url.origin).toString() }],
|
|
96
|
+
...await value(this.specGenerateOptions, options2)
|
|
97
|
+
});
|
|
98
|
+
});
|
|
99
|
+
if (requestPathname === specUrl.pathname) {
|
|
100
|
+
const spec = await generateSpec();
|
|
101
|
+
return {
|
|
102
|
+
matched: true,
|
|
103
|
+
response: {
|
|
104
|
+
status: 200,
|
|
105
|
+
headers: {},
|
|
106
|
+
body: new File([stringifyJSON(spec)], "spec.json", { type: "application/json" })
|
|
107
|
+
}
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
if (requestPathname === docsUrl.pathname) {
|
|
111
|
+
const html = this.renderDocsHtml(specUrl.toString(), await value(this.docsTitle, options2), await value(this.docsHead, options2), await value(this.docsScriptUrl, options2), await value(this.docsConfig, options2), await generateSpec(), this.docsProvider, await value(this.docsCssUrl, options2));
|
|
112
|
+
return {
|
|
113
|
+
matched: true,
|
|
114
|
+
response: {
|
|
115
|
+
status: 200,
|
|
116
|
+
headers: {},
|
|
117
|
+
body: new File([html], "api-reference.html", { type: "text/html" })
|
|
118
|
+
}
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
return res;
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
};
|
|
125
|
+
|
|
126
|
+
//#endregion
|
|
127
|
+
export { OpenAPIReferencePlugin };
|
|
128
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2lucy1QczVYeHBrMi5tanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5idW4vQG9ycGMrb3BlbmFwaUAxLjEwLjQvbm9kZV9tb2R1bGVzL0BvcnBjL29wZW5hcGkvZGlzdC9wbHVnaW5zL2luZGV4Lm1qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzdHJpbmdpZnlKU09OLCBvbmNlLCB2YWx1ZSB9IGZyb20gJ0BvcnBjL3NoYXJlZCc7XG5pbXBvcnQgeyBPIGFzIE9wZW5BUElHZW5lcmF0b3IgfSBmcm9tICcuLi9zaGFyZWQvb3BlbmFwaS5EclRjZWxsNS5tanMnO1xuaW1wb3J0ICdAb3JwYy9jbGllbnQnO1xuaW1wb3J0ICdAb3JwYy9jbGllbnQvc3RhbmRhcmQnO1xuaW1wb3J0ICdAb3JwYy9jb250cmFjdCc7XG5pbXBvcnQgJ0BvcnBjL29wZW5hcGktY2xpZW50L3N0YW5kYXJkJztcbmltcG9ydCAnQG9ycGMvc2VydmVyJztcbmltcG9ydCAnQG9ycGMvaW50ZXJvcC9qc29uLXNjaGVtYS10eXBlZC9kcmFmdC0yMDIwLTEyJztcblxuY2xhc3MgT3BlbkFQSVJlZmVyZW5jZVBsdWdpbiB7XG4gIGdlbmVyYXRvcjtcbiAgc3BlY0dlbmVyYXRlT3B0aW9ucztcbiAgc3BlY1BhdGg7XG4gIGRvY3NQYXRoO1xuICBkb2NzVGl0bGU7XG4gIGRvY3NIZWFkO1xuICBkb2NzUHJvdmlkZXI7XG4gIGRvY3NTY3JpcHRVcmw7XG4gIGRvY3NDc3NVcmw7XG4gIGRvY3NDb25maWc7XG4gIHJlbmRlckRvY3NIdG1sO1xuICBjb25zdHJ1Y3RvcihvcHRpb25zID0ge30pIHtcbiAgICB0aGlzLnNwZWNHZW5lcmF0ZU9wdGlvbnMgPSBvcHRpb25zLnNwZWNHZW5lcmF0ZU9wdGlvbnM7XG4gICAgdGhpcy5kb2NzUGF0aCA9IG9wdGlvbnMuZG9jc1BhdGggPz8gXCIvXCI7XG4gICAgdGhpcy5kb2NzVGl0bGUgPSBvcHRpb25zLmRvY3NUaXRsZSA/PyBcIkFQSSBSZWZlcmVuY2VcIjtcbiAgICB0aGlzLmRvY3NDb25maWcgPSBvcHRpb25zLmRvY3NDb25maWcgPz8gdm9pZCAwO1xuICAgIHRoaXMuZG9jc1Byb3ZpZGVyID0gb3B0aW9ucy5kb2NzUHJvdmlkZXIgPz8gXCJzY2FsYXJcIjtcbiAgICB0aGlzLmRvY3NTY3JpcHRVcmwgPSBvcHRpb25zLmRvY3NTY3JpcHRVcmwgPz8gKHRoaXMuZG9jc1Byb3ZpZGVyID09PSBcInN3YWdnZXJcIiA/IFwiaHR0cHM6Ly91bnBrZy5jb20vc3dhZ2dlci11aS1kaXN0L3N3YWdnZXItdWktYnVuZGxlLmpzXCIgOiBcImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQHNjYWxhci9hcGktcmVmZXJlbmNlXCIpO1xuICAgIHRoaXMuZG9jc0Nzc1VybCA9IG9wdGlvbnMuZG9jc0Nzc1VybCA/PyAodGhpcy5kb2NzUHJvdmlkZXIgPT09IFwic3dhZ2dlclwiID8gXCJodHRwczovL3VucGtnLmNvbS9zd2FnZ2VyLXVpLWRpc3Qvc3dhZ2dlci11aS5jc3NcIiA6IHZvaWQgMCk7XG4gICAgdGhpcy5kb2NzSGVhZCA9IG9wdGlvbnMuZG9jc0hlYWQgPz8gXCJcIjtcbiAgICB0aGlzLnNwZWNQYXRoID0gb3B0aW9ucy5zcGVjUGF0aCA/PyBcIi9zcGVjLmpzb25cIjtcbiAgICB0aGlzLmdlbmVyYXRvciA9IG5ldyBPcGVuQVBJR2VuZXJhdG9yKG9wdGlvbnMpO1xuICAgIGNvbnN0IGVzYyA9IChzKSA9PiBzLnJlcGxhY2UoLyYvZywgXCImYW1wO1wiKS5yZXBsYWNlKC9cIi9nLCBcIiZxdW90O1wiKS5yZXBsYWNlKC88L2csIFwiJmx0O1wiKS5yZXBsYWNlKC8+L2csIFwiJmd0O1wiKTtcbiAgICB0aGlzLnJlbmRlckRvY3NIdG1sID0gb3B0aW9ucy5yZW5kZXJEb2NzSHRtbCA/PyAoKHNwZWNVcmwsIHRpdGxlLCBoZWFkLCBzY3JpcHRVcmwsIGNvbmZpZywgc3BlYywgZG9jc1Byb3ZpZGVyLCBjc3NVcmwpID0+IHtcbiAgICAgIGxldCBib2R5O1xuICAgICAgaWYgKGRvY3NQcm92aWRlciA9PT0gXCJzd2FnZ2VyXCIpIHtcbiAgICAgICAgY29uc3Qgc3dhZ2dlckNvbmZpZyA9IHtcbiAgICAgICAgICBkb21faWQ6IFwiI2FwcFwiLFxuICAgICAgICAgIHNwZWMsXG4gICAgICAgICAgZGVlcExpbmtpbmc6IHRydWUsXG4gICAgICAgICAgcHJlc2V0czogW1xuICAgICAgICAgICAgXCJTd2FnZ2VyVUlCdW5kbGUucHJlc2V0cy5hcGlzXCIsXG4gICAgICAgICAgICBcIlN3YWdnZXJVSUJ1bmRsZS5wcmVzZXRzLnN0YW5kYWxvbmVcIlxuICAgICAgICAgIF0sXG4gICAgICAgICAgcGx1Z2luczogW1xuICAgICAgICAgICAgXCJTd2FnZ2VyVUlCdW5kbGUucGx1Z2lucy5Eb3dubG9hZFVybFwiXG4gICAgICAgICAgXSxcbiAgICAgICAgICAuLi5jb25maWdcbiAgICAgICAgfTtcbiAgICAgICAgYm9keSA9IGBcbiAgICAgICAgPGJvZHk+XG4gICAgICAgICAgPGRpdiBpZD1cImFwcFwiPjwvZGl2PlxuXG4gICAgICAgICAgPHNjcmlwdCBzcmM9XCIke2VzYyhzY3JpcHRVcmwpfVwiPjxcXC9zY3JpcHQ+XG5cbiAgICAgICAgICA8c2NyaXB0PlxuICAgICAgICAgICAgd2luZG93Lm9ubG9hZCA9ICgpID0+IHtcbiAgICAgICAgICAgICAgd2luZG93LnVpID0gU3dhZ2dlclVJQnVuZGxlKCR7c3RyaW5naWZ5SlNPTihzd2FnZ2VyQ29uZmlnKS5yZXBsYWNlKC9cIihTd2FnZ2VyVUlCdW5kbGVcXC5bXlwiXSspXCIvZywgXCIkMVwiKX0pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgPFxcL3NjcmlwdD5cbiAgICAgICAgPC9ib2R5PlxuICAgICAgICBgO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3Qgc2NhbGFyQ29uZmlnID0ge1xuICAgICAgICAgIGNvbnRlbnQ6IHN0cmluZ2lmeUpTT04oc3BlYyksXG4gICAgICAgICAgLi4uY29uZmlnXG4gICAgICAgIH07XG4gICAgICAgIGJvZHkgPSBgXG4gICAgICAgIDxib2R5PlxuICAgICAgICAgIDxkaXYgaWQ9XCJhcHBcIiBkYXRhLWNvbmZpZz1cIiR7ZXNjKHN0cmluZ2lmeUpTT04oc2NhbGFyQ29uZmlnKSl9XCI+PC9kaXY+XG5cbiAgICAgICAgICA8c2NyaXB0IHNyYz1cIiR7ZXNjKHNjcmlwdFVybCl9XCI+PFxcL3NjcmlwdD5cblxuICAgICAgICAgIDxzY3JpcHQ+XG4gICAgICAgICAgICBTY2FsYXIuY3JlYXRlQXBpUmVmZXJlbmNlKCcjYXBwJywgSlNPTi5wYXJzZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYXBwJykuZGF0YXNldC5jb25maWcpKVxuICAgICAgICAgIDxcXC9zY3JpcHQ+XG4gICAgICAgIDwvYm9keT5cbiAgICAgICAgYDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBgXG4gICAgICAgIDwhZG9jdHlwZSBodG1sPlxuICAgICAgICA8aHRtbD5cbiAgICAgICAgICA8aGVhZD5cbiAgICAgICAgICAgIDxtZXRhIGNoYXJzZXQ9XCJ1dGYtOFwiIC8+XG4gICAgICAgICAgICA8bWV0YSBuYW1lPVwidmlld3BvcnRcIiBjb250ZW50PVwid2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTFcIiAvPlxuICAgICAgICAgICAgPHRpdGxlPiR7ZXNjKHRpdGxlKX08L3RpdGxlPlxuICAgICAgICAgICAgJHtjc3NVcmwgPyBgPGxpbmsgcmVsPVwic3R5bGVzaGVldFwiIHR5cGU9XCJ0ZXh0L2Nzc1wiIGhyZWY9XCIke2VzYyhjc3NVcmwpfVwiIC8+YCA6IFwiXCJ9XG4gICAgICAgICAgICAke2hlYWR9XG4gICAgICAgICAgPC9oZWFkPlxuICAgICAgICAgICR7Ym9keX1cbiAgICAgICAgPC9odG1sPlxuICAgICAgICBgO1xuICAgIH0pO1xuICB9XG4gIGluaXQob3B0aW9ucywgcm91dGVyKSB7XG4gICAgb3B0aW9ucy5pbnRlcmNlcHRvcnMgPz89IFtdO1xuICAgIG9wdGlvbnMuaW50ZXJjZXB0b3JzLnB1c2goYXN5bmMgKG9wdGlvbnMyKSA9PiB7XG4gICAgICBjb25zdCByZXMgPSBhd2FpdCBvcHRpb25zMi5uZXh0KCk7XG4gICAgICBpZiAocmVzLm1hdGNoZWQgfHwgb3B0aW9uczIucmVxdWVzdC5tZXRob2QgIT09IFwiR0VUXCIpIHtcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgIH1cbiAgICAgIGNvbnN0IHByZWZpeCA9IG9wdGlvbnMyLnByZWZpeCA/PyBcIlwiO1xuICAgICAgY29uc3QgcmVxdWVzdFBhdGhuYW1lID0gb3B0aW9uczIucmVxdWVzdC51cmwucGF0aG5hbWUucmVwbGFjZSgvXFwvJC8sIFwiXCIpIHx8IFwiL1wiO1xuICAgICAgY29uc3QgZG9jc1VybCA9IG5ldyBVUkwoYCR7cHJlZml4fSR7dGhpcy5kb2NzUGF0aH1gLnJlcGxhY2UoL1xcLyQvLCBcIlwiKSwgb3B0aW9uczIucmVxdWVzdC51cmwub3JpZ2luKTtcbiAgICAgIGNvbnN0IHNwZWNVcmwgPSBuZXcgVVJMKGAke3ByZWZpeH0ke3RoaXMuc3BlY1BhdGh9YC5yZXBsYWNlKC9cXC8kLywgXCJcIiksIG9wdGlvbnMyLnJlcXVlc3QudXJsLm9yaWdpbik7XG4gICAgICBjb25zdCBnZW5lcmF0ZVNwZWMgPSBvbmNlKGFzeW5jICgpID0+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuZ2VuZXJhdG9yLmdlbmVyYXRlKHJvdXRlciwge1xuICAgICAgICAgIHNlcnZlcnM6IFt7IHVybDogbmV3IFVSTChwcmVmaXgsIG9wdGlvbnMyLnJlcXVlc3QudXJsLm9yaWdpbikudG9TdHJpbmcoKSB9XSxcbiAgICAgICAgICAuLi5hd2FpdCB2YWx1ZSh0aGlzLnNwZWNHZW5lcmF0ZU9wdGlvbnMsIG9wdGlvbnMyKVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgICAgaWYgKHJlcXVlc3RQYXRobmFtZSA9PT0gc3BlY1VybC5wYXRobmFtZSkge1xuICAgICAgICBjb25zdCBzcGVjID0gYXdhaXQgZ2VuZXJhdGVTcGVjKCk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbWF0Y2hlZDogdHJ1ZSxcbiAgICAgICAgICByZXNwb25zZToge1xuICAgICAgICAgICAgc3RhdHVzOiAyMDAsXG4gICAgICAgICAgICBoZWFkZXJzOiB7fSxcbiAgICAgICAgICAgIGJvZHk6IG5ldyBGaWxlKFtzdHJpbmdpZnlKU09OKHNwZWMpXSwgXCJzcGVjLmpzb25cIiwgeyB0eXBlOiBcImFwcGxpY2F0aW9uL2pzb25cIiB9KVxuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIGlmIChyZXF1ZXN0UGF0aG5hbWUgPT09IGRvY3NVcmwucGF0aG5hbWUpIHtcbiAgICAgICAgY29uc3QgaHRtbCA9IHRoaXMucmVuZGVyRG9jc0h0bWwoXG4gICAgICAgICAgc3BlY1VybC50b1N0cmluZygpLFxuICAgICAgICAgIGF3YWl0IHZhbHVlKHRoaXMuZG9jc1RpdGxlLCBvcHRpb25zMiksXG4gICAgICAgICAgYXdhaXQgdmFsdWUodGhpcy5kb2NzSGVhZCwgb3B0aW9uczIpLFxuICAgICAgICAgIGF3YWl0IHZhbHVlKHRoaXMuZG9jc1NjcmlwdFVybCwgb3B0aW9uczIpLFxuICAgICAgICAgIGF3YWl0IHZhbHVlKHRoaXMuZG9jc0NvbmZpZywgb3B0aW9uczIpLFxuICAgICAgICAgIGF3YWl0IGdlbmVyYXRlU3BlYygpLFxuICAgICAgICAgIHRoaXMuZG9jc1Byb3ZpZGVyLFxuICAgICAgICAgIGF3YWl0IHZhbHVlKHRoaXMuZG9jc0Nzc1VybCwgb3B0aW9uczIpXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbWF0Y2hlZDogdHJ1ZSxcbiAgICAgICAgICByZXNwb25zZToge1xuICAgICAgICAgICAgc3RhdHVzOiAyMDAsXG4gICAgICAgICAgICBoZWFkZXJzOiB7fSxcbiAgICAgICAgICAgIGJvZHk6IG5ldyBGaWxlKFtodG1sXSwgXCJhcGktcmVmZXJlbmNlLmh0bWxcIiwgeyB0eXBlOiBcInRleHQvaHRtbFwiIH0pXG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlcztcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgeyBPcGVuQVBJUmVmZXJlbmNlUGx1Z2luIH07XG4iXSwieF9nb29nbGVfaWdub3JlTGlzdCI6WzBdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBU0EsSUFBTSx5QkFBTixNQUE2QjtDQUMzQjtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0EsWUFBWSxVQUFVLEVBQUUsRUFBRTtBQUN4QixPQUFLLHNCQUFzQixRQUFRO0FBQ25DLE9BQUssV0FBVyxRQUFRLFlBQVk7QUFDcEMsT0FBSyxZQUFZLFFBQVEsYUFBYTtBQUN0QyxPQUFLLGFBQWEsUUFBUSxjQUFjLEtBQUs7QUFDN0MsT0FBSyxlQUFlLFFBQVEsZ0JBQWdCO0FBQzVDLE9BQUssZ0JBQWdCLFFBQVEsa0JBQWtCLEtBQUssaUJBQWlCLFlBQVksMkRBQTJEO0FBQzVJLE9BQUssYUFBYSxRQUFRLGVBQWUsS0FBSyxpQkFBaUIsWUFBWSxxREFBcUQsS0FBSztBQUNySSxPQUFLLFdBQVcsUUFBUSxZQUFZO0FBQ3BDLE9BQUssV0FBVyxRQUFRLFlBQVk7QUFDcEMsT0FBSyxZQUFZLElBQUksaUJBQWlCLFFBQVE7RUFDOUMsTUFBTSxPQUFPLE1BQU0sRUFBRSxRQUFRLE1BQU0sUUFBUSxDQUFDLFFBQVEsTUFBTSxTQUFTLENBQUMsUUFBUSxNQUFNLE9BQU8sQ0FBQyxRQUFRLE1BQU0sT0FBTztBQUMvRyxPQUFLLGlCQUFpQixRQUFRLG9CQUFvQixTQUFTLE9BQU8sTUFBTSxXQUFXLFFBQVEsTUFBTSxjQUFjLFdBQVc7R0FDeEgsSUFBSTtBQUNKLE9BQUksaUJBQWlCLFdBQVc7SUFDOUIsTUFBTSxnQkFBZ0I7S0FDcEIsUUFBUTtLQUNSO0tBQ0EsYUFBYTtLQUNiLFNBQVMs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
|